summaryrefslogtreecommitdiffstats
path: root/src/mesa
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa')
-rw-r--r--src/mesa/SConscript91
-rw-r--r--src/mesa/drivers/SConscript6
-rw-r--r--src/mesa/drivers/common/meta.c74
-rw-r--r--src/mesa/drivers/dri/common/spantmp2.h122
-rw-r--r--src/mesa/drivers/dri/common/texmem.c7
-rw-r--r--src/mesa/drivers/dri/common/utils.c5
-rw-r--r--src/mesa/drivers/dri/common/utils.h2
-rw-r--r--src/mesa/drivers/dri/common/xmlconfig.c20
-rw-r--r--src/mesa/drivers/dri/i810/i810context.c4
-rw-r--r--src/mesa/drivers/dri/i810/i810tex.c12
-rw-r--r--src/mesa/drivers/dri/i915/i830_texstate.c24
-rw-r--r--src/mesa/drivers/dri/i915/i915_context.c8
-rw-r--r--src/mesa/drivers/dri/i915/i915_context.h15
-rw-r--r--src/mesa/drivers/dri/i915/i915_fragprog.c11
-rw-r--r--src/mesa/drivers/dri/i915/i915_state.c171
-rw-r--r--src/mesa/drivers/dri/i915/i915_texstate.c38
-rw-r--r--src/mesa/drivers/dri/i915/i915_vtbl.c13
-rw-r--r--src/mesa/drivers/dri/i965/brw_cc.c8
-rw-r--r--src/mesa/drivers/dri/i965/brw_context.c18
-rw-r--r--src/mesa/drivers/dri/i965/brw_context.h36
-rw-r--r--src/mesa/drivers/dri/i965/brw_defines.h12
-rw-r--r--src/mesa/drivers/dri/i965/brw_draw.c65
-rw-r--r--src/mesa/drivers/dri/i965/brw_draw_upload.c2
-rw-r--r--src/mesa/drivers/dri/i965/brw_eu.c27
-rw-r--r--src/mesa/drivers/dri/i965/brw_eu.h3
-rw-r--r--src/mesa/drivers/dri/i965/brw_eu_emit.c120
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs.cpp572
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs.h32
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp8
-rw-r--r--src/mesa/drivers/dri/i965/brw_gs.c52
-rw-r--r--src/mesa/drivers/dri/i965/brw_gs.h5
-rw-r--r--src/mesa/drivers/dri/i965/brw_gs_emit.c32
-rw-r--r--src/mesa/drivers/dri/i965/brw_misc_state.c9
-rw-r--r--src/mesa/drivers/dri/i965/brw_program.c5
-rw-r--r--src/mesa/drivers/dri/i965/brw_sf_state.c273
-rw-r--r--src/mesa/drivers/dri/i965/brw_state_dump.c4
-rw-r--r--src/mesa/drivers/dri/i965/brw_structs.h44
-rw-r--r--src/mesa/drivers/dri/i965/brw_vs.c6
-rw-r--r--src/mesa/drivers/dri/i965/brw_vs.h1
-rw-r--r--src/mesa/drivers/dri/i965/brw_vs_emit.c9
-rw-r--r--src/mesa/drivers/dri/i965/brw_vtbl.c10
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm.c27
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm.h1
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_emit.c6
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_sampler_state.c34
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_state.c20
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_surface_state.c41
-rw-r--r--src/mesa/drivers/dri/i965/gen6_cc.c8
-rw-r--r--src/mesa/drivers/dri/i965/gen6_gs_state.c48
-rw-r--r--src/mesa/drivers/dri/i965/gen6_urb.c34
-rw-r--r--src/mesa/drivers/dri/i965/gen6_vs_state.c2
-rw-r--r--src/mesa/drivers/dri/i965/gen6_wm_state.c9
-rw-r--r--src/mesa/drivers/dri/intel/intel_batchbuffer.c4
-rw-r--r--src/mesa/drivers/dri/intel/intel_blit.c59
-rw-r--r--src/mesa/drivers/dri/intel/intel_chipset.h15
-rw-r--r--src/mesa/drivers/dri/intel/intel_context.c22
-rw-r--r--src/mesa/drivers/dri/intel/intel_context.h30
-rw-r--r--src/mesa/drivers/dri/intel/intel_extensions.c4
-rw-r--r--src/mesa/drivers/dri/intel/intel_fbo.c2
-rw-r--r--src/mesa/drivers/dri/intel/intel_span.c82
-rw-r--r--src/mesa/drivers/dri/intel/intel_tex_format.c11
-rw-r--r--src/mesa/drivers/dri/intel/intel_tex_image.c8
-rw-r--r--src/mesa/drivers/dri/intel/intel_tex_subimage.c16
-rw-r--r--src/mesa/drivers/dri/intel/intel_tex_validate.c2
-rw-r--r--src/mesa/drivers/dri/mach64/mach64_dd.c5
-rw-r--r--src/mesa/drivers/dri/mach64/mach64_tex.c12
-rw-r--r--src/mesa/drivers/dri/mga/mgadd.c4
-rw-r--r--src/mesa/drivers/dri/mga/mgatex.c12
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_driver.c2
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_driver.h1
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_texture.c4
-rw-r--r--src/mesa/drivers/dri/nouveau/nv04_state_tex.c20
-rw-r--r--src/mesa/drivers/dri/nouveau/nv10_state_tex.c20
-rw-r--r--src/mesa/drivers/dri/nouveau/nv20_state_tex.c22
-rw-r--r--src/mesa/drivers/dri/r128/r128_dd.c6
-rw-r--r--src/mesa/drivers/dri/r128/r128_span.c4
-rw-r--r--src/mesa/drivers/dri/r128/r128_tex.c12
-rw-r--r--src/mesa/drivers/dri/r200/r200_context.c17
-rw-r--r--src/mesa/drivers/dri/r200/r200_tex.c18
-rw-r--r--src/mesa/drivers/dri/r300/compiler/r300_fragprog_emit.c4
-rw-r--r--src/mesa/drivers/dri/r300/compiler/r3xx_vertprog.c18
-rw-r--r--src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c12
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_code.h12
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_compiler.c4
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_dataflow.c7
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_opcodes.c7
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_opcodes.h3
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_optimize.c24
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_pair_translate.c3
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_program_pair.h2
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_program_tex.c81
-rw-r--r--src/mesa/drivers/dri/r300/r300_context.c1
-rw-r--r--src/mesa/drivers/dri/r300/r300_fragprog_common.c4
-rw-r--r--src/mesa/drivers/dri/r300/r300_reg.h2
-rw-r--r--src/mesa/drivers/dri/r300/r300_state.c4
-rw-r--r--src/mesa/drivers/dri/r300/r300_tex.c18
-rw-r--r--src/mesa/drivers/dri/r300/r300_texstate.c2
-rw-r--r--src/mesa/drivers/dri/r600/defaultendian.h4
-rw-r--r--src/mesa/drivers/dri/r600/evergreen_blit.c114
-rw-r--r--src/mesa/drivers/dri/r600/evergreen_blit_shaders.h8
-rw-r--r--src/mesa/drivers/dri/r600/evergreen_chip.c14
-rw-r--r--src/mesa/drivers/dri/r600/evergreen_oglprog.c6
-rw-r--r--src/mesa/drivers/dri/r600/evergreen_render.c20
-rw-r--r--src/mesa/drivers/dri/r600/evergreen_tex.c173
-rw-r--r--src/mesa/drivers/dri/r600/evergreen_vertprog.c12
-rw-r--r--src/mesa/drivers/dri/r600/r600_blit.c117
-rw-r--r--src/mesa/drivers/dri/r600/r600_blit_shaders.h4
-rw-r--r--src/mesa/drivers/dri/r600/r600_context.c1
-rw-r--r--src/mesa/drivers/dri/r600/r600_emit.c16
-rw-r--r--src/mesa/drivers/dri/r600/r600_tex.c16
-rw-r--r--src/mesa/drivers/dri/r600/r600_texstate.c161
-rw-r--r--src/mesa/drivers/dri/r600/r700_assembler.c13
-rw-r--r--src/mesa/drivers/dri/r600/r700_assembler.h133
-rw-r--r--src/mesa/drivers/dri/r600/r700_chip.c11
-rw-r--r--src/mesa/drivers/dri/r600/r700_render.c21
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_bocs_wrapper.h8
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_chipset.h2
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_common.c2
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_common_context.c5
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_context.c2
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_debug.h16
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c6
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_screen.c8
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_span.c93
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_tex.c18
-rw-r--r--src/mesa/drivers/dri/savage/savagedd.c4
-rw-r--r--src/mesa/drivers/dri/savage/savagerender.c12
-rw-r--r--src/mesa/drivers/dri/savage/savagetex.c12
-rw-r--r--src/mesa/drivers/dri/sis/sis_dd.c4
-rw-r--r--src/mesa/drivers/dri/sis/sis_texstate.c22
-rw-r--r--src/mesa/drivers/dri/tdfx/tdfx_dd.c5
-rw-r--r--src/mesa/drivers/dri/tdfx/tdfx_tex.c8
-rw-r--r--src/mesa/drivers/dri/unichrome/via_context.c4
-rw-r--r--src/mesa/drivers/dri/unichrome/via_state.c32
-rw-r--r--src/mesa/drivers/dri/unichrome/via_tex.c6
-rw-r--r--src/mesa/drivers/osmesa/SConscript36
-rw-r--r--src/mesa/drivers/osmesa/osmesa.c17
-rw-r--r--src/mesa/drivers/windows/gdi/SConscript38
-rw-r--r--src/mesa/drivers/windows/gdi/mesa.def107
-rw-r--r--src/mesa/drivers/windows/gdi/wgl.c4
-rw-r--r--src/mesa/drivers/windows/gdi/wmesa.c11
-rw-r--r--src/mesa/drivers/windows/gdi/wmesadef.h2
-rw-r--r--src/mesa/main/api_arrayelt.c272
-rw-r--r--src/mesa/main/api_exec.c12
-rw-r--r--src/mesa/main/arrayobj.c39
-rw-r--r--src/mesa/main/atifragshader.c4
-rw-r--r--src/mesa/main/attrib.c48
-rw-r--r--src/mesa/main/blend.c37
-rw-r--r--src/mesa/main/bufferobj.c75
-rw-r--r--src/mesa/main/buffers.c2
-rw-r--r--src/mesa/main/clear.c20
-rw-r--r--src/mesa/main/clip.c28
-rw-r--r--src/mesa/main/clip.h5
-rw-r--r--src/mesa/main/colortab.c7
-rw-r--r--src/mesa/main/compiler.h30
-rw-r--r--src/mesa/main/context.c11
-rw-r--r--src/mesa/main/context.h12
-rw-r--r--src/mesa/main/dd.h8
-rw-r--r--src/mesa/main/debug.c26
-rw-r--r--src/mesa/main/debug.h4
-rw-r--r--src/mesa/main/depthstencil.c3
-rw-r--r--src/mesa/main/dlist.c58
-rw-r--r--src/mesa/main/drawpix.c2
-rw-r--r--src/mesa/main/enable.c108
-rw-r--r--src/mesa/main/enums.c7184
-rw-r--r--src/mesa/main/extensions.c34
-rw-r--r--src/mesa/main/fbobject.c92
-rw-r--r--src/mesa/main/fbobject.h25
-rw-r--r--src/mesa/main/ff_fragment_shader.cpp53
-rw-r--r--src/mesa/main/fog.c26
-rw-r--r--src/mesa/main/formats.c144
-rw-r--r--src/mesa/main/formats.h19
-rw-r--r--src/mesa/main/framebuffer.c18
-rw-r--r--src/mesa/main/get.c112
-rw-r--r--src/mesa/main/glapidispatch.h1382
-rw-r--r--src/mesa/main/image.c28
-rw-r--r--src/mesa/main/macros.h3
-rw-r--r--src/mesa/main/matrix.c39
-rw-r--r--src/mesa/main/mfeatures.h1
-rw-r--r--src/mesa/main/mtypes.h109
-rw-r--r--src/mesa/main/pack.c14
-rw-r--r--src/mesa/main/pbo.c4
-rw-r--r--src/mesa/main/pixel.c2
-rw-r--r--src/mesa/main/readpix.c4
-rw-r--r--src/mesa/main/remap_helper.h4083
-rw-r--r--src/mesa/main/renderbuffer.c1070
-rw-r--r--src/mesa/main/renderbuffer.h2
-rw-r--r--src/mesa/main/samplerobj.c1355
-rw-r--r--src/mesa/main/samplerobj.h54
-rw-r--r--src/mesa/main/shaderapi.c1
-rw-r--r--src/mesa/main/shared.c35
-rw-r--r--src/mesa/main/shared.h3
-rw-r--r--src/mesa/main/state.c75
-rw-r--r--src/mesa/main/texcompress_rgtc.c8
-rw-r--r--src/mesa/main/texenv.c21
-rw-r--r--src/mesa/main/texfetch.c116
-rw-r--r--src/mesa/main/texfetch_tmp.h331
-rw-r--r--src/mesa/main/texformat.c115
-rw-r--r--src/mesa/main/texgetimage.c8
-rw-r--r--src/mesa/main/teximage.c363
-rw-r--r--src/mesa/main/teximage.h17
-rw-r--r--src/mesa/main/texobj.c99
-rw-r--r--src/mesa/main/texobj.h6
-rw-r--r--src/mesa/main/texparam.c165
-rw-r--r--src/mesa/main/texrender.c5
-rw-r--r--src/mesa/main/texstate.c19
-rw-r--r--src/mesa/main/texstore.c353
-rw-r--r--src/mesa/main/uniforms.c248
-rw-r--r--src/mesa/main/varray.c2
-rw-r--r--src/mesa/main/varray.h31
-rw-r--r--src/mesa/main/version.c10
-rw-r--r--src/mesa/program/arbprogparse.c21
-rw-r--r--src/mesa/program/ir_to_mesa.cpp850
-rw-r--r--src/mesa/program/prog_optimize.c106
-rw-r--r--src/mesa/program/prog_statevars.c34
-rw-r--r--src/mesa/program/prog_statevars.h1
-rw-r--r--src/mesa/program/program.c5
-rw-r--r--src/mesa/program/program_parse.y29
-rw-r--r--src/mesa/program/program_parse_extra.c10
-rw-r--r--src/mesa/program/program_parser.h1
-rw-r--r--src/mesa/program/programopt.c36
-rw-r--r--src/mesa/program/programopt.h4
-rw-r--r--src/mesa/sources.mak1
-rw-r--r--src/mesa/state_tracker/st_atom_blend.c2
-rw-r--r--src/mesa/state_tracker/st_atom_depth.c2
-rw-r--r--src/mesa/state_tracker/st_atom_rasterizer.c8
-rw-r--r--src/mesa/state_tracker/st_atom_sampler.c39
-rw-r--r--src/mesa/state_tracker/st_atom_texture.c32
-rw-r--r--src/mesa/state_tracker/st_cb_blit.c3
-rw-r--r--src/mesa/state_tracker/st_cb_bufferobjects.c23
-rw-r--r--src/mesa/state_tracker/st_cb_clear.c4
-rw-r--r--src/mesa/state_tracker/st_cb_drawpixels.c53
-rw-r--r--src/mesa/state_tracker/st_cb_fbo.c30
-rw-r--r--src/mesa/state_tracker/st_cb_readpixels.c55
-rw-r--r--src/mesa/state_tracker/st_cb_texture.c31
-rw-r--r--src/mesa/state_tracker/st_context.c6
-rw-r--r--src/mesa/state_tracker/st_context.h13
-rw-r--r--src/mesa/state_tracker/st_draw.c179
-rw-r--r--src/mesa/state_tracker/st_draw.h2
-rw-r--r--src/mesa/state_tracker/st_draw_feedback.c15
-rw-r--r--src/mesa/state_tracker/st_extensions.c48
-rw-r--r--src/mesa/state_tracker/st_format.c469
-rw-r--r--src/mesa/state_tracker/st_texture.h15
-rw-r--r--src/mesa/swrast/s_aatriangle.c7
-rw-r--r--src/mesa/swrast/s_context.c15
-rw-r--r--src/mesa/swrast/s_fragprog.c6
-rw-r--r--src/mesa/swrast/s_readpix.c22
-rw-r--r--src/mesa/swrast/s_span.c10
-rw-r--r--src/mesa/swrast/s_texcombine.c22
-rw-r--r--src/mesa/swrast/s_texfilter.c255
-rw-r--r--src/mesa/swrast/s_triangle.c12
-rw-r--r--src/mesa/tnl/t_context.c12
-rw-r--r--src/mesa/vbo/vbo_context.c3
-rw-r--r--src/mesa/vbo/vbo_exec_api.c2
-rw-r--r--src/mesa/vbo/vbo_exec_array.c15
-rw-r--r--src/mesa/vbo/vbo_exec_draw.c1
-rw-r--r--src/mesa/vbo/vbo_save_draw.c3
-rw-r--r--src/mesa/vbo/vbo_split_copy.c1
-rw-r--r--src/mesa/vf/vf.c372
-rw-r--r--src/mesa/vf/vf.h234
-rw-r--r--src/mesa/vf/vf_generic.c982
-rw-r--r--src/mesa/vf/vf_sse.c662
262 files changed, 15193 insertions, 12425 deletions
diff --git a/src/mesa/SConscript b/src/mesa/SConscript
index 261242f6fc9..2d8a17727c5 100644
--- a/src/mesa/SConscript
+++ b/src/mesa/SConscript
@@ -100,6 +100,7 @@ main_sources = [
'main/readpix.c',
'main/remap.c',
'main/renderbuffer.c',
+ 'main/samplerobj.c',
'main/scissor.c',
'main/shaderapi.c',
'main/shaderobj.c',
@@ -143,6 +144,65 @@ math_sources = [
'math/m_xform.c',
]
+math_xform_sources = [
+ 'math/m_xform.c'
+]
+
+swrast_sources = [
+ 'swrast/s_aaline.c',
+ 'swrast/s_aatriangle.c',
+ 'swrast/s_accum.c',
+ 'swrast/s_alpha.c',
+ 'swrast/s_atifragshader.c',
+ 'swrast/s_bitmap.c',
+ 'swrast/s_blend.c',
+ 'swrast/s_blit.c',
+ 'swrast/s_clear.c',
+ 'swrast/s_copypix.c',
+ 'swrast/s_context.c',
+ 'swrast/s_depth.c',
+ 'swrast/s_drawpix.c',
+ 'swrast/s_feedback.c',
+ 'swrast/s_fog.c',
+ 'swrast/s_fragprog.c',
+ 'swrast/s_lines.c',
+ 'swrast/s_logic.c',
+ 'swrast/s_masking.c',
+ 'swrast/s_points.c',
+ 'swrast/s_readpix.c',
+ 'swrast/s_span.c',
+ 'swrast/s_stencil.c',
+ 'swrast/s_texcombine.c',
+ 'swrast/s_texfilter.c',
+ 'swrast/s_triangle.c',
+ 'swrast/s_zoom.c',
+]
+
+swrast_setup_sources = [
+ 'swrast_setup/ss_context.c',
+ 'swrast_setup/ss_triangle.c',
+]
+
+tnl_sources = [
+ 'tnl/t_context.c',
+ 'tnl/t_pipeline.c',
+ 'tnl/t_draw.c',
+ 'tnl/t_rasterpos.c',
+ 'tnl/t_vb_program.c',
+ 'tnl/t_vb_render.c',
+ 'tnl/t_vb_texgen.c',
+ 'tnl/t_vb_texmat.c',
+ 'tnl/t_vb_vertex.c',
+ 'tnl/t_vb_fog.c',
+ 'tnl/t_vb_light.c',
+ 'tnl/t_vb_normals.c',
+ 'tnl/t_vb_points.c',
+ 'tnl/t_vp_build.c',
+ 'tnl/t_vertex.c',
+ 'tnl/t_vertex_sse.c',
+ 'tnl/t_vertex_generic.c',
+]
+
vbo_sources = [
'vbo/vbo_context.c',
'vbo/vbo_exec.c',
@@ -160,12 +220,6 @@ vbo_sources = [
'vbo/vbo_save_loopback.c',
]
-vf_sources = [
- 'vf/vf.c',
- 'vf/vf_generic.c',
- 'vf/vf_sse.c',
-]
-
statetracker_sources = [
'state_tracker/st_atom.c',
'state_tracker/st_atom_blend.c',
@@ -250,12 +304,21 @@ program_sources = [
program_parse[0],
]
+common_driver_sources = [
+ 'drivers/common/driverfuncs.c',
+ 'drivers/common/meta.c',
+]
+
mesa_sources = (
main_sources +
math_sources +
+ math_xform_sources +
program_sources +
vbo_sources +
- vf_sources +
+ tnl_sources +
+ swrast_sources +
+ swrast_setup_sources +
+ common_driver_sources +
statetracker_sources
)
@@ -390,6 +453,18 @@ if env['gcc'] and env['platform'] != 'windows':
# build dir) to the include path
env.Append(CPPPATH = [matypes[0].dir])
+
+# Create the git_sha1.h file if it doesn't exist already
+try:
+ f = open('main/git_sha1.h', 'r')
+ f.close()
+except IOError:
+ f = open('main/git_sha1.h', 'w')
+ f.close()
+# and update CPPPATH so the git_sha1.h header can be found
+env.Append(CPPPATH = ["#" + env['build_dir'] + "/mesa/main"])
+
+
#
# Libraries
#
@@ -402,3 +477,5 @@ mesa = env.ConvenienceLibrary(
env.Alias('mesa', mesa)
Export('mesa')
+
+SConscript('drivers/SConscript')
diff --git a/src/mesa/drivers/SConscript b/src/mesa/drivers/SConscript
new file mode 100644
index 00000000000..ab0f8943290
--- /dev/null
+++ b/src/mesa/drivers/SConscript
@@ -0,0 +1,6 @@
+Import('*')
+
+SConscript('osmesa/SConscript')
+
+if env['platform'] == 'windows':
+ SConscript('windows/gdi/SConscript')
diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c
index 2b00e8979d2..6c35fa10d8a 100644
--- a/src/mesa/drivers/common/meta.c
+++ b/src/mesa/drivers/common/meta.c
@@ -92,6 +92,8 @@
#define META_TEXTURE 0x1000
#define META_VERTEX 0x2000
#define META_VIEWPORT 0x4000
+#define META_CLAMP_FRAGMENT_COLOR 0x8000
+#define META_CLAMP_VERTEX_COLOR 0x10000
/*@}*/
@@ -180,6 +182,12 @@ struct save_state
GLint ViewportX, ViewportY, ViewportW, ViewportH;
GLclampd DepthNear, DepthFar;
+ /** META_CLAMP_FRAGMENT_COLOR */
+ GLenum ClampFragmentColor;
+
+ /** META_CLAMP_VERTEX_COLOR */
+ GLenum ClampVertexColor;
+
/** Miscellaneous (always disabled) */
GLboolean Lighting;
};
@@ -569,6 +577,26 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
_mesa_DepthRange(0.0, 1.0);
}
+ if (state & META_CLAMP_FRAGMENT_COLOR) {
+ save->ClampFragmentColor = ctx->Color.ClampFragmentColor;
+
+ /* Generally in here we want to do clamping according to whether
+ * it's for the pixel path (ClampFragmentColor is GL_TRUE),
+ * regardless of the internal implementation of the metaops.
+ */
+ if (ctx->Color.ClampFragmentColor != GL_TRUE)
+ _mesa_ClampColorARB(GL_CLAMP_FRAGMENT_COLOR, GL_FALSE);
+ }
+
+ if (state & META_CLAMP_VERTEX_COLOR) {
+ save->ClampVertexColor = ctx->Light.ClampVertexColor;
+
+ /* Generally in here we never want vertex color clamping --
+ * result clamping is only dependent on fragment clamping.
+ */
+ _mesa_ClampColorARB(GL_CLAMP_VERTEX_COLOR, GL_FALSE);
+ }
+
/* misc */
{
save->Lighting = ctx->Light.Enabled;
@@ -833,6 +861,14 @@ _mesa_meta_end(struct gl_context *ctx)
_mesa_DepthRange(save->DepthNear, save->DepthFar);
}
+ if (state & META_CLAMP_FRAGMENT_COLOR) {
+ _mesa_ClampColorARB(GL_CLAMP_FRAGMENT_COLOR, save->ClampFragmentColor);
+ }
+
+ if (state & META_CLAMP_VERTEX_COLOR) {
+ _mesa_ClampColorARB(GL_CLAMP_VERTEX_COLOR, save->ClampVertexColor);
+ }
+
/* misc */
if (save->Lighting) {
_mesa_set_enable(ctx, GL_LIGHTING, GL_TRUE);
@@ -1124,12 +1160,12 @@ blitframebuffer_texture(struct gl_context *ctx,
if (readAtt && readAtt->Texture) {
const struct gl_texture_object *texObj = readAtt->Texture;
const GLuint srcLevel = readAtt->TextureLevel;
- const GLenum minFilterSave = texObj->MinFilter;
- const GLenum magFilterSave = texObj->MagFilter;
+ const GLenum minFilterSave = texObj->Sampler.MinFilter;
+ const GLenum magFilterSave = texObj->Sampler.MagFilter;
const GLint baseLevelSave = texObj->BaseLevel;
const GLint maxLevelSave = texObj->MaxLevel;
- const GLenum wrapSSave = texObj->WrapS;
- const GLenum wrapTSave = texObj->WrapT;
+ const GLenum wrapSSave = texObj->Sampler.WrapS;
+ const GLenum wrapTSave = texObj->Sampler.WrapT;
const GLenum target = texObj->Target;
if (drawAtt->Texture == readAtt->Texture) {
@@ -1441,6 +1477,9 @@ _mesa_meta_Clear(struct gl_context *ctx, GLbitfield buffers)
/* GL_COLOR_BUFFER_BIT */
if (buffers & BUFFER_BITS_COLOR) {
/* leave colormask, glDrawBuffer state as-is */
+
+ /* Clears never have the color clamped. */
+ _mesa_ClampColorARB(GL_CLAMP_FRAGMENT_COLOR, GL_FALSE);
}
else {
ASSERT(metaSave & META_COLOR_MASK);
@@ -1494,10 +1533,10 @@ _mesa_meta_Clear(struct gl_context *ctx, GLbitfield buffers)
/* vertex colors */
for (i = 0; i < 4; i++) {
- verts[i].r = ctx->Color.ClearColor[0];
- verts[i].g = ctx->Color.ClearColor[1];
- verts[i].b = ctx->Color.ClearColor[2];
- verts[i].a = ctx->Color.ClearColor[3];
+ verts[i].r = ctx->Color.ClearColorUnclamped[0];
+ verts[i].g = ctx->Color.ClearColorUnclamped[1];
+ verts[i].b = ctx->Color.ClearColorUnclamped[2];
+ verts[i].a = ctx->Color.ClearColorUnclamped[3];
}
/* upload new vertex data */
@@ -1803,6 +1842,14 @@ _mesa_meta_DrawPixels(struct gl_context *ctx,
texIntFormat = format;
else
texIntFormat = GL_RGBA;
+
+ /* If we're not supposed to clamp the resulting color, then just
+ * promote our texture to fully float. We could do better by
+ * just going for the matching set of channels, in floating
+ * point.
+ */
+ if (ctx->Color.ClampFragmentColor != GL_TRUE)
+ texIntFormat = GL_RGBA32F;
}
else if (_mesa_is_stencil_format(format)) {
if (ctx->Extensions.ARB_fragment_program &&
@@ -1861,6 +1908,7 @@ _mesa_meta_DrawPixels(struct gl_context *ctx,
META_TRANSFORM |
META_VERTEX |
META_VIEWPORT |
+ META_CLAMP_FRAGMENT_COLOR |
metaExtraSave));
newTex = alloc_texture(tex, width, height, texIntFormat);
@@ -2259,13 +2307,13 @@ _mesa_meta_GenerateMipmap(struct gl_context *ctx, GLenum target,
struct vertex verts[4];
const GLuint baseLevel = texObj->BaseLevel;
const GLuint maxLevel = texObj->MaxLevel;
- const GLenum minFilterSave = texObj->MinFilter;
- const GLenum magFilterSave = texObj->MagFilter;
+ const GLenum minFilterSave = texObj->Sampler.MinFilter;
+ const GLenum magFilterSave = texObj->Sampler.MagFilter;
const GLint maxLevelSave = texObj->MaxLevel;
const GLboolean genMipmapSave = texObj->GenerateMipmap;
- const GLenum wrapSSave = texObj->WrapS;
- const GLenum wrapTSave = texObj->WrapT;
- const GLenum wrapRSave = texObj->WrapR;
+ const GLenum wrapSSave = texObj->Sampler.WrapS;
+ const GLenum wrapTSave = texObj->Sampler.WrapT;
+ const GLenum wrapRSave = texObj->Sampler.WrapR;
const GLuint fboSave = ctx->DrawBuffer->Name;
const GLuint original_active_unit = ctx->Texture.CurrentUnit;
GLenum faceTarget;
diff --git a/src/mesa/drivers/dri/common/spantmp2.h b/src/mesa/drivers/dri/common/spantmp2.h
index f436d1398c2..abd79562f98 100644
--- a/src/mesa/drivers/dri/common/spantmp2.h
+++ b/src/mesa/drivers/dri/common/spantmp2.h
@@ -48,15 +48,6 @@
#define HW_WRITE_CLIPLOOP() HW_CLIPLOOP()
#endif
-#ifdef SPANTMP_MESA_FMT
-#define SPANTMP_PIXEL_FMT GL_NONE
-#define SPANTMP_PIXEL_TYPE GL_NONE
-#endif
-
-#ifndef SPANTMP_MESA_FMT
-#define SPANTMP_MESA_FMT MESA_FORMAT_COUNT
-#endif
-
#if (SPANTMP_PIXEL_FMT == GL_RGB) && (SPANTMP_PIXEL_TYPE == GL_UNSIGNED_SHORT_5_6_5)
/**
@@ -454,118 +445,6 @@
rgba[3] = p; \
} while (0)
-#elif (SPANTMP_MESA_FMT == MESA_FORMAT_R8)
-
-#ifndef GET_VALUE
-#ifndef GET_PTR
-#define GET_PTR(_x, _y) ( buf + (_x) + (_y) * pitch)
-#endif
-
-#define GET_VALUE(_x, _y) *(volatile GLubyte *)(GET_PTR(_x, _y))
-#define PUT_VALUE(_x, _y, _v) *(volatile GLubyte *)(GET_PTR(_x, _y)) = (_v)
-#endif /* GET_VALUE */
-
-# define INIT_MONO_PIXEL(p, color) \
- p = color[0]
-
-# define WRITE_RGBA(_x, _y, r, g, b, a) \
- PUT_VALUE(_x, _y, r)
-
-#define WRITE_PIXEL(_x, _y, p) PUT_VALUE(_x, _y, p)
-
-#define READ_RGBA( rgba, _x, _y ) \
- do { \
- GLubyte p = GET_VALUE(_x, _y); \
- rgba[0] = p; \
- rgba[1] = 0; \
- rgba[2] = 0; \
- rgba[3] = 0; \
- } while (0)
-
-#elif (SPANTMP_MESA_FMT == MESA_FORMAT_RG88)
-
-#ifndef GET_VALUE
-#ifndef GET_PTR
-#define GET_PTR(_x, _y) ( buf + (_x) * 2 + (_y) * pitch)
-#endif
-
-#define GET_VALUE(_x, _y) *(volatile GLushort *)(GET_PTR(_x, _y))
-#define PUT_VALUE(_x, _y, _v) *(volatile GLushort *)(GET_PTR(_x, _y)) = (_v)
-#endif /* GET_VALUE */
-
-# define INIT_MONO_PIXEL(p, color) \
- PACK_COLOR_8888(color[0], color[1], 0, 0)
-
-# define WRITE_RGBA(_x, _y, r, g, b, a) \
- PUT_VALUE(_x, _y, r)
-
-#define WRITE_PIXEL(_x, _y, p) PUT_VALUE(_x, _y, p)
-
-#define READ_RGBA( rgba, _x, _y ) \
- do { \
- GLushort p = GET_VALUE(_x, _y); \
- rgba[0] = p & 0xff; \
- rgba[1] = (p >> 8) & 0xff; \
- rgba[2] = 0; \
- rgba[3] = 0; \
- } while (0)
-
-#elif (SPANTMP_MESA_FMT == MESA_FORMAT_R16)
-
-#ifndef GET_VALUE
-#ifndef GET_PTR
-#define GET_PTR(_x, _y) ( buf + (_x) * 2 + (_y) * pitch)
-#endif
-
-#define GET_VALUE(_x, _y) *(volatile GLushort *)(GET_PTR(_x, _y))
-#define PUT_VALUE(_x, _y, _v) *(volatile GLushort *)(GET_PTR(_x, _y)) = (_v)
-#endif /* GET_VALUE */
-
-# define INIT_MONO_PIXEL(p, color) \
- p = color[0]
-
-# define WRITE_RGBA(_x, _y, r, g, b, a) \
- PUT_VALUE(_x, _y, r)
-
-#define WRITE_PIXEL(_x, _y, p) PUT_VALUE(_x, _y, p)
-
-#define READ_RGBA( rgba, _x, _y ) \
- do { \
- GLushort p = GET_VALUE(_x, _y); \
- rgba[0] = p; \
- rgba[1] = 0; \
- rgba[2] = 0; \
- rgba[3] = 0; \
- } while (0)
-
-#elif (SPANTMP_MESA_FMT == MESA_FORMAT_RG1616)
-
-#ifndef GET_VALUE
-#ifndef GET_PTR
-#define GET_PTR(_x, _y) ( buf + (_x) * 4 + (_y) * pitch)
-#endif
-
-#define GET_VALUE(_x, _y) *(volatile GLuint *)(GET_PTR(_x, _y))
-#define PUT_VALUE(_x, _y, _v) *(volatile GLuint *)(GET_PTR(_x, _y)) = (_v)
-#endif /* GET_VALUE */
-
-# define INIT_MONO_PIXEL(p, color) \
- ((color[1] << 16) | (color[0]))
-
-# define WRITE_RGBA(_x, _y, r, g, b, a) \
- PUT_VALUE(_x, _y, r)
-
-#define WRITE_PIXEL(_x, _y, p) PUT_VALUE(_x, _y, p)
-
-#define READ_RGBA( rgba, _x, _y ) \
- do { \
- GLuint p = GET_VALUE(_x, _y); \
- rgba[0] = p & 0xffff; \
- rgba[1] = (p >> 16) & 0xffff; \
- rgba[2] = 0; \
- rgba[3] = 0; \
- } while (0)
-
#else
#error SPANTMP_PIXEL_FMT must be set to a valid value!
#endif
@@ -1035,4 +914,3 @@ static void TAG(InitPointers)(struct gl_renderbuffer *rb)
#undef GET_PTR
#undef SPANTMP_PIXEL_FMT
#undef SPANTMP_PIXEL_TYPE
-#undef SPANTMP_MESA_FMT
diff --git a/src/mesa/drivers/dri/common/texmem.c b/src/mesa/drivers/dri/common/texmem.c
index 8eec07d5bcc..e927cf0addd 100644
--- a/src/mesa/drivers/dri/common/texmem.c
+++ b/src/mesa/drivers/dri/common/texmem.c
@@ -1264,17 +1264,18 @@ driCalculateTextureFirstLastLevel( driTextureObject * t )
case GL_TEXTURE_2D:
case GL_TEXTURE_3D:
case GL_TEXTURE_CUBE_MAP:
- if (tObj->MinFilter == GL_NEAREST || tObj->MinFilter == GL_LINEAR) {
+ if (tObj->Sampler.MinFilter == GL_NEAREST ||
+ tObj->Sampler.MinFilter == GL_LINEAR) {
/* GL_NEAREST and GL_LINEAR only care about GL_TEXTURE_BASE_LEVEL.
*/
firstLevel = lastLevel = tObj->BaseLevel;
}
else {
- firstLevel = tObj->BaseLevel + (GLint)(tObj->MinLod + 0.5);
+ firstLevel = tObj->BaseLevel + (GLint)(tObj->Sampler.MinLod + 0.5);
firstLevel = MAX2(firstLevel, tObj->BaseLevel);
firstLevel = MIN2(firstLevel, tObj->BaseLevel + baseImage->MaxLog2);
- lastLevel = tObj->BaseLevel + (GLint)(tObj->MaxLod + 0.5);
+ lastLevel = tObj->BaseLevel + (GLint)(tObj->Sampler.MaxLod + 0.5);
lastLevel = MAX2(lastLevel, t->tObj->BaseLevel);
lastLevel = MIN2(lastLevel, t->tObj->BaseLevel + baseImage->MaxLog2);
lastLevel = MIN2(lastLevel, t->tObj->MaxLevel);
diff --git a/src/mesa/drivers/dri/common/utils.c b/src/mesa/drivers/dri/common/utils.c
index 083edfaa9b4..d8281838233 100644
--- a/src/mesa/drivers/dri/common/utils.c
+++ b/src/mesa/drivers/dri/common/utils.c
@@ -96,7 +96,6 @@ driParseDebugString( const char * debug,
*
* \param buffer Buffer to hold the \c GL_RENDERER string.
* \param hardware_name Name of the hardware.
- * \param driver_date Driver date.
* \param agp_mode AGP mode (speed).
*
* \returns
@@ -105,12 +104,12 @@ driParseDebugString( const char * debug,
*/
unsigned
driGetRendererString( char * buffer, const char * hardware_name,
- const char * driver_date, GLuint agp_mode )
+ GLuint agp_mode )
{
unsigned offset;
char *cpu;
- offset = sprintf( buffer, "Mesa DRI %s %s", hardware_name, driver_date );
+ offset = sprintf( buffer, "Mesa DRI %s", hardware_name );
/* Append any AGP-specific information.
*/
diff --git a/src/mesa/drivers/dri/common/utils.h b/src/mesa/drivers/dri/common/utils.h
index 6349fb4b95c..a1c9ea604ee 100644
--- a/src/mesa/drivers/dri/common/utils.h
+++ b/src/mesa/drivers/dri/common/utils.h
@@ -76,7 +76,7 @@ extern unsigned driParseDebugString( const char * debug,
const struct dri_debug_control * control );
extern unsigned driGetRendererString( char * buffer,
- const char * hardware_name, const char * driver_date, GLuint agp_mode );
+ const char * hardware_name, GLuint agp_mode );
extern void driInitExtensions( struct gl_context * ctx,
const struct dri_extension * card_extensions, GLboolean enable_imaging );
diff --git a/src/mesa/drivers/dri/common/xmlconfig.c b/src/mesa/drivers/dri/common/xmlconfig.c
index 0312c072437..0226b38c4fc 100644
--- a/src/mesa/drivers/dri/common/xmlconfig.c
+++ b/src/mesa/drivers/dri/common/xmlconfig.c
@@ -64,7 +64,25 @@ extern char *program_invocation_name, *program_invocation_short_name;
the basename to match BSD getprogname() */
# include <stdlib.h>
# include <libgen.h>
-# define GET_PROGRAM_NAME() basename(getexecname())
+
+static const char *__getProgramName () {
+ static const char *progname;
+
+ if (progname == NULL) {
+ const char *e = getexecname();
+ if (e != NULL) {
+ /* Have to make a copy since getexecname can return a readonly
+ string, but basename expects to be able to modify its arg. */
+ char *n = strdup(e);
+ if (n != NULL) {
+ progname = basename(n);
+ }
+ }
+ }
+ return progname;
+}
+
+# define GET_PROGRAM_NAME() __getProgramName()
#endif
#if !defined(GET_PROGRAM_NAME)
diff --git a/src/mesa/drivers/dri/i810/i810context.c b/src/mesa/drivers/dri/i810/i810context.c
index 90dbb6bbe80..604b1e36f97 100644
--- a/src/mesa/drivers/dri/i810/i810context.c
+++ b/src/mesa/drivers/dri/i810/i810context.c
@@ -67,8 +67,6 @@ int I810_DEBUG = (0);
PUBLIC const char __driConfigOptions[] = { 0 };
const GLuint __driNConfigOptions = 0;
-#define DRIVER_DATE "20050821"
-
static const GLubyte *i810GetString( struct gl_context *ctx, GLenum name )
{
static char buffer[128];
@@ -88,7 +86,7 @@ static const GLubyte *i810GetString( struct gl_context *ctx, GLenum name )
default: chipset = "Unknown i810-class Chipset"; break;
}
- (void) driGetRendererString( buffer, chipset, DRIVER_DATE, 0 );
+ (void) driGetRendererString( buffer, chipset, 0 );
return (GLubyte *) buffer;
}
default:
diff --git a/src/mesa/drivers/dri/i810/i810tex.c b/src/mesa/drivers/dri/i810/i810tex.c
index 49364aeb225..dba4ebaa5c7 100644
--- a/src/mesa/drivers/dri/i810/i810tex.c
+++ b/src/mesa/drivers/dri/i810/i810tex.c
@@ -204,10 +204,10 @@ i810AllocTexObj( struct gl_context *ctx, struct gl_texture_object *texObj )
make_empty_list( & t->base );
- i810SetTexWrapping( t, texObj->WrapS, texObj->WrapT );
+ i810SetTexWrapping( t, texObj->Sampler.WrapS, texObj->Sampler.WrapT );
/*i830SetTexMaxAnisotropy( t, texObj->MaxAnisotropy );*/
- i810SetTexFilter( imesa, t, texObj->MinFilter, texObj->MagFilter, bias );
- i810SetTexBorderColor( t, texObj->BorderColor.f );
+ i810SetTexFilter( imesa, t, texObj->Sampler.MinFilter, texObj->Sampler.MagFilter, bias );
+ i810SetTexBorderColor( t, texObj->Sampler.BorderColor.f );
}
return t;
@@ -238,17 +238,17 @@ static void i810TexParameter( struct gl_context *ctx, GLenum target,
case GL_TEXTURE_MAG_FILTER:
{
GLfloat bias = ctx->Texture.Unit[ctx->Texture.CurrentUnit].LodBias;
- i810SetTexFilter( imesa, t, tObj->MinFilter, tObj->MagFilter, bias );
+ i810SetTexFilter( imesa, t, tObj->Sampler.MinFilter, tObj->Sampler.MagFilter, bias );
}
break;
case GL_TEXTURE_WRAP_S:
case GL_TEXTURE_WRAP_T:
- i810SetTexWrapping( t, tObj->WrapS, tObj->WrapT );
+ i810SetTexWrapping( t, tObj->Sampler.WrapS, tObj->Sampler.WrapT );
break;
case GL_TEXTURE_BORDER_COLOR:
- i810SetTexBorderColor( t, tObj->BorderColor.f );
+ i810SetTexBorderColor( t, tObj->Sampler.BorderColor.f );
break;
case GL_TEXTURE_BASE_LEVEL:
diff --git a/src/mesa/drivers/dri/i915/i830_texstate.c b/src/mesa/drivers/dri/i915/i830_texstate.c
index c35b4b5ed06..7554bd5e7b9 100644
--- a/src/mesa/drivers/dri/i915/i830_texstate.c
+++ b/src/mesa/drivers/dri/i915/i830_texstate.c
@@ -193,7 +193,7 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
float maxlod;
uint32_t minlod_fixed, maxlod_fixed;
- switch (tObj->MinFilter) {
+ switch (tObj->Sampler.MinFilter) {
case GL_NEAREST:
minFilt = FILTER_NEAREST;
mipFilt = MIPFILTER_NONE;
@@ -222,12 +222,12 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
return GL_FALSE;
}
- if (tObj->MaxAnisotropy > 1.0) {
+ if (tObj->Sampler.MaxAnisotropy > 1.0) {
minFilt = FILTER_ANISOTROPIC;
magFilt = FILTER_ANISOTROPIC;
}
else {
- switch (tObj->MagFilter) {
+ switch (tObj->Sampler.MagFilter) {
case GL_NEAREST:
magFilt = FILTER_NEAREST;
break;
@@ -239,7 +239,7 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
}
}
- lodbias = (int) ((tUnit->LodBias + tObj->LodBias) * 16.0);
+ lodbias = (int) ((tUnit->LodBias + tObj->Sampler.LodBias) * 16.0);
if (lodbias < -64)
lodbias = -64;
if (lodbias > 63)
@@ -259,8 +259,8 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
* addressable (smallest resolution) LOD. Use it to cover both
* MAX_LEVEL and MAX_LOD.
*/
- minlod_fixed = U_FIXED(CLAMP(tObj->MinLod, 0.0, 11), 4);
- maxlod = MIN2(tObj->MaxLod, tObj->_MaxLevel - tObj->BaseLevel);
+ minlod_fixed = U_FIXED(CLAMP(tObj->Sampler.MinLod, 0.0, 11), 4);
+ maxlod = MIN2(tObj->Sampler.MaxLod, tObj->_MaxLevel - tObj->BaseLevel);
if (intel->intelScreen->deviceID == PCI_CHIP_I855_GM ||
intel->intelScreen->deviceID == PCI_CHIP_I865_G) {
maxlod_fixed = U_FIXED(CLAMP(maxlod, 0.0, 11.75), 2);
@@ -279,8 +279,8 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
}
{
- GLenum ws = tObj->WrapS;
- GLenum wt = tObj->WrapT;
+ GLenum ws = tObj->Sampler.WrapS;
+ GLenum wt = tObj->Sampler.WrapT;
/* 3D textures not available on i830
@@ -300,10 +300,10 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
}
/* convert border color from float to ubyte */
- CLAMPED_FLOAT_TO_UBYTE(border[0], tObj->BorderColor.f[0]);
- CLAMPED_FLOAT_TO_UBYTE(border[1], tObj->BorderColor.f[1]);
- CLAMPED_FLOAT_TO_UBYTE(border[2], tObj->BorderColor.f[2]);
- CLAMPED_FLOAT_TO_UBYTE(border[3], tObj->BorderColor.f[3]);
+ CLAMPED_FLOAT_TO_UBYTE(border[0], tObj->Sampler.BorderColor.f[0]);
+ CLAMPED_FLOAT_TO_UBYTE(border[1], tObj->Sampler.BorderColor.f[1]);
+ CLAMPED_FLOAT_TO_UBYTE(border[2], tObj->Sampler.BorderColor.f[2]);
+ CLAMPED_FLOAT_TO_UBYTE(border[3], tObj->Sampler.BorderColor.f[3]);
state[I830_TEXREG_TM0S4] = PACK_COLOR_8888(border[3],
border[0],
diff --git a/src/mesa/drivers/dri/i915/i915_context.c b/src/mesa/drivers/dri/i915/i915_context.c
index 7389a1d57a9..f02f2d78267 100644
--- a/src/mesa/drivers/dri/i915/i915_context.c
+++ b/src/mesa/drivers/dri/i915/i915_context.c
@@ -69,8 +69,6 @@ i915InvalidateState(struct gl_context * ctx, GLuint new_state)
p->params_uptodate = 0;
}
- if (new_state & (_NEW_FOG | _NEW_HINT | _NEW_PROGRAM | _NEW_PROGRAM_CONSTANTS))
- i915_update_fog(ctx);
if (new_state & (_NEW_STENCIL | _NEW_BUFFERS | _NEW_POLYGON))
i915_update_stencil(ctx);
if (new_state & (_NEW_LIGHT))
@@ -209,5 +207,11 @@ i915CreateContext(int api,
i915InitState(i915);
+ /* Always enable pixel fog. Vertex fog using fog coord will conflict
+ * with fog code appended onto fragment program.
+ */
+ _tnl_allow_vertex_fog(ctx, 0);
+ _tnl_allow_pixel_fog(ctx, 1);
+
return GL_TRUE;
}
diff --git a/src/mesa/drivers/dri/i915/i915_context.h b/src/mesa/drivers/dri/i915/i915_context.h
index 601620275f4..577a01e290c 100644
--- a/src/mesa/drivers/dri/i915/i915_context.h
+++ b/src/mesa/drivers/dri/i915/i915_context.h
@@ -46,7 +46,6 @@
#define I915_UPLOAD_STIPPLE 0x4
#define I915_UPLOAD_PROGRAM 0x8
#define I915_UPLOAD_CONSTANTS 0x10
-#define I915_UPLOAD_FOG 0x20
#define I915_UPLOAD_INVARIENT 0x40
#define I915_UPLOAD_DEFAULTS 0x80
#define I915_UPLOAD_RASTER_RULES 0x100
@@ -91,13 +90,6 @@
#define I915_BLENDREG_BLENDCOLOR1 2
#define I915_BLEND_SETUP_SIZE 3
-#define I915_FOGREG_COLOR 0
-#define I915_FOGREG_MODE0 1
-#define I915_FOGREG_MODE1 2
-#define I915_FOGREG_MODE2 3
-#define I915_FOGREG_MODE3 4
-#define I915_FOG_SETUP_SIZE 5
-
#define I915_STPREG_ST0 0
#define I915_STPREG_ST1 1
#define I915_STP_SETUP_SIZE 2
@@ -227,7 +219,6 @@ struct i915_hw_state
GLuint Blend[I915_BLEND_SETUP_SIZE];
GLuint Buffer[I915_DEST_SETUP_SIZE];
GLuint Stipple[I915_STP_SETUP_SIZE];
- GLuint Fog[I915_FOG_SETUP_SIZE];
GLuint Defaults[I915_DEF_SETUP_SIZE];
GLuint RasterRules[I915_RASTER_RULES_SETUP_SIZE];
GLuint Tex[I915_TEX_UNITS][I915_TEX_SETUP_SIZE];
@@ -254,16 +245,11 @@ struct i915_hw_state
GLuint emitted; /* I915_UPLOAD_* */
};
-#define I915_FOG_PIXEL 2
-#define I915_FOG_VERTEX 1
-#define I915_FOG_NONE 0
-
struct i915_context
{
struct intel_context intel;
GLuint last_ReallyEnabled;
- GLuint vertex_fog;
GLuint lodbias_ss2[MAX_TEXTURE_UNITS];
@@ -350,7 +336,6 @@ extern void i915_print_ureg(const char *msg, GLuint ureg);
*/
extern void i915InitStateFunctions(struct dd_function_table *functions);
extern void i915InitState(struct i915_context *i915);
-extern void i915_update_fog(struct gl_context * ctx);
extern void i915_update_stencil(struct gl_context * ctx);
extern void i915_update_provoking_vertex(struct gl_context *ctx);
diff --git a/src/mesa/drivers/dri/i915/i915_fragprog.c b/src/mesa/drivers/dri/i915/i915_fragprog.c
index 2bfe665cb65..b67ebb9a1ec 100644
--- a/src/mesa/drivers/dri/i915/i915_fragprog.c
+++ b/src/mesa/drivers/dri/i915/i915_fragprog.c
@@ -1285,15 +1285,6 @@ i915ProgramStringNotify(struct gl_context * ctx,
if (target == GL_FRAGMENT_PROGRAM_ARB) {
struct i915_fragment_program *p = (struct i915_fragment_program *) prog;
p->translated = 0;
-
- /* Hack: make sure fog is correctly enabled according to this
- * fragment program's fog options.
- */
- if (p->FragProg.FogOption) {
- /* add extra instructions to do fog, then turn off FogOption field */
- _mesa_append_fog_code(ctx, &p->FragProg);
- p->FragProg.FogOption = GL_NONE;
- }
}
(void) _tnl_program_string(ctx, target, prog);
@@ -1371,7 +1362,7 @@ i915ValidateFragmentProgram(struct i915_context *i915)
EMIT_ATTR(_TNL_ATTRIB_COLOR1, EMIT_4UB_4F_BGRA, S4_VFMT_SPEC_FOG, 4);
}
- if ((inputsRead & FRAG_BIT_FOGC) || i915->vertex_fog != I915_FOG_NONE) {
+ if ((inputsRead & FRAG_BIT_FOGC)) {
EMIT_ATTR(_TNL_ATTRIB_FOG, EMIT_1F, S4_VFMT_FOG_PARAM, 4);
}
diff --git a/src/mesa/drivers/dri/i915/i915_state.c b/src/mesa/drivers/dri/i915/i915_state.c
index 3b1af4c455e..99212ad4fd1 100644
--- a/src/mesa/drivers/dri/i915/i915_state.c
+++ b/src/mesa/drivers/dri/i915/i915_state.c
@@ -724,157 +724,17 @@ i915ShadeModel(struct gl_context * ctx, GLenum mode)
/* =============================================================
* Fog
+ *
+ * This empty function remains because _mesa_init_driver_state calls
+ * dd_function_table::Fogfv unconditionally. We have to have some function
+ * there so that it doesn't try to call a NULL pointer.
*/
-void
-i915_update_fog(struct gl_context * ctx)
-{
- struct i915_context *i915 = I915_CONTEXT(ctx);
- GLenum mode;
- GLboolean enabled;
- GLboolean try_pixel_fog;
- GLuint dw;
-
- if (ctx->FragmentProgram._Current) {
- /* Pull in static fog state from program */
- mode = ctx->FragmentProgram._Current->FogOption;
- enabled = (mode != GL_NONE);
- try_pixel_fog = 0;
- }
- else {
- enabled = ctx->Fog.Enabled;
- mode = ctx->Fog.Mode;
-#if 0
- /* XXX - DISABLED -- Need ortho fallback */
- try_pixel_fog = (ctx->Fog.FogCoordinateSource == GL_FRAGMENT_DEPTH_EXT
- && ctx->Hint.Fog == GL_NICEST);
-#else
- try_pixel_fog = 0;
-#endif
- }
-
- if (!enabled) {
- i915->vertex_fog = I915_FOG_NONE;
- }
- else if (try_pixel_fog) {
- I915_STATECHANGE(i915, I915_UPLOAD_FOG);
- i915->state.Fog[I915_FOGREG_MODE1] &= ~FMC1_FOGFUNC_MASK;
- i915->vertex_fog = I915_FOG_PIXEL;
-
- switch (mode) {
- case GL_LINEAR:
- if (ctx->Fog.End <= ctx->Fog.Start) {
- /* XXX - this won't work with fragment programs. Need to
- * either fallback or append fog instructions to end of
- * program in the case of linear fog.
- */
- printf("vertex fog!\n");
- i915->state.Fog[I915_FOGREG_MODE1] |= FMC1_FOGFUNC_VERTEX;
- i915->vertex_fog = I915_FOG_VERTEX;
- }
- else {
- GLfloat c2 = 1.0 / (ctx->Fog.End - ctx->Fog.Start);
- GLfloat c1 = ctx->Fog.End * c2;
-
- i915->state.Fog[I915_FOGREG_MODE1] &= ~FMC1_C1_MASK;
- i915->state.Fog[I915_FOGREG_MODE1] |= FMC1_FOGFUNC_PIXEL_LINEAR;
- i915->state.Fog[I915_FOGREG_MODE1] |=
- ((GLuint) (c1 * FMC1_C1_ONE)) & FMC1_C1_MASK;
-
- if (i915->state.Fog[I915_FOGREG_MODE1] & FMC1_FOGINDEX_Z) {
- i915->state.Fog[I915_FOGREG_MODE2]
- = (GLuint) (c2 * FMC2_C2_ONE);
- }
- else {
- fi_type fi;
- fi.f = c2;
- i915->state.Fog[I915_FOGREG_MODE2] = fi.i;
- }
- }
- break;
- case GL_EXP:
- i915->state.Fog[I915_FOGREG_MODE1] |= FMC1_FOGFUNC_PIXEL_EXP;
- break;
- case GL_EXP2:
- i915->state.Fog[I915_FOGREG_MODE1] |= FMC1_FOGFUNC_PIXEL_EXP2;
- break;
- default:
- break;
- }
- }
- else { /* if (i915->vertex_fog != I915_FOG_VERTEX) */
- I915_STATECHANGE(i915, I915_UPLOAD_FOG);
- i915->state.Fog[I915_FOGREG_MODE1] &= ~FMC1_FOGFUNC_MASK;
- i915->state.Fog[I915_FOGREG_MODE1] |= FMC1_FOGFUNC_VERTEX;
- i915->vertex_fog = I915_FOG_VERTEX;
- }
-
- I915_ACTIVESTATE(i915, I915_UPLOAD_FOG, enabled);
- dw = i915->state.Ctx[I915_CTXREG_LIS5];
- if (enabled)
- dw |= S5_FOG_ENABLE;
- else
- dw &= ~S5_FOG_ENABLE;
- if (dw != i915->state.Ctx[I915_CTXREG_LIS5]) {
- i915->state.Ctx[I915_CTXREG_LIS5] = dw;
- I915_STATECHANGE(i915, I915_UPLOAD_CTX);
- }
-
- /* Always enable pixel fog. Vertex fog using fog coord will conflict
- * with fog code appended onto fragment program.
- */
- _tnl_allow_vertex_fog( ctx, 0 );
- _tnl_allow_pixel_fog( ctx, 1 );
-}
-
static void
i915Fogfv(struct gl_context * ctx, GLenum pname, const GLfloat * param)
{
- struct i915_context *i915 = I915_CONTEXT(ctx);
-
- switch (pname) {
- case GL_FOG_COORDINATE_SOURCE_EXT:
- case GL_FOG_MODE:
- case GL_FOG_START:
- case GL_FOG_END:
- break;
-
- case GL_FOG_DENSITY:
- I915_STATECHANGE(i915, I915_UPLOAD_FOG);
-
- if (i915->state.Fog[I915_FOGREG_MODE1] & FMC1_FOGINDEX_Z) {
- i915->state.Fog[I915_FOGREG_MODE3] =
- (GLuint) (ctx->Fog.Density * FMC3_D_ONE);
- }
- else {
- fi_type fi;
- fi.f = ctx->Fog.Density;
- i915->state.Fog[I915_FOGREG_MODE3] = fi.i;
- }
- break;
-
- case GL_FOG_COLOR:
- I915_STATECHANGE(i915, I915_UPLOAD_FOG);
- i915->state.Fog[I915_FOGREG_COLOR] =
- (_3DSTATE_FOG_COLOR_CMD |
- ((GLubyte) (ctx->Fog.Color[0] * 255.0F) << 16) |
- ((GLubyte) (ctx->Fog.Color[1] * 255.0F) << 8) |
- ((GLubyte) (ctx->Fog.Color[2] * 255.0F) << 0));
- break;
-
- default:
- break;
- }
-}
-
-static void
-i915Hint(struct gl_context * ctx, GLenum target, GLenum state)
-{
- switch (target) {
- case GL_FOG_HINT:
- break;
- default:
- break;
- }
+ (void) ctx;
+ (void) pname;
+ (void) param;
}
/* =============================================================
@@ -971,9 +831,6 @@ i915Enable(struct gl_context * ctx, GLenum cap, GLboolean state)
}
break;
- case GL_FOG:
- break;
-
case GL_CULL_FACE:
i915CullFaceFrontFace(ctx, 0);
break;
@@ -1107,19 +964,6 @@ i915_init_packets(struct i915_context *i915)
i915->state.Stipple[I915_STPREG_ST0] = _3DSTATE_STIPPLE;
}
-
- {
- I915_STATECHANGE(i915, I915_UPLOAD_FOG);
- i915->state.Fog[I915_FOGREG_MODE0] = _3DSTATE_FOG_MODE_CMD;
- i915->state.Fog[I915_FOGREG_MODE1] = (FMC1_FOGFUNC_MODIFY_ENABLE |
- FMC1_FOGFUNC_VERTEX |
- FMC1_FOGINDEX_MODIFY_ENABLE |
- FMC1_FOGINDEX_W |
- FMC1_C1_C2_MODIFY_ENABLE |
- FMC1_DENSITY_MODIFY_ENABLE);
- i915->state.Fog[I915_FOGREG_COLOR] = _3DSTATE_FOG_COLOR_CMD;
- }
-
{
i915->state.Buffer[I915_DESTREG_DV0] = _3DSTATE_DST_BUF_VARS_CMD;
@@ -1202,7 +1046,6 @@ i915InitStateFunctions(struct dd_function_table *functions)
functions->Enable = i915Enable;
functions->Fogfv = i915Fogfv;
functions->FrontFace = i915CullFaceFrontFace;
- functions->Hint = i915Hint;
functions->LightModelfv = i915LightModelfv;
functions->LineWidth = i915LineWidth;
functions->LogicOpcode = i915LogicOp;
diff --git a/src/mesa/drivers/dri/i915/i915_texstate.c b/src/mesa/drivers/dri/i915/i915_texstate.c
index af140c85f50..742bb994adb 100644
--- a/src/mesa/drivers/dri/i915/i915_texstate.c
+++ b/src/mesa/drivers/dri/i915/i915_texstate.c
@@ -164,7 +164,7 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
format = translate_texture_format(firstImage->TexFormat,
firstImage->InternalFormat,
- tObj->DepthMode);
+ tObj->Sampler.DepthMode);
pitch = intelObj->mt->region->pitch * intelObj->mt->cpp;
state[I915_TEXREG_MS3] =
@@ -181,7 +181,7 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
* (lowest resolution) LOD. Use it to cover both MAX_LEVEL and
* MAX_LOD.
*/
- maxlod = MIN2(tObj->MaxLod, tObj->_MaxLevel - tObj->BaseLevel);
+ maxlod = MIN2(tObj->Sampler.MaxLod, tObj->_MaxLevel - tObj->BaseLevel);
state[I915_TEXREG_MS4] =
((((pitch / 4) - 1) << MS4_PITCH_SHIFT) |
MS4_CUBE_FACE_ENA_MASK |
@@ -192,7 +192,7 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
{
GLuint minFilt, mipFilt, magFilt;
- switch (tObj->MinFilter) {
+ switch (tObj->Sampler.MinFilter) {
case GL_NEAREST:
minFilt = FILTER_NEAREST;
mipFilt = MIPFILTER_NONE;
@@ -221,16 +221,16 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
return GL_FALSE;
}
- if (tObj->MaxAnisotropy > 1.0) {
+ if (tObj->Sampler.MaxAnisotropy > 1.0) {
minFilt = FILTER_ANISOTROPIC;
magFilt = FILTER_ANISOTROPIC;
- if (tObj->MaxAnisotropy > 2.0)
+ if (tObj->Sampler.MaxAnisotropy > 2.0)
aniso = SS2_MAX_ANISO_4;
else
aniso = SS2_MAX_ANISO_2;
}
else {
- switch (tObj->MagFilter) {
+ switch (tObj->Sampler.MagFilter) {
case GL_NEAREST:
magFilt = FILTER_NEAREST;
break;
@@ -242,7 +242,7 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
}
}
- lodbias = (int) ((tUnit->LodBias + tObj->LodBias) * 16.0);
+ lodbias = (int) ((tUnit->LodBias + tObj->Sampler.LodBias) * 16.0);
if (lodbias < -256)
lodbias = -256;
if (lodbias > 255)
@@ -258,14 +258,14 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
/* Shadow:
*/
- if (tObj->CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB &&
+ if (tObj->Sampler.CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB &&
tObj->Target != GL_TEXTURE_3D) {
if (tObj->Target == GL_TEXTURE_1D)
return GL_FALSE;
state[I915_TEXREG_SS2] |=
(SS2_SHADOW_ENABLE |
- intel_translate_shadow_compare_func(tObj->CompareFunc));
+ intel_translate_shadow_compare_func(tObj->Sampler.CompareFunc));
minFilt = FILTER_4X4_FLAT;
magFilt = FILTER_4X4_FLAT;
@@ -278,9 +278,9 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
}
{
- GLenum ws = tObj->WrapS;
- GLenum wt = tObj->WrapT;
- GLenum wr = tObj->WrapR;
+ GLenum ws = tObj->Sampler.WrapS;
+ GLenum wt = tObj->Sampler.WrapT;
+ GLenum wr = tObj->Sampler.WrapR;
float minlod;
/* We program 1D textures as 2D textures, so the 2D texcoord could
@@ -298,8 +298,8 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
* clamp_to_border.
*/
if (tObj->Target == GL_TEXTURE_3D &&
- (tObj->MinFilter != GL_NEAREST ||
- tObj->MagFilter != GL_NEAREST) &&
+ (tObj->Sampler.MinFilter != GL_NEAREST ||
+ tObj->Sampler.MagFilter != GL_NEAREST) &&
(ws == GL_CLAMP ||
wt == GL_CLAMP ||
wr == GL_CLAMP ||
@@ -322,7 +322,7 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
(translate_wrap_mode(wt) << SS3_TCY_ADDR_MODE_SHIFT) |
(translate_wrap_mode(wr) << SS3_TCZ_ADDR_MODE_SHIFT));
- minlod = MIN2(tObj->MinLod, tObj->_MaxLevel - tObj->BaseLevel);
+ minlod = MIN2(tObj->Sampler.MinLod, tObj->_MaxLevel - tObj->BaseLevel);
state[I915_TEXREG_SS3] |= (unit << SS3_TEXTUREMAP_INDEX_SHIFT);
state[I915_TEXREG_SS3] |= (U_FIXED(CLAMP(minlod, 0.0, 11.0), 4) <<
SS3_MIN_LOD_SHIFT);
@@ -330,10 +330,10 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3)
}
/* convert border color from float to ubyte */
- CLAMPED_FLOAT_TO_UBYTE(border[0], tObj->BorderColor.f[0]);
- CLAMPED_FLOAT_TO_UBYTE(border[1], tObj->BorderColor.f[1]);
- CLAMPED_FLOAT_TO_UBYTE(border[2], tObj->BorderColor.f[2]);
- CLAMPED_FLOAT_TO_UBYTE(border[3], tObj->BorderColor.f[3]);
+ CLAMPED_FLOAT_TO_UBYTE(border[0], tObj->Sampler.BorderColor.f[0]);
+ CLAMPED_FLOAT_TO_UBYTE(border[1], tObj->Sampler.BorderColor.f[1]);
+ CLAMPED_FLOAT_TO_UBYTE(border[2], tObj->Sampler.BorderColor.f[2]);
+ CLAMPED_FLOAT_TO_UBYTE(border[3], tObj->Sampler.BorderColor.f[3]);
if (firstImage->_BaseFormat == GL_DEPTH_COMPONENT) {
/* GL specs that border color for depth textures is taken from the
diff --git a/src/mesa/drivers/dri/i915/i915_vtbl.c b/src/mesa/drivers/dri/i915/i915_vtbl.c
index 921183b81df..89650b618e4 100644
--- a/src/mesa/drivers/dri/i915/i915_vtbl.c
+++ b/src/mesa/drivers/dri/i915/i915_vtbl.c
@@ -260,9 +260,6 @@ get_state_size(struct i915_hw_state *state)
if (dirty & I915_UPLOAD_STIPPLE)
sz += sizeof(state->Stipple);
- if (dirty & I915_UPLOAD_FOG)
- sz += sizeof(state->Fog);
-
if (dirty & I915_UPLOAD_TEX_ALL) {
int nr = 0;
for (i = 0; i < I915_TEX_UNITS; i++)
@@ -307,6 +304,10 @@ i915_emit_state(struct intel_context *intel)
false);
count = 0;
again:
+ if (intel->batch.bo == NULL) {
+ _mesa_error(ctx, GL_OUT_OF_MEMORY, "i915 emit state");
+ assert(0);
+ }
aper_count = 0;
dirty = get_dirty(state);
@@ -425,12 +426,6 @@ i915_emit_state(struct intel_context *intel)
emit(intel, state->Stipple, sizeof(state->Stipple));
}
- if (dirty & I915_UPLOAD_FOG) {
- if (INTEL_DEBUG & DEBUG_STATE)
- fprintf(stderr, "I915_UPLOAD_FOG:\n");
- emit(intel, state->Fog, sizeof(state->Fog));
- }
-
/* Combine all the dirty texture state into a single command to
* avoid lockups on I915 hardware.
*/
diff --git a/src/mesa/drivers/dri/i965/brw_cc.c b/src/mesa/drivers/dri/i965/brw_cc.c
index 412d82ab3ca..74a66af31a5 100644
--- a/src/mesa/drivers/dri/i965/brw_cc.c
+++ b/src/mesa/drivers/dri/i965/brw_cc.c
@@ -238,10 +238,10 @@ static void upload_blend_constant_color(struct brw_context *brw)
BEGIN_BATCH(5);
OUT_BATCH(_3DSTATE_BLEND_CONSTANT_COLOR << 16 | (5-2));
- OUT_BATCH_F(ctx->Color.BlendColor[0]);
- OUT_BATCH_F(ctx->Color.BlendColor[1]);
- OUT_BATCH_F(ctx->Color.BlendColor[2]);
- OUT_BATCH_F(ctx->Color.BlendColor[3]);
+ OUT_BATCH_F(ctx->Color.BlendColorUnclamped[0]);
+ OUT_BATCH_F(ctx->Color.BlendColorUnclamped[1]);
+ OUT_BATCH_F(ctx->Color.BlendColorUnclamped[2]);
+ OUT_BATCH_F(ctx->Color.BlendColorUnclamped[3]);
CACHED_BATCH();
}
diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c
index 9483ec69d96..230d326fa12 100644
--- a/src/mesa/drivers/dri/i965/brw_context.c
+++ b/src/mesa/drivers/dri/i965/brw_context.c
@@ -182,9 +182,21 @@ GLboolean brwCreateContext( int api,
/* WM maximum threads is number of EUs times number of threads per EU. */
if (intel->gen >= 6) {
- brw->urb.size = 1024;
- brw->vs_max_threads = 60;
- brw->wm_max_threads = 80;
+ if (IS_GT2(intel->intelScreen->deviceID)) {
+ /* This could possibly be 80, but is supposed to require
+ * disabling of WIZ hashing (bit 6 of GT_MODE, 0x20d0) and a
+ * GPU reset to change.
+ */
+ brw->wm_max_threads = 40;
+ brw->vs_max_threads = 60;
+ brw->urb.size = 64; /* volume 5c.5 section 5.1 */
+ brw->urb.max_vs_handles = 128; /* volume 2a (see 3DSTATE_URB) */
+ } else {
+ brw->wm_max_threads = 40;
+ brw->vs_max_threads = 24;
+ brw->urb.size = 32; /* volume 5c.5 section 5.1 */
+ brw->urb.max_vs_handles = 256; /* volume 2a (see 3DSTATE_URB) */
+ }
} else if (intel->gen == 5) {
brw->urb.size = 1024;
brw->vs_max_threads = 72;
diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h
index 7b0551a92bc..1daa49abfb3 100644
--- a/src/mesa/drivers/dri/i965/brw_context.h
+++ b/src/mesa/drivers/dri/i965/brw_context.h
@@ -139,7 +139,7 @@ struct brw_context;
* by any 3D rendering.
*/
#define BRW_NEW_BATCH 0x10000
-/** brw->depth_region updated */
+/** \see brw.state.depth_region */
#define BRW_NEW_DEPTH_BUFFER 0x20000
#define BRW_NEW_NR_WM_SURFACES 0x40000
#define BRW_NEW_NR_VS_SURFACES 0x80000
@@ -464,8 +464,27 @@ struct brw_context
struct {
struct brw_state_flags dirty;
+ /**
+ * \name Cached region pointers
+ *
+ * When the draw buffer is updated, often the depth buffer is not
+ * changed. Caching the pointer to the buffer's region allows us to
+ * detect when the buffer has in fact changed, and allows us to avoid
+ * updating the buffer's GPU state when it has not.
+ *
+ * The original of each cached pointer is an instance of
+ * \c intel_renderbuffer.region.
+ *
+ * \see brw_set_draw_region()
+ *
+ * \{
+ */
+
+ /** \see struct brw_tracked_state brw_depthbuffer */
struct intel_region *depth_region;
+ /** \} */
+
/**
* List of buffers accumulated in brw_validate_state to receive
* drm_intel_bo_check_aperture treatment before exec, so we can
@@ -549,18 +568,21 @@ struct brw_context
GLboolean constrained;
+ GLuint max_vs_handles; /* Maximum number of VS handles */
+ GLuint max_gs_handles; /* Maximum number of GS handles */
+
GLuint nr_vs_entries;
GLuint nr_gs_entries;
GLuint nr_clip_entries;
GLuint nr_sf_entries;
GLuint nr_cs_entries;
- /* gen6 */
+ /* gen6:
+ * The length of each URB entry owned by the VS (or GS), as
+ * a number of 1024-bit (128-byte) rows. Should be >= 1.
+ */
GLuint vs_size;
-/* GLuint gs_size; */
-/* GLuint clip_size; */
-/* GLuint sf_size; */
-/* GLuint cs_size; */
+ GLuint gs_size;
GLuint vs_start;
GLuint gs_start;
@@ -639,7 +661,9 @@ struct brw_context
drm_intel_bo *prog_bo;
drm_intel_bo *state_bo;
+ uint32_t state_offset;
drm_intel_bo *vp_bo;
+ uint32_t vp_offset;
} sf;
struct {
diff --git a/src/mesa/drivers/dri/i965/brw_defines.h b/src/mesa/drivers/dri/i965/brw_defines.h
index 6c61aefd7d3..effcb6c1c4a 100644
--- a/src/mesa/drivers/dri/i965/brw_defines.h
+++ b/src/mesa/drivers/dri/i965/brw_defines.h
@@ -43,6 +43,12 @@
#define PIPE_CONTROL_GTTWRITE_PROCESS_LOCAL 0x00
#define PIPE_CONTROL_GTTWRITE_GLOBAL 0x01
+#define CMD_3D_PRIM 0x7b00 /* 3DPRIMITIVE */
+/* DW0 */
+# define GEN4_3DPRIM_TOPOLOGY_TYPE_SHIFT 10
+# define GEN4_3DPRIM_VERTEXBUFFER_ACCESS_SEQUENTIAL (0 << 15)
+# define GEN4_3DPRIM_VERTEXBUFFER_ACCESS_RANDOM (1 << 15)
+
#define _3DPRIM_POINTLIST 0x01
#define _3DPRIM_LINELIST 0x02
#define _3DPRIM_LINESTRIP 0x03
@@ -65,9 +71,6 @@
#define _3DPRIM_LINESTRIP_CONT_BF 0x14
#define _3DPRIM_TRIFAN_NOSTIPPLE 0x15
-#define _3DPRIM_VERTEXBUFFER_ACCESS_SEQUENTIAL 0
-#define _3DPRIM_VERTEXBUFFER_ACCESS_RANDOM 1
-
#define BRW_ANISORATIO_2 0
#define BRW_ANISORATIO_4 1
#define BRW_ANISORATIO_6 2
@@ -147,6 +150,7 @@
#define BRW_DEPTHFORMAT_D32_FLOAT_S8X24_UINT 0
#define BRW_DEPTHFORMAT_D32_FLOAT 1
#define BRW_DEPTHFORMAT_D24_UNORM_S8_UINT 2
+#define BRW_DEPTHFORMAT_D24_UNORM_X8_UINT 3 /* GEN5 */
#define BRW_DEPTHFORMAT_D16_UNORM 5
#define BRW_FLOATING_POINT_IEEE_754 0
@@ -1131,8 +1135,6 @@
#define CMD_PIPE_CONTROL 0x7a00
-#define CMD_3D_PRIM 0x7b00
-
#define CMD_MI_FLUSH 0x0200
diff --git a/src/mesa/drivers/dri/i965/brw_draw.c b/src/mesa/drivers/dri/i965/brw_draw.c
index f5abe021c43..2db70c543ea 100644
--- a/src/mesa/drivers/dri/i965/brw_draw.c
+++ b/src/mesa/drivers/dri/i965/brw_draw.c
@@ -129,30 +129,31 @@ static void brw_emit_prim(struct brw_context *brw,
const struct _mesa_prim *prim,
uint32_t hw_prim)
{
- struct brw_3d_primitive prim_packet;
struct intel_context *intel = &brw->intel;
+ int verts_per_instance;
+ int vertex_access_type;
+ int start_vertex_location;
+ int base_vertex_location;
DBG("PRIM: %s %d %d\n", _mesa_lookup_enum_by_nr(prim->mode),
prim->start, prim->count);
- prim_packet.header.opcode = CMD_3D_PRIM;
- prim_packet.header.length = sizeof(prim_packet)/4 - 2;
- prim_packet.header.pad = 0;
- prim_packet.header.topology = hw_prim;
- prim_packet.header.indexed = prim->indexed;
-
- prim_packet.verts_per_instance = trim(prim->mode, prim->count);
- prim_packet.start_vert_location = prim->start;
- if (prim->indexed)
- prim_packet.start_vert_location += brw->ib.start_vertex_offset;
- else
- prim_packet.start_vert_location += brw->vb.start_vertex_bias;
- prim_packet.instance_count = 1;
- prim_packet.start_instance_location = 0;
- prim_packet.base_vert_location = prim->basevertex;
- if (prim->indexed)
- prim_packet.base_vert_location += brw->vb.start_vertex_bias;
+ start_vertex_location = prim->start;
+ base_vertex_location = prim->basevertex;
+ if (prim->indexed) {
+ vertex_access_type = GEN4_3DPRIM_VERTEXBUFFER_ACCESS_RANDOM;
+ start_vertex_location += brw->ib.start_vertex_offset;
+ base_vertex_location += brw->vb.start_vertex_bias;
+ } else {
+ vertex_access_type = GEN4_3DPRIM_VERTEXBUFFER_ACCESS_SEQUENTIAL;
+ start_vertex_location += brw->vb.start_vertex_bias;
+ }
+
+ verts_per_instance = trim(prim->mode, prim->count);
+ /* If nothing to emit, just return. */
+ if (verts_per_instance == 0)
+ return;
/* If we're set to always flush, do it before and after the primitive emit.
* We want to catch both missed flushes that hurt instruction/state cache
@@ -162,10 +163,18 @@ static void brw_emit_prim(struct brw_context *brw,
if (intel->always_flush_cache) {
intel_batchbuffer_emit_mi_flush(intel);
}
- if (prim_packet.verts_per_instance) {
- intel_batchbuffer_data(&brw->intel, &prim_packet,
- sizeof(prim_packet), false);
- }
+
+ BEGIN_BATCH(6);
+ OUT_BATCH(CMD_3D_PRIM << 16 | (6 - 2) |
+ hw_prim << GEN4_3DPRIM_TOPOLOGY_TYPE_SHIFT |
+ vertex_access_type);
+ OUT_BATCH(verts_per_instance);
+ OUT_BATCH(start_vertex_location);
+ OUT_BATCH(1); // instance count
+ OUT_BATCH(0); // start instance location
+ OUT_BATCH(base_vertex_location);
+ ADVANCE_BATCH();
+
if (intel->always_flush_cache) {
intel_batchbuffer_emit_mi_flush(intel);
}
@@ -271,20 +280,20 @@ static GLboolean check_fallbacks( struct brw_context *brw,
struct gl_texture_unit *texUnit = &ctx->Texture.Unit[u];
if (texUnit->Enabled) {
if (texUnit->Enabled & TEXTURE_1D_BIT) {
- if (texUnit->CurrentTex[TEXTURE_1D_INDEX]->WrapS == GL_CLAMP) {
+ if (texUnit->CurrentTex[TEXTURE_1D_INDEX]->Sampler.WrapS == GL_CLAMP) {
return GL_TRUE;
}
}
if (texUnit->Enabled & TEXTURE_2D_BIT) {
- if (texUnit->CurrentTex[TEXTURE_2D_INDEX]->WrapS == GL_CLAMP ||
- texUnit->CurrentTex[TEXTURE_2D_INDEX]->WrapT == GL_CLAMP) {
+ if (texUnit->CurrentTex[TEXTURE_2D_INDEX]->Sampler.WrapS == GL_CLAMP ||
+ texUnit->CurrentTex[TEXTURE_2D_INDEX]->Sampler.WrapT == GL_CLAMP) {
return GL_TRUE;
}
}
if (texUnit->Enabled & TEXTURE_3D_BIT) {
- if (texUnit->CurrentTex[TEXTURE_3D_INDEX]->WrapS == GL_CLAMP ||
- texUnit->CurrentTex[TEXTURE_3D_INDEX]->WrapT == GL_CLAMP ||
- texUnit->CurrentTex[TEXTURE_3D_INDEX]->WrapR == GL_CLAMP) {
+ if (texUnit->CurrentTex[TEXTURE_3D_INDEX]->Sampler.WrapS == GL_CLAMP ||
+ texUnit->CurrentTex[TEXTURE_3D_INDEX]->Sampler.WrapT == GL_CLAMP ||
+ texUnit->CurrentTex[TEXTURE_3D_INDEX]->Sampler.WrapR == GL_CLAMP) {
return GL_TRUE;
}
}
diff --git a/src/mesa/drivers/dri/i965/brw_draw_upload.c b/src/mesa/drivers/dri/i965/brw_draw_upload.c
index f1d00693168..9389eb6733f 100644
--- a/src/mesa/drivers/dri/i965/brw_draw_upload.c
+++ b/src/mesa/drivers/dri/i965/brw_draw_upload.c
@@ -575,7 +575,7 @@ static void brw_emit_vertices(struct brw_context *brw)
if (intel->gen >= 5) {
OUT_RELOC(buffer->bo, I915_GEM_DOMAIN_VERTEX, 0, buffer->bo->size - 1);
} else
- OUT_BATCH(buffer->bo->size / buffer->stride);
+ OUT_BATCH(0);
OUT_BATCH(0); /* Instance data step rate */
brw->vb.current_buffers[i].handle = buffer->bo->handle;
diff --git a/src/mesa/drivers/dri/i965/brw_eu.c b/src/mesa/drivers/dri/i965/brw_eu.c
index 3b5c4c071e3..7e63482d8fa 100644
--- a/src/mesa/drivers/dri/i965/brw_eu.c
+++ b/src/mesa/drivers/dri/i965/brw_eu.c
@@ -34,6 +34,28 @@
#include "brw_defines.h"
#include "brw_eu.h"
+/* Returns the corresponding conditional mod for swapping src0 and
+ * src1 in e.g. CMP.
+ */
+uint32_t
+brw_swap_cmod(uint32_t cmod)
+{
+ switch (cmod) {
+ case BRW_CONDITIONAL_Z:
+ case BRW_CONDITIONAL_NZ:
+ return cmod;
+ case BRW_CONDITIONAL_G:
+ return BRW_CONDITIONAL_LE;
+ case BRW_CONDITIONAL_GE:
+ return BRW_CONDITIONAL_L;
+ case BRW_CONDITIONAL_L:
+ return BRW_CONDITIONAL_GE;
+ case BRW_CONDITIONAL_LE:
+ return BRW_CONDITIONAL_G;
+ default:
+ return ~0;
+ }
+}
/* How does predicate control work when execution_size != 8? Do I
@@ -60,6 +82,11 @@ void brw_set_predicate_control( struct brw_compile *p, GLuint pc )
p->current->header.predicate_control = pc;
}
+void brw_set_predicate_inverse(struct brw_compile *p, bool predicate_inverse)
+{
+ p->current->header.predicate_inverse = predicate_inverse;
+}
+
void brw_set_conditionalmod( struct brw_compile *p, GLuint conditional )
{
p->current->header.destreg__conditionalmod = conditional;
diff --git a/src/mesa/drivers/dri/i965/brw_eu.h b/src/mesa/drivers/dri/i965/brw_eu.h
index 2d2ed9de985..718b3800423 100644
--- a/src/mesa/drivers/dri/i965/brw_eu.h
+++ b/src/mesa/drivers/dri/i965/brw_eu.h
@@ -772,6 +772,7 @@ void brw_set_access_mode( struct brw_compile *p, GLuint access_mode );
void brw_set_compression_control( struct brw_compile *p, GLboolean control );
void brw_set_predicate_control_flag_value( struct brw_compile *p, GLuint value );
void brw_set_predicate_control( struct brw_compile *p, GLuint pc );
+void brw_set_predicate_inverse(struct brw_compile *p, bool predicate_inverse);
void brw_set_conditionalmod( struct brw_compile *p, GLuint conditional );
void brw_set_acc_write_control(struct brw_compile *p, GLuint value);
@@ -1017,6 +1018,8 @@ void brw_set_src1( struct brw_instruction *insn,
void brw_set_uip_jip(struct brw_compile *p);
+uint32_t brw_swap_cmod(uint32_t cmod);
+
/* brw_optimize.c */
void brw_optimize(struct brw_compile *p);
void brw_remove_duplicate_mrf_moves(struct brw_compile *p);
diff --git a/src/mesa/drivers/dri/i965/brw_eu_emit.c b/src/mesa/drivers/dri/i965/brw_eu_emit.c
index 21ce92c9173..71485cd1f71 100644
--- a/src/mesa/drivers/dri/i965/brw_eu_emit.c
+++ b/src/mesa/drivers/dri/i965/brw_eu_emit.c
@@ -52,6 +52,34 @@ static void guess_execution_size(struct brw_compile *p,
}
+/**
+ * Prior to Sandybridge, the SEND instruction accepted non-MRF source
+ * registers, implicitly moving the operand to a message register.
+ *
+ * On Sandybridge, this is no longer the case. This function performs the
+ * explicit move; it should be called before emitting a SEND instruction.
+ */
+static void
+gen6_resolve_implied_move(struct brw_compile *p,
+ struct brw_reg *src,
+ GLuint msg_reg_nr)
+{
+ struct intel_context *intel = &p->brw->intel;
+ if (intel->gen != 6)
+ return;
+
+ if (src->file != BRW_ARCHITECTURE_REGISTER_FILE || src->nr != BRW_ARF_NULL) {
+ brw_push_insn_state(p);
+ brw_set_mask_control(p, BRW_MASK_DISABLE);
+ brw_set_compression_control(p, BRW_COMPRESSION_NONE);
+ brw_MOV(p, retype(brw_message_reg(msg_reg_nr), BRW_REGISTER_TYPE_UD),
+ retype(*src, BRW_REGISTER_TYPE_UD));
+ brw_pop_insn_state(p);
+ }
+ *src = brw_message_reg(msg_reg_nr);
+}
+
+
static void brw_set_dest(struct brw_compile *p,
struct brw_instruction *insn,
struct brw_reg dest)
@@ -468,10 +496,9 @@ static void brw_set_dp_write_message( struct brw_context *brw,
insn->bits3.dp_render_cache.response_length = response_length;
insn->bits3.dp_render_cache.msg_length = msg_length;
insn->bits3.dp_render_cache.end_of_thread = end_of_thread;
+
+ /* We always use the render cache for write messages */
insn->header.destreg__conditionalmod = BRW_MESSAGE_TARGET_DATAPORT_WRITE;
- /* XXX really need below? */
- insn->bits2.send_gen5.sfid = BRW_MESSAGE_TARGET_DATAPORT_WRITE;
- insn->bits2.send_gen5.end_of_thread = end_of_thread;
} else if (intel->gen == 5) {
insn->bits3.dp_write_gen5.binding_table_index = binding_table_index;
insn->bits3.dp_write_gen5.msg_control = msg_control;
@@ -511,6 +538,13 @@ brw_set_dp_read_message(struct brw_context *brw,
brw_set_src1(insn, brw_imm_d(0));
if (intel->gen >= 6) {
+ uint32_t target_function;
+
+ if (target_cache == BRW_DATAPORT_READ_TARGET_DATA_CACHE)
+ target_function = BRW_MESSAGE_TARGET_DATAPORT_READ; /* data cache */
+ else
+ target_function = BRW_MESSAGE_TARGET_DATAPORT_WRITE; /* render cache */
+
insn->bits3.dp_render_cache.binding_table_index = binding_table_index;
insn->bits3.dp_render_cache.msg_control = msg_control;
insn->bits3.dp_render_cache.pixel_scoreboard_clear = 0;
@@ -520,10 +554,7 @@ brw_set_dp_read_message(struct brw_context *brw,
insn->bits3.dp_render_cache.response_length = response_length;
insn->bits3.dp_render_cache.msg_length = msg_length;
insn->bits3.dp_render_cache.end_of_thread = 0;
- insn->header.destreg__conditionalmod = BRW_MESSAGE_TARGET_DATAPORT_READ;
- /* XXX really need below? */
- insn->bits2.send_gen5.sfid = BRW_MESSAGE_TARGET_DATAPORT_READ;
- insn->bits2.send_gen5.end_of_thread = 0;
+ insn->header.destreg__conditionalmod = target_function;
} else if (intel->gen == 5) {
insn->bits3.dp_read_gen5.binding_table_index = binding_table_index;
insn->bits3.dp_read_gen5.msg_control = msg_control;
@@ -1458,9 +1489,12 @@ void brw_oword_block_write_scratch(struct brw_compile *p,
GLuint offset)
{
struct intel_context *intel = &p->brw->intel;
- uint32_t msg_control;
+ uint32_t msg_control, msg_type;
int mlen;
+ if (intel->gen >= 6)
+ offset /= 16;
+
mrf = retype(mrf, BRW_REGISTER_TYPE_UD);
if (num_regs == 1) {
@@ -1526,13 +1560,22 @@ void brw_oword_block_write_scratch(struct brw_compile *p,
}
brw_set_dest(p, insn, dest);
- brw_set_src0(insn, brw_null_reg());
+ if (intel->gen >= 6) {
+ brw_set_src0(insn, mrf);
+ } else {
+ brw_set_src0(insn, brw_null_reg());
+ }
+
+ if (intel->gen >= 6)
+ msg_type = GEN6_DATAPORT_WRITE_MESSAGE_OWORD_BLOCK_WRITE;
+ else
+ msg_type = BRW_DATAPORT_WRITE_MESSAGE_OWORD_BLOCK_WRITE;
brw_set_dp_write_message(p->brw,
insn,
255, /* binding table index (255=stateless) */
msg_control,
- BRW_DATAPORT_WRITE_MESSAGE_OWORD_BLOCK_WRITE, /* msg_type */
+ msg_type,
mlen,
GL_TRUE, /* header_present */
0, /* pixel scoreboard */
@@ -1557,9 +1600,13 @@ brw_oword_block_read_scratch(struct brw_compile *p,
int num_regs,
GLuint offset)
{
+ struct intel_context *intel = &p->brw->intel;
uint32_t msg_control;
int rlen;
+ if (intel->gen >= 6)
+ offset /= 16;
+
mrf = retype(mrf, BRW_REGISTER_TYPE_UD);
dest = retype(dest, BRW_REGISTER_TYPE_UW);
@@ -1596,14 +1643,18 @@ brw_oword_block_read_scratch(struct brw_compile *p,
insn->header.destreg__conditionalmod = mrf.nr;
brw_set_dest(p, insn, dest); /* UW? */
- brw_set_src0(insn, brw_null_reg());
+ if (intel->gen >= 6) {
+ brw_set_src0(insn, mrf);
+ } else {
+ brw_set_src0(insn, brw_null_reg());
+ }
brw_set_dp_read_message(p->brw,
insn,
255, /* binding table index (255=stateless) */
msg_control,
BRW_DATAPORT_READ_MESSAGE_OWORD_BLOCK_READ, /* msg_type */
- 1, /* target cache (render/scratch) */
+ BRW_DATAPORT_READ_TARGET_RENDER_CACHE,
1, /* msg_length */
rlen);
}
@@ -1771,6 +1822,7 @@ void brw_dp_READ_4_vs_relative(struct brw_compile *p,
GLuint bind_table_index)
{
struct intel_context *intel = &p->brw->intel;
+ struct brw_reg src = brw_vec8_grf(0, 0);
int msg_type;
/* Setup MRF[1] with offset into const buffer */
@@ -1787,6 +1839,7 @@ void brw_dp_READ_4_vs_relative(struct brw_compile *p,
addr_reg, brw_imm_d(offset));
brw_pop_insn_state(p);
+ gen6_resolve_implied_move(p, &src, 0);
struct brw_instruction *insn = next_insn(p, BRW_OPCODE_SEND);
insn->header.predicate_control = BRW_PREDICATE_NONE;
@@ -1795,7 +1848,7 @@ void brw_dp_READ_4_vs_relative(struct brw_compile *p,
insn->header.mask_control = BRW_MASK_DISABLE;
brw_set_dest(p, insn, dest);
- brw_set_src0(insn, brw_vec8_grf(0, 0));
+ brw_set_src0(insn, src);
if (intel->gen == 6)
msg_type = GEN6_DATAPORT_READ_MESSAGE_OWORD_DUAL_BLOCK_READ;
@@ -1809,7 +1862,7 @@ void brw_dp_READ_4_vs_relative(struct brw_compile *p,
bind_table_index,
BRW_DATAPORT_OWORD_DUAL_BLOCK_1OWORD,
msg_type,
- 0, /* source cache = data cache */
+ BRW_DATAPORT_READ_TARGET_DATA_CACHE,
2, /* msg_length */
1); /* response_length */
}
@@ -1966,20 +2019,7 @@ void brw_SAMPLE(struct brw_compile *p,
{
struct brw_instruction *insn;
- /* Sandybridge doesn't have the implied move for SENDs,
- * and the first message register index comes from src0.
- */
- if (intel->gen >= 6) {
- if (src0.file != BRW_ARCHITECTURE_REGISTER_FILE ||
- src0.nr != BRW_ARF_NULL) {
- brw_push_insn_state(p);
- brw_set_mask_control( p, BRW_MASK_DISABLE );
- brw_set_compression_control(p, BRW_COMPRESSION_NONE);
- brw_MOV(p, retype(brw_message_reg(msg_reg_nr), src0.type), src0);
- brw_pop_insn_state(p);
- }
- src0 = brw_message_reg(msg_reg_nr);
- }
+ gen6_resolve_implied_move(p, &src0, msg_reg_nr);
insn = next_insn(p, BRW_OPCODE_SEND);
insn->header.predicate_control = 0; /* XXX */
@@ -2034,17 +2074,7 @@ void brw_urb_WRITE(struct brw_compile *p,
struct intel_context *intel = &p->brw->intel;
struct brw_instruction *insn;
- /* Sandybridge doesn't have the implied move for SENDs,
- * and the first message register index comes from src0.
- */
- if (intel->gen >= 6) {
- brw_push_insn_state(p);
- brw_set_mask_control( p, BRW_MASK_DISABLE );
- brw_MOV(p, retype(brw_message_reg(msg_reg_nr), BRW_REGISTER_TYPE_UD),
- retype(src0, BRW_REGISTER_TYPE_UD));
- brw_pop_insn_state(p);
- src0 = brw_message_reg(msg_reg_nr);
- }
+ gen6_resolve_implied_move(p, &src0, msg_reg_nr);
insn = next_insn(p, BRW_OPCODE_SEND);
@@ -2154,17 +2184,7 @@ void brw_ff_sync(struct brw_compile *p,
struct intel_context *intel = &p->brw->intel;
struct brw_instruction *insn;
- /* Sandybridge doesn't have the implied move for SENDs,
- * and the first message register index comes from src0.
- */
- if (intel->gen >= 6) {
- brw_push_insn_state(p);
- brw_set_mask_control( p, BRW_MASK_DISABLE );
- brw_MOV(p, retype(brw_message_reg(msg_reg_nr), BRW_REGISTER_TYPE_UD),
- retype(src0, BRW_REGISTER_TYPE_UD));
- brw_pop_insn_state(p);
- src0 = brw_message_reg(msg_reg_nr);
- }
+ gen6_resolve_implied_move(p, &src0, msg_reg_nr);
insn = next_insn(p, BRW_OPCODE_SEND);
brw_set_dest(p, insn, dest);
diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
index 8b3f5adb9f9..5426925e372 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
@@ -177,6 +177,23 @@ type_size(const struct glsl_type *type)
}
}
+void
+fs_visitor::fail(const char *format, ...)
+{
+ if (!failed) {
+ failed = true;
+
+ if (INTEL_DEBUG & DEBUG_WM) {
+ fprintf(stderr, "FS compile failed: ");
+
+ va_list va;
+ va_start(va, format);
+ vfprintf(stderr, format, va);
+ va_end(va);
+ }
+ }
+}
+
/**
* Returns how many MRFs an FS opcode will write over.
*
@@ -382,60 +399,32 @@ fs_visitor::setup_uniform_values(int loc, const glsl_type *type)
void
fs_visitor::setup_builtin_uniform_values(ir_variable *ir)
{
- const struct gl_builtin_uniform_desc *statevar = NULL;
-
- for (unsigned int i = 0; _mesa_builtin_uniform_desc[i].name; i++) {
- statevar = &_mesa_builtin_uniform_desc[i];
- if (strcmp(ir->name, _mesa_builtin_uniform_desc[i].name) == 0)
- break;
- }
-
- if (!statevar->name) {
- this->fail = true;
- printf("Failed to find builtin uniform `%s'\n", ir->name);
- return;
- }
-
- int array_count;
- if (ir->type->is_array()) {
- array_count = ir->type->length;
- } else {
- array_count = 1;
- }
+ const ir_state_slot *const slots = ir->state_slots;
+ assert(ir->state_slots != NULL);
- for (int a = 0; a < array_count; a++) {
- for (unsigned int i = 0; i < statevar->num_elements; i++) {
- struct gl_builtin_uniform_element *element = &statevar->elements[i];
- int tokens[STATE_LENGTH];
-
- memcpy(tokens, element->tokens, sizeof(element->tokens));
- if (ir->type->is_array()) {
- tokens[1] = a;
- }
-
- /* This state reference has already been setup by ir_to_mesa,
- * but we'll get the same index back here.
- */
- int index = _mesa_add_state_reference(this->fp->Base.Parameters,
- (gl_state_index *)tokens);
+ for (unsigned int i = 0; i < ir->num_state_slots; i++) {
+ /* This state reference has already been setup by ir_to_mesa, but we'll
+ * get the same index back here.
+ */
+ int index = _mesa_add_state_reference(this->fp->Base.Parameters,
+ (gl_state_index *)slots[i].tokens);
- /* Add each of the unique swizzles of the element as a
- * parameter. This'll end up matching the expected layout of
- * the array/matrix/structure we're trying to fill in.
- */
- int last_swiz = -1;
- for (unsigned int i = 0; i < 4; i++) {
- int swiz = GET_SWZ(element->swizzle, i);
- if (swiz == last_swiz)
- break;
- last_swiz = swiz;
+ /* Add each of the unique swizzles of the element as a parameter.
+ * This'll end up matching the expected layout of the
+ * array/matrix/structure we're trying to fill in.
+ */
+ int last_swiz = -1;
+ for (unsigned int j = 0; j < 4; j++) {
+ int swiz = GET_SWZ(slots[i].swizzle, j);
+ if (swiz == last_swiz)
+ break;
+ last_swiz = swiz;
- c->prog_data.param_convert[c->prog_data.nr_params] =
- PARAM_NO_CONVERT;
- this->param_index[c->prog_data.nr_params] = index;
- this->param_offset[c->prog_data.nr_params] = swiz;
- c->prog_data.nr_params++;
- }
+ c->prog_data.param_convert[c->prog_data.nr_params] =
+ PARAM_NO_CONVERT;
+ this->param_index[c->prog_data.nr_params] = index;
+ this->param_offset[c->prog_data.nr_params] = swiz;
+ c->prog_data.nr_params++;
}
}
}
@@ -451,15 +440,15 @@ fs_visitor::emit_fragcoord_interpolation(ir_variable *ir)
/* gl_FragCoord.x */
if (ir->pixel_center_integer) {
- emit(fs_inst(BRW_OPCODE_MOV, wpos, this->pixel_x));
+ emit(BRW_OPCODE_MOV, wpos, this->pixel_x);
} else {
- emit(fs_inst(BRW_OPCODE_ADD, wpos, this->pixel_x, fs_reg(0.5f)));
+ emit(BRW_OPCODE_ADD, wpos, this->pixel_x, fs_reg(0.5f));
}
wpos.reg_offset++;
/* gl_FragCoord.y */
if (!flip && ir->pixel_center_integer) {
- emit(fs_inst(BRW_OPCODE_MOV, wpos, this->pixel_y));
+ emit(BRW_OPCODE_MOV, wpos, this->pixel_y);
} else {
fs_reg pixel_y = this->pixel_y;
float offset = (ir->pixel_center_integer ? 0.0 : 0.5);
@@ -469,22 +458,22 @@ fs_visitor::emit_fragcoord_interpolation(ir_variable *ir)
offset += c->key.drawable_height - 1.0;
}
- emit(fs_inst(BRW_OPCODE_ADD, wpos, pixel_y, fs_reg(offset)));
+ emit(BRW_OPCODE_ADD, wpos, pixel_y, fs_reg(offset));
}
wpos.reg_offset++;
/* gl_FragCoord.z */
if (intel->gen >= 6) {
- emit(fs_inst(BRW_OPCODE_MOV, wpos,
- fs_reg(brw_vec8_grf(c->source_depth_reg, 0))));
+ emit(BRW_OPCODE_MOV, wpos,
+ fs_reg(brw_vec8_grf(c->source_depth_reg, 0)));
} else {
- emit(fs_inst(FS_OPCODE_LINTERP, wpos, this->delta_x, this->delta_y,
- interp_reg(FRAG_ATTRIB_WPOS, 2)));
+ emit(FS_OPCODE_LINTERP, wpos, this->delta_x, this->delta_y,
+ interp_reg(FRAG_ATTRIB_WPOS, 2));
}
wpos.reg_offset++;
/* gl_FragCoord.w: Already set up in emit_interpolation */
- emit(fs_inst(BRW_OPCODE_MOV, wpos, this->wpos_w));
+ emit(BRW_OPCODE_MOV, wpos, this->wpos_w);
return reg;
}
@@ -503,7 +492,7 @@ fs_visitor::emit_general_interpolation(ir_variable *ir)
if (ir->type->is_array()) {
array_elements = ir->type->length;
if (array_elements == 0) {
- this->fail = true;
+ fail("dereferenced array '%s' has length 0\n", ir->name);
}
type = ir->type->fields.array;
} else {
@@ -523,37 +512,33 @@ fs_visitor::emit_general_interpolation(ir_variable *ir)
continue;
}
- if (c->key.flat_shade && (location == FRAG_ATTRIB_COL0 ||
- location == FRAG_ATTRIB_COL1)) {
+ bool is_gl_Color =
+ location == FRAG_ATTRIB_COL0 || location == FRAG_ATTRIB_COL1;
+
+ if (c->key.flat_shade && is_gl_Color) {
/* Constant interpolation (flat shading) case. The SF has
* handed us defined values in only the constant offset
* field of the setup reg.
*/
- for (unsigned int c = 0; c < type->vector_elements; c++) {
- struct brw_reg interp = interp_reg(location, c);
+ for (unsigned int k = 0; k < type->vector_elements; k++) {
+ struct brw_reg interp = interp_reg(location, k);
interp = suboffset(interp, 3);
- emit(fs_inst(FS_OPCODE_CINTERP, attr, fs_reg(interp)));
+ emit(FS_OPCODE_CINTERP, attr, fs_reg(interp));
attr.reg_offset++;
}
} else {
/* Perspective interpolation case. */
- for (unsigned int c = 0; c < type->vector_elements; c++) {
- struct brw_reg interp = interp_reg(location, c);
- emit(fs_inst(FS_OPCODE_LINTERP,
- attr,
- this->delta_x,
- this->delta_y,
- fs_reg(interp)));
+ for (unsigned int k = 0; k < type->vector_elements; k++) {
+ struct brw_reg interp = interp_reg(location, k);
+ emit(FS_OPCODE_LINTERP, attr,
+ this->delta_x, this->delta_y, fs_reg(interp));
attr.reg_offset++;
}
- if (intel->gen < 6) {
+ if (intel->gen < 6 && !(is_gl_Color && c->key.linear_color)) {
attr.reg_offset -= type->vector_elements;
- for (unsigned int c = 0; c < type->vector_elements; c++) {
- emit(fs_inst(BRW_OPCODE_MUL,
- attr,
- attr,
- this->pixel_w));
+ for (unsigned int k = 0; k < type->vector_elements; k++) {
+ emit(BRW_OPCODE_MUL, attr, attr, this->pixel_w);
attr.reg_offset++;
}
}
@@ -572,28 +557,21 @@ fs_visitor::emit_frontfacing_interpolation(ir_variable *ir)
/* The frontfacing comes in as a bit in the thread payload. */
if (intel->gen >= 6) {
- emit(fs_inst(BRW_OPCODE_ASR,
- *reg,
- fs_reg(retype(brw_vec1_grf(0, 0), BRW_REGISTER_TYPE_D)),
- fs_reg(15)));
- emit(fs_inst(BRW_OPCODE_NOT,
- *reg,
- *reg));
- emit(fs_inst(BRW_OPCODE_AND,
- *reg,
- *reg,
- fs_reg(1)));
+ emit(BRW_OPCODE_ASR, *reg,
+ fs_reg(retype(brw_vec1_grf(0, 0), BRW_REGISTER_TYPE_D)),
+ fs_reg(15));
+ emit(BRW_OPCODE_NOT, *reg, *reg);
+ emit(BRW_OPCODE_AND, *reg, *reg, fs_reg(1));
} else {
struct brw_reg r1_6ud = retype(brw_vec1_grf(1, 6), BRW_REGISTER_TYPE_UD);
/* bit 31 is "primitive is back face", so checking < (1 << 31) gives
* us front face
*/
- fs_inst *inst = emit(fs_inst(BRW_OPCODE_CMP,
- *reg,
- fs_reg(r1_6ud),
- fs_reg(1u << 31)));
+ fs_inst *inst = emit(BRW_OPCODE_CMP, *reg,
+ fs_reg(r1_6ud),
+ fs_reg(1u << 31));
inst->conditional_mod = BRW_CONDITIONAL_L;
- emit(fs_inst(BRW_OPCODE_AND, *reg, *reg, fs_reg(1u)));
+ emit(BRW_OPCODE_AND, *reg, *reg, fs_reg(1u));
}
return reg;
@@ -628,11 +606,11 @@ fs_visitor::emit_math(fs_opcodes opcode, fs_reg dst, fs_reg src)
src.abs ||
src.negate)) {
fs_reg expanded = fs_reg(this, glsl_type::float_type);
- emit(fs_inst(BRW_OPCODE_MOV, expanded, src));
+ emit(BRW_OPCODE_MOV, expanded, src);
src = expanded;
}
- fs_inst *inst = emit(fs_inst(opcode, dst, src));
+ fs_inst *inst = emit(opcode, dst, src);
if (intel->gen < 6) {
inst->base_mrf = 2;
@@ -658,20 +636,20 @@ fs_visitor::emit_math(fs_opcodes opcode, fs_reg dst, fs_reg src0, fs_reg src1)
*/
if (src0.file == UNIFORM || src0.abs || src0.negate) {
fs_reg expanded = fs_reg(this, glsl_type::float_type);
- emit(fs_inst(BRW_OPCODE_MOV, expanded, src0));
+ emit(BRW_OPCODE_MOV, expanded, src0);
src0 = expanded;
}
if (src1.file == UNIFORM || src1.abs || src1.negate) {
fs_reg expanded = fs_reg(this, glsl_type::float_type);
- emit(fs_inst(BRW_OPCODE_MOV, expanded, src1));
+ emit(BRW_OPCODE_MOV, expanded, src1);
src1 = expanded;
}
- inst = emit(fs_inst(opcode, dst, src0, src1));
+ inst = emit(opcode, dst, src0, src1);
} else {
- emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + 1), src1));
- inst = emit(fs_inst(opcode, dst, src0, reg_null_f));
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + 1), src1);
+ inst = emit(opcode, dst, src0, reg_null_f);
inst->base_mrf = base_mrf;
inst->mlen = 2;
@@ -788,7 +766,7 @@ fs_visitor::try_emit_saturate(ir_expression *ir)
fs_reg src = this->result;
this->result = fs_reg(this, ir->type);
- fs_inst *inst = emit(fs_inst(BRW_OPCODE_MOV, this->result, src));
+ fs_inst *inst = emit(BRW_OPCODE_MOV, this->result, src);
inst->saturate = true;
return true;
@@ -834,9 +812,8 @@ fs_visitor::visit(ir_expression *ir)
ir->operands[operand]->accept(this);
if (this->result.file == BAD_FILE) {
ir_print_visitor v;
- printf("Failed to get tree for expression operand:\n");
+ fail("Failed to get tree for expression operand:\n");
ir->operands[operand]->accept(&v);
- this->fail = true;
}
op[operand] = this->result;
@@ -859,7 +836,7 @@ fs_visitor::visit(ir_expression *ir)
/* Note that BRW_OPCODE_NOT is not appropriate here, since it is
* ones complement of the whole register, not just bit 0.
*/
- emit(fs_inst(BRW_OPCODE_XOR, this->result, op[0], fs_reg(1)));
+ emit(BRW_OPCODE_XOR, this->result, op[0], fs_reg(1));
break;
case ir_unop_neg:
op[0].negate = !op[0].negate;
@@ -873,16 +850,16 @@ fs_visitor::visit(ir_expression *ir)
case ir_unop_sign:
temp = fs_reg(this, ir->type);
- emit(fs_inst(BRW_OPCODE_MOV, this->result, fs_reg(0.0f)));
+ emit(BRW_OPCODE_MOV, this->result, fs_reg(0.0f));
- inst = emit(fs_inst(BRW_OPCODE_CMP, reg_null_f, op[0], fs_reg(0.0f)));
+ inst = emit(BRW_OPCODE_CMP, reg_null_f, op[0], fs_reg(0.0f));
inst->conditional_mod = BRW_CONDITIONAL_G;
- inst = emit(fs_inst(BRW_OPCODE_MOV, this->result, fs_reg(1.0f)));
+ inst = emit(BRW_OPCODE_MOV, this->result, fs_reg(1.0f));
inst->predicated = true;
- inst = emit(fs_inst(BRW_OPCODE_CMP, reg_null_f, op[0], fs_reg(0.0f)));
+ inst = emit(BRW_OPCODE_CMP, reg_null_f, op[0], fs_reg(0.0f));
inst->conditional_mod = BRW_CONDITIONAL_L;
- inst = emit(fs_inst(BRW_OPCODE_MOV, this->result, fs_reg(-1.0f)));
+ inst = emit(BRW_OPCODE_MOV, this->result, fs_reg(-1.0f));
inst->predicated = true;
break;
@@ -910,21 +887,21 @@ fs_visitor::visit(ir_expression *ir)
break;
case ir_unop_dFdx:
- emit(fs_inst(FS_OPCODE_DDX, this->result, op[0]));
+ emit(FS_OPCODE_DDX, this->result, op[0]);
break;
case ir_unop_dFdy:
- emit(fs_inst(FS_OPCODE_DDY, this->result, op[0]));
+ emit(FS_OPCODE_DDY, this->result, op[0]);
break;
case ir_binop_add:
- emit(fs_inst(BRW_OPCODE_ADD, this->result, op[0], op[1]));
+ emit(BRW_OPCODE_ADD, this->result, op[0], op[1]);
break;
case ir_binop_sub:
assert(!"not reached: should be handled by ir_sub_to_add_neg");
break;
case ir_binop_mul:
- emit(fs_inst(BRW_OPCODE_MUL, this->result, op[0], op[1]));
+ emit(BRW_OPCODE_MUL, this->result, op[0], op[1]);
break;
case ir_binop_div:
assert(!"not reached: should be handled by ir_div_to_mul_rcp");
@@ -946,21 +923,21 @@ fs_visitor::visit(ir_expression *ir)
if (intel->gen < 5)
temp.type = op[0].type;
- inst = emit(fs_inst(BRW_OPCODE_CMP, temp, op[0], op[1]));
+ inst = emit(BRW_OPCODE_CMP, temp, op[0], op[1]);
inst->conditional_mod = brw_conditional_for_comparison(ir->operation);
- emit(fs_inst(BRW_OPCODE_AND, this->result, this->result, fs_reg(0x1)));
+ emit(BRW_OPCODE_AND, this->result, this->result, fs_reg(0x1));
break;
case ir_binop_logic_xor:
- emit(fs_inst(BRW_OPCODE_XOR, this->result, op[0], op[1]));
+ emit(BRW_OPCODE_XOR, this->result, op[0], op[1]);
break;
case ir_binop_logic_or:
- emit(fs_inst(BRW_OPCODE_OR, this->result, op[0], op[1]));
+ emit(BRW_OPCODE_OR, this->result, op[0], op[1]);
break;
case ir_binop_logic_and:
- emit(fs_inst(BRW_OPCODE_AND, this->result, op[0], op[1]));
+ emit(BRW_OPCODE_AND, this->result, op[0], op[1]);
break;
case ir_binop_dot:
@@ -988,7 +965,7 @@ fs_visitor::visit(ir_expression *ir)
case ir_unop_b2f:
case ir_unop_b2i:
case ir_unop_f2i:
- emit(fs_inst(BRW_OPCODE_MOV, this->result, op[0]));
+ emit(BRW_OPCODE_MOV, this->result, op[0]);
break;
case ir_unop_f2b:
case ir_unop_i2b:
@@ -997,42 +974,41 @@ fs_visitor::visit(ir_expression *ir)
if (intel->gen < 5)
temp.type = op[0].type;
- inst = emit(fs_inst(BRW_OPCODE_CMP, temp, op[0], fs_reg(0.0f)));
+ inst = emit(BRW_OPCODE_CMP, temp, op[0], fs_reg(0.0f));
inst->conditional_mod = BRW_CONDITIONAL_NZ;
- inst = emit(fs_inst(BRW_OPCODE_AND, this->result,
- this->result, fs_reg(1)));
+ inst = emit(BRW_OPCODE_AND, this->result, this->result, fs_reg(1));
break;
case ir_unop_trunc:
- emit(fs_inst(BRW_OPCODE_RNDZ, this->result, op[0]));
+ emit(BRW_OPCODE_RNDZ, this->result, op[0]);
break;
case ir_unop_ceil:
op[0].negate = !op[0].negate;
- inst = emit(fs_inst(BRW_OPCODE_RNDD, this->result, op[0]));
+ inst = emit(BRW_OPCODE_RNDD, this->result, op[0]);
this->result.negate = true;
break;
case ir_unop_floor:
- inst = emit(fs_inst(BRW_OPCODE_RNDD, this->result, op[0]));
+ inst = emit(BRW_OPCODE_RNDD, this->result, op[0]);
break;
case ir_unop_fract:
- inst = emit(fs_inst(BRW_OPCODE_FRC, this->result, op[0]));
+ inst = emit(BRW_OPCODE_FRC, this->result, op[0]);
break;
case ir_unop_round_even:
- emit(fs_inst(BRW_OPCODE_RNDE, this->result, op[0]));
+ emit(BRW_OPCODE_RNDE, this->result, op[0]);
break;
case ir_binop_min:
- inst = emit(fs_inst(BRW_OPCODE_CMP, this->result, op[0], op[1]));
+ inst = emit(BRW_OPCODE_CMP, this->result, op[0], op[1]);
inst->conditional_mod = BRW_CONDITIONAL_L;
- inst = emit(fs_inst(BRW_OPCODE_SEL, this->result, op[0], op[1]));
+ inst = emit(BRW_OPCODE_SEL, this->result, op[0], op[1]);
inst->predicated = true;
break;
case ir_binop_max:
- inst = emit(fs_inst(BRW_OPCODE_CMP, this->result, op[0], op[1]));
+ inst = emit(BRW_OPCODE_CMP, this->result, op[0], op[1]);
inst->conditional_mod = BRW_CONDITIONAL_G;
- inst = emit(fs_inst(BRW_OPCODE_SEL, this->result, op[0], op[1]));
+ inst = emit(BRW_OPCODE_SEL, this->result, op[0], op[1]);
inst->predicated = true;
break;
@@ -1041,16 +1017,16 @@ fs_visitor::visit(ir_expression *ir)
break;
case ir_unop_bit_not:
- inst = emit(fs_inst(BRW_OPCODE_NOT, this->result, op[0]));
+ inst = emit(BRW_OPCODE_NOT, this->result, op[0]);
break;
case ir_binop_bit_and:
- inst = emit(fs_inst(BRW_OPCODE_AND, this->result, op[0], op[1]));
+ inst = emit(BRW_OPCODE_AND, this->result, op[0], op[1]);
break;
case ir_binop_bit_xor:
- inst = emit(fs_inst(BRW_OPCODE_XOR, this->result, op[0], op[1]));
+ inst = emit(BRW_OPCODE_XOR, this->result, op[0], op[1]);
break;
case ir_binop_bit_or:
- inst = emit(fs_inst(BRW_OPCODE_OR, this->result, op[0], op[1]));
+ inst = emit(BRW_OPCODE_OR, this->result, op[0], op[1]);
break;
case ir_unop_u2f:
@@ -1074,7 +1050,7 @@ fs_visitor::emit_assignment_writes(fs_reg &l, fs_reg &r,
l.type = brw_type_for_base_type(type);
r.type = brw_type_for_base_type(type);
- fs_inst *inst = emit(fs_inst(BRW_OPCODE_MOV, l, r));
+ fs_inst *inst = emit(BRW_OPCODE_MOV, l, r);
inst->predicated = predicated;
l.reg_offset++;
@@ -1127,7 +1103,7 @@ fs_visitor::visit(ir_assignment *ir)
ir->lhs->type->is_vector()) {
for (int i = 0; i < ir->lhs->type->vector_elements; i++) {
if (ir->write_mask & (1 << i)) {
- inst = emit(fs_inst(BRW_OPCODE_MOV, l, r));
+ inst = emit(BRW_OPCODE_MOV, l, r);
if (ir->condition)
inst->predicated = true;
r.reg_offset++;
@@ -1152,8 +1128,7 @@ fs_visitor::emit_texture_gen4(ir_texture *ir, fs_reg dst, fs_reg coordinate)
if (ir->shadow_comparitor) {
for (int i = 0; i < ir->coordinate->type->vector_elements; i++) {
- emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen + i),
- coordinate));
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen + i), coordinate);
coordinate.reg_offset++;
}
/* gen4's SIMD8 sampler always has the slots for u,v,r present. */
@@ -1163,29 +1138,25 @@ fs_visitor::emit_texture_gen4(ir_texture *ir, fs_reg dst, fs_reg coordinate)
/* There's no plain shadow compare message, so we use shadow
* compare with a bias of 0.0.
*/
- emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen),
- fs_reg(0.0f)));
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), fs_reg(0.0f));
mlen++;
} else if (ir->op == ir_txb) {
ir->lod_info.bias->accept(this);
- emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen),
- this->result));
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result);
mlen++;
} else {
assert(ir->op == ir_txl);
ir->lod_info.lod->accept(this);
- emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen),
- this->result));
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result);
mlen++;
}
ir->shadow_comparitor->accept(this);
- emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result));
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result);
mlen++;
} else if (ir->op == ir_tex) {
for (int i = 0; i < ir->coordinate->type->vector_elements; i++) {
- emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen + i),
- coordinate));
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen + i), coordinate);
coordinate.reg_offset++;
}
/* gen4's SIMD8 sampler always has the slots for u,v,r present. */
@@ -1199,8 +1170,7 @@ fs_visitor::emit_texture_gen4(ir_texture *ir, fs_reg dst, fs_reg coordinate)
assert(ir->op == ir_txb || ir->op == ir_txl);
for (int i = 0; i < ir->coordinate->type->vector_elements; i++) {
- emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen + i * 2),
- coordinate));
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen + i * 2), coordinate);
coordinate.reg_offset++;
}
@@ -1209,13 +1179,11 @@ fs_visitor::emit_texture_gen4(ir_texture *ir, fs_reg dst, fs_reg coordinate)
if (ir->op == ir_txb) {
ir->lod_info.bias->accept(this);
- emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen),
- this->result));
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result);
mlen++;
} else {
ir->lod_info.lod->accept(this);
- emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen),
- this->result));
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result);
mlen++;
}
@@ -1236,16 +1204,16 @@ fs_visitor::emit_texture_gen4(ir_texture *ir, fs_reg dst, fs_reg coordinate)
fs_inst *inst = NULL;
switch (ir->op) {
case ir_tex:
- inst = emit(fs_inst(FS_OPCODE_TEX, dst));
+ inst = emit(FS_OPCODE_TEX, dst);
break;
case ir_txb:
- inst = emit(fs_inst(FS_OPCODE_TXB, dst));
+ inst = emit(FS_OPCODE_TXB, dst);
break;
case ir_txl:
- inst = emit(fs_inst(FS_OPCODE_TXL, dst));
+ inst = emit(FS_OPCODE_TXL, dst);
break;
case ir_txd:
- inst = emit(fs_inst(FS_OPCODE_TXD, dst));
+ inst = emit(FS_OPCODE_TXD, dst);
break;
case ir_txf:
assert(!"GLSL 1.30 features unsupported");
@@ -1256,7 +1224,7 @@ fs_visitor::emit_texture_gen4(ir_texture *ir, fs_reg dst, fs_reg coordinate)
if (simd16) {
for (int i = 0; i < 4; i++) {
- emit(fs_inst(BRW_OPCODE_MOV, orig_dst, dst));
+ emit(BRW_OPCODE_MOV, orig_dst, dst);
orig_dst.reg_offset++;
dst.reg_offset += 2;
}
@@ -1280,8 +1248,7 @@ fs_visitor::emit_texture_gen5(ir_texture *ir, fs_reg dst, fs_reg coordinate)
int base_mrf = 1;
for (int i = 0; i < ir->coordinate->type->vector_elements; i++) {
- emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen + i),
- coordinate));
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen + i), coordinate);
coordinate.reg_offset++;
}
mlen += ir->coordinate->type->vector_elements;
@@ -1290,30 +1257,30 @@ fs_visitor::emit_texture_gen5(ir_texture *ir, fs_reg dst, fs_reg coordinate)
mlen = MAX2(mlen, 5);
ir->shadow_comparitor->accept(this);
- emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result));
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result);
mlen++;
}
fs_inst *inst = NULL;
switch (ir->op) {
case ir_tex:
- inst = emit(fs_inst(FS_OPCODE_TEX, dst));
+ inst = emit(FS_OPCODE_TEX, dst);
break;
case ir_txb:
ir->lod_info.bias->accept(this);
mlen = MAX2(mlen, 5);
- emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result));
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result);
mlen++;
- inst = emit(fs_inst(FS_OPCODE_TXB, dst));
+ inst = emit(FS_OPCODE_TXB, dst);
break;
case ir_txl:
ir->lod_info.lod->accept(this);
mlen = MAX2(mlen, 5);
- emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result));
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result);
mlen++;
- inst = emit(fs_inst(FS_OPCODE_TXL, dst));
+ inst = emit(FS_OPCODE_TXL, dst);
break;
case ir_txd:
case ir_txf:
@@ -1356,14 +1323,14 @@ fs_visitor::visit(ir_texture *ir)
}
/* Explicitly set up the message header by copying g0 to msg reg m1. */
- emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, 1, BRW_REGISTER_TYPE_UD),
- fs_reg(GRF, 0, BRW_REGISTER_TYPE_UD)));
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, 1, BRW_REGISTER_TYPE_UD),
+ fs_reg(GRF, 0, BRW_REGISTER_TYPE_UD));
/* Then set the offset bits in DWord 2 of the message header. */
- emit(fs_inst(BRW_OPCODE_MOV,
- fs_reg(retype(brw_vec1_reg(BRW_MESSAGE_REGISTER_FILE, 1, 2),
- BRW_REGISTER_TYPE_UD)),
- fs_reg(brw_imm_uw(offset_bits))));
+ emit(BRW_OPCODE_MOV,
+ fs_reg(retype(brw_vec1_reg(BRW_MESSAGE_REGISTER_FILE, 1, 2),
+ BRW_REGISTER_TYPE_UD)),
+ fs_reg(brw_imm_uw(offset_bits)));
}
/* Should be lowered by do_lower_texture_projection */
@@ -1409,10 +1376,10 @@ fs_visitor::visit(ir_texture *ir)
fs_reg src = coordinate;
coordinate = dst;
- emit(fs_inst(BRW_OPCODE_MUL, dst, src, scale_x));
+ emit(BRW_OPCODE_MUL, dst, src, scale_x);
dst.reg_offset++;
src.reg_offset++;
- emit(fs_inst(BRW_OPCODE_MUL, dst, src, scale_y));
+ emit(BRW_OPCODE_MUL, dst, src, scale_y);
}
/* Writemasking doesn't eliminate channels on SIMD8 texture
@@ -1453,13 +1420,13 @@ fs_visitor::visit(ir_texture *ir)
l.reg_offset += i;
if (swiz == SWIZZLE_ZERO) {
- emit(fs_inst(BRW_OPCODE_MOV, l, fs_reg(0.0f)));
+ emit(BRW_OPCODE_MOV, l, fs_reg(0.0f));
} else if (swiz == SWIZZLE_ONE) {
- emit(fs_inst(BRW_OPCODE_MOV, l, fs_reg(1.0f)));
+ emit(BRW_OPCODE_MOV, l, fs_reg(1.0f));
} else {
fs_reg r = dst;
r.reg_offset += GET_SWZ(c->key.tex_swizzles[inst->sampler], i);
- emit(fs_inst(BRW_OPCODE_MOV, l, r));
+ emit(BRW_OPCODE_MOV, l, r);
}
}
this->result = swizzle_dst;
@@ -1500,7 +1467,7 @@ fs_visitor::visit(ir_swizzle *ir)
}
channel.reg_offset += swiz;
- emit(fs_inst(BRW_OPCODE_MOV, result, channel));
+ emit(BRW_OPCODE_MOV, result, channel);
result.reg_offset++;
}
}
@@ -1512,8 +1479,8 @@ fs_visitor::visit(ir_discard *ir)
assert(ir->condition == NULL); /* FINISHME */
- emit(fs_inst(FS_OPCODE_DISCARD_NOT, temp, reg_null_d));
- emit(fs_inst(FS_OPCODE_DISCARD_AND, reg_null_d, temp));
+ emit(FS_OPCODE_DISCARD_NOT, temp, reg_null_d);
+ emit(FS_OPCODE_DISCARD_AND, reg_null_d, temp);
kill_emitted = true;
}
@@ -1539,7 +1506,7 @@ fs_visitor::visit(ir_constant *ir)
dst_reg.type = src_reg.type;
for (unsigned j = 0; j < size; j++) {
- emit(fs_inst(BRW_OPCODE_MOV, dst_reg, src_reg));
+ emit(BRW_OPCODE_MOV, dst_reg, src_reg);
src_reg.reg_offset++;
dst_reg.reg_offset++;
}
@@ -1554,7 +1521,7 @@ fs_visitor::visit(ir_constant *ir)
dst_reg.type = src_reg.type;
for (unsigned j = 0; j < size; j++) {
- emit(fs_inst(BRW_OPCODE_MOV, dst_reg, src_reg));
+ emit(BRW_OPCODE_MOV, dst_reg, src_reg);
src_reg.reg_offset++;
dst_reg.reg_offset++;
}
@@ -1565,16 +1532,16 @@ fs_visitor::visit(ir_constant *ir)
for (unsigned i = 0; i < size; i++) {
switch (ir->type->base_type) {
case GLSL_TYPE_FLOAT:
- emit(fs_inst(BRW_OPCODE_MOV, dst_reg, fs_reg(ir->value.f[i])));
+ emit(BRW_OPCODE_MOV, dst_reg, fs_reg(ir->value.f[i]));
break;
case GLSL_TYPE_UINT:
- emit(fs_inst(BRW_OPCODE_MOV, dst_reg, fs_reg(ir->value.u[i])));
+ emit(BRW_OPCODE_MOV, dst_reg, fs_reg(ir->value.u[i]));
break;
case GLSL_TYPE_INT:
- emit(fs_inst(BRW_OPCODE_MOV, dst_reg, fs_reg(ir->value.i[i])));
+ emit(BRW_OPCODE_MOV, dst_reg, fs_reg(ir->value.i[i]));
break;
case GLSL_TYPE_BOOL:
- emit(fs_inst(BRW_OPCODE_MOV, dst_reg, fs_reg((int)ir->value.b[i])));
+ emit(BRW_OPCODE_MOV, dst_reg, fs_reg((int)ir->value.b[i]));
break;
default:
assert(!"Non-float/uint/int/bool constant");
@@ -1605,40 +1572,39 @@ fs_visitor::emit_bool_to_cond_code(ir_rvalue *ir)
switch (expr->operation) {
case ir_unop_logic_not:
- inst = emit(fs_inst(BRW_OPCODE_AND, reg_null_d, op[0], fs_reg(1)));
+ inst = emit(BRW_OPCODE_AND, reg_null_d, op[0], fs_reg(1));
inst->conditional_mod = BRW_CONDITIONAL_Z;
break;
case ir_binop_logic_xor:
- inst = emit(fs_inst(BRW_OPCODE_XOR, reg_null_d, op[0], op[1]));
+ inst = emit(BRW_OPCODE_XOR, reg_null_d, op[0], op[1]);
inst->conditional_mod = BRW_CONDITIONAL_NZ;
break;
case ir_binop_logic_or:
- inst = emit(fs_inst(BRW_OPCODE_OR, reg_null_d, op[0], op[1]));
+ inst = emit(BRW_OPCODE_OR, reg_null_d, op[0], op[1]);
inst->conditional_mod = BRW_CONDITIONAL_NZ;
break;
case ir_binop_logic_and:
- inst = emit(fs_inst(BRW_OPCODE_AND, reg_null_d, op[0], op[1]));
+ inst = emit(BRW_OPCODE_AND, reg_null_d, op[0], op[1]);
inst->conditional_mod = BRW_CONDITIONAL_NZ;
break;
case ir_unop_f2b:
if (intel->gen >= 6) {
- inst = emit(fs_inst(BRW_OPCODE_CMP, reg_null_d,
- op[0], fs_reg(0.0f)));
+ inst = emit(BRW_OPCODE_CMP, reg_null_d, op[0], fs_reg(0.0f));
} else {
- inst = emit(fs_inst(BRW_OPCODE_MOV, reg_null_f, op[0]));
+ inst = emit(BRW_OPCODE_MOV, reg_null_f, op[0]);
}
inst->conditional_mod = BRW_CONDITIONAL_NZ;
break;
case ir_unop_i2b:
if (intel->gen >= 6) {
- inst = emit(fs_inst(BRW_OPCODE_CMP, reg_null_d, op[0], fs_reg(0)));
+ inst = emit(BRW_OPCODE_CMP, reg_null_d, op[0], fs_reg(0));
} else {
- inst = emit(fs_inst(BRW_OPCODE_MOV, reg_null_d, op[0]));
+ inst = emit(BRW_OPCODE_MOV, reg_null_d, op[0]);
}
inst->conditional_mod = BRW_CONDITIONAL_NZ;
break;
@@ -1651,14 +1617,14 @@ fs_visitor::emit_bool_to_cond_code(ir_rvalue *ir)
case ir_binop_all_equal:
case ir_binop_nequal:
case ir_binop_any_nequal:
- inst = emit(fs_inst(BRW_OPCODE_CMP, reg_null_cmp, op[0], op[1]));
+ inst = emit(BRW_OPCODE_CMP, reg_null_cmp, op[0], op[1]);
inst->conditional_mod =
brw_conditional_for_comparison(expr->operation);
break;
default:
assert(!"not reached");
- this->fail = true;
+ fail("bad cond code\n");
break;
}
return;
@@ -1667,11 +1633,10 @@ fs_visitor::emit_bool_to_cond_code(ir_rvalue *ir)
ir->accept(this);
if (intel->gen >= 6) {
- fs_inst *inst = emit(fs_inst(BRW_OPCODE_AND, reg_null_d,
- this->result, fs_reg(1)));
+ fs_inst *inst = emit(BRW_OPCODE_AND, reg_null_d, this->result, fs_reg(1));
inst->conditional_mod = BRW_CONDITIONAL_NZ;
} else {
- fs_inst *inst = emit(fs_inst(BRW_OPCODE_MOV, reg_null_d, this->result));
+ fs_inst *inst = emit(BRW_OPCODE_MOV, reg_null_d, this->result);
inst->conditional_mod = BRW_CONDITIONAL_NZ;
}
}
@@ -1700,36 +1665,36 @@ fs_visitor::emit_if_gen6(ir_if *ir)
switch (expr->operation) {
case ir_unop_logic_not:
- inst = emit(fs_inst(BRW_OPCODE_IF, temp, op[0], fs_reg(0)));
+ inst = emit(BRW_OPCODE_IF, temp, op[0], fs_reg(0));
inst->conditional_mod = BRW_CONDITIONAL_Z;
return;
case ir_binop_logic_xor:
- inst = emit(fs_inst(BRW_OPCODE_IF, reg_null_d, op[0], op[1]));
+ inst = emit(BRW_OPCODE_IF, reg_null_d, op[0], op[1]);
inst->conditional_mod = BRW_CONDITIONAL_NZ;
return;
case ir_binop_logic_or:
temp = fs_reg(this, glsl_type::bool_type);
- emit(fs_inst(BRW_OPCODE_OR, temp, op[0], op[1]));
- inst = emit(fs_inst(BRW_OPCODE_IF, reg_null_d, temp, fs_reg(0)));
+ emit(BRW_OPCODE_OR, temp, op[0], op[1]);
+ inst = emit(BRW_OPCODE_IF, reg_null_d, temp, fs_reg(0));
inst->conditional_mod = BRW_CONDITIONAL_NZ;
return;
case ir_binop_logic_and:
temp = fs_reg(this, glsl_type::bool_type);
- emit(fs_inst(BRW_OPCODE_AND, temp, op[0], op[1]));
- inst = emit(fs_inst(BRW_OPCODE_IF, reg_null_d, temp, fs_reg(0)));
+ emit(BRW_OPCODE_AND, temp, op[0], op[1]);
+ inst = emit(BRW_OPCODE_IF, reg_null_d, temp, fs_reg(0));
inst->conditional_mod = BRW_CONDITIONAL_NZ;
return;
case ir_unop_f2b:
- inst = emit(fs_inst(BRW_OPCODE_IF, reg_null_f, op[0], fs_reg(0)));
+ inst = emit(BRW_OPCODE_IF, reg_null_f, op[0], fs_reg(0));
inst->conditional_mod = BRW_CONDITIONAL_NZ;
return;
case ir_unop_i2b:
- inst = emit(fs_inst(BRW_OPCODE_IF, reg_null_d, op[0], fs_reg(0)));
+ inst = emit(BRW_OPCODE_IF, reg_null_d, op[0], fs_reg(0));
inst->conditional_mod = BRW_CONDITIONAL_NZ;
return;
@@ -1741,15 +1706,15 @@ fs_visitor::emit_if_gen6(ir_if *ir)
case ir_binop_all_equal:
case ir_binop_nequal:
case ir_binop_any_nequal:
- inst = emit(fs_inst(BRW_OPCODE_IF, reg_null_d, op[0], op[1]));
+ inst = emit(BRW_OPCODE_IF, reg_null_d, op[0], op[1]);
inst->conditional_mod =
brw_conditional_for_comparison(expr->operation);
return;
default:
assert(!"not reached");
- inst = emit(fs_inst(BRW_OPCODE_IF, reg_null_d, op[0], fs_reg(0)));
+ inst = emit(BRW_OPCODE_IF, reg_null_d, op[0], fs_reg(0));
inst->conditional_mod = BRW_CONDITIONAL_NZ;
- this->fail = true;
+ fail("bad condition\n");
return;
}
return;
@@ -1757,7 +1722,7 @@ fs_visitor::emit_if_gen6(ir_if *ir)
ir->condition->accept(this);
- fs_inst *inst = emit(fs_inst(BRW_OPCODE_IF, reg_null_d, this->result, fs_reg(0)));
+ fs_inst *inst = emit(BRW_OPCODE_IF, reg_null_d, this->result, fs_reg(0));
inst->conditional_mod = BRW_CONDITIONAL_NZ;
}
@@ -1776,7 +1741,7 @@ fs_visitor::visit(ir_if *ir)
} else {
emit_bool_to_cond_code(ir->condition);
- inst = emit(fs_inst(BRW_OPCODE_IF));
+ inst = emit(BRW_OPCODE_IF);
inst->predicated = true;
}
@@ -1788,7 +1753,7 @@ fs_visitor::visit(ir_if *ir)
}
if (!ir->else_instructions.is_empty()) {
- emit(fs_inst(BRW_OPCODE_ELSE));
+ emit(BRW_OPCODE_ELSE);
foreach_iter(exec_list_iterator, iter, ir->else_instructions) {
ir_instruction *ir = (ir_instruction *)iter.get();
@@ -1798,7 +1763,7 @@ fs_visitor::visit(ir_if *ir)
}
}
- emit(fs_inst(BRW_OPCODE_ENDIF));
+ emit(BRW_OPCODE_ENDIF);
}
void
@@ -1815,21 +1780,20 @@ fs_visitor::visit(ir_loop *ir)
this->base_ir = ir->from;
ir->from->accept(this);
- emit(fs_inst(BRW_OPCODE_MOV, counter, this->result));
+ emit(BRW_OPCODE_MOV, counter, this->result);
}
}
- emit(fs_inst(BRW_OPCODE_DO));
+ emit(BRW_OPCODE_DO);
if (ir->to) {
this->base_ir = ir->to;
ir->to->accept(this);
- fs_inst *inst = emit(fs_inst(BRW_OPCODE_CMP, reg_null_cmp,
- counter, this->result));
+ fs_inst *inst = emit(BRW_OPCODE_CMP, reg_null_cmp, counter, this->result);
inst->conditional_mod = brw_conditional_for_comparison(ir->cmp);
- inst = emit(fs_inst(BRW_OPCODE_BREAK));
+ inst = emit(BRW_OPCODE_BREAK);
inst->predicated = true;
}
@@ -1843,10 +1807,10 @@ fs_visitor::visit(ir_loop *ir)
if (ir->increment) {
this->base_ir = ir->increment;
ir->increment->accept(this);
- emit(fs_inst(BRW_OPCODE_ADD, counter, counter, this->result));
+ emit(BRW_OPCODE_ADD, counter, counter, this->result);
}
- emit(fs_inst(BRW_OPCODE_WHILE));
+ emit(BRW_OPCODE_WHILE);
}
void
@@ -1854,10 +1818,10 @@ fs_visitor::visit(ir_loop_jump *ir)
{
switch (ir->mode) {
case ir_loop_jump::jump_break:
- emit(fs_inst(BRW_OPCODE_BREAK));
+ emit(BRW_OPCODE_BREAK);
break;
case ir_loop_jump::jump_continue:
- emit(fs_inst(BRW_OPCODE_CONTINUE));
+ emit(BRW_OPCODE_CONTINUE);
break;
}
}
@@ -1923,23 +1887,13 @@ void
fs_visitor::emit_dummy_fs()
{
/* Everyone's favorite color. */
- emit(fs_inst(BRW_OPCODE_MOV,
- fs_reg(MRF, 2),
- fs_reg(1.0f)));
- emit(fs_inst(BRW_OPCODE_MOV,
- fs_reg(MRF, 3),
- fs_reg(0.0f)));
- emit(fs_inst(BRW_OPCODE_MOV,
- fs_reg(MRF, 4),
- fs_reg(1.0f)));
- emit(fs_inst(BRW_OPCODE_MOV,
- fs_reg(MRF, 5),
- fs_reg(0.0f)));
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, 2), fs_reg(1.0f));
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, 3), fs_reg(0.0f));
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, 4), fs_reg(1.0f));
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, 5), fs_reg(0.0f));
fs_inst *write;
- write = emit(fs_inst(FS_OPCODE_FB_WRITE,
- fs_reg(0),
- fs_reg(0)));
+ write = emit(FS_OPCODE_FB_WRITE, fs_reg(0), fs_reg(0));
write->base_mrf = 0;
}
@@ -1969,14 +1923,14 @@ fs_visitor::emit_interpolation_setup_gen4()
this->pixel_y = fs_reg(this, glsl_type::uint_type);
this->pixel_x.type = BRW_REGISTER_TYPE_UW;
this->pixel_y.type = BRW_REGISTER_TYPE_UW;
- emit(fs_inst(BRW_OPCODE_ADD,
- this->pixel_x,
- fs_reg(stride(suboffset(g1_uw, 4), 2, 4, 0)),
- fs_reg(brw_imm_v(0x10101010))));
- emit(fs_inst(BRW_OPCODE_ADD,
- this->pixel_y,
- fs_reg(stride(suboffset(g1_uw, 5), 2, 4, 0)),
- fs_reg(brw_imm_v(0x11001100))));
+ emit(BRW_OPCODE_ADD,
+ this->pixel_x,
+ fs_reg(stride(suboffset(g1_uw, 4), 2, 4, 0)),
+ fs_reg(brw_imm_v(0x10101010)));
+ emit(BRW_OPCODE_ADD,
+ this->pixel_y,
+ fs_reg(stride(suboffset(g1_uw, 5), 2, 4, 0)),
+ fs_reg(brw_imm_v(0x11001100)));
this->current_annotation = "compute pixel deltas from v0";
if (brw->has_pln) {
@@ -1987,22 +1941,18 @@ fs_visitor::emit_interpolation_setup_gen4()
this->delta_x = fs_reg(this, glsl_type::float_type);
this->delta_y = fs_reg(this, glsl_type::float_type);
}
- emit(fs_inst(BRW_OPCODE_ADD,
- this->delta_x,
- this->pixel_x,
- fs_reg(negate(brw_vec1_grf(1, 0)))));
- emit(fs_inst(BRW_OPCODE_ADD,
- this->delta_y,
- this->pixel_y,
- fs_reg(negate(brw_vec1_grf(1, 1)))));
+ emit(BRW_OPCODE_ADD, this->delta_x,
+ this->pixel_x, fs_reg(negate(brw_vec1_grf(1, 0))));
+ emit(BRW_OPCODE_ADD, this->delta_y,
+ this->pixel_y, fs_reg(negate(brw_vec1_grf(1, 1))));
this->current_annotation = "compute pos.w and 1/pos.w";
/* Compute wpos.w. It's always in our setup, since it's needed to
* interpolate the other attributes.
*/
this->wpos_w = fs_reg(this, glsl_type::float_type);
- emit(fs_inst(FS_OPCODE_LINTERP, wpos_w, this->delta_x, this->delta_y,
- interp_reg(FRAG_ATTRIB_WPOS, 3)));
+ emit(FS_OPCODE_LINTERP, wpos_w, this->delta_x, this->delta_y,
+ interp_reg(FRAG_ATTRIB_WPOS, 3));
/* Compute the pixel 1/W value from wpos.w. */
this->pixel_w = fs_reg(this, glsl_type::float_type);
emit_math(FS_OPCODE_RCP, this->pixel_w, wpos_w);
@@ -2021,14 +1971,14 @@ fs_visitor::emit_interpolation_setup_gen6()
fs_reg int_pixel_y = fs_reg(this, glsl_type::uint_type);
int_pixel_x.type = BRW_REGISTER_TYPE_UW;
int_pixel_y.type = BRW_REGISTER_TYPE_UW;
- emit(fs_inst(BRW_OPCODE_ADD,
- int_pixel_x,
- fs_reg(stride(suboffset(g1_uw, 4), 2, 4, 0)),
- fs_reg(brw_imm_v(0x10101010))));
- emit(fs_inst(BRW_OPCODE_ADD,
- int_pixel_y,
- fs_reg(stride(suboffset(g1_uw, 5), 2, 4, 0)),
- fs_reg(brw_imm_v(0x11001100))));
+ emit(BRW_OPCODE_ADD,
+ int_pixel_x,
+ fs_reg(stride(suboffset(g1_uw, 4), 2, 4, 0)),
+ fs_reg(brw_imm_v(0x10101010)));
+ emit(BRW_OPCODE_ADD,
+ int_pixel_y,
+ fs_reg(stride(suboffset(g1_uw, 5), 2, 4, 0)),
+ fs_reg(brw_imm_v(0x11001100)));
/* As of gen6, we can no longer mix float and int sources. We have
* to turn the integer pixel centers into floats for their actual
@@ -2036,13 +1986,13 @@ fs_visitor::emit_interpolation_setup_gen6()
*/
this->pixel_x = fs_reg(this, glsl_type::float_type);
this->pixel_y = fs_reg(this, glsl_type::float_type);
- emit(fs_inst(BRW_OPCODE_MOV, this->pixel_x, int_pixel_x));
- emit(fs_inst(BRW_OPCODE_MOV, this->pixel_y, int_pixel_y));
+ emit(BRW_OPCODE_MOV, this->pixel_x, int_pixel_x);
+ emit(BRW_OPCODE_MOV, this->pixel_y, int_pixel_y);
- this->current_annotation = "compute 1/pos.w";
- this->wpos_w = fs_reg(brw_vec8_grf(c->source_w_reg, 0));
- this->pixel_w = fs_reg(this, glsl_type::float_type);
- emit_math(FS_OPCODE_RCP, this->pixel_w, wpos_w);
+ this->current_annotation = "compute pos.w";
+ this->pixel_w = fs_reg(brw_vec8_grf(c->source_w_reg, 0));
+ this->wpos_w = fs_reg(this, glsl_type::float_type);
+ emit_math(FS_OPCODE_RCP, this->wpos_w, this->pixel_w);
this->delta_x = fs_reg(brw_vec8_grf(2, 0));
this->delta_y = fs_reg(brw_vec8_grf(3, 0));
@@ -2069,8 +2019,8 @@ fs_visitor::emit_fb_writes()
}
if (c->aa_dest_stencil_reg) {
- emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, nr++),
- fs_reg(brw_vec8_grf(c->aa_dest_stencil_reg, 0))));
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, nr++),
+ fs_reg(brw_vec8_grf(c->aa_dest_stencil_reg, 0)));
}
/* Reserve space for color. It'll be filled in per MRT below. */
@@ -2083,17 +2033,17 @@ fs_visitor::emit_fb_writes()
assert(this->frag_depth);
fs_reg depth = *(variable_storage(this->frag_depth));
- emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, nr++), depth));
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, nr++), depth);
} else {
/* Pass through the payload depth. */
- emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, nr++),
- fs_reg(brw_vec8_grf(c->source_depth_reg, 0))));
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, nr++),
+ fs_reg(brw_vec8_grf(c->source_depth_reg, 0)));
}
}
if (c->dest_depth_reg) {
- emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, nr++),
- fs_reg(brw_vec8_grf(c->dest_depth_reg, 0))));
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, nr++),
+ fs_reg(brw_vec8_grf(c->dest_depth_reg, 0)));
}
fs_reg color = reg_undef;
@@ -2110,9 +2060,7 @@ fs_visitor::emit_fb_writes()
target);
if (this->frag_color || this->frag_data) {
for (int i = 0; i < 4; i++) {
- emit(fs_inst(BRW_OPCODE_MOV,
- fs_reg(MRF, color_mrf + i),
- color));
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, color_mrf + i), color);
color.reg_offset++;
}
}
@@ -2120,8 +2068,7 @@ fs_visitor::emit_fb_writes()
if (this->frag_color)
color.reg_offset -= 4;
- fs_inst *inst = emit(fs_inst(FS_OPCODE_FB_WRITE,
- reg_undef, reg_undef));
+ fs_inst *inst = emit(FS_OPCODE_FB_WRITE);
inst->target = target;
inst->base_mrf = 0;
inst->mlen = nr;
@@ -2137,13 +2084,10 @@ fs_visitor::emit_fb_writes()
* renderbuffer.
*/
color.reg_offset += 3;
- emit(fs_inst(BRW_OPCODE_MOV,
- fs_reg(MRF, color_mrf + 3),
- color));
+ emit(BRW_OPCODE_MOV, fs_reg(MRF, color_mrf + 3), color);
}
- fs_inst *inst = emit(fs_inst(FS_OPCODE_FB_WRITE,
- reg_undef, reg_undef));
+ fs_inst *inst = emit(FS_OPCODE_FB_WRITE);
inst->base_mrf = 0;
inst->mlen = nr;
inst->eot = true;
@@ -2868,8 +2812,7 @@ fs_visitor::calculate_live_intervals()
if (inst->src[i].file == GRF && inst->src[i].reg != 0) {
int reg = inst->src[i].reg;
- if (!loop_depth || (this->virtual_grf_sizes[reg] == 1 &&
- def[reg] >= bb_header_ip)) {
+ if (!loop_depth) {
use[reg] = ip;
} else {
def[reg] = MIN2(loop_start, def[reg]);
@@ -2885,8 +2828,7 @@ fs_visitor::calculate_live_intervals()
if (inst->dst.file == GRF && inst->dst.reg != 0) {
int reg = inst->dst.reg;
- if (!loop_depth || (this->virtual_grf_sizes[reg] == 1 &&
- !inst->predicated)) {
+ if (!loop_depth) {
def[reg] = MIN2(def[reg], ip);
} else {
def[reg] = MIN2(def[reg], loop_start);
@@ -2996,12 +2938,41 @@ fs_visitor::propagate_constants()
progress = true;
}
break;
+
case BRW_OPCODE_CMP:
+ if (i == 1) {
+ scan_inst->src[i] = inst->src[0];
+ progress = true;
+ } else if (i == 0 && scan_inst->src[1].file != IMM) {
+ uint32_t new_cmod;
+
+ new_cmod = brw_swap_cmod(scan_inst->conditional_mod);
+ if (new_cmod != ~0u) {
+ /* Fit this constant in by swapping the operands and
+ * flipping the test
+ */
+ scan_inst->src[0] = scan_inst->src[1];
+ scan_inst->src[1] = inst->src[0];
+ scan_inst->conditional_mod = new_cmod;
+ progress = true;
+ }
+ }
+ break;
+
case BRW_OPCODE_SEL:
if (i == 1) {
scan_inst->src[i] = inst->src[0];
progress = true;
+ } else if (i == 0 && scan_inst->src[1].file != IMM) {
+ /* Fit this constant in by swapping the operands and
+ * flipping the predicate
+ */
+ scan_inst->src[0] = scan_inst->src[1];
+ scan_inst->src[1] = inst->src[0];
+ scan_inst->predicate_inverse = !scan_inst->predicate_inverse;
+ progress = true;
}
+ break;
}
}
@@ -3487,6 +3458,7 @@ fs_visitor::generate_code()
brw_set_conditionalmod(p, inst->conditional_mod);
brw_set_predicate_control(p, inst->predicated);
+ brw_set_predicate_inverse(p, inst->predicate_inverse);
brw_set_saturate(p, inst->saturate);
switch (inst->opcode) {
@@ -3677,7 +3649,7 @@ fs_visitor::generate_code()
} else {
_mesa_problem(ctx, "Unsupported opcode %d in FS", inst->opcode);
}
- this->fail = true;
+ fail("unsupported opcode in FS\n");
}
if (unlikely(INTEL_DEBUG & DEBUG_WM)) {
@@ -3808,18 +3780,18 @@ brw_wm_fs_emit(struct brw_context *brw, struct brw_wm_compile *c)
v.assign_regs_trivial();
else {
while (!v.assign_regs()) {
- if (v.fail)
+ if (v.failed)
break;
}
}
}
- if (!v.fail)
+ if (!v.failed)
v.generate_code();
- assert(!v.fail); /* FINISHME: Cleanly fail, tested at link time, etc. */
+ assert(!v.failed); /* FINISHME: Cleanly fail, tested at link time, etc. */
- if (v.fail)
+ if (v.failed)
return GL_FALSE;
c->prog_data.total_grf = v.grf_used;
diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h
index dc030ae5b50..f792906cfe7 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.h
+++ b/src/mesa/drivers/dri/i965/brw_fs.h
@@ -331,6 +331,7 @@ public:
fs_reg src[3];
bool saturate;
bool predicated;
+ bool predicate_inverse;
int conditional_mod; /**< BRW_CONDITIONAL_* */
int mlen; /**< SEND message length */
@@ -364,7 +365,7 @@ public:
this->ctx = &intel->ctx;
this->mem_ctx = ralloc_context(NULL);
this->shader = shader;
- this->fail = false;
+ this->failed = false;
this->variable_ht = hash_table_ctor(0,
hash_table_pointer_hash,
hash_table_pointer_compare);
@@ -432,6 +433,32 @@ public:
void visit(ir_function_signature *ir);
fs_inst *emit(fs_inst inst);
+
+ fs_inst *emit(int opcode)
+ {
+ return emit(fs_inst(opcode));
+ }
+
+ fs_inst *emit(int opcode, fs_reg dst)
+ {
+ return emit(fs_inst(opcode, dst));
+ }
+
+ fs_inst *emit(int opcode, fs_reg dst, fs_reg src0)
+ {
+ return emit(fs_inst(opcode, dst, src0));
+ }
+
+ fs_inst *emit(int opcode, fs_reg dst, fs_reg src0, fs_reg src1)
+ {
+ return emit(fs_inst(opcode, dst, src0, src1));
+ }
+
+ fs_inst *emit(int opcode, fs_reg dst, fs_reg src0, fs_reg src1, fs_reg src2)
+ {
+ return emit(fs_inst(opcode, dst, src0, src1, src2));
+ }
+
void setup_paramvalues_refs();
void assign_curb_setup();
void calculate_urb_setup();
@@ -450,6 +477,7 @@ public:
bool remove_duplicate_mrf_writes();
bool virtual_grf_interferes(int a, int b);
void schedule_instructions();
+ void fail(const char *msg, ...);
void generate_code();
void generate_fb_write(fs_inst *inst);
@@ -523,7 +551,7 @@ public:
ir_instruction *base_ir;
/** @} */
- bool fail;
+ bool failed;
/* Result of last visit() method. */
fs_reg result;
diff --git a/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp b/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp
index f0277423170..67f29ce1816 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp
@@ -119,8 +119,7 @@ fs_visitor::assign_regs()
}
if (i == class_count) {
if (this->virtual_grf_sizes[r] >= base_reg_count) {
- fprintf(stderr, "Object too large to register allocate.\n");
- this->fail = true;
+ fail("Object too large to register allocate.\n");
}
class_sizes[class_count++] = this->virtual_grf_sizes[r];
@@ -226,8 +225,9 @@ fs_visitor::assign_regs()
* loop back into here to try again.
*/
int reg = choose_spill_reg(g);
- if (reg == -1 || intel->gen >= 6) {
- this->fail = true;
+
+ if (reg == -1) {
+ fail("no register to spill\n");
} else {
spill_reg(reg);
}
diff --git a/src/mesa/drivers/dri/i965/brw_gs.c b/src/mesa/drivers/dri/i965/brw_gs.c
index 70c451d071d..14ee6767cd5 100644
--- a/src/mesa/drivers/dri/i965/brw_gs.c
+++ b/src/mesa/drivers/dri/i965/brw_gs.c
@@ -83,45 +83,23 @@ static void compile_gs_prog( struct brw_context *brw,
/* Note that primitives which don't require a GS program have
* already been weeded out by this stage:
*/
+
+ /* Gen6: VF has already converted into polygon, and LINELOOP is
+ * converted to LINESTRIP at the beginning of the 3D pipeline.
+ */
+ if (intel->gen == 6)
+ return;
+
switch (key->primitive) {
case GL_QUADS:
- /* Gen6: VF has already converted into polygon. */
- if (intel->gen == 6)
- return;
brw_gs_quads( &c, key );
break;
case GL_QUAD_STRIP:
- if (intel->gen == 6)
- return;
brw_gs_quad_strip( &c, key );
break;
case GL_LINE_LOOP:
- /* Gen6: LINELOOP is converted to LINESTRIP at the beginning of the 3D pipeline */
- if (intel->gen == 6)
- return;
brw_gs_lines( &c );
break;
- case GL_LINES:
- if (key->hint_gs_always)
- brw_gs_lines( &c );
- else {
- return;
- }
- break;
- case GL_TRIANGLES:
- if (key->hint_gs_always)
- brw_gs_tris( &c );
- else {
- return;
- }
- break;
- case GL_POINTS:
- if (key->hint_gs_always)
- brw_gs_points( &c );
- else {
- return;
- }
- break;
default:
return;
}
@@ -170,7 +148,6 @@ static void populate_key( struct brw_context *brw,
{
struct gl_context *ctx = &brw->intel.ctx;
struct intel_context *intel = &brw->intel;
- int prim_gs_always;
memset(key, 0, sizeof(*key));
@@ -180,8 +157,6 @@ static void populate_key( struct brw_context *brw,
/* BRW_NEW_PRIMITIVE */
key->primitive = gs_prim[brw->primitive];
- key->hint_gs_always = 0; /* debug code? */
-
/* _NEW_LIGHT */
key->pv_first = (ctx->Light.ProvokingVertex == GL_FIRST_VERTEX_CONVENTION);
if (key->primitive == GL_QUADS && ctx->Light.ShadeModel != GL_FLAT) {
@@ -191,14 +166,11 @@ static void populate_key( struct brw_context *brw,
key->pv_first = GL_TRUE;
}
- if (intel->gen == 6)
- prim_gs_always = 0;
- else
- prim_gs_always = brw->primitive == GL_QUADS ||
- brw->primitive == GL_QUAD_STRIP ||
- brw->primitive == GL_LINE_LOOP;
-
- key->need_gs_prog = (key->hint_gs_always || prim_gs_always);
+ key->need_gs_prog = (intel->gen == 6)
+ ? 0
+ : (brw->primitive == GL_QUADS ||
+ brw->primitive == GL_QUAD_STRIP ||
+ brw->primitive == GL_LINE_LOOP);
}
/* Calculate interpolants for triangle and line rasterization.
diff --git a/src/mesa/drivers/dri/i965/brw_gs.h b/src/mesa/drivers/dri/i965/brw_gs.h
index 7e3531086f9..c33528e4577 100644
--- a/src/mesa/drivers/dri/i965/brw_gs.h
+++ b/src/mesa/drivers/dri/i965/brw_gs.h
@@ -42,10 +42,9 @@
struct brw_gs_prog_key {
GLbitfield64 attrs;
GLuint primitive:4;
- GLuint hint_gs_always:1;
GLuint pv_first:1;
GLuint need_gs_prog:1;
- GLuint pad:25;
+ GLuint pad:26;
};
struct brw_gs_compile {
@@ -70,8 +69,6 @@ struct brw_gs_compile {
void brw_gs_quads( struct brw_gs_compile *c, struct brw_gs_prog_key *key );
void brw_gs_quad_strip( struct brw_gs_compile *c, struct brw_gs_prog_key *key );
-void brw_gs_tris( struct brw_gs_compile *c );
void brw_gs_lines( struct brw_gs_compile *c );
-void brw_gs_points( struct brw_gs_compile *c );
#endif
diff --git a/src/mesa/drivers/dri/i965/brw_gs_emit.c b/src/mesa/drivers/dri/i965/brw_gs_emit.c
index e1f751fdaa4..3bb526b63af 100644
--- a/src/mesa/drivers/dri/i965/brw_gs_emit.c
+++ b/src/mesa/drivers/dri/i965/brw_gs_emit.c
@@ -193,19 +193,6 @@ void brw_gs_quad_strip( struct brw_gs_compile *c, struct brw_gs_prog_key *key )
}
}
-void brw_gs_tris( struct brw_gs_compile *c )
-{
- struct intel_context *intel = &c->func.brw->intel;
-
- brw_gs_alloc_regs(c, 3);
-
- if (intel->needs_ff_sync)
- brw_gs_ff_sync(c, 1);
- brw_gs_emit_vue(c, c->reg.vertex[0], 0, ((_3DPRIM_TRILIST << 2) | R02_PRIM_START));
- brw_gs_emit_vue(c, c->reg.vertex[1], 0, (_3DPRIM_TRILIST << 2));
- brw_gs_emit_vue(c, c->reg.vertex[2], 1, ((_3DPRIM_TRILIST << 2) | R02_PRIM_END));
-}
-
void brw_gs_lines( struct brw_gs_compile *c )
{
struct intel_context *intel = &c->func.brw->intel;
@@ -217,22 +204,3 @@ void brw_gs_lines( struct brw_gs_compile *c )
brw_gs_emit_vue(c, c->reg.vertex[0], 0, ((_3DPRIM_LINESTRIP << 2) | R02_PRIM_START));
brw_gs_emit_vue(c, c->reg.vertex[1], 1, ((_3DPRIM_LINESTRIP << 2) | R02_PRIM_END));
}
-
-void brw_gs_points( struct brw_gs_compile *c )
-{
- struct intel_context *intel = &c->func.brw->intel;
-
- brw_gs_alloc_regs(c, 1);
-
- if (intel->needs_ff_sync)
- brw_gs_ff_sync(c, 1);
- brw_gs_emit_vue(c, c->reg.vertex[0], 1, ((_3DPRIM_POINTLIST << 2) | R02_PRIM_START | R02_PRIM_END));
-}
-
-
-
-
-
-
-
-
diff --git a/src/mesa/drivers/dri/i965/brw_misc_state.c b/src/mesa/drivers/dri/i965/brw_misc_state.c
index c768be23fa7..19eea07ebc6 100644
--- a/src/mesa/drivers/dri/i965/brw_misc_state.c
+++ b/src/mesa/drivers/dri/i965/brw_misc_state.c
@@ -149,7 +149,8 @@ static void upload_pipelined_state_pointers(struct brw_context *brw )
else
OUT_BATCH(0);
OUT_RELOC(brw->clip.state_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 1);
- OUT_RELOC(brw->sf.state_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
+ OUT_RELOC(brw->intel.batch.bo, I915_GEM_DOMAIN_INSTRUCTION, 0,
+ brw->sf.state_offset);
OUT_RELOC(brw->wm.state_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
OUT_RELOC(brw->intel.batch.bo, I915_GEM_DOMAIN_INSTRUCTION, 0,
brw->cc.state_offset);
@@ -247,8 +248,7 @@ static void emit_depthbuffer(struct brw_context *brw)
}
assert(region->tiling != I915_TILING_X);
- if (intel->gen >= 6)
- assert(region->tiling != I915_TILING_NONE);
+ assert(intel->gen < 6 || region->tiling == I915_TILING_Y);
BEGIN_BATCH(len);
OUT_BATCH(_3DSTATE_DEPTH_BUFFER << 16 | (len - 2));
@@ -283,6 +283,9 @@ static void emit_depthbuffer(struct brw_context *brw)
}
}
+/**
+ * \see brw_context.state.depth_region
+ */
const struct brw_tracked_state brw_depthbuffer = {
.dirty = {
.mesa = 0,
diff --git a/src/mesa/drivers/dri/i965/brw_program.c b/src/mesa/drivers/dri/i965/brw_program.c
index ee68095fceb..6674f1640c8 100644
--- a/src/mesa/drivers/dri/i965/brw_program.c
+++ b/src/mesa/drivers/dri/i965/brw_program.c
@@ -134,11 +134,6 @@ static GLboolean brwProgramStringNotify( struct gl_context *ctx,
brw_fragment_program_const(brw->fragment_program);
struct gl_shader_program *shader_program;
- if (fprog->FogOption) {
- _mesa_append_fog_code(ctx, fprog);
- fprog->FogOption = GL_NONE;
- }
-
if (newFP == curFP)
brw->state.dirty.brw |= BRW_NEW_FRAGMENT_PROGRAM;
newFP->id = brw->program_id++;
diff --git a/src/mesa/drivers/dri/i965/brw_sf_state.c b/src/mesa/drivers/dri/i965/brw_sf_state.c
index bd3a21ed9e2..66d91a0bde7 100644
--- a/src/mesa/drivers/dri/i965/brw_sf_state.c
+++ b/src/mesa/drivers/dri/i965/brw_sf_state.c
@@ -38,14 +38,16 @@
static void upload_sf_vp(struct brw_context *brw)
{
+ struct intel_context *intel = &brw->intel;
struct gl_context *ctx = &brw->intel.ctx;
const GLfloat depth_scale = 1.0F / ctx->DrawBuffer->_DepthMaxF;
- struct brw_sf_viewport sfv;
+ struct brw_sf_viewport *sfv;
GLfloat y_scale, y_bias;
const GLboolean render_to_fbo = (ctx->DrawBuffer->Name != 0);
const GLfloat *v = ctx->Viewport._WindowMap.m;
- memset(&sfv, 0, sizeof(sfv));
+ sfv = brw_state_batch(brw, sizeof(*sfv), 32, &brw->sf.vp_offset);
+ memset(sfv, 0, sizeof(*sfv));
if (render_to_fbo) {
y_scale = 1.0;
@@ -58,12 +60,12 @@ static void upload_sf_vp(struct brw_context *brw)
/* _NEW_VIEWPORT */
- sfv.viewport.m00 = v[MAT_SX];
- sfv.viewport.m11 = v[MAT_SY] * y_scale;
- sfv.viewport.m22 = v[MAT_SZ] * depth_scale;
- sfv.viewport.m30 = v[MAT_TX];
- sfv.viewport.m31 = v[MAT_TY] * y_scale + y_bias;
- sfv.viewport.m32 = v[MAT_TZ] * depth_scale;
+ sfv->viewport.m00 = v[MAT_SX];
+ sfv->viewport.m11 = v[MAT_SY] * y_scale;
+ sfv->viewport.m22 = v[MAT_SZ] * depth_scale;
+ sfv->viewport.m30 = v[MAT_TX];
+ sfv->viewport.m31 = v[MAT_TY] * y_scale + y_bias;
+ sfv->viewport.m32 = v[MAT_TZ] * depth_scale;
/* _NEW_SCISSOR | _NEW_BUFFERS | _NEW_VIEWPORT
* for DrawBuffer->_[XY]{min,max}
@@ -85,27 +87,31 @@ static void upload_sf_vp(struct brw_context *brw)
* anything. Instead, just provide a min > max scissor inside
* the bounds, which produces the expected no rendering.
*/
- sfv.scissor.xmin = 1;
- sfv.scissor.xmax = 0;
- sfv.scissor.ymin = 1;
- sfv.scissor.ymax = 0;
+ sfv->scissor.xmin = 1;
+ sfv->scissor.xmax = 0;
+ sfv->scissor.ymin = 1;
+ sfv->scissor.ymax = 0;
} else if (render_to_fbo) {
/* texmemory: Y=0=bottom */
- sfv.scissor.xmin = ctx->DrawBuffer->_Xmin;
- sfv.scissor.xmax = ctx->DrawBuffer->_Xmax - 1;
- sfv.scissor.ymin = ctx->DrawBuffer->_Ymin;
- sfv.scissor.ymax = ctx->DrawBuffer->_Ymax - 1;
+ sfv->scissor.xmin = ctx->DrawBuffer->_Xmin;
+ sfv->scissor.xmax = ctx->DrawBuffer->_Xmax - 1;
+ sfv->scissor.ymin = ctx->DrawBuffer->_Ymin;
+ sfv->scissor.ymax = ctx->DrawBuffer->_Ymax - 1;
}
else {
/* memory: Y=0=top */
- sfv.scissor.xmin = ctx->DrawBuffer->_Xmin;
- sfv.scissor.xmax = ctx->DrawBuffer->_Xmax - 1;
- sfv.scissor.ymin = ctx->DrawBuffer->Height - ctx->DrawBuffer->_Ymax;
- sfv.scissor.ymax = ctx->DrawBuffer->Height - ctx->DrawBuffer->_Ymin - 1;
+ sfv->scissor.xmin = ctx->DrawBuffer->_Xmin;
+ sfv->scissor.xmax = ctx->DrawBuffer->_Xmax - 1;
+ sfv->scissor.ymin = ctx->DrawBuffer->Height - ctx->DrawBuffer->_Ymax;
+ sfv->scissor.ymax = ctx->DrawBuffer->Height - ctx->DrawBuffer->_Ymin - 1;
}
+ /* Keep a pointer to it for brw_state_dump.c */
drm_intel_bo_unreference(brw->sf.vp_bo);
- brw->sf.vp_bo = brw_cache_data(&brw->cache, BRW_SF_VP, &sfv, sizeof(sfv));
+ drm_intel_bo_reference(intel->batch.bo);
+ brw->sf.vp_bo = intel->batch.bo;
+
+ brw->state.dirty.cache |= CACHE_NEW_SF_VP;
}
const struct brw_tracked_state brw_sf_vp = {
@@ -113,92 +119,44 @@ const struct brw_tracked_state brw_sf_vp = {
.mesa = (_NEW_VIEWPORT |
_NEW_SCISSOR |
_NEW_BUFFERS),
- .brw = 0,
+ .brw = BRW_NEW_BATCH,
.cache = 0
},
.prepare = upload_sf_vp
};
-struct brw_sf_unit_key {
- unsigned int total_grf;
- unsigned int urb_entry_read_length;
-
- unsigned int nr_urb_entries, urb_size, sfsize;
-
- GLenum front_face, cull_face;
- unsigned pv_first:1;
- unsigned scissor:1;
- unsigned line_smooth:1;
- unsigned point_sprite:1;
- unsigned use_vs_point_size:1;
- unsigned render_to_fbo:1;
- float line_width;
- float point_size;
-};
-
-static void
-sf_unit_populate_key(struct brw_context *brw, struct brw_sf_unit_key *key)
-{
- struct gl_context *ctx = &brw->intel.ctx;
- memset(key, 0, sizeof(*key));
-
- /* CACHE_NEW_SF_PROG */
- key->total_grf = brw->sf.prog_data->total_grf;
- key->urb_entry_read_length = brw->sf.prog_data->urb_read_length;
-
- /* BRW_NEW_URB_FENCE */
- key->nr_urb_entries = brw->urb.nr_sf_entries;
- key->urb_size = brw->urb.vsize;
- key->sfsize = brw->urb.sfsize;
-
- key->scissor = ctx->Scissor.Enabled;
- key->front_face = ctx->Polygon.FrontFace;
-
- if (ctx->Polygon.CullFlag)
- key->cull_face = ctx->Polygon.CullFaceMode;
- else
- key->cull_face = GL_NONE;
-
- key->line_width = ctx->Line.Width;
- key->line_smooth = ctx->Line.SmoothFlag;
-
- key->point_sprite = ctx->Point.PointSprite;
- key->point_size = CLAMP(ctx->Point.Size, ctx->Point.MinSize, ctx->Point.MaxSize);
- key->use_vs_point_size = (ctx->VertexProgram.PointSizeEnabled ||
- ctx->Point._Attenuated);
-
- /* _NEW_LIGHT */
- key->pv_first = (ctx->Light.ProvokingVertex == GL_FIRST_VERTEX_CONVENTION);
-
- key->render_to_fbo = brw->intel.ctx.DrawBuffer->Name != 0;
-}
-
-static drm_intel_bo *
-sf_unit_create_from_key(struct brw_context *brw, struct brw_sf_unit_key *key,
- drm_intel_bo **reloc_bufs)
+static void upload_sf_unit( struct brw_context *brw )
{
struct intel_context *intel = &brw->intel;
- struct brw_sf_unit_state sf;
- drm_intel_bo *bo;
+ struct gl_context *ctx = &intel->ctx;
+ struct brw_sf_unit_state *sf;
+ drm_intel_bo *bo = intel->batch.bo;
int chipset_max_threads;
- memset(&sf, 0, sizeof(sf));
+ bool render_to_fbo = brw->intel.ctx.DrawBuffer->Name != 0;
+
+ sf = brw_state_batch(brw, sizeof(*sf), 64, &brw->sf.state_offset);
- sf.thread0.grf_reg_count = ALIGN(key->total_grf, 16) / 16 - 1;
- sf.thread0.kernel_start_pointer = brw->sf.prog_bo->offset >> 6; /* reloc */
+ memset(sf, 0, sizeof(*sf));
+
+ /* CACHE_NEW_SF_PROG */
+ sf->thread0.grf_reg_count = ALIGN(brw->sf.prog_data->total_grf, 16) / 16 - 1;
+ sf->thread0.kernel_start_pointer = brw->sf.prog_bo->offset >> 6; /* reloc */
- sf.thread1.floating_point_mode = BRW_FLOATING_POINT_NON_IEEE_754;
+ sf->thread1.floating_point_mode = BRW_FLOATING_POINT_NON_IEEE_754;
- sf.thread3.dispatch_grf_start_reg = 3;
+ sf->thread3.dispatch_grf_start_reg = 3;
if (intel->gen == 5)
- sf.thread3.urb_entry_read_offset = 3;
+ sf->thread3.urb_entry_read_offset = 3;
else
- sf.thread3.urb_entry_read_offset = 1;
+ sf->thread3.urb_entry_read_offset = 1;
- sf.thread3.urb_entry_read_length = key->urb_entry_read_length;
+ /* CACHE_NEW_SF_PROG */
+ sf->thread3.urb_entry_read_length = brw->sf.prog_data->urb_read_length;
- sf.thread4.nr_urb_entries = key->nr_urb_entries;
- sf.thread4.urb_entry_allocation_size = key->sfsize - 1;
+ /* BRW_NEW_URB_FENCE */
+ sf->thread4.nr_urb_entries = brw->urb.nr_sf_entries;
+ sf->thread4.urb_entry_allocation_size = brw->urb.sfsize - 1;
/* Each SF thread produces 1 PUE, and there can be up to 24 (Pre-Ironlake) or
* 48 (Ironlake) threads.
@@ -208,46 +166,51 @@ sf_unit_create_from_key(struct brw_context *brw, struct brw_sf_unit_key *key,
else
chipset_max_threads = 24;
- sf.thread4.max_threads = MIN2(chipset_max_threads, key->nr_urb_entries) - 1;
+ /* BRW_NEW_URB_FENCE */
+ sf->thread4.max_threads = MIN2(chipset_max_threads,
+ brw->urb.nr_sf_entries) - 1;
if (unlikely(INTEL_DEBUG & DEBUG_SINGLE_THREAD))
- sf.thread4.max_threads = 0;
+ sf->thread4.max_threads = 0;
if (unlikely(INTEL_DEBUG & DEBUG_STATS))
- sf.thread4.stats_enable = 1;
+ sf->thread4.stats_enable = 1;
/* CACHE_NEW_SF_VP */
- sf.sf5.sf_viewport_state_offset = brw->sf.vp_bo->offset >> 5; /* reloc */
+ sf->sf5.sf_viewport_state_offset = (brw->sf.vp_bo->offset +
+ brw->sf.vp_offset) >> 5; /* reloc */
- sf.sf5.viewport_transform = 1;
+ sf->sf5.viewport_transform = 1;
/* _NEW_SCISSOR */
- if (key->scissor)
- sf.sf6.scissor = 1;
+ if (ctx->Scissor.Enabled)
+ sf->sf6.scissor = 1;
/* _NEW_POLYGON */
- if (key->front_face == GL_CCW)
- sf.sf5.front_winding = BRW_FRONTWINDING_CCW;
+ if (ctx->Polygon.FrontFace == GL_CCW)
+ sf->sf5.front_winding = BRW_FRONTWINDING_CCW;
else
- sf.sf5.front_winding = BRW_FRONTWINDING_CW;
+ sf->sf5.front_winding = BRW_FRONTWINDING_CW;
- /* The viewport is inverted for rendering to a FBO, and that inverts
+ /* _NEW_BUFFERS
+ * The viewport is inverted for rendering to a FBO, and that inverts
* polygon front/back orientation.
*/
- sf.sf5.front_winding ^= key->render_to_fbo;
+ sf->sf5.front_winding ^= render_to_fbo;
- switch (key->cull_face) {
+ /* _NEW_POLYGON */
+ switch (ctx->Polygon.CullFlag ? ctx->Polygon.CullFaceMode : GL_NONE) {
case GL_FRONT:
- sf.sf6.cull_mode = BRW_CULLMODE_FRONT;
+ sf->sf6.cull_mode = BRW_CULLMODE_FRONT;
break;
case GL_BACK:
- sf.sf6.cull_mode = BRW_CULLMODE_BACK;
+ sf->sf6.cull_mode = BRW_CULLMODE_BACK;
break;
case GL_FRONT_AND_BACK:
- sf.sf6.cull_mode = BRW_CULLMODE_BOTH;
+ sf->sf6.cull_mode = BRW_CULLMODE_BOTH;
break;
case GL_NONE:
- sf.sf6.cull_mode = BRW_CULLMODE_NONE;
+ sf->sf6.cull_mode = BRW_CULLMODE_NONE;
break;
default:
assert(0);
@@ -256,19 +219,18 @@ sf_unit_create_from_key(struct brw_context *brw, struct brw_sf_unit_key *key,
/* _NEW_LINE */
/* XXX use ctx->Const.Min/MaxLineWidth here */
- sf.sf6.line_width = CLAMP(key->line_width, 1.0, 5.0) * (1<<1);
+ sf->sf6.line_width = CLAMP(ctx->Line.Width, 1.0, 5.0) * (1<<1);
- sf.sf6.line_endcap_aa_region_width = 1;
- if (key->line_smooth)
- sf.sf6.aa_enable = 1;
- else if (sf.sf6.line_width <= 0x2)
- sf.sf6.line_width = 0;
+ sf->sf6.line_endcap_aa_region_width = 1;
+ if (ctx->Line.SmoothFlag)
+ sf->sf6.aa_enable = 1;
+ else if (sf->sf6.line_width <= 0x2)
+ sf->sf6.line_width = 0;
/* _NEW_BUFFERS */
- key->render_to_fbo = brw->intel.ctx.DrawBuffer->Name != 0;
- if (!key->render_to_fbo) {
+ if (!render_to_fbo) {
/* Rendering to an OpenGL window */
- sf.sf6.point_rast_rule = BRW_RASTRULE_UPPER_RIGHT;
+ sf->sf6.point_rast_rule = BRW_RASTRULE_UPPER_RIGHT;
}
else {
/* If rendering to an FBO, the pixel coordinate system is
@@ -290,74 +252,56 @@ sf_unit_create_from_key(struct brw_context *brw, struct brw_sf_unit_key *key,
* incorrectly, which is no worse than occurs without
* the value, so we're using it here.
*/
- sf.sf6.point_rast_rule = BRW_RASTRULE_LOWER_RIGHT;
+ sf->sf6.point_rast_rule = BRW_RASTRULE_LOWER_RIGHT;
}
/* XXX clamp max depends on AA vs. non-AA */
/* _NEW_POINT */
- sf.sf7.sprite_point = key->point_sprite;
- sf.sf7.point_size = CLAMP(rint(key->point_size), 1, 255) * (1<<3);
- sf.sf7.use_point_size_state = !key->use_vs_point_size;
- sf.sf7.aa_line_distance_mode = 0;
+ sf->sf7.sprite_point = ctx->Point.PointSprite;
+ sf->sf7.point_size = CLAMP(rint(CLAMP(ctx->Point.Size,
+ ctx->Point.MinSize,
+ ctx->Point.MaxSize)), 1, 255) * (1<<3);
+ sf->sf7.use_point_size_state = !(ctx->VertexProgram.PointSizeEnabled ||
+ ctx->Point._Attenuated);
+ sf->sf7.aa_line_distance_mode = 0;
/* might be BRW_NEW_PRIMITIVE if we have to adjust pv for polygons:
+ * _NEW_LIGHT
*/
- if (!key->pv_first) {
- sf.sf7.trifan_pv = 2;
- sf.sf7.linestrip_pv = 1;
- sf.sf7.tristrip_pv = 2;
+ if (ctx->Light.ProvokingVertex != GL_FIRST_VERTEX_CONVENTION) {
+ sf->sf7.trifan_pv = 2;
+ sf->sf7.linestrip_pv = 1;
+ sf->sf7.tristrip_pv = 2;
} else {
- sf.sf7.trifan_pv = 1;
- sf.sf7.linestrip_pv = 0;
- sf.sf7.tristrip_pv = 0;
+ sf->sf7.trifan_pv = 1;
+ sf->sf7.linestrip_pv = 0;
+ sf->sf7.tristrip_pv = 0;
}
- sf.sf7.line_last_pixel_enable = 0;
+ sf->sf7.line_last_pixel_enable = 0;
/* Set bias for OpenGL rasterization rules:
*/
- sf.sf6.dest_org_vbias = 0x8;
- sf.sf6.dest_org_hbias = 0x8;
-
- bo = brw_upload_cache(&brw->cache, BRW_SF_UNIT,
- key, sizeof(*key),
- reloc_bufs, 2,
- &sf, sizeof(sf));
+ sf->sf6.dest_org_vbias = 0x8;
+ sf->sf6.dest_org_hbias = 0x8;
/* STATE_PREFETCH command description describes this state as being
* something loaded through the GPE (L2 ISC), so it's INSTRUCTION domain.
*/
/* Emit SF program relocation */
- drm_intel_bo_emit_reloc(bo, offsetof(struct brw_sf_unit_state, thread0),
- brw->sf.prog_bo, sf.thread0.grf_reg_count << 1,
+ drm_intel_bo_emit_reloc(bo, (brw->sf.state_offset +
+ offsetof(struct brw_sf_unit_state, thread0)),
+ brw->sf.prog_bo, sf->thread0.grf_reg_count << 1,
I915_GEM_DOMAIN_INSTRUCTION, 0);
/* Emit SF viewport relocation */
- drm_intel_bo_emit_reloc(bo, offsetof(struct brw_sf_unit_state, sf5),
- brw->sf.vp_bo, (sf.sf5.front_winding |
- (sf.sf5.viewport_transform << 1)),
+ drm_intel_bo_emit_reloc(bo, (brw->sf.state_offset +
+ offsetof(struct brw_sf_unit_state, sf5)),
+ intel->batch.bo, (brw->sf.vp_offset |
+ sf->sf5.front_winding |
+ (sf->sf5.viewport_transform << 1)),
I915_GEM_DOMAIN_INSTRUCTION, 0);
- return bo;
-}
-
-static void upload_sf_unit( struct brw_context *brw )
-{
- struct brw_sf_unit_key key;
- drm_intel_bo *reloc_bufs[2];
-
- sf_unit_populate_key(brw, &key);
-
- reloc_bufs[0] = brw->sf.prog_bo;
- reloc_bufs[1] = brw->sf.vp_bo;
-
- drm_intel_bo_unreference(brw->sf.state_bo);
- brw->sf.state_bo = brw_search_cache(&brw->cache, BRW_SF_UNIT,
- &key, sizeof(key),
- reloc_bufs, 2,
- NULL);
- if (brw->sf.state_bo == NULL) {
- brw->sf.state_bo = sf_unit_create_from_key(brw, &key, reloc_bufs);
- }
+ brw->state.dirty.cache |= CACHE_NEW_SF_UNIT;
}
const struct brw_tracked_state brw_sf_unit = {
@@ -368,7 +312,8 @@ const struct brw_tracked_state brw_sf_unit = {
_NEW_POINT |
_NEW_SCISSOR |
_NEW_BUFFERS),
- .brw = BRW_NEW_URB_FENCE,
+ .brw = (BRW_NEW_BATCH |
+ BRW_NEW_URB_FENCE),
.cache = (CACHE_NEW_SF_VP |
CACHE_NEW_SF_PROG)
},
diff --git a/src/mesa/drivers/dri/i965/brw_state_dump.c b/src/mesa/drivers/dri/i965/brw_state_dump.c
index fdce79da2f4..b393259c915 100644
--- a/src/mesa/drivers/dri/i965/brw_state_dump.c
+++ b/src/mesa/drivers/dri/i965/brw_state_dump.c
@@ -195,8 +195,8 @@ static void dump_sf_viewport_state(struct brw_context *brw)
drm_intel_bo_map(brw->sf.vp_bo, GL_FALSE);
- vp = brw->sf.vp_bo->virtual;
- vp_off = brw->sf.vp_bo->offset;
+ vp = brw->sf.vp_bo->virtual + brw->sf.vp_offset;
+ vp_off = brw->sf.vp_bo->offset + brw->sf.vp_offset;
state_out(name, vp, vp_off, 0, "m00 = %f\n", vp->viewport.m00);
state_out(name, vp, vp_off, 1, "m11 = %f\n", vp->viewport.m11);
diff --git a/src/mesa/drivers/dri/i965/brw_structs.h b/src/mesa/drivers/dri/i965/brw_structs.h
index 6687a89e80a..8d4797fb675 100644
--- a/src/mesa/drivers/dri/i965/brw_structs.h
+++ b/src/mesa/drivers/dri/i965/brw_structs.h
@@ -80,25 +80,6 @@ struct brw_3d_control
GLuint dword3;
};
-
-struct brw_3d_primitive
-{
- struct
- {
- GLuint length:8;
- GLuint pad:2;
- GLuint topology:5;
- GLuint indexed:1;
- GLuint opcode:16;
- } header;
-
- GLuint verts_per_instance;
- GLuint start_vert_location;
- GLuint instance_count;
- GLuint start_instance_location;
- GLuint base_vert_location;
-};
-
/* These seem to be passed around as function args, so it works out
* better to keep them as #defines:
*/
@@ -1247,31 +1228,6 @@ struct brw_surface_state
};
-
-struct brw_vertex_buffer_state
-{
- struct {
- GLuint pitch:11;
- GLuint pad:15;
- GLuint access_type:1;
- GLuint vb_index:5;
- } vb0;
-
- GLuint start_addr;
- GLuint max_index;
-#if 1
- GLuint instance_data_step_rate; /* not included for sequential/random vertices? */
-#endif
-};
-
-#define BRW_VBP_MAX 17
-
-struct brw_vb_array_state {
- struct header header;
- struct brw_vertex_buffer_state vb[BRW_VBP_MAX];
-};
-
-
struct brw_vertex_element_state
{
struct
diff --git a/src/mesa/drivers/dri/i965/brw_vs.c b/src/mesa/drivers/dri/i965/brw_vs.c
index 6ae75d22c14..63ae13191f9 100644
--- a/src/mesa/drivers/dri/i965/brw_vs.c
+++ b/src/mesa/drivers/dri/i965/brw_vs.c
@@ -132,6 +132,9 @@ static void brw_upload_vs_prog(struct brw_context *brw)
ctx->Polygon.BackMode != GL_FILL);
key.two_side_color = (ctx->Light.Enabled && ctx->Light.Model.TwoSide);
+ /* _NEW_LIGHT | _NEW_BUFFERS */
+ key.clamp_vertex_color = ctx->Light._ClampVertexColor;
+
/* _NEW_POINT */
if (ctx->Point.PointSprite) {
for (i = 0; i < 8; i++) {
@@ -158,7 +161,8 @@ static void brw_upload_vs_prog(struct brw_context *brw)
*/
const struct brw_tracked_state brw_vs_prog = {
.dirty = {
- .mesa = _NEW_TRANSFORM | _NEW_POLYGON | _NEW_POINT | _NEW_LIGHT,
+ .mesa = (_NEW_TRANSFORM | _NEW_POLYGON | _NEW_POINT | _NEW_LIGHT |
+ _NEW_BUFFERS),
.brw = BRW_NEW_VERTEX_PROGRAM,
.cache = 0
},
diff --git a/src/mesa/drivers/dri/i965/brw_vs.h b/src/mesa/drivers/dri/i965/brw_vs.h
index 0b88cc1ec76..7ca84a54b01 100644
--- a/src/mesa/drivers/dri/i965/brw_vs.h
+++ b/src/mesa/drivers/dri/i965/brw_vs.h
@@ -45,6 +45,7 @@ struct brw_vs_prog_key {
GLuint copy_edgeflag:1;
GLuint point_coord_replace:8;
GLuint two_side_color: 1;
+ GLuint clamp_vertex_color:1;
};
diff --git a/src/mesa/drivers/dri/i965/brw_vs_emit.c b/src/mesa/drivers/dri/i965/brw_vs_emit.c
index acacf374b75..dd4e1e6c6ad 100644
--- a/src/mesa/drivers/dri/i965/brw_vs_emit.c
+++ b/src/mesa/drivers/dri/i965/brw_vs_emit.c
@@ -437,8 +437,14 @@ static void brw_vs_alloc_regs( struct brw_vs_compile *c )
if (c->key.nr_userclip)
header_regs += 2;
+ /* Each attribute is 16 bytes (1 vec4), so dividing by 8 gives us the
+ * number of 128-byte (1024-bit) units.
+ */
c->prog_data.urb_entry_size = (attributes_in_vue + header_regs + 7) / 8;
} else if (intel->gen == 5)
+ /* Each attribute is 16 bytes (1 vec4), so dividing by 4 gives us the
+ * number of 64-byte (512-bit) units.
+ */
c->prog_data.urb_entry_size = (attributes_in_vue + 6 + 3) / 4;
else
c->prog_data.urb_entry_size = (attributes_in_vue + 2 + 3) / 4;
@@ -2215,7 +2221,8 @@ void brw_vs_emit(struct brw_vs_compile *c )
* instructions. Instead, we directly modify the header
* of the last (already stored) instruction.
*/
- if (inst->DstReg.File == PROGRAM_OUTPUT) {
+ if (inst->DstReg.File == PROGRAM_OUTPUT &&
+ c->key.clamp_vertex_color) {
if ((inst->DstReg.Index == VERT_RESULT_COL0)
|| (inst->DstReg.Index == VERT_RESULT_COL1)
|| (inst->DstReg.Index == VERT_RESULT_BFC0)
diff --git a/src/mesa/drivers/dri/i965/brw_vtbl.c b/src/mesa/drivers/dri/i965/brw_vtbl.c
index 152ee141568..ce8712a260f 100644
--- a/src/mesa/drivers/dri/i965/brw_vtbl.c
+++ b/src/mesa/drivers/dri/i965/brw_vtbl.c
@@ -115,13 +115,11 @@ static void brw_set_draw_region( struct intel_context *intel,
{
struct brw_context *brw = brw_context(&intel->ctx);
- /* release old color/depth regions */
- if (brw->state.depth_region != depth_region)
+ if (brw->state.depth_region != depth_region) {
brw->state.dirty.brw |= BRW_NEW_DEPTH_BUFFER;
- intel_region_release(&brw->state.depth_region);
-
- /* reference new color/depth regions */
- intel_region_reference(&brw->state.depth_region, depth_region);
+ intel_region_release(&brw->state.depth_region);
+ intel_region_reference(&brw->state.depth_region, depth_region);
+ }
}
diff --git a/src/mesa/drivers/dri/i965/brw_wm.c b/src/mesa/drivers/dri/i965/brw_wm.c
index ca51d1599a4..65af227d831 100644
--- a/src/mesa/drivers/dri/i965/brw_wm.c
+++ b/src/mesa/drivers/dri/i965/brw_wm.c
@@ -185,6 +185,7 @@ static void do_wm_prog( struct brw_context *brw,
struct brw_fragment_program *fp,
struct brw_wm_prog_key *key)
{
+ struct intel_context *intel = &brw->intel;
struct brw_wm_compile *c;
const GLuint *program;
GLuint program_size;
@@ -238,12 +239,26 @@ static void do_wm_prog( struct brw_context *brw,
/* Scratch space is used for register spilling */
if (c->last_scratch) {
+ uint32_t total_scratch;
+
/* Per-thread scratch space is power-of-two sized. */
for (c->prog_data.total_scratch = 1024;
c->prog_data.total_scratch <= c->last_scratch;
c->prog_data.total_scratch *= 2) {
/* empty */
}
+ total_scratch = c->prog_data.total_scratch * brw->wm_max_threads;
+
+ if (brw->wm.scratch_bo && total_scratch > brw->wm.scratch_bo->size) {
+ drm_intel_bo_unreference(brw->wm.scratch_bo);
+ brw->wm.scratch_bo = NULL;
+ }
+ if (brw->wm.scratch_bo == NULL) {
+ brw->wm.scratch_bo = drm_intel_bo_alloc(intel->bufmgr,
+ "wm scratch",
+ total_scratch,
+ 4096);
+ }
}
else {
c->prog_data.total_scratch = 0;
@@ -348,6 +363,9 @@ static void brw_wm_populate_key( struct brw_context *brw,
/* _NEW_HINT */
key->linear_color = (ctx->Hint.PerspectiveCorrection == GL_FASTEST);
+ /* _NEW_FRAG_CLAMP | _NEW_BUFFERS */
+ key->clamp_fragment_color = ctx->Color._ClampFragmentColor;
+
/* _NEW_TEXTURE */
for (i = 0; i < BRW_MAX_TEX_UNIT; i++) {
const struct gl_texture_unit *unit = &ctx->Texture.Unit[i];
@@ -370,14 +388,14 @@ static void brw_wm_populate_key( struct brw_context *brw,
* well and our shadow compares always return the result in
* all 4 channels.
*/
- if (t->CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB) {
- if (t->DepthMode == GL_ALPHA) {
+ if (t->Sampler.CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB) {
+ if (t->Sampler.DepthMode == GL_ALPHA) {
swizzles[0] = SWIZZLE_ZERO;
swizzles[1] = SWIZZLE_ZERO;
swizzles[2] = SWIZZLE_ZERO;
- } else if (t->DepthMode == GL_LUMINANCE) {
+ } else if (t->Sampler.DepthMode == GL_LUMINANCE) {
swizzles[3] = SWIZZLE_ONE;
- } else if (t->DepthMode == GL_RED) {
+ } else if (t->Sampler.DepthMode == GL_RED) {
/* See table 3.23 of the GL 3.0 spec. */
swizzles[1] = SWIZZLE_ZERO;
swizzles[2] = SWIZZLE_ZERO;
@@ -471,6 +489,7 @@ const struct brw_tracked_state brw_wm_prog = {
_NEW_POLYGON |
_NEW_LINE |
_NEW_LIGHT |
+ _NEW_FRAG_CLAMP |
_NEW_BUFFERS |
_NEW_TEXTURE),
.brw = (BRW_NEW_FRAGMENT_PROGRAM |
diff --git a/src/mesa/drivers/dri/i965/brw_wm.h b/src/mesa/drivers/dri/i965/brw_wm.h
index c40d7bfae0a..40659f26025 100644
--- a/src/mesa/drivers/dri/i965/brw_wm.h
+++ b/src/mesa/drivers/dri/i965/brw_wm.h
@@ -65,6 +65,7 @@ struct brw_wm_prog_key {
GLuint nr_color_regions:5;
GLuint render_to_fbo:1;
GLuint alpha_test:1;
+ GLuint clamp_fragment_color:1;
GLbitfield proj_attrib_mask; /**< one bit per fragment program attribute */
GLuint shadowtex_mask:16;
diff --git a/src/mesa/drivers/dri/i965/brw_wm_emit.c b/src/mesa/drivers/dri/i965/brw_wm_emit.c
index ecfd21d4399..cdc1f367e5c 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_emit.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_emit.c
@@ -1408,6 +1408,9 @@ void emit_fb_write(struct brw_wm_compile *c,
*/
brw_push_insn_state(p);
+ if (c->key.clamp_fragment_color)
+ brw_set_saturate(p, 1);
+
for (channel = 0; channel < 4; channel++) {
if (intel->gen >= 6) {
/* gen6 SIMD16 single source DP write looks like:
@@ -1459,6 +1462,9 @@ void emit_fb_write(struct brw_wm_compile *c,
}
}
}
+
+ brw_set_saturate(p, 0);
+
/* skip over the regs populated above:
*/
if (c->dispatch_width == 16)
diff --git a/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c b/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c
index 30672b4251b..cfc30d8613f 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c
@@ -288,26 +288,26 @@ brw_wm_sampler_populate_key(struct brw_context *brw,
entry->seamless_cube_map = (texObj->Target == GL_TEXTURE_CUBE_MAP)
? ctx->Texture.CubeMapSeamless : GL_FALSE;
- entry->wrap_r = texObj->WrapR;
- entry->wrap_s = texObj->WrapS;
- entry->wrap_t = texObj->WrapT;
-
- entry->maxlod = texObj->MaxLod;
- entry->minlod = texObj->MinLod;
- entry->lod_bias = texUnit->LodBias + texObj->LodBias;
- entry->max_aniso = texObj->MaxAnisotropy;
- entry->minfilter = texObj->MinFilter;
- entry->magfilter = texObj->MagFilter;
- entry->comparemode = texObj->CompareMode;
- entry->comparefunc = texObj->CompareFunc;
+ entry->wrap_r = texObj->Sampler.WrapR;
+ entry->wrap_s = texObj->Sampler.WrapS;
+ entry->wrap_t = texObj->Sampler.WrapT;
+
+ entry->maxlod = texObj->Sampler.MaxLod;
+ entry->minlod = texObj->Sampler.MinLod;
+ entry->lod_bias = texUnit->LodBias + texObj->Sampler.LodBias;
+ entry->max_aniso = texObj->Sampler.MaxAnisotropy;
+ entry->minfilter = texObj->Sampler.MinFilter;
+ entry->magfilter = texObj->Sampler.MagFilter;
+ entry->comparemode = texObj->Sampler.CompareMode;
+ entry->comparefunc = texObj->Sampler.CompareFunc;
drm_intel_bo_unreference(brw->wm.sdc_bo[unit]);
if (firstImage->_BaseFormat == GL_DEPTH_COMPONENT) {
float bordercolor[4] = {
- texObj->BorderColor.f[0],
- texObj->BorderColor.f[0],
- texObj->BorderColor.f[0],
- texObj->BorderColor.f[0]
+ texObj->Sampler.BorderColor.f[0],
+ texObj->Sampler.BorderColor.f[0],
+ texObj->Sampler.BorderColor.f[0],
+ texObj->Sampler.BorderColor.f[0]
};
/* GL specs that border color for depth textures is taken from the
* R channel, while the hardware uses A. Spam R into all the
@@ -316,7 +316,7 @@ brw_wm_sampler_populate_key(struct brw_context *brw,
brw->wm.sdc_bo[unit] = upload_default_color(brw, bordercolor);
} else {
brw->wm.sdc_bo[unit] = upload_default_color(brw,
- texObj->BorderColor.f);
+ texObj->Sampler.BorderColor.f);
}
key->sampler_count = unit + 1;
}
diff --git a/src/mesa/drivers/dri/i965/brw_wm_state.c b/src/mesa/drivers/dri/i965/brw_wm_state.c
index 5b5afc4626b..be4b260a5ff 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_state.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_state.c
@@ -278,30 +278,10 @@ wm_unit_create_from_key(struct brw_context *brw, struct brw_wm_unit_key *key,
static void upload_wm_unit( struct brw_context *brw )
{
- struct intel_context *intel = &brw->intel;
struct brw_wm_unit_key key;
drm_intel_bo *reloc_bufs[3];
wm_unit_populate_key(brw, &key);
- /* Allocate the necessary scratch space if we haven't already. Don't
- * bother reducing the allocation later, since we use scratch so
- * rarely.
- */
- if (key.total_scratch) {
- GLuint total = key.total_scratch * brw->wm_max_threads;
-
- if (brw->wm.scratch_bo && total > brw->wm.scratch_bo->size) {
- drm_intel_bo_unreference(brw->wm.scratch_bo);
- brw->wm.scratch_bo = NULL;
- }
- if (brw->wm.scratch_bo == NULL) {
- brw->wm.scratch_bo = drm_intel_bo_alloc(intel->bufmgr,
- "wm scratch",
- total,
- 4096);
- }
- }
-
reloc_bufs[0] = brw->wm.prog_bo;
reloc_bufs[1] = brw->wm.scratch_bo;
reloc_bufs[2] = brw->wm.sampler_bo;
diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
index 1010d9f6f9c..e3396a3cbd4 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
@@ -100,18 +100,37 @@ static uint32_t brw_format_for_mesa_format[MESA_FORMAT_COUNT] =
[MESA_FORMAT_SLA8] = BRW_SURFACEFORMAT_L8A8_UNORM_SRGB,
[MESA_FORMAT_SL8] = BRW_SURFACEFORMAT_L8_UNORM_SRGB,
[MESA_FORMAT_DUDV8] = BRW_SURFACEFORMAT_R8G8_SNORM,
+ [MESA_FORMAT_SIGNED_R8] = BRW_SURFACEFORMAT_R8_SNORM,
+ [MESA_FORMAT_SIGNED_RG88_REV] = BRW_SURFACEFORMAT_R8G8_SNORM,
[MESA_FORMAT_SIGNED_RGBA8888_REV] = BRW_SURFACEFORMAT_R8G8B8A8_SNORM,
+ [MESA_FORMAT_SIGNED_R16] = BRW_SURFACEFORMAT_R16_SNORM,
+ [MESA_FORMAT_SIGNED_GR1616] = BRW_SURFACEFORMAT_R16G16_SNORM,
+ [MESA_FORMAT_RGBA_FLOAT32] = BRW_SURFACEFORMAT_R32G32B32A32_FLOAT,
+ [MESA_FORMAT_RG_FLOAT32] = BRW_SURFACEFORMAT_R32G32_FLOAT,
+ [MESA_FORMAT_R_FLOAT32] = BRW_SURFACEFORMAT_R32_FLOAT,
+ [MESA_FORMAT_INTENSITY_FLOAT32] = BRW_SURFACEFORMAT_I32_FLOAT,
+ [MESA_FORMAT_LUMINANCE_FLOAT32] = BRW_SURFACEFORMAT_L32_FLOAT,
+ [MESA_FORMAT_ALPHA_FLOAT32] = BRW_SURFACEFORMAT_A32_FLOAT,
+ [MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32] = BRW_SURFACEFORMAT_L32A32_FLOAT,
};
bool
brw_render_target_supported(gl_format format)
{
+ /* These are not color render targets like the table holds, but we
+ * ask the question for FBO completeness.
+ */
if (format == MESA_FORMAT_S8_Z24 ||
format == MESA_FORMAT_X8_Z24 ||
format == MESA_FORMAT_Z16) {
return true;
}
+ /* The value of this BRW_SURFACEFORMAT is 0, so hardcode it.
+ */
+ if (format == MESA_FORMAT_RGBA_FLOAT32)
+ return true;
+
/* Not exactly true, as some of those formats are not renderable.
* But at least we know how to translate them.
*/
@@ -155,6 +174,13 @@ static GLuint translate_tex_format( gl_format mesa_format,
return brw_format_for_mesa_format[mesa_format];
else if (srgb_decode == GL_SKIP_DECODE_EXT)
return brw_format_for_mesa_format[_mesa_get_srgb_format_linear(mesa_format)];
+
+ case MESA_FORMAT_RGBA_FLOAT32:
+ /* The value of this BRW_SURFACEFORMAT is 0, which tricks the
+ * assertion below.
+ */
+ return BRW_SURFACEFORMAT_R32G32B32A32_FLOAT;
+
default:
assert(brw_format_for_mesa_format[mesa_format] != 0);
return brw_format_for_mesa_format[mesa_format];
@@ -197,8 +223,9 @@ brw_update_texture_surface( struct gl_context *ctx, GLuint unit )
surf->ss0.mipmap_layout_mode = BRW_SURFACE_MIPMAPLAYOUT_BELOW;
surf->ss0.surface_type = translate_tex_target(tObj->Target);
surf->ss0.surface_format = translate_tex_format(firstImage->TexFormat,
- firstImage->InternalFormat,
- tObj->DepthMode, tObj->sRGBDecode);
+ firstImage->InternalFormat,
+ tObj->Sampler.DepthMode,
+ tObj->Sampler.sRGBDecode);
/* This is ok for all textures with channel width 8bit or less:
*/
@@ -425,6 +452,14 @@ brw_update_renderbuffer_surface(struct brw_context *brw,
*/
surf->ss0.surface_format = BRW_SURFACEFORMAT_B8G8R8A8_UNORM;
break;
+ case MESA_FORMAT_INTENSITY_FLOAT32:
+ case MESA_FORMAT_LUMINANCE_FLOAT32:
+ /* For these formats, we just need to read/write the first
+ * channel into R, which is to say that we just treat them as
+ * GL_RED.
+ */
+ surf->ss0.surface_format = BRW_SURFACEFORMAT_R32_FLOAT;
+ break;
case MESA_FORMAT_SARGB8:
/* without GL_EXT_framebuffer_sRGB we shouldn't bind sRGB
surfaces to the blend/update as sRGB */
@@ -434,8 +469,8 @@ brw_update_renderbuffer_surface(struct brw_context *brw,
surf->ss0.surface_format = BRW_SURFACEFORMAT_B8G8R8A8_UNORM;
break;
default:
+ assert(brw_render_target_supported(irb->Base.Format));
surf->ss0.surface_format = brw_format_for_mesa_format[irb->Base.Format];
- assert(surf->ss0.surface_format != 0);
}
surf->ss0.surface_type = BRW_SURFACE_2D;
diff --git a/src/mesa/drivers/dri/i965/gen6_cc.c b/src/mesa/drivers/dri/i965/gen6_cc.c
index d1648a102d4..1b935fb5e70 100644
--- a/src/mesa/drivers/dri/i965/gen6_cc.c
+++ b/src/mesa/drivers/dri/i965/gen6_cc.c
@@ -210,10 +210,10 @@ color_calc_state_populate_key(struct brw_context *brw,
if (ctx->Color.AlphaEnabled)
key->alpha_ref = ctx->Color.AlphaRef;
- key->blend_constant_color[0] = ctx->Color.BlendColor[0];
- key->blend_constant_color[1] = ctx->Color.BlendColor[1];
- key->blend_constant_color[2] = ctx->Color.BlendColor[2];
- key->blend_constant_color[3] = ctx->Color.BlendColor[3];
+ key->blend_constant_color[0] = ctx->Color.BlendColorUnclamped[0];
+ key->blend_constant_color[1] = ctx->Color.BlendColorUnclamped[1];
+ key->blend_constant_color[2] = ctx->Color.BlendColorUnclamped[2];
+ key->blend_constant_color[3] = ctx->Color.BlendColorUnclamped[3];
}
/**
diff --git a/src/mesa/drivers/dri/i965/gen6_gs_state.c b/src/mesa/drivers/dri/i965/gen6_gs_state.c
index 7296c7cd1b0..c1d0a739394 100644
--- a/src/mesa/drivers/dri/i965/gen6_gs_state.c
+++ b/src/mesa/drivers/dri/i965/gen6_gs_state.c
@@ -44,38 +44,22 @@ upload_gs_state(struct brw_context *brw)
OUT_BATCH(0);
ADVANCE_BATCH();
- if (brw->gs.prog_bo) {
- BEGIN_BATCH(7);
- OUT_BATCH(_3DSTATE_GS << 16 | (7 - 2));
- OUT_RELOC(brw->gs.prog_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
- OUT_BATCH(GEN6_GS_SPF_MODE |
- (0 << GEN6_GS_SAMPLER_COUNT_SHIFT) |
- (0 << GEN6_GS_BINDING_TABLE_ENTRY_COUNT_SHIFT));
- OUT_BATCH(0); /* scratch space base offset */
- OUT_BATCH((1 << GEN6_GS_DISPATCH_START_GRF_SHIFT) |
- (brw->gs.prog_data->urb_read_length << GEN6_GS_URB_READ_LENGTH_SHIFT) |
- (0 << GEN6_GS_URB_ENTRY_READ_OFFSET_SHIFT));
- OUT_BATCH((0 << GEN6_GS_MAX_THREADS_SHIFT) |
- GEN6_GS_STATISTICS_ENABLE |
- GEN6_GS_RENDERING_ENABLE);
- OUT_BATCH(GEN6_GS_ENABLE);
- ADVANCE_BATCH();
- } else {
- BEGIN_BATCH(7);
- OUT_BATCH(_3DSTATE_GS << 16 | (7 - 2));
- OUT_BATCH(0); /* prog_bo */
- OUT_BATCH((0 << GEN6_GS_SAMPLER_COUNT_SHIFT) |
- (0 << GEN6_GS_BINDING_TABLE_ENTRY_COUNT_SHIFT));
- OUT_BATCH(0); /* scratch space base offset */
- OUT_BATCH((1 << GEN6_GS_DISPATCH_START_GRF_SHIFT) |
- (0 << GEN6_GS_URB_READ_LENGTH_SHIFT) |
- (0 << GEN6_GS_URB_ENTRY_READ_OFFSET_SHIFT));
- OUT_BATCH((0 << GEN6_GS_MAX_THREADS_SHIFT) |
- GEN6_GS_STATISTICS_ENABLE |
- GEN6_GS_RENDERING_ENABLE);
- OUT_BATCH(0);
- ADVANCE_BATCH();
- }
+ // GS should never be used on Gen6. Disable it.
+ assert(brw->gs.prog_bo == NULL);
+ BEGIN_BATCH(7);
+ OUT_BATCH(_3DSTATE_GS << 16 | (7 - 2));
+ OUT_BATCH(0); /* prog_bo */
+ OUT_BATCH((0 << GEN6_GS_SAMPLER_COUNT_SHIFT) |
+ (0 << GEN6_GS_BINDING_TABLE_ENTRY_COUNT_SHIFT));
+ OUT_BATCH(0); /* scratch space base offset */
+ OUT_BATCH((1 << GEN6_GS_DISPATCH_START_GRF_SHIFT) |
+ (0 << GEN6_GS_URB_READ_LENGTH_SHIFT) |
+ (0 << GEN6_GS_URB_ENTRY_READ_OFFSET_SHIFT));
+ OUT_BATCH((0 << GEN6_GS_MAX_THREADS_SHIFT) |
+ GEN6_GS_STATISTICS_ENABLE |
+ GEN6_GS_RENDERING_ENABLE);
+ OUT_BATCH(0);
+ ADVANCE_BATCH();
}
const struct brw_tracked_state gen6_gs_state = {
diff --git a/src/mesa/drivers/dri/i965/gen6_urb.c b/src/mesa/drivers/dri/i965/gen6_urb.c
index c3819f9b360..909e1bbe9ba 100644
--- a/src/mesa/drivers/dri/i965/gen6_urb.c
+++ b/src/mesa/drivers/dri/i965/gen6_urb.c
@@ -34,26 +34,25 @@
static void
prepare_urb( struct brw_context *brw )
{
- int urb_size, max_urb_entry;
- struct intel_context *intel = &brw->intel;
-
- if (IS_GT1(intel->intelScreen->deviceID)) {
- urb_size = 32 * 1024;
- max_urb_entry = 128;
- } else {
- urb_size = 64 * 1024;
- max_urb_entry = 256;
- }
-
- brw->urb.nr_vs_entries = max_urb_entry;
- brw->urb.nr_gs_entries = max_urb_entry;
+ int nr_vs_entries;
/* CACHE_NEW_VS_PROG */
brw->urb.vs_size = MAX2(brw->vs.prog_data->urb_entry_size, 1);
- if (2 * brw->urb.vs_size > urb_size)
- brw->urb.nr_vs_entries = brw->urb.nr_gs_entries =
- (urb_size ) / (2 * brw->urb.vs_size);
+ /* Calculate how many VS URB entries fit in the total URB size */
+ nr_vs_entries = (brw->urb.size * 1024) / (brw->urb.vs_size * 128);
+
+ if (nr_vs_entries > brw->urb.max_vs_handles)
+ nr_vs_entries = brw->urb.max_vs_handles;
+
+ /* According to volume 2a, nr_vs_entries must be a multiple of 4. */
+ brw->urb.nr_vs_entries = ROUND_DOWN_TO(nr_vs_entries, 4);
+
+ /* Since we currently don't support Geometry Shaders, we always put the
+ * GS unit in passthrough mode and don't allocate it any URB space.
+ */
+ brw->urb.nr_gs_entries = 0;
+ brw->urb.gs_size = 1; /* Incorrect, but with 0 GS entries it doesn't matter. */
}
static void
@@ -61,6 +60,7 @@ upload_urb(struct brw_context *brw)
{
struct intel_context *intel = &brw->intel;
+ assert(brw->urb.nr_vs_entries >= 24);
assert(brw->urb.nr_vs_entries % 4 == 0);
assert(brw->urb.nr_gs_entries % 4 == 0);
/* GS requirement */
@@ -70,7 +70,7 @@ upload_urb(struct brw_context *brw)
OUT_BATCH(_3DSTATE_URB << 16 | (3 - 2));
OUT_BATCH(((brw->urb.vs_size - 1) << GEN6_URB_VS_SIZE_SHIFT) |
((brw->urb.nr_vs_entries) << GEN6_URB_VS_ENTRIES_SHIFT));
- OUT_BATCH(((brw->urb.vs_size - 1) << GEN6_URB_GS_SIZE_SHIFT) |
+ OUT_BATCH(((brw->urb.gs_size - 1) << GEN6_URB_GS_SIZE_SHIFT) |
((brw->urb.nr_gs_entries) << GEN6_URB_GS_ENTRIES_SHIFT));
ADVANCE_BATCH();
}
diff --git a/src/mesa/drivers/dri/i965/gen6_vs_state.c b/src/mesa/drivers/dri/i965/gen6_vs_state.c
index ce0b8ea7eaa..a10cec318d6 100644
--- a/src/mesa/drivers/dri/i965/gen6_vs_state.c
+++ b/src/mesa/drivers/dri/i965/gen6_vs_state.c
@@ -137,7 +137,7 @@ upload_vs_state(struct brw_context *brw)
(brw->vs.prog_data->urb_read_length << GEN6_VS_URB_READ_LENGTH_SHIFT) |
(0 << GEN6_VS_URB_ENTRY_READ_OFFSET_SHIFT));
- OUT_BATCH(((60 - 1) << GEN6_VS_MAX_THREADS_SHIFT) | /* max 60 threads for gen6 */
+ OUT_BATCH(((brw->vs_max_threads - 1) << GEN6_VS_MAX_THREADS_SHIFT) |
GEN6_VS_STATISTICS_ENABLE |
GEN6_VS_ENABLE);
ADVANCE_BATCH();
diff --git a/src/mesa/drivers/dri/i965/gen6_wm_state.c b/src/mesa/drivers/dri/i965/gen6_wm_state.c
index 78901ecac57..8215cb15a9c 100644
--- a/src/mesa/drivers/dri/i965/gen6_wm_state.c
+++ b/src/mesa/drivers/dri/i965/gen6_wm_state.c
@@ -144,7 +144,7 @@ upload_wm_state(struct brw_context *brw)
dw4 |= (brw->wm.prog_data->first_curbe_grf <<
GEN6_WM_DISPATCH_START_GRF_SHIFT_0);
- dw5 |= (40 - 1) << GEN6_WM_MAX_THREADS_SHIFT;
+ dw5 |= (brw->wm_max_threads - 1) << GEN6_WM_MAX_THREADS_SHIFT;
/* CACHE_NEW_WM_PROG */
if (brw->wm.prog_data->dispatch_width == 8)
@@ -184,7 +184,12 @@ upload_wm_state(struct brw_context *brw)
OUT_BATCH(_3DSTATE_WM << 16 | (9 - 2));
OUT_RELOC(brw->wm.prog_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
OUT_BATCH(dw2);
- OUT_BATCH(0); /* scratch space base offset */
+ if (brw->wm.prog_data->total_scratch) {
+ OUT_RELOC(brw->wm.scratch_bo, I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
+ ffs(brw->wm.prog_data->total_scratch) - 11);
+ } else {
+ OUT_BATCH(0);
+ }
OUT_BATCH(dw4);
OUT_BATCH(dw5);
OUT_BATCH(dw6);
diff --git a/src/mesa/drivers/dri/intel/intel_batchbuffer.c b/src/mesa/drivers/dri/intel/intel_batchbuffer.c
index 42b4f923e0c..53d6e7c6acc 100644
--- a/src/mesa/drivers/dri/intel/intel_batchbuffer.c
+++ b/src/mesa/drivers/dri/intel/intel_batchbuffer.c
@@ -176,8 +176,6 @@ intel_batchbuffer_emit_reloc(struct intel_context *intel,
{
int ret;
- assert(delta < buffer->size);
-
ret = drm_intel_bo_emit_reloc(intel->batch.bo, 4*intel->batch.used,
buffer, delta,
read_domains, write_domain);
@@ -203,8 +201,6 @@ intel_batchbuffer_emit_reloc_fenced(struct intel_context *intel,
{
int ret;
- assert(delta < buffer->size);
-
ret = drm_intel_bo_emit_reloc_fence(intel->batch.bo, 4*intel->batch.used,
buffer, delta,
read_domains, write_domain);
diff --git a/src/mesa/drivers/dri/intel/intel_blit.c b/src/mesa/drivers/dri/intel/intel_blit.c
index e1ab7f16371..5aac1f6fa24 100644
--- a/src/mesa/drivers/dri/intel/intel_blit.c
+++ b/src/mesa/drivers/dri/intel/intel_blit.c
@@ -146,6 +146,17 @@ intelEmitCopyBlit(struct intel_context *intel,
src_pitch *= cpp;
dst_pitch *= cpp;
+ /* For big formats (such as floating point), do the copy using 32bpp and
+ * multiply the coordinates.
+ */
+ if (cpp > 4) {
+ assert(cpp % 4 == 0);
+ dst_x *= cpp / 4;
+ dst_x2 *= cpp / 4;
+ src_x *= cpp / 4;
+ cpp = 4;
+ }
+
BR13 = br13_for_cpp(cpp) | translate_raster_op(logic_op) << 16;
switch (cpp) {
@@ -211,7 +222,7 @@ intelClearWithBlit(struct gl_context *ctx, GLbitfield mask)
{
struct intel_context *intel = intel_context(ctx);
struct gl_framebuffer *fb = ctx->DrawBuffer;
- GLuint clear_depth;
+ GLuint clear_depth_value, clear_depth_mask;
GLboolean all;
GLint cx, cy, cw, ch;
GLbitfield fail_mask = 0;
@@ -220,12 +231,15 @@ intelClearWithBlit(struct gl_context *ctx, GLbitfield mask)
/*
* Compute values for clearing the buffers.
*/
- clear_depth = 0;
+ clear_depth_value = 0;
+ clear_depth_mask = 0;
if (mask & BUFFER_BIT_DEPTH) {
- clear_depth = (GLuint) (fb->_DepthMax * ctx->Depth.Clear);
+ clear_depth_value = (GLuint) (fb->_DepthMax * ctx->Depth.Clear);
+ clear_depth_mask = XY_BLT_WRITE_RGB;
}
if (mask & BUFFER_BIT_STENCIL) {
- clear_depth |= (ctx->Stencil.Clear & 0xff) << 24;
+ clear_depth_value |= (ctx->Stencil.Clear & 0xff) << 24;
+ clear_depth_mask |= XY_BLT_WRITE_ALPHA;
}
cx = fb->_Xmin;
@@ -239,12 +253,13 @@ intelClearWithBlit(struct gl_context *ctx, GLbitfield mask)
if (cw == 0 || ch == 0)
return 0;
- GLuint buf;
all = (cw == fb->Width && ch == fb->Height);
/* Loop over all renderbuffers */
- for (buf = 0; buf < BUFFER_COUNT && mask; buf++) {
- const GLbitfield bufBit = 1 << buf;
+ mask &= (1 << BUFFER_COUNT) - 1;
+ while (mask) {
+ GLuint buf = _mesa_ffs(mask) - 1;
+ GLboolean is_depth_stencil = buf == BUFFER_DEPTH || buf == BUFFER_STENCIL;
struct intel_renderbuffer *irb;
drm_intel_bo *write_buffer;
int x1, y1, x2, y2;
@@ -253,11 +268,15 @@ intelClearWithBlit(struct gl_context *ctx, GLbitfield mask)
int pitch, cpp;
drm_intel_bo *aper_array[2];
- if (!(mask & bufBit))
- continue;
+ mask &= ~(1 << buf);
- /* OK, clear this renderbuffer */
irb = intel_get_renderbuffer(fb, buf);
+ if (irb == NULL || irb->region == NULL || irb->region->buffer == NULL) {
+ fail_mask |= 1 << buf;
+ continue;
+ }
+
+ /* OK, clear this renderbuffer */
write_buffer = intel_region_buffer(intel, irb->region,
all ? INTEL_WRITE_FULL :
INTEL_WRITE_PART);
@@ -274,16 +293,13 @@ intelClearWithBlit(struct gl_context *ctx, GLbitfield mask)
irb->region->buffer, (pitch * cpp),
x1, y1, x2 - x1, y2 - y1);
- BR13 = br13_for_cpp(cpp) | 0xf0 << 16;
+ BR13 = 0xf0 << 16;
CMD = XY_COLOR_BLT_CMD;
/* Setup the blit command */
if (cpp == 4) {
- if (buf == BUFFER_DEPTH || buf == BUFFER_STENCIL) {
- if (mask & BUFFER_BIT_DEPTH)
- CMD |= XY_BLT_WRITE_RGB;
- if (mask & BUFFER_BIT_STENCIL)
- CMD |= XY_BLT_WRITE_ALPHA;
+ if (is_depth_stencil) {
+ CMD |= clear_depth_mask;
} else {
/* clearing RGBA */
CMD |= XY_BLT_WRITE_ALPHA | XY_BLT_WRITE_RGB;
@@ -300,8 +316,8 @@ intelClearWithBlit(struct gl_context *ctx, GLbitfield mask)
#endif
BR13 |= (pitch * cpp);
- if (buf == BUFFER_DEPTH || buf == BUFFER_STENCIL) {
- clear_val = clear_depth;
+ if (is_depth_stencil) {
+ clear_val = clear_depth_value;
} else {
uint8_t clear[4];
GLclampf *color = ctx->Color.ClearColor;
@@ -333,12 +349,13 @@ intelClearWithBlit(struct gl_context *ctx, GLbitfield mask)
clear[3], clear[3]);
break;
default:
- fail_mask |= bufBit;
- mask &= ~bufBit;
+ fail_mask |= 1 << buf;
continue;
}
}
+ BR13 |= br13_for_cpp(cpp);
+
assert(x1 < x2);
assert(y1 < y2);
@@ -367,8 +384,6 @@ intelClearWithBlit(struct gl_context *ctx, GLbitfield mask)
if (buf == BUFFER_DEPTH || buf == BUFFER_STENCIL)
mask &= ~(BUFFER_BIT_DEPTH | BUFFER_BIT_STENCIL);
- else
- mask &= ~bufBit; /* turn off bit, for faster loop exit */
}
return fail_mask;
diff --git a/src/mesa/drivers/dri/intel/intel_chipset.h b/src/mesa/drivers/dri/intel/intel_chipset.h
index 4ff9140d56e..a3f40effc35 100644
--- a/src/mesa/drivers/dri/intel/intel_chipset.h
+++ b/src/mesa/drivers/dri/intel/intel_chipset.h
@@ -125,18 +125,17 @@
/* Compat macro for intel_decode.c */
#define IS_IRONLAKE(devid) IS_GEN5(devid)
-#define IS_GEN6(devid) (devid == PCI_CHIP_SANDYBRIDGE_GT1 || \
- devid == PCI_CHIP_SANDYBRIDGE_GT2 || \
- devid == PCI_CHIP_SANDYBRIDGE_GT2_PLUS || \
- devid == PCI_CHIP_SANDYBRIDGE_M_GT1 || \
- devid == PCI_CHIP_SANDYBRIDGE_M_GT2 || \
- devid == PCI_CHIP_SANDYBRIDGE_M_GT2_PLUS || \
- devid == PCI_CHIP_SANDYBRIDGE_S)
-
#define IS_GT1(devid) (devid == PCI_CHIP_SANDYBRIDGE_GT1 || \
devid == PCI_CHIP_SANDYBRIDGE_M_GT1 || \
devid == PCI_CHIP_SANDYBRIDGE_S)
+#define IS_GT2(devid) (devid == PCI_CHIP_SANDYBRIDGE_GT2 || \
+ devid == PCI_CHIP_SANDYBRIDGE_GT2_PLUS || \
+ devid == PCI_CHIP_SANDYBRIDGE_M_GT2 || \
+ devid == PCI_CHIP_SANDYBRIDGE_M_GT2_PLUS)
+
+#define IS_GEN6(devid) (IS_GT1(devid) || IS_GT2(devid))
+
#define IS_965(devid) (IS_GEN4(devid) || \
IS_G4X(devid) || \
IS_GEN5(devid) || \
diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c
index c2e2a98af5e..02e7f7717fc 100644
--- a/src/mesa/drivers/dri/intel/intel_context.c
+++ b/src/mesa/drivers/dri/intel/intel_context.c
@@ -62,10 +62,6 @@ int INTEL_DEBUG = (0);
#endif
-#define DRIVER_DATE "20100330 DEVELOPMENT"
-#define DRIVER_DATE_GEM "GEM " DRIVER_DATE
-
-
static const GLubyte *
intelGetString(struct gl_context * ctx, GLenum name)
{
@@ -182,7 +178,7 @@ intelGetString(struct gl_context * ctx, GLenum name)
break;
}
- (void) driGetRendererString(buffer, chipset, DRIVER_DATE_GEM, 0);
+ (void) driGetRendererString(buffer, chipset, 0);
return (GLubyte *) buffer;
default:
@@ -728,8 +724,13 @@ intelInitContext(struct intel_context *intel,
ctx->TextureFormatSupported[MESA_FORMAT_RG88] = GL_TRUE;
ctx->TextureFormatSupported[MESA_FORMAT_RG1616] = GL_TRUE;
+ /* GL_MESA_texture_signed_rgba / GL_EXT_texture_snorm */
ctx->TextureFormatSupported[MESA_FORMAT_DUDV8] = GL_TRUE;
ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_RGBA8888_REV] = GL_TRUE;
+ ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_R8] = GL_TRUE;
+ ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_RG88_REV] = GL_TRUE;
+ ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_R16] = GL_TRUE;
+ ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_GR1616] = GL_TRUE;
/* GL_EXT_texture_sRGB */
ctx->TextureFormatSupported[MESA_FORMAT_SARGB8] = GL_TRUE;
@@ -742,8 +743,19 @@ intelInitContext(struct intel_context *intel,
ctx->TextureFormatSupported[MESA_FORMAT_SL8] = GL_TRUE;
ctx->TextureFormatSupported[MESA_FORMAT_SLA8] = GL_TRUE;
}
+
+#ifdef TEXTURE_FLOAT_ENABLED
+ ctx->TextureFormatSupported[MESA_FORMAT_RGBA_FLOAT32] = GL_TRUE;
+ ctx->TextureFormatSupported[MESA_FORMAT_RG_FLOAT32] = GL_TRUE;
+ ctx->TextureFormatSupported[MESA_FORMAT_R_FLOAT32] = GL_TRUE;
+ ctx->TextureFormatSupported[MESA_FORMAT_INTENSITY_FLOAT32] = GL_TRUE;
+ ctx->TextureFormatSupported[MESA_FORMAT_LUMINANCE_FLOAT32] = GL_TRUE;
+ ctx->TextureFormatSupported[MESA_FORMAT_ALPHA_FLOAT32] = GL_TRUE;
+ ctx->TextureFormatSupported[MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32] = GL_TRUE;
#endif
+#endif /* !I915 */
+
driParseConfigFiles(&intel->optionCache, &intelScreen->optionCache,
sPriv->myNum, (intel->gen >= 4) ? "i965" : "i915");
if (intel->gen < 4)
diff --git a/src/mesa/drivers/dri/intel/intel_context.h b/src/mesa/drivers/dri/intel/intel_context.h
index 772b2fba5a8..c59119373da 100644
--- a/src/mesa/drivers/dri/intel/intel_context.h
+++ b/src/mesa/drivers/dri/intel/intel_context.h
@@ -295,9 +295,33 @@ extern char *__progname;
#define SUBPIXEL_Y 0.125
#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
-#define ALIGN(value, alignment) ((value + alignment - 1) & ~(alignment - 1))
-#define ROUND_DOWN_TO(value, alignment) (ALIGN(value - alignment - 1, \
- alignment))
+
+/**
+ * Align a value up to an alignment value
+ *
+ * If \c value is not already aligned to the requested alignment value, it
+ * will be rounded up.
+ *
+ * \param value Value to be rounded
+ * \param alignment Alignment value to be used. This must be a power of two.
+ *
+ * \sa ROUND_DOWN_TO()
+ */
+#define ALIGN(value, alignment) (((value) + alignment - 1) & ~(alignment - 1))
+
+/**
+ * Align a value down to an alignment value
+ *
+ * If \c value is not already aligned to the requested alignment value, it
+ * will be rounded down.
+ *
+ * \param value Value to be rounded
+ * \param alignment Alignment value to be used. This must be a power of two.
+ *
+ * \sa ALIGN()
+ */
+#define ROUND_DOWN_TO(value, alignment) ((value) & ~(alignment - 1))
+
#define IS_POWER_OF_TWO(val) (((val) & (val - 1)) == 0)
static INLINE uint32_t
diff --git a/src/mesa/drivers/dri/intel/intel_extensions.c b/src/mesa/drivers/dri/intel/intel_extensions.c
index febc1d4f859..e107534a4da 100644
--- a/src/mesa/drivers/dri/intel/intel_extensions.c
+++ b/src/mesa/drivers/dri/intel/intel_extensions.c
@@ -160,6 +160,7 @@ static const struct dri_extension i915_extensions[] = {
/** i965-only extensions */
static const struct dri_extension brw_extensions[] = {
+ { "GL_ARB_color_buffer_float", NULL },
{ "GL_ARB_depth_clamp", NULL },
{ "GL_ARB_depth_texture", NULL },
{ "GL_ARB_fragment_coord_conventions", NULL },
@@ -171,6 +172,9 @@ static const struct dri_extension brw_extensions[] = {
{ "GL_ARB_point_sprite", NULL },
{ "GL_ARB_seamless_cube_map", NULL },
{ "GL_ARB_shadow", NULL },
+#ifdef TEXTURE_FLOAT_ENABLED
+ { "GL_ARB_texture_float", NULL },
+#endif
{ "GL_MESA_texture_signed_rgba", NULL },
{ "GL_ARB_texture_non_power_of_two", NULL },
{ "GL_ARB_texture_rg", NULL },
diff --git a/src/mesa/drivers/dri/intel/intel_fbo.c b/src/mesa/drivers/dri/intel/intel_fbo.c
index 8b57eb19f56..ad2468a3237 100644
--- a/src/mesa/drivers/dri/intel/intel_fbo.c
+++ b/src/mesa/drivers/dri/intel/intel_fbo.c
@@ -385,7 +385,7 @@ intel_update_wrapper(struct gl_context *ctx, struct intel_renderbuffer *irb,
irb->Base.Format = texImage->TexFormat;
irb->Base.DataType = intel_mesa_format_to_rb_datatype(texImage->TexFormat);
irb->Base.InternalFormat = texImage->InternalFormat;
- irb->Base._BaseFormat = _mesa_base_fbo_format(ctx, irb->Base.InternalFormat);
+ irb->Base._BaseFormat = _mesa_base_tex_format(ctx, irb->Base.InternalFormat);
irb->Base.Width = texImage->Width;
irb->Base.Height = texImage->Height;
diff --git a/src/mesa/drivers/dri/intel/intel_span.c b/src/mesa/drivers/dri/intel/intel_span.c
index 1f41518535c..16bce20317e 100644
--- a/src/mesa/drivers/dri/intel/intel_span.c
+++ b/src/mesa/drivers/dri/intel/intel_span.c
@@ -30,6 +30,7 @@
#include "main/macros.h"
#include "main/mtypes.h"
#include "main/colormac.h"
+#include "main/renderbuffer.h"
#include "intel_buffers.h"
#include "intel_fbo.h"
@@ -114,57 +115,6 @@ intel_set_span_functions(struct intel_context *intel,
#define TAG2(x,y) intel_##x##y##_A8
#include "spantmp2.h"
-#define SPANTMP_MESA_FMT MESA_FORMAT_R8
-#define TAG(x) intel_##x##_R8
-#define TAG2(x,y) intel_##x##y##_R8
-#include "spantmp2.h"
-
-#define SPANTMP_MESA_FMT MESA_FORMAT_RG88
-#define TAG(x) intel_##x##_RG88
-#define TAG2(x,y) intel_##x##y##_RG88
-#include "spantmp2.h"
-
-#define SPANTMP_MESA_FMT MESA_FORMAT_R16
-#define TAG(x) intel_##x##_R16
-#define TAG2(x,y) intel_##x##y##_R16
-#include "spantmp2.h"
-
-#define SPANTMP_MESA_FMT MESA_FORMAT_RG1616
-#define TAG(x) intel_##x##_RG1616
-#define TAG2(x,y) intel_##x##y##_RG1616
-#include "spantmp2.h"
-
-#define LOCAL_DEPTH_VARS \
- struct intel_renderbuffer *irb = intel_renderbuffer(rb); \
- const GLint yScale = rb->Name ? 1 : -1; \
- const GLint yBias = rb->Name ? 0 : rb->Height - 1; \
- int minx = 0, miny = 0; \
- int maxx = rb->Width; \
- int maxy = rb->Height; \
- int pitch = irb->region->pitch * irb->region->cpp; \
- void *buf = irb->region->buffer->virtual; \
- (void)buf; (void)pitch; /* unused for non-gttmap. */ \
-
-#define LOCAL_STENCIL_VARS LOCAL_DEPTH_VARS
-
-/* z16 depthbuffer functions. */
-#define VALUE_TYPE GLushort
-#define WRITE_DEPTH(_x, _y, d) \
- (*(uint16_t *)(irb->region->buffer->virtual + NO_TILE(_x, _y)) = d)
-#define READ_DEPTH(d, _x, _y) \
- d = *(uint16_t *)(irb->region->buffer->virtual + NO_TILE(_x, _y))
-#define TAG(x) intel_##x##_z16
-#include "depthtmp.h"
-
-/* z24_s8 and z24_x8 depthbuffer functions. */
-#define VALUE_TYPE GLuint
-#define WRITE_DEPTH(_x, _y, d) \
- (*(uint32_t *)(irb->region->buffer->virtual + NO_TILE(_x, _y)) = d)
-#define READ_DEPTH(d, _x, _y) \
- d = *(uint32_t *)(irb->region->buffer->virtual + NO_TILE(_x, _y))
-#define TAG(x) intel_##x##_z24_s8
-#include "depthtmp.h"
-
void
intel_renderbuffer_map(struct intel_context *intel, struct gl_renderbuffer *rb)
{
@@ -175,6 +125,15 @@ intel_renderbuffer_map(struct intel_context *intel, struct gl_renderbuffer *rb)
drm_intel_gem_bo_map_gtt(irb->region->buffer);
+ rb->Data = irb->region->buffer->virtual;
+ rb->RowStride = irb->region->pitch;
+
+ /* Flip orientation if it's the window system buffer */
+ if (!rb->Name) {
+ rb->Data += rb->RowStride * (irb->region->height - 1) * irb->region->cpp;
+ rb->RowStride = -rb->RowStride;
+ }
+
intel_set_span_functions(intel, rb);
}
@@ -191,6 +150,8 @@ intel_renderbuffer_unmap(struct intel_context *intel,
rb->GetRow = NULL;
rb->PutRow = NULL;
+ rb->Data = NULL;
+ rb->RowStride = 0;
}
/**
@@ -371,13 +332,18 @@ static span_init_func intel_span_init_funcs[MESA_FORMAT_COUNT] =
[MESA_FORMAT_XRGB8888] = intel_InitPointers_xRGB8888,
[MESA_FORMAT_ARGB8888] = intel_InitPointers_ARGB8888,
[MESA_FORMAT_SARGB8] = intel_InitPointers_ARGB8888,
- [MESA_FORMAT_Z16] = intel_InitDepthPointers_z16,
- [MESA_FORMAT_X8_Z24] = intel_InitDepthPointers_z24_s8,
- [MESA_FORMAT_S8_Z24] = intel_InitDepthPointers_z24_s8,
- [MESA_FORMAT_R8] = intel_InitPointers_R8,
- [MESA_FORMAT_RG88] = intel_InitPointers_RG88,
- [MESA_FORMAT_R16] = intel_InitPointers_R16,
- [MESA_FORMAT_RG1616] = intel_InitPointers_RG1616,
+ [MESA_FORMAT_Z16] = _mesa_set_renderbuffer_accessors,
+ [MESA_FORMAT_X8_Z24] = _mesa_set_renderbuffer_accessors,
+ [MESA_FORMAT_S8_Z24] = _mesa_set_renderbuffer_accessors,
+ [MESA_FORMAT_R8] = _mesa_set_renderbuffer_accessors,
+ [MESA_FORMAT_RG88] = _mesa_set_renderbuffer_accessors,
+ [MESA_FORMAT_R16] = _mesa_set_renderbuffer_accessors,
+ [MESA_FORMAT_RG1616] = _mesa_set_renderbuffer_accessors,
+ [MESA_FORMAT_RGBA_FLOAT32] = _mesa_set_renderbuffer_accessors,
+ [MESA_FORMAT_RG_FLOAT32] = _mesa_set_renderbuffer_accessors,
+ [MESA_FORMAT_R_FLOAT32] = _mesa_set_renderbuffer_accessors,
+ [MESA_FORMAT_INTENSITY_FLOAT32] = _mesa_set_renderbuffer_accessors,
+ [MESA_FORMAT_LUMINANCE_FLOAT32] = _mesa_set_renderbuffer_accessors,
};
bool
diff --git a/src/mesa/drivers/dri/intel/intel_tex_format.c b/src/mesa/drivers/dri/intel/intel_tex_format.c
index 87745bc66d4..befa615d1e6 100644
--- a/src/mesa/drivers/dri/intel/intel_tex_format.c
+++ b/src/mesa/drivers/dri/intel/intel_tex_format.c
@@ -16,6 +16,8 @@ intel_mesa_format_to_rb_datatype(gl_format format)
case MESA_FORMAT_R8:
case MESA_FORMAT_RG88:
case MESA_FORMAT_A8:
+ case MESA_FORMAT_I8:
+ case MESA_FORMAT_L8:
case MESA_FORMAT_AL88:
case MESA_FORMAT_RGB565:
case MESA_FORMAT_ARGB1555:
@@ -29,6 +31,15 @@ intel_mesa_format_to_rb_datatype(gl_format format)
return GL_UNSIGNED_INT;
case MESA_FORMAT_S8_Z24:
return GL_UNSIGNED_INT_24_8_EXT;
+ case MESA_FORMAT_RGBA_FLOAT32:
+ case MESA_FORMAT_RG_FLOAT32:
+ case MESA_FORMAT_R_FLOAT32:
+ case MESA_FORMAT_INTENSITY_FLOAT32:
+ case MESA_FORMAT_LUMINANCE_FLOAT32:
+ case MESA_FORMAT_ALPHA_FLOAT32:
+ case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32:
+ return GL_FLOAT;
+
default:
_mesa_problem(NULL, "unexpected MESA_FORMAT for renderbuffer");
return GL_UNSIGNED_BYTE;
diff --git a/src/mesa/drivers/dri/intel/intel_tex_image.c b/src/mesa/drivers/dri/intel/intel_tex_image.c
index 906f8a62710..775fd1008f9 100644
--- a/src/mesa/drivers/dri/intel/intel_tex_image.c
+++ b/src/mesa/drivers/dri/intel/intel_tex_image.c
@@ -112,8 +112,8 @@ intel_miptree_create_for_teximage(struct intel_context *intel,
* resizable buffers, or require that buffers implement lazy
* pagetable arrangements.
*/
- if ((intelObj->base.MinFilter == GL_NEAREST ||
- intelObj->base.MinFilter == GL_LINEAR) &&
+ if ((intelObj->base.Sampler.MinFilter == GL_NEAREST ||
+ intelObj->base.Sampler.MinFilter == GL_LINEAR) &&
intelImage->level == firstLevel &&
(intel->gen < 4 || firstLevel == 0)) {
lastLevel = firstLevel;
@@ -370,8 +370,10 @@ intelTexImage(struct gl_context * ctx,
* whole object since our level didn't fit what was there
* before, and any lower levels would fit into our miptree.
*/
- if (intelImage->mt)
+ if (intelImage->mt) {
+ intel_miptree_release(intel, &intelObj->mt);
intel_miptree_reference(&intelObj->mt, intelImage->mt);
+ }
}
/* PBO fastpaths:
diff --git a/src/mesa/drivers/dri/intel/intel_tex_subimage.c b/src/mesa/drivers/dri/intel/intel_tex_subimage.c
index d0f8294113a..8b43c406cf9 100644
--- a/src/mesa/drivers/dri/intel/intel_tex_subimage.c
+++ b/src/mesa/drivers/dri/intel/intel_tex_subimage.c
@@ -90,10 +90,17 @@ intelTexSubimage(struct gl_context * ctx,
intel->gen < 6 && target == GL_TEXTURE_2D &&
drm_intel_bo_busy(dst_bo))
{
- dstRowStride = width * intelImage->mt->cpp;
- temp_bo = drm_intel_bo_alloc(intel->bufmgr, "subimage blit bo",
- dstRowStride * height, 0);
- if (!temp_bo)
+ unsigned long pitch;
+ uint32_t tiling_mode = I915_TILING_NONE;
+
+ temp_bo = drm_intel_bo_alloc_tiled(intel->bufmgr,
+ "subimage blit bo",
+ width, height,
+ intelImage->mt->cpp,
+ &tiling_mode,
+ &pitch,
+ 0);
+ if (temp_bo == NULL)
return;
if (drm_intel_gem_bo_map_gtt(temp_bo)) {
@@ -103,6 +110,7 @@ intelTexSubimage(struct gl_context * ctx,
texImage->Data = temp_bo->virtual;
texImage->ImageOffsets[0] = 0;
+ dstRowStride = pitch;
intel_miptree_get_image_offset(intelImage->mt, level,
intelImage->face, 0,
diff --git a/src/mesa/drivers/dri/intel/intel_tex_validate.c b/src/mesa/drivers/dri/intel/intel_tex_validate.c
index a11b07ed09d..5e705c93619 100644
--- a/src/mesa/drivers/dri/intel/intel_tex_validate.c
+++ b/src/mesa/drivers/dri/intel/intel_tex_validate.c
@@ -18,7 +18,7 @@ intel_update_max_level(struct intel_context *intel,
{
struct gl_texture_object *tObj = &intelObj->base;
- if (tObj->MinFilter == GL_NEAREST || tObj->MinFilter == GL_LINEAR) {
+ if (tObj->Sampler.MinFilter == GL_NEAREST || tObj->Sampler.MinFilter == GL_LINEAR) {
intelObj->_MaxLevel = tObj->BaseLevel;
} else {
intelObj->_MaxLevel = tObj->_MaxLevel;
diff --git a/src/mesa/drivers/dri/mach64/mach64_dd.c b/src/mesa/drivers/dri/mach64/mach64_dd.c
index 9cb2c107597..2b557a70202 100644
--- a/src/mesa/drivers/dri/mach64/mach64_dd.c
+++ b/src/mesa/drivers/dri/mach64/mach64_dd.c
@@ -37,8 +37,6 @@
#include "utils.h"
-#define DRIVER_DATE "20051019"
-
/* Return the current color buffer size.
*/
static void mach64DDGetBufferSize( struct gl_framebuffer *buffer,
@@ -70,8 +68,7 @@ static const GLubyte *mach64DDGetString( struct gl_context *ctx, GLenum name )
case GL_RENDERER:
- offset = driGetRendererString( buffer, card_name, DRIVER_DATE,
- agp_mode );
+ offset = driGetRendererString( buffer, card_name, agp_mode );
return (GLubyte *)buffer;
default:
diff --git a/src/mesa/drivers/dri/mach64/mach64_tex.c b/src/mesa/drivers/dri/mach64/mach64_tex.c
index 68d273a3e75..8e10b314b64 100644
--- a/src/mesa/drivers/dri/mach64/mach64_tex.c
+++ b/src/mesa/drivers/dri/mach64/mach64_tex.c
@@ -123,9 +123,9 @@ mach64AllocTexObj( struct gl_texture_object *texObj )
make_empty_list( (driTextureObject *) t );
- mach64SetTexWrap( t, texObj->WrapS, texObj->WrapT );
- mach64SetTexFilter( t, texObj->MinFilter, texObj->MagFilter );
- mach64SetTexBorderColor( t, texObj->BorderColor.f );
+ mach64SetTexWrap( t, texObj->Sampler.WrapS, texObj->Sampler.WrapT );
+ mach64SetTexFilter( t, texObj->Sampler.MinFilter, texObj->Sampler.MagFilter );
+ mach64SetTexBorderColor( t, texObj->Sampler.BorderColor.f );
return t;
}
@@ -454,18 +454,18 @@ static void mach64DDTexParameter( struct gl_context *ctx, GLenum target,
case GL_TEXTURE_MIN_FILTER:
case GL_TEXTURE_MAG_FILTER:
if ( t->base.bound ) FLUSH_BATCH( mmesa );
- mach64SetTexFilter( t, tObj->MinFilter, tObj->MagFilter );
+ mach64SetTexFilter( t, tObj->Sampler.MinFilter, tObj->Sampler.MagFilter );
break;
case GL_TEXTURE_WRAP_S:
case GL_TEXTURE_WRAP_T:
if ( t->base.bound ) FLUSH_BATCH( mmesa );
- mach64SetTexWrap( t, tObj->WrapS, tObj->WrapT );
+ mach64SetTexWrap( t, tObj->Sampler.WrapS, tObj->Sampler.WrapT );
break;
case GL_TEXTURE_BORDER_COLOR:
if ( t->base.bound ) FLUSH_BATCH( mmesa );
- mach64SetTexBorderColor( t, tObj->BorderColor.f );
+ mach64SetTexBorderColor( t, tObj->Sampler.BorderColor.f );
break;
case GL_TEXTURE_BASE_LEVEL:
diff --git a/src/mesa/drivers/dri/mga/mgadd.c b/src/mesa/drivers/dri/mga/mgadd.c
index 1b39813e379..2e3e9f2c43c 100644
--- a/src/mesa/drivers/dri/mga/mgadd.c
+++ b/src/mesa/drivers/dri/mga/mgadd.c
@@ -35,9 +35,6 @@
#include "mga_xmesa.h"
#include "utils.h"
-#define DRIVER_DATE "20071017"
-
-
/***************************************
* Mesa's Driver Functions
***************************************/
@@ -57,7 +54,6 @@ static const GLubyte *mgaGetString( struct gl_context *ctx, GLenum name )
offset = driGetRendererString( buffer,
MGA_IS_G400(mmesa) ? "G400" :
MGA_IS_G200(mmesa) ? "G200" : "MGA",
- DRIVER_DATE,
mmesa->mgaScreen->agpMode );
return (GLubyte *)buffer;
diff --git a/src/mesa/drivers/dri/mga/mgatex.c b/src/mesa/drivers/dri/mga/mgatex.c
index 11ab9b6117d..ebbfec36556 100644
--- a/src/mesa/drivers/dri/mga/mgatex.c
+++ b/src/mesa/drivers/dri/mga/mgatex.c
@@ -327,9 +327,9 @@ mgaAllocTexObj( struct gl_texture_object *tObj )
make_empty_list( & t->base );
- mgaSetTexWrapping( t, tObj->WrapS, tObj->WrapT );
- mgaSetTexFilter( t, tObj->MinFilter, tObj->MagFilter );
- mgaSetTexBorderColor( t, tObj->BorderColor.f );
+ mgaSetTexWrapping( t, tObj->Sampler.WrapS, tObj->Sampler.WrapT );
+ mgaSetTexFilter( t, tObj->Sampler.MinFilter, tObj->Sampler.MagFilter );
+ mgaSetTexBorderColor( t, tObj->Sampler.BorderColor.f );
}
return( t );
@@ -447,18 +447,18 @@ mgaTexParameter( struct gl_context *ctx, GLenum target,
/* FALLTHROUGH */
case GL_TEXTURE_MAG_FILTER:
FLUSH_BATCH(mmesa);
- mgaSetTexFilter( t, tObj->MinFilter, tObj->MagFilter );
+ mgaSetTexFilter( t, tObj->Sampler.MinFilter, tObj->Sampler.MagFilter );
break;
case GL_TEXTURE_WRAP_S:
case GL_TEXTURE_WRAP_T:
FLUSH_BATCH(mmesa);
- mgaSetTexWrapping(t,tObj->WrapS,tObj->WrapT);
+ mgaSetTexWrapping(t,tObj->Sampler.WrapS,tObj->Sampler.WrapT);
break;
case GL_TEXTURE_BORDER_COLOR:
FLUSH_BATCH(mmesa);
- mgaSetTexBorderColor(t, tObj->BorderColor.f);
+ mgaSetTexBorderColor(t, tObj->Sampler.BorderColor.f);
break;
case GL_TEXTURE_BASE_LEVEL:
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_driver.c b/src/mesa/drivers/dri/nouveau/nouveau_driver.c
index 45630be7f6e..8b6aa820434 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_driver.c
+++ b/src/mesa/drivers/dri/nouveau/nouveau_driver.c
@@ -45,7 +45,7 @@ nouveau_get_string(struct gl_context *ctx, GLenum name)
case GL_RENDERER:
sprintf(hardware_name, "nv%02X", context_chipset(ctx));
- driGetRendererString(buffer, hardware_name, DRIVER_DATE, 0);
+ driGetRendererString(buffer, hardware_name, 0);
return (GLubyte *)buffer;
default:
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_driver.h b/src/mesa/drivers/dri/nouveau/nouveau_driver.h
index 158aec820aa..0018eec021f 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_driver.h
+++ b/src/mesa/drivers/dri/nouveau/nouveau_driver.h
@@ -48,7 +48,6 @@
#include "nouveau_surface.h"
#include "nv04_pushbuf.h"
-#define DRIVER_DATE "20091015"
#define DRIVER_AUTHOR "Nouveau"
struct nouveau_driver {
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_texture.c b/src/mesa/drivers/dri/nouveau/nouveau_texture.c
index 1a1e10e0b3a..36e68c99181 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_texture.c
+++ b/src/mesa/drivers/dri/nouveau/nouveau_texture.c
@@ -270,8 +270,8 @@ get_last_level(struct gl_texture_object *t)
{
struct gl_texture_image *base = t->Image[0][t->BaseLevel];
- if (t->MinFilter == GL_NEAREST ||
- t->MinFilter == GL_LINEAR || !base)
+ if (t->Sampler.MinFilter == GL_NEAREST ||
+ t->Sampler.MinFilter == GL_LINEAR || !base)
return t->BaseLevel;
else
return MIN2(t->BaseLevel + base->MaxLog2, t->MaxLevel);
diff --git a/src/mesa/drivers/dri/nouveau/nv04_state_tex.c b/src/mesa/drivers/dri/nouveau/nv04_state_tex.c
index 5ed8b147559..648d6b18cf5 100644
--- a/src/mesa/drivers/dri/nouveau/nv04_state_tex.c
+++ b/src/mesa/drivers/dri/nouveau/nv04_state_tex.c
@@ -80,26 +80,26 @@ nv04_emit_tex_obj(struct gl_context *ctx, int emit)
s = &to_nouveau_texture(t)->surfaces[t->BaseLevel];
- if (t->MinFilter != GL_NEAREST &&
- t->MinFilter != GL_LINEAR) {
- lod_max = CLAMP(MIN2(t->MaxLod, t->_MaxLambda),
+ if (t->Sampler.MinFilter != GL_NEAREST &&
+ t->Sampler.MinFilter != GL_LINEAR) {
+ lod_max = CLAMP(MIN2(t->Sampler.MaxLod, t->_MaxLambda),
0, 15) + 1;
lod_bias = CLAMP(ctx->Texture.Unit[i].LodBias +
- t->LodBias, -16, 15) * 8;
+ t->Sampler.LodBias, -16, 15) * 8;
}
- format |= nvgl_wrap_mode(t->WrapT) << 28 |
- nvgl_wrap_mode(t->WrapS) << 24 |
+ format |= nvgl_wrap_mode(t->Sampler.WrapT) << 28 |
+ nvgl_wrap_mode(t->Sampler.WrapS) << 24 |
ti->HeightLog2 << 20 |
ti->WidthLog2 << 16 |
lod_max << 12 |
get_tex_format(ti);
- filter |= log2i(t->MaxAnisotropy) << 31 |
- nvgl_filter_mode(t->MagFilter) << 28 |
- log2i(t->MaxAnisotropy) << 27 |
- nvgl_filter_mode(t->MinFilter) << 24 |
+ filter |= log2i(t->Sampler.MaxAnisotropy) << 31 |
+ nvgl_filter_mode(t->Sampler.MagFilter) << 28 |
+ log2i(t->Sampler.MaxAnisotropy) << 27 |
+ nvgl_filter_mode(t->Sampler.MinFilter) << 24 |
(lod_bias & 0xff) << 16;
} else {
diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_tex.c b/src/mesa/drivers/dri/nouveau/nv10_state_tex.c
index fda67b15073..620a686aea0 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_state_tex.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_state_tex.c
@@ -173,17 +173,17 @@ nv10_emit_tex_obj(struct gl_context *ctx, int emit)
return;
/* Recompute the texturing registers. */
- tx_format = nvgl_wrap_mode(t->WrapT) << 28
- | nvgl_wrap_mode(t->WrapS) << 24
+ tx_format = nvgl_wrap_mode(t->Sampler.WrapT) << 28
+ | nvgl_wrap_mode(t->Sampler.WrapS) << 24
| ti->HeightLog2 << 20
| ti->WidthLog2 << 16
| 5 << 4 | 1 << 12;
- tx_filter = nvgl_filter_mode(t->MagFilter) << 28
- | nvgl_filter_mode(t->MinFilter) << 24;
+ tx_filter = nvgl_filter_mode(t->Sampler.MagFilter) << 28
+ | nvgl_filter_mode(t->Sampler.MinFilter) << 24;
tx_enable = NV10_3D_TEX_ENABLE_ENABLE
- | log2i(t->MaxAnisotropy) << 4;
+ | log2i(t->Sampler.MaxAnisotropy) << 4;
if (t->Target == GL_TEXTURE_RECTANGLE) {
BEGIN_RING(chan, celsius, NV10_3D_TEX_NPOT_PITCH(i), 1);
@@ -196,11 +196,11 @@ nv10_emit_tex_obj(struct gl_context *ctx, int emit)
tx_format |= get_tex_format_pot(ti);
}
- if (t->MinFilter != GL_NEAREST &&
- t->MinFilter != GL_LINEAR) {
- int lod_min = t->MinLod;
- int lod_max = MIN2(t->MaxLod, t->_MaxLambda);
- int lod_bias = t->LodBias
+ if (t->Sampler.MinFilter != GL_NEAREST &&
+ t->Sampler.MinFilter != GL_LINEAR) {
+ int lod_min = t->Sampler.MinLod;
+ int lod_max = MIN2(t->Sampler.MaxLod, t->_MaxLambda);
+ int lod_bias = t->Sampler.LodBias
+ ctx->Texture.Unit[i].LodBias;
lod_max = CLAMP(lod_max, 0, 15);
diff --git a/src/mesa/drivers/dri/nouveau/nv20_state_tex.c b/src/mesa/drivers/dri/nouveau/nv20_state_tex.c
index c362aca0fdb..eab74aed5c2 100644
--- a/src/mesa/drivers/dri/nouveau/nv20_state_tex.c
+++ b/src/mesa/drivers/dri/nouveau/nv20_state_tex.c
@@ -186,16 +186,16 @@ nv20_emit_tex_obj(struct gl_context *ctx, int emit)
| NV20_3D_TEX_FORMAT_NO_BORDER
| 1 << 16;
- tx_wrap = nvgl_wrap_mode(t->WrapR) << 16
- | nvgl_wrap_mode(t->WrapT) << 8
- | nvgl_wrap_mode(t->WrapS) << 0;
+ tx_wrap = nvgl_wrap_mode(t->Sampler.WrapR) << 16
+ | nvgl_wrap_mode(t->Sampler.WrapT) << 8
+ | nvgl_wrap_mode(t->Sampler.WrapS) << 0;
- tx_filter = nvgl_filter_mode(t->MagFilter) << 24
- | nvgl_filter_mode(t->MinFilter) << 16
+ tx_filter = nvgl_filter_mode(t->Sampler.MagFilter) << 24
+ | nvgl_filter_mode(t->Sampler.MinFilter) << 16
| 2 << 12;
tx_enable = NV20_3D_TEX_ENABLE_ENABLE
- | log2i(t->MaxAnisotropy) << 4;
+ | log2i(t->Sampler.MaxAnisotropy) << 4;
if (t->Target == GL_TEXTURE_RECTANGLE) {
BEGIN_RING(chan, kelvin, NV20_3D_TEX_NPOT_PITCH(i), 1);
@@ -208,11 +208,11 @@ nv20_emit_tex_obj(struct gl_context *ctx, int emit)
tx_format |= get_tex_format_pot(ti);
}
- if (t->MinFilter != GL_NEAREST &&
- t->MinFilter != GL_LINEAR) {
- int lod_min = t->MinLod;
- int lod_max = MIN2(t->MaxLod, t->_MaxLambda);
- int lod_bias = t->LodBias
+ if (t->Sampler.MinFilter != GL_NEAREST &&
+ t->Sampler.MinFilter != GL_LINEAR) {
+ int lod_min = t->Sampler.MinLod;
+ int lod_max = MIN2(t->Sampler.MaxLod, t->_MaxLambda);
+ int lod_bias = t->Sampler.LodBias
+ ctx->Texture.Unit[i].LodBias;
lod_max = CLAMP(lod_max, 0, 15);
diff --git a/src/mesa/drivers/dri/r128/r128_dd.c b/src/mesa/drivers/dri/r128/r128_dd.c
index 0b7005eba69..cfe2387948d 100644
--- a/src/mesa/drivers/dri/r128/r128_dd.c
+++ b/src/mesa/drivers/dri/r128/r128_dd.c
@@ -40,9 +40,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "utils.h"
-#define DRIVER_DATE "20051027"
-
-
/* Return the width and height of the current color buffer.
*/
static void r128GetBufferSize( struct gl_framebuffer *buffer,
@@ -82,8 +79,7 @@ static const GLubyte *r128GetString( struct gl_context *ctx, GLenum name )
card_name = "Rage 128 Mobility";
}
- offset = driGetRendererString( buffer, card_name, DRIVER_DATE,
- agp_mode );
+ offset = driGetRendererString( buffer, card_name, agp_mode );
return (GLubyte *)buffer;
diff --git a/src/mesa/drivers/dri/r128/r128_span.c b/src/mesa/drivers/dri/r128/r128_span.c
index 307de56ee13..04bdbe612e5 100644
--- a/src/mesa/drivers/dri/r128/r128_span.c
+++ b/src/mesa/drivers/dri/r128/r128_span.c
@@ -135,7 +135,7 @@ do { \
r128WriteDepthSpanLocked( rmesa, n, \
x + dPriv->x, \
y + dPriv->y, \
- depth, mask ); \
+ (const GLuint *) depth, mask ); \
} while (0)
#define WRITE_DEPTH_PIXELS() \
@@ -146,7 +146,7 @@ do { \
ox[i] = x[i] + dPriv->x; \
oy[i] = Y_FLIP( y[i] ) + dPriv->y; \
} \
- r128WriteDepthPixelsLocked( rmesa, n, ox, oy, depth, mask ); \
+ r128WriteDepthPixelsLocked( rmesa, n, ox, oy, (const GLuint *) depth, mask ); \
} while (0)
#define READ_DEPTH_SPAN() \
diff --git a/src/mesa/drivers/dri/r128/r128_tex.c b/src/mesa/drivers/dri/r128/r128_tex.c
index ba3305e076e..a3f6ce8edeb 100644
--- a/src/mesa/drivers/dri/r128/r128_tex.c
+++ b/src/mesa/drivers/dri/r128/r128_tex.c
@@ -162,9 +162,9 @@ static r128TexObjPtr r128AllocTexObj( struct gl_texture_object *texObj )
make_empty_list( (driTextureObject *) t );
- r128SetTexWrap( t, texObj->WrapS, texObj->WrapT );
- r128SetTexFilter( t, texObj->MinFilter, texObj->MagFilter );
- r128SetTexBorderColor( t, texObj->BorderColor.f );
+ r128SetTexWrap( t, texObj->Sampler.WrapS, texObj->Sampler.WrapT );
+ r128SetTexFilter( t, texObj->Sampler.MinFilter, texObj->Sampler.MagFilter );
+ r128SetTexBorderColor( t, texObj->Sampler.BorderColor.f );
}
return t;
@@ -519,18 +519,18 @@ static void r128TexParameter( struct gl_context *ctx, GLenum target,
case GL_TEXTURE_MIN_FILTER:
case GL_TEXTURE_MAG_FILTER:
if ( t->base.bound ) FLUSH_BATCH( rmesa );
- r128SetTexFilter( t, tObj->MinFilter, tObj->MagFilter );
+ r128SetTexFilter( t, tObj->Sampler.MinFilter, tObj->Sampler.MagFilter );
break;
case GL_TEXTURE_WRAP_S:
case GL_TEXTURE_WRAP_T:
if ( t->base.bound ) FLUSH_BATCH( rmesa );
- r128SetTexWrap( t, tObj->WrapS, tObj->WrapT );
+ r128SetTexWrap( t, tObj->Sampler.WrapS, tObj->Sampler.WrapT );
break;
case GL_TEXTURE_BORDER_COLOR:
if ( t->base.bound ) FLUSH_BATCH( rmesa );
- r128SetTexBorderColor( t, tObj->BorderColor.f );
+ r128SetTexBorderColor( t, tObj->Sampler.BorderColor.f );
break;
case GL_TEXTURE_BASE_LEVEL:
diff --git a/src/mesa/drivers/dri/r200/r200_context.c b/src/mesa/drivers/dri/r200/r200_context.c
index 9c045b73acc..4e08d3431bf 100644
--- a/src/mesa/drivers/dri/r200/r200_context.c
+++ b/src/mesa/drivers/dri/r200/r200_context.c
@@ -62,13 +62,16 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "radeon_span.h"
#define need_GL_ARB_occlusion_query
+#define need_GL_ARB_vertex_array_object
#define need_GL_ARB_vertex_program
+#define need_GL_APPLE_vertex_array_object
#define need_GL_ATI_fragment_shader
#define need_GL_EXT_blend_minmax
#define need_GL_EXT_fog_coord
#define need_GL_EXT_secondary_color
#define need_GL_EXT_blend_equation_separate
#define need_GL_EXT_blend_func_separate
+#define need_GL_EXT_gpu_program_parameters
#define need_GL_NV_vertex_program
#define need_GL_ARB_point_parameters
#define need_GL_EXT_framebuffer_object
@@ -76,8 +79,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "main/remap_helper.h"
-#define DRIVER_DATE "20060602"
-
#include "utils.h"
#include "xmlpool.h" /* for symbolic values of enum-type options */
@@ -96,8 +97,7 @@ static const GLubyte *r200GetString( struct gl_context *ctx, GLenum name )
return (GLubyte *)"Tungsten Graphics, Inc.";
case GL_RENDERER:
- offset = driGetRendererString( buffer, "R200", DRIVER_DATE,
- agp_mode );
+ offset = driGetRendererString( buffer, "R200", agp_mode );
sprintf( & buffer[ offset ], " %sTCL",
!(rmesa->radeon.TclFallback & R200_TCL_FALLBACK_TCL_DISABLE)
@@ -115,6 +115,7 @@ static const GLubyte *r200GetString( struct gl_context *ctx, GLenum name )
*/
static const struct dri_extension card_extensions[] =
{
+ { "GL_ARB_half_float_pixel", NULL },
{ "GL_ARB_multitexture", NULL },
{ "GL_ARB_occlusion_query", GL_ARB_occlusion_query_functions},
{ "GL_ARB_texture_border_clamp", NULL },
@@ -123,6 +124,7 @@ static const struct dri_extension card_extensions[] =
{ "GL_ARB_texture_env_dot3", NULL },
{ "GL_ARB_texture_env_crossbar", NULL },
{ "GL_ARB_texture_mirrored_repeat", NULL },
+ { "GL_ARB_vertex_array_object", GL_ARB_vertex_array_object_functions},
{ "GL_EXT_blend_minmax", GL_EXT_blend_minmax_functions },
{ "GL_EXT_blend_subtract", NULL },
{ "GL_EXT_fog_coord", GL_EXT_fog_coord_functions },
@@ -136,6 +138,7 @@ static const struct dri_extension card_extensions[] =
{ "GL_EXT_texture_lod_bias", NULL },
{ "GL_EXT_texture_mirror_clamp", NULL },
{ "GL_EXT_texture_rectangle", NULL },
+ { "GL_APPLE_vertex_array_object", GL_APPLE_vertex_array_object_functions },
{ "GL_ATI_texture_env_combine3", NULL },
{ "GL_ATI_texture_mirror_once", NULL },
{ "GL_MESA_pack_invert", NULL },
@@ -153,7 +156,9 @@ static const struct dri_extension blend_extensions[] = {
};
static const struct dri_extension ARB_vp_extension[] = {
- { "GL_ARB_vertex_program", GL_ARB_vertex_program_functions }
+ { "GL_ARB_vertex_program", GL_ARB_vertex_program_functions },
+ { "GL_EXT_gpu_program_parameters", GL_EXT_gpu_program_parameters_functions},
+ { NULL, NULL }
};
static const struct dri_extension NV_vp_extension[] = {
@@ -458,7 +463,7 @@ GLboolean r200CreateContext( gl_api api,
driInitExtensions( ctx, blend_extensions, GL_FALSE );
}
if(rmesa->radeon.radeonScreen->drmSupportsVertexProgram)
- driInitSingleExtension( ctx, ARB_vp_extension );
+ driInitExtensions( ctx, ARB_vp_extension, GL_FALSE );
if(driQueryOptionb(&rmesa->radeon.optionCache, "nv_vertex_program"))
driInitSingleExtension( ctx, NV_vp_extension );
diff --git a/src/mesa/drivers/dri/r200/r200_tex.c b/src/mesa/drivers/dri/r200/r200_tex.c
index 092b7575831..d42e8f12041 100644
--- a/src/mesa/drivers/dri/r200/r200_tex.c
+++ b/src/mesa/drivers/dri/r200/r200_tex.c
@@ -383,18 +383,18 @@ static void r200TexParameter( struct gl_context *ctx, GLenum target,
case GL_TEXTURE_MIN_FILTER:
case GL_TEXTURE_MAG_FILTER:
case GL_TEXTURE_MAX_ANISOTROPY_EXT:
- r200SetTexMaxAnisotropy( t, texObj->MaxAnisotropy );
- r200SetTexFilter( t, texObj->MinFilter, texObj->MagFilter );
+ r200SetTexMaxAnisotropy( t, texObj->Sampler.MaxAnisotropy );
+ r200SetTexFilter( t, texObj->Sampler.MinFilter, texObj->Sampler.MagFilter );
break;
case GL_TEXTURE_WRAP_S:
case GL_TEXTURE_WRAP_T:
case GL_TEXTURE_WRAP_R:
- r200SetTexWrap( t, texObj->WrapS, texObj->WrapT, texObj->WrapR );
+ r200SetTexWrap( t, texObj->Sampler.WrapS, texObj->Sampler.WrapT, texObj->Sampler.WrapR );
break;
case GL_TEXTURE_BORDER_COLOR:
- r200SetTexBorderColor( t, texObj->BorderColor.f );
+ r200SetTexBorderColor( t, texObj->Sampler.BorderColor.f );
break;
case GL_TEXTURE_BASE_LEVEL:
@@ -479,13 +479,13 @@ static struct gl_texture_object *r200NewTextureObject(struct gl_context * ctx,
_mesa_lookup_enum_by_nr(target), t);
_mesa_initialize_texture_object(&t->base, name, target);
- t->base.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy;
+ t->base.Sampler.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy;
/* Initialize hardware state */
- r200SetTexWrap( t, t->base.WrapS, t->base.WrapT, t->base.WrapR );
- r200SetTexMaxAnisotropy( t, t->base.MaxAnisotropy );
- r200SetTexFilter(t, t->base.MinFilter, t->base.MagFilter);
- r200SetTexBorderColor(t, t->base.BorderColor.f);
+ r200SetTexWrap( t, t->base.Sampler.WrapS, t->base.Sampler.WrapT, t->base.Sampler.WrapR );
+ r200SetTexMaxAnisotropy( t, t->base.Sampler.MaxAnisotropy );
+ r200SetTexFilter(t, t->base.Sampler.MinFilter, t->base.Sampler.MagFilter);
+ r200SetTexBorderColor(t, t->base.Sampler.BorderColor.f);
return &t->base;
}
diff --git a/src/mesa/drivers/dri/r300/compiler/r300_fragprog_emit.c b/src/mesa/drivers/dri/r300/compiler/r300_fragprog_emit.c
index 28d132a5fe3..8b73409136f 100644
--- a/src/mesa/drivers/dri/r300/compiler/r300_fragprog_emit.c
+++ b/src/mesa/drivers/dri/r300/compiler/r300_fragprog_emit.c
@@ -34,8 +34,6 @@
* \author Ben Skeggs <[email protected]>
*
* \author Jerome Glisse <[email protected]>
- *
- * \todo FogOption
*/
#include "r300_fragprog.h"
@@ -108,6 +106,7 @@ static unsigned int translate_rgb_opcode(struct r300_fragment_program_compiler *
{
switch(opcode) {
case RC_OPCODE_CMP: return R300_ALU_OUTC_CMP;
+ case RC_OPCODE_CND: return R300_ALU_OUTC_CND;
case RC_OPCODE_DP3: return R300_ALU_OUTC_DP3;
case RC_OPCODE_DP4: return R300_ALU_OUTC_DP4;
case RC_OPCODE_FRC: return R300_ALU_OUTC_FRC;
@@ -127,6 +126,7 @@ static unsigned int translate_alpha_opcode(struct r300_fragment_program_compiler
{
switch(opcode) {
case RC_OPCODE_CMP: return R300_ALU_OUTA_CMP;
+ case RC_OPCODE_CND: return R300_ALU_OUTA_CND;
case RC_OPCODE_DP3: return R300_ALU_OUTA_DP4;
case RC_OPCODE_DP4: return R300_ALU_OUTA_DP4;
case RC_OPCODE_EX2: return R300_ALU_OUTA_EX2;
diff --git a/src/mesa/drivers/dri/r300/compiler/r3xx_vertprog.c b/src/mesa/drivers/dri/r300/compiler/r3xx_vertprog.c
index 8ad2175eadf..654f9a070d5 100644
--- a/src/mesa/drivers/dri/r300/compiler/r3xx_vertprog.c
+++ b/src/mesa/drivers/dri/r300/compiler/r3xx_vertprog.c
@@ -273,6 +273,7 @@ static void ei_mad(struct r300_vertex_program_code *vp,
struct rc_sub_instruction *vpi,
unsigned int * inst)
{
+ unsigned int i;
/* Remarks about hardware limitations of MAD
* (please preserve this comment, as this information is _NOT_
* in the documentation provided by AMD).
@@ -318,6 +319,23 @@ static void ei_mad(struct r300_vertex_program_code *vp,
t_dst_index(vp, &vpi->DstReg),
t_dst_mask(vpi->DstReg.WriteMask),
t_dst_class(vpi->DstReg.File));
+
+ /* Arguments with constant swizzles still count as a unique
+ * temporary, so we should make sure these arguments share a
+ * register index with one of the other arguments. */
+ for (i = 0; i < 3; i++) {
+ unsigned int j;
+ if (vpi->SrcReg[i].File != RC_FILE_NONE)
+ continue;
+
+ for (j = 0; j < 3; j++) {
+ if (i != j) {
+ vpi->SrcReg[i].Index =
+ vpi->SrcReg[j].Index;
+ break;
+ }
+ }
+ }
}
inst[1] = t_src(vp, &vpi->SrcReg[0]);
inst[2] = t_src(vp, &vpi->SrcReg[1]);
diff --git a/src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c b/src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c
index 301b4446693..c7f79bc53c7 100644
--- a/src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c
+++ b/src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c
@@ -93,6 +93,7 @@ static unsigned int translate_rgb_op(struct r300_fragment_program_compiler *c, r
{
switch(opcode) {
case RC_OPCODE_CMP: return R500_ALU_RGBA_OP_CMP;
+ case RC_OPCODE_CND: return R500_ALU_RGBA_OP_CND;
case RC_OPCODE_DDX: return R500_ALU_RGBA_OP_MDH;
case RC_OPCODE_DDY: return R500_ALU_RGBA_OP_MDV;
case RC_OPCODE_DP3: return R500_ALU_RGBA_OP_DP3;
@@ -114,6 +115,7 @@ static unsigned int translate_alpha_op(struct r300_fragment_program_compiler *c,
{
switch(opcode) {
case RC_OPCODE_CMP: return R500_ALPHA_OP_CMP;
+ case RC_OPCODE_CND: return R500_ALPHA_OP_CND;
case RC_OPCODE_COS: return R500_ALPHA_OP_COS;
case RC_OPCODE_DDX: return R500_ALPHA_OP_MDH;
case RC_OPCODE_DDY: return R500_ALPHA_OP_MDV;
@@ -197,11 +199,14 @@ static void use_temporary(struct r500_fragment_program_code* code, unsigned int
static unsigned int use_source(struct r500_fragment_program_code* code, struct rc_pair_instruction_source src)
{
+ /* From docs:
+ * Note that inline constants set the MSB of ADDR0 and clear ADDR0_CONST.
+ * MSB = 1 << 7 */
if (!src.Used)
- return 0;
+ return 1 << 7;
if (src.File == RC_FILE_CONSTANT) {
- return src.Index | 0x100;
+ return src.Index | R500_RGB_ADDR0_CONST;
} else if (src.File == RC_FILE_TEMPORARY) {
use_temporary(code, src.Index);
return src.Index;
@@ -259,7 +264,8 @@ static void emit_paired(struct r300_fragment_program_compiler *c, struct rc_pair
}
code->inst[ip].inst0 |= R500_INST_TEX_SEM_WAIT;
- code->inst[ip].inst0 |= (inst->RGB.WriteMask << 11) | (inst->Alpha.WriteMask << 14);
+ code->inst[ip].inst0 |= (inst->RGB.WriteMask << 11);
+ code->inst[ip].inst0 |= inst->Alpha.WriteMask ? 1 << 14 : 0;
code->inst[ip].inst0 |= (inst->RGB.OutputWriteMask << 15) | (inst->Alpha.OutputWriteMask << 18);
if (inst->Nop) {
code->inst[ip].inst0 |= R500_INST_NOP;
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_code.h b/src/mesa/drivers/dri/r300/compiler/radeon_code.h
index 35360aa70f0..67e6acf8b10 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_code.h
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_code.h
@@ -132,10 +132,10 @@ typedef enum {
struct r300_fragment_program_external_state {
struct {
/**
- * If the sampler is used as a shadow sampler,
- * this field contains swizzle depending on the depth texture mode.
+ * This field contains swizzle for some lowering passes
+ * (shadow comparison, unorm->snorm conversion)
*/
- unsigned depth_texture_swizzle:12;
+ unsigned texture_swizzle:12;
/**
* If the sampler is used as a shadow sampler,
@@ -172,6 +172,12 @@ struct r300_fragment_program_external_state {
* and right before texture fetch. The scaling factor is given by
* RC_STATE_R300_TEXSCALE_FACTOR. */
unsigned clamp_and_scale_before_fetch : 1;
+
+ /**
+ * Fetch RGTC1_SNORM or LATC1_SNORM as UNORM and convert UNORM -> SNORM
+ * in the shader.
+ */
+ unsigned convert_unorm_to_snorm:1;
} unit[16];
unsigned frag_clamp:1;
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_compiler.c b/src/mesa/drivers/dri/r300/compiler/radeon_compiler.c
index 79cd7996f78..b7936725d85 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_compiler.c
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_compiler.c
@@ -483,7 +483,7 @@ void rc_validate_final_shader(struct radeon_compiler *c, void *user)
{
/* Check the number of constants. */
if (c->Program.Constants.Count > c->max_constants) {
- rc_error(c, "Too many constants. Max: 256, Got: %i\n",
- c->Program.Constants.Count);
+ rc_error(c, "Too many constants. Max: %i, Got: %i\n",
+ c->max_constants, c->Program.Constants.Count);
}
}
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.c b/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.c
index c080d5aecc6..d1a7eab50f7 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.c
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.c
@@ -704,9 +704,16 @@ static void get_readers_for_single_write(
&d->BranchMasks[branch_depth];
if (masks->HasElse) {
+ /* Abort on read for components that
+ * were written in the IF block. */
d->ReaderData->AbortOnRead |=
masks->IfWriteMask
& ~masks->ElseWriteMask;
+ /* Abort on read for components that
+ * were written in the ELSE block. */
+ d->ReaderData->AbortOnRead |=
+ masks->ElseWriteMask
+ & ~d->AliveWriteMask;
d->AliveWriteMask = masks->IfWriteMask
^ ((masks->IfWriteMask ^
masks->ElseWriteMask)
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.c b/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.c
index 25afd272bee..e3e498e8fb4 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.c
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.c
@@ -81,6 +81,13 @@ struct rc_opcode_info rc_opcodes[MAX_RC_OPCODE] = {
.IsComponentwise = 1
},
{
+ .Opcode = RC_OPCODE_CND,
+ .Name = "CND",
+ .NumSrcRegs = 3,
+ .HasDstReg = 1,
+ .IsComponentwise = 1
+ },
+ {
.Opcode = RC_OPCODE_COS,
.Name = "COS",
.NumSrcRegs = 1,
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.h b/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.h
index 7e666101276..b5868820611 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.h
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.h
@@ -56,6 +56,9 @@ typedef enum {
/** vec4 instruction: dst.c = src0.c < 0.0 ? src1.c : src2.c */
RC_OPCODE_CMP,
+ /** vec4 instruction: dst.c = src2.c > 0.5 ? src0.c : src1.c */
+ RC_OPCODE_CND,
+
/** scalar instruction: dst = cos(src0.x) */
RC_OPCODE_COS,
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c b/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c
index c4e6a5e0a1f..79898e1047e 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c
@@ -509,10 +509,34 @@ static int is_presub_candidate(
{
const struct rc_opcode_info * info = rc_get_opcode_info(inst->U.I.Opcode);
unsigned int i;
+ unsigned int is_constant[2] = {0, 0};
+
+ assert(inst->U.I.Opcode == RC_OPCODE_ADD);
if (inst->U.I.PreSub.Opcode != RC_PRESUB_NONE || inst->U.I.SaturateMode)
return 0;
+ /* If both sources use a constant swizzle, then we can't convert it to
+ * a presubtract operation. In fact for the ADD and SUB presubtract
+ * operations neither source can contain a constant swizzle. This
+ * specific case is checked in peephole_add_presub_add() when
+ * we make sure the swizzles for both sources are equal, so we
+ * don't need to worry about it here. */
+ for (i = 0; i < 2; i++) {
+ int chan;
+ for (chan = 0; chan < 4; chan++) {
+ rc_swizzle swz =
+ get_swz(inst->U.I.SrcReg[i].Swizzle, chan);
+ if (swz == RC_SWIZZLE_ONE
+ || swz == RC_SWIZZLE_ZERO
+ || swz == RC_SWIZZLE_HALF) {
+ is_constant[i] = 1;
+ }
+ }
+ }
+ if (is_constant[0] && is_constant[1])
+ return 0;
+
for(i = 0; i < info->NumSrcRegs; i++) {
struct rc_src_register src = inst->U.I.SrcReg[i];
if (src_reads_dst_mask(src, inst->U.I.DstReg))
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_pair_translate.c b/src/mesa/drivers/dri/r300/compiler/radeon_pair_translate.c
index 9e03eb1aca8..2dae56a2428 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_pair_translate.c
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_pair_translate.c
@@ -99,6 +99,7 @@ static void classify_instruction(struct rc_sub_instruction * inst,
switch(inst->Opcode) {
case RC_OPCODE_ADD:
case RC_OPCODE_CMP:
+ case RC_OPCODE_CND:
case RC_OPCODE_DDX:
case RC_OPCODE_DDY:
case RC_OPCODE_FRC:
@@ -289,7 +290,7 @@ static void set_pair_instruction(struct r300_fragment_program_compiler *c,
}
if (needalpha) {
- pair->Alpha.WriteMask |= GET_BIT(inst->DstReg.WriteMask, 3);
+ pair->Alpha.WriteMask |= (GET_BIT(inst->DstReg.WriteMask, 3) << 3);
if (pair->Alpha.WriteMask) {
pair->Alpha.DestIndex = inst->DstReg.Index;
}
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.h b/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.h
index 6708b16d29a..d1a435fc530 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.h
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.h
@@ -71,7 +71,7 @@ struct rc_pair_instruction_arg {
struct rc_pair_sub_instruction {
unsigned int Opcode:8;
unsigned int DestIndex:RC_REGISTER_INDEX_BITS;
- unsigned int WriteMask:3;
+ unsigned int WriteMask:4;
unsigned int Target:2;
unsigned int OutputWriteMask:3;
unsigned int DepthWriteMask:1;
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_program_tex.c b/src/mesa/drivers/dri/r300/compiler/radeon_program_tex.c
index 1cf77d9cf73..cef448ee4e1 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_program_tex.c
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_program_tex.c
@@ -32,8 +32,8 @@
/* Series of transformations to be done on textures. */
-static struct rc_src_register shadow_ambient(struct r300_fragment_program_compiler *compiler,
- int tmu)
+static struct rc_src_register shadow_fail_value(struct r300_fragment_program_compiler *compiler,
+ int tmu)
{
struct rc_src_register reg = { 0, };
@@ -46,6 +46,20 @@ static struct rc_src_register shadow_ambient(struct r300_fragment_program_compil
reg.File = RC_FILE_NONE;
reg.Swizzle = RC_SWIZZLE_0000;
}
+
+ reg.Swizzle = combine_swizzles(reg.Swizzle,
+ compiler->state.unit[tmu].texture_swizzle);
+ return reg;
+}
+
+static struct rc_src_register shadow_pass_value(struct r300_fragment_program_compiler *compiler,
+ int tmu)
+{
+ struct rc_src_register reg = { 0, };
+
+ reg.File = RC_FILE_NONE;
+ reg.Swizzle = combine_swizzles(RC_SWIZZLE_1111,
+ compiler->state.unit[tmu].texture_swizzle);
return reg;
}
@@ -141,10 +155,9 @@ int radeonTransformTEX(
inst->U.I.Opcode = RC_OPCODE_MOV;
if (comparefunc == RC_COMPARE_FUNC_ALWAYS) {
- inst->U.I.SrcReg[0].File = RC_FILE_NONE;
- inst->U.I.SrcReg[0].Swizzle = RC_SWIZZLE_1111;
+ inst->U.I.SrcReg[0] = shadow_pass_value(compiler, inst->U.I.TexSrcUnit);
} else {
- inst->U.I.SrcReg[0] = shadow_ambient(compiler, inst->U.I.TexSrcUnit);
+ inst->U.I.SrcReg[0] = shadow_fail_value(compiler, inst->U.I.TexSrcUnit);
}
return 1;
@@ -157,9 +170,11 @@ int radeonTransformTEX(
/* Save the output register. */
struct rc_dst_register output_reg = inst->U.I.DstReg;
+ unsigned saturate_mode = inst->U.I.SaturateMode;
/* Redirect TEX to a new temp. */
tmp_texsample = rc_find_free_temporary(c);
+ inst->U.I.SaturateMode = 0;
inst->U.I.DstReg.File = RC_FILE_TEMPORARY;
inst->U.I.DstReg.Index = tmp_texsample;
inst->U.I.DstReg.WriteMask = RC_MASK_XYZW;
@@ -235,15 +250,15 @@ int radeonTransformTEX(
inst_cmp = rc_insert_new_instruction(c, inst_add);
inst_cmp->U.I.Opcode = RC_OPCODE_CMP;
+ inst_cmp->U.I.SaturateMode = saturate_mode;
inst_cmp->U.I.DstReg = output_reg;
inst_cmp->U.I.SrcReg[0].File = RC_FILE_TEMPORARY;
inst_cmp->U.I.SrcReg[0].Index = tmp_sum;
inst_cmp->U.I.SrcReg[0].Swizzle =
combine_swizzles(RC_SWIZZLE_WWWW,
- compiler->state.unit[inst->U.I.TexSrcUnit].depth_texture_swizzle);
- inst_cmp->U.I.SrcReg[pass].File = RC_FILE_NONE;
- inst_cmp->U.I.SrcReg[pass].Swizzle = RC_SWIZZLE_1111;
- inst_cmp->U.I.SrcReg[fail] = shadow_ambient(compiler, inst->U.I.TexSrcUnit);
+ compiler->state.unit[inst->U.I.TexSrcUnit].texture_swizzle);
+ inst_cmp->U.I.SrcReg[pass] = shadow_pass_value(compiler, inst->U.I.TexSrcUnit);
+ inst_cmp->U.I.SrcReg[fail] = shadow_fail_value(compiler, inst->U.I.TexSrcUnit);
assert(tmp_texsample != tmp_sum);
}
@@ -396,6 +411,7 @@ int radeonTransformTEX(
inst->U.I.SrcReg[0].Index = temp;
}
+ /* NPOT -> POT conversion for 3D textures. */
if (inst->U.I.Opcode != RC_OPCODE_KIL &&
compiler->state.unit[inst->U.I.TexSrcUnit].clamp_and_scale_before_fetch) {
struct rc_instruction *inst_mov;
@@ -425,6 +441,53 @@ int radeonTransformTEX(
scale_texcoords(compiler, inst, RC_STATE_R300_TEXSCALE_FACTOR);
}
+ /* Convert SNORM-encoded ATI1N sampled as UNORM to SNORM.
+ * Formula: dst = tex > 0.5 ? tex*2-2 : tex*2
+ */
+ if (inst->U.I.Opcode != RC_OPCODE_KIL &&
+ compiler->state.unit[inst->U.I.TexSrcUnit].convert_unorm_to_snorm) {
+ unsigned two, two_swizzle;
+ struct rc_instruction *inst_mul, *inst_mad, *inst_cnd;
+
+ two = rc_constants_add_immediate_scalar(&c->Program.Constants, 2.35, &two_swizzle);
+
+ inst_mul = rc_insert_new_instruction(c, inst);
+ inst_mul->U.I.Opcode = RC_OPCODE_MUL;
+ inst_mul->U.I.DstReg.File = RC_FILE_TEMPORARY;
+ inst_mul->U.I.DstReg.Index = rc_find_free_temporary(c);
+ inst_mul->U.I.SrcReg[0].File = RC_FILE_TEMPORARY;
+ inst_mul->U.I.SrcReg[0].Index = rc_find_free_temporary(c); /* redirected TEX output */
+ inst_mul->U.I.SrcReg[1].File = RC_FILE_CONSTANT; /* 2 */
+ inst_mul->U.I.SrcReg[1].Index = two;
+ inst_mul->U.I.SrcReg[1].Swizzle = two_swizzle;
+
+ inst_mad = rc_insert_new_instruction(c, inst_mul);
+ inst_mad->U.I.Opcode = RC_OPCODE_MAD;
+ inst_mad->U.I.DstReg.File = RC_FILE_TEMPORARY;
+ inst_mad->U.I.DstReg.Index = rc_find_free_temporary(c);
+ inst_mad->U.I.SrcReg[0] = inst_mul->U.I.SrcReg[0]; /* redirected TEX output */
+ inst_mad->U.I.SrcReg[1] = inst_mul->U.I.SrcReg[1]; /* 2 */
+ inst_mad->U.I.SrcReg[2] = inst_mul->U.I.SrcReg[1]; /* 2 */
+ inst_mad->U.I.SrcReg[2].Negate = RC_MASK_XYZW;
+
+ inst_cnd = rc_insert_new_instruction(c, inst_mad);
+ inst_cnd->U.I.Opcode = RC_OPCODE_CND;
+ inst_cnd->U.I.SaturateMode = inst->U.I.SaturateMode;
+ inst_cnd->U.I.DstReg = inst->U.I.DstReg;
+ inst_cnd->U.I.SrcReg[0].File = RC_FILE_TEMPORARY;
+ inst_cnd->U.I.SrcReg[0].Index = inst_mad->U.I.DstReg.Index;
+ inst_cnd->U.I.SrcReg[0].Swizzle = compiler->state.unit[inst->U.I.TexSrcUnit].texture_swizzle;
+ inst_cnd->U.I.SrcReg[1].File = RC_FILE_TEMPORARY;
+ inst_cnd->U.I.SrcReg[1].Index = inst_mul->U.I.DstReg.Index;
+ inst_cnd->U.I.SrcReg[1].Swizzle = compiler->state.unit[inst->U.I.TexSrcUnit].texture_swizzle;
+ inst_cnd->U.I.SrcReg[2] = inst_mul->U.I.SrcReg[0]; /* redirected TEX output */
+
+ inst->U.I.SaturateMode = 0;
+ inst->U.I.DstReg.File = RC_FILE_TEMPORARY;
+ inst->U.I.DstReg.Index = inst_mul->U.I.SrcReg[0].Index;
+ inst->U.I.DstReg.WriteMask = RC_MASK_XYZW;
+ }
+
/* Cannot write texture to output registers or with saturate (all chips),
* or with masks (non-r500). */
if (inst->U.I.Opcode != RC_OPCODE_KIL &&
diff --git a/src/mesa/drivers/dri/r300/r300_context.c b/src/mesa/drivers/dri/r300/r300_context.c
index 0d8bd4fc706..213d3c060a6 100644
--- a/src/mesa/drivers/dri/r300/r300_context.c
+++ b/src/mesa/drivers/dri/r300/r300_context.c
@@ -133,7 +133,6 @@ static const struct dri_extension card_extensions[] = {
{"GL_ATI_texture_mirror_once", NULL},
{"GL_MESA_pack_invert", NULL},
{"GL_MESA_ycbcr_texture", NULL},
- {"GL_MESAX_texture_float", NULL},
{"GL_NV_blend_square", NULL},
{"GL_NV_vertex_program", GL_NV_vertex_program_functions},
#if FEATURE_OES_EGL_image
diff --git a/src/mesa/drivers/dri/r300/r300_fragprog_common.c b/src/mesa/drivers/dri/r300/r300_fragprog_common.c
index a0a26f1b38d..f0d960dca54 100644
--- a/src/mesa/drivers/dri/r300/r300_fragprog_common.c
+++ b/src/mesa/drivers/dri/r300/r300_fragprog_common.c
@@ -77,8 +77,8 @@ static void build_state(
if (fp->Base.ShadowSamplers & (1 << unit)) {
struct gl_texture_object* tex = r300->radeon.glCtx->Texture.Unit[unit]._Current;
- state->unit[unit].depth_texture_swizzle = build_dts(tex->DepthMode);
- state->unit[unit].texture_compare_func = build_func(tex->CompareFunc);
+ state->unit[unit].texture_swizzle = build_dts(tex->Sampler.DepthMode);
+ state->unit[unit].texture_compare_func = build_func(tex->Sampler.CompareFunc);
}
}
}
diff --git a/src/mesa/drivers/dri/r300/r300_reg.h b/src/mesa/drivers/dri/r300/r300_reg.h
index 2b9d85fae8b..8980bd3dde1 100644
--- a/src/mesa/drivers/dri/r300/r300_reg.h
+++ b/src/mesa/drivers/dri/r300/r300_reg.h
@@ -1906,7 +1906,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
# define R300_ALU_OUTC_D2A (3 << 23)
# define R300_ALU_OUTC_MIN (4 << 23)
# define R300_ALU_OUTC_MAX (5 << 23)
-# define R300_ALU_OUTC_CMPH (7 << 23)
+# define R300_ALU_OUTC_CND (7 << 23)
# define R300_ALU_OUTC_CMP (8 << 23)
# define R300_ALU_OUTC_FRC (9 << 23)
# define R300_ALU_OUTC_REPL_ALPHA (10 << 23)
diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c
index 51989c6b224..da6c8b602e1 100644
--- a/src/mesa/drivers/dri/r300/r300_state.c
+++ b/src/mesa/drivers/dri/r300/r300_state.c
@@ -1343,7 +1343,7 @@ static void r300SetupTextures(struct gl_context * ctx)
*/
r300->hw.tex.filter_1.cmd[R300_TEX_VALUE_0 + hw_tmu] =
t->pp_txfilter_1 |
- translate_lod_bias(ctx->Texture.Unit[i].LodBias + t->base.LodBias);
+ translate_lod_bias(ctx->Texture.Unit[i].LodBias + t->base.Sampler.LodBias);
r300->hw.tex.size.cmd[R300_TEX_VALUE_0 + hw_tmu] =
t->pp_txsize;
r300->hw.tex.format.cmd[R300_TEX_VALUE_0 +
@@ -2014,7 +2014,7 @@ static const GLfloat *get_fragmentprogram_constant(struct gl_context *ctx, GLuin
buffer[0] =
buffer[1] =
buffer[2] =
- buffer[3] = texObj->CompareFailValue;
+ buffer[3] = texObj->Sampler.CompareFailValue;
}
return buffer;
}
diff --git a/src/mesa/drivers/dri/r300/r300_tex.c b/src/mesa/drivers/dri/r300/r300_tex.c
index f930b4d06bf..590d9afe14a 100644
--- a/src/mesa/drivers/dri/r300/r300_tex.c
+++ b/src/mesa/drivers/dri/r300/r300_tex.c
@@ -81,13 +81,13 @@ static void r300UpdateTexWrap(radeonTexObjPtr t)
t->pp_txfilter &=
~(R300_TX_WRAP_S_MASK | R300_TX_WRAP_T_MASK | R300_TX_WRAP_R_MASK);
- t->pp_txfilter |= translate_wrap_mode(tObj->WrapS) << R300_TX_WRAP_S_SHIFT;
+ t->pp_txfilter |= translate_wrap_mode(tObj->Sampler.WrapS) << R300_TX_WRAP_S_SHIFT;
if (tObj->Target != GL_TEXTURE_1D) {
- t->pp_txfilter |= translate_wrap_mode(tObj->WrapT) << R300_TX_WRAP_T_SHIFT;
+ t->pp_txfilter |= translate_wrap_mode(tObj->Sampler.WrapT) << R300_TX_WRAP_T_SHIFT;
if (tObj->Target == GL_TEXTURE_3D)
- t->pp_txfilter |= translate_wrap_mode(tObj->WrapR) << R300_TX_WRAP_R_SHIFT;
+ t->pp_txfilter |= translate_wrap_mode(tObj->Sampler.WrapR) << R300_TX_WRAP_R_SHIFT;
}
}
@@ -202,7 +202,7 @@ static void r300TexParameter(struct gl_context * ctx, GLenum target,
case GL_TEXTURE_MIN_FILTER:
case GL_TEXTURE_MAG_FILTER:
case GL_TEXTURE_MAX_ANISOTROPY_EXT:
- r300SetTexFilter(t, texObj->MinFilter, texObj->MagFilter, texObj->MaxAnisotropy);
+ r300SetTexFilter(t, texObj->Sampler.MinFilter, texObj->Sampler.MagFilter, texObj->Sampler.MaxAnisotropy);
break;
case GL_TEXTURE_WRAP_S:
@@ -212,7 +212,7 @@ static void r300TexParameter(struct gl_context * ctx, GLenum target,
break;
case GL_TEXTURE_BORDER_COLOR:
- r300SetTexBorderColor(t, texObj->BorderColor.f);
+ r300SetTexBorderColor(t, texObj->Sampler.BorderColor.f);
break;
case GL_TEXTURE_BASE_LEVEL:
@@ -299,12 +299,14 @@ static struct gl_texture_object *r300NewTextureObject(struct gl_context * ctx,
}
_mesa_initialize_texture_object(&t->base, name, target);
- t->base.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy;
+ t->base.Sampler.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy;
/* Initialize hardware state */
r300UpdateTexWrap(t);
- r300SetTexFilter(t, t->base.MinFilter, t->base.MagFilter, t->base.MaxAnisotropy);
- r300SetTexBorderColor(t, t->base.BorderColor.f);
+ r300SetTexFilter(t, t->base.Sampler.MinFilter,
+ t->base.Sampler.MagFilter,
+ t->base.Sampler.MaxAnisotropy);
+ r300SetTexBorderColor(t, t->base.Sampler.BorderColor.f);
return &t->base;
}
diff --git a/src/mesa/drivers/dri/r300/r300_texstate.c b/src/mesa/drivers/dri/r300/r300_texstate.c
index ed9955b05d8..e24ad6f088d 100644
--- a/src/mesa/drivers/dri/r300/r300_texstate.c
+++ b/src/mesa/drivers/dri/r300/r300_texstate.c
@@ -216,7 +216,7 @@ void r300SetDepthTexMode(struct gl_texture_object *tObj)
return;
}
- switch (tObj->DepthMode) {
+ switch (tObj->Sampler.DepthMode) {
case GL_LUMINANCE:
t->pp_txformat = format[0];
break;
diff --git a/src/mesa/drivers/dri/r600/defaultendian.h b/src/mesa/drivers/dri/r600/defaultendian.h
index 32caf32cd2e..75bd61c3cd4 100644
--- a/src/mesa/drivers/dri/r600/defaultendian.h
+++ b/src/mesa/drivers/dri/r600/defaultendian.h
@@ -29,8 +29,8 @@
#define _DEFINEENDIAN_H_
//We have to choose a reg bits orientation if there is no compile flag for it.
-#if defined(LITTLEENDIAN_CPU)
-#elif defined(BIGENDIAN_CPU)
+#ifdef MESA_BIG_ENDIAN
+#define BIGENDIAN_CPU
#else
#define LITTLEENDIAN_CPU
#endif
diff --git a/src/mesa/drivers/dri/r600/evergreen_blit.c b/src/mesa/drivers/dri/r600/evergreen_blit.c
index e07da8c15b4..0e4da5499ba 100644
--- a/src/mesa/drivers/dri/r600/evergreen_blit.c
+++ b/src/mesa/drivers/dri/r600/evergreen_blit.c
@@ -98,10 +98,11 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo
uint32_t cb_color0_base, cb_color0_info = 0;
uint32_t cb_color0_pitch = 0, cb_color0_slice = 0, cb_color0_attrib = 0;
int id = 0;
- uint32_t comp_swap, format, source_format, number_type;
+ uint32_t endian, comp_swap, format, source_format, number_type;
BATCH_LOCALS(&context->radeon);
cb_color0_base = dst_offset / 256;
+ endian = ENDIAN_NONE;
/* pitch */
SETfield(cb_color0_pitch, (nPitchInPixel / 8) - 1,
@@ -119,10 +120,6 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo
EG_CB_COLOR0_ATTRIB__NON_DISP_TILING_ORDER_bit);
SETfield(cb_color0_info,
- ENDIAN_NONE,
- EG_CB_COLOR0_INFO__ENDIAN_shift,
- EG_CB_COLOR0_INFO__ENDIAN_mask);
- SETfield(cb_color0_info,
ARRAY_LINEAR_GENERAL,
EG_CB_COLOR0_INFO__ARRAY_MODE_shift,
EG_CB_COLOR0_INFO__ARRAY_MODE_mask);
@@ -131,24 +128,36 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo
switch(mesa_format) {
case MESA_FORMAT_RGBA8888:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN32;
+#endif
format = COLOR_8_8_8_8;
comp_swap = SWAP_STD_REV;
number_type = NUMBER_UNORM;
source_format = 1;
break;
case MESA_FORMAT_SIGNED_RGBA8888:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN32;
+#endif
format = COLOR_8_8_8_8;
comp_swap = SWAP_STD_REV;
number_type = NUMBER_SNORM;
source_format = 1;
break;
case MESA_FORMAT_RGBA8888_REV:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN32;
+#endif
format = COLOR_8_8_8_8;
comp_swap = SWAP_STD;
number_type = NUMBER_UNORM;
source_format = 1;
break;
case MESA_FORMAT_SIGNED_RGBA8888_REV:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN32;
+#endif
format = COLOR_8_8_8_8;
comp_swap = SWAP_STD;
number_type = NUMBER_SNORM;
@@ -156,6 +165,9 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo
break;
case MESA_FORMAT_ARGB8888:
case MESA_FORMAT_XRGB8888:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN32;
+#endif
format = COLOR_8_8_8_8;
comp_swap = SWAP_ALT;
number_type = NUMBER_UNORM;
@@ -163,54 +175,81 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo
break;
case MESA_FORMAT_ARGB8888_REV:
case MESA_FORMAT_XRGB8888_REV:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN32;
+#endif
format = COLOR_8_8_8_8;
comp_swap = SWAP_ALT_REV;
number_type = NUMBER_UNORM;
source_format = 1;
break;
case MESA_FORMAT_RGB565:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN16;
+#endif
format = COLOR_5_6_5;
comp_swap = SWAP_STD_REV;
number_type = NUMBER_UNORM;
source_format = 1;
break;
case MESA_FORMAT_RGB565_REV:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN16;
+#endif
format = COLOR_5_6_5;
comp_swap = SWAP_STD;
number_type = NUMBER_UNORM;
source_format = 1;
break;
case MESA_FORMAT_ARGB4444:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN16;
+#endif
format = COLOR_4_4_4_4;
comp_swap = SWAP_ALT;
number_type = NUMBER_UNORM;
source_format = 1;
break;
case MESA_FORMAT_ARGB4444_REV:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN16;
+#endif
format = COLOR_4_4_4_4;
comp_swap = SWAP_ALT_REV;
number_type = NUMBER_UNORM;
source_format = 1;
break;
case MESA_FORMAT_ARGB1555:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN16;
+#endif
format = COLOR_1_5_5_5;
comp_swap = SWAP_ALT;
number_type = NUMBER_UNORM;
source_format = 1;
break;
case MESA_FORMAT_ARGB1555_REV:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN16;
+#endif
format = COLOR_1_5_5_5;
comp_swap = SWAP_ALT_REV;
number_type = NUMBER_UNORM;
source_format = 1;
break;
case MESA_FORMAT_AL88:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN16;
+#endif
format = COLOR_8_8;
comp_swap = SWAP_STD;
number_type = NUMBER_UNORM;
source_format = 1;
break;
case MESA_FORMAT_AL88_REV:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN16;
+#endif
format = COLOR_8_8;
comp_swap = SWAP_STD_REV;
number_type = NUMBER_UNORM;
@@ -242,60 +281,90 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo
source_format = 1;
break;
case MESA_FORMAT_RGBA_FLOAT32:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN32;
+#endif
format = COLOR_32_32_32_32_FLOAT;
comp_swap = SWAP_STD;
number_type = NUMBER_FLOAT;
source_format = 0;
break;
case MESA_FORMAT_RGBA_FLOAT16:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN16;
+#endif
format = COLOR_16_16_16_16_FLOAT;
comp_swap = SWAP_STD;
number_type = NUMBER_FLOAT;
source_format = 0;
break;
case MESA_FORMAT_ALPHA_FLOAT32:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN32;
+#endif
format = COLOR_32_FLOAT;
comp_swap = SWAP_ALT_REV;
number_type = NUMBER_FLOAT;
source_format = 0;
break;
case MESA_FORMAT_ALPHA_FLOAT16:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN16;
+#endif
format = COLOR_16_FLOAT;
comp_swap = SWAP_ALT_REV;
number_type = NUMBER_FLOAT;
source_format = 0;
break;
case MESA_FORMAT_LUMINANCE_FLOAT32:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN32;
+#endif
format = COLOR_32_FLOAT;
comp_swap = SWAP_ALT;
number_type = NUMBER_FLOAT;
source_format = 0;
break;
case MESA_FORMAT_LUMINANCE_FLOAT16:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN16;
+#endif
format = COLOR_16_FLOAT;
comp_swap = SWAP_ALT;
number_type = NUMBER_FLOAT;
source_format = 0;
break;
case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN32;
+#endif
format = COLOR_32_32_FLOAT;
comp_swap = SWAP_ALT_REV;
number_type = NUMBER_FLOAT;
source_format = 0;
break;
case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN16;
+#endif
format = COLOR_16_16_FLOAT;
comp_swap = SWAP_ALT_REV;
number_type = NUMBER_FLOAT;
source_format = 0;
break;
case MESA_FORMAT_INTENSITY_FLOAT32: /* X, X, X, X */
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN32;
+#endif
format = COLOR_32_FLOAT;
comp_swap = SWAP_STD;
number_type = NUMBER_FLOAT;
source_format = 0;
break;
case MESA_FORMAT_INTENSITY_FLOAT16: /* X, X, X, X */
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN16;
+#endif
format = COLOR_16_FLOAT;
comp_swap = SWAP_STD;
number_type = NUMBER_UNORM;
@@ -303,6 +372,9 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo
break;
case MESA_FORMAT_X8_Z24:
case MESA_FORMAT_S8_Z24:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN32;
+#endif
format = COLOR_8_24;
comp_swap = SWAP_STD;
number_type = NUMBER_UNORM;
@@ -313,6 +385,9 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo
source_format = 0;
break;
case MESA_FORMAT_Z24_S8:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN32;
+#endif
format = COLOR_24_8;
comp_swap = SWAP_STD;
number_type = NUMBER_UNORM;
@@ -323,6 +398,9 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo
source_format = 0;
break;
case MESA_FORMAT_Z16:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN16;
+#endif
format = COLOR_16;
comp_swap = SWAP_STD;
number_type = NUMBER_UNORM;
@@ -333,6 +411,9 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo
source_format = 0;
break;
case MESA_FORMAT_Z32:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN32;
+#endif
format = COLOR_32;
comp_swap = SWAP_STD;
number_type = NUMBER_UNORM;
@@ -343,12 +424,18 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo
source_format = 0;
break;
case MESA_FORMAT_SARGB8:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN32;
+#endif
format = COLOR_8_8_8_8;
comp_swap = SWAP_ALT;
number_type = NUMBER_SRGB;
source_format = 1;
break;
case MESA_FORMAT_SLA8:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN16;
+#endif
format = COLOR_8_8;
comp_swap = SWAP_ALT_REV;
number_type = NUMBER_SRGB;
@@ -367,6 +454,10 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo
}
SETfield(cb_color0_info,
+ endian,
+ EG_CB_COLOR0_INFO__ENDIAN_shift,
+ EG_CB_COLOR0_INFO__ENDIAN_mask);
+ SETfield(cb_color0_info,
format,
EG_CB_COLOR0_INFO__FORMAT_shift,
EG_CB_COLOR0_INFO__FORMAT_mask);
@@ -441,10 +532,10 @@ static inline void eg_load_shaders(struct gl_context * ctx)
shader = context->blit_bo->ptr;
for(i=0; i<sizeof(evergreen_vs)/4; i++) {
- shader[128+i] = evergreen_vs[i];
+ shader[128+i] = CPU_TO_LE32(evergreen_vs[i]);
}
for(i=0; i<sizeof(evergreen_ps)/4; i++) {
- shader[256+i] = evergreen_ps[i];
+ shader[256+i] = CPU_TO_LE32(evergreen_ps[i]);
}
radeon_bo_unmap(context->blit_bo);
@@ -525,6 +616,7 @@ eg_set_vtx_resource(context_t *context)
{
struct radeon_bo *bo = context->blit_bo;
uint32_t sq_vtx_constant_word3 = 0;
+ uint32_t sq_vtx_constant_word2 = 0;
BATCH_LOCALS(&context->radeon);
BEGIN_BATCH_NO_AUTOSTATE(6);
@@ -555,13 +647,19 @@ eg_set_vtx_resource(context_t *context)
EG_SQ_VTX_CONSTANT_WORD3_0__DST_SEL_W_shift,
EG_SQ_VTX_CONSTANT_WORD3_0__DST_SEL_W_mask);
+ sq_vtx_constant_word2 = 0
+#ifdef MESA_BIG_ENDIAN
+ | (SQ_ENDIAN_8IN32 << SQ_VTX_CONSTANT_WORD2_0__ENDIAN_SWAP_shift)
+#endif
+ | (16 << SQ_VTX_CONSTANT_WORD2_0__STRIDE_shift);
+
BEGIN_BATCH_NO_AUTOSTATE(10 + 2);
R600_OUT_BATCH(CP_PACKET3(R600_IT_SET_RESOURCE, 8));
R600_OUT_BATCH(EG_SQ_FETCH_RESOURCE_VS_OFFSET * EG_FETCH_RESOURCE_STRIDE);
R600_OUT_BATCH(0);
R600_OUT_BATCH(48 - 1);
- R600_OUT_BATCH(16 << SQ_VTX_CONSTANT_WORD2_0__STRIDE_shift);
+ R600_OUT_BATCH(sq_vtx_constant_word2);
R600_OUT_BATCH(sq_vtx_constant_word3);
R600_OUT_BATCH(0);
R600_OUT_BATCH(0);
diff --git a/src/mesa/drivers/dri/r600/evergreen_blit_shaders.h b/src/mesa/drivers/dri/r600/evergreen_blit_shaders.h
index eb025280739..84f20f8cafb 100644
--- a/src/mesa/drivers/dri/r600/evergreen_blit_shaders.h
+++ b/src/mesa/drivers/dri/r600/evergreen_blit_shaders.h
@@ -37,11 +37,19 @@ const uint32_t evergreen_vs[] =
0x00000000,
0x3c000000,
0x67961001,
+#ifdef MESA_BIG_ENDIAN
+ 0x000a0000,
+#else
0x00080000,
+#endif
0x00000000,
0x1c000000,
0x67961000,
+#ifdef MESA_BIG_ENDIAN
+ 0x00020008,
+#else
0x00000008,
+#endif
0x00000000,
};
diff --git a/src/mesa/drivers/dri/r600/evergreen_chip.c b/src/mesa/drivers/dri/r600/evergreen_chip.c
index 53dacbfdf39..42566e537a5 100644
--- a/src/mesa/drivers/dri/r600/evergreen_chip.c
+++ b/src/mesa/drivers/dri/r600/evergreen_chip.c
@@ -124,7 +124,7 @@ static void evergreenSendTexState(struct gl_context *ctx, struct radeon_state_at
context_t *context = EVERGREEN_CONTEXT(ctx);
EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context);
- struct evergreen_vertex_program *vp = context->selected_vp;
+ struct evergreen_vertex_program *vp = (struct evergreen_vertex_program *) context->selected_vp;
struct radeon_bo *bo = NULL;
unsigned int i;
@@ -307,6 +307,16 @@ static void evergreenSetupVTXConstants(struct gl_context * ctx,
SQ_VTX_CONSTANT_WORD2_0__DATA_FORMAT_shift,
SQ_VTX_CONSTANT_WORD2_0__DATA_FORMAT_mask); // TODO : trace back api for initial data type, not only GL_FLOAT
SETfield(uSQ_VTX_CONSTANT_WORD2_0, 0, BASE_ADDRESS_HI_shift, BASE_ADDRESS_HI_mask); // TODO
+
+ SETfield(uSQ_VTX_CONSTANT_WORD2_0,
+#ifdef MESA_BIG_ENDIAN
+ SQ_ENDIAN_8IN32,
+#else
+ SQ_ENDIAN_NONE,
+#endif
+ SQ_VTX_CONSTANT_WORD2_0__ENDIAN_SWAP_shift,
+ SQ_VTX_CONSTANT_WORD2_0__ENDIAN_SWAP_mask);
+
if(GL_TRUE == pStreamDesc->normalize)
{
SETfield(uSQ_VTX_CONSTANT_WORD2_0, SQ_NUM_FORMAT_NORM,
@@ -379,6 +389,8 @@ static void evergreenSendVTX(struct gl_context *ctx, struct radeon_state_atom *a
struct evergreen_vertex_program *vp = (struct evergreen_vertex_program *)(context->selected_vp);
unsigned int i, j = 0;
BATCH_LOCALS(&context->radeon);
+ (void) b_l_rmesa; /* silence unused var warning */
+
radeon_print(RADEON_STATE, RADEON_VERBOSE, "%s\n", __func__);
if (context->radeon.tcl.aos_count == 0)
diff --git a/src/mesa/drivers/dri/r600/evergreen_oglprog.c b/src/mesa/drivers/dri/r600/evergreen_oglprog.c
index a2a361f32e6..1fd655e85f8 100644
--- a/src/mesa/drivers/dri/r600/evergreen_oglprog.c
+++ b/src/mesa/drivers/dri/r600/evergreen_oglprog.c
@@ -42,7 +42,7 @@
static void evergreen_freeVertProgCache(struct gl_context *ctx, struct r700_vertex_program_cont *cache)
{
- struct evergreen_vertex_program *tmp, *vp = cache->progs;
+ struct evergreen_vertex_program *tmp, *vp = (struct evergreen_vertex_program *) cache->progs;
while (vp) {
tmp = vp->next;
@@ -121,7 +121,7 @@ static void evergreenDeleteProgram(struct gl_context * ctx, struct gl_program *p
{
case GL_VERTEX_STATE_PROGRAM_NV:
case GL_VERTEX_PROGRAM_ARB:
- evergreen_freeVertProgCache(ctx, vpc);
+ evergreen_freeVertProgCache(ctx, (struct r700_vertex_program_cont *) vpc);
break;
case GL_FRAGMENT_PROGRAM_NV:
case GL_FRAGMENT_PROGRAM_ARB:
@@ -154,7 +154,7 @@ evergreenProgramStringNotify(struct gl_context * ctx, GLenum target, struct gl_p
switch (target) {
case GL_VERTEX_PROGRAM_ARB:
- evergreen_freeVertProgCache(ctx, vpc);
+ evergreen_freeVertProgCache(ctx, (struct r700_vertex_program_cont *) vpc);
vpc->progs = NULL;
break;
case GL_FRAGMENT_PROGRAM_ARB:
diff --git a/src/mesa/drivers/dri/r600/evergreen_render.c b/src/mesa/drivers/dri/r600/evergreen_render.c
index 6e51832c878..4507be29d86 100644
--- a/src/mesa/drivers/dri/r600/evergreen_render.c
+++ b/src/mesa/drivers/dri/r600/evergreen_render.c
@@ -180,6 +180,15 @@ static void evergreenRunRenderPrimitive(struct gl_context * ctx, int start, int
SETfield(vgt_index_type, DI_INDEX_SIZE_16_BIT, INDEX_TYPE_shift, INDEX_TYPE_mask);
}
+ /* 16-bit indexes are packed in a 32-bit value */
+ SETfield(vgt_index_type,
+#if MESA_BIG_ENDIAN
+ VGT_DMA_SWAP_32_BIT,
+#else
+ VGT_DMA_SWAP_NONE,
+#endif
+ SWAP_MODE_shift, SWAP_MODE_mask);
+
vgt_num_indices = num_indices;
SETfield(vgt_draw_initiator, DI_SRC_SEL_DMA, SOURCE_SELECT_shift, SOURCE_SELECT_mask);
SETfield(vgt_draw_initiator, DI_MAJOR_MODE_0, MAJOR_MODE_shift, MAJOR_MODE_mask);
@@ -252,6 +261,15 @@ static void evergreenRunRenderPrimitiveImmediate(struct gl_context * ctx, int st
SETfield(vgt_index_type, DI_INDEX_SIZE_16_BIT, INDEX_TYPE_shift, INDEX_TYPE_mask);
}
+ /* 16-bit indexes are packed in a 32-bit value */
+ SETfield(vgt_index_type,
+#if MESA_BIG_ENDIAN
+ VGT_DMA_SWAP_32_BIT,
+#else
+ VGT_DMA_SWAP_NONE,
+#endif
+ SWAP_MODE_shift, SWAP_MODE_mask);
+
vgt_num_indices = num_indices;
SETfield(vgt_draw_initiator, DI_MAJOR_MODE_0, MAJOR_MODE_shift, MAJOR_MODE_mask);
@@ -620,6 +638,7 @@ static void evergreenSetupIndexBuffer(struct gl_context *ctx, const struct _mesa
}
}
+#if 0 /* unused */
static void evergreenAlignDataToDword(struct gl_context *ctx,
const struct gl_client_array *input,
int count,
@@ -661,6 +680,7 @@ static void evergreenAlignDataToDword(struct gl_context *ctx,
attr->stride = dst_stride;
}
+#endif
static void evergreenSetupStreams(struct gl_context *ctx, const struct gl_client_array *input[], int count)
{
diff --git a/src/mesa/drivers/dri/r600/evergreen_tex.c b/src/mesa/drivers/dri/r600/evergreen_tex.c
index 3b5448a0e4e..33a5f277683 100644
--- a/src/mesa/drivers/dri/r600/evergreen_tex.c
+++ b/src/mesa/drivers/dri/r600/evergreen_tex.c
@@ -97,6 +97,16 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask);
+#ifdef MESA_BIG_ENDIAN
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#else
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
@@ -105,6 +115,7 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#endif
if (mesa_format == MESA_FORMAT_SIGNED_RGBA8888) {
SETfield(t->SQ_TEX_RESOURCE4, SQ_FORMAT_COMP_SIGNED,
FORMAT_COMP_X_shift, FORMAT_COMP_X_mask);
@@ -122,6 +133,16 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask);
+#ifdef MESA_BIG_ENDIAN
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#else
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
@@ -130,6 +151,7 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#endif
if (mesa_format == MESA_FORMAT_SIGNED_RGBA8888_REV) {
SETfield(t->SQ_TEX_RESOURCE4, SQ_FORMAT_COMP_SIGNED,
FORMAT_COMP_X_shift, FORMAT_COMP_X_mask);
@@ -146,6 +168,16 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask);
+#ifdef MESA_BIG_ENDIAN
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#else
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
@@ -154,12 +186,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#endif
break;
case MESA_FORMAT_XRGB8888:
SETfield(t->SQ_TEX_RESOURCE7, FMT_8_8_8_8,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask);
+#ifdef MESA_BIG_ENDIAN
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#else
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
@@ -168,26 +211,48 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#endif
break;
case MESA_FORMAT_XRGB8888_REV:
SETfield(t->SQ_TEX_RESOURCE7, FMT_8_8_8_8,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask);
+#ifdef MESA_BIG_ENDIAN
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#else
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
- SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#endif
break;
case MESA_FORMAT_ARGB8888_REV:
SETfield(t->SQ_TEX_RESOURCE7, FMT_8_8_8_8,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask);
+#ifdef MESA_BIG_ENDIAN
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#else
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
@@ -196,12 +261,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#endif
break;
case MESA_FORMAT_RGB888:
SETfield(t->SQ_TEX_RESOURCE7, FMT_8_8_8,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask);
+#ifdef MESA_BIG_ENDIAN
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#else
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
@@ -210,12 +286,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#endif
break;
case MESA_FORMAT_RGB565:
SETfield(t->SQ_TEX_RESOURCE7, FMT_5_6_5,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask);
+#ifdef MESA_BIG_ENDIAN
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#else
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
@@ -224,12 +311,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#endif
break;
case MESA_FORMAT_RGB565_REV:
SETfield(t->SQ_TEX_RESOURCE7, FMT_5_6_5,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask);
+#ifdef MESA_BIG_ENDIAN
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#else
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
@@ -238,12 +336,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#endif
break;
case MESA_FORMAT_ARGB4444:
SETfield(t->SQ_TEX_RESOURCE7, FMT_4_4_4_4,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask);
+#ifdef MESA_BIG_ENDIAN
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#else
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
@@ -252,12 +361,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#endif
break;
case MESA_FORMAT_ARGB4444_REV:
SETfield(t->SQ_TEX_RESOURCE7, FMT_4_4_4_4,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask);
+#ifdef MESA_BIG_ENDIAN
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#else
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
@@ -266,12 +386,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#endif
break;
case MESA_FORMAT_ARGB1555:
SETfield(t->SQ_TEX_RESOURCE7, FMT_1_5_5_5,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask);
+#ifdef MESA_BIG_ENDIAN
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#else
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
@@ -280,12 +411,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#endif
break;
case MESA_FORMAT_ARGB1555_REV:
SETfield(t->SQ_TEX_RESOURCE7, FMT_1_5_5_5,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift,
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask);
+#ifdef MESA_BIG_ENDIAN
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#else
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
@@ -294,6 +436,7 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#endif
break;
case MESA_FORMAT_AL88:
case MESA_FORMAT_AL88_REV: /* TODO : Check this. */
@@ -581,7 +724,7 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
default:
break;
};
- switch (tObj->DepthMode) {
+ switch (tObj->Sampler.DepthMode) {
case GL_LUMINANCE: /* X, X, X, ONE */
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
@@ -699,18 +842,18 @@ static void evergreenUpdateTexWrap(radeonTexObjPtr t)
{
struct gl_texture_object *tObj = &t->base;
- SETfield(t->SQ_TEX_SAMPLER0, evergreen_translate_wrap_mode(tObj->WrapS),
+ SETfield(t->SQ_TEX_SAMPLER0, evergreen_translate_wrap_mode(tObj->Sampler.WrapS),
EG_SQ_TEX_SAMPLER_WORD0_0__CLAMP_X_shift,
EG_SQ_TEX_SAMPLER_WORD0_0__CLAMP_X_mask);
if (tObj->Target != GL_TEXTURE_1D)
{
- SETfield(t->SQ_TEX_SAMPLER0, evergreen_translate_wrap_mode(tObj->WrapT),
+ SETfield(t->SQ_TEX_SAMPLER0, evergreen_translate_wrap_mode(tObj->Sampler.WrapT),
EG_SQ_TEX_SAMPLER_WORD0_0__CLAMP_Y_shift,
EG_SQ_TEX_SAMPLER_WORD0_0__CLAMP_Y_mask);
if (tObj->Target == GL_TEXTURE_3D)
- SETfield(t->SQ_TEX_SAMPLER0, evergreen_translate_wrap_mode(tObj->WrapR),
+ SETfield(t->SQ_TEX_SAMPLER0, evergreen_translate_wrap_mode(tObj->Sampler.WrapR),
EG_SQ_TEX_SAMPLER_WORD0_0__CLAMP_Z_shift,
EG_SQ_TEX_SAMPLER_WORD0_0__CLAMP_Z_mask);
}
@@ -1022,21 +1165,21 @@ static GLboolean evergreen_setup_hardware_state(struct gl_context * ctx, struct
SETfield(t->SQ_TEX_RESOURCE5, t->maxLod - t->minLod, LAST_LEVEL_shift, LAST_LEVEL_mask);
SETfield(t->SQ_TEX_SAMPLER1,
- EG_S_FIXED(CLAMP(t->base.MinLod - t->minLod, 0, 15), 8),
+ EG_S_FIXED(CLAMP(t->base.Sampler.MinLod - t->minLod, 0, 15), 8),
EG_SQ_TEX_SAMPLER_WORD1_0__MIN_LOD_shift,
EG_SQ_TEX_SAMPLER_WORD1_0__MIN_LOD_mask);
SETfield(t->SQ_TEX_SAMPLER1,
- EG_S_FIXED(CLAMP(t->base.MaxLod - t->minLod, 0, 15), 8),
+ EG_S_FIXED(CLAMP(t->base.Sampler.MaxLod - t->minLod, 0, 15), 8),
EG_SQ_TEX_SAMPLER_WORD1_0__MAX_LOD_shift,
EG_SQ_TEX_SAMPLER_WORD1_0__MAX_LOD_mask);
SETfield(t->SQ_TEX_SAMPLER2,
- EG_S_FIXED(CLAMP(ctx->Texture.Unit[unit].LodBias + t->base.LodBias, -16, 16), 8),
+ EG_S_FIXED(CLAMP(ctx->Texture.Unit[unit].LodBias + t->base.Sampler.LodBias, -16, 16), 8),
EG_SQ_TEX_SAMPLER_WORD2_0__LOD_BIAS_shift,
EG_SQ_TEX_SAMPLER_WORD2_0__LOD_BIAS_mask);
- if(texObj->CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB)
+ if(texObj->Sampler.CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB)
{
- SETfield(t->SQ_TEX_SAMPLER0, evergreen_translate_shadow_func(texObj->CompareFunc),
+ SETfield(t->SQ_TEX_SAMPLER0, evergreen_translate_shadow_func(texObj->Sampler.CompareFunc),
EG_SQ_TEX_SAMPLER_WORD0_0__DCF_shift,
EG_SQ_TEX_SAMPLER_WORD0_0__DCF_mask);
}
@@ -1420,12 +1563,12 @@ static struct gl_texture_object *evergreenNewTextureObject(struct gl_context * c
t, _mesa_lookup_enum_by_nr(target));
_mesa_initialize_texture_object(&t->base, name, target);
- t->base.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy;
+ t->base.Sampler.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy;
evergreenSetTexDefaultState(t);
evergreenUpdateTexWrap(t);
- evergreenSetTexFilter(t, t->base.MinFilter, t->base.MagFilter, t->base.MaxAnisotropy);
- evergreenSetTexBorderColor(t, t->base.BorderColor.f);
+ evergreenSetTexFilter(t, t->base.Sampler.MinFilter, t->base.Sampler.MagFilter, t->base.Sampler.MaxAnisotropy);
+ evergreenSetTexBorderColor(t, t->base.Sampler.BorderColor.f);
return &t->base;
}
@@ -1475,7 +1618,7 @@ static void evergreenTexParameter(struct gl_context * ctx, GLenum target,
case GL_TEXTURE_MIN_FILTER:
case GL_TEXTURE_MAG_FILTER:
case GL_TEXTURE_MAX_ANISOTROPY_EXT:
- evergreenSetTexFilter(t, texObj->MinFilter, texObj->MagFilter, texObj->MaxAnisotropy);
+ evergreenSetTexFilter(t, texObj->Sampler.MinFilter, texObj->Sampler.MagFilter, texObj->Sampler.MaxAnisotropy);
break;
case GL_TEXTURE_WRAP_S:
@@ -1485,7 +1628,7 @@ static void evergreenTexParameter(struct gl_context * ctx, GLenum target,
break;
case GL_TEXTURE_BORDER_COLOR:
- evergreenSetTexBorderColor(t, texObj->BorderColor.f);
+ evergreenSetTexBorderColor(t, texObj->Sampler.BorderColor.f);
break;
case GL_TEXTURE_BASE_LEVEL:
diff --git a/src/mesa/drivers/dri/r600/evergreen_vertprog.c b/src/mesa/drivers/dri/r600/evergreen_vertprog.c
index b3371f20b19..018869b9996 100644
--- a/src/mesa/drivers/dri/r600/evergreen_vertprog.c
+++ b/src/mesa/drivers/dri/r600/evergreen_vertprog.c
@@ -405,7 +405,7 @@ void evergreenSelectVertexShader(struct gl_context *ctx)
}
if (match)
{
- context->selected_vp = vp;
+ context->selected_vp = (struct r700_vertex_program *) vp;
return;
}
}
@@ -418,7 +418,7 @@ void evergreenSelectVertexShader(struct gl_context *ctx)
}
vp->next = vpc->progs;
vpc->progs = vp;
- context->selected_vp = vp;
+ context->selected_vp = (struct r700_vertex_program *) vp;
return;
}
@@ -566,7 +566,7 @@ void evergreenSetVertexFormat(struct gl_context *ctx, const struct gl_client_arr
void * evergreenGetActiveVpShaderBo(struct gl_context * ctx)
{
context_t *context = EVERGREEN_CONTEXT(ctx);
- struct evergreen_vertex_program *vp = context->selected_vp;;
+ struct evergreen_vertex_program *vp = (struct evergreen_vertex_program *) context->selected_vp;
if (vp)
return vp->shaderbo;
@@ -577,7 +577,7 @@ void * evergreenGetActiveVpShaderBo(struct gl_context * ctx)
void * evergreenGetActiveVpShaderConstBo(struct gl_context * ctx)
{
context_t *context = EVERGREEN_CONTEXT(ctx);
- struct evergreen_vertex_program *vp = context->selected_vp;;
+ struct evergreen_vertex_program *vp = (struct evergreen_vertex_program *) context->selected_vp;
if (vp)
return vp->constbo0;
@@ -589,7 +589,7 @@ GLboolean evergreenSetupVertexProgram(struct gl_context * ctx)
{
context_t *context = EVERGREEN_CONTEXT(ctx);
EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context);
- struct evergreen_vertex_program *vp = context->selected_vp;
+ struct evergreen_vertex_program *vp = (struct evergreen_vertex_program *) context->selected_vp;
if(GL_FALSE == vp->loaded)
{
@@ -650,7 +650,7 @@ GLboolean evergreenSetupVPconstants(struct gl_context * ctx)
{
context_t *context = EVERGREEN_CONTEXT(ctx);
EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context);
- struct evergreen_vertex_program *vp = context->selected_vp;
+ struct evergreen_vertex_program *vp = (struct evergreen_vertex_program *) context->selected_vp;
struct gl_program_parameter_list *paramList;
unsigned int unNumParamData;
diff --git a/src/mesa/drivers/dri/r600/r600_blit.c b/src/mesa/drivers/dri/r600/r600_blit.c
index 31c32d62f9a..2d47afdcbbf 100644
--- a/src/mesa/drivers/dri/r600/r600_blit.c
+++ b/src/mesa/drivers/dri/r600/r600_blit.c
@@ -94,17 +94,17 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma
{
uint32_t cb_color0_base, cb_color0_size = 0, cb_color0_info = 0, cb_color0_view = 0;
int id = 0;
- uint32_t comp_swap, format;
+ uint32_t endian, comp_swap, format;
BATCH_LOCALS(&context->radeon);
cb_color0_base = dst_offset / 256;
+ endian = ENDIAN_NONE;
SETfield(cb_color0_size, (nPitchInPixel / 8) - 1,
PITCH_TILE_MAX_shift, PITCH_TILE_MAX_mask);
SETfield(cb_color0_size, ((nPitchInPixel * h) / 64) - 1,
SLICE_TILE_MAX_shift, SLICE_TILE_MAX_mask);
- SETfield(cb_color0_info, ENDIAN_NONE, ENDIAN_shift, ENDIAN_mask);
SETfield(cb_color0_info, ARRAY_LINEAR_GENERAL,
CB_COLOR0_INFO__ARRAY_MODE_shift, CB_COLOR0_INFO__ARRAY_MODE_mask);
@@ -112,24 +112,36 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma
switch(mesa_format) {
case MESA_FORMAT_RGBA8888:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN32;
+#endif
format = COLOR_8_8_8_8;
comp_swap = SWAP_STD_REV;
SETbit(cb_color0_info, SOURCE_FORMAT_bit);
SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask);
break;
case MESA_FORMAT_SIGNED_RGBA8888:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN32;
+#endif
format = COLOR_8_8_8_8;
comp_swap = SWAP_STD_REV;
SETbit(cb_color0_info, SOURCE_FORMAT_bit);
SETfield(cb_color0_info, NUMBER_SNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask);
break;
case MESA_FORMAT_RGBA8888_REV:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN32;
+#endif
format = COLOR_8_8_8_8;
comp_swap = SWAP_STD;
SETbit(cb_color0_info, SOURCE_FORMAT_bit);
SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask);
break;
case MESA_FORMAT_SIGNED_RGBA8888_REV:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN32;
+#endif
format = COLOR_8_8_8_8;
comp_swap = SWAP_STD;
SETbit(cb_color0_info, SOURCE_FORMAT_bit);
@@ -137,6 +149,9 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma
break;
case MESA_FORMAT_ARGB8888:
case MESA_FORMAT_XRGB8888:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN32;
+#endif
format = COLOR_8_8_8_8;
comp_swap = SWAP_ALT;
SETbit(cb_color0_info, SOURCE_FORMAT_bit);
@@ -144,54 +159,81 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma
break;
case MESA_FORMAT_ARGB8888_REV:
case MESA_FORMAT_XRGB8888_REV:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN32;
+#endif
format = COLOR_8_8_8_8;
comp_swap = SWAP_ALT_REV;
SETbit(cb_color0_info, SOURCE_FORMAT_bit);
SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask);
break;
case MESA_FORMAT_RGB565:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN16;
+#endif
+ comp_swap = SWAP_STD_REV;
format = COLOR_5_6_5;
- comp_swap = SWAP_STD_REV;
SETbit(cb_color0_info, SOURCE_FORMAT_bit);
SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask);
break;
case MESA_FORMAT_RGB565_REV:
- format = COLOR_5_6_5;
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN16;
+#endif
comp_swap = SWAP_STD;
+ format = COLOR_5_6_5;
SETbit(cb_color0_info, SOURCE_FORMAT_bit);
SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask);
break;
case MESA_FORMAT_ARGB4444:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN16;
+#endif
format = COLOR_4_4_4_4;
comp_swap = SWAP_ALT;
SETbit(cb_color0_info, SOURCE_FORMAT_bit);
SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask);
break;
case MESA_FORMAT_ARGB4444_REV:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN16;
+#endif
format = COLOR_4_4_4_4;
comp_swap = SWAP_ALT_REV;
SETbit(cb_color0_info, SOURCE_FORMAT_bit);
SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask);
break;
case MESA_FORMAT_ARGB1555:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN16;
+#endif
format = COLOR_1_5_5_5;
comp_swap = SWAP_ALT;
SETbit(cb_color0_info, SOURCE_FORMAT_bit);
SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask);
break;
case MESA_FORMAT_ARGB1555_REV:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN16;
+#endif
format = COLOR_1_5_5_5;
comp_swap = SWAP_ALT_REV;
SETbit(cb_color0_info, SOURCE_FORMAT_bit);
SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask);
break;
case MESA_FORMAT_AL88:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN16;
+#endif
format = COLOR_8_8;
comp_swap = SWAP_STD;
SETbit(cb_color0_info, SOURCE_FORMAT_bit);
SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask);
break;
case MESA_FORMAT_AL88_REV:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN16;
+#endif
format = COLOR_8_8;
comp_swap = SWAP_STD_REV;
SETbit(cb_color0_info, SOURCE_FORMAT_bit);
@@ -223,6 +265,9 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma
SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask);
break;
case MESA_FORMAT_RGBA_FLOAT32:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN32;
+#endif
format = COLOR_32_32_32_32_FLOAT;
comp_swap = SWAP_STD;
SETbit(cb_color0_info, BLEND_FLOAT32_bit);
@@ -230,12 +275,18 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma
SETfield(cb_color0_info, NUMBER_FLOAT, NUMBER_TYPE_shift, NUMBER_TYPE_mask);
break;
case MESA_FORMAT_RGBA_FLOAT16:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN16;
+#endif
format = COLOR_16_16_16_16_FLOAT;
comp_swap = SWAP_STD;
CLEARbit(cb_color0_info, SOURCE_FORMAT_bit);
SETfield(cb_color0_info, NUMBER_FLOAT, NUMBER_TYPE_shift, NUMBER_TYPE_mask);
break;
case MESA_FORMAT_ALPHA_FLOAT32:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN32;
+#endif
format = COLOR_32_FLOAT;
comp_swap = SWAP_ALT_REV;
SETbit(cb_color0_info, BLEND_FLOAT32_bit);
@@ -243,12 +294,18 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma
SETfield(cb_color0_info, NUMBER_FLOAT, NUMBER_TYPE_shift, NUMBER_TYPE_mask);
break;
case MESA_FORMAT_ALPHA_FLOAT16:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN16;
+#endif
format = COLOR_16_FLOAT;
comp_swap = SWAP_ALT_REV;
CLEARbit(cb_color0_info, SOURCE_FORMAT_bit);
SETfield(cb_color0_info, NUMBER_FLOAT, NUMBER_TYPE_shift, NUMBER_TYPE_mask);
break;
case MESA_FORMAT_LUMINANCE_FLOAT32:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN32;
+#endif
format = COLOR_32_FLOAT;
comp_swap = SWAP_ALT;
SETbit(cb_color0_info, BLEND_FLOAT32_bit);
@@ -256,12 +313,18 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma
SETfield(cb_color0_info, NUMBER_FLOAT, NUMBER_TYPE_shift, NUMBER_TYPE_mask);
break;
case MESA_FORMAT_LUMINANCE_FLOAT16:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN16;
+#endif
format = COLOR_16_FLOAT;
comp_swap = SWAP_ALT;
CLEARbit(cb_color0_info, SOURCE_FORMAT_bit);
SETfield(cb_color0_info, NUMBER_FLOAT, NUMBER_TYPE_shift, NUMBER_TYPE_mask);
break;
case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN32;
+#endif
format = COLOR_32_32_FLOAT;
comp_swap = SWAP_ALT_REV;
SETbit(cb_color0_info, BLEND_FLOAT32_bit);
@@ -269,12 +332,18 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma
SETfield(cb_color0_info, NUMBER_FLOAT, NUMBER_TYPE_shift, NUMBER_TYPE_mask);
break;
case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN16;
+#endif
format = COLOR_16_16_FLOAT;
comp_swap = SWAP_ALT_REV;
CLEARbit(cb_color0_info, SOURCE_FORMAT_bit);
SETfield(cb_color0_info, NUMBER_FLOAT, NUMBER_TYPE_shift, NUMBER_TYPE_mask);
break;
case MESA_FORMAT_INTENSITY_FLOAT32: /* X, X, X, X */
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN32;
+#endif
format = COLOR_32_FLOAT;
comp_swap = SWAP_STD;
SETbit(cb_color0_info, BLEND_FLOAT32_bit);
@@ -282,6 +351,9 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma
SETfield(cb_color0_info, NUMBER_FLOAT, NUMBER_TYPE_shift, NUMBER_TYPE_mask);
break;
case MESA_FORMAT_INTENSITY_FLOAT16: /* X, X, X, X */
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN16;
+#endif
format = COLOR_16_FLOAT;
comp_swap = SWAP_STD;
CLEARbit(cb_color0_info, SOURCE_FORMAT_bit);
@@ -289,6 +361,9 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma
break;
case MESA_FORMAT_X8_Z24:
case MESA_FORMAT_S8_Z24:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN32;
+#endif
format = COLOR_8_24;
comp_swap = SWAP_STD;
SETfield(cb_color0_info, ARRAY_1D_TILED_THIN1,
@@ -297,6 +372,9 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma
SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask);
break;
case MESA_FORMAT_Z24_S8:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN32;
+#endif
format = COLOR_24_8;
comp_swap = SWAP_STD;
SETfield(cb_color0_info, ARRAY_1D_TILED_THIN1,
@@ -305,6 +383,9 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma
SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask);
break;
case MESA_FORMAT_Z16:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN16;
+#endif
format = COLOR_16;
comp_swap = SWAP_STD;
SETfield(cb_color0_info, ARRAY_1D_TILED_THIN1,
@@ -313,6 +394,9 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma
SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask);
break;
case MESA_FORMAT_Z32:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN32;
+#endif
format = COLOR_32;
comp_swap = SWAP_STD;
SETfield(cb_color0_info, ARRAY_1D_TILED_THIN1,
@@ -321,12 +405,18 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma
SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask);
break;
case MESA_FORMAT_SARGB8:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN32;
+#endif
format = COLOR_8_8_8_8;
comp_swap = SWAP_ALT;
SETbit(cb_color0_info, SOURCE_FORMAT_bit);
SETfield(cb_color0_info, NUMBER_SRGB, NUMBER_TYPE_shift, NUMBER_TYPE_mask);
break;
case MESA_FORMAT_SLA8:
+#ifdef MESA_BIG_ENDIAN
+ endian = ENDIAN_8IN16;
+#endif
format = COLOR_8_8;
comp_swap = SWAP_ALT_REV;
SETbit(cb_color0_info, SOURCE_FORMAT_bit);
@@ -348,6 +438,7 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma
if (context->radeon.radeonScreen->chip_family >= CHIP_FAMILY_RV770)
CLEARbit(cb_color0_info, BLEND_FLOAT32_bit);
+ SETfield(cb_color0_info, endian, ENDIAN_shift, ENDIAN_mask);
SETfield(cb_color0_info, format, CB_COLOR0_INFO__FORMAT_shift,
CB_COLOR0_INFO__FORMAT_mask);
SETfield(cb_color0_info, comp_swap, COMP_SWAP_shift, COMP_SWAP_mask);
@@ -426,10 +517,10 @@ static inline void load_shaders(struct gl_context * ctx)
shader = context->blit_bo->ptr;
for(i=0; i<sizeof(r6xx_vs)/4; i++) {
- shader[128+i] = r6xx_vs[i];
+ shader[128+i] = CPU_TO_LE32(r6xx_vs[i]);
}
for(i=0; i<sizeof(r6xx_ps)/4; i++) {
- shader[256+i] = r6xx_ps[i];
+ shader[256+i] = CPU_TO_LE32(r6xx_ps[i]);
}
radeon_bo_unmap(context->blit_bo);
@@ -521,6 +612,8 @@ static inline void
set_vtx_resource(context_t *context)
{
struct radeon_bo *bo = context->blit_bo;
+ uint32_t sq_vtx_constant_word2 = 0;
+
BATCH_LOCALS(&context->radeon);
BEGIN_BATCH_NO_AUTOSTATE(6);
@@ -543,13 +636,19 @@ set_vtx_resource(context_t *context)
else
r700SyncSurf(context, bo, RADEON_GEM_DOMAIN_GTT, 0, VC_ACTION_ENA_bit);
+ sq_vtx_constant_word2 = 0
+#ifdef MESA_BIG_ENDIAN
+ | (SQ_ENDIAN_8IN32 << SQ_VTX_CONSTANT_WORD2_0__ENDIAN_SWAP_shift)
+#endif
+ | (16 << SQ_VTX_CONSTANT_WORD2_0__STRIDE_shift);
+
BEGIN_BATCH_NO_AUTOSTATE(9 + 2);
R600_OUT_BATCH(CP_PACKET3(R600_IT_SET_RESOURCE, 7));
R600_OUT_BATCH(SQ_FETCH_RESOURCE_VS_OFFSET * FETCH_RESOURCE_STRIDE);
R600_OUT_BATCH(0);
R600_OUT_BATCH(48 - 1);
- R600_OUT_BATCH(16 << SQ_VTX_CONSTANT_WORD2_0__STRIDE_shift);
+ R600_OUT_BATCH(sq_vtx_constant_word2);
R600_OUT_BATCH(1 << MEM_REQUEST_SIZE_shift);
R600_OUT_BATCH(0);
R600_OUT_BATCH(0);
@@ -670,11 +769,11 @@ set_tex_resource(context_t * context,
SETfield(sq_tex_resource1, FMT_8_8_8_8,
SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask);
- SETfield(sq_tex_resource4, SQ_SEL_1,
+ SETfield(sq_tex_resource4, SQ_SEL_Y,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
SETfield(sq_tex_resource4, SQ_SEL_Z,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
- SETfield(sq_tex_resource4, SQ_SEL_W,
+ SETfield(sq_tex_resource4, SQ_SEL_1,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
SETfield(sq_tex_resource4, SQ_SEL_X,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
diff --git a/src/mesa/drivers/dri/r600/r600_blit_shaders.h b/src/mesa/drivers/dri/r600/r600_blit_shaders.h
index 492dde96368..2124f7673d7 100644
--- a/src/mesa/drivers/dri/r600/r600_blit_shaders.h
+++ b/src/mesa/drivers/dri/r600/r600_blit_shaders.h
@@ -10,7 +10,11 @@ const uint32_t r6xx_vs[] =
0x00000000,
0x3c000000, // SQ_VTX_INST_FETCH BUFFER_ID(0) MEGA_FETCH_COUNT(16)
0x68cd1000, // DST_GPR(0) DST_SWZ: XYZW DATA_FORMAT(35) SQ_NUM_FORMAT_SCALED SQ_FORMAT_COMP_SIGNED
+#ifdef MESA_BIG_ENDIAN
+ 0x000a0000, // ENDIAN_SWAP(SQ_ENDIAN_8IN32) MEGA_FETCH(1)
+#else
0x00080000, // ENDIAN_SWAP(SQ_ENDIAN_NONE) MEGA_FETCH(1)
+#endif
0x00000000, // VTX_DWORD_PAD
};
diff --git a/src/mesa/drivers/dri/r600/r600_context.c b/src/mesa/drivers/dri/r600/r600_context.c
index 00708be1993..1b9676147ee 100644
--- a/src/mesa/drivers/dri/r600/r600_context.c
+++ b/src/mesa/drivers/dri/r600/r600_context.c
@@ -145,7 +145,6 @@ static const struct dri_extension card_extensions[] = {
{"GL_ATI_texture_mirror_once", NULL},
{"GL_MESA_pack_invert", NULL},
{"GL_MESA_ycbcr_texture", NULL},
- {"GL_MESAX_texture_float", NULL},
{"GL_NV_blend_square", NULL},
{"GL_NV_vertex_program", GL_NV_vertex_program_functions},
{"GL_ARB_pixel_buffer_object", NULL},
diff --git a/src/mesa/drivers/dri/r600/r600_emit.c b/src/mesa/drivers/dri/r600/r600_emit.c
index 53ece9a3505..c6916ed98a3 100644
--- a/src/mesa/drivers/dri/r600/r600_emit.c
+++ b/src/mesa/drivers/dri/r600/r600_emit.c
@@ -100,14 +100,17 @@ GLboolean r600EmitShaderConsts(struct gl_context * ctx,
int sizeinBYTE)
{
struct radeon_bo * pbo = (struct radeon_bo *)constbo;
- uint8_t *out;
+ uint32_t *out;
+ int i;
radeon_bo_map(pbo, 1);
- out = (uint8_t*)(pbo->ptr);
- out = (uint8_t*)ADD_POINTERS(pbo->ptr, bo_offset);
+ out = (uint32_t*)(pbo->ptr);
+ out = (uint32_t*)ADD_POINTERS(pbo->ptr, bo_offset);
- memcpy(out, data, sizeinBYTE);
+ for(i = 0; i < sizeinBYTE / 4; i++) {
+ out[i] = CPU_TO_LE32(*((uint32_t *)data + i));
+ }
radeon_bo_unmap(pbo);
@@ -123,6 +126,7 @@ GLboolean r600EmitShader(struct gl_context * ctx,
radeonContextPtr radeonctx = RADEON_CONTEXT(ctx);
struct radeon_bo * pbo;
uint32_t *out;
+ int i;
shader_again_alloc:
pbo = radeon_bo_open(radeonctx->radeonScreen->bom,
0,
@@ -154,7 +158,9 @@ shader_again_alloc:
out = (uint32_t*)(pbo->ptr);
- memcpy(out, data, sizeinDWORD * 4);
+ for(i = 0; i < sizeinDWORD; i++) {
+ out[i] = CPU_TO_LE32(*((uint32_t *)data + i));
+ }
radeon_bo_unmap(pbo);
diff --git a/src/mesa/drivers/dri/r600/r600_tex.c b/src/mesa/drivers/dri/r600/r600_tex.c
index fe4f0e48661..eb7ed30c7a3 100644
--- a/src/mesa/drivers/dri/r600/r600_tex.c
+++ b/src/mesa/drivers/dri/r600/r600_tex.c
@@ -78,15 +78,15 @@ static void r600UpdateTexWrap(radeonTexObjPtr t)
{
struct gl_texture_object *tObj = &t->base;
- SETfield(t->SQ_TEX_SAMPLER0, translate_wrap_mode(tObj->WrapS),
+ SETfield(t->SQ_TEX_SAMPLER0, translate_wrap_mode(tObj->Sampler.WrapS),
SQ_TEX_SAMPLER_WORD0_0__CLAMP_X_shift, SQ_TEX_SAMPLER_WORD0_0__CLAMP_X_mask);
if (tObj->Target != GL_TEXTURE_1D) {
- SETfield(t->SQ_TEX_SAMPLER0, translate_wrap_mode(tObj->WrapT),
+ SETfield(t->SQ_TEX_SAMPLER0, translate_wrap_mode(tObj->Sampler.WrapT),
CLAMP_Y_shift, CLAMP_Y_mask);
if (tObj->Target == GL_TEXTURE_3D)
- SETfield(t->SQ_TEX_SAMPLER0, translate_wrap_mode(tObj->WrapR),
+ SETfield(t->SQ_TEX_SAMPLER0, translate_wrap_mode(tObj->Sampler.WrapR),
CLAMP_Z_shift, CLAMP_Z_mask);
}
}
@@ -292,7 +292,7 @@ static void r600TexParameter(struct gl_context * ctx, GLenum target,
case GL_TEXTURE_MIN_FILTER:
case GL_TEXTURE_MAG_FILTER:
case GL_TEXTURE_MAX_ANISOTROPY_EXT:
- r600SetTexFilter(t, texObj->MinFilter, texObj->MagFilter, texObj->MaxAnisotropy);
+ r600SetTexFilter(t, texObj->Sampler.MinFilter, texObj->Sampler.MagFilter, texObj->Sampler.MaxAnisotropy);
break;
case GL_TEXTURE_WRAP_S:
@@ -302,7 +302,7 @@ static void r600TexParameter(struct gl_context * ctx, GLenum target,
break;
case GL_TEXTURE_BORDER_COLOR:
- r600SetTexBorderColor(t, texObj->BorderColor.f);
+ r600SetTexBorderColor(t, texObj->Sampler.BorderColor.f);
break;
case GL_TEXTURE_BASE_LEVEL:
@@ -382,13 +382,13 @@ static struct gl_texture_object *r600NewTextureObject(struct gl_context * ctx,
t, _mesa_lookup_enum_by_nr(target));
_mesa_initialize_texture_object(&t->base, name, target);
- t->base.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy;
+ t->base.Sampler.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy;
/* Initialize hardware state */
r600SetTexDefaultState(t);
r600UpdateTexWrap(t);
- r600SetTexFilter(t, t->base.MinFilter, t->base.MagFilter, t->base.MaxAnisotropy);
- r600SetTexBorderColor(t, t->base.BorderColor.f);
+ r600SetTexFilter(t, t->base.Sampler.MinFilter, t->base.Sampler.MagFilter, t->base.Sampler.MaxAnisotropy);
+ r600SetTexBorderColor(t, t->base.Sampler.BorderColor.f);
return &t->base;
}
diff --git a/src/mesa/drivers/dri/r600/r600_texstate.c b/src/mesa/drivers/dri/r600/r600_texstate.c
index aafa6875774..949db29c189 100644
--- a/src/mesa/drivers/dri/r600/r600_texstate.c
+++ b/src/mesa/drivers/dri/r600/r600_texstate.c
@@ -109,6 +109,16 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa
SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8_8,
SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask);
+#ifdef MESA_BIG_ENDIAN
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#else
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
@@ -117,6 +127,7 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#endif
if (mesa_format == MESA_FORMAT_SIGNED_RGBA8888) {
SETfield(t->SQ_TEX_RESOURCE4, SQ_FORMAT_COMP_SIGNED,
FORMAT_COMP_X_shift, FORMAT_COMP_X_mask);
@@ -133,6 +144,16 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa
SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8_8,
SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask);
+#ifdef MESA_BIG_ENDIAN
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#else
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
@@ -141,6 +162,7 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#endif
if (mesa_format == MESA_FORMAT_SIGNED_RGBA8888_REV) {
SETfield(t->SQ_TEX_RESOURCE4, SQ_FORMAT_COMP_SIGNED,
FORMAT_COMP_X_shift, FORMAT_COMP_X_mask);
@@ -156,6 +178,16 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa
SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8_8,
SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask);
+#ifdef MESA_BIG_ENDIAN
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#else
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
@@ -164,11 +196,22 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#endif
break;
case MESA_FORMAT_XRGB8888:
SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8_8,
SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask);
+#ifdef MESA_BIG_ENDIAN
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#else
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
@@ -177,24 +220,46 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#endif
break;
case MESA_FORMAT_XRGB8888_REV:
SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8_8,
SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask);
+#ifdef MESA_BIG_ENDIAN
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#else
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
- SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#endif
break;
case MESA_FORMAT_ARGB8888_REV:
SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8_8,
SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask);
+#ifdef MESA_BIG_ENDIAN
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#else
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
@@ -203,11 +268,22 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#endif
break;
case MESA_FORMAT_RGB888:
SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8,
SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask);
+#ifdef MESA_BIG_ENDIAN
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#else
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
@@ -216,11 +292,22 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#endif
break;
case MESA_FORMAT_RGB565:
SETfield(t->SQ_TEX_RESOURCE1, FMT_5_6_5,
SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask);
+#ifdef MESA_BIG_ENDIAN
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#else
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
@@ -229,11 +316,23 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#endif
+
break;
case MESA_FORMAT_RGB565_REV:
SETfield(t->SQ_TEX_RESOURCE1, FMT_5_6_5,
SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask);
+#ifdef MESA_BIG_ENDIAN
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#else
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
@@ -242,11 +341,22 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#endif
break;
case MESA_FORMAT_ARGB4444:
SETfield(t->SQ_TEX_RESOURCE1, FMT_4_4_4_4,
SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask);
+#ifdef MESA_BIG_ENDIAN
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#else
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
@@ -255,11 +365,21 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#endif
break;
case MESA_FORMAT_ARGB4444_REV:
SETfield(t->SQ_TEX_RESOURCE1, FMT_4_4_4_4,
SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask);
-
+#ifdef MESA_BIG_ENDIAN
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#else
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
@@ -268,11 +388,21 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#endif
break;
case MESA_FORMAT_ARGB1555:
SETfield(t->SQ_TEX_RESOURCE1, FMT_1_5_5_5,
SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask);
-
+#ifdef MESA_BIG_ENDIAN
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#else
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
@@ -281,11 +411,21 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#endif
break;
case MESA_FORMAT_ARGB1555_REV:
SETfield(t->SQ_TEX_RESOURCE1, FMT_1_5_5_5,
SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask);
-
+#ifdef MESA_BIG_ENDIAN
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
+ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
+ SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#else
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
@@ -294,6 +434,7 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
+#endif
break;
case MESA_FORMAT_AL88:
case MESA_FORMAT_AL88_REV: /* TODO : Check this. */
@@ -571,7 +712,7 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa
default:
break;
};
- switch (tObj->DepthMode) {
+ switch (tObj->Sampler.DepthMode) {
case GL_LUMINANCE: /* X, X, X, ONE */
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
@@ -777,18 +918,18 @@ static GLboolean setup_hardware_state(struct gl_context * ctx, struct gl_texture
SETfield(t->SQ_TEX_RESOURCE5, t->maxLod - t->minLod, LAST_LEVEL_shift, LAST_LEVEL_mask);
SETfield(t->SQ_TEX_SAMPLER1,
- S_FIXED(CLAMP(t->base.MinLod - t->minLod, 0, 15), 6),
+ S_FIXED(CLAMP(t->base.Sampler.MinLod - t->minLod, 0, 15), 6),
MIN_LOD_shift, MIN_LOD_mask);
SETfield(t->SQ_TEX_SAMPLER1,
- S_FIXED(CLAMP(t->base.MaxLod - t->minLod, 0, 15), 6),
+ S_FIXED(CLAMP(t->base.Sampler.MaxLod - t->minLod, 0, 15), 6),
MAX_LOD_shift, MAX_LOD_mask);
SETfield(t->SQ_TEX_SAMPLER1,
- S_FIXED(CLAMP(ctx->Texture.Unit[unit].LodBias + t->base.LodBias, -16, 16), 6),
+ S_FIXED(CLAMP(ctx->Texture.Unit[unit].LodBias + t->base.Sampler.LodBias, -16, 16), 6),
SQ_TEX_SAMPLER_WORD1_0__LOD_BIAS_shift, SQ_TEX_SAMPLER_WORD1_0__LOD_BIAS_mask);
- if(texObj->CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB)
+ if(texObj->Sampler.CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB)
{
- SETfield(t->SQ_TEX_SAMPLER0, r600_translate_shadow_func(texObj->CompareFunc), DEPTH_COMPARE_FUNCTION_shift, DEPTH_COMPARE_FUNCTION_mask);
+ SETfield(t->SQ_TEX_SAMPLER0, r600_translate_shadow_func(texObj->Sampler.CompareFunc), DEPTH_COMPARE_FUNCTION_shift, DEPTH_COMPARE_FUNCTION_mask);
}
else
{
diff --git a/src/mesa/drivers/dri/r600/r700_assembler.c b/src/mesa/drivers/dri/r600/r700_assembler.c
index 024853c1beb..216ff0b941c 100644
--- a/src/mesa/drivers/dri/r600/r700_assembler.c
+++ b/src/mesa/drivers/dri/r600/r700_assembler.c
@@ -259,6 +259,7 @@ GLboolean is_reduction_opcode(PVSDWORD* dest)
return GL_FALSE;
}
+#if 0 /* unused */
GLboolean EG_is_reduction_opcode(PVSDWORD* dest)
{
if (dest->dst.op3 == 0)
@@ -270,6 +271,7 @@ GLboolean EG_is_reduction_opcode(PVSDWORD* dest)
}
return GL_FALSE;
}
+#endif
GLuint GetSurfaceFormat(GLenum eType, GLuint nChannels, GLuint * pClient_size)
{
@@ -1186,7 +1188,12 @@ GLboolean EG_assemble_vfetch_instruction(r700_AssemblerBase* pAsm,
SETfield(vfetch_instruction_ptr->m_Word2.val, 0,
EG_VTX_WORD2__OFFSET_shift,
EG_VTX_WORD2__OFFSET_mask);
- SETfield(vfetch_instruction_ptr->m_Word2.val, SQ_ENDIAN_NONE,
+ SETfield(vfetch_instruction_ptr->m_Word2.val,
+#ifdef MESA_BIG_ENDIAN
+ SQ_ENDIAN_8IN32,
+#else
+ SQ_ENDIAN_NONE,
+#endif
EG_VTX_WORD2__ENDIAN_SWAP_shift,
EG_VTX_WORD2__ENDIAN_SWAP_mask);
SETfield(vfetch_instruction_ptr->m_Word2.val, 0,
@@ -1292,7 +1299,11 @@ GLboolean assemble_vfetch_instruction2(r700_AssemblerBase* pAsm,
vfetch_instruction_ptr->m_Word1.f.use_const_fields = 1;
vfetch_instruction_ptr->m_Word1.f.data_format = data_format;
+#ifdef MESA_BIG_ENDIAN
+ vfetch_instruction_ptr->m_Word2.f.endian_swap = SQ_ENDIAN_8IN32;
+#else
vfetch_instruction_ptr->m_Word2.f.endian_swap = SQ_ENDIAN_NONE;
+#endif
if(1 == _signed)
{
diff --git a/src/mesa/drivers/dri/r600/r700_assembler.h b/src/mesa/drivers/dri/r600/r700_assembler.h
index c7c7ab2d4ff..8a9ccd1c4ec 100644
--- a/src/mesa/drivers/dri/r600/r700_assembler.h
+++ b/src/mesa/drivers/dri/r600/r700_assembler.h
@@ -130,6 +130,27 @@ typedef unsigned int BITS;
typedef struct PVSDSTtag
{
+#ifdef MESA_BIG_ENDIAN
+ BITS addrmode1:1; //32
+ BITS addrmode0:1; //31 //29
+
+ BITS dualop:1; // 30 //26
+
+ BITS op3:1; // 29 Represents *_OP3_* ALU opcode
+
+ BITS writew:1; //28
+ BITS writez:1;
+ BITS writey:1;
+ BITS writex:1;
+
+ BITS reg:10; //24 //20
+ BITS rtype:3;
+
+ BITS pred_inv :1; //11 //8
+ BITS predicated:1; //10 //8
+ BITS math:1;
+ BITS opcode:8; //(:6) //@@@ really should be 10 bits for OP2
+#else
BITS opcode:8; //(:6) //@@@ really should be 10 bits for OP2
BITS math:1;
BITS predicated:1; //10 //8
@@ -149,17 +170,41 @@ typedef struct PVSDSTtag
BITS addrmode0:1; //31 //29
BITS addrmode1:1; //32
+#endif
} PVSDST;
typedef struct PVSINSTtag
{
+#ifdef MESA_BIG_ENDIAN
+ BITS index_mode :3;
+ BITS SaturateMode :2;
+ BITS literal_slots :2;
+#else
BITS literal_slots :2;
BITS SaturateMode :2;
BITS index_mode :3;
+#endif
} PVSINST;
typedef struct PVSSRCtag
{
+#ifdef MESA_BIG_ENDIAN
+ BITS addrmode1:1; //32
+ //BITS addrsel:2;
+ BITS negw:1; //31
+ BITS negz:1;
+ BITS negy:1;
+ BITS negx:1;
+ BITS abs:1;
+
+ BITS swizzlew:3; //26
+ BITS swizzlez:3;
+ BITS swizzley:3;
+ BITS swizzlex:3;
+ BITS reg:10; //14 (8)
+ BITS addrmode0:1;
+ BITS rtype:3;
+#else
BITS rtype:3;
BITS addrmode0:1;
BITS reg:10; //14 (8)
@@ -175,10 +220,24 @@ typedef struct PVSSRCtag
BITS negw:1; //31
//BITS addrsel:2;
BITS addrmode1:1; //32
+#endif
} PVSSRC;
typedef struct PVSMATHtag
{
+#ifdef MESA_BIG_ENDIAN
+ BITS spare2:3;
+ BITS dstcomp:2; // select dest component
+ BITS negy:1;
+ BITS negx:1;
+ BITS opcode:4;
+ BITS dstoff:2; // 2 bits of dest offset into alt ram
+ BITS swizzley:3;
+ BITS swizzlex:3;
+ BITS reg:8;
+ BITS spare:1;
+ BITS rtype:4;
+#else
BITS rtype:4;
BITS spare:1;
BITS reg:8;
@@ -190,6 +249,7 @@ typedef struct PVSMATHtag
BITS negy:1;
BITS dstcomp:2; // select dest component
BITS spare2:3;
+#endif
} PVSMATH;
typedef union PVSDWORDtag
@@ -204,6 +264,34 @@ typedef union PVSDWORDtag
typedef struct VAP_OUT_VTX_FMT_0tag
{
+#ifdef MESA_BIG_ENDIAN
+ BITS resvd1:12; // 20
+
+ BITS viewport_index:1; // 19
+ BITS kill_flag:1;
+ BITS rta_index:1; // shares same channel as kill_flag
+ BITS edge_flag:1;
+ BITS point_size:1; // 15
+
+ BITS depth:1; // 14
+
+ BITS normal:1;
+
+ BITS color7:1;
+ BITS color6:1;
+ BITS color5:1;
+ BITS color4:1;
+ BITS color3:1;
+ BITS color2:1;
+ BITS color1:1;
+ BITS color0:1;
+
+ BITS pos_param:1; // 4
+ BITS clip_dist1:1;
+ BITS clip_dist0:1;
+ BITS misc:1;
+ BITS pos:1; // 0
+#else
BITS pos:1; // 0
BITS misc:1;
BITS clip_dist0:1;
@@ -230,10 +318,23 @@ typedef struct VAP_OUT_VTX_FMT_0tag
BITS viewport_index:1; // 19
BITS resvd1:12; // 20
+#endif
} VAP_OUT_VTX_FMT_0;
typedef struct VAP_OUT_VTX_FMT_1tag
{
+#ifdef MESA_BIG_ENDIAN
+ BITS resvd:8;
+
+ BITS tex7comp:3;
+ BITS tex6comp:3;
+ BITS tex5comp:3;
+ BITS tex4comp:3;
+ BITS tex3comp:3;
+ BITS tex2comp:3;
+ BITS tex1comp:3;
+ BITS tex0comp:3;
+#else
BITS tex0comp:3;
BITS tex1comp:3;
BITS tex2comp:3;
@@ -244,10 +345,23 @@ typedef struct VAP_OUT_VTX_FMT_1tag
BITS tex7comp:3;
BITS resvd:8;
+#endif
} VAP_OUT_VTX_FMT_1;
typedef struct VAP_OUT_VTX_FMT_2tag
{
+#ifdef MESA_BIG_ENDIAN
+ BITS resvd:8;
+
+ BITS tex15comp:3;
+ BITS tex14comp:3;
+ BITS tex13comp:3;
+ BITS tex12comp:3;
+ BITS tex11comp:3;
+ BITS tex10comp:3;
+ BITS tex9comp:3;
+ BITS tex8comp:3;
+#else
BITS tex8comp :3;
BITS tex9comp :3;
BITS tex10comp:3;
@@ -258,10 +372,28 @@ typedef struct VAP_OUT_VTX_FMT_2tag
BITS tex15comp:3;
BITS resvd:8;
+#endif
} VAP_OUT_VTX_FMT_2;
typedef struct OUT_FRAGMENT_FMT_0tag
{
+#ifdef MESA_BIG_ENDIAN
+ BITS resvd1:20;
+
+ BITS mask:1;
+ BITS coverage_to_mask:1;
+ BITS stencil_ref:1;
+ BITS depth:1;
+
+ BITS color7:1;
+ BITS color6:1;
+ BITS color5:1;
+ BITS color4:1;
+ BITS color3:1;
+ BITS color2:1;
+ BITS color1:1;
+ BITS color0:1;
+#else
BITS color0:1;
BITS color1:1;
BITS color2:1;
@@ -277,6 +409,7 @@ typedef struct OUT_FRAGMENT_FMT_0tag
BITS mask:1;
BITS resvd1:20;
+#endif
} OUT_FRAGMENT_FMT_0;
typedef enum CF_CLAUSE_TYPE
diff --git a/src/mesa/drivers/dri/r600/r700_chip.c b/src/mesa/drivers/dri/r600/r700_chip.c
index 4ec2845ab44..10fa3f9762b 100644
--- a/src/mesa/drivers/dri/r600/r700_chip.c
+++ b/src/mesa/drivers/dri/r600/r700_chip.c
@@ -202,7 +202,15 @@ static void r700SetupVTXConstants(struct gl_context * ctx,
SETfield(uSQ_VTX_CONSTANT_WORD2_0, GetSurfaceFormat(pStreamDesc->type, pStreamDesc->size, NULL),
SQ_VTX_CONSTANT_WORD2_0__DATA_FORMAT_shift,
SQ_VTX_CONSTANT_WORD2_0__DATA_FORMAT_mask); /* TODO : trace back api for initial data type, not only GL_FLOAT */
-
+ SETfield(uSQ_VTX_CONSTANT_WORD2_0,
+#ifdef MESA_BIG_ENDIAN
+ SQ_ENDIAN_8IN32,
+#else
+ SQ_ENDIAN_NONE,
+#endif
+ SQ_VTX_CONSTANT_WORD2_0__ENDIAN_SWAP_shift,
+ SQ_VTX_CONSTANT_WORD2_0__ENDIAN_SWAP_mask);
+
if(GL_TRUE == pStreamDesc->normalize)
{
SETfield(uSQ_VTX_CONSTANT_WORD2_0, SQ_NUM_FORMAT_NORM,
@@ -249,6 +257,7 @@ static void r700SendVTXState(struct gl_context *ctx, struct radeon_state_atom *a
struct r700_vertex_program *vp = context->selected_vp;
unsigned int i, j = 0;
BATCH_LOCALS(&context->radeon);
+ (void) b_l_rmesa; /* silence unused var warning */
radeon_print(RADEON_STATE, RADEON_VERBOSE, "%s\n", __func__);
if (context->radeon.tcl.aos_count == 0)
diff --git a/src/mesa/drivers/dri/r600/r700_render.c b/src/mesa/drivers/dri/r600/r700_render.c
index bb14a239b77..2bd3b62bfdb 100644
--- a/src/mesa/drivers/dri/r600/r700_render.c
+++ b/src/mesa/drivers/dri/r600/r700_render.c
@@ -276,6 +276,16 @@ static void r700RunRenderPrimitive(struct gl_context * ctx, int start, int end,
SETfield(vgt_index_type, DI_INDEX_SIZE_16_BIT, INDEX_TYPE_shift, INDEX_TYPE_mask);
}
+ /* 16-bit indexes are packed in a 32-bit value */
+ SETfield(vgt_index_type,
+#if MESA_BIG_ENDIAN
+ VGT_DMA_SWAP_32_BIT,
+#else
+ VGT_DMA_SWAP_NONE,
+#endif
+ SWAP_MODE_shift, SWAP_MODE_mask);
+
+
vgt_num_indices = num_indices;
SETfield(vgt_draw_initiator, DI_SRC_SEL_DMA, SOURCE_SELECT_shift, SOURCE_SELECT_mask);
SETfield(vgt_draw_initiator, DI_MAJOR_MODE_0, MAJOR_MODE_shift, MAJOR_MODE_mask);
@@ -348,6 +358,15 @@ static void r700RunRenderPrimitiveImmediate(struct gl_context * ctx, int start,
SETfield(vgt_index_type, DI_INDEX_SIZE_16_BIT, INDEX_TYPE_shift, INDEX_TYPE_mask);
}
+ /* 16-bit indexes are packed in a 32-bit value */
+ SETfield(vgt_index_type,
+#if MESA_BIG_ENDIAN
+ VGT_DMA_SWAP_32_BIT,
+#else
+ VGT_DMA_SWAP_NONE,
+#endif
+ SWAP_MODE_shift, SWAP_MODE_mask);
+
vgt_num_indices = num_indices;
SETfield(vgt_draw_initiator, DI_MAJOR_MODE_0, MAJOR_MODE_shift, MAJOR_MODE_mask);
@@ -580,6 +599,7 @@ static void r700ConvertAttrib(struct gl_context *ctx, int count,
}
}
+#if 0 /* unused */
static void r700AlignDataToDword(struct gl_context *ctx,
const struct gl_client_array *input,
int count,
@@ -621,6 +641,7 @@ static void r700AlignDataToDword(struct gl_context *ctx,
attr->stride = dst_stride;
}
+#endif
static void r700SetupStreams(struct gl_context *ctx, const struct gl_client_array *input[], int count)
{
diff --git a/src/mesa/drivers/dri/radeon/radeon_bocs_wrapper.h b/src/mesa/drivers/dri/radeon/radeon_bocs_wrapper.h
index 60f10496026..607b7470d4b 100644
--- a/src/mesa/drivers/dri/radeon/radeon_bocs_wrapper.h
+++ b/src/mesa/drivers/dri/radeon/radeon_bocs_wrapper.h
@@ -1,6 +1,10 @@
#ifndef RADEON_CS_WRAPPER_H
#define RADEON_CS_WRAPPER_H
+/* to be used to build locally in mesa with no libdrm bits */
+#include "../radeon/radeon_bo_drm.h"
+#include "../radeon/radeon_cs_drm.h"
+
#ifdef HAVE_LIBDRM_RADEON
#include "radeon_bo.h"
@@ -24,10 +28,6 @@
* when mapped - i.e. front buffer */
#endif
-/* to be used to build locally in mesa with no libdrm bits */
-#include "../radeon/radeon_bo_drm.h"
-#include "../radeon/radeon_cs_drm.h"
-
#ifndef DRM_RADEON_GEM_INFO
#define DRM_RADEON_GEM_INFO 0x1c
diff --git a/src/mesa/drivers/dri/radeon/radeon_chipset.h b/src/mesa/drivers/dri/radeon/radeon_chipset.h
index bd6f1c79504..88b68e3d191 100644
--- a/src/mesa/drivers/dri/radeon/radeon_chipset.h
+++ b/src/mesa/drivers/dri/radeon/radeon_chipset.h
@@ -443,6 +443,8 @@
#define PCI_CHIP_PALM_9803 0x9803
#define PCI_CHIP_PALM_9804 0x9804
#define PCI_CHIP_PALM_9805 0x9805
+#define PCI_CHIP_PALM_9806 0x9806
+#define PCI_CHIP_PALM_9807 0x9807
#define PCI_CHIP_BARTS_6720 0x6720
#define PCI_CHIP_BARTS_6721 0x6721
diff --git a/src/mesa/drivers/dri/radeon/radeon_common.c b/src/mesa/drivers/dri/radeon/radeon_common.c
index 0d73c0e3b1b..bfc307ca987 100644
--- a/src/mesa/drivers/dri/radeon/radeon_common.c
+++ b/src/mesa/drivers/dri/radeon/radeon_common.c
@@ -966,7 +966,7 @@ static void radeon_print_state_atom(radeonContextPtr radeon, struct radeon_state
fprintf(stderr, " emit %s %d/%d\n", state->name, dwords, state->cmd_size);
- if (radeon_is_debug_enabled(RADEON_STATE, RADEON_TRACE)) {
+ if (state->cmd && radeon_is_debug_enabled(RADEON_STATE, RADEON_TRACE)) {
if (dwords > state->cmd_size)
dwords = state->cmd_size;
for (i = 0; i < dwords;) {
diff --git a/src/mesa/drivers/dri/radeon/radeon_common_context.c b/src/mesa/drivers/dri/radeon/radeon_common_context.c
index 405aecb19ec..5d7b3973d57 100644
--- a/src/mesa/drivers/dri/radeon/radeon_common_context.c
+++ b/src/mesa/drivers/dri/radeon/radeon_common_context.c
@@ -47,8 +47,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "swrast_setup/swrast_setup.h"
#include "tnl/tnl.h"
-#define DRIVER_DATE "20090101"
-
#ifndef RADEON_DEBUG
int RADEON_DEBUG = (0);
#endif
@@ -146,8 +144,7 @@ static const GLubyte *radeonGetString(struct gl_context * ctx, GLenum name)
get_chip_family_name(radeon->radeonScreen->chip_family),
radeon->radeonScreen->device_id);
- offset = driGetRendererString(buffer, hardwarename, DRIVER_DATE,
- agp_mode);
+ offset = driGetRendererString(buffer, hardwarename, agp_mode);
if (IS_R600_CLASS(radeon->radeonScreen)) {
sprintf(&buffer[offset], " TCL");
diff --git a/src/mesa/drivers/dri/radeon/radeon_context.c b/src/mesa/drivers/dri/radeon/radeon_context.c
index 154a8815e4a..4d41e99df5d 100644
--- a/src/mesa/drivers/dri/radeon/radeon_context.c
+++ b/src/mesa/drivers/dri/radeon/radeon_context.c
@@ -70,8 +70,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define need_GL_OES_EGL_image
#include "main/remap_helper.h"
-#define DRIVER_DATE "20061018"
-
#include "utils.h"
#include "xmlpool.h" /* for symbolic values of enum-type options */
diff --git a/src/mesa/drivers/dri/radeon/radeon_debug.h b/src/mesa/drivers/dri/radeon/radeon_debug.h
index ef8b9671ac9..449c27a3fe1 100644
--- a/src/mesa/drivers/dri/radeon/radeon_debug.h
+++ b/src/mesa/drivers/dri/radeon/radeon_debug.h
@@ -110,30 +110,30 @@ extern void _radeon_print(const radeon_debug_type_t type,
* Print out debug message if channel specified by type is enabled
* and compile time debugging level is at least as high as level parameter
*/
-#define radeon_print(type, level, message, ...) do { \
+#define radeon_print(type, level, ...) do { \
const radeon_debug_level_t _debug_level = (level); \
const radeon_debug_type_t _debug_type = (type); \
/* Compile out if level of message is too high */ \
if (radeon_is_debug_enabled(type, level)) { \
_radeon_print(_debug_type, _debug_level, \
- (message), ## __VA_ARGS__); \
+ __VA_ARGS__); \
} \
} while(0)
/**
* printf style function for writing error messages.
*/
-#define radeon_error(message, ...) do { \
+#define radeon_error(...) do { \
radeon_print(RADEON_GENERAL, RADEON_CRITICAL, \
- (message), ## __VA_ARGS__); \
+ __VA_ARGS__); \
} while(0)
/**
* printf style function for writing warnings.
*/
-#define radeon_warning(message, ...) do { \
+#define radeon_warning(...) do { \
radeon_print(RADEON_GENERAL, RADEON_IMPORTANT, \
- (message), ## __VA_ARGS__); \
+ __VA_ARGS__); \
} while(0)
extern void radeon_init_debug(void);
@@ -158,13 +158,13 @@ static inline void radeon_debug_remove_indent(void)
I suppose we could inline this and use macro to fetch out __LINE__ and stuff in case we run into trouble
with other compilers ... GLUE!
*/
-#define WARN_ONCE(a, ...) do { \
+#define WARN_ONCE(...) do { \
static int __warn_once=1; \
if(__warn_once){ \
radeon_warning("*********************************WARN_ONCE*********************************\n"); \
radeon_warning("File %s function %s line %d\n", \
__FILE__, __FUNCTION__, __LINE__); \
- radeon_warning( (a), ## __VA_ARGS__);\
+ radeon_warning(__VA_ARGS__);\
radeon_warning("***************************************************************************\n"); \
__warn_once=0;\
} \
diff --git a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c
index 1fadad2756b..03d9b264367 100644
--- a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c
+++ b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c
@@ -296,15 +296,15 @@ static void calculate_min_max_lod(struct gl_texture_object *tObj,
case GL_TEXTURE_2D:
case GL_TEXTURE_3D:
case GL_TEXTURE_CUBE_MAP:
- if (tObj->MinFilter == GL_NEAREST || tObj->MinFilter == GL_LINEAR) {
+ if (tObj->Sampler.MinFilter == GL_NEAREST || tObj->Sampler.MinFilter == GL_LINEAR) {
/* GL_NEAREST and GL_LINEAR only care about GL_TEXTURE_BASE_LEVEL.
*/
minLod = maxLod = tObj->BaseLevel;
} else {
- minLod = tObj->BaseLevel + (GLint)(tObj->MinLod);
+ minLod = tObj->BaseLevel + (GLint)(tObj->Sampler.MinLod);
minLod = MAX2(minLod, tObj->BaseLevel);
minLod = MIN2(minLod, tObj->MaxLevel);
- maxLod = tObj->BaseLevel + (GLint)(tObj->MaxLod + 0.5);
+ maxLod = tObj->BaseLevel + (GLint)(tObj->Sampler.MaxLod + 0.5);
maxLod = MIN2(maxLod, tObj->MaxLevel);
maxLod = MIN2(maxLod, tObj->Image[0][minLod]->MaxLog2 + minLod);
maxLod = MAX2(maxLod, minLod); /* need at least one level */
diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c b/src/mesa/drivers/dri/radeon/radeon_screen.c
index 56c5959b0aa..732efe8bd85 100644
--- a/src/mesa/drivers/dri/radeon/radeon_screen.c
+++ b/src/mesa/drivers/dri/radeon/radeon_screen.c
@@ -401,12 +401,12 @@ static const struct __DRI2flushExtensionRec radeonFlushExtension = {
};
static __DRIimage *
-radeon_create_image_from_name(__DRIcontext *context,
+radeon_create_image_from_name(__DRIscreen *screen,
int width, int height, int format,
int name, int pitch, void *loaderPrivate)
{
__DRIimage *image;
- radeonContextPtr radeon = context->driverPrivate;
+ radeonScreenPtr radeonScreen = screen->private;
if (name == 0)
return NULL;
@@ -442,7 +442,7 @@ radeon_create_image_from_name(__DRIcontext *context,
image->pitch = pitch;
image->height = height;
- image->bo = radeon_bo_open(radeon->radeonScreen->bom,
+ image->bo = radeon_bo_open(radeonScreen->bom,
(uint32_t)name,
image->pitch * image->height * image->cpp,
0,
@@ -1158,6 +1158,8 @@ static int radeon_set_screen_flags(radeonScreenPtr screen, int device_id)
case PCI_CHIP_PALM_9803:
case PCI_CHIP_PALM_9804:
case PCI_CHIP_PALM_9805:
+ case PCI_CHIP_PALM_9806:
+ case PCI_CHIP_PALM_9807:
screen->chip_family = CHIP_FAMILY_PALM;
screen->chip_flags = RADEON_CHIPSET_TCL;
break;
diff --git a/src/mesa/drivers/dri/radeon/radeon_span.c b/src/mesa/drivers/dri/radeon/radeon_span.c
index caf3f253d2a..8c6f2e49a5c 100644
--- a/src/mesa/drivers/dri/radeon/radeon_span.c
+++ b/src/mesa/drivers/dri/radeon/radeon_span.c
@@ -50,6 +50,17 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define DBG 0
+#if defined(BYTE_ORDER) && defined(BIG_ENDIAN) && BYTE_ORDER == BIG_ENDIAN
+#if defined(__linux__)
+#include <byteswap.h>
+#define CPU_TO_LE16( x ) bswap_16( x )
+#define LE16_TO_CPU( x ) bswap_16( x )
+#endif /* __linux__ */
+#else
+#define CPU_TO_LE16( x ) ( x )
+#define LE16_TO_CPU( x ) ( x )
+#endif
+
static void radeonSetSpanFunctions(struct radeon_renderbuffer *rrb);
@@ -579,7 +590,11 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb,
#define TAG(x) radeon##x##_RGB565
#define TAG2(x,y) radeon##x##_RGB565##y
#if defined(RADEON_R600)
-#define GET_PTR(X,Y) r600_ptr_color(rrb, (X) + x_off, (Y) + y_off)
+#define GET_VALUE(_x, _y) (LE16_TO_CPU(*(GLushort*)(r600_ptr_color(rrb, _x + x_off, _y + y_off))))
+#define PUT_VALUE(_x, _y, d) { \
+ GLushort *_ptr = (GLushort*)r600_ptr_color( rrb, _x + x_off, _y + y_off ); \
+ *_ptr = CPU_TO_LE16(d); \
+} while (0)
#else
#define GET_PTR(X,Y) radeon_ptr_2byte_8x2(rrb, (X) + x_off, (Y) + y_off)
#endif
@@ -591,7 +606,11 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb,
#define TAG(x) radeon##x##_RGB565_REV
#define TAG2(x,y) radeon##x##_RGB565_REV##y
#if defined(RADEON_R600)
-#define GET_PTR(X,Y) r600_ptr_color(rrb, (X) + x_off, (Y) + y_off)
+#define GET_VALUE(_x, _y) (LE16_TO_CPU(*(GLushort*)(r600_ptr_color(rrb, _x + x_off, _y + y_off))))
+#define PUT_VALUE(_x, _y, d) { \
+ GLushort *_ptr = (GLushort*)r600_ptr_color( rrb, _x + x_off, _y + y_off ); \
+ *_ptr = CPU_TO_LE16(d); \
+} while (0)
#else
#define GET_PTR(X,Y) radeon_ptr_2byte_8x2(rrb, (X) + x_off, (Y) + y_off)
#endif
@@ -605,7 +624,11 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb,
#define TAG(x) radeon##x##_ARGB1555
#define TAG2(x,y) radeon##x##_ARGB1555##y
#if defined(RADEON_R600)
-#define GET_PTR(X,Y) r600_ptr_color(rrb, (X) + x_off, (Y) + y_off)
+#define GET_VALUE(_x, _y) (LE16_TO_CPU(*(GLushort*)(r600_ptr_color(rrb, _x + x_off, _y + y_off))))
+#define PUT_VALUE(_x, _y, d) { \
+ GLushort *_ptr = (GLushort*)r600_ptr_color( rrb, _x + x_off, _y + y_off ); \
+ *_ptr = CPU_TO_LE16(d); \
+} while (0)
#else
#define GET_PTR(X,Y) radeon_ptr_2byte_8x2(rrb, (X) + x_off, (Y) + y_off)
#endif
@@ -617,7 +640,11 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb,
#define TAG(x) radeon##x##_ARGB1555_REV
#define TAG2(x,y) radeon##x##_ARGB1555_REV##y
#if defined(RADEON_R600)
-#define GET_PTR(X,Y) r600_ptr_color(rrb, (X) + x_off, (Y) + y_off)
+#define GET_VALUE(_x, _y) (LE16_TO_CPU(*(GLushort*)(r600_ptr_color(rrb, _x + x_off, _y + y_off))))
+#define PUT_VALUE(_x, _y, d) { \
+ GLushort *_ptr = (GLushort*)r600_ptr_color( rrb, _x + x_off, _y + y_off ); \
+ *_ptr = CPU_TO_LE16(d); \
+} while (0)
#else
#define GET_PTR(X,Y) radeon_ptr_2byte_8x2(rrb, (X) + x_off, (Y) + y_off)
#endif
@@ -631,7 +658,11 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb,
#define TAG(x) radeon##x##_ARGB4444
#define TAG2(x,y) radeon##x##_ARGB4444##y
#if defined(RADEON_R600)
-#define GET_PTR(X,Y) r600_ptr_color(rrb, (X) + x_off, (Y) + y_off)
+#define GET_VALUE(_x, _y) (LE16_TO_CPU(*(GLushort*)(r600_ptr_color(rrb, _x + x_off, _y + y_off))))
+#define PUT_VALUE(_x, _y, d) { \
+ GLushort *_ptr = (GLushort*)r600_ptr_color( rrb, _x + x_off, _y + y_off ); \
+ *_ptr = CPU_TO_LE16(d); \
+} while (0)
#else
#define GET_PTR(X,Y) radeon_ptr_2byte_8x2(rrb, (X) + x_off, (Y) + y_off)
#endif
@@ -643,7 +674,11 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb,
#define TAG(x) radeon##x##_ARGB4444_REV
#define TAG2(x,y) radeon##x##_ARGB4444_REV##y
#if defined(RADEON_R600)
-#define GET_PTR(X,Y) r600_ptr_color(rrb, (X) + x_off, (Y) + y_off)
+#define GET_VALUE(_x, _y) (LE16_TO_CPU(*(GLushort*)(r600_ptr_color(rrb, _x + x_off, _y + y_off))))
+#define PUT_VALUE(_x, _y, d) { \
+ GLushort *_ptr = (GLushort*)r600_ptr_color( rrb, _x + x_off, _y + y_off ); \
+ *_ptr = CPU_TO_LE16(d); \
+} while (0)
#else
#define GET_PTR(X,Y) radeon_ptr_2byte_8x2(rrb, (X) + x_off, (Y) + y_off)
#endif
@@ -657,10 +692,10 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb,
#define TAG(x) radeon##x##_xRGB8888
#define TAG2(x,y) radeon##x##_xRGB8888##y
#if defined(RADEON_R600)
-#define GET_VALUE(_x, _y) ((*(GLuint*)(r600_ptr_color(rrb, _x + x_off, _y + y_off)) | 0xff000000))
+#define GET_VALUE(_x, _y) ((LE32_TO_CPU(*(GLuint*)(r600_ptr_color(rrb, _x + x_off, _y + y_off))) | 0xff000000))
#define PUT_VALUE(_x, _y, d) { \
GLuint *_ptr = (GLuint*)r600_ptr_color( rrb, _x + x_off, _y + y_off ); \
- *_ptr = d; \
+ *_ptr = CPU_TO_LE32(d); \
} while (0)
#else
#define GET_VALUE(_x, _y) ((*(GLuint*)(radeon_ptr_4byte(rrb, _x + x_off, _y + y_off)) | 0xff000000))
@@ -679,10 +714,10 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb,
#define TAG(x) radeon##x##_ARGB8888
#define TAG2(x,y) radeon##x##_ARGB8888##y
#if defined(RADEON_R600)
-#define GET_VALUE(_x, _y) (*(GLuint*)(r600_ptr_color(rrb, _x + x_off, _y + y_off)))
+#define GET_VALUE(_x, _y) (LE32_TO_CPU(*(GLuint*)(r600_ptr_color(rrb, _x + x_off, _y + y_off))))
#define PUT_VALUE(_x, _y, d) { \
GLuint *_ptr = (GLuint*)r600_ptr_color( rrb, _x + x_off, _y + y_off ); \
- *_ptr = d; \
+ *_ptr = CPU_TO_LE32(d); \
} while (0)
#else
#define GET_VALUE(_x, _y) (*(GLuint*)(radeon_ptr_4byte(rrb, _x + x_off, _y + y_off)))
@@ -701,10 +736,10 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb,
#define TAG(x) radeon##x##_BGRx8888
#define TAG2(x,y) radeon##x##_BGRx8888##y
#if defined(RADEON_R600)
-#define GET_VALUE(_x, _y) ((*(GLuint*)(r600_ptr_color(rrb, _x + x_off, _y + y_off)) | 0x000000ff))
+#define GET_VALUE(_x, _y) ((LE32_TO_CPU(*(GLuint*)(r600_ptr_color(rrb, _x + x_off, _y + y_off))) | 0x000000ff))
#define PUT_VALUE(_x, _y, d) { \
GLuint *_ptr = (GLuint*)r600_ptr_color( rrb, _x + x_off, _y + y_off ); \
- *_ptr = d; \
+ *_ptr = CPU_TO_LE32(d); \
} while (0)
#else
#define GET_VALUE(_x, _y) ((*(GLuint*)(radeon_ptr_4byte(rrb, _x + x_off, _y + y_off)) | 0x000000ff))
@@ -723,7 +758,11 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb,
#define TAG(x) radeon##x##_BGRA8888
#define TAG2(x,y) radeon##x##_BGRA8888##y
#if defined(RADEON_R600)
-#define GET_PTR(X,Y) r600_ptr_color(rrb, (X) + x_off, (Y) + y_off)
+#define GET_VALUE(_x, _y) (LE32_TO_CPU(*(GLuint*)(r600_ptr_color(rrb, _x + x_off, _y + y_off))))
+#define PUT_VALUE(_x, _y, d) { \
+ GLuint *_ptr = (GLuint*)r600_ptr_color( rrb, _x + x_off, _y + y_off ); \
+ *_ptr = CPU_TO_LE32(d); \
+} while (0)
#else
#define GET_PTR(X,Y) radeon_ptr_4byte(rrb, (X) + x_off, (Y) + y_off)
#endif
@@ -752,7 +791,7 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb,
*(GLushort *)r200_depth_2byte(rrb, _x + x_off, _y + y_off) = d
#elif defined(RADEON_R600)
#define WRITE_DEPTH( _x, _y, d ) \
- *(GLushort *)r600_ptr_depth(rrb, _x + x_off, _y + y_off) = d
+ *(GLushort *)r600_ptr_depth(rrb, _x + x_off, _y + y_off) = CPU_TO_LE16(d)
#else
#define WRITE_DEPTH( _x, _y, d ) \
*(GLushort *)radeon_ptr_2byte_8x2(rrb, _x + x_off, _y + y_off) = d
@@ -763,7 +802,7 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb,
d = *(GLushort *)r200_depth_2byte(rrb, _x + x_off, _y + y_off)
#elif defined(RADEON_R600)
#define READ_DEPTH( d, _x, _y ) \
- d = *(GLushort *)r600_ptr_depth(rrb, _x + x_off, _y + y_off)
+ d = LE16_TO_CPU(*(GLushort *)r600_ptr_depth(rrb, _x + x_off, _y + y_off))
#else
#define READ_DEPTH( d, _x, _y ) \
d = *(GLushort *)radeon_ptr_2byte_8x2(rrb, _x + x_off, _y + y_off)
@@ -792,10 +831,10 @@ do { \
#define WRITE_DEPTH( _x, _y, d ) \
do { \
GLuint *_ptr = (GLuint*)r600_ptr_depth( rrb, _x + x_off, _y + y_off ); \
- GLuint tmp = *_ptr; \
+ GLuint tmp = LE32_TO_CPU(*_ptr); \
tmp &= 0xff000000; \
tmp |= ((d) & 0x00ffffff); \
- *_ptr = tmp; \
+ *_ptr = CPU_TO_LE32(tmp); \
} while (0)
#elif defined(RADEON_R200)
#define WRITE_DEPTH( _x, _y, d ) \
@@ -825,7 +864,7 @@ do { \
#elif defined(RADEON_R600)
#define READ_DEPTH( d, _x, _y ) \
do { \
- d = (*(GLuint*)(r600_ptr_depth(rrb, _x + x_off, _y + y_off)) & 0x00ffffff); \
+ d = (LE32_TO_CPU(*(GLuint*)(r600_ptr_depth(rrb, _x + x_off, _y + y_off))) & 0x00ffffff); \
}while(0)
#elif defined(RADEON_R200)
#define READ_DEPTH( d, _x, _y ) \
@@ -858,15 +897,15 @@ do { \
#define WRITE_DEPTH( _x, _y, d ) \
do { \
GLuint *_ptr = (GLuint*)r600_ptr_depth( rrb, _x + x_off, _y + y_off ); \
- GLuint tmp = *_ptr; \
+ GLuint tmp = LE32_TO_CPU(*_ptr); \
tmp &= 0xff000000; \
tmp |= ((d) & 0x00ffffff); \
- *_ptr = tmp; \
+ *_ptr = CPU_TO_LE32(tmp); \
_ptr = (GLuint*)r600_ptr_stencil(rrb, _x + x_off, _y + y_off); \
- tmp = *_ptr; \
+ tmp = LE32_TO_CPU(*_ptr); \
tmp &= 0xffffff00; \
tmp |= ((d) >> 24) & 0xff; \
- *_ptr = tmp; \
+ *_ptr = CPU_TO_LE32(tmp); \
} while (0)
#elif defined(RADEON_R200)
#define WRITE_DEPTH( _x, _y, d ) \
@@ -891,8 +930,8 @@ do { \
#elif defined(RADEON_R600)
#define READ_DEPTH( d, _x, _y ) \
do { \
- d = (*(GLuint*)(r600_ptr_depth(rrb, _x + x_off, _y + y_off))) & 0x00ffffff; \
- d |= ((*(GLuint*)(r600_ptr_stencil(rrb, _x + x_off, _y + y_off))) << 24) & 0xff000000; \
+ d = (LE32_TO_CPU(*(GLuint*)(r600_ptr_depth(rrb, _x + x_off, _y + y_off))) & 0x00ffffff); \
+ d |= ((LE32_TO_CPU(*(GLuint*)(r600_ptr_stencil(rrb, _x + x_off, _y + y_off))) << 24) & 0xff000000); \
}while(0)
#elif defined(RADEON_R200)
#define READ_DEPTH( d, _x, _y ) \
@@ -927,10 +966,10 @@ do { \
#define WRITE_STENCIL( _x, _y, d ) \
do { \
GLuint *_ptr = (GLuint*)r600_ptr_stencil(rrb, _x + x_off, _y + y_off); \
- GLuint tmp = *_ptr; \
+ GLuint tmp = LE32_TO_CPU(*_ptr); \
tmp &= 0xffffff00; \
tmp |= (d) & 0xff; \
- *_ptr = tmp; \
+ *_ptr = CPU_TO_LE32(tmp); \
} while (0)
#elif defined(RADEON_R200)
#define WRITE_STENCIL( _x, _y, d ) \
@@ -963,7 +1002,7 @@ do { \
#define READ_STENCIL( d, _x, _y ) \
do { \
GLuint *_ptr = (GLuint*)r600_ptr_stencil( rrb, _x + x_off, _y + y_off ); \
- GLuint tmp = *_ptr; \
+ GLuint tmp = LE32_TO_CPU(*_ptr); \
d = tmp & 0x000000ff; \
} while (0)
#elif defined(RADEON_R200)
diff --git a/src/mesa/drivers/dri/radeon/radeon_tex.c b/src/mesa/drivers/dri/radeon/radeon_tex.c
index 8a35c7d2d27..25a8ddf7b6a 100644
--- a/src/mesa/drivers/dri/radeon/radeon_tex.c
+++ b/src/mesa/drivers/dri/radeon/radeon_tex.c
@@ -330,17 +330,17 @@ static void radeonTexParameter( struct gl_context *ctx, GLenum target,
case GL_TEXTURE_MIN_FILTER:
case GL_TEXTURE_MAG_FILTER:
case GL_TEXTURE_MAX_ANISOTROPY_EXT:
- radeonSetTexMaxAnisotropy( t, texObj->MaxAnisotropy );
- radeonSetTexFilter( t, texObj->MinFilter, texObj->MagFilter );
+ radeonSetTexMaxAnisotropy( t, texObj->Sampler.MaxAnisotropy );
+ radeonSetTexFilter( t, texObj->Sampler.MinFilter, texObj->Sampler.MagFilter );
break;
case GL_TEXTURE_WRAP_S:
case GL_TEXTURE_WRAP_T:
- radeonSetTexWrap( t, texObj->WrapS, texObj->WrapT );
+ radeonSetTexWrap( t, texObj->Sampler.WrapS, texObj->Sampler.WrapT );
break;
case GL_TEXTURE_BORDER_COLOR:
- radeonSetTexBorderColor( t, texObj->BorderColor.f );
+ radeonSetTexBorderColor( t, texObj->Sampler.BorderColor.f );
break;
case GL_TEXTURE_BASE_LEVEL:
@@ -416,7 +416,7 @@ radeonNewTextureObject( struct gl_context *ctx, GLuint name, GLenum target )
radeonTexObj* t = CALLOC_STRUCT(radeon_tex_obj);
_mesa_initialize_texture_object(&t->base, name, target);
- t->base.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy;
+ t->base.Sampler.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy;
t->border_fallback = GL_FALSE;
@@ -424,10 +424,10 @@ radeonNewTextureObject( struct gl_context *ctx, GLuint name, GLenum target )
t->pp_txformat = (RADEON_TXFORMAT_ENDIAN_NO_SWAP |
RADEON_TXFORMAT_PERSPECTIVE_ENABLE);
- radeonSetTexWrap( t, t->base.WrapS, t->base.WrapT );
- radeonSetTexMaxAnisotropy( t, t->base.MaxAnisotropy );
- radeonSetTexFilter( t, t->base.MinFilter, t->base.MagFilter );
- radeonSetTexBorderColor( t, t->base.BorderColor.f );
+ radeonSetTexWrap( t, t->base.Sampler.WrapS, t->base.Sampler.WrapT );
+ radeonSetTexMaxAnisotropy( t, t->base.Sampler.MaxAnisotropy );
+ radeonSetTexFilter( t, t->base.Sampler.MinFilter, t->base.Sampler.MagFilter );
+ radeonSetTexBorderColor( t, t->base.Sampler.BorderColor.f );
return &t->base;
}
diff --git a/src/mesa/drivers/dri/savage/savagedd.c b/src/mesa/drivers/dri/savage/savagedd.c
index 3f8d7aafb08..c7f58835054 100644
--- a/src/mesa/drivers/dri/savage/savagedd.c
+++ b/src/mesa/drivers/dri/savage/savagedd.c
@@ -38,8 +38,6 @@
#include "utils.h"
-#define DRIVER_DATE "20061110"
-
/***************************************
* Mesa's Driver Functions
***************************************/
@@ -71,7 +69,7 @@ static const GLubyte *savageDDGetString( struct gl_context *ctx, GLenum name )
case GL_VENDOR:
return (GLubyte *)"S3 Graphics Inc.";
case GL_RENDERER:
- offset = driGetRendererString( buffer, cardNames[chipset], DRIVER_DATE,
+ offset = driGetRendererString( buffer, cardNames[chipset],
screen->agpMode );
return (GLubyte *)buffer;
default:
diff --git a/src/mesa/drivers/dri/savage/savagerender.c b/src/mesa/drivers/dri/savage/savagerender.c
index 8cc448ad4f7..6687dc5f466 100644
--- a/src/mesa/drivers/dri/savage/savagerender.c
+++ b/src/mesa/drivers/dri/savage/savagerender.c
@@ -250,9 +250,9 @@ static GLboolean run_texnorm_stage( struct gl_context *ctx,
const GLbitfield reallyEnabled = ctx->Texture.Unit[i]._ReallyEnabled;
if (reallyEnabled) {
const struct gl_texture_object *texObj = ctx->Texture.Unit[i]._Current;
- const GLboolean normalizeS = (texObj->WrapS == GL_REPEAT);
+ const GLboolean normalizeS = (texObj->Sampler.WrapS == GL_REPEAT);
const GLboolean normalizeT = (reallyEnabled & TEXTURE_2D_BIT) &&
- (texObj->WrapT == GL_REPEAT);
+ (texObj->Sampler.WrapT == GL_REPEAT);
const GLfloat *in = (GLfloat *)VB->AttribPtr[_TNL_ATTRIB_TEX0 + i]->data;
const GLint instride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + i]->stride;
GLfloat (*out)[4] = store->texcoord[i].data;
@@ -332,15 +332,15 @@ static void validate_texnorm( struct gl_context *ctx,
GLuint flags = 0;
if (((ctx->Texture.Unit[0]._ReallyEnabled & (TEXTURE_1D_BIT|TEXTURE_2D_BIT)) &&
- (ctx->Texture.Unit[0]._Current->WrapS == GL_REPEAT)) ||
+ (ctx->Texture.Unit[0]._Current->Sampler.WrapS == GL_REPEAT)) ||
((ctx->Texture.Unit[0]._ReallyEnabled & TEXTURE_2D_BIT) &&
- (ctx->Texture.Unit[0]._Current->WrapT == GL_REPEAT)))
+ (ctx->Texture.Unit[0]._Current->Sampler.WrapT == GL_REPEAT)))
flags |= VERT_BIT_TEX0;
if (((ctx->Texture.Unit[1]._ReallyEnabled & (TEXTURE_1D_BIT|TEXTURE_2D_BIT)) &&
- (ctx->Texture.Unit[1]._Current->WrapS == GL_REPEAT)) ||
+ (ctx->Texture.Unit[1]._Current->Sampler.WrapS == GL_REPEAT)) ||
((ctx->Texture.Unit[1]._ReallyEnabled & TEXTURE_2D_BIT) &&
- (ctx->Texture.Unit[1]._Current->WrapT == GL_REPEAT)))
+ (ctx->Texture.Unit[1]._Current->Sampler.WrapT == GL_REPEAT)))
flags |= VERT_BIT_TEX1;
store->active = (flags != 0);
diff --git a/src/mesa/drivers/dri/savage/savagetex.c b/src/mesa/drivers/dri/savage/savagetex.c
index 3aece732c99..9486c12c158 100644
--- a/src/mesa/drivers/dri/savage/savagetex.c
+++ b/src/mesa/drivers/dri/savage/savagetex.c
@@ -502,9 +502,9 @@ savageAllocTexObj( struct gl_texture_object *texObj )
make_empty_list( &t->base );
- savageSetTexWrapping(t,texObj->WrapS,texObj->WrapT);
- savageSetTexFilter(t,texObj->MinFilter,texObj->MagFilter);
- savageSetTexBorderColor(t,texObj->BorderColor.f);
+ savageSetTexWrapping(t,texObj->Sampler.WrapS,texObj->Sampler.WrapT);
+ savageSetTexFilter(t,texObj->Sampler.MinFilter,texObj->Sampler.MagFilter);
+ savageSetTexBorderColor(t,texObj->Sampler.BorderColor.f);
}
return t;
@@ -2031,16 +2031,16 @@ static void savageTexParameter( struct gl_context *ctx, GLenum target,
switch (pname) {
case GL_TEXTURE_MIN_FILTER:
case GL_TEXTURE_MAG_FILTER:
- savageSetTexFilter(t,tObj->MinFilter,tObj->MagFilter);
+ savageSetTexFilter(t,tObj->Sampler.MinFilter,tObj->Sampler.MagFilter);
break;
case GL_TEXTURE_WRAP_S:
case GL_TEXTURE_WRAP_T:
- savageSetTexWrapping(t,tObj->WrapS,tObj->WrapT);
+ savageSetTexWrapping(t,tObj->Sampler.WrapS,tObj->Sampler.WrapT);
break;
case GL_TEXTURE_BORDER_COLOR:
- savageSetTexBorderColor(t,tObj->BorderColor.f);
+ savageSetTexBorderColor(t,tObj->Sampler.BorderColor.f);
break;
default:
diff --git a/src/mesa/drivers/dri/sis/sis_dd.c b/src/mesa/drivers/dri/sis/sis_dd.c
index 90e894b842c..bba516f8dcd 100644
--- a/src/mesa/drivers/dri/sis/sis_dd.c
+++ b/src/mesa/drivers/dri/sis/sis_dd.c
@@ -45,8 +45,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "utils.h"
-#define DRIVER_DATE "20060710"
-
/* Return the width and height of the given buffer.
*/
static void
@@ -78,7 +76,7 @@ sisGetString( struct gl_context *ctx, GLenum name )
return (GLubyte *)"Eric Anholt";
case GL_RENDERER:
- offset = driGetRendererString( buffer, "SiS", DRIVER_DATE, agp_mode );
+ offset = driGetRendererString( buffer, "SiS", agp_mode );
return (GLubyte *)buffer;
diff --git a/src/mesa/drivers/dri/sis/sis_texstate.c b/src/mesa/drivers/dri/sis/sis_texstate.c
index daec2393211..6580f155bae 100644
--- a/src/mesa/drivers/dri/sis/sis_texstate.c
+++ b/src/mesa/drivers/dri/sis/sis_texstate.c
@@ -335,7 +335,7 @@ sis_set_texobj_parm( struct gl_context *ctx, struct gl_texture_object *texObj,
current->texture[hw_unit].hwTextureMip = 0UL;
current->texture[hw_unit].hwTextureSet = t->hwformat;
- if ((texObj->MinFilter == GL_NEAREST) || (texObj->MinFilter == GL_LINEAR)) {
+ if ((texObj->Sampler.MinFilter == GL_NEAREST) || (texObj->Sampler.MinFilter == GL_LINEAR)) {
firstLevel = lastLevel = texObj->BaseLevel;
} else {
/* Compute which mipmap levels we really want to send to the hardware.
@@ -344,9 +344,9 @@ sis_set_texobj_parm( struct gl_context *ctx, struct gl_texture_object *texObj,
* Yes, this looks overly complicated, but it's all needed.
*/
- firstLevel = texObj->BaseLevel + (GLint)(texObj->MinLod + 0.5);
+ firstLevel = texObj->BaseLevel + (GLint)(texObj->Sampler.MinLod + 0.5);
firstLevel = MAX2(firstLevel, texObj->BaseLevel);
- lastLevel = texObj->BaseLevel + (GLint)(texObj->MaxLod + 0.5);
+ lastLevel = texObj->BaseLevel + (GLint)(texObj->Sampler.MaxLod + 0.5);
lastLevel = MAX2(lastLevel, texObj->BaseLevel);
lastLevel = MIN2(lastLevel, texObj->BaseLevel +
texObj->Image[0][texObj->BaseLevel]->MaxLog2);
@@ -356,7 +356,7 @@ sis_set_texobj_parm( struct gl_context *ctx, struct gl_texture_object *texObj,
current->texture[hw_unit].hwTextureSet |= (lastLevel << 8);
- switch (texObj->MagFilter)
+ switch (texObj->Sampler.MagFilter)
{
case GL_NEAREST:
current->texture[hw_unit].hwTextureMip |= TEXTURE_FILTER_NEAREST;
@@ -382,7 +382,7 @@ sis_set_texobj_parm( struct gl_context *ctx, struct gl_texture_object *texObj,
MASK_TextureMipmapLodBias);
}
- switch (texObj->MinFilter)
+ switch (texObj->Sampler.MinFilter)
{
case GL_NEAREST:
current->texture[hw_unit].hwTextureMip |= TEXTURE_FILTER_NEAREST;
@@ -408,7 +408,7 @@ sis_set_texobj_parm( struct gl_context *ctx, struct gl_texture_object *texObj,
break;
}
- switch (texObj->WrapS)
+ switch (texObj->Sampler.WrapS)
{
case GL_REPEAT:
current->texture[hw_unit].hwTextureSet |= MASK_TextureWrapU;
@@ -431,7 +431,7 @@ sis_set_texobj_parm( struct gl_context *ctx, struct gl_texture_object *texObj,
break;
}
- switch (texObj->WrapT)
+ switch (texObj->Sampler.WrapT)
{
case GL_REPEAT:
current->texture[hw_unit].hwTextureSet |= MASK_TextureWrapV;
@@ -456,10 +456,10 @@ sis_set_texobj_parm( struct gl_context *ctx, struct gl_texture_object *texObj,
{
GLubyte c[4];
- CLAMPED_FLOAT_TO_UBYTE(c[0], texObj->BorderColor.f[0]);
- CLAMPED_FLOAT_TO_UBYTE(c[1], texObj->BorderColor.f[1]);
- CLAMPED_FLOAT_TO_UBYTE(c[2], texObj->BorderColor.f[2]);
- CLAMPED_FLOAT_TO_UBYTE(c[3], texObj->BorderColor.f[3]);
+ CLAMPED_FLOAT_TO_UBYTE(c[0], texObj->Sampler.BorderColor.f[0]);
+ CLAMPED_FLOAT_TO_UBYTE(c[1], texObj->Sampler.BorderColor.f[1]);
+ CLAMPED_FLOAT_TO_UBYTE(c[2], texObj->Sampler.BorderColor.f[2]);
+ CLAMPED_FLOAT_TO_UBYTE(c[3], texObj->Sampler.BorderColor.f[3]);
current->texture[hw_unit].hwTextureBorderColor =
PACK_COLOR_8888(c[3], c[0], c[1], c[2]);
diff --git a/src/mesa/drivers/dri/tdfx/tdfx_dd.c b/src/mesa/drivers/dri/tdfx/tdfx_dd.c
index d60931ad7fd..e981f9abedf 100644
--- a/src/mesa/drivers/dri/tdfx/tdfx_dd.c
+++ b/src/mesa/drivers/dri/tdfx/tdfx_dd.c
@@ -41,9 +41,6 @@
#include "main/context.h"
-#define DRIVER_DATE "20061113"
-
-
/* These are used in calls to FX_grColorMaskv() */
const GLboolean false4[4] = { GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE };
const GLboolean true4[4] = { GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE };
@@ -91,7 +88,7 @@ static const GLubyte *tdfxDDGetString( struct gl_context *ctx, GLenum name )
}
}
- (void) driGetRendererString(buffer, hardware, DRIVER_DATE, 0);
+ (void) driGetRendererString(buffer, hardware, 0);
return (const GLubyte *) buffer;
}
case GL_VENDOR:
diff --git a/src/mesa/drivers/dri/tdfx/tdfx_tex.c b/src/mesa/drivers/dri/tdfx/tdfx_tex.c
index 4cca243d076..d74ddb24005 100644
--- a/src/mesa/drivers/dri/tdfx/tdfx_tex.c
+++ b/src/mesa/drivers/dri/tdfx/tdfx_tex.c
@@ -327,7 +327,7 @@ static void RevalidateTexture(struct gl_context *ctx, struct gl_texture_object *
&(ti->sScale), &(ti->tScale), NULL, NULL);
}
- if (tObj->Image[0][maxl] && (tObj->MinFilter != GL_NEAREST) && (tObj->MinFilter != GL_LINEAR)) {
+ if (tObj->Image[0][maxl] && (tObj->Sampler.MinFilter != GL_NEAREST) && (tObj->Sampler.MinFilter != GL_LINEAR)) {
/* mipmapping: need to compute smallLodLog2 */
tdfxTexGetInfo(ctx, tObj->Image[0][maxl]->Width,
tObj->Image[0][maxl]->Height,
@@ -1786,12 +1786,12 @@ tdfxTestProxyTexImage(struct gl_context *ctx, GLenum target,
#endif
if (level == 0) {
/* don't use mipmap levels > 0 */
- tObj->MinFilter = tObj->MagFilter = GL_NEAREST;
+ tObj->Sampler.MinFilter = tObj->Sampler.MagFilter = GL_NEAREST;
}
else {
/* test with all mipmap levels */
- tObj->MinFilter = GL_LINEAR_MIPMAP_LINEAR;
- tObj->MagFilter = GL_NEAREST;
+ tObj->Sampler.MinFilter = GL_LINEAR_MIPMAP_LINEAR;
+ tObj->Sampler.MagFilter = GL_NEAREST;
}
RevalidateTexture(ctx, tObj);
diff --git a/src/mesa/drivers/dri/unichrome/via_context.c b/src/mesa/drivers/dri/unichrome/via_context.c
index 77d7116611a..89c2a12a9c2 100644
--- a/src/mesa/drivers/dri/unichrome/via_context.c
+++ b/src/mesa/drivers/dri/unichrome/via_context.c
@@ -65,8 +65,6 @@
#define need_GL_EXT_secondary_color
#include "main/remap_helper.h"
-#define DRIVER_DATE "20060710"
-
#include "vblank.h"
#include "utils.h"
@@ -100,7 +98,7 @@ static const GLubyte *viaGetString(struct gl_context *ctx, GLenum name)
offset = driGetRendererString( buffer,
chipset_names[(id > VIA_PM800) ? 0 : id],
- DRIVER_DATE, 0 );
+ 0 );
return (GLubyte *)buffer;
}
diff --git a/src/mesa/drivers/dri/unichrome/via_state.c b/src/mesa/drivers/dri/unichrome/via_state.c
index 774f439bfb6..3b270e02a97 100644
--- a/src/mesa/drivers/dri/unichrome/via_state.c
+++ b/src/mesa/drivers/dri/unichrome/via_state.c
@@ -877,21 +877,21 @@ static GLboolean viaChooseTextureState(struct gl_context *ctx)
if (texUnit0->_ReallyEnabled) {
struct gl_texture_object *texObj = texUnit0->_Current;
- vmesa->regHTXnTB[0] = get_minmag_filter( texObj->MinFilter,
- texObj->MagFilter );
+ vmesa->regHTXnTB[0] = get_minmag_filter( texObj->Sampler.MinFilter,
+ texObj->Sampler.MagFilter );
vmesa->regHTXnMPMD[0] &= ~(HC_HTXnMPMD_SMASK | HC_HTXnMPMD_TMASK);
- vmesa->regHTXnMPMD[0] |= get_wrap_mode( texObj->WrapS,
- texObj->WrapT );
+ vmesa->regHTXnMPMD[0] |= get_wrap_mode( texObj->Sampler.WrapS,
+ texObj->Sampler.WrapT );
vmesa->regHTXnTB[0] &= ~(HC_HTXnTB_TBC_S | HC_HTXnTB_TBC_T);
if (texObj->Image[0][texObj->BaseLevel]->Border > 0) {
vmesa->regHTXnTB[0] |= (HC_HTXnTB_TBC_S | HC_HTXnTB_TBC_T);
vmesa->regHTXnTBC[0] =
- PACK_COLOR_888(FLOAT_TO_UBYTE(texObj->BorderColor.f[0]),
- FLOAT_TO_UBYTE(texObj->BorderColor.f[1]),
- FLOAT_TO_UBYTE(texObj->BorderColor.f[2]));
- vmesa->regHTXnTRAH[0] = FLOAT_TO_UBYTE(texObj->BorderColor.f[3]);
+ PACK_COLOR_888(FLOAT_TO_UBYTE(texObj->Sampler.BorderColor.f[0]),
+ FLOAT_TO_UBYTE(texObj->Sampler.BorderColor.f[1]),
+ FLOAT_TO_UBYTE(texObj->Sampler.BorderColor.f[2]));
+ vmesa->regHTXnTRAH[0] = FLOAT_TO_UBYTE(texObj->Sampler.BorderColor.f[3]);
}
if (texUnit0->LodBias != 0.0f) {
@@ -911,20 +911,20 @@ static GLboolean viaChooseTextureState(struct gl_context *ctx)
if (texUnit1->_ReallyEnabled) {
struct gl_texture_object *texObj = texUnit1->_Current;
- vmesa->regHTXnTB[1] = get_minmag_filter( texObj->MinFilter,
- texObj->MagFilter );
+ vmesa->regHTXnTB[1] = get_minmag_filter( texObj->Sampler.MinFilter,
+ texObj->Sampler.MagFilter );
vmesa->regHTXnMPMD[1] &= ~(HC_HTXnMPMD_SMASK | HC_HTXnMPMD_TMASK);
- vmesa->regHTXnMPMD[1] |= get_wrap_mode( texObj->WrapS,
- texObj->WrapT );
+ vmesa->regHTXnMPMD[1] |= get_wrap_mode( texObj->Sampler.WrapS,
+ texObj->Sampler.WrapT );
vmesa->regHTXnTB[1] &= ~(HC_HTXnTB_TBC_S | HC_HTXnTB_TBC_T);
if (texObj->Image[0][texObj->BaseLevel]->Border > 0) {
vmesa->regHTXnTB[1] |= (HC_HTXnTB_TBC_S | HC_HTXnTB_TBC_T);
vmesa->regHTXnTBC[1] =
- PACK_COLOR_888(FLOAT_TO_UBYTE(texObj->BorderColor.f[0]),
- FLOAT_TO_UBYTE(texObj->BorderColor.f[1]),
- FLOAT_TO_UBYTE(texObj->BorderColor.f[2]));
- vmesa->regHTXnTRAH[1] = FLOAT_TO_UBYTE(texObj->BorderColor.f[3]);
+ PACK_COLOR_888(FLOAT_TO_UBYTE(texObj->Sampler.BorderColor.f[0]),
+ FLOAT_TO_UBYTE(texObj->Sampler.BorderColor.f[1]),
+ FLOAT_TO_UBYTE(texObj->Sampler.BorderColor.f[2]));
+ vmesa->regHTXnTRAH[1] = FLOAT_TO_UBYTE(texObj->Sampler.BorderColor.f[3]);
}
diff --git a/src/mesa/drivers/dri/unichrome/via_tex.c b/src/mesa/drivers/dri/unichrome/via_tex.c
index a2fb010e142..1a0d1eaf070 100644
--- a/src/mesa/drivers/dri/unichrome/via_tex.c
+++ b/src/mesa/drivers/dri/unichrome/via_tex.c
@@ -495,13 +495,13 @@ static GLboolean viaSetTexImages(struct gl_context *ctx,
* GL_TEXTURE_MAX_LOD, GL_TEXTURE_BASE_LEVEL, and GL_TEXTURE_MAX_LEVEL.
* Yes, this looks overly complicated, but it's all needed.
*/
- if (texObj->MinFilter == GL_LINEAR || texObj->MinFilter == GL_NEAREST) {
+ if (texObj->Sampler.MinFilter == GL_LINEAR || texObj->Sampler.MinFilter == GL_NEAREST) {
firstLevel = lastLevel = texObj->BaseLevel;
}
else {
- firstLevel = texObj->BaseLevel + (GLint)(texObj->MinLod + 0.5);
+ firstLevel = texObj->BaseLevel + (GLint)(texObj->Sampler.MinLod + 0.5);
firstLevel = MAX2(firstLevel, texObj->BaseLevel);
- lastLevel = texObj->BaseLevel + (GLint)(texObj->MaxLod + 0.5);
+ lastLevel = texObj->BaseLevel + (GLint)(texObj->Sampler.MaxLod + 0.5);
lastLevel = MAX2(lastLevel, texObj->BaseLevel);
lastLevel = MIN2(lastLevel, texObj->BaseLevel + baseImage->image.MaxLog2);
lastLevel = MIN2(lastLevel, texObj->MaxLevel);
diff --git a/src/mesa/drivers/osmesa/SConscript b/src/mesa/drivers/osmesa/SConscript
new file mode 100644
index 00000000000..5ccef5f130c
--- /dev/null
+++ b/src/mesa/drivers/osmesa/SConscript
@@ -0,0 +1,36 @@
+Import('*')
+
+env = env.Clone()
+
+env.Prepend(CPPPATH = [
+ '#src/mapi',
+ '#src/mesa',
+])
+
+env.Prepend(LIBS = [
+ glapi,
+ mesa,
+ glsl,
+])
+
+sources = [
+ 'osmesa.c',
+]
+
+if env['platform'] == 'windows':
+ env.AppendUnique(CPPDEFINES = [
+ '_GDI32_', # prevent wgl* being declared __declspec(dllimport)
+ 'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers
+ ])
+ if not env['gles']:
+ # prevent _glapi_* from being declared __declspec(dllimport)
+ env.Append(CPPDEFINES = ['_GLAPI_NO_EXPORTS'])
+
+ sources += ['osmesa.def']
+
+osmesa = env.SharedLibrary(
+ target ='osmesa',
+ source = sources,
+)
+
+env.Alias('osmesa', osmesa)
diff --git a/src/mesa/drivers/osmesa/osmesa.c b/src/mesa/drivers/osmesa/osmesa.c
index 98f01fe057e..68d71144642 100644
--- a/src/mesa/drivers/osmesa/osmesa.c
+++ b/src/mesa/drivers/osmesa/osmesa.c
@@ -515,11 +515,7 @@ do { \
PACK_RGBA(p, color[0], color[1], color[2], color[3]); \
} while (0)
-#ifdef WIN32
-#include "..\swrast\s_linetemp.h"
-#else
#include "swrast/s_linetemp.h"
-#endif
@@ -544,11 +540,7 @@ do { \
} \
} while (0)
-#ifdef WIN32
-#include "..\swrast\s_linetemp.h"
-#else
#include "swrast/s_linetemp.h"
-#endif
@@ -624,11 +616,7 @@ osmesa_choose_line_function( struct gl_context *ctx )
span.z += span.zStep; \
} \
}
-#ifdef WIN32
-#include "..\swrast\s_tritemp.h"
-#else
#include "swrast/s_tritemp.h"
-#endif
@@ -656,11 +644,8 @@ osmesa_choose_line_function( struct gl_context *ctx )
span.z += span.zStep; \
} \
}
-#ifdef WIN32
-#include "..\swrast\s_tritemp.h"
-#else
+
#include "swrast/s_tritemp.h"
-#endif
diff --git a/src/mesa/drivers/windows/gdi/SConscript b/src/mesa/drivers/windows/gdi/SConscript
new file mode 100644
index 00000000000..10a7eeaa19f
--- /dev/null
+++ b/src/mesa/drivers/windows/gdi/SConscript
@@ -0,0 +1,38 @@
+Import('*')
+
+env = env.Clone()
+
+env.Prepend(CPPPATH = [
+ '#src/mapi',
+ '#src/mesa',
+])
+
+env.AppendUnique(CPPDEFINES = [
+ '_GDI32_', # prevent wgl* being declared __declspec(dllimport)
+ 'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers
+])
+if not env['gles']:
+ # prevent _glapi_* from being declared __declspec(dllimport)
+ env.Append(CPPDEFINES = ['_GLAPI_NO_EXPORTS'])
+
+env.Prepend(LIBS = [
+ glapi,
+ mesa,
+ glsl,
+ 'gdi32',
+ 'user32',
+ 'kernel32',
+])
+
+sources = [
+ 'mesa.def',
+ 'wgl.c',
+ 'wmesa.c',
+]
+
+mesagdi = env.SharedLibrary(
+ target = 'opengl32',
+ source = sources,
+)
+
+env.Alias('mesagdi', mesagdi)
diff --git a/src/mesa/drivers/windows/gdi/mesa.def b/src/mesa/drivers/windows/gdi/mesa.def
index b537b3460c5..d5c98801d32 100644
--- a/src/mesa/drivers/windows/gdi/mesa.def
+++ b/src/mesa/drivers/windows/gdi/mesa.def
@@ -26,9 +26,6 @@ VERSION 6.5
; be needed (for the gl* functions) since the entry
; points are compiled with dllexport declspec.
;
-; However, this file is still needed to export "internal"
-; Mesa symbols for the benefit of the OSMESA32.DLL.
-;
EXPORTS
glNewList
glEndList
@@ -857,107 +854,3 @@ EXPORTS
wglUseFontOutlinesA
wglUseFontOutlinesW
wglGetExtensionsStringARB
-;
-; Mesa internals - mostly for OSMESA
- _vbo_CreateContext
- _vbo_DestroyContext
- _vbo_InvalidateState
- _glapi_check_multithread
- _glapi_get_context
- _glapi_get_proc_address
- _mesa_add_soft_renderbuffers
- _mesa_add_renderbuffer
- _mesa_check_conditional_render
- _mesa_choose_tex_format
- _mesa_create_framebuffer
- _mesa_create_visual
- _mesa_delete_array_object
- _mesa_delete_program
- _mesa_delete_texture_object
- _mesa_destroy_framebuffer
- _mesa_destroy_visual
- _mesa_enable_1_3_extensions
- _mesa_enable_1_4_extensions
- _mesa_enable_1_5_extensions
- _mesa_enable_2_0_extensions
- _mesa_enable_2_1_extensions
- _mesa_enable_sw_extensions
- _mesa_error
- _mesa_finish_render_texture
- _mesa_framebuffer_renderbuffer
- _mesa_free_context_data
- _mesa_free_texture_image_data
- _mesa_generate_mipmap
- _mesa_get_compressed_teximage
- _mesa_get_current_context
- _mesa_get_teximage
- _mesa_init_driver_functions
- _mesa_init_glsl_driver_functions
- _mesa_init_renderbuffer
- _mesa_initialize_context
- _mesa_make_current
- _mesa_new_array_object
- _mesa_new_framebuffer
- _mesa_new_program
- _mesa_new_renderbuffer
- _mesa_new_soft_renderbuffer
- _mesa_new_texture_image
- _mesa_new_texture_object
- _mesa_problem
- _mesa_reference_renderbuffer
- _mesa_remove_renderbuffer
- _mesa_render_texture
- _mesa_ResizeBuffersMESA
- _mesa_resize_framebuffer
- _mesa_store_compressed_teximage1d
- _mesa_store_compressed_teximage2d
- _mesa_store_compressed_teximage3d
- _mesa_store_compressed_texsubimage1d
- _mesa_store_compressed_texsubimage2d
- _mesa_store_compressed_texsubimage3d
- _mesa_store_teximage1d
- _mesa_store_teximage2d
- _mesa_store_teximage3d
- _mesa_store_texsubimage1d
- _mesa_store_texsubimage2d
- _mesa_store_texsubimage3d
- _mesa_test_proxy_teximage
- _mesa_reference_framebuffer
- _mesa_update_framebuffer_visual
- _mesa_use_program
- _mesa_Viewport
- _mesa_meta_init
- _mesa_meta_free
- _mesa_meta_CopyColorSubTable
- _mesa_meta_CopyColorTable
- _mesa_meta_CopyConvolutionFilter1D
- _mesa_meta_CopyConvolutionFilter2D
- _mesa_meta_CopyTexImage1D
- _mesa_meta_CopyTexImage2D
- _mesa_meta_CopyTexSubImage1D
- _mesa_meta_CopyTexSubImage2D
- _mesa_meta_CopyTexSubImage3D
- _swrast_Accum
- _swrast_Bitmap
- _swrast_BlitFramebuffer
- _swrast_CopyPixels
- _swrast_DrawPixels
- _swrast_GetDeviceDriverReference
- _swrast_Clear
- _swrast_choose_line
- _swrast_choose_triangle
- _swrast_CreateContext
- _swrast_DestroyContext
- _swrast_exec_fragment_program
- _swrast_InvalidateState
- _swrast_ReadPixels
- _swsetup_Wakeup
- _swsetup_CreateContext
- _swsetup_DestroyContext
- _swsetup_InvalidateState
- _tnl_CreateContext
- _tnl_DestroyContext
- _tnl_InvalidateState
- _tnl_run_pipeline
- _tnl_program_string
- _tnl_RasterPos
diff --git a/src/mesa/drivers/windows/gdi/wgl.c b/src/mesa/drivers/windows/gdi/wgl.c
index 8d8087067f5..1dafe6e2952 100644
--- a/src/mesa/drivers/windows/gdi/wgl.c
+++ b/src/mesa/drivers/windows/gdi/wgl.c
@@ -54,8 +54,8 @@
#include <windows.h>
#endif
-#include "config.h"
-#include "glapi.h"
+#include "main/config.h"
+#include "glapi/glapi.h"
#include "GL/wmesa.h" /* protos for wmesa* functions */
/*
diff --git a/src/mesa/drivers/windows/gdi/wmesa.c b/src/mesa/drivers/windows/gdi/wmesa.c
index 4a8b1b283d5..e3a37eb1ace 100644
--- a/src/mesa/drivers/windows/gdi/wmesa.c
+++ b/src/mesa/drivers/windows/gdi/wmesa.c
@@ -7,10 +7,11 @@
#include "colors.h"
#include <GL/wmesa.h>
#include <winuser.h>
-#include "context.h"
-#include "extensions.h"
-#include "framebuffer.h"
-#include "renderbuffer.h"
+#include "main/context.h"
+#include "main/extensions.h"
+#include "main/framebuffer.h"
+#include "main/renderbuffer.h"
+#include "main/macros.h"
#include "drivers/common/driverfuncs.h"
#include "drivers/common/meta.h"
#include "vbo/vbo.h"
@@ -185,7 +186,7 @@ BOOL wmCreateBackingStore(WMesaFramebuffer pwfb, long lxSize, long lySize)
}
-static wmDeleteBackingStore(WMesaFramebuffer pwfb)
+static void wmDeleteBackingStore(WMesaFramebuffer pwfb)
{
if (pwfb->hbmDIB) {
SelectObject(pwfb->dib_hDC, pwfb->hOldBitmap);
diff --git a/src/mesa/drivers/windows/gdi/wmesadef.h b/src/mesa/drivers/windows/gdi/wmesadef.h
index a73609b007a..32289ebc700 100644
--- a/src/mesa/drivers/windows/gdi/wmesadef.h
+++ b/src/mesa/drivers/windows/gdi/wmesadef.h
@@ -3,7 +3,7 @@
#ifdef __MINGW32__
#include <windows.h>
#endif
-#include "context.h"
+#include "main/context.h"
/**
diff --git a/src/mesa/main/api_arrayelt.c b/src/mesa/main/api_arrayelt.c
index b429e2627e3..f88da845853 100644
--- a/src/mesa/main/api_arrayelt.c
+++ b/src/mesa/main/api_arrayelt.c
@@ -175,31 +175,31 @@ static int FogCoordFuncs[NUM_TYPES];
/* GL_BYTE attributes */
-static void
+static void GLAPIENTRY
VertexAttrib1NbvNV(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0])));
}
-static void
+static void GLAPIENTRY
VertexAttrib1bvNV(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, (GLfloat)v[0]));
}
-static void
+static void GLAPIENTRY
VertexAttrib2NbvNV(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1])));
}
-static void
+static void GLAPIENTRY
VertexAttrib2bvNV(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1]));
}
-static void
+static void GLAPIENTRY
VertexAttrib3NbvNV(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]),
@@ -207,13 +207,13 @@ VertexAttrib3NbvNV(GLuint index, const GLbyte *v)
BYTE_TO_FLOAT(v[2])));
}
-static void
+static void GLAPIENTRY
VertexAttrib3bvNV(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2]));
}
-static void
+static void GLAPIENTRY
VertexAttrib4NbvNV(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]),
@@ -222,7 +222,7 @@ VertexAttrib4NbvNV(GLuint index, const GLbyte *v)
BYTE_TO_FLOAT(v[3])));
}
-static void
+static void GLAPIENTRY
VertexAttrib4bvNV(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3]));
@@ -230,46 +230,46 @@ VertexAttrib4bvNV(GLuint index, const GLbyte *v)
/* GL_UNSIGNED_BYTE attributes */
-static void
+static void GLAPIENTRY
VertexAttrib1NubvNV(GLuint index, const GLubyte *v)
{
CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0])));
}
-static void
+static void GLAPIENTRY
VertexAttrib1ubvNV(GLuint index, const GLubyte *v)
{
CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, (GLfloat)v[0]));
}
-static void
+static void GLAPIENTRY
VertexAttrib2NubvNV(GLuint index, const GLubyte *v)
{
CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0]),
UBYTE_TO_FLOAT(v[1])));
}
-static void
+static void GLAPIENTRY
VertexAttrib2ubvNV(GLuint index, const GLubyte *v)
{
CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1]));
}
-static void
+static void GLAPIENTRY
VertexAttrib3NubvNV(GLuint index, const GLubyte *v)
{
CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0]),
UBYTE_TO_FLOAT(v[1]),
UBYTE_TO_FLOAT(v[2])));
}
-static void
+static void GLAPIENTRY
VertexAttrib3ubvNV(GLuint index, const GLubyte *v)
{
CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0],
(GLfloat)v[1], (GLfloat)v[2]));
}
-static void
+static void GLAPIENTRY
VertexAttrib4NubvNV(GLuint index, const GLubyte *v)
{
CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0]),
@@ -278,7 +278,7 @@ VertexAttrib4NubvNV(GLuint index, const GLubyte *v)
UBYTE_TO_FLOAT(v[3])));
}
-static void
+static void GLAPIENTRY
VertexAttrib4ubvNV(GLuint index, const GLubyte *v)
{
CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0],
@@ -288,32 +288,32 @@ VertexAttrib4ubvNV(GLuint index, const GLubyte *v)
/* GL_SHORT attributes */
-static void
+static void GLAPIENTRY
VertexAttrib1NsvNV(GLuint index, const GLshort *v)
{
CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0])));
}
-static void
+static void GLAPIENTRY
VertexAttrib1svNV(GLuint index, const GLshort *v)
{
CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, (GLfloat)v[0]));
}
-static void
+static void GLAPIENTRY
VertexAttrib2NsvNV(GLuint index, const GLshort *v)
{
CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0]),
SHORT_TO_FLOAT(v[1])));
}
-static void
+static void GLAPIENTRY
VertexAttrib2svNV(GLuint index, const GLshort *v)
{
CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1]));
}
-static void
+static void GLAPIENTRY
VertexAttrib3NsvNV(GLuint index, const GLshort *v)
{
CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0]),
@@ -321,14 +321,14 @@ VertexAttrib3NsvNV(GLuint index, const GLshort *v)
SHORT_TO_FLOAT(v[2])));
}
-static void
+static void GLAPIENTRY
VertexAttrib3svNV(GLuint index, const GLshort *v)
{
CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1],
(GLfloat)v[2]));
}
-static void
+static void GLAPIENTRY
VertexAttrib4NsvNV(GLuint index, const GLshort *v)
{
CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0]),
@@ -337,7 +337,7 @@ VertexAttrib4NsvNV(GLuint index, const GLshort *v)
SHORT_TO_FLOAT(v[3])));
}
-static void
+static void GLAPIENTRY
VertexAttrib4svNV(GLuint index, const GLshort *v)
{
CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1],
@@ -346,33 +346,33 @@ VertexAttrib4svNV(GLuint index, const GLshort *v)
/* GL_UNSIGNED_SHORT attributes */
-static void
+static void GLAPIENTRY
VertexAttrib1NusvNV(GLuint index, const GLushort *v)
{
CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0])));
}
-static void
+static void GLAPIENTRY
VertexAttrib1usvNV(GLuint index, const GLushort *v)
{
CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, (GLfloat)v[0]));
}
-static void
+static void GLAPIENTRY
VertexAttrib2NusvNV(GLuint index, const GLushort *v)
{
CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]),
USHORT_TO_FLOAT(v[1])));
}
-static void
+static void GLAPIENTRY
VertexAttrib2usvNV(GLuint index, const GLushort *v)
{
CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0],
(GLfloat)v[1]));
}
-static void
+static void GLAPIENTRY
VertexAttrib3NusvNV(GLuint index, const GLushort *v)
{
CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]),
@@ -380,14 +380,14 @@ VertexAttrib3NusvNV(GLuint index, const GLushort *v)
USHORT_TO_FLOAT(v[2])));
}
-static void
+static void GLAPIENTRY
VertexAttrib3usvNV(GLuint index, const GLushort *v)
{
CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1],
(GLfloat)v[2]));
}
-static void
+static void GLAPIENTRY
VertexAttrib4NusvNV(GLuint index, const GLushort *v)
{
CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]),
@@ -396,7 +396,7 @@ VertexAttrib4NusvNV(GLuint index, const GLushort *v)
USHORT_TO_FLOAT(v[3])));
}
-static void
+static void GLAPIENTRY
VertexAttrib4usvNV(GLuint index, const GLushort *v)
{
CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1],
@@ -405,32 +405,32 @@ VertexAttrib4usvNV(GLuint index, const GLushort *v)
/* GL_INT attributes */
-static void
+static void GLAPIENTRY
VertexAttrib1NivNV(GLuint index, const GLint *v)
{
CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0])));
}
-static void
+static void GLAPIENTRY
VertexAttrib1ivNV(GLuint index, const GLint *v)
{
CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, (GLfloat)v[0]));
}
-static void
+static void GLAPIENTRY
VertexAttrib2NivNV(GLuint index, const GLint *v)
{
CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]),
INT_TO_FLOAT(v[1])));
}
-static void
+static void GLAPIENTRY
VertexAttrib2ivNV(GLuint index, const GLint *v)
{
CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1]));
}
-static void
+static void GLAPIENTRY
VertexAttrib3NivNV(GLuint index, const GLint *v)
{
CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]),
@@ -438,14 +438,14 @@ VertexAttrib3NivNV(GLuint index, const GLint *v)
INT_TO_FLOAT(v[2])));
}
-static void
+static void GLAPIENTRY
VertexAttrib3ivNV(GLuint index, const GLint *v)
{
CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1],
(GLfloat)v[2]));
}
-static void
+static void GLAPIENTRY
VertexAttrib4NivNV(GLuint index, const GLint *v)
{
CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]),
@@ -454,7 +454,7 @@ VertexAttrib4NivNV(GLuint index, const GLint *v)
INT_TO_FLOAT(v[3])));
}
-static void
+static void GLAPIENTRY
VertexAttrib4ivNV(GLuint index, const GLint *v)
{
CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1],
@@ -463,33 +463,33 @@ VertexAttrib4ivNV(GLuint index, const GLint *v)
/* GL_UNSIGNED_INT attributes */
-static void
+static void GLAPIENTRY
VertexAttrib1NuivNV(GLuint index, const GLuint *v)
{
CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0])));
}
-static void
+static void GLAPIENTRY
VertexAttrib1uivNV(GLuint index, const GLuint *v)
{
CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, (GLfloat)v[0]));
}
-static void
+static void GLAPIENTRY
VertexAttrib2NuivNV(GLuint index, const GLuint *v)
{
CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]),
UINT_TO_FLOAT(v[1])));
}
-static void
+static void GLAPIENTRY
VertexAttrib2uivNV(GLuint index, const GLuint *v)
{
CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0],
(GLfloat)v[1]));
}
-static void
+static void GLAPIENTRY
VertexAttrib3NuivNV(GLuint index, const GLuint *v)
{
CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]),
@@ -497,14 +497,14 @@ VertexAttrib3NuivNV(GLuint index, const GLuint *v)
UINT_TO_FLOAT(v[2])));
}
-static void
+static void GLAPIENTRY
VertexAttrib3uivNV(GLuint index, const GLuint *v)
{
CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1],
(GLfloat)v[2]));
}
-static void
+static void GLAPIENTRY
VertexAttrib4NuivNV(GLuint index, const GLuint *v)
{
CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]),
@@ -513,7 +513,7 @@ VertexAttrib4NuivNV(GLuint index, const GLuint *v)
UINT_TO_FLOAT(v[3])));
}
-static void
+static void GLAPIENTRY
VertexAttrib4uivNV(GLuint index, const GLuint *v)
{
CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1],
@@ -522,25 +522,25 @@ VertexAttrib4uivNV(GLuint index, const GLuint *v)
/* GL_FLOAT attributes */
-static void
+static void GLAPIENTRY
VertexAttrib1fvNV(GLuint index, const GLfloat *v)
{
CALL_VertexAttrib1fvNV(GET_DISPATCH(), (index, v));
}
-static void
+static void GLAPIENTRY
VertexAttrib2fvNV(GLuint index, const GLfloat *v)
{
CALL_VertexAttrib2fvNV(GET_DISPATCH(), (index, v));
}
-static void
+static void GLAPIENTRY
VertexAttrib3fvNV(GLuint index, const GLfloat *v)
{
CALL_VertexAttrib3fvNV(GET_DISPATCH(), (index, v));
}
-static void
+static void GLAPIENTRY
VertexAttrib4fvNV(GLuint index, const GLfloat *v)
{
CALL_VertexAttrib4fvNV(GET_DISPATCH(), (index, v));
@@ -548,25 +548,25 @@ VertexAttrib4fvNV(GLuint index, const GLfloat *v)
/* GL_DOUBLE attributes */
-static void
+static void GLAPIENTRY
VertexAttrib1dvNV(GLuint index, const GLdouble *v)
{
CALL_VertexAttrib1dvNV(GET_DISPATCH(), (index, v));
}
-static void
+static void GLAPIENTRY
VertexAttrib2dvNV(GLuint index, const GLdouble *v)
{
CALL_VertexAttrib2dvNV(GET_DISPATCH(), (index, v));
}
-static void
+static void GLAPIENTRY
VertexAttrib3dvNV(GLuint index, const GLdouble *v)
{
CALL_VertexAttrib3dvNV(GET_DISPATCH(), (index, v));
}
-static void
+static void GLAPIENTRY
VertexAttrib4dvNV(GLuint index, const GLdouble *v)
{
CALL_VertexAttrib4dvNV(GET_DISPATCH(), (index, v));
@@ -680,31 +680,31 @@ static attrib_func AttribFuncsNV[2][4][NUM_TYPES] = {
/* GL_BYTE attributes */
-static void
+static void GLAPIENTRY
VertexAttrib1NbvARB(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0])));
}
-static void
+static void GLAPIENTRY
VertexAttrib1bvARB(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, (GLfloat)v[0]));
}
-static void
+static void GLAPIENTRY
VertexAttrib2NbvARB(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1])));
}
-static void
+static void GLAPIENTRY
VertexAttrib2bvARB(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1]));
}
-static void
+static void GLAPIENTRY
VertexAttrib3NbvARB(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]),
@@ -712,13 +712,13 @@ VertexAttrib3NbvARB(GLuint index, const GLbyte *v)
BYTE_TO_FLOAT(v[2])));
}
-static void
+static void GLAPIENTRY
VertexAttrib3bvARB(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2]));
}
-static void
+static void GLAPIENTRY
VertexAttrib4NbvARB(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]),
@@ -727,7 +727,7 @@ VertexAttrib4NbvARB(GLuint index, const GLbyte *v)
BYTE_TO_FLOAT(v[3])));
}
-static void
+static void GLAPIENTRY
VertexAttrib4bvARB(GLuint index, const GLbyte *v)
{
CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3]));
@@ -735,19 +735,19 @@ VertexAttrib4bvARB(GLuint index, const GLbyte *v)
/* GL_UNSIGNED_BYTE attributes */
-static void
+static void GLAPIENTRY
VertexAttrib1NubvARB(GLuint index, const GLubyte *v)
{
CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0])));
}
-static void
+static void GLAPIENTRY
VertexAttrib1ubvARB(GLuint index, const GLubyte *v)
{
CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, (GLfloat)v[0]));
}
-static void
+static void GLAPIENTRY
VertexAttrib2NubvARB(GLuint index, const GLubyte *v)
{
CALL_VertexAttrib2fARB(GET_DISPATCH(), (index,
@@ -755,14 +755,14 @@ VertexAttrib2NubvARB(GLuint index, const GLubyte *v)
UBYTE_TO_FLOAT(v[1])));
}
-static void
+static void GLAPIENTRY
VertexAttrib2ubvARB(GLuint index, const GLubyte *v)
{
CALL_VertexAttrib2fARB(GET_DISPATCH(), (index,
(GLfloat)v[0], (GLfloat)v[1]));
}
-static void
+static void GLAPIENTRY
VertexAttrib3NubvARB(GLuint index, const GLubyte *v)
{
CALL_VertexAttrib3fARB(GET_DISPATCH(), (index,
@@ -770,7 +770,7 @@ VertexAttrib3NubvARB(GLuint index, const GLubyte *v)
UBYTE_TO_FLOAT(v[1]),
UBYTE_TO_FLOAT(v[2])));
}
-static void
+static void GLAPIENTRY
VertexAttrib3ubvARB(GLuint index, const GLubyte *v)
{
CALL_VertexAttrib3fARB(GET_DISPATCH(), (index,
@@ -779,7 +779,7 @@ VertexAttrib3ubvARB(GLuint index, const GLubyte *v)
(GLfloat)v[2]));
}
-static void
+static void GLAPIENTRY
VertexAttrib4NubvARB(GLuint index, const GLubyte *v)
{
CALL_VertexAttrib4fARB(GET_DISPATCH(),
@@ -790,7 +790,7 @@ VertexAttrib4NubvARB(GLuint index, const GLubyte *v)
UBYTE_TO_FLOAT(v[3])));
}
-static void
+static void GLAPIENTRY
VertexAttrib4ubvARB(GLuint index, const GLubyte *v)
{
CALL_VertexAttrib4fARB(GET_DISPATCH(),
@@ -801,19 +801,19 @@ VertexAttrib4ubvARB(GLuint index, const GLubyte *v)
/* GL_SHORT attributes */
-static void
+static void GLAPIENTRY
VertexAttrib1NsvARB(GLuint index, const GLshort *v)
{
CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0])));
}
-static void
+static void GLAPIENTRY
VertexAttrib1svARB(GLuint index, const GLshort *v)
{
CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, (GLfloat)v[0]));
}
-static void
+static void GLAPIENTRY
VertexAttrib2NsvARB(GLuint index, const GLshort *v)
{
CALL_VertexAttrib2fARB(GET_DISPATCH(),
@@ -821,14 +821,14 @@ VertexAttrib2NsvARB(GLuint index, const GLshort *v)
SHORT_TO_FLOAT(v[1])));
}
-static void
+static void GLAPIENTRY
VertexAttrib2svARB(GLuint index, const GLshort *v)
{
CALL_VertexAttrib2fARB(GET_DISPATCH(),
(index, (GLfloat)v[0], (GLfloat)v[1]));
}
-static void
+static void GLAPIENTRY
VertexAttrib3NsvARB(GLuint index, const GLshort *v)
{
CALL_VertexAttrib3fARB(GET_DISPATCH(),
@@ -838,7 +838,7 @@ VertexAttrib3NsvARB(GLuint index, const GLshort *v)
SHORT_TO_FLOAT(v[2])));
}
-static void
+static void GLAPIENTRY
VertexAttrib3svARB(GLuint index, const GLshort *v)
{
CALL_VertexAttrib3fARB(GET_DISPATCH(),
@@ -846,7 +846,7 @@ VertexAttrib3svARB(GLuint index, const GLshort *v)
(GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2]));
}
-static void
+static void GLAPIENTRY
VertexAttrib4NsvARB(GLuint index, const GLshort *v)
{
CALL_VertexAttrib4fARB(GET_DISPATCH(),
@@ -857,7 +857,7 @@ VertexAttrib4NsvARB(GLuint index, const GLshort *v)
SHORT_TO_FLOAT(v[3])));
}
-static void
+static void GLAPIENTRY
VertexAttrib4svARB(GLuint index, const GLshort *v)
{
CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1],
@@ -866,33 +866,33 @@ VertexAttrib4svARB(GLuint index, const GLshort *v)
/* GL_UNSIGNED_SHORT attributes */
-static void
+static void GLAPIENTRY
VertexAttrib1NusvARB(GLuint index, const GLushort *v)
{
CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0])));
}
-static void
+static void GLAPIENTRY
VertexAttrib1usvARB(GLuint index, const GLushort *v)
{
CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, (GLfloat)v[0]));
}
-static void
+static void GLAPIENTRY
VertexAttrib2NusvARB(GLuint index, const GLushort *v)
{
CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]),
USHORT_TO_FLOAT(v[1])));
}
-static void
+static void GLAPIENTRY
VertexAttrib2usvARB(GLuint index, const GLushort *v)
{
CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0],
(GLfloat)v[1]));
}
-static void
+static void GLAPIENTRY
VertexAttrib3NusvARB(GLuint index, const GLushort *v)
{
CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]),
@@ -900,14 +900,14 @@ VertexAttrib3NusvARB(GLuint index, const GLushort *v)
USHORT_TO_FLOAT(v[2])));
}
-static void
+static void GLAPIENTRY
VertexAttrib3usvARB(GLuint index, const GLushort *v)
{
CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, (GLfloat)v[0],
(GLfloat)v[1], (GLfloat)v[2]));
}
-static void
+static void GLAPIENTRY
VertexAttrib4NusvARB(GLuint index, const GLushort *v)
{
CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]),
@@ -916,7 +916,7 @@ VertexAttrib4NusvARB(GLuint index, const GLushort *v)
USHORT_TO_FLOAT(v[3])));
}
-static void
+static void GLAPIENTRY
VertexAttrib4usvARB(GLuint index, const GLushort *v)
{
CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3]));
@@ -924,33 +924,33 @@ VertexAttrib4usvARB(GLuint index, const GLushort *v)
/* GL_INT attributes */
-static void
+static void GLAPIENTRY
VertexAttrib1NivARB(GLuint index, const GLint *v)
{
CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0])));
}
-static void
+static void GLAPIENTRY
VertexAttrib1ivARB(GLuint index, const GLint *v)
{
CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, (GLfloat)v[0]));
}
-static void
+static void GLAPIENTRY
VertexAttrib2NivARB(GLuint index, const GLint *v)
{
CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]),
INT_TO_FLOAT(v[1])));
}
-static void
+static void GLAPIENTRY
VertexAttrib2ivARB(GLuint index, const GLint *v)
{
CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0],
(GLfloat)v[1]));
}
-static void
+static void GLAPIENTRY
VertexAttrib3NivARB(GLuint index, const GLint *v)
{
CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]),
@@ -958,14 +958,14 @@ VertexAttrib3NivARB(GLuint index, const GLint *v)
INT_TO_FLOAT(v[2])));
}
-static void
+static void GLAPIENTRY
VertexAttrib3ivARB(GLuint index, const GLint *v)
{
CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, (GLfloat)v[0],
(GLfloat)v[1], (GLfloat)v[2]));
}
-static void
+static void GLAPIENTRY
VertexAttrib4NivARB(GLuint index, const GLint *v)
{
CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]),
@@ -974,7 +974,7 @@ VertexAttrib4NivARB(GLuint index, const GLint *v)
INT_TO_FLOAT(v[3])));
}
-static void
+static void GLAPIENTRY
VertexAttrib4ivARB(GLuint index, const GLint *v)
{
CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1],
@@ -983,33 +983,33 @@ VertexAttrib4ivARB(GLuint index, const GLint *v)
/* GL_UNSIGNED_INT attributes */
-static void
+static void GLAPIENTRY
VertexAttrib1NuivARB(GLuint index, const GLuint *v)
{
CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0])));
}
-static void
+static void GLAPIENTRY
VertexAttrib1uivARB(GLuint index, const GLuint *v)
{
CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, (GLfloat)v[0]));
}
-static void
+static void GLAPIENTRY
VertexAttrib2NuivARB(GLuint index, const GLuint *v)
{
CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]),
UINT_TO_FLOAT(v[1])));
}
-static void
+static void GLAPIENTRY
VertexAttrib2uivARB(GLuint index, const GLuint *v)
{
CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0],
(GLfloat)v[1]));
}
-static void
+static void GLAPIENTRY
VertexAttrib3NuivARB(GLuint index, const GLuint *v)
{
CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]),
@@ -1017,14 +1017,14 @@ VertexAttrib3NuivARB(GLuint index, const GLuint *v)
UINT_TO_FLOAT(v[2])));
}
-static void
+static void GLAPIENTRY
VertexAttrib3uivARB(GLuint index, const GLuint *v)
{
CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, (GLfloat)v[0],
(GLfloat)v[1], (GLfloat)v[2]));
}
-static void
+static void GLAPIENTRY
VertexAttrib4NuivARB(GLuint index, const GLuint *v)
{
CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]),
@@ -1033,7 +1033,7 @@ VertexAttrib4NuivARB(GLuint index, const GLuint *v)
UINT_TO_FLOAT(v[3])));
}
-static void
+static void GLAPIENTRY
VertexAttrib4uivARB(GLuint index, const GLuint *v)
{
CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1],
@@ -1042,25 +1042,25 @@ VertexAttrib4uivARB(GLuint index, const GLuint *v)
/* GL_FLOAT attributes */
-static void
+static void GLAPIENTRY
VertexAttrib1fvARB(GLuint index, const GLfloat *v)
{
CALL_VertexAttrib1fvARB(GET_DISPATCH(), (index, v));
}
-static void
+static void GLAPIENTRY
VertexAttrib2fvARB(GLuint index, const GLfloat *v)
{
CALL_VertexAttrib2fvARB(GET_DISPATCH(), (index, v));
}
-static void
+static void GLAPIENTRY
VertexAttrib3fvARB(GLuint index, const GLfloat *v)
{
CALL_VertexAttrib3fvARB(GET_DISPATCH(), (index, v));
}
-static void
+static void GLAPIENTRY
VertexAttrib4fvARB(GLuint index, const GLfloat *v)
{
CALL_VertexAttrib4fvARB(GET_DISPATCH(), (index, v));
@@ -1068,25 +1068,25 @@ VertexAttrib4fvARB(GLuint index, const GLfloat *v)
/* GL_DOUBLE attributes */
-static void
+static void GLAPIENTRY
VertexAttrib1dvARB(GLuint index, const GLdouble *v)
{
CALL_VertexAttrib1dvARB(GET_DISPATCH(), (index, v));
}
-static void
+static void GLAPIENTRY
VertexAttrib2dvARB(GLuint index, const GLdouble *v)
{
CALL_VertexAttrib2dvARB(GET_DISPATCH(), (index, v));
}
-static void
+static void GLAPIENTRY
VertexAttrib3dvARB(GLuint index, const GLdouble *v)
{
CALL_VertexAttrib3dvARB(GET_DISPATCH(), (index, v));
}
-static void
+static void GLAPIENTRY
VertexAttrib4dvARB(GLuint index, const GLdouble *v)
{
CALL_VertexAttrib4dvARB(GET_DISPATCH(), (index, v));
@@ -1096,50 +1096,50 @@ VertexAttrib4dvARB(GLuint index, const GLdouble *v)
/**
* Integer-valued attributes
*/
-static void
+static void GLAPIENTRY
VertexAttribI1bv(GLuint index, const GLbyte *v)
{
CALL_VertexAttribI1iEXT(GET_DISPATCH(), (index, v[0]));
}
-static void
+static void GLAPIENTRY
VertexAttribI2bv(GLuint index, const GLbyte *v)
{
CALL_VertexAttribI2iEXT(GET_DISPATCH(), (index, v[0], v[1]));
}
-static void
+static void GLAPIENTRY
VertexAttribI3bv(GLuint index, const GLbyte *v)
{
CALL_VertexAttribI3iEXT(GET_DISPATCH(), (index, v[0], v[1], v[2]));
}
-static void
+static void GLAPIENTRY
VertexAttribI4bv(GLuint index, const GLbyte *v)
{
CALL_VertexAttribI4bvEXT(GET_DISPATCH(), (index, v));
}
-static void
+static void GLAPIENTRY
VertexAttribI1ubv(GLuint index, const GLubyte *v)
{
CALL_VertexAttribI1uiEXT(GET_DISPATCH(), (index, v[0]));
}
-static void
+static void GLAPIENTRY
VertexAttribI2ubv(GLuint index, const GLubyte *v)
{
CALL_VertexAttribI2uiEXT(GET_DISPATCH(), (index, v[0], v[1]));
}
-static void
+static void GLAPIENTRY
VertexAttribI3ubv(GLuint index, const GLubyte *v)
{
CALL_VertexAttribI3uiEXT(GET_DISPATCH(), (index, v[0], v[1], v[2]));
}
-static void
+static void GLAPIENTRY
VertexAttribI4ubv(GLuint index, const GLubyte *v)
{
CALL_VertexAttribI4ubvEXT(GET_DISPATCH(), (index, v));
@@ -1147,50 +1147,50 @@ VertexAttribI4ubv(GLuint index, const GLubyte *v)
-static void
+static void GLAPIENTRY
VertexAttribI1sv(GLuint index, const GLshort *v)
{
CALL_VertexAttribI1iEXT(GET_DISPATCH(), (index, v[0]));
}
-static void
+static void GLAPIENTRY
VertexAttribI2sv(GLuint index, const GLshort *v)
{
CALL_VertexAttribI2iEXT(GET_DISPATCH(), (index, v[0], v[1]));
}
-static void
+static void GLAPIENTRY
VertexAttribI3sv(GLuint index, const GLshort *v)
{
CALL_VertexAttribI3iEXT(GET_DISPATCH(), (index, v[0], v[1], v[2]));
}
-static void
+static void GLAPIENTRY
VertexAttribI4sv(GLuint index, const GLshort *v)
{
CALL_VertexAttribI4svEXT(GET_DISPATCH(), (index, v));
}
-static void
+static void GLAPIENTRY
VertexAttribI1usv(GLuint index, const GLushort *v)
{
CALL_VertexAttribI1uiEXT(GET_DISPATCH(), (index, v[0]));
}
-static void
+static void GLAPIENTRY
VertexAttribI2usv(GLuint index, const GLushort *v)
{
CALL_VertexAttribI2uiEXT(GET_DISPATCH(), (index, v[0], v[1]));
}
-static void
+static void GLAPIENTRY
VertexAttribI3usv(GLuint index, const GLushort *v)
{
CALL_VertexAttribI3uiEXT(GET_DISPATCH(), (index, v[0], v[1], v[2]));
}
-static void
+static void GLAPIENTRY
VertexAttribI4usv(GLuint index, const GLushort *v)
{
CALL_VertexAttribI4usvEXT(GET_DISPATCH(), (index, v));
@@ -1198,50 +1198,50 @@ VertexAttribI4usv(GLuint index, const GLushort *v)
-static void
+static void GLAPIENTRY
VertexAttribI1iv(GLuint index, const GLint *v)
{
CALL_VertexAttribI1iEXT(GET_DISPATCH(), (index, v[0]));
}
-static void
+static void GLAPIENTRY
VertexAttribI2iv(GLuint index, const GLint *v)
{
CALL_VertexAttribI2iEXT(GET_DISPATCH(), (index, v[0], v[1]));
}
-static void
+static void GLAPIENTRY
VertexAttribI3iv(GLuint index, const GLint *v)
{
CALL_VertexAttribI3iEXT(GET_DISPATCH(), (index, v[0], v[1], v[2]));
}
-static void
+static void GLAPIENTRY
VertexAttribI4iv(GLuint index, const GLint *v)
{
CALL_VertexAttribI4ivEXT(GET_DISPATCH(), (index, v));
}
-static void
+static void GLAPIENTRY
VertexAttribI1uiv(GLuint index, const GLuint *v)
{
CALL_VertexAttribI1uiEXT(GET_DISPATCH(), (index, v[0]));
}
-static void
+static void GLAPIENTRY
VertexAttribI2uiv(GLuint index, const GLuint *v)
{
CALL_VertexAttribI2uiEXT(GET_DISPATCH(), (index, v[0], v[1]));
}
-static void
+static void GLAPIENTRY
VertexAttribI3uiv(GLuint index, const GLuint *v)
{
CALL_VertexAttribI3uiEXT(GET_DISPATCH(), (index, v[0], v[1], v[2]));
}
-static void
+static void GLAPIENTRY
VertexAttribI4uiv(GLuint index, const GLuint *v)
{
CALL_VertexAttribI4uivEXT(GET_DISPATCH(), (index, v));
diff --git a/src/mesa/main/api_exec.c b/src/mesa/main/api_exec.c
index 4da48936484..d0298df20cb 100644
--- a/src/mesa/main/api_exec.c
+++ b/src/mesa/main/api_exec.c
@@ -78,6 +78,9 @@
#include "polygon.h"
#include "queryobj.h"
#include "readpix.h"
+#if FEATURE_ARB_sampler_objects
+#include "samplerobj.h"
+#endif
#include "scissor.h"
#include "stencil.h"
#include "texenv.h"
@@ -691,6 +694,8 @@ _mesa_create_exec_table(void)
SET_FramebufferTextureFaceARB(exec, _mesa_FramebufferTextureFaceARB);
#endif
+ SET_ClampColorARB(exec, _mesa_ClampColorARB);
+
/* GL_EXT_texture_integer */
SET_ClearColorIiEXT(exec, _mesa_ClearColorIiEXT);
SET_ClearColorIuiEXT(exec, _mesa_ClearColorIuiEXT);
@@ -724,6 +729,13 @@ _mesa_create_exec_table(void)
/* GL_NV_texture_barrier */
SET_TextureBarrierNV(exec, _mesa_TextureBarrierNV);
+ /* GL_ARB_texture_buffer_object */
+ SET_TexBufferARB(exec, _mesa_TexBuffer);
+
+#if FEATURE_ARB_sampler_objects
+ _mesa_init_sampler_object_dispatch(exec);
+#endif
+
return exec;
}
diff --git a/src/mesa/main/arrayobj.c b/src/mesa/main/arrayobj.c
index 46010223370..4bfb2424004 100644
--- a/src/mesa/main/arrayobj.c
+++ b/src/mesa/main/arrayobj.c
@@ -41,6 +41,7 @@
#include "glheader.h"
#include "hash.h"
+#include "image.h"
#include "imports.h"
#include "context.h"
#include "mfeatures.h"
@@ -50,6 +51,7 @@
#include "arrayobj.h"
#include "macros.h"
#include "mtypes.h"
+#include "varray.h"
#include "main/dispatch.h"
@@ -206,6 +208,7 @@ init_array(struct gl_context *ctx,
array->Ptr = NULL;
array->Enabled = GL_FALSE;
array->Normalized = GL_FALSE;
+ array->_ElementSize = size * _mesa_sizeof_type(type);
#if FEATURE_ARB_vertex_buffer_object
/* Vertex array buffers */
_mesa_reference_buffer_object(ctx, &array->BufferObj,
@@ -280,44 +283,13 @@ remove_array_object( struct gl_context *ctx, struct gl_array_object *obj )
/**
- * Compute the index of the last array element that can be safely accessed
- * in a vertex array. We can really only do this when the array lives in
- * a VBO.
- * The array->_MaxElement field will be updated.
- * Later in glDrawArrays/Elements/etc we can do some bounds checking.
- */
-static void
-compute_max_element(struct gl_client_array *array)
-{
- if (array->BufferObj->Name) {
- /* Compute the max element we can access in the VBO without going
- * out of bounds.
- */
- array->_MaxElement = ((GLsizeiptrARB) array->BufferObj->Size
- - (GLsizeiptrARB) array->Ptr + array->StrideB
- - array->_ElementSize) / array->StrideB;
- if (0)
- printf("%s Object %u Size %u MaxElement %u\n",
- __FUNCTION__,
- array->BufferObj->Name,
- (GLuint) array->BufferObj->Size,
- array->_MaxElement);
- }
- else {
- /* user-space array, no idea how big it is */
- array->_MaxElement = 2 * 1000 * 1000 * 1000; /* just a big number */
- }
-}
-
-
-/**
* Helper for update_arrays().
* \return min(current min, array->_MaxElement).
*/
static GLuint
update_min(GLuint min, struct gl_client_array *array)
{
- compute_max_element(array);
+ _mesa_update_array_max_element(array);
if (array->Enabled)
return MIN2(min, array->_MaxElement);
else
@@ -497,7 +469,8 @@ _mesa_DeleteVertexArraysAPPLE(GLsizei n, const GLuint *ids)
* \param vboOnly Will arrays have to reside in VBOs?
*/
static void
-gen_vertex_arrays(struct gl_context *ctx, GLsizei n, GLuint *arrays, GLboolean vboOnly)
+gen_vertex_arrays(struct gl_context *ctx, GLsizei n, GLuint *arrays,
+ GLboolean vboOnly)
{
GLuint first;
GLint i;
diff --git a/src/mesa/main/atifragshader.c b/src/mesa/main/atifragshader.c
index 44097e1a266..c74c999f808 100644
--- a/src/mesa/main/atifragshader.c
+++ b/src/mesa/main/atifragshader.c
@@ -494,7 +494,7 @@ _mesa_PassTexCoordATI(GLuint dst, GLuint coord, GLenum swizzle)
}
}
- curProg->regsAssigned[curProg->cur_pass >> 1] |= 1 << (dst - GL_REG_0_ATI);
+ curProg->regsAssigned[curProg->cur_pass >> 1] |= 1 << (dst - GL_REG_0_ATI);
new_tex_inst(curProg);
/* add the instructions */
@@ -567,7 +567,7 @@ _mesa_SampleMapATI(GLuint dst, GLuint interp, GLenum swizzle)
}
}
- curProg->regsAssigned[curProg->cur_pass >> 1] |= 1 << (dst - GL_REG_0_ATI);
+ curProg->regsAssigned[curProg->cur_pass >> 1] |= 1 << (dst - GL_REG_0_ATI);
new_tex_inst(curProg);
/* add the instructions */
diff --git a/src/mesa/main/attrib.c b/src/mesa/main/attrib.c
index ae7f633b8d8..57310040235 100644
--- a/src/mesa/main/attrib.c
+++ b/src/mesa/main/attrib.c
@@ -770,6 +770,7 @@ pop_texture_group(struct gl_context *ctx, struct texture_state *texstate)
/* Restore texture object state for each target */
for (tgt = 0; tgt < NUM_TEXTURE_TARGETS; tgt++) {
const struct gl_texture_object *obj = NULL;
+ const struct gl_sampler_object *samp;
GLenum target;
obj = &texstate->SavedObj[u][tgt];
@@ -790,31 +791,35 @@ pop_texture_group(struct gl_context *ctx, struct texture_state *texstate)
!ctx->Extensions.MESA_texture_array) {
continue;
}
+ else if (obj->Target == GL_TEXTURE_BUFFER)
+ continue;
target = obj->Target;
_mesa_BindTexture(target, obj->Name);
- _mesa_TexParameterfv(target, GL_TEXTURE_BORDER_COLOR, obj->BorderColor.f);
+ samp = &obj->Sampler;
+
+ _mesa_TexParameterfv(target, GL_TEXTURE_BORDER_COLOR, samp->BorderColor.f);
+ _mesa_TexParameteri(target, GL_TEXTURE_WRAP_S, samp->WrapS);
+ _mesa_TexParameteri(target, GL_TEXTURE_WRAP_T, samp->WrapT);
+ _mesa_TexParameteri(target, GL_TEXTURE_WRAP_R, samp->WrapR);
+ _mesa_TexParameteri(target, GL_TEXTURE_MIN_FILTER, samp->MinFilter);
+ _mesa_TexParameteri(target, GL_TEXTURE_MAG_FILTER, samp->MagFilter);
+ _mesa_TexParameterf(target, GL_TEXTURE_MIN_LOD, samp->MinLod);
+ _mesa_TexParameterf(target, GL_TEXTURE_MAX_LOD, samp->MaxLod);
+ _mesa_TexParameterf(target, GL_TEXTURE_LOD_BIAS, samp->LodBias);
_mesa_TexParameterf(target, GL_TEXTURE_PRIORITY, obj->Priority);
- _mesa_TexParameteri(target, GL_TEXTURE_WRAP_S, obj->WrapS);
- _mesa_TexParameteri(target, GL_TEXTURE_WRAP_T, obj->WrapT);
- _mesa_TexParameteri(target, GL_TEXTURE_WRAP_R, obj->WrapR);
- _mesa_TexParameteri(target, GL_TEXTURE_MIN_FILTER, obj->MinFilter);
- _mesa_TexParameteri(target, GL_TEXTURE_MAG_FILTER, obj->MagFilter);
- _mesa_TexParameterf(target, GL_TEXTURE_MIN_LOD, obj->MinLod);
- _mesa_TexParameterf(target, GL_TEXTURE_MAX_LOD, obj->MaxLod);
- _mesa_TexParameterf(target, GL_TEXTURE_LOD_BIAS, obj->LodBias);
_mesa_TexParameteri(target, GL_TEXTURE_BASE_LEVEL, obj->BaseLevel);
if (target != GL_TEXTURE_RECTANGLE_ARB)
_mesa_TexParameteri(target, GL_TEXTURE_MAX_LEVEL, obj->MaxLevel);
if (ctx->Extensions.EXT_texture_filter_anisotropic) {
_mesa_TexParameterf(target, GL_TEXTURE_MAX_ANISOTROPY_EXT,
- obj->MaxAnisotropy);
+ samp->MaxAnisotropy);
}
if (ctx->Extensions.ARB_shadow_ambient) {
_mesa_TexParameterf(target, GL_TEXTURE_COMPARE_FAIL_VALUE_ARB,
- obj->CompareFailValue);
+ samp->CompareFailValue);
}
}
@@ -879,10 +884,10 @@ _mesa_PopAttrib(void)
color = (const struct gl_colorbuffer_attrib *) attr->data;
_mesa_ClearIndex((GLfloat) color->ClearIndex);
- _mesa_ClearColor(color->ClearColor[0],
- color->ClearColor[1],
- color->ClearColor[2],
- color->ClearColor[3]);
+ _mesa_ClearColor(color->ClearColorUnclamped[0],
+ color->ClearColorUnclamped[1],
+ color->ClearColorUnclamped[2],
+ color->ClearColorUnclamped[3]);
_mesa_IndexMask(color->IndexMask);
if (!ctx->Extensions.EXT_draw_buffers2) {
_mesa_ColorMask((GLboolean) (color->ColorMask[0][0] != 0),
@@ -930,7 +935,7 @@ _mesa_PopAttrib(void)
_mesa_DrawBuffer(color->DrawBuffer[0]);
}
_mesa_set_enable(ctx, GL_ALPHA_TEST, color->AlphaEnabled);
- _mesa_AlphaFunc(color->AlphaFunc, color->AlphaRef);
+ _mesa_AlphaFunc(color->AlphaFunc, color->AlphaRefUnclamped);
if (ctx->Color.BlendEnabled != color->BlendEnabled) {
if (ctx->Extensions.EXT_draw_buffers2) {
GLuint i;
@@ -976,16 +981,18 @@ _mesa_PopAttrib(void)
color->Blend[0].EquationA);
}
}
- _mesa_BlendColor(color->BlendColor[0],
- color->BlendColor[1],
- color->BlendColor[2],
- color->BlendColor[3]);
+ _mesa_BlendColor(color->BlendColorUnclamped[0],
+ color->BlendColorUnclamped[1],
+ color->BlendColorUnclamped[2],
+ color->BlendColorUnclamped[3]);
_mesa_LogicOp(color->LogicOp);
_mesa_set_enable(ctx, GL_COLOR_LOGIC_OP,
color->ColorLogicOpEnabled);
_mesa_set_enable(ctx, GL_INDEX_LOGIC_OP,
color->IndexLogicOpEnabled);
_mesa_set_enable(ctx, GL_DITHER, color->DitherFlag);
+ _mesa_ClampColorARB(GL_CLAMP_FRAGMENT_COLOR_ARB, color->ClampFragmentColor);
+ _mesa_ClampColorARB(GL_CLAMP_READ_COLOR_ARB, color->ClampReadColor);
}
break;
case GL_CURRENT_BIT:
@@ -1108,6 +1115,7 @@ _mesa_PopAttrib(void)
/* materials */
memcpy(&ctx->Light.Material, &light->Material,
sizeof(struct gl_material));
+ _mesa_ClampColorARB(GL_CLAMP_VERTEX_COLOR_ARB, light->ClampVertexColor);
}
break;
case GL_LINE_BIT:
diff --git a/src/mesa/main/blend.c b/src/mesa/main/blend.c
index c74a168036a..95c101c34ae 100644
--- a/src/mesa/main/blend.c
+++ b/src/mesa/main/blend.c
@@ -513,19 +513,24 @@ _mesa_BlendColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha )
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END(ctx);
- tmp[0] = CLAMP( red, 0.0F, 1.0F );
- tmp[1] = CLAMP( green, 0.0F, 1.0F );
- tmp[2] = CLAMP( blue, 0.0F, 1.0F );
- tmp[3] = CLAMP( alpha, 0.0F, 1.0F );
+ tmp[0] = red;
+ tmp[1] = green;
+ tmp[2] = blue;
+ tmp[3] = alpha;
- if (TEST_EQ_4V(tmp, ctx->Color.BlendColor))
+ if (TEST_EQ_4V(tmp, ctx->Color.BlendColorUnclamped))
return;
FLUSH_VERTICES(ctx, _NEW_COLOR);
- COPY_4FV( ctx->Color.BlendColor, tmp );
+ COPY_4FV( ctx->Color.BlendColorUnclamped, tmp );
+
+ ctx->Color.BlendColor[0] = CLAMP(tmp[0], 0.0F, 1.0F);
+ ctx->Color.BlendColor[1] = CLAMP(tmp[1], 0.0F, 1.0F);
+ ctx->Color.BlendColor[2] = CLAMP(tmp[2], 0.0F, 1.0F);
+ ctx->Color.BlendColor[3] = CLAMP(tmp[3], 0.0F, 1.0F);
if (ctx->Driver.BlendColor)
- (*ctx->Driver.BlendColor)(ctx, tmp);
+ (*ctx->Driver.BlendColor)(ctx, ctx->Color.BlendColor);
}
@@ -558,17 +563,16 @@ _mesa_AlphaFunc( GLenum func, GLclampf ref )
case GL_NOTEQUAL:
case GL_GEQUAL:
case GL_ALWAYS:
- ref = CLAMP(ref, 0.0F, 1.0F);
-
- if (ctx->Color.AlphaFunc == func && ctx->Color.AlphaRef == ref)
+ if (ctx->Color.AlphaFunc == func && ctx->Color.AlphaRefUnclamped == ref)
return; /* no change */
FLUSH_VERTICES(ctx, _NEW_COLOR);
ctx->Color.AlphaFunc = func;
- ctx->Color.AlphaRef = ref;
+ ctx->Color.AlphaRefUnclamped = ref;
+ ctx->Color.AlphaRef = CLAMP(ref, 0.0F, 1.0F);
if (ctx->Driver.AlphaFunc)
- ctx->Driver.AlphaFunc(ctx, func, ref);
+ ctx->Driver.AlphaFunc(ctx, func, ctx->Color.AlphaRef);
return;
default:
@@ -737,7 +741,7 @@ _mesa_ColorMaskIndexed( GLuint buf, GLboolean red, GLboolean green,
}
-extern void GLAPIENTRY
+void GLAPIENTRY
_mesa_ClampColorARB(GLenum target, GLenum clamp)
{
GET_CURRENT_CONTEXT(ctx);
@@ -751,12 +755,15 @@ _mesa_ClampColorARB(GLenum target, GLenum clamp)
switch (target) {
case GL_CLAMP_VERTEX_COLOR_ARB:
+ FLUSH_VERTICES(ctx, _NEW_LIGHT);
ctx->Light.ClampVertexColor = clamp;
break;
case GL_CLAMP_FRAGMENT_COLOR_ARB:
+ FLUSH_VERTICES(ctx, _NEW_FRAG_CLAMP);
ctx->Color.ClampFragmentColor = clamp;
break;
case GL_CLAMP_READ_COLOR_ARB:
+ FLUSH_VERTICES(ctx, _NEW_COLOR);
ctx->Color.ClampReadColor = clamp;
break;
default:
@@ -789,6 +796,7 @@ void _mesa_init_color( struct gl_context * ctx )
memset(ctx->Color.ColorMask, 0xff, sizeof(ctx->Color.ColorMask));
ctx->Color.ClearIndex = 0;
ASSIGN_4V( ctx->Color.ClearColor, 0, 0, 0, 0 );
+ ASSIGN_4V( ctx->Color.ClearColorUnclamped, 0, 0, 0, 0 );
ctx->Color.AlphaEnabled = GL_FALSE;
ctx->Color.AlphaFunc = GL_ALWAYS;
ctx->Color.AlphaRef = 0;
@@ -802,6 +810,7 @@ void _mesa_init_color( struct gl_context * ctx )
ctx->Color.Blend[i].EquationA = GL_FUNC_ADD;
}
ASSIGN_4V( ctx->Color.BlendColor, 0.0, 0.0, 0.0, 0.0 );
+ ASSIGN_4V( ctx->Color.BlendColorUnclamped, 0.0, 0.0, 0.0, 0.0 );
ctx->Color.IndexLogicOpEnabled = GL_FALSE;
ctx->Color.ColorLogicOpEnabled = GL_FALSE;
ctx->Color._LogicOpEnabled = GL_FALSE;
@@ -816,7 +825,9 @@ void _mesa_init_color( struct gl_context * ctx )
}
ctx->Color.ClampFragmentColor = GL_FIXED_ONLY_ARB;
+ ctx->Color._ClampFragmentColor = GL_TRUE;
ctx->Color.ClampReadColor = GL_FIXED_ONLY_ARB;
+ ctx->Color._ClampReadColor = GL_TRUE;
}
/*@}*/
diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c
index 3343bb2f40e..78105883c97 100644
--- a/src/mesa/main/bufferobj.c
+++ b/src/mesa/main/bufferobj.c
@@ -93,6 +93,11 @@ get_buffer_target(struct gl_context *ctx, GLenum target)
}
break;
#endif
+ case GL_TEXTURE_BUFFER:
+ if (ctx->Extensions.ARB_texture_buffer_object) {
+ return &ctx->Texture.BufferObject;
+ }
+ break;
default:
return NULL;
}
@@ -216,7 +221,8 @@ _mesa_new_buffer_object( struct gl_context *ctx, GLuint name, GLenum target )
* Default callback for the \c dd_function_table::DeleteBuffer() hook.
*/
static void
-_mesa_delete_buffer_object( struct gl_context *ctx, struct gl_buffer_object *bufObj )
+_mesa_delete_buffer_object(struct gl_context *ctx,
+ struct gl_buffer_object *bufObj)
{
(void) ctx;
@@ -414,7 +420,8 @@ _mesa_buffer_subdata( struct gl_context *ctx, GLenum target, GLintptrARB offset,
* \sa glBufferGetSubDataARB, dd_function_table::GetBufferSubData.
*/
static void
-_mesa_buffer_get_subdata( struct gl_context *ctx, GLenum target, GLintptrARB offset,
+_mesa_buffer_get_subdata( struct gl_context *ctx,
+ GLenum target, GLintptrARB offset,
GLsizeiptrARB size, GLvoid * data,
struct gl_buffer_object * bufObj )
{
@@ -1536,7 +1543,7 @@ _mesa_FlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length)
#if FEATURE_APPLE_object_purgeable
static GLenum
-_mesa_BufferObjectPurgeable(struct gl_context *ctx, GLuint name, GLenum option)
+buffer_object_purgeable(struct gl_context *ctx, GLuint name, GLenum option)
{
struct gl_buffer_object *bufObj;
GLenum retval;
@@ -1569,7 +1576,7 @@ _mesa_BufferObjectPurgeable(struct gl_context *ctx, GLuint name, GLenum option)
static GLenum
-_mesa_RenderObjectPurgeable(struct gl_context *ctx, GLuint name, GLenum option)
+renderbuffer_purgeable(struct gl_context *ctx, GLuint name, GLenum option)
{
struct gl_renderbuffer *bufObj;
GLenum retval;
@@ -1598,7 +1605,7 @@ _mesa_RenderObjectPurgeable(struct gl_context *ctx, GLuint name, GLenum option)
static GLenum
-_mesa_TextureObjectPurgeable(struct gl_context *ctx, GLuint name, GLenum option)
+texture_object_purgeable(struct gl_context *ctx, GLuint name, GLenum option)
{
struct gl_texture_object *bufObj;
GLenum retval;
@@ -1654,13 +1661,13 @@ _mesa_ObjectPurgeableAPPLE(GLenum objectType, GLuint name, GLenum option)
switch (objectType) {
case GL_TEXTURE:
- retval = _mesa_TextureObjectPurgeable (ctx, name, option);
+ retval = texture_object_purgeable(ctx, name, option);
break;
case GL_RENDERBUFFER_EXT:
- retval = _mesa_RenderObjectPurgeable (ctx, name, option);
+ retval = renderbuffer_purgeable(ctx, name, option);
break;
case GL_BUFFER_OBJECT_APPLE:
- retval = _mesa_BufferObjectPurgeable (ctx, name, option);
+ retval = buffer_object_purgeable(ctx, name, option);
break;
default:
_mesa_error(ctx, GL_INVALID_ENUM,
@@ -1679,7 +1686,7 @@ _mesa_ObjectPurgeableAPPLE(GLenum objectType, GLuint name, GLenum option)
static GLenum
-_mesa_BufferObjectUnpurgeable(struct gl_context *ctx, GLuint name, GLenum option)
+buffer_object_unpurgeable(struct gl_context *ctx, GLuint name, GLenum option)
{
struct gl_buffer_object *bufObj;
GLenum retval;
@@ -1709,7 +1716,7 @@ _mesa_BufferObjectUnpurgeable(struct gl_context *ctx, GLuint name, GLenum option
static GLenum
-_mesa_RenderObjectUnpurgeable(struct gl_context *ctx, GLuint name, GLenum option)
+renderbuffer_unpurgeable(struct gl_context *ctx, GLuint name, GLenum option)
{
struct gl_renderbuffer *bufObj;
GLenum retval;
@@ -1739,7 +1746,7 @@ _mesa_RenderObjectUnpurgeable(struct gl_context *ctx, GLuint name, GLenum option
static GLenum
-_mesa_TextureObjectUnpurgeable(struct gl_context *ctx, GLuint name, GLenum option)
+texture_object_unpurgeable(struct gl_context *ctx, GLuint name, GLenum option)
{
struct gl_texture_object *bufObj;
GLenum retval;
@@ -1794,11 +1801,11 @@ _mesa_ObjectUnpurgeableAPPLE(GLenum objectType, GLuint name, GLenum option)
switch (objectType) {
case GL_BUFFER_OBJECT_APPLE:
- return _mesa_BufferObjectUnpurgeable(ctx, name, option);
+ return buffer_object_unpurgeable(ctx, name, option);
case GL_TEXTURE:
- return _mesa_TextureObjectUnpurgeable(ctx, name, option);
+ return texture_object_unpurgeable(ctx, name, option);
case GL_RENDERBUFFER_EXT:
- return _mesa_RenderObjectUnpurgeable(ctx, name, option);
+ return renderbuffer_unpurgeable(ctx, name, option);
default:
_mesa_error(ctx, GL_INVALID_ENUM,
"glObjectUnpurgeable(name = 0x%x) invalid type: %d",
@@ -1809,12 +1816,10 @@ _mesa_ObjectUnpurgeableAPPLE(GLenum objectType, GLuint name, GLenum option)
static void
-_mesa_GetBufferObjectParameterivAPPLE(struct gl_context *ctx, GLuint name,
- GLenum pname, GLint* params)
+get_buffer_object_parameteriv(struct gl_context *ctx, GLuint name,
+ GLenum pname, GLint *params)
{
- struct gl_buffer_object *bufObj;
-
- bufObj = _mesa_lookup_bufferobj(ctx, name);
+ struct gl_buffer_object *bufObj = _mesa_lookup_bufferobj(ctx, name);
if (!bufObj) {
_mesa_error(ctx, GL_INVALID_VALUE,
"glGetObjectParameteriv(name = 0x%x) invalid object", name);
@@ -1835,13 +1840,11 @@ _mesa_GetBufferObjectParameterivAPPLE(struct gl_context *ctx, GLuint name,
static void
-_mesa_GetRenderObjectParameterivAPPLE(struct gl_context *ctx, GLuint name,
- GLenum pname, GLint* params)
+get_renderbuffer_parameteriv(struct gl_context *ctx, GLuint name,
+ GLenum pname, GLint *params)
{
- struct gl_renderbuffer *bufObj;
-
- bufObj = _mesa_lookup_renderbuffer(ctx, name);
- if (!bufObj) {
+ struct gl_renderbuffer *rb = _mesa_lookup_renderbuffer(ctx, name);
+ if (!rb) {
_mesa_error(ctx, GL_INVALID_VALUE,
"glObjectUnpurgeable(name = 0x%x)", name);
return;
@@ -1849,7 +1852,7 @@ _mesa_GetRenderObjectParameterivAPPLE(struct gl_context *ctx, GLuint name,
switch (pname) {
case GL_PURGEABLE_APPLE:
- *params = bufObj->Purgeable;
+ *params = rb->Purgeable;
break;
default:
_mesa_error(ctx, GL_INVALID_ENUM,
@@ -1861,13 +1864,11 @@ _mesa_GetRenderObjectParameterivAPPLE(struct gl_context *ctx, GLuint name,
static void
-_mesa_GetTextureObjectParameterivAPPLE(struct gl_context *ctx, GLuint name,
- GLenum pname, GLint* params)
+get_texture_object_parameteriv(struct gl_context *ctx, GLuint name,
+ GLenum pname, GLint *params)
{
- struct gl_texture_object *bufObj;
-
- bufObj = _mesa_lookup_texture(ctx, name);
- if (!bufObj) {
+ struct gl_texture_object *texObj = _mesa_lookup_texture(ctx, name);
+ if (!texObj) {
_mesa_error(ctx, GL_INVALID_VALUE,
"glObjectUnpurgeable(name = 0x%x)", name);
return;
@@ -1875,7 +1876,7 @@ _mesa_GetTextureObjectParameterivAPPLE(struct gl_context *ctx, GLuint name,
switch (pname) {
case GL_PURGEABLE_APPLE:
- *params = bufObj->Purgeable;
+ *params = texObj->Purgeable;
break;
default:
_mesa_error(ctx, GL_INVALID_ENUM,
@@ -1888,7 +1889,7 @@ _mesa_GetTextureObjectParameterivAPPLE(struct gl_context *ctx, GLuint name,
void GLAPIENTRY
_mesa_GetObjectParameterivAPPLE(GLenum objectType, GLuint name, GLenum pname,
- GLint* params)
+ GLint *params)
{
GET_CURRENT_CONTEXT(ctx);
@@ -1900,13 +1901,13 @@ _mesa_GetObjectParameterivAPPLE(GLenum objectType, GLuint name, GLenum pname,
switch (objectType) {
case GL_TEXTURE:
- _mesa_GetTextureObjectParameterivAPPLE (ctx, name, pname, params);
+ get_texture_object_parameteriv(ctx, name, pname, params);
break;
case GL_BUFFER_OBJECT_APPLE:
- _mesa_GetBufferObjectParameterivAPPLE (ctx, name, pname, params);
+ get_buffer_object_parameteriv(ctx, name, pname, params);
break;
case GL_RENDERBUFFER_EXT:
- _mesa_GetRenderObjectParameterivAPPLE (ctx, name, pname, params);
+ get_renderbuffer_parameteriv(ctx, name, pname, params);
break;
default:
_mesa_error(ctx, GL_INVALID_ENUM,
diff --git a/src/mesa/main/buffers.c b/src/mesa/main/buffers.c
index 5c37f3d1a86..96ee1ace728 100644
--- a/src/mesa/main/buffers.c
+++ b/src/mesa/main/buffers.c
@@ -407,7 +407,6 @@ _mesa_drawbuffers(struct gl_context *ctx, GLuint n, const GLenum *buffers,
fb->_ColorDrawBufferIndexes[buf] = bufIndex;
newState = GL_TRUE;
}
- fb->ColorDrawBuffer[buf] = buffers[buf];
count = buf + 1;
}
else {
@@ -416,6 +415,7 @@ _mesa_drawbuffers(struct gl_context *ctx, GLuint n, const GLenum *buffers,
newState = GL_TRUE;
}
}
+ fb->ColorDrawBuffer[buf] = buffers[buf];
}
/* set remaining outputs to -1 (GL_NONE) */
while (buf < ctx->Const.MaxDrawBuffers) {
diff --git a/src/mesa/main/clear.c b/src/mesa/main/clear.c
index 43a9ccc116a..fa95e4522f2 100644
--- a/src/mesa/main/clear.c
+++ b/src/mesa/main/clear.c
@@ -78,19 +78,27 @@ _mesa_ClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha )
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END(ctx);
- tmp[0] = CLAMP(red, 0.0F, 1.0F);
- tmp[1] = CLAMP(green, 0.0F, 1.0F);
- tmp[2] = CLAMP(blue, 0.0F, 1.0F);
- tmp[3] = CLAMP(alpha, 0.0F, 1.0F);
+ tmp[0] = red;
+ tmp[1] = green;
+ tmp[2] = blue;
+ tmp[3] = alpha;
- if (TEST_EQ_4V(tmp, ctx->Color.ClearColor))
+ if (TEST_EQ_4V(tmp, ctx->Color.ClearColorUnclamped))
return; /* no change */
FLUSH_VERTICES(ctx, _NEW_COLOR);
- COPY_4V(ctx->Color.ClearColor, tmp);
+ COPY_4V(ctx->Color.ClearColorUnclamped, tmp);
+
+ ctx->Color.ClearColor[0] = CLAMP(tmp[0], 0.0F, 1.0F);
+ ctx->Color.ClearColor[1] = CLAMP(tmp[1], 0.0F, 1.0F);
+ ctx->Color.ClearColor[2] = CLAMP(tmp[2], 0.0F, 1.0F);
+ ctx->Color.ClearColor[3] = CLAMP(tmp[3], 0.0F, 1.0F);
if (ctx->Driver.ClearColor) {
/* it's OK to call glClearColor in CI mode but it should be a NOP */
+ /* we pass the clamped color, since all drivers that need this don't
+ * support GL_ARB_color_buffer_float
+ */
(*ctx->Driver.ClearColor)(ctx, ctx->Color.ClearColor);
}
}
diff --git a/src/mesa/main/clip.c b/src/mesa/main/clip.c
index be8ce4278cd..ba2028cf2e1 100644
--- a/src/mesa/main/clip.c
+++ b/src/mesa/main/clip.c
@@ -32,11 +32,20 @@
#include "math/m_matrix.h"
+/**
+ * Update derived clip plane state.
+ */
+void
+_mesa_update_clip_plane(struct gl_context *ctx, GLuint plane)
+{
+ if (_math_matrix_is_dirty(ctx->ProjectionMatrixStack.Top))
+ _math_matrix_analyse( ctx->ProjectionMatrixStack.Top );
-/**********************************************************************/
-/* Get/Set User clip-planes. */
-/**********************************************************************/
-
+ /* Clip-Space Plane = Eye-Space Plane * Projection Matrix */
+ _mesa_transform_vector(ctx->Transform._ClipUserPlane[plane],
+ ctx->Transform.EyeUserPlane[plane],
+ ctx->ProjectionMatrixStack.Top->inv);
+}
void GLAPIENTRY
@@ -78,17 +87,8 @@ _mesa_ClipPlane( GLenum plane, const GLdouble *eq )
FLUSH_VERTICES(ctx, _NEW_TRANSFORM);
COPY_4FV(ctx->Transform.EyeUserPlane[p], equation);
- /* Update derived state. This state also depends on the projection
- * matrix, and is recalculated on changes to the projection matrix by
- * code in _mesa_update_state().
- */
if (ctx->Transform.ClipPlanesEnabled & (1 << p)) {
- if (_math_matrix_is_dirty(ctx->ProjectionMatrixStack.Top))
- _math_matrix_analyse( ctx->ProjectionMatrixStack.Top );
-
- _mesa_transform_vector( ctx->Transform._ClipUserPlane[p],
- ctx->Transform.EyeUserPlane[p],
- ctx->ProjectionMatrixStack.Top->inv );
+ _mesa_update_clip_plane(ctx, p);
}
if (ctx->Driver.ClipPlane)
diff --git a/src/mesa/main/clip.h b/src/mesa/main/clip.h
index 11431dcfce0..a8e6d768758 100644
--- a/src/mesa/main/clip.h
+++ b/src/mesa/main/clip.h
@@ -33,6 +33,11 @@
#include "glheader.h"
+struct gl_context;
+
+extern void
+_mesa_update_clip_plane(struct gl_context *ctx, GLuint plane);
+
extern void GLAPIENTRY
_mesa_ClipPlane( GLenum plane, const GLdouble *equation );
diff --git a/src/mesa/main/colortab.c b/src/mesa/main/colortab.c
index d0c865735ac..35b3096f650 100644
--- a/src/mesa/main/colortab.c
+++ b/src/mesa/main/colortab.c
@@ -516,6 +516,7 @@ _mesa_GetColorTable( GLenum target, GLenum format,
struct gl_texture_unit *texUnit = _mesa_get_current_tex_unit(ctx);
struct gl_color_table *table = NULL;
GLfloat rgba[MAX_COLOR_TABLE_SIZE][4];
+ GLbitfield transferOps = 0;
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
if (ctx->NewState) {
@@ -618,8 +619,12 @@ _mesa_GetColorTable( GLenum target, GLenum format,
if (!data)
return;
+ /* TODO: is this correct? */
+ if(ctx->Color._ClampReadColor)
+ transferOps |= IMAGE_CLAMP_BIT;
+
_mesa_pack_rgba_span_float(ctx, table->Size, rgba,
- format, type, data, &ctx->Pack, 0x0);
+ format, type, data, &ctx->Pack, transferOps);
_mesa_unmap_pbo_dest(ctx, &ctx->Pack);
}
diff --git a/src/mesa/main/compiler.h b/src/mesa/main/compiler.h
index 5557a3b5cb5..e17fd0ff6fd 100644
--- a/src/mesa/main/compiler.h
+++ b/src/mesa/main/compiler.h
@@ -171,12 +171,14 @@ extern "C" {
* We also need to define a USED attribute, so the optimizer doesn't
* inline a static function that we later use in an alias. - ajax
*/
-#if defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
-# define PUBLIC __attribute__((visibility("default")))
-# define USED __attribute__((used))
-#else
-# define PUBLIC
-# define USED
+#ifndef PUBLIC
+# if defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
+# define PUBLIC __attribute__((visibility("default")))
+# define USED __attribute__((used))
+# else
+# define PUBLIC
+# define USED
+# endif
#endif
@@ -195,15 +197,17 @@ extern "C" {
* __builtin_expect macros
*/
#if !defined(__GNUC__)
-# define __builtin_expect(x, y) x
+# define __builtin_expect(x, y) (x)
#endif
-#ifdef __GNUC__
-#define likely(x) __builtin_expect(!!(x), 1)
-#define unlikely(x) __builtin_expect(!!(x), 0)
-#else
-#define likely(x) !!(x)
-#define unlikely(x) !!(x)
+#ifndef likely
+# ifdef __GNUC__
+# define likely(x) __builtin_expect(!!(x), 1)
+# define unlikely(x) __builtin_expect(!!(x), 0)
+# else
+# define likely(x) (x)
+# define unlikely(x) (x)
+# endif
#endif
/**
diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c
index ca74284ca89..8053edc23b2 100644
--- a/src/mesa/main/context.c
+++ b/src/mesa/main/context.c
@@ -191,7 +191,8 @@ _mesa_notifySwapBuffers(struct gl_context *ctx)
* is acceptable but the actual depth type will be GLushort or GLuint as
* needed.
* \param stencilBits requested minimum bits per stencil buffer value
- * \param accumRedBits, accumGreenBits, accumBlueBits, accumAlphaBits number of bits per color component in accum buffer.
+ * \param accumRedBits, accumGreenBits, accumBlueBits, accumAlphaBits number
+ * of bits per color component in accum buffer.
* \param indexBits number of bits per pixel if \p rgbFlag is GL_FALSE
* \param redBits number of bits per color component in frame buffer for RGB(A)
* mode. We always use 8 in core Mesa though.
@@ -200,8 +201,8 @@ _mesa_notifySwapBuffers(struct gl_context *ctx)
* \param alphaBits same as above.
* \param numSamples not really used.
*
- * \return pointer to new struct gl_config or NULL if requested parameters can't be
- * met.
+ * \return pointer to new struct gl_config or NULL if requested parameters
+ * can't be met.
*
* \note Need to add params for level and numAuxBuffers (at least)
*/
@@ -567,6 +568,7 @@ _mesa_init_constants(struct gl_context *ctx)
ctx->Const.MaxTextureImageUnits);
ctx->Const.MaxTextureMaxAnisotropy = MAX_TEXTURE_MAX_ANISOTROPY;
ctx->Const.MaxTextureLodBias = MAX_TEXTURE_LOD_BIAS;
+ ctx->Const.MaxTextureBufferSize = 65536;
ctx->Const.MaxArrayLockSize = MAX_ARRAY_LOCK_SIZE;
ctx->Const.SubPixelBits = SUB_PIXEL_BITS;
ctx->Const.MinPointSize = MIN_POINT_SIZE;
@@ -1185,7 +1187,8 @@ _mesa_destroy_context( struct gl_context *ctx )
* structures.
*/
void
-_mesa_copy_context( const struct gl_context *src, struct gl_context *dst, GLuint mask )
+_mesa_copy_context( const struct gl_context *src, struct gl_context *dst,
+ GLuint mask )
{
if (mask & GL_ACCUM_BUFFER_BIT) {
/* OK to memcpy */
diff --git a/src/mesa/main/context.h b/src/mesa/main/context.h
index 33a36311c8a..a4c7ba2c54d 100644
--- a/src/mesa/main/context.h
+++ b/src/mesa/main/context.h
@@ -30,16 +30,16 @@
* There are three large Mesa data types/classes which are meant to be
* used by device drivers:
* - struct gl_context: this contains the Mesa rendering state
- * - struct gl_config: this describes the color buffer (RGB vs. ci), whether or not
- * there's a depth buffer, stencil buffer, etc.
- * - struct gl_framebuffer: contains pointers to the depth buffer, stencil buffer,
- * accum buffer and alpha buffers.
+ * - struct gl_config: this describes the color buffer (RGB vs. ci), whether
+ * or not there's a depth buffer, stencil buffer, etc.
+ * - struct gl_framebuffer: contains pointers to the depth buffer, stencil
+ * buffer, accum buffer and alpha buffers.
*
* These types should be encapsulated by corresponding device driver
* data types. See xmesa.h and xmesaP.h for an example.
*
- * In OOP terms, struct gl_context, struct gl_config, and struct gl_framebuffer are base classes
- * which the device driver must derive from.
+ * In OOP terms, struct gl_context, struct gl_config, and struct gl_framebuffer
+ * are base classes which the device driver must derive from.
*
* The following functions create and destroy these data types.
*/
diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h
index 34d67b5bac8..d749b245e13 100644
--- a/src/mesa/main/dd.h
+++ b/src/mesa/main/dd.h
@@ -1021,6 +1021,14 @@ struct dd_function_table {
* \name GL_NV_texture_barrier interface
*/
void (*TextureBarrier)(struct gl_context *ctx);
+
+ /**
+ * \name GL_ARB_sampler_objects
+ */
+ struct gl_sampler_object * (*NewSamplerObject)(struct gl_context *ctx,
+ GLuint name);
+ void (*DeleteSamplerObject)(struct gl_context *ctx,
+ struct gl_sampler_object *samp);
};
diff --git a/src/mesa/main/debug.c b/src/mesa/main/debug.c
index 78881668e49..e7f6be99481 100644
--- a/src/mesa/main/debug.c
+++ b/src/mesa/main/debug.c
@@ -183,7 +183,7 @@ static void add_debug_flags( const char *debug )
MESA_VERBOSE = 0x0;
for (i = 0; i < Elements(debug_opt); i++) {
- if (strstr(debug, debug_opt[i].name))
+ if (strstr(debug, debug_opt[i].name) || strcmp(debug, "all") == 0)
MESA_VERBOSE |= debug_opt[i].flag;
}
@@ -251,6 +251,9 @@ write_ppm(const char *filename, const GLubyte *buffer, int width, int height,
}
fclose(f);
}
+ else {
+ fprintf(stderr, "Unable to create %s in write_ppm()\n", filename);
+ }
}
@@ -549,6 +552,27 @@ _mesa_dump_stencil_buffer(const char *filename)
}
+void
+_mesa_dump_image(const char *filename, const void *image, GLuint w, GLuint h,
+ GLenum format, GLenum type)
+{
+ GLboolean invert = GL_TRUE;
+
+ if (format == GL_RGBA && type == GL_UNSIGNED_BYTE) {
+ write_ppm(filename, image, w, h, 4, 0, 1, 2, invert);
+ }
+ else if (format == GL_BGRA && type == GL_UNSIGNED_BYTE) {
+ write_ppm(filename, image, w, h, 4, 2, 1, 0, invert);
+ }
+ else if (format == GL_LUMINANCE_ALPHA && type == GL_UNSIGNED_BYTE) {
+ write_ppm(filename, image, w, h, 2, 1, 0, 0, invert);
+ }
+ else {
+ _mesa_problem(NULL, "Unsupported format/type in _mesa_dump_image()");
+ }
+}
+
+
/**
* Quick and dirty function to "print" a texture to stdout.
*/
diff --git a/src/mesa/main/debug.h b/src/mesa/main/debug.h
index 4968a9f1979..d7c53b65504 100644
--- a/src/mesa/main/debug.h
+++ b/src/mesa/main/debug.h
@@ -85,6 +85,10 @@ extern void
_mesa_dump_stencil_buffer(const char *filename);
extern void
+_mesa_dump_image(const char *filename, const void *image, GLuint w, GLuint h,
+ GLenum format, GLenum type);
+
+extern void
_mesa_print_texture(struct gl_context *ctx, const struct gl_texture_image *img);
#endif
diff --git a/src/mesa/main/depthstencil.c b/src/mesa/main/depthstencil.c
index c5466dc9fcc..ab62c97fe5a 100644
--- a/src/mesa/main/depthstencil.c
+++ b/src/mesa/main/depthstencil.c
@@ -91,6 +91,7 @@ alloc_wrapper_storage(struct gl_context *ctx, struct gl_renderbuffer *rb,
if (retVal) {
rb->Width = width;
rb->Height = height;
+ rb->RowStride = dsrb->RowStride;
}
return retVal;
}
@@ -371,6 +372,7 @@ _mesa_new_z24_renderbuffer_wrapper(struct gl_context *ctx,
z24rb->RefCount = 0;
z24rb->Width = dsrb->Width;
z24rb->Height = dsrb->Height;
+ z24rb->RowStride = dsrb->RowStride;
z24rb->InternalFormat = GL_DEPTH_COMPONENT24;
z24rb->Format = MESA_FORMAT_X8_Z24;
z24rb->_BaseFormat = GL_DEPTH_COMPONENT;
@@ -657,6 +659,7 @@ _mesa_new_s8_renderbuffer_wrapper(struct gl_context *ctx, struct gl_renderbuffer
s8rb->RefCount = 0;
s8rb->Width = dsrb->Width;
s8rb->Height = dsrb->Height;
+ s8rb->RowStride = dsrb->RowStride;
s8rb->InternalFormat = GL_STENCIL_INDEX8_EXT;
s8rb->Format = MESA_FORMAT_S8;
s8rb->_BaseFormat = GL_STENCIL_INDEX;
diff --git a/src/mesa/main/dlist.c b/src/mesa/main/dlist.c
index 0112d9dde36..f66082e7fce 100644
--- a/src/mesa/main/dlist.c
+++ b/src/mesa/main/dlist.c
@@ -49,6 +49,7 @@
#include "eval.h"
#include "framebuffer.h"
#include "glapi/glapi.h"
+#include "glapidispatch.h"
#include "hash.h"
#include "image.h"
#include "light.h"
@@ -388,6 +389,9 @@ typedef enum
OPCODE_UNIFORM_3UIV,
OPCODE_UNIFORM_4UIV,
+ /* GL_ARB_color_buffer_float */
+ OPCODE_CLAMP_COLOR,
+
/* GL_EXT_framebuffer_blit */
OPCODE_BLIT_FRAMEBUFFER,
@@ -434,6 +438,9 @@ typedef enum
/* GL_NV_texture_barrier */
OPCODE_TEXTURE_BARRIER_NV,
+ /* GL_ARB_sampler_object */
+ OPCODE_BIND_SAMPLER,
+
/* The following three are meta instructions */
OPCODE_ERROR, /* raise compiled-in error */
OPCODE_CONTINUE,
@@ -6887,6 +6894,22 @@ save_UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose,
}
static void GLAPIENTRY
+save_ClampColorARB(GLenum target, GLenum clamp)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ Node *n;
+ ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+ n = alloc_instruction(ctx, OPCODE_CLAMP_COLOR, 2);
+ if (n) {
+ n[1].e = target;
+ n[2].e = clamp;
+ }
+ if (ctx->ExecuteFlag) {
+ CALL_ClampColorARB(ctx->Exec, (target, clamp));
+ }
+}
+
+static void GLAPIENTRY
save_UseShaderProgramEXT(GLenum type, GLuint program)
{
GET_CURRENT_CONTEXT(ctx);
@@ -7036,7 +7059,7 @@ save_VertexAttribDivisor(GLuint index, GLuint divisor)
/* GL_NV_texture_barrier */
static void
-save_TextureBarrierNV()
+save_TextureBarrierNV(void)
{
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
@@ -7047,6 +7070,24 @@ save_TextureBarrierNV()
}
+/* GL_ARB_sampler_objects */
+static void
+save_BindSampler(GLuint unit, GLuint sampler)
+{
+ Node *n;
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+ n = alloc_instruction(ctx, OPCODE_BIND_SAMPLER, 2);
+ if (n) {
+ n[1].ui = unit;
+ n[2].ui = sampler;
+ }
+ if (ctx->ExecuteFlag) {
+ CALL_BindSampler(ctx->Exec, (unit, sampler));
+ }
+}
+
+
/**
* Save an error-generating command into display list.
*
@@ -8071,6 +8112,10 @@ execute_list(struct gl_context *ctx, GLuint list)
(n[1].i, n[2].i, n[3].b, n[4].data));
break;
+ case OPCODE_CLAMP_COLOR:
+ CALL_ClampColorARB(ctx->Exec, (n[1].e, n[2].e));
+ break;
+
case OPCODE_TEX_BUMP_PARAMETER_ATI:
{
GLfloat values[4];
@@ -8226,6 +8271,10 @@ execute_list(struct gl_context *ctx, GLuint list)
CALL_TextureBarrierNV(ctx->Exec, ());
break;
+ case OPCODE_BIND_SAMPLER:
+ CALL_BindSampler(ctx->Exec, (n[1].ui, n[2].ui));
+ break;
+
case OPCODE_CONTINUE:
n = (Node *) n[1].next;
break;
@@ -9868,6 +9917,10 @@ _mesa_create_save_table(void)
SET_UseShaderProgramEXT(table, save_UseShaderProgramEXT);
SET_ActiveProgramEXT(table, save_ActiveProgramEXT);
+ /* GL_ARB_color_buffer_float */
+ SET_ClampColorARB(table, save_ClampColorARB);
+ SET_ClampColor(table, save_ClampColorARB);
+
/* GL 3.0 */
#if 0
SET_ClearBufferiv(table, save_ClearBufferiv);
@@ -9903,6 +9956,9 @@ _mesa_create_save_table(void)
/* GL_NV_texture_barrier */
SET_TextureBarrierNV(table, save_TextureBarrierNV);
+ /* GL_ARB_sampler_objects */
+ SET_BindSampler(table, save_BindSampler);
+
/* GL_ARB_draw_buffer_blend */
SET_BlendFunciARB(table, save_BlendFunci);
SET_BlendFuncSeparateiARB(table, save_BlendFuncSeparatei);
diff --git a/src/mesa/main/drawpix.c b/src/mesa/main/drawpix.c
index fb86036a188..ee379f71bf5 100644
--- a/src/mesa/main/drawpix.c
+++ b/src/mesa/main/drawpix.c
@@ -188,7 +188,7 @@ _mesa_CopyPixels( GLint srcx, GLint srcy, GLsizei width, GLsizei height,
goto end;
}
- if (!ctx->Current.RasterPosValid || width ==0 || height == 0) {
+ if (!ctx->Current.RasterPosValid || width == 0 || height == 0) {
goto end; /* no-op, not an error */
}
diff --git a/src/mesa/main/enable.c b/src/mesa/main/enable.c
index f247092410b..2ec19c8afbd 100644
--- a/src/mesa/main/enable.c
+++ b/src/mesa/main/enable.c
@@ -29,6 +29,7 @@
#include "glheader.h"
+#include "clip.h"
#include "context.h"
#include "enable.h"
#include "light.h"
@@ -213,8 +214,8 @@ _mesa_DisableClientState( GLenum cap )
/**
* Return pointer to current texture unit for setting/getting coordinate
* state.
- * Note that we'll set GL_INVALID_OPERATION if the active texture unit is
- * higher than the number of supported coordinate units. And we'll return NULL.
+ * Note that we'll set GL_INVALID_OPERATION and return NULL if the active
+ * texture unit is higher than the number of supported coordinate units.
*/
static struct gl_texture_unit *
get_texcoord_unit(struct gl_context *ctx)
@@ -286,7 +287,8 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state)
break;
case GL_BLEND:
{
- GLbitfield newEnabled = state * ((1 << ctx->Const.MaxDrawBuffers) - 1);
+ GLbitfield newEnabled =
+ state * ((1 << ctx->Const.MaxDrawBuffers) - 1);
if (newEnabled != ctx->Color.BlendEnabled) {
FLUSH_VERTICES(ctx, _NEW_COLOR);
ctx->Color.BlendEnabled = newEnabled;
@@ -303,24 +305,15 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state)
{
const GLuint p = cap - GL_CLIP_PLANE0;
- if ((ctx->Transform.ClipPlanesEnabled & (1 << p)) == ((GLuint) state << p))
+ if ((ctx->Transform.ClipPlanesEnabled & (1 << p))
+ == ((GLuint) state << p))
return;
FLUSH_VERTICES(ctx, _NEW_TRANSFORM);
if (state) {
ctx->Transform.ClipPlanesEnabled |= (1 << p);
-
- if (_math_matrix_is_dirty(ctx->ProjectionMatrixStack.Top))
- _math_matrix_analyse( ctx->ProjectionMatrixStack.Top );
-
- /* This derived state also calculated in clip.c and
- * from _mesa_update_state() on changes to EyeUserPlane
- * and ctx->ProjectionMatrix respectively.
- */
- _mesa_transform_vector( ctx->Transform._ClipUserPlane[p],
- ctx->Transform.EyeUserPlane[p],
- ctx->ProjectionMatrixStack.Top->inv );
+ _mesa_update_clip_plane(ctx, p);
}
else {
ctx->Transform.ClipPlanesEnabled &= ~(1 << p);
@@ -612,55 +605,17 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state)
return;
}
break;
- case GL_TEXTURE_GEN_Q:
- {
- struct gl_texture_unit *texUnit = get_texcoord_unit(ctx);
- if (texUnit) {
- GLuint newenabled = texUnit->TexGenEnabled & ~Q_BIT;
- if (state)
- newenabled |= Q_BIT;
- if (texUnit->TexGenEnabled == newenabled)
- return;
- FLUSH_VERTICES(ctx, _NEW_TEXTURE);
- texUnit->TexGenEnabled = newenabled;
- }
- }
- break;
- case GL_TEXTURE_GEN_R:
- {
- struct gl_texture_unit *texUnit = get_texcoord_unit(ctx);
- if (texUnit) {
- GLuint newenabled = texUnit->TexGenEnabled & ~R_BIT;
- if (state)
- newenabled |= R_BIT;
- if (texUnit->TexGenEnabled == newenabled)
- return;
- FLUSH_VERTICES(ctx, _NEW_TEXTURE);
- texUnit->TexGenEnabled = newenabled;
- }
- }
- break;
case GL_TEXTURE_GEN_S:
- {
- struct gl_texture_unit *texUnit = get_texcoord_unit(ctx);
- if (texUnit) {
- GLuint newenabled = texUnit->TexGenEnabled & ~S_BIT;
- if (state)
- newenabled |= S_BIT;
- if (texUnit->TexGenEnabled == newenabled)
- return;
- FLUSH_VERTICES(ctx, _NEW_TEXTURE);
- texUnit->TexGenEnabled = newenabled;
- }
- }
- break;
case GL_TEXTURE_GEN_T:
+ case GL_TEXTURE_GEN_R:
+ case GL_TEXTURE_GEN_Q:
{
struct gl_texture_unit *texUnit = get_texcoord_unit(ctx);
if (texUnit) {
- GLuint newenabled = texUnit->TexGenEnabled & ~T_BIT;
+ GLbitfield coordBit = S_BIT << (cap - GL_TEXTURE_GEN_S);
+ GLbitfield newenabled = texUnit->TexGenEnabled & ~coordBit;
if (state)
- newenabled |= T_BIT;
+ newenabled |= coordBit;
if (texUnit->TexGenEnabled == newenabled)
return;
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
@@ -1012,7 +967,8 @@ _mesa_Disable( GLenum cap )
* Enable/disable an indexed state var.
*/
void
-_mesa_set_enablei(struct gl_context *ctx, GLenum cap, GLuint index, GLboolean state)
+_mesa_set_enablei(struct gl_context *ctx, GLenum cap,
+ GLuint index, GLboolean state)
{
ASSERT(state == 0 || state == 1);
switch (cap) {
@@ -1231,35 +1187,15 @@ _mesa_IsEnabled( GLenum cap )
return is_texture_enabled(ctx, TEXTURE_2D_BIT);
case GL_TEXTURE_3D:
return is_texture_enabled(ctx, TEXTURE_3D_BIT);
- case GL_TEXTURE_GEN_Q:
- {
- const struct gl_texture_unit *texUnit = get_texcoord_unit(ctx);
- if (texUnit) {
- return (texUnit->TexGenEnabled & Q_BIT) ? GL_TRUE : GL_FALSE;
- }
- }
- return GL_FALSE;
- case GL_TEXTURE_GEN_R:
- {
- const struct gl_texture_unit *texUnit = get_texcoord_unit(ctx);
- if (texUnit) {
- return (texUnit->TexGenEnabled & R_BIT) ? GL_TRUE : GL_FALSE;
- }
- }
- return GL_FALSE;
case GL_TEXTURE_GEN_S:
- {
- const struct gl_texture_unit *texUnit = get_texcoord_unit(ctx);
- if (texUnit) {
- return (texUnit->TexGenEnabled & S_BIT) ? GL_TRUE : GL_FALSE;
- }
- }
- return GL_FALSE;
case GL_TEXTURE_GEN_T:
+ case GL_TEXTURE_GEN_R:
+ case GL_TEXTURE_GEN_Q:
{
const struct gl_texture_unit *texUnit = get_texcoord_unit(ctx);
if (texUnit) {
- return (texUnit->TexGenEnabled & T_BIT) ? GL_TRUE : GL_FALSE;
+ GLbitfield coordBit = S_BIT << (cap - GL_TEXTURE_GEN_S);
+ return (texUnit->TexGenEnabled & coordBit) ? GL_TRUE : GL_FALSE;
}
}
return GL_FALSE;
@@ -1268,7 +1204,8 @@ _mesa_IsEnabled( GLenum cap )
{
const struct gl_texture_unit *texUnit = get_texcoord_unit(ctx);
if (texUnit) {
- return (texUnit->TexGenEnabled & STR_BITS) == STR_BITS ? GL_TRUE : GL_FALSE;
+ return (texUnit->TexGenEnabled & STR_BITS) == STR_BITS
+ ? GL_TRUE : GL_FALSE;
}
}
#endif
@@ -1285,7 +1222,8 @@ _mesa_IsEnabled( GLenum cap )
case GL_INDEX_ARRAY:
return (ctx->Array.ArrayObj->Index.Enabled != 0);
case GL_TEXTURE_COORD_ARRAY:
- return (ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled != 0);
+ return (ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture]
+ .Enabled != 0);
case GL_EDGE_FLAG_ARRAY:
return (ctx->Array.ArrayObj->EdgeFlag.Enabled != 0);
case GL_FOG_COORDINATE_ARRAY_EXT:
diff --git a/src/mesa/main/enums.c b/src/mesa/main/enums.c
index e9d6b6b156c..98cbbf53b85 100644
--- a/src/mesa/main/enums.c
+++ b/src/mesa/main/enums.c
@@ -193,12 +193,15 @@ LONGSTRING static const char enum_string_table[] =
"GL_C4UB_V3F\0"
"GL_CCW\0"
"GL_CLAMP\0"
+ "GL_CLAMP_FRAGMENT_COLOR_ARB\0"
"GL_CLAMP_READ_COLOR\0"
+ "GL_CLAMP_READ_COLOR_ARB\0"
"GL_CLAMP_TO_BORDER\0"
"GL_CLAMP_TO_BORDER_ARB\0"
"GL_CLAMP_TO_BORDER_SGIS\0"
"GL_CLAMP_TO_EDGE\0"
"GL_CLAMP_TO_EDGE_SGIS\0"
+ "GL_CLAMP_VERTEX_COLOR_ARB\0"
"GL_CLEAR\0"
"GL_CLIENT_ACTIVE_TEXTURE\0"
"GL_CLIENT_ACTIVE_TEXTURE_ARB\0"
@@ -584,6 +587,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_FIXED\0"
"GL_FIXED_OES\0"
"GL_FIXED_ONLY\0"
+ "GL_FIXED_ONLY_ARB\0"
"GL_FLAT\0"
"GL_FLOAT\0"
"GL_FLOAT_MAT2\0"
@@ -1140,6 +1144,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_MAX_SHININESS_NV\0"
"GL_MAX_SPOT_EXPONENT_NV\0"
"GL_MAX_TEXTURE_BUFFER_SIZE\0"
+ "GL_MAX_TEXTURE_BUFFER_SIZE_ARB\0"
"GL_MAX_TEXTURE_COORDS\0"
"GL_MAX_TEXTURE_COORDS_ARB\0"
"GL_MAX_TEXTURE_IMAGE_UNITS\0"
@@ -1708,6 +1713,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_RGBA8_OES\0"
"GL_RGBA8_SNORM\0"
"GL_RGBA_DXT5_S3TC\0"
+ "GL_RGBA_FLOAT_MODE_ARB\0"
"GL_RGBA_INTEGER\0"
"GL_RGBA_INTEGER_EXT\0"
"GL_RGBA_INTEGER_MODE_EXT\0"
@@ -1740,6 +1746,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_SAMPLER_2D_SHADOW\0"
"GL_SAMPLER_3D\0"
"GL_SAMPLER_3D_OES\0"
+ "GL_SAMPLER_BINDING\0"
"GL_SAMPLER_BUFFER\0"
"GL_SAMPLER_BUFFER_EXT\0"
"GL_SAMPLER_CUBE\0"
@@ -2007,6 +2014,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_TEXTURE_BINDING_3D\0"
"GL_TEXTURE_BINDING_3D_OES\0"
"GL_TEXTURE_BINDING_BUFFER\0"
+ "GL_TEXTURE_BINDING_BUFFER_ARB\0"
"GL_TEXTURE_BINDING_CUBE_MAP\0"
"GL_TEXTURE_BINDING_CUBE_MAP_ARB\0"
"GL_TEXTURE_BINDING_CUBE_MAP_OES\0"
@@ -2019,8 +2027,11 @@ LONGSTRING static const char enum_string_table[] =
"GL_TEXTURE_BORDER\0"
"GL_TEXTURE_BORDER_COLOR\0"
"GL_TEXTURE_BUFFER\0"
+ "GL_TEXTURE_BUFFER_ARB\0"
"GL_TEXTURE_BUFFER_DATA_STORE_BINDING\0"
+ "GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB\0"
"GL_TEXTURE_BUFFER_FORMAT\0"
+ "GL_TEXTURE_BUFFER_FORMAT_ARB\0"
"GL_TEXTURE_CLIPMAP_CENTER_SGIX\0"
"GL_TEXTURE_CLIPMAP_DEPTH_SGIX\0"
"GL_TEXTURE_CLIPMAP_FRAME_SGIX\0"
@@ -2334,7 +2345,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_ZOOM_Y\0"
;
-static const enum_elt all_enums[2295] =
+static const enum_elt all_enums[2306] =
{
{ 0, 0x00000600 }, /* GL_2D */
{ 6, 0x00001407 }, /* GL_2_BYTES */
@@ -2492,3700 +2503,3715 @@ static const enum_elt all_enums[2295] =
{ 2689, 0x00002A23 }, /* GL_C4UB_V3F */
{ 2701, 0x00000901 }, /* GL_CCW */
{ 2708, 0x00002900 }, /* GL_CLAMP */
- { 2717, 0x0000891C }, /* GL_CLAMP_READ_COLOR */
- { 2737, 0x0000812D }, /* GL_CLAMP_TO_BORDER */
- { 2756, 0x0000812D }, /* GL_CLAMP_TO_BORDER_ARB */
- { 2779, 0x0000812D }, /* GL_CLAMP_TO_BORDER_SGIS */
- { 2803, 0x0000812F }, /* GL_CLAMP_TO_EDGE */
- { 2820, 0x0000812F }, /* GL_CLAMP_TO_EDGE_SGIS */
- { 2842, 0x00001500 }, /* GL_CLEAR */
- { 2851, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE */
- { 2876, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE_ARB */
- { 2905, 0xFFFFFFFF }, /* GL_CLIENT_ALL_ATTRIB_BITS */
- { 2931, 0x00000BB1 }, /* GL_CLIENT_ATTRIB_STACK_DEPTH */
- { 2960, 0x00000001 }, /* GL_CLIENT_PIXEL_STORE_BIT */
- { 2986, 0x00000002 }, /* GL_CLIENT_VERTEX_ARRAY_BIT */
- { 3013, 0x00003000 }, /* GL_CLIP_DISTANCE0 */
- { 3031, 0x00003001 }, /* GL_CLIP_DISTANCE1 */
- { 3049, 0x00003002 }, /* GL_CLIP_DISTANCE2 */
- { 3067, 0x00003003 }, /* GL_CLIP_DISTANCE3 */
- { 3085, 0x00003004 }, /* GL_CLIP_DISTANCE4 */
- { 3103, 0x00003005 }, /* GL_CLIP_DISTANCE5 */
- { 3121, 0x00003006 }, /* GL_CLIP_DISTANCE6 */
- { 3139, 0x00003007 }, /* GL_CLIP_DISTANCE7 */
- { 3157, 0x00003000 }, /* GL_CLIP_PLANE0 */
- { 3172, 0x00003001 }, /* GL_CLIP_PLANE1 */
- { 3187, 0x00003002 }, /* GL_CLIP_PLANE2 */
- { 3202, 0x00003003 }, /* GL_CLIP_PLANE3 */
- { 3217, 0x00003004 }, /* GL_CLIP_PLANE4 */
- { 3232, 0x00003005 }, /* GL_CLIP_PLANE5 */
- { 3247, 0x000080F0 }, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */
- { 3280, 0x00000A00 }, /* GL_COEFF */
- { 3289, 0x00001800 }, /* GL_COLOR */
- { 3298, 0x00008076 }, /* GL_COLOR_ARRAY */
- { 3313, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING */
- { 3343, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING_ARB */
- { 3377, 0x00008090 }, /* GL_COLOR_ARRAY_POINTER */
- { 3400, 0x00008081 }, /* GL_COLOR_ARRAY_SIZE */
- { 3420, 0x00008083 }, /* GL_COLOR_ARRAY_STRIDE */
- { 3442, 0x00008082 }, /* GL_COLOR_ARRAY_TYPE */
- { 3462, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0 */
- { 3483, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_EXT */
- { 3508, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_OES */
- { 3533, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1 */
- { 3554, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10 */
- { 3576, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10_EXT */
- { 3602, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11 */
- { 3624, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11_EXT */
- { 3650, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12 */
- { 3672, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12_EXT */
- { 3698, 0x00008CED }, /* GL_COLOR_ATTACHMENT13 */
- { 3720, 0x00008CED }, /* GL_COLOR_ATTACHMENT13_EXT */
- { 3746, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14 */
- { 3768, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14_EXT */
- { 3794, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15 */
- { 3816, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15_EXT */
- { 3842, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1_EXT */
- { 3867, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2 */
- { 3888, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2_EXT */
- { 3913, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3 */
- { 3934, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3_EXT */
- { 3959, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4 */
- { 3980, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4_EXT */
- { 4005, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5 */
- { 4026, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5_EXT */
- { 4051, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6 */
- { 4072, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6_EXT */
- { 4097, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7 */
- { 4118, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7_EXT */
- { 4143, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8 */
- { 4164, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8_EXT */
- { 4189, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9 */
- { 4210, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9_EXT */
- { 4235, 0x00004000 }, /* GL_COLOR_BUFFER_BIT */
- { 4255, 0x00000C22 }, /* GL_COLOR_CLEAR_VALUE */
- { 4276, 0x00001900 }, /* GL_COLOR_INDEX */
- { 4291, 0x00001603 }, /* GL_COLOR_INDEXES */
- { 4308, 0x00000BF2 }, /* GL_COLOR_LOGIC_OP */
- { 4326, 0x00000B57 }, /* GL_COLOR_MATERIAL */
- { 4344, 0x00000B55 }, /* GL_COLOR_MATERIAL_FACE */
- { 4367, 0x00000B56 }, /* GL_COLOR_MATERIAL_PARAMETER */
- { 4395, 0x000080B1 }, /* GL_COLOR_MATRIX */
- { 4411, 0x000080B1 }, /* GL_COLOR_MATRIX_SGI */
- { 4431, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH */
- { 4459, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH_SGI */
- { 4491, 0x00008458 }, /* GL_COLOR_SUM */
- { 4504, 0x00008458 }, /* GL_COLOR_SUM_ARB */
- { 4521, 0x000080D0 }, /* GL_COLOR_TABLE */
- { 4536, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE */
- { 4562, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_EXT */
- { 4592, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_SGI */
- { 4622, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS */
- { 4642, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS_SGI */
- { 4666, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE */
- { 4691, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_EXT */
- { 4720, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_SGI */
- { 4749, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT */
- { 4771, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_EXT */
- { 4797, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_SGI */
- { 4823, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE */
- { 4849, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_EXT */
- { 4879, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_SGI */
- { 4909, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE */
- { 4939, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_EXT */
- { 4973, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_SGI */
- { 5007, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE */
- { 5037, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_EXT */
- { 5071, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_SGI */
- { 5105, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE */
- { 5129, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_EXT */
- { 5157, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_SGI */
- { 5185, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE */
- { 5206, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE_SGI */
- { 5231, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH */
- { 5252, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_EXT */
- { 5277, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_SGI */
- { 5302, 0x00000C23 }, /* GL_COLOR_WRITEMASK */
- { 5321, 0x00008570 }, /* GL_COMBINE */
- { 5332, 0x00008503 }, /* GL_COMBINE4 */
- { 5344, 0x00008572 }, /* GL_COMBINE_ALPHA */
- { 5361, 0x00008572 }, /* GL_COMBINE_ALPHA_ARB */
- { 5382, 0x00008572 }, /* GL_COMBINE_ALPHA_EXT */
- { 5403, 0x00008570 }, /* GL_COMBINE_ARB */
- { 5418, 0x00008570 }, /* GL_COMBINE_EXT */
- { 5433, 0x00008571 }, /* GL_COMBINE_RGB */
- { 5448, 0x00008571 }, /* GL_COMBINE_RGB_ARB */
- { 5467, 0x00008571 }, /* GL_COMBINE_RGB_EXT */
- { 5486, 0x0000884E }, /* GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT */
- { 5522, 0x0000884E }, /* GL_COMPARE_REF_TO_TEXTURE */
- { 5548, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE */
- { 5572, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE_ARB */
- { 5600, 0x00001300 }, /* GL_COMPILE */
- { 5611, 0x00001301 }, /* GL_COMPILE_AND_EXECUTE */
- { 5634, 0x00008B81 }, /* GL_COMPILE_STATUS */
- { 5652, 0x000084E9 }, /* GL_COMPRESSED_ALPHA */
- { 5672, 0x000084E9 }, /* GL_COMPRESSED_ALPHA_ARB */
- { 5696, 0x000084EC }, /* GL_COMPRESSED_INTENSITY */
- { 5720, 0x000084EC }, /* GL_COMPRESSED_INTENSITY_ARB */
- { 5748, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE */
- { 5772, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA */
- { 5802, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA_ARB */
- { 5836, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE_ARB */
- { 5864, 0x00008225 }, /* GL_COMPRESSED_RED */
- { 5882, 0x00008226 }, /* GL_COMPRESSED_RG */
- { 5899, 0x000084ED }, /* GL_COMPRESSED_RGB */
- { 5917, 0x000084EE }, /* GL_COMPRESSED_RGBA */
- { 5936, 0x000084EE }, /* GL_COMPRESSED_RGBA_ARB */
- { 5959, 0x000086B1 }, /* GL_COMPRESSED_RGBA_FXT1_3DFX */
- { 5988, 0x000083F1 }, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */
- { 6021, 0x000083F2 }, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */
- { 6054, 0x000083F3 }, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */
- { 6087, 0x000084ED }, /* GL_COMPRESSED_RGB_ARB */
- { 6109, 0x000086B0 }, /* GL_COMPRESSED_RGB_FXT1_3DFX */
- { 6137, 0x000083F0 }, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */
- { 6169, 0x00008C4A }, /* GL_COMPRESSED_SLUMINANCE */
- { 6194, 0x00008C4B }, /* GL_COMPRESSED_SLUMINANCE_ALPHA */
- { 6225, 0x00008C48 }, /* GL_COMPRESSED_SRGB */
- { 6244, 0x00008C49 }, /* GL_COMPRESSED_SRGB_ALPHA */
- { 6269, 0x000086A3 }, /* GL_COMPRESSED_TEXTURE_FORMATS */
- { 6299, 0x0000911C }, /* GL_CONDITION_SATISFIED */
- { 6322, 0x00008576 }, /* GL_CONSTANT */
- { 6334, 0x00008003 }, /* GL_CONSTANT_ALPHA */
- { 6352, 0x00008003 }, /* GL_CONSTANT_ALPHA_EXT */
- { 6374, 0x00008576 }, /* GL_CONSTANT_ARB */
- { 6390, 0x00001207 }, /* GL_CONSTANT_ATTENUATION */
- { 6414, 0x00008151 }, /* GL_CONSTANT_BORDER_HP */
- { 6436, 0x00008001 }, /* GL_CONSTANT_COLOR */
- { 6454, 0x00008001 }, /* GL_CONSTANT_COLOR_EXT */
- { 6476, 0x00008576 }, /* GL_CONSTANT_EXT */
- { 6492, 0x00000002 }, /* GL_CONTEXT_COMPATIBILITY_PROFILE_BIT */
- { 6529, 0x00000001 }, /* GL_CONTEXT_CORE_PROFILE_BIT */
- { 6557, 0x0000821E }, /* GL_CONTEXT_FLAGS */
- { 6574, 0x00000001 }, /* GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT */
- { 6613, 0x00009126 }, /* GL_CONTEXT_PROFILE_MASK */
- { 6637, 0x00008010 }, /* GL_CONVOLUTION_1D */
- { 6655, 0x00008011 }, /* GL_CONVOLUTION_2D */
- { 6673, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR */
- { 6701, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR_HP */
- { 6732, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE */
- { 6759, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE_EXT */
- { 6790, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS */
- { 6817, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS_EXT */
- { 6848, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE */
- { 6876, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE_EXT */
- { 6908, 0x00008017 }, /* GL_CONVOLUTION_FORMAT */
- { 6930, 0x00008017 }, /* GL_CONVOLUTION_FORMAT_EXT */
- { 6956, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT */
- { 6978, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT_EXT */
- { 7004, 0x00008018 }, /* GL_CONVOLUTION_WIDTH */
- { 7025, 0x00008018 }, /* GL_CONVOLUTION_WIDTH_EXT */
- { 7050, 0x00008862 }, /* GL_COORD_REPLACE */
- { 7067, 0x00008862 }, /* GL_COORD_REPLACE_ARB */
- { 7088, 0x00008862 }, /* GL_COORD_REPLACE_NV */
- { 7108, 0x00008862 }, /* GL_COORD_REPLACE_OES */
- { 7129, 0x00001503 }, /* GL_COPY */
- { 7137, 0x0000150C }, /* GL_COPY_INVERTED */
- { 7154, 0x00000706 }, /* GL_COPY_PIXEL_TOKEN */
- { 7174, 0x00008F36 }, /* GL_COPY_READ_BUFFER */
- { 7194, 0x00008F37 }, /* GL_COPY_WRITE_BUFFER */
- { 7215, 0x00000B44 }, /* GL_CULL_FACE */
- { 7228, 0x00000B45 }, /* GL_CULL_FACE_MODE */
- { 7246, 0x000081AA }, /* GL_CULL_VERTEX_EXT */
- { 7265, 0x000081AC }, /* GL_CULL_VERTEX_EYE_POSITION_EXT */
- { 7297, 0x000081AB }, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */
- { 7332, 0x00008626 }, /* GL_CURRENT_ATTRIB_NV */
- { 7353, 0x00000001 }, /* GL_CURRENT_BIT */
- { 7368, 0x00000B00 }, /* GL_CURRENT_COLOR */
- { 7385, 0x00008453 }, /* GL_CURRENT_FOG_COORD */
- { 7406, 0x00008453 }, /* GL_CURRENT_FOG_COORDINATE */
- { 7432, 0x00000B01 }, /* GL_CURRENT_INDEX */
- { 7449, 0x00008641 }, /* GL_CURRENT_MATRIX_ARB */
- { 7471, 0x00008845 }, /* GL_CURRENT_MATRIX_INDEX_ARB */
- { 7499, 0x00008641 }, /* GL_CURRENT_MATRIX_NV */
- { 7520, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */
- { 7554, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_NV */
- { 7587, 0x00000B02 }, /* GL_CURRENT_NORMAL */
- { 7605, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_ARB */
- { 7635, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_OES */
- { 7665, 0x00008B8D }, /* GL_CURRENT_PROGRAM */
- { 7684, 0x00008865 }, /* GL_CURRENT_QUERY */
- { 7701, 0x00008865 }, /* GL_CURRENT_QUERY_ARB */
- { 7722, 0x00000B04 }, /* GL_CURRENT_RASTER_COLOR */
- { 7746, 0x00000B09 }, /* GL_CURRENT_RASTER_DISTANCE */
- { 7773, 0x00000B05 }, /* GL_CURRENT_RASTER_INDEX */
- { 7797, 0x00000B07 }, /* GL_CURRENT_RASTER_POSITION */
- { 7824, 0x00000B08 }, /* GL_CURRENT_RASTER_POSITION_VALID */
- { 7857, 0x0000845F }, /* GL_CURRENT_RASTER_SECONDARY_COLOR */
- { 7891, 0x00000B06 }, /* GL_CURRENT_RASTER_TEXTURE_COORDS */
- { 7924, 0x00008459 }, /* GL_CURRENT_SECONDARY_COLOR */
- { 7951, 0x00000B03 }, /* GL_CURRENT_TEXTURE_COORDS */
- { 7977, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB */
- { 8002, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB_ARB */
- { 8031, 0x000086A8 }, /* GL_CURRENT_WEIGHT_ARB */
- { 8053, 0x00000900 }, /* GL_CW */
- { 8059, 0x0000875B }, /* GL_DEBUG_ASSERT_MESA */
- { 8080, 0x00008759 }, /* GL_DEBUG_OBJECT_MESA */
- { 8101, 0x0000875A }, /* GL_DEBUG_PRINT_MESA */
- { 8121, 0x00002101 }, /* GL_DECAL */
- { 8130, 0x00001E03 }, /* GL_DECR */
- { 8138, 0x00008508 }, /* GL_DECR_WRAP */
- { 8151, 0x00008508 }, /* GL_DECR_WRAP_EXT */
- { 8168, 0x00008B80 }, /* GL_DELETE_STATUS */
- { 8185, 0x00001801 }, /* GL_DEPTH */
- { 8194, 0x000088F0 }, /* GL_DEPTH24_STENCIL8 */
- { 8214, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_EXT */
- { 8238, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_OES */
- { 8262, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT */
- { 8282, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_EXT */
- { 8306, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_OES */
- { 8330, 0x00000D1F }, /* GL_DEPTH_BIAS */
- { 8344, 0x00000D56 }, /* GL_DEPTH_BITS */
- { 8358, 0x00008891 }, /* GL_DEPTH_BOUNDS_EXT */
- { 8378, 0x00008890 }, /* GL_DEPTH_BOUNDS_TEST_EXT */
- { 8403, 0x00008223 }, /* GL_DEPTH_BUFFER */
- { 8419, 0x00000100 }, /* GL_DEPTH_BUFFER_BIT */
- { 8439, 0x0000864F }, /* GL_DEPTH_CLAMP */
- { 8454, 0x0000864F }, /* GL_DEPTH_CLAMP_NV */
- { 8472, 0x00000B73 }, /* GL_DEPTH_CLEAR_VALUE */
- { 8493, 0x00001902 }, /* GL_DEPTH_COMPONENT */
- { 8512, 0x000081A5 }, /* GL_DEPTH_COMPONENT16 */
- { 8533, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_ARB */
- { 8558, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_OES */
- { 8583, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_SGIX */
- { 8609, 0x000081A6 }, /* GL_DEPTH_COMPONENT24 */
- { 8630, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_ARB */
- { 8655, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_OES */
- { 8680, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_SGIX */
- { 8706, 0x000081A7 }, /* GL_DEPTH_COMPONENT32 */
- { 8727, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_ARB */
- { 8752, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_OES */
- { 8777, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_SGIX */
- { 8803, 0x00000B74 }, /* GL_DEPTH_FUNC */
- { 8817, 0x00000B70 }, /* GL_DEPTH_RANGE */
- { 8832, 0x00000D1E }, /* GL_DEPTH_SCALE */
- { 8847, 0x000084F9 }, /* GL_DEPTH_STENCIL */
- { 8864, 0x0000821A }, /* GL_DEPTH_STENCIL_ATTACHMENT */
- { 8892, 0x000084F9 }, /* GL_DEPTH_STENCIL_EXT */
- { 8913, 0x000084F9 }, /* GL_DEPTH_STENCIL_NV */
- { 8933, 0x000084F9 }, /* GL_DEPTH_STENCIL_OES */
- { 8954, 0x0000886F }, /* GL_DEPTH_STENCIL_TO_BGRA_NV */
- { 8982, 0x0000886E }, /* GL_DEPTH_STENCIL_TO_RGBA_NV */
- { 9010, 0x00000B71 }, /* GL_DEPTH_TEST */
- { 9024, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE */
- { 9046, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE_ARB */
- { 9072, 0x00000B72 }, /* GL_DEPTH_WRITEMASK */
- { 9091, 0x00001201 }, /* GL_DIFFUSE */
- { 9102, 0x00000BD0 }, /* GL_DITHER */
- { 9112, 0x00000A02 }, /* GL_DOMAIN */
- { 9122, 0x00001100 }, /* GL_DONT_CARE */
- { 9135, 0x000086AE }, /* GL_DOT3_RGB */
- { 9147, 0x000086AF }, /* GL_DOT3_RGBA */
- { 9160, 0x000086AF }, /* GL_DOT3_RGBA_ARB */
- { 9177, 0x00008741 }, /* GL_DOT3_RGBA_EXT */
- { 9194, 0x000086AE }, /* GL_DOT3_RGB_ARB */
- { 9210, 0x00008740 }, /* GL_DOT3_RGB_EXT */
- { 9226, 0x0000140A }, /* GL_DOUBLE */
- { 9236, 0x00000C32 }, /* GL_DOUBLEBUFFER */
- { 9252, 0x00000C01 }, /* GL_DRAW_BUFFER */
- { 9267, 0x00008825 }, /* GL_DRAW_BUFFER0 */
- { 9283, 0x00008825 }, /* GL_DRAW_BUFFER0_ARB */
- { 9303, 0x00008825 }, /* GL_DRAW_BUFFER0_ATI */
- { 9323, 0x00008826 }, /* GL_DRAW_BUFFER1 */
- { 9339, 0x0000882F }, /* GL_DRAW_BUFFER10 */
- { 9356, 0x0000882F }, /* GL_DRAW_BUFFER10_ARB */
- { 9377, 0x0000882F }, /* GL_DRAW_BUFFER10_ATI */
- { 9398, 0x00008830 }, /* GL_DRAW_BUFFER11 */
- { 9415, 0x00008830 }, /* GL_DRAW_BUFFER11_ARB */
- { 9436, 0x00008830 }, /* GL_DRAW_BUFFER11_ATI */
- { 9457, 0x00008831 }, /* GL_DRAW_BUFFER12 */
- { 9474, 0x00008831 }, /* GL_DRAW_BUFFER12_ARB */
- { 9495, 0x00008831 }, /* GL_DRAW_BUFFER12_ATI */
- { 9516, 0x00008832 }, /* GL_DRAW_BUFFER13 */
- { 9533, 0x00008832 }, /* GL_DRAW_BUFFER13_ARB */
- { 9554, 0x00008832 }, /* GL_DRAW_BUFFER13_ATI */
- { 9575, 0x00008833 }, /* GL_DRAW_BUFFER14 */
- { 9592, 0x00008833 }, /* GL_DRAW_BUFFER14_ARB */
- { 9613, 0x00008833 }, /* GL_DRAW_BUFFER14_ATI */
- { 9634, 0x00008834 }, /* GL_DRAW_BUFFER15 */
- { 9651, 0x00008834 }, /* GL_DRAW_BUFFER15_ARB */
- { 9672, 0x00008834 }, /* GL_DRAW_BUFFER15_ATI */
- { 9693, 0x00008826 }, /* GL_DRAW_BUFFER1_ARB */
- { 9713, 0x00008826 }, /* GL_DRAW_BUFFER1_ATI */
- { 9733, 0x00008827 }, /* GL_DRAW_BUFFER2 */
- { 9749, 0x00008827 }, /* GL_DRAW_BUFFER2_ARB */
- { 9769, 0x00008827 }, /* GL_DRAW_BUFFER2_ATI */
- { 9789, 0x00008828 }, /* GL_DRAW_BUFFER3 */
- { 9805, 0x00008828 }, /* GL_DRAW_BUFFER3_ARB */
- { 9825, 0x00008828 }, /* GL_DRAW_BUFFER3_ATI */
- { 9845, 0x00008829 }, /* GL_DRAW_BUFFER4 */
- { 9861, 0x00008829 }, /* GL_DRAW_BUFFER4_ARB */
- { 9881, 0x00008829 }, /* GL_DRAW_BUFFER4_ATI */
- { 9901, 0x0000882A }, /* GL_DRAW_BUFFER5 */
- { 9917, 0x0000882A }, /* GL_DRAW_BUFFER5_ARB */
- { 9937, 0x0000882A }, /* GL_DRAW_BUFFER5_ATI */
- { 9957, 0x0000882B }, /* GL_DRAW_BUFFER6 */
- { 9973, 0x0000882B }, /* GL_DRAW_BUFFER6_ARB */
- { 9993, 0x0000882B }, /* GL_DRAW_BUFFER6_ATI */
- { 10013, 0x0000882C }, /* GL_DRAW_BUFFER7 */
- { 10029, 0x0000882C }, /* GL_DRAW_BUFFER7_ARB */
- { 10049, 0x0000882C }, /* GL_DRAW_BUFFER7_ATI */
- { 10069, 0x0000882D }, /* GL_DRAW_BUFFER8 */
- { 10085, 0x0000882D }, /* GL_DRAW_BUFFER8_ARB */
- { 10105, 0x0000882D }, /* GL_DRAW_BUFFER8_ATI */
- { 10125, 0x0000882E }, /* GL_DRAW_BUFFER9 */
- { 10141, 0x0000882E }, /* GL_DRAW_BUFFER9_ARB */
- { 10161, 0x0000882E }, /* GL_DRAW_BUFFER9_ATI */
- { 10181, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER */
- { 10201, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING */
- { 10229, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING_EXT */
- { 10261, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER_EXT */
- { 10285, 0x00000705 }, /* GL_DRAW_PIXEL_TOKEN */
- { 10305, 0x00000304 }, /* GL_DST_ALPHA */
- { 10318, 0x00000306 }, /* GL_DST_COLOR */
- { 10331, 0x0000877A }, /* GL_DU8DV8_ATI */
- { 10345, 0x00008779 }, /* GL_DUDV_ATI */
- { 10357, 0x000088EA }, /* GL_DYNAMIC_COPY */
- { 10373, 0x000088EA }, /* GL_DYNAMIC_COPY_ARB */
- { 10393, 0x000088E8 }, /* GL_DYNAMIC_DRAW */
- { 10409, 0x000088E8 }, /* GL_DYNAMIC_DRAW_ARB */
- { 10429, 0x000088E9 }, /* GL_DYNAMIC_READ */
- { 10445, 0x000088E9 }, /* GL_DYNAMIC_READ_ARB */
- { 10465, 0x00000B43 }, /* GL_EDGE_FLAG */
- { 10478, 0x00008079 }, /* GL_EDGE_FLAG_ARRAY */
- { 10497, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */
- { 10531, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB */
- { 10569, 0x00008093 }, /* GL_EDGE_FLAG_ARRAY_POINTER */
- { 10596, 0x0000808C }, /* GL_EDGE_FLAG_ARRAY_STRIDE */
- { 10622, 0x00008893 }, /* GL_ELEMENT_ARRAY_BUFFER */
- { 10646, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */
- { 10678, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB */
- { 10714, 0x00001600 }, /* GL_EMISSION */
- { 10726, 0x00002000 }, /* GL_ENABLE_BIT */
- { 10740, 0x00000202 }, /* GL_EQUAL */
- { 10749, 0x00001509 }, /* GL_EQUIV */
- { 10758, 0x00010000 }, /* GL_EVAL_BIT */
- { 10770, 0x00000800 }, /* GL_EXP */
- { 10777, 0x00000801 }, /* GL_EXP2 */
- { 10785, 0x00001F03 }, /* GL_EXTENSIONS */
- { 10799, 0x00002400 }, /* GL_EYE_LINEAR */
- { 10813, 0x00002502 }, /* GL_EYE_PLANE */
- { 10826, 0x0000855C }, /* GL_EYE_PLANE_ABSOLUTE_NV */
- { 10851, 0x0000855B }, /* GL_EYE_RADIAL_NV */
- { 10868, 0x00000000 }, /* GL_FALSE */
- { 10877, 0x00001101 }, /* GL_FASTEST */
- { 10888, 0x00001C01 }, /* GL_FEEDBACK */
- { 10900, 0x00000DF0 }, /* GL_FEEDBACK_BUFFER_POINTER */
- { 10927, 0x00000DF1 }, /* GL_FEEDBACK_BUFFER_SIZE */
- { 10951, 0x00000DF2 }, /* GL_FEEDBACK_BUFFER_TYPE */
- { 10975, 0x00001B02 }, /* GL_FILL */
- { 10983, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION */
- { 11010, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION_EXT */
- { 11041, 0x0000140C }, /* GL_FIXED */
- { 11050, 0x0000140C }, /* GL_FIXED_OES */
- { 11063, 0x0000891D }, /* GL_FIXED_ONLY */
- { 11077, 0x00001D00 }, /* GL_FLAT */
- { 11085, 0x00001406 }, /* GL_FLOAT */
- { 11094, 0x00008B5A }, /* GL_FLOAT_MAT2 */
- { 11108, 0x00008B5A }, /* GL_FLOAT_MAT2_ARB */
- { 11126, 0x00008B65 }, /* GL_FLOAT_MAT2x3 */
- { 11142, 0x00008B66 }, /* GL_FLOAT_MAT2x4 */
- { 11158, 0x00008B5B }, /* GL_FLOAT_MAT3 */
- { 11172, 0x00008B5B }, /* GL_FLOAT_MAT3_ARB */
- { 11190, 0x00008B67 }, /* GL_FLOAT_MAT3x2 */
- { 11206, 0x00008B68 }, /* GL_FLOAT_MAT3x4 */
- { 11222, 0x00008B5C }, /* GL_FLOAT_MAT4 */
- { 11236, 0x00008B5C }, /* GL_FLOAT_MAT4_ARB */
- { 11254, 0x00008B69 }, /* GL_FLOAT_MAT4x2 */
- { 11270, 0x00008B6A }, /* GL_FLOAT_MAT4x3 */
- { 11286, 0x00008B50 }, /* GL_FLOAT_VEC2 */
- { 11300, 0x00008B50 }, /* GL_FLOAT_VEC2_ARB */
- { 11318, 0x00008B51 }, /* GL_FLOAT_VEC3 */
- { 11332, 0x00008B51 }, /* GL_FLOAT_VEC3_ARB */
- { 11350, 0x00008B52 }, /* GL_FLOAT_VEC4 */
- { 11364, 0x00008B52 }, /* GL_FLOAT_VEC4_ARB */
- { 11382, 0x00000B60 }, /* GL_FOG */
- { 11389, 0x00000080 }, /* GL_FOG_BIT */
- { 11400, 0x00000B66 }, /* GL_FOG_COLOR */
- { 11413, 0x00008451 }, /* GL_FOG_COORD */
- { 11426, 0x00008451 }, /* GL_FOG_COORDINATE */
- { 11444, 0x00008457 }, /* GL_FOG_COORDINATE_ARRAY */
- { 11468, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */
- { 11507, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB */
- { 11550, 0x00008456 }, /* GL_FOG_COORDINATE_ARRAY_POINTER */
- { 11582, 0x00008455 }, /* GL_FOG_COORDINATE_ARRAY_STRIDE */
- { 11613, 0x00008454 }, /* GL_FOG_COORDINATE_ARRAY_TYPE */
- { 11642, 0x00008450 }, /* GL_FOG_COORDINATE_SOURCE */
- { 11667, 0x00008457 }, /* GL_FOG_COORD_ARRAY */
- { 11686, 0x0000889D }, /* GL_FOG_COORD_ARRAY_BUFFER_BINDING */
- { 11720, 0x00008456 }, /* GL_FOG_COORD_ARRAY_POINTER */
- { 11747, 0x00008455 }, /* GL_FOG_COORD_ARRAY_STRIDE */
- { 11773, 0x00008454 }, /* GL_FOG_COORD_ARRAY_TYPE */
- { 11797, 0x00008450 }, /* GL_FOG_COORD_SRC */
- { 11814, 0x00000B62 }, /* GL_FOG_DENSITY */
- { 11829, 0x0000855A }, /* GL_FOG_DISTANCE_MODE_NV */
- { 11853, 0x00000B64 }, /* GL_FOG_END */
- { 11864, 0x00000C54 }, /* GL_FOG_HINT */
- { 11876, 0x00000B61 }, /* GL_FOG_INDEX */
- { 11889, 0x00000B65 }, /* GL_FOG_MODE */
- { 11901, 0x00008198 }, /* GL_FOG_OFFSET_SGIX */
- { 11920, 0x00008199 }, /* GL_FOG_OFFSET_VALUE_SGIX */
- { 11945, 0x00000B63 }, /* GL_FOG_START */
- { 11958, 0x00008452 }, /* GL_FRAGMENT_DEPTH */
- { 11976, 0x00008804 }, /* GL_FRAGMENT_PROGRAM_ARB */
- { 12000, 0x00008B30 }, /* GL_FRAGMENT_SHADER */
- { 12019, 0x00008B30 }, /* GL_FRAGMENT_SHADER_ARB */
- { 12042, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */
- { 12077, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES */
- { 12116, 0x00008D40 }, /* GL_FRAMEBUFFER */
- { 12131, 0x00008215 }, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */
- { 12168, 0x00008214 }, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */
- { 12204, 0x00008210 }, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */
- { 12245, 0x00008211 }, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */
- { 12286, 0x00008216 }, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */
- { 12323, 0x00008213 }, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */
- { 12360, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED */
- { 12394, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB */
- { 12432, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */
- { 12470, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT */
- { 12512, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES */
- { 12554, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */
- { 12592, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT */
- { 12634, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES */
- { 12676, 0x00008212 }, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */
- { 12711, 0x00008217 }, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */
- { 12750, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT */
- { 12799, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES */
- { 12848, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */
- { 12896, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT */
- { 12948, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES */
- { 13000, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */
- { 13040, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */
- { 13084, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */
- { 13124, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT */
- { 13168, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES */
- { 13212, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING */
- { 13235, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_EXT */
- { 13262, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_OES */
- { 13289, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE */
- { 13313, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_EXT */
- { 13341, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_OES */
- { 13369, 0x00008218 }, /* GL_FRAMEBUFFER_DEFAULT */
- { 13392, 0x00008D40 }, /* GL_FRAMEBUFFER_EXT */
- { 13411, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */
- { 13448, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT */
- { 13489, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES */
- { 13530, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS */
- { 13567, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */
- { 13608, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES */
- { 13649, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */
- { 13687, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT */
- { 13729, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES */
- { 13771, 0x00008CD8 }, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */
- { 13822, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */
- { 13860, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES */
- { 13898, 0x00008DA9 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */
- { 13940, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS */
- { 13980, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB */
- { 14024, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */
- { 14069, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT */
- { 14118, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES */
- { 14167, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */
- { 14205, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT */
- { 14247, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */
- { 14285, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT */
- { 14327, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES */
- { 14369, 0x00008D40 }, /* GL_FRAMEBUFFER_OES */
- { 14388, 0x00008CDE }, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */
- { 14420, 0x00008219 }, /* GL_FRAMEBUFFER_UNDEFINED */
- { 14445, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED */
- { 14472, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_EXT */
- { 14503, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_OES */
- { 14534, 0x00000404 }, /* GL_FRONT */
- { 14543, 0x00000408 }, /* GL_FRONT_AND_BACK */
- { 14561, 0x00000B46 }, /* GL_FRONT_FACE */
- { 14575, 0x00000400 }, /* GL_FRONT_LEFT */
- { 14589, 0x00000401 }, /* GL_FRONT_RIGHT */
- { 14604, 0x00008006 }, /* GL_FUNC_ADD */
- { 14616, 0x00008006 }, /* GL_FUNC_ADD_EXT */
- { 14632, 0x00008006 }, /* GL_FUNC_ADD_OES */
- { 14648, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT */
- { 14673, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_EXT */
- { 14702, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_OES */
- { 14731, 0x0000800A }, /* GL_FUNC_SUBTRACT */
- { 14748, 0x0000800A }, /* GL_FUNC_SUBTRACT_EXT */
- { 14769, 0x0000800A }, /* GL_FUNC_SUBTRACT_OES */
- { 14790, 0x00008191 }, /* GL_GENERATE_MIPMAP */
- { 14809, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT */
- { 14833, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT_SGIS */
- { 14862, 0x00008191 }, /* GL_GENERATE_MIPMAP_SGIS */
- { 14886, 0x00008917 }, /* GL_GEOMETRY_INPUT_TYPE */
- { 14909, 0x00008DDB }, /* GL_GEOMETRY_INPUT_TYPE_ARB */
- { 14936, 0x00008918 }, /* GL_GEOMETRY_OUTPUT_TYPE */
- { 14960, 0x00008DDC }, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */
- { 14988, 0x00008DD9 }, /* GL_GEOMETRY_SHADER */
- { 15007, 0x00008DD9 }, /* GL_GEOMETRY_SHADER_ARB */
- { 15030, 0x00008916 }, /* GL_GEOMETRY_VERTICES_OUT */
- { 15055, 0x00008DDA }, /* GL_GEOMETRY_VERTICES_OUT_ARB */
- { 15084, 0x00000206 }, /* GL_GEQUAL */
- { 15094, 0x00000204 }, /* GL_GREATER */
- { 15105, 0x00001904 }, /* GL_GREEN */
- { 15114, 0x00000D19 }, /* GL_GREEN_BIAS */
- { 15128, 0x00000D53 }, /* GL_GREEN_BITS */
- { 15142, 0x00008D95 }, /* GL_GREEN_INTEGER */
- { 15159, 0x00008D95 }, /* GL_GREEN_INTEGER_EXT */
- { 15180, 0x00000D18 }, /* GL_GREEN_SCALE */
- { 15195, 0x0000140B }, /* GL_HALF_FLOAT */
- { 15209, 0x00008D61 }, /* GL_HALF_FLOAT_OES */
- { 15227, 0x00008DF2 }, /* GL_HIGH_FLOAT */
- { 15241, 0x00008DF5 }, /* GL_HIGH_INT */
- { 15253, 0x00008000 }, /* GL_HINT_BIT */
- { 15265, 0x00008024 }, /* GL_HISTOGRAM */
- { 15278, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE */
- { 15302, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE_EXT */
- { 15330, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE */
- { 15353, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE_EXT */
- { 15380, 0x00008024 }, /* GL_HISTOGRAM_EXT */
- { 15397, 0x00008027 }, /* GL_HISTOGRAM_FORMAT */
- { 15417, 0x00008027 }, /* GL_HISTOGRAM_FORMAT_EXT */
- { 15441, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE */
- { 15465, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE_EXT */
- { 15493, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE */
- { 15521, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE_EXT */
- { 15553, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE */
- { 15575, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE_EXT */
- { 15601, 0x0000802D }, /* GL_HISTOGRAM_SINK */
- { 15619, 0x0000802D }, /* GL_HISTOGRAM_SINK_EXT */
- { 15641, 0x00008026 }, /* GL_HISTOGRAM_WIDTH */
- { 15660, 0x00008026 }, /* GL_HISTOGRAM_WIDTH_EXT */
- { 15683, 0x0000862A }, /* GL_IDENTITY_NV */
- { 15698, 0x00008150 }, /* GL_IGNORE_BORDER_HP */
- { 15718, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */
- { 15754, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */
- { 15794, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */
- { 15828, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */
- { 15866, 0x00001E02 }, /* GL_INCR */
- { 15874, 0x00008507 }, /* GL_INCR_WRAP */
- { 15887, 0x00008507 }, /* GL_INCR_WRAP_EXT */
- { 15904, 0x00008222 }, /* GL_INDEX */
- { 15913, 0x00008077 }, /* GL_INDEX_ARRAY */
- { 15928, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING */
- { 15958, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING_ARB */
- { 15992, 0x00008091 }, /* GL_INDEX_ARRAY_POINTER */
- { 16015, 0x00008086 }, /* GL_INDEX_ARRAY_STRIDE */
- { 16037, 0x00008085 }, /* GL_INDEX_ARRAY_TYPE */
- { 16057, 0x00000D51 }, /* GL_INDEX_BITS */
- { 16071, 0x00000C20 }, /* GL_INDEX_CLEAR_VALUE */
- { 16092, 0x00000BF1 }, /* GL_INDEX_LOGIC_OP */
- { 16110, 0x00000C30 }, /* GL_INDEX_MODE */
- { 16124, 0x00000D13 }, /* GL_INDEX_OFFSET */
- { 16140, 0x00000D12 }, /* GL_INDEX_SHIFT */
- { 16155, 0x00000C21 }, /* GL_INDEX_WRITEMASK */
- { 16174, 0x00008B84 }, /* GL_INFO_LOG_LENGTH */
- { 16193, 0x00001404 }, /* GL_INT */
- { 16200, 0x00008049 }, /* GL_INTENSITY */
- { 16213, 0x0000804C }, /* GL_INTENSITY12 */
- { 16228, 0x0000804C }, /* GL_INTENSITY12_EXT */
- { 16247, 0x0000804D }, /* GL_INTENSITY16 */
- { 16262, 0x00008D8B }, /* GL_INTENSITY16I_EXT */
- { 16282, 0x00008D79 }, /* GL_INTENSITY16UI_EXT */
- { 16303, 0x0000804D }, /* GL_INTENSITY16_EXT */
- { 16322, 0x00008D85 }, /* GL_INTENSITY32I_EXT */
- { 16342, 0x00008D73 }, /* GL_INTENSITY32UI_EXT */
- { 16363, 0x0000804A }, /* GL_INTENSITY4 */
- { 16377, 0x0000804A }, /* GL_INTENSITY4_EXT */
- { 16395, 0x0000804B }, /* GL_INTENSITY8 */
- { 16409, 0x00008D91 }, /* GL_INTENSITY8I_EXT */
- { 16428, 0x00008D7F }, /* GL_INTENSITY8UI_EXT */
- { 16448, 0x0000804B }, /* GL_INTENSITY8_EXT */
- { 16466, 0x00008049 }, /* GL_INTENSITY_EXT */
- { 16483, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS */
- { 16506, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS_EXT */
- { 16533, 0x00008575 }, /* GL_INTERPOLATE */
- { 16548, 0x00008575 }, /* GL_INTERPOLATE_ARB */
- { 16567, 0x00008575 }, /* GL_INTERPOLATE_EXT */
- { 16586, 0x00008DF7 }, /* GL_INT_10_10_10_2_OES */
- { 16608, 0x00008DC9 }, /* GL_INT_SAMPLER_1D */
- { 16626, 0x00008DCE }, /* GL_INT_SAMPLER_1D_ARRAY */
- { 16650, 0x00008DCE }, /* GL_INT_SAMPLER_1D_ARRAY_EXT */
- { 16678, 0x00008DC9 }, /* GL_INT_SAMPLER_1D_EXT */
- { 16700, 0x00008DCA }, /* GL_INT_SAMPLER_2D */
- { 16718, 0x00008DCF }, /* GL_INT_SAMPLER_2D_ARRAY */
- { 16742, 0x00008DCF }, /* GL_INT_SAMPLER_2D_ARRAY_EXT */
- { 16770, 0x00008DCA }, /* GL_INT_SAMPLER_2D_EXT */
- { 16792, 0x00008DCD }, /* GL_INT_SAMPLER_2D_RECT */
- { 16815, 0x00008DCD }, /* GL_INT_SAMPLER_2D_RECT_EXT */
- { 16842, 0x00008DCB }, /* GL_INT_SAMPLER_3D */
- { 16860, 0x00008DCB }, /* GL_INT_SAMPLER_3D_EXT */
- { 16882, 0x00008DD0 }, /* GL_INT_SAMPLER_BUFFER */
- { 16904, 0x00008DD0 }, /* GL_INT_SAMPLER_BUFFER_EXT */
- { 16930, 0x00008DCC }, /* GL_INT_SAMPLER_CUBE */
- { 16950, 0x00008DCC }, /* GL_INT_SAMPLER_CUBE_EXT */
- { 16974, 0x00008B53 }, /* GL_INT_VEC2 */
- { 16986, 0x00008B53 }, /* GL_INT_VEC2_ARB */
- { 17002, 0x00008B54 }, /* GL_INT_VEC3 */
- { 17014, 0x00008B54 }, /* GL_INT_VEC3_ARB */
- { 17030, 0x00008B55 }, /* GL_INT_VEC4 */
- { 17042, 0x00008B55 }, /* GL_INT_VEC4_ARB */
- { 17058, 0x00000500 }, /* GL_INVALID_ENUM */
- { 17074, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION */
- { 17107, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */
- { 17144, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_OES */
- { 17181, 0x00000502 }, /* GL_INVALID_OPERATION */
- { 17202, 0x00000501 }, /* GL_INVALID_VALUE */
- { 17219, 0x0000862B }, /* GL_INVERSE_NV */
- { 17233, 0x0000862D }, /* GL_INVERSE_TRANSPOSE_NV */
- { 17257, 0x0000150A }, /* GL_INVERT */
- { 17267, 0x00001E00 }, /* GL_KEEP */
- { 17275, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION */
- { 17301, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION_EXT */
- { 17331, 0x00000406 }, /* GL_LEFT */
- { 17339, 0x00000203 }, /* GL_LEQUAL */
- { 17349, 0x00000201 }, /* GL_LESS */
- { 17357, 0x00004000 }, /* GL_LIGHT0 */
- { 17367, 0x00004001 }, /* GL_LIGHT1 */
- { 17377, 0x00004002 }, /* GL_LIGHT2 */
- { 17387, 0x00004003 }, /* GL_LIGHT3 */
- { 17397, 0x00004004 }, /* GL_LIGHT4 */
- { 17407, 0x00004005 }, /* GL_LIGHT5 */
- { 17417, 0x00004006 }, /* GL_LIGHT6 */
- { 17427, 0x00004007 }, /* GL_LIGHT7 */
- { 17437, 0x00000B50 }, /* GL_LIGHTING */
- { 17449, 0x00000040 }, /* GL_LIGHTING_BIT */
- { 17465, 0x00000B53 }, /* GL_LIGHT_MODEL_AMBIENT */
- { 17488, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL */
- { 17517, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL_EXT */
- { 17550, 0x00000B51 }, /* GL_LIGHT_MODEL_LOCAL_VIEWER */
- { 17578, 0x00000B52 }, /* GL_LIGHT_MODEL_TWO_SIDE */
- { 17602, 0x00001B01 }, /* GL_LINE */
- { 17610, 0x00002601 }, /* GL_LINEAR */
- { 17620, 0x00001208 }, /* GL_LINEAR_ATTENUATION */
- { 17642, 0x00008170 }, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */
- { 17672, 0x0000844F }, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */
- { 17703, 0x00002703 }, /* GL_LINEAR_MIPMAP_LINEAR */
- { 17727, 0x00002701 }, /* GL_LINEAR_MIPMAP_NEAREST */
- { 17752, 0x00000001 }, /* GL_LINES */
- { 17761, 0x0000000A }, /* GL_LINES_ADJACENCY */
- { 17780, 0x0000000A }, /* GL_LINES_ADJACENCY_ARB */
- { 17803, 0x00000004 }, /* GL_LINE_BIT */
- { 17815, 0x00000002 }, /* GL_LINE_LOOP */
- { 17828, 0x00000707 }, /* GL_LINE_RESET_TOKEN */
- { 17848, 0x00000B20 }, /* GL_LINE_SMOOTH */
- { 17863, 0x00000C52 }, /* GL_LINE_SMOOTH_HINT */
- { 17883, 0x00000B24 }, /* GL_LINE_STIPPLE */
- { 17899, 0x00000B25 }, /* GL_LINE_STIPPLE_PATTERN */
- { 17923, 0x00000B26 }, /* GL_LINE_STIPPLE_REPEAT */
- { 17946, 0x00000003 }, /* GL_LINE_STRIP */
- { 17960, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY */
- { 17984, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY_ARB */
- { 18012, 0x00000702 }, /* GL_LINE_TOKEN */
- { 18026, 0x00000B21 }, /* GL_LINE_WIDTH */
- { 18040, 0x00000B23 }, /* GL_LINE_WIDTH_GRANULARITY */
- { 18066, 0x00000B22 }, /* GL_LINE_WIDTH_RANGE */
- { 18086, 0x00008B82 }, /* GL_LINK_STATUS */
- { 18101, 0x00000B32 }, /* GL_LIST_BASE */
- { 18114, 0x00020000 }, /* GL_LIST_BIT */
- { 18126, 0x00000B33 }, /* GL_LIST_INDEX */
- { 18140, 0x00000B30 }, /* GL_LIST_MODE */
- { 18153, 0x00000101 }, /* GL_LOAD */
- { 18161, 0x00000BF1 }, /* GL_LOGIC_OP */
- { 18173, 0x00000BF0 }, /* GL_LOGIC_OP_MODE */
- { 18190, 0x00008CA1 }, /* GL_LOWER_LEFT */
- { 18204, 0x00008DF0 }, /* GL_LOW_FLOAT */
- { 18217, 0x00008DF3 }, /* GL_LOW_INT */
- { 18228, 0x00001909 }, /* GL_LUMINANCE */
- { 18241, 0x00008041 }, /* GL_LUMINANCE12 */
- { 18256, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12 */
- { 18279, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12_EXT */
- { 18306, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4 */
- { 18328, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4_EXT */
- { 18354, 0x00008041 }, /* GL_LUMINANCE12_EXT */
- { 18373, 0x00008042 }, /* GL_LUMINANCE16 */
- { 18388, 0x00008D8C }, /* GL_LUMINANCE16I_EXT */
- { 18408, 0x00008D7A }, /* GL_LUMINANCE16UI_EXT */
- { 18429, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16 */
- { 18452, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16_EXT */
- { 18479, 0x00008042 }, /* GL_LUMINANCE16_EXT */
- { 18498, 0x00008D86 }, /* GL_LUMINANCE32I_EXT */
- { 18518, 0x00008D74 }, /* GL_LUMINANCE32UI_EXT */
- { 18539, 0x0000803F }, /* GL_LUMINANCE4 */
- { 18553, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4 */
- { 18574, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4_EXT */
- { 18599, 0x0000803F }, /* GL_LUMINANCE4_EXT */
- { 18617, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2 */
- { 18638, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2_EXT */
- { 18663, 0x00008040 }, /* GL_LUMINANCE8 */
- { 18677, 0x00008D92 }, /* GL_LUMINANCE8I_EXT */
- { 18696, 0x00008D80 }, /* GL_LUMINANCE8UI_EXT */
- { 18716, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8 */
- { 18737, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8_EXT */
- { 18762, 0x00008040 }, /* GL_LUMINANCE8_EXT */
- { 18780, 0x0000190A }, /* GL_LUMINANCE_ALPHA */
- { 18799, 0x00008D8D }, /* GL_LUMINANCE_ALPHA16I_EXT */
- { 18825, 0x00008D7B }, /* GL_LUMINANCE_ALPHA16UI_EXT */
- { 18852, 0x00008D87 }, /* GL_LUMINANCE_ALPHA32I_EXT */
- { 18878, 0x00008D75 }, /* GL_LUMINANCE_ALPHA32UI_EXT */
- { 18905, 0x00008D93 }, /* GL_LUMINANCE_ALPHA8I_EXT */
- { 18930, 0x00008D81 }, /* GL_LUMINANCE_ALPHA8UI_EXT */
- { 18956, 0x00008D9D }, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */
- { 18987, 0x00008D9C }, /* GL_LUMINANCE_INTEGER_EXT */
- { 19012, 0x0000821B }, /* GL_MAJOR_VERSION */
- { 19029, 0x00000D90 }, /* GL_MAP1_COLOR_4 */
- { 19045, 0x00000DD0 }, /* GL_MAP1_GRID_DOMAIN */
- { 19065, 0x00000DD1 }, /* GL_MAP1_GRID_SEGMENTS */
- { 19087, 0x00000D91 }, /* GL_MAP1_INDEX */
- { 19101, 0x00000D92 }, /* GL_MAP1_NORMAL */
- { 19116, 0x00000D93 }, /* GL_MAP1_TEXTURE_COORD_1 */
- { 19140, 0x00000D94 }, /* GL_MAP1_TEXTURE_COORD_2 */
- { 19164, 0x00000D95 }, /* GL_MAP1_TEXTURE_COORD_3 */
- { 19188, 0x00000D96 }, /* GL_MAP1_TEXTURE_COORD_4 */
- { 19212, 0x00000D97 }, /* GL_MAP1_VERTEX_3 */
- { 19229, 0x00000D98 }, /* GL_MAP1_VERTEX_4 */
- { 19246, 0x00008660 }, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */
- { 19274, 0x0000866A }, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */
- { 19303, 0x0000866B }, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */
- { 19332, 0x0000866C }, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */
- { 19361, 0x0000866D }, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */
- { 19390, 0x0000866E }, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */
- { 19419, 0x0000866F }, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */
- { 19448, 0x00008661 }, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */
- { 19476, 0x00008662 }, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */
- { 19504, 0x00008663 }, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */
- { 19532, 0x00008664 }, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */
- { 19560, 0x00008665 }, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */
- { 19588, 0x00008666 }, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */
- { 19616, 0x00008667 }, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */
- { 19644, 0x00008668 }, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */
- { 19672, 0x00008669 }, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */
- { 19700, 0x00000DB0 }, /* GL_MAP2_COLOR_4 */
- { 19716, 0x00000DD2 }, /* GL_MAP2_GRID_DOMAIN */
- { 19736, 0x00000DD3 }, /* GL_MAP2_GRID_SEGMENTS */
- { 19758, 0x00000DB1 }, /* GL_MAP2_INDEX */
- { 19772, 0x00000DB2 }, /* GL_MAP2_NORMAL */
- { 19787, 0x00000DB3 }, /* GL_MAP2_TEXTURE_COORD_1 */
- { 19811, 0x00000DB4 }, /* GL_MAP2_TEXTURE_COORD_2 */
- { 19835, 0x00000DB5 }, /* GL_MAP2_TEXTURE_COORD_3 */
- { 19859, 0x00000DB6 }, /* GL_MAP2_TEXTURE_COORD_4 */
- { 19883, 0x00000DB7 }, /* GL_MAP2_VERTEX_3 */
- { 19900, 0x00000DB8 }, /* GL_MAP2_VERTEX_4 */
- { 19917, 0x00008670 }, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */
- { 19945, 0x0000867A }, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */
- { 19974, 0x0000867B }, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */
- { 20003, 0x0000867C }, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */
- { 20032, 0x0000867D }, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */
- { 20061, 0x0000867E }, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */
- { 20090, 0x0000867F }, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */
- { 20119, 0x00008671 }, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */
- { 20147, 0x00008672 }, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */
- { 20175, 0x00008673 }, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */
- { 20203, 0x00008674 }, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */
- { 20231, 0x00008675 }, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */
- { 20259, 0x00008676 }, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */
- { 20287, 0x00008677 }, /* GL_MAP2_VERTEX_ATTRIB7_4_NV */
- { 20315, 0x00008678 }, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */
- { 20343, 0x00008679 }, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */
- { 20371, 0x00000D10 }, /* GL_MAP_COLOR */
- { 20384, 0x00000010 }, /* GL_MAP_FLUSH_EXPLICIT_BIT */
- { 20410, 0x00000008 }, /* GL_MAP_INVALIDATE_BUFFER_BIT */
- { 20439, 0x00000004 }, /* GL_MAP_INVALIDATE_RANGE_BIT */
- { 20467, 0x00000001 }, /* GL_MAP_READ_BIT */
- { 20483, 0x00000D11 }, /* GL_MAP_STENCIL */
- { 20498, 0x00000020 }, /* GL_MAP_UNSYNCHRONIZED_BIT */
- { 20524, 0x00000002 }, /* GL_MAP_WRITE_BIT */
- { 20541, 0x000088C0 }, /* GL_MATRIX0_ARB */
- { 20556, 0x00008630 }, /* GL_MATRIX0_NV */
- { 20570, 0x000088CA }, /* GL_MATRIX10_ARB */
- { 20586, 0x000088CB }, /* GL_MATRIX11_ARB */
- { 20602, 0x000088CC }, /* GL_MATRIX12_ARB */
- { 20618, 0x000088CD }, /* GL_MATRIX13_ARB */
- { 20634, 0x000088CE }, /* GL_MATRIX14_ARB */
- { 20650, 0x000088CF }, /* GL_MATRIX15_ARB */
- { 20666, 0x000088D0 }, /* GL_MATRIX16_ARB */
- { 20682, 0x000088D1 }, /* GL_MATRIX17_ARB */
- { 20698, 0x000088D2 }, /* GL_MATRIX18_ARB */
- { 20714, 0x000088D3 }, /* GL_MATRIX19_ARB */
- { 20730, 0x000088C1 }, /* GL_MATRIX1_ARB */
- { 20745, 0x00008631 }, /* GL_MATRIX1_NV */
- { 20759, 0x000088D4 }, /* GL_MATRIX20_ARB */
- { 20775, 0x000088D5 }, /* GL_MATRIX21_ARB */
- { 20791, 0x000088D6 }, /* GL_MATRIX22_ARB */
- { 20807, 0x000088D7 }, /* GL_MATRIX23_ARB */
- { 20823, 0x000088D8 }, /* GL_MATRIX24_ARB */
- { 20839, 0x000088D9 }, /* GL_MATRIX25_ARB */
- { 20855, 0x000088DA }, /* GL_MATRIX26_ARB */
- { 20871, 0x000088DB }, /* GL_MATRIX27_ARB */
- { 20887, 0x000088DC }, /* GL_MATRIX28_ARB */
- { 20903, 0x000088DD }, /* GL_MATRIX29_ARB */
- { 20919, 0x000088C2 }, /* GL_MATRIX2_ARB */
- { 20934, 0x00008632 }, /* GL_MATRIX2_NV */
- { 20948, 0x000088DE }, /* GL_MATRIX30_ARB */
- { 20964, 0x000088DF }, /* GL_MATRIX31_ARB */
- { 20980, 0x000088C3 }, /* GL_MATRIX3_ARB */
- { 20995, 0x00008633 }, /* GL_MATRIX3_NV */
- { 21009, 0x000088C4 }, /* GL_MATRIX4_ARB */
- { 21024, 0x00008634 }, /* GL_MATRIX4_NV */
- { 21038, 0x000088C5 }, /* GL_MATRIX5_ARB */
- { 21053, 0x00008635 }, /* GL_MATRIX5_NV */
- { 21067, 0x000088C6 }, /* GL_MATRIX6_ARB */
- { 21082, 0x00008636 }, /* GL_MATRIX6_NV */
- { 21096, 0x000088C7 }, /* GL_MATRIX7_ARB */
- { 21111, 0x00008637 }, /* GL_MATRIX7_NV */
- { 21125, 0x000088C8 }, /* GL_MATRIX8_ARB */
- { 21140, 0x000088C9 }, /* GL_MATRIX9_ARB */
- { 21155, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_ARB */
- { 21181, 0x00008B9E }, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */
- { 21222, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_OES */
- { 21248, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */
- { 21282, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_OES */
- { 21316, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */
- { 21347, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_OES */
- { 21378, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */
- { 21411, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_OES */
- { 21444, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */
- { 21475, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_OES */
- { 21506, 0x00000BA0 }, /* GL_MATRIX_MODE */
- { 21521, 0x00008840 }, /* GL_MATRIX_PALETTE_ARB */
- { 21543, 0x00008840 }, /* GL_MATRIX_PALETTE_OES */
- { 21565, 0x00008008 }, /* GL_MAX */
- { 21572, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE */
- { 21595, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE_OES */
- { 21622, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS */
- { 21650, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */
- { 21682, 0x00000D35 }, /* GL_MAX_ATTRIB_STACK_DEPTH */
- { 21708, 0x00000D3B }, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */
- { 21741, 0x00008177 }, /* GL_MAX_CLIPMAP_DEPTH_SGIX */
- { 21767, 0x00008178 }, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */
- { 21801, 0x00000D32 }, /* GL_MAX_CLIP_DISTANCES */
- { 21823, 0x00000D32 }, /* GL_MAX_CLIP_PLANES */
- { 21842, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS */
- { 21867, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS_EXT */
- { 21896, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */
- { 21928, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI */
- { 21964, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */
- { 22000, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB */
- { 22040, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT */
- { 22066, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT_EXT */
- { 22096, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH */
- { 22121, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH_EXT */
- { 22150, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */
- { 22179, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB */
- { 22212, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES */
- { 22245, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS */
- { 22265, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ARB */
- { 22289, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ATI */
- { 22313, 0x000080E9 }, /* GL_MAX_ELEMENTS_INDICES */
- { 22337, 0x000080E8 }, /* GL_MAX_ELEMENTS_VERTICES */
- { 22362, 0x00000D30 }, /* GL_MAX_EVAL_ORDER */
- { 22380, 0x00008008 }, /* GL_MAX_EXT */
- { 22391, 0x00009125 }, /* GL_MAX_FRAGMENT_INPUT_COMPONENTS */
- { 22424, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */
- { 22459, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB */
- { 22498, 0x00008DFD }, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */
- { 22530, 0x00009123 }, /* GL_MAX_GEOMETRY_INPUT_COMPONENTS */
- { 22563, 0x00009124 }, /* GL_MAX_GEOMETRY_OUTPUT_COMPONENTS */
- { 22597, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES */
- { 22629, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB */
- { 22665, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS */
- { 22701, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB */
- { 22741, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS */
- { 22781, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB */
- { 22825, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS */
- { 22860, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB */
- { 22899, 0x00008DDD }, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */
- { 22938, 0x00000D31 }, /* GL_MAX_LIGHTS */
- { 22952, 0x00000B31 }, /* GL_MAX_LIST_NESTING */
- { 22972, 0x00008841 }, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */
- { 23010, 0x00000D36 }, /* GL_MAX_MODELVIEW_STACK_DEPTH */
- { 23039, 0x00000D37 }, /* GL_MAX_NAME_STACK_DEPTH */
- { 23063, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_ARB */
- { 23091, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_OES */
- { 23119, 0x00000D34 }, /* GL_MAX_PIXEL_MAP_TABLE */
- { 23142, 0x000088B1 }, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */
- { 23179, 0x0000880B }, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */
- { 23215, 0x000088AD }, /* GL_MAX_PROGRAM_ATTRIBS_ARB */
- { 23242, 0x000088F5 }, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */
- { 23271, 0x000088B5 }, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */
- { 23305, 0x000088F4 }, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */
- { 23341, 0x000088F6 }, /* GL_MAX_PROGRAM_IF_DEPTH_NV */
- { 23368, 0x000088A1 }, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */
- { 23400, 0x000088B4 }, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */
- { 23436, 0x000088F8 }, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */
- { 23465, 0x000088F7 }, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */
- { 23494, 0x0000862F }, /* GL_MAX_PROGRAM_MATRICES_ARB */
- { 23522, 0x0000862E }, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */
- { 23560, 0x000088B3 }, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
- { 23604, 0x0000880E }, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
- { 23647, 0x000088AF }, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */
- { 23681, 0x000088A3 }, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
- { 23720, 0x000088AB }, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */
- { 23757, 0x000088A7 }, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */
- { 23795, 0x00008810 }, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
- { 23838, 0x0000880F }, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
- { 23881, 0x000088A9 }, /* GL_MAX_PROGRAM_PARAMETERS_ARB */
- { 23911, 0x000088A5 }, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */
- { 23942, 0x00008905 }, /* GL_MAX_PROGRAM_TEXEL_OFFSET */
- { 23970, 0x00008905 }, /* GL_MAX_PROGRAM_TEXEL_OFFSET_EXT */
- { 24002, 0x0000880D }, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */
- { 24038, 0x0000880C }, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */
- { 24074, 0x00000D38 }, /* GL_MAX_PROJECTION_STACK_DEPTH */
- { 24104, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE */
- { 24134, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */
- { 24168, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_NV */
- { 24201, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE */
- { 24226, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_EXT */
- { 24255, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_OES */
- { 24284, 0x00008D57 }, /* GL_MAX_SAMPLES */
- { 24299, 0x00008D57 }, /* GL_MAX_SAMPLES_EXT */
- { 24318, 0x00009111 }, /* GL_MAX_SERVER_WAIT_TIMEOUT */
- { 24345, 0x00008504 }, /* GL_MAX_SHININESS_NV */
- { 24365, 0x00008505 }, /* GL_MAX_SPOT_EXPONENT_NV */
- { 24389, 0x00008C2B }, /* GL_MAX_TEXTURE_BUFFER_SIZE */
- { 24416, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS */
- { 24438, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS_ARB */
- { 24464, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS */
- { 24491, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS_ARB */
- { 24522, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS */
- { 24546, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS_EXT */
- { 24574, 0x000084FF }, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */
- { 24608, 0x00000D33 }, /* GL_MAX_TEXTURE_SIZE */
- { 24628, 0x00000D39 }, /* GL_MAX_TEXTURE_STACK_DEPTH */
- { 24655, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS */
- { 24676, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS_ARB */
- { 24701, 0x0000862F }, /* GL_MAX_TRACK_MATRICES_NV */
- { 24726, 0x0000862E }, /* GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV */
- { 24761, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS */
- { 24810, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT */
- { 24863, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS */
- { 24906, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT */
- { 24953, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS */
- { 24999, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT */
- { 25049, 0x00008B4B }, /* GL_MAX_VARYING_COMPONENTS */
- { 25075, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS */
- { 25097, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS_ARB */
- { 25123, 0x00008DFC }, /* GL_MAX_VARYING_VECTORS */
- { 25146, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS */
- { 25168, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS_ARB */
- { 25194, 0x00009122 }, /* GL_MAX_VERTEX_OUTPUT_COMPONENTS */
- { 25226, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */
- { 25260, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */
- { 25298, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */
- { 25331, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB */
- { 25368, 0x00008DFB }, /* GL_MAX_VERTEX_UNIFORM_VECTORS */
- { 25398, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_ARB */
- { 25422, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_OES */
- { 25446, 0x00008DDE }, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */
- { 25483, 0x00000D3A }, /* GL_MAX_VIEWPORT_DIMS */
- { 25504, 0x00008DF1 }, /* GL_MEDIUM_FLOAT */
- { 25520, 0x00008DF4 }, /* GL_MEDIUM_INT */
- { 25534, 0x00008007 }, /* GL_MIN */
- { 25541, 0x0000802E }, /* GL_MINMAX */
- { 25551, 0x0000802E }, /* GL_MINMAX_EXT */
- { 25565, 0x0000802F }, /* GL_MINMAX_FORMAT */
- { 25582, 0x0000802F }, /* GL_MINMAX_FORMAT_EXT */
- { 25603, 0x00008030 }, /* GL_MINMAX_SINK */
- { 25618, 0x00008030 }, /* GL_MINMAX_SINK_EXT */
- { 25637, 0x0000821C }, /* GL_MINOR_VERSION */
- { 25654, 0x00008007 }, /* GL_MIN_EXT */
- { 25665, 0x00008904 }, /* GL_MIN_PROGRAM_TEXEL_OFFSET */
- { 25693, 0x00008904 }, /* GL_MIN_PROGRAM_TEXEL_OFFSET_EXT */
- { 25725, 0x00008370 }, /* GL_MIRRORED_REPEAT */
- { 25744, 0x00008370 }, /* GL_MIRRORED_REPEAT_ARB */
- { 25767, 0x00008370 }, /* GL_MIRRORED_REPEAT_IBM */
- { 25790, 0x00008742 }, /* GL_MIRROR_CLAMP_ATI */
- { 25810, 0x00008742 }, /* GL_MIRROR_CLAMP_EXT */
- { 25830, 0x00008912 }, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */
- { 25860, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_ATI */
- { 25888, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */
- { 25916, 0x00001700 }, /* GL_MODELVIEW */
- { 25929, 0x00001700 }, /* GL_MODELVIEW0_ARB */
- { 25947, 0x0000872A }, /* GL_MODELVIEW10_ARB */
- { 25966, 0x0000872B }, /* GL_MODELVIEW11_ARB */
- { 25985, 0x0000872C }, /* GL_MODELVIEW12_ARB */
- { 26004, 0x0000872D }, /* GL_MODELVIEW13_ARB */
- { 26023, 0x0000872E }, /* GL_MODELVIEW14_ARB */
- { 26042, 0x0000872F }, /* GL_MODELVIEW15_ARB */
- { 26061, 0x00008730 }, /* GL_MODELVIEW16_ARB */
- { 26080, 0x00008731 }, /* GL_MODELVIEW17_ARB */
- { 26099, 0x00008732 }, /* GL_MODELVIEW18_ARB */
- { 26118, 0x00008733 }, /* GL_MODELVIEW19_ARB */
- { 26137, 0x0000850A }, /* GL_MODELVIEW1_ARB */
- { 26155, 0x00008734 }, /* GL_MODELVIEW20_ARB */
- { 26174, 0x00008735 }, /* GL_MODELVIEW21_ARB */
- { 26193, 0x00008736 }, /* GL_MODELVIEW22_ARB */
- { 26212, 0x00008737 }, /* GL_MODELVIEW23_ARB */
- { 26231, 0x00008738 }, /* GL_MODELVIEW24_ARB */
- { 26250, 0x00008739 }, /* GL_MODELVIEW25_ARB */
- { 26269, 0x0000873A }, /* GL_MODELVIEW26_ARB */
- { 26288, 0x0000873B }, /* GL_MODELVIEW27_ARB */
- { 26307, 0x0000873C }, /* GL_MODELVIEW28_ARB */
- { 26326, 0x0000873D }, /* GL_MODELVIEW29_ARB */
- { 26345, 0x00008722 }, /* GL_MODELVIEW2_ARB */
- { 26363, 0x0000873E }, /* GL_MODELVIEW30_ARB */
- { 26382, 0x0000873F }, /* GL_MODELVIEW31_ARB */
- { 26401, 0x00008723 }, /* GL_MODELVIEW3_ARB */
- { 26419, 0x00008724 }, /* GL_MODELVIEW4_ARB */
- { 26437, 0x00008725 }, /* GL_MODELVIEW5_ARB */
- { 26455, 0x00008726 }, /* GL_MODELVIEW6_ARB */
- { 26473, 0x00008727 }, /* GL_MODELVIEW7_ARB */
- { 26491, 0x00008728 }, /* GL_MODELVIEW8_ARB */
- { 26509, 0x00008729 }, /* GL_MODELVIEW9_ARB */
- { 26527, 0x00000BA6 }, /* GL_MODELVIEW_MATRIX */
- { 26547, 0x0000898D }, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */
- { 26589, 0x00008629 }, /* GL_MODELVIEW_PROJECTION_NV */
- { 26616, 0x00000BA3 }, /* GL_MODELVIEW_STACK_DEPTH */
- { 26641, 0x00002100 }, /* GL_MODULATE */
- { 26653, 0x00008744 }, /* GL_MODULATE_ADD_ATI */
- { 26673, 0x00008745 }, /* GL_MODULATE_SIGNED_ADD_ATI */
- { 26700, 0x00008746 }, /* GL_MODULATE_SUBTRACT_ATI */
- { 26725, 0x00000103 }, /* GL_MULT */
- { 26733, 0x0000809D }, /* GL_MULTISAMPLE */
- { 26748, 0x000086B2 }, /* GL_MULTISAMPLE_3DFX */
- { 26768, 0x0000809D }, /* GL_MULTISAMPLE_ARB */
- { 26787, 0x20000000 }, /* GL_MULTISAMPLE_BIT */
- { 26806, 0x20000000 }, /* GL_MULTISAMPLE_BIT_3DFX */
- { 26830, 0x20000000 }, /* GL_MULTISAMPLE_BIT_ARB */
- { 26853, 0x00008534 }, /* GL_MULTISAMPLE_FILTER_HINT_NV */
- { 26883, 0x00002A25 }, /* GL_N3F_V3F */
- { 26894, 0x00000D70 }, /* GL_NAME_STACK_DEPTH */
- { 26914, 0x0000150E }, /* GL_NAND */
- { 26922, 0x00002600 }, /* GL_NEAREST */
- { 26933, 0x0000844E }, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */
- { 26964, 0x0000844D }, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */
- { 26996, 0x00002702 }, /* GL_NEAREST_MIPMAP_LINEAR */
- { 27021, 0x00002700 }, /* GL_NEAREST_MIPMAP_NEAREST */
- { 27047, 0x00000200 }, /* GL_NEVER */
- { 27056, 0x00001102 }, /* GL_NICEST */
- { 27066, 0x00000000 }, /* GL_NONE */
- { 27074, 0x00000000 }, /* GL_NONE_OES */
- { 27086, 0x00001505 }, /* GL_NOOP */
- { 27094, 0x00001508 }, /* GL_NOR */
- { 27101, 0x00000BA1 }, /* GL_NORMALIZE */
- { 27114, 0x00008075 }, /* GL_NORMAL_ARRAY */
- { 27130, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING */
- { 27161, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING_ARB */
- { 27196, 0x0000808F }, /* GL_NORMAL_ARRAY_POINTER */
- { 27220, 0x0000807F }, /* GL_NORMAL_ARRAY_STRIDE */
- { 27243, 0x0000807E }, /* GL_NORMAL_ARRAY_TYPE */
- { 27264, 0x00008511 }, /* GL_NORMAL_MAP */
- { 27278, 0x00008511 }, /* GL_NORMAL_MAP_ARB */
- { 27296, 0x00008511 }, /* GL_NORMAL_MAP_NV */
- { 27313, 0x00008511 }, /* GL_NORMAL_MAP_OES */
- { 27331, 0x00000205 }, /* GL_NOTEQUAL */
- { 27343, 0x00000000 }, /* GL_NO_ERROR */
- { 27355, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */
- { 27389, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB */
- { 27427, 0x0000821D }, /* GL_NUM_EXTENSIONS */
- { 27445, 0x000087FE }, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */
- { 27479, 0x00008DF9 }, /* GL_NUM_SHADER_BINARY_FORMATS */
- { 27508, 0x00008B89 }, /* GL_OBJECT_ACTIVE_ATTRIBUTES_ARB */
- { 27540, 0x00008B8A }, /* GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB */
- { 27582, 0x00008B86 }, /* GL_OBJECT_ACTIVE_UNIFORMS_ARB */
- { 27612, 0x00008B87 }, /* GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB */
- { 27652, 0x00008B85 }, /* GL_OBJECT_ATTACHED_OBJECTS_ARB */
- { 27683, 0x00008B81 }, /* GL_OBJECT_COMPILE_STATUS_ARB */
- { 27712, 0x00008B80 }, /* GL_OBJECT_DELETE_STATUS_ARB */
- { 27740, 0x00008B84 }, /* GL_OBJECT_INFO_LOG_LENGTH_ARB */
- { 27770, 0x00002401 }, /* GL_OBJECT_LINEAR */
- { 27787, 0x00008B82 }, /* GL_OBJECT_LINK_STATUS_ARB */
- { 27813, 0x00002501 }, /* GL_OBJECT_PLANE */
- { 27829, 0x00008B88 }, /* GL_OBJECT_SHADER_SOURCE_LENGTH_ARB */
- { 27864, 0x00008B4F }, /* GL_OBJECT_SUBTYPE_ARB */
- { 27886, 0x00009112 }, /* GL_OBJECT_TYPE */
- { 27901, 0x00008B4E }, /* GL_OBJECT_TYPE_ARB */
- { 27920, 0x00008B83 }, /* GL_OBJECT_VALIDATE_STATUS_ARB */
- { 27950, 0x00008165 }, /* GL_OCCLUSION_TEST_HP */
- { 27971, 0x00008166 }, /* GL_OCCLUSION_TEST_RESULT_HP */
- { 27999, 0x00000001 }, /* GL_ONE */
- { 28006, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA */
- { 28034, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA_EXT */
- { 28066, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR */
- { 28094, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR_EXT */
- { 28126, 0x00000305 }, /* GL_ONE_MINUS_DST_ALPHA */
- { 28149, 0x00000307 }, /* GL_ONE_MINUS_DST_COLOR */
- { 28172, 0x00000303 }, /* GL_ONE_MINUS_SRC_ALPHA */
- { 28195, 0x00000301 }, /* GL_ONE_MINUS_SRC_COLOR */
- { 28218, 0x00008598 }, /* GL_OPERAND0_ALPHA */
- { 28236, 0x00008598 }, /* GL_OPERAND0_ALPHA_ARB */
- { 28258, 0x00008598 }, /* GL_OPERAND0_ALPHA_EXT */
- { 28280, 0x00008590 }, /* GL_OPERAND0_RGB */
- { 28296, 0x00008590 }, /* GL_OPERAND0_RGB_ARB */
- { 28316, 0x00008590 }, /* GL_OPERAND0_RGB_EXT */
- { 28336, 0x00008599 }, /* GL_OPERAND1_ALPHA */
- { 28354, 0x00008599 }, /* GL_OPERAND1_ALPHA_ARB */
- { 28376, 0x00008599 }, /* GL_OPERAND1_ALPHA_EXT */
- { 28398, 0x00008591 }, /* GL_OPERAND1_RGB */
- { 28414, 0x00008591 }, /* GL_OPERAND1_RGB_ARB */
- { 28434, 0x00008591 }, /* GL_OPERAND1_RGB_EXT */
- { 28454, 0x0000859A }, /* GL_OPERAND2_ALPHA */
- { 28472, 0x0000859A }, /* GL_OPERAND2_ALPHA_ARB */
- { 28494, 0x0000859A }, /* GL_OPERAND2_ALPHA_EXT */
- { 28516, 0x00008592 }, /* GL_OPERAND2_RGB */
- { 28532, 0x00008592 }, /* GL_OPERAND2_RGB_ARB */
- { 28552, 0x00008592 }, /* GL_OPERAND2_RGB_EXT */
- { 28572, 0x0000859B }, /* GL_OPERAND3_ALPHA_NV */
- { 28593, 0x00008593 }, /* GL_OPERAND3_RGB_NV */
- { 28612, 0x00001507 }, /* GL_OR */
- { 28618, 0x00000A01 }, /* GL_ORDER */
- { 28627, 0x0000150D }, /* GL_OR_INVERTED */
- { 28642, 0x0000150B }, /* GL_OR_REVERSE */
- { 28656, 0x00000505 }, /* GL_OUT_OF_MEMORY */
- { 28673, 0x00000D05 }, /* GL_PACK_ALIGNMENT */
- { 28691, 0x0000806C }, /* GL_PACK_IMAGE_HEIGHT */
- { 28712, 0x00008758 }, /* GL_PACK_INVERT_MESA */
- { 28732, 0x00000D01 }, /* GL_PACK_LSB_FIRST */
- { 28750, 0x00000D02 }, /* GL_PACK_ROW_LENGTH */
- { 28769, 0x0000806B }, /* GL_PACK_SKIP_IMAGES */
- { 28789, 0x00000D04 }, /* GL_PACK_SKIP_PIXELS */
- { 28809, 0x00000D03 }, /* GL_PACK_SKIP_ROWS */
- { 28827, 0x00000D00 }, /* GL_PACK_SWAP_BYTES */
- { 28846, 0x00008B92 }, /* GL_PALETTE4_R5_G6_B5_OES */
- { 28871, 0x00008B94 }, /* GL_PALETTE4_RGB5_A1_OES */
- { 28895, 0x00008B90 }, /* GL_PALETTE4_RGB8_OES */
- { 28916, 0x00008B93 }, /* GL_PALETTE4_RGBA4_OES */
- { 28938, 0x00008B91 }, /* GL_PALETTE4_RGBA8_OES */
- { 28960, 0x00008B97 }, /* GL_PALETTE8_R5_G6_B5_OES */
- { 28985, 0x00008B99 }, /* GL_PALETTE8_RGB5_A1_OES */
- { 29009, 0x00008B95 }, /* GL_PALETTE8_RGB8_OES */
- { 29030, 0x00008B98 }, /* GL_PALETTE8_RGBA4_OES */
- { 29052, 0x00008B96 }, /* GL_PALETTE8_RGBA8_OES */
- { 29074, 0x00000700 }, /* GL_PASS_THROUGH_TOKEN */
- { 29096, 0x00000C50 }, /* GL_PERSPECTIVE_CORRECTION_HINT */
- { 29127, 0x00000C79 }, /* GL_PIXEL_MAP_A_TO_A */
- { 29147, 0x00000CB9 }, /* GL_PIXEL_MAP_A_TO_A_SIZE */
- { 29172, 0x00000C78 }, /* GL_PIXEL_MAP_B_TO_B */
- { 29192, 0x00000CB8 }, /* GL_PIXEL_MAP_B_TO_B_SIZE */
- { 29217, 0x00000C77 }, /* GL_PIXEL_MAP_G_TO_G */
- { 29237, 0x00000CB7 }, /* GL_PIXEL_MAP_G_TO_G_SIZE */
- { 29262, 0x00000C75 }, /* GL_PIXEL_MAP_I_TO_A */
- { 29282, 0x00000CB5 }, /* GL_PIXEL_MAP_I_TO_A_SIZE */
- { 29307, 0x00000C74 }, /* GL_PIXEL_MAP_I_TO_B */
- { 29327, 0x00000CB4 }, /* GL_PIXEL_MAP_I_TO_B_SIZE */
- { 29352, 0x00000C73 }, /* GL_PIXEL_MAP_I_TO_G */
- { 29372, 0x00000CB3 }, /* GL_PIXEL_MAP_I_TO_G_SIZE */
- { 29397, 0x00000C70 }, /* GL_PIXEL_MAP_I_TO_I */
- { 29417, 0x00000CB0 }, /* GL_PIXEL_MAP_I_TO_I_SIZE */
- { 29442, 0x00000C72 }, /* GL_PIXEL_MAP_I_TO_R */
- { 29462, 0x00000CB2 }, /* GL_PIXEL_MAP_I_TO_R_SIZE */
- { 29487, 0x00000C76 }, /* GL_PIXEL_MAP_R_TO_R */
- { 29507, 0x00000CB6 }, /* GL_PIXEL_MAP_R_TO_R_SIZE */
- { 29532, 0x00000C71 }, /* GL_PIXEL_MAP_S_TO_S */
- { 29552, 0x00000CB1 }, /* GL_PIXEL_MAP_S_TO_S_SIZE */
- { 29577, 0x00000020 }, /* GL_PIXEL_MODE_BIT */
- { 29595, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER */
- { 29616, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING */
- { 29645, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING_EXT */
- { 29678, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER_EXT */
- { 29703, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER */
- { 29726, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING */
- { 29757, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING_EXT */
- { 29792, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER_EXT */
- { 29819, 0x00001B00 }, /* GL_POINT */
- { 29828, 0x00000000 }, /* GL_POINTS */
- { 29838, 0x00000002 }, /* GL_POINT_BIT */
- { 29851, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION */
- { 29881, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_ARB */
- { 29915, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_EXT */
- { 29949, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_SGIS */
- { 29984, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE */
- { 30013, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_ARB */
- { 30046, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_EXT */
- { 30079, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_SGIS */
- { 30113, 0x00000B11 }, /* GL_POINT_SIZE */
- { 30127, 0x00008B9F }, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */
- { 30166, 0x00008B9C }, /* GL_POINT_SIZE_ARRAY_OES */
- { 30190, 0x0000898C }, /* GL_POINT_SIZE_ARRAY_POINTER_OES */
- { 30222, 0x0000898B }, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */
- { 30253, 0x0000898A }, /* GL_POINT_SIZE_ARRAY_TYPE_OES */
- { 30282, 0x00000B13 }, /* GL_POINT_SIZE_GRANULARITY */
- { 30308, 0x00008127 }, /* GL_POINT_SIZE_MAX */
- { 30326, 0x00008127 }, /* GL_POINT_SIZE_MAX_ARB */
- { 30348, 0x00008127 }, /* GL_POINT_SIZE_MAX_EXT */
- { 30370, 0x00008127 }, /* GL_POINT_SIZE_MAX_SGIS */
- { 30393, 0x00008126 }, /* GL_POINT_SIZE_MIN */
- { 30411, 0x00008126 }, /* GL_POINT_SIZE_MIN_ARB */
- { 30433, 0x00008126 }, /* GL_POINT_SIZE_MIN_EXT */
- { 30455, 0x00008126 }, /* GL_POINT_SIZE_MIN_SGIS */
- { 30478, 0x00000B12 }, /* GL_POINT_SIZE_RANGE */
- { 30498, 0x00000B10 }, /* GL_POINT_SMOOTH */
- { 30514, 0x00000C51 }, /* GL_POINT_SMOOTH_HINT */
- { 30535, 0x00008861 }, /* GL_POINT_SPRITE */
- { 30551, 0x00008861 }, /* GL_POINT_SPRITE_ARB */
- { 30571, 0x00008CA0 }, /* GL_POINT_SPRITE_COORD_ORIGIN */
- { 30600, 0x00008861 }, /* GL_POINT_SPRITE_NV */
- { 30619, 0x00008861 }, /* GL_POINT_SPRITE_OES */
- { 30639, 0x00008863 }, /* GL_POINT_SPRITE_R_MODE_NV */
- { 30665, 0x00000701 }, /* GL_POINT_TOKEN */
- { 30680, 0x00000009 }, /* GL_POLYGON */
- { 30691, 0x00000008 }, /* GL_POLYGON_BIT */
- { 30706, 0x00000B40 }, /* GL_POLYGON_MODE */
- { 30722, 0x00008039 }, /* GL_POLYGON_OFFSET_BIAS */
- { 30745, 0x00008038 }, /* GL_POLYGON_OFFSET_FACTOR */
- { 30770, 0x00008037 }, /* GL_POLYGON_OFFSET_FILL */
- { 30793, 0x00002A02 }, /* GL_POLYGON_OFFSET_LINE */
- { 30816, 0x00002A01 }, /* GL_POLYGON_OFFSET_POINT */
- { 30840, 0x00002A00 }, /* GL_POLYGON_OFFSET_UNITS */
- { 30864, 0x00000B41 }, /* GL_POLYGON_SMOOTH */
- { 30882, 0x00000C53 }, /* GL_POLYGON_SMOOTH_HINT */
- { 30905, 0x00000B42 }, /* GL_POLYGON_STIPPLE */
- { 30924, 0x00000010 }, /* GL_POLYGON_STIPPLE_BIT */
- { 30947, 0x00000703 }, /* GL_POLYGON_TOKEN */
- { 30964, 0x00001203 }, /* GL_POSITION */
- { 30976, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */
- { 31008, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI */
- { 31044, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */
- { 31077, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI */
- { 31114, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */
- { 31145, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI */
- { 31180, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */
- { 31212, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI */
- { 31248, 0x000080D2 }, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */
- { 31281, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */
- { 31313, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI */
- { 31349, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */
- { 31382, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI */
- { 31419, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS */
- { 31449, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS_SGI */
- { 31483, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE */
- { 31514, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE_SGI */
- { 31549, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS */
- { 31580, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS_EXT */
- { 31615, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE */
- { 31647, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE_EXT */
- { 31683, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS */
- { 31713, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS_EXT */
- { 31747, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE */
- { 31778, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE_EXT */
- { 31813, 0x000080D1 }, /* GL_POST_CONVOLUTION_COLOR_TABLE */
- { 31845, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS */
- { 31876, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS_EXT */
- { 31911, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE */
- { 31943, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE_EXT */
- { 31979, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS */
- { 32008, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS_EXT */
- { 32041, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE */
- { 32071, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE_EXT */
- { 32105, 0x0000817B }, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */
- { 32144, 0x00008179 }, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */
- { 32177, 0x0000817C }, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */
- { 32217, 0x0000817A }, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */
- { 32251, 0x00008578 }, /* GL_PREVIOUS */
- { 32263, 0x00008578 }, /* GL_PREVIOUS_ARB */
- { 32279, 0x00008578 }, /* GL_PREVIOUS_EXT */
- { 32295, 0x00008577 }, /* GL_PRIMARY_COLOR */
- { 32312, 0x00008577 }, /* GL_PRIMARY_COLOR_ARB */
- { 32333, 0x00008577 }, /* GL_PRIMARY_COLOR_EXT */
- { 32354, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED */
- { 32378, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED_EXT */
- { 32406, 0x00008F9D }, /* GL_PRIMITIVE_RESTART */
- { 32427, 0x00008F9E }, /* GL_PRIMITIVE_RESTART_INDEX */
- { 32454, 0x00008559 }, /* GL_PRIMITIVE_RESTART_INDEX_NV */
- { 32484, 0x00008558 }, /* GL_PRIMITIVE_RESTART_NV */
- { 32508, 0x000088B0 }, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */
- { 32541, 0x00008805 }, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */
- { 32573, 0x000088AC }, /* GL_PROGRAM_ATTRIBS_ARB */
- { 32596, 0x000087FF }, /* GL_PROGRAM_BINARY_FORMATS_OES */
- { 32626, 0x00008741 }, /* GL_PROGRAM_BINARY_LENGTH_OES */
- { 32655, 0x00008677 }, /* GL_PROGRAM_BINDING_ARB */
- { 32678, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_ARB */
- { 32708, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_NV */
- { 32737, 0x00008874 }, /* GL_PROGRAM_ERROR_STRING_ARB */
- { 32765, 0x00008876 }, /* GL_PROGRAM_FORMAT_ARB */
- { 32787, 0x00008875 }, /* GL_PROGRAM_FORMAT_ASCII_ARB */
- { 32815, 0x000088A0 }, /* GL_PROGRAM_INSTRUCTIONS_ARB */
- { 32843, 0x00008627 }, /* GL_PROGRAM_LENGTH_ARB */
- { 32865, 0x00008627 }, /* GL_PROGRAM_LENGTH_NV */
- { 32886, 0x000088B2 }, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
- { 32926, 0x00008808 }, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
- { 32965, 0x000088AE }, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */
- { 32995, 0x000088A2 }, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
- { 33030, 0x000088AA }, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */
- { 33063, 0x000088A6 }, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */
- { 33097, 0x0000880A }, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
- { 33136, 0x00008809 }, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
- { 33175, 0x00008B40 }, /* GL_PROGRAM_OBJECT_ARB */
- { 33197, 0x000088A8 }, /* GL_PROGRAM_PARAMETERS_ARB */
- { 33223, 0x00008644 }, /* GL_PROGRAM_PARAMETER_NV */
- { 33247, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE */
- { 33269, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE_ARB */
- { 33295, 0x00008647 }, /* GL_PROGRAM_RESIDENT_NV */
- { 33318, 0x00008628 }, /* GL_PROGRAM_STRING_ARB */
- { 33340, 0x00008628 }, /* GL_PROGRAM_STRING_NV */
- { 33361, 0x00008646 }, /* GL_PROGRAM_TARGET_NV */
- { 33382, 0x000088A4 }, /* GL_PROGRAM_TEMPORARIES_ARB */
- { 33409, 0x00008807 }, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */
- { 33441, 0x00008806 }, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */
- { 33473, 0x000088B6 }, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */
- { 33508, 0x00001701 }, /* GL_PROJECTION */
- { 33522, 0x00000BA7 }, /* GL_PROJECTION_MATRIX */
- { 33543, 0x0000898E }, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */
- { 33586, 0x00000BA4 }, /* GL_PROJECTION_STACK_DEPTH */
- { 33612, 0x00008E4F }, /* GL_PROVOKING_VERTEX */
- { 33632, 0x00008E4F }, /* GL_PROVOKING_VERTEX_EXT */
- { 33656, 0x000080D3 }, /* GL_PROXY_COLOR_TABLE */
- { 33677, 0x00008025 }, /* GL_PROXY_HISTOGRAM */
- { 33696, 0x00008025 }, /* GL_PROXY_HISTOGRAM_EXT */
- { 33719, 0x000080D5 }, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */
- { 33758, 0x000080D4 }, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */
- { 33796, 0x00008063 }, /* GL_PROXY_TEXTURE_1D */
- { 33816, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY */
- { 33842, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */
- { 33872, 0x00008063 }, /* GL_PROXY_TEXTURE_1D_EXT */
- { 33896, 0x00008064 }, /* GL_PROXY_TEXTURE_2D */
- { 33916, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY */
- { 33942, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */
- { 33972, 0x00008064 }, /* GL_PROXY_TEXTURE_2D_EXT */
- { 33996, 0x00008070 }, /* GL_PROXY_TEXTURE_3D */
- { 34016, 0x000080BD }, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */
- { 34049, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP */
- { 34075, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP_ARB */
- { 34105, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE */
- { 34132, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */
- { 34163, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_NV */
- { 34193, 0x00008A1D }, /* GL_PURGEABLE_APPLE */
- { 34212, 0x00002003 }, /* GL_Q */
- { 34217, 0x00001209 }, /* GL_QUADRATIC_ATTENUATION */
- { 34242, 0x00000007 }, /* GL_QUADS */
- { 34251, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */
- { 34295, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT */
- { 34343, 0x00008614 }, /* GL_QUAD_MESH_SUN */
- { 34360, 0x00000008 }, /* GL_QUAD_STRIP */
- { 34374, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT */
- { 34401, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT_NV */
- { 34431, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT */
- { 34455, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT_NV */
- { 34482, 0x00008864 }, /* GL_QUERY_COUNTER_BITS */
- { 34504, 0x00008864 }, /* GL_QUERY_COUNTER_BITS_ARB */
- { 34530, 0x00008E14 }, /* GL_QUERY_NO_WAIT */
- { 34547, 0x00008E14 }, /* GL_QUERY_NO_WAIT_NV */
- { 34567, 0x00008866 }, /* GL_QUERY_RESULT */
- { 34583, 0x00008866 }, /* GL_QUERY_RESULT_ARB */
- { 34603, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE */
- { 34629, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE_ARB */
- { 34659, 0x00008E13 }, /* GL_QUERY_WAIT */
- { 34673, 0x00008E13 }, /* GL_QUERY_WAIT_NV */
- { 34690, 0x00002002 }, /* GL_R */
- { 34695, 0x00008C3A }, /* GL_R11F_G11F_B10F */
- { 34713, 0x00008F98 }, /* GL_R16_SNORM */
- { 34726, 0x00002A10 }, /* GL_R3_G3_B2 */
- { 34738, 0x00008F94 }, /* GL_R8_SNORM */
- { 34750, 0x00008C89 }, /* GL_RASTERIZER_DISCARD */
- { 34772, 0x00008C89 }, /* GL_RASTERIZER_DISCARD_EXT */
- { 34798, 0x00019262 }, /* GL_RASTER_POSITION_UNCLIPPED_IBM */
- { 34831, 0x00000C02 }, /* GL_READ_BUFFER */
- { 34846, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER */
- { 34866, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING */
- { 34894, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING_EXT */
- { 34926, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER_EXT */
- { 34950, 0x000088B8 }, /* GL_READ_ONLY */
- { 34963, 0x000088B8 }, /* GL_READ_ONLY_ARB */
- { 34980, 0x000088BA }, /* GL_READ_WRITE */
- { 34994, 0x000088BA }, /* GL_READ_WRITE_ARB */
- { 35012, 0x00001903 }, /* GL_RED */
- { 35019, 0x00008016 }, /* GL_REDUCE */
- { 35029, 0x00008016 }, /* GL_REDUCE_EXT */
- { 35043, 0x00000D15 }, /* GL_RED_BIAS */
- { 35055, 0x00000D52 }, /* GL_RED_BITS */
- { 35067, 0x00008D94 }, /* GL_RED_INTEGER */
- { 35082, 0x00008D94 }, /* GL_RED_INTEGER_EXT */
- { 35101, 0x00000D14 }, /* GL_RED_SCALE */
- { 35114, 0x00008F90 }, /* GL_RED_SNORM */
- { 35127, 0x00008512 }, /* GL_REFLECTION_MAP */
- { 35145, 0x00008512 }, /* GL_REFLECTION_MAP_ARB */
- { 35167, 0x00008512 }, /* GL_REFLECTION_MAP_NV */
- { 35188, 0x00008512 }, /* GL_REFLECTION_MAP_OES */
- { 35210, 0x00008A19 }, /* GL_RELEASED_APPLE */
- { 35228, 0x00001C00 }, /* GL_RENDER */
- { 35238, 0x00008D41 }, /* GL_RENDERBUFFER */
- { 35254, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE */
- { 35281, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE_OES */
- { 35312, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING */
- { 35336, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_EXT */
- { 35364, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_OES */
- { 35392, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE */
- { 35418, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE_OES */
- { 35448, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE */
- { 35475, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE_OES */
- { 35506, 0x00008D41 }, /* GL_RENDERBUFFER_EXT */
- { 35526, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE */
- { 35553, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE_OES */
- { 35584, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT */
- { 35607, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_EXT */
- { 35634, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_OES */
- { 35661, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT */
- { 35693, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */
- { 35729, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_OES */
- { 35765, 0x00008D41 }, /* GL_RENDERBUFFER_OES */
- { 35785, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE */
- { 35810, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE_OES */
- { 35839, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES */
- { 35863, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES_EXT */
- { 35891, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE */
- { 35920, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE_OES */
- { 35953, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH */
- { 35975, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_EXT */
- { 36001, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_OES */
- { 36027, 0x00001F01 }, /* GL_RENDERER */
- { 36039, 0x00000C40 }, /* GL_RENDER_MODE */
- { 36054, 0x00002901 }, /* GL_REPEAT */
- { 36064, 0x00001E01 }, /* GL_REPLACE */
- { 36075, 0x00008062 }, /* GL_REPLACE_EXT */
- { 36090, 0x00008153 }, /* GL_REPLICATE_BORDER_HP */
- { 36113, 0x0000803A }, /* GL_RESCALE_NORMAL */
- { 36131, 0x0000803A }, /* GL_RESCALE_NORMAL_EXT */
- { 36153, 0x00008A1B }, /* GL_RETAINED_APPLE */
- { 36171, 0x00000102 }, /* GL_RETURN */
- { 36181, 0x00008F99 }, /* GL_RG16_SNORM */
- { 36195, 0x00008F95 }, /* GL_RG8_SNORM */
- { 36208, 0x00001907 }, /* GL_RGB */
- { 36215, 0x00008052 }, /* GL_RGB10 */
- { 36224, 0x00008059 }, /* GL_RGB10_A2 */
- { 36236, 0x00008059 }, /* GL_RGB10_A2_EXT */
- { 36252, 0x00008052 }, /* GL_RGB10_EXT */
- { 36265, 0x00008053 }, /* GL_RGB12 */
- { 36274, 0x00008053 }, /* GL_RGB12_EXT */
- { 36287, 0x00008054 }, /* GL_RGB16 */
- { 36296, 0x0000881B }, /* GL_RGB16F */
- { 36306, 0x00008D89 }, /* GL_RGB16I */
- { 36316, 0x00008D89 }, /* GL_RGB16I_EXT */
- { 36330, 0x00008D77 }, /* GL_RGB16UI */
- { 36341, 0x00008D77 }, /* GL_RGB16UI_EXT */
- { 36356, 0x00008054 }, /* GL_RGB16_EXT */
- { 36369, 0x00008F9A }, /* GL_RGB16_SNORM */
- { 36384, 0x0000804E }, /* GL_RGB2_EXT */
- { 36396, 0x00008815 }, /* GL_RGB32F */
- { 36406, 0x00008D83 }, /* GL_RGB32I */
- { 36416, 0x00008D83 }, /* GL_RGB32I_EXT */
- { 36430, 0x00008D71 }, /* GL_RGB32UI */
- { 36441, 0x00008D71 }, /* GL_RGB32UI_EXT */
- { 36456, 0x0000804F }, /* GL_RGB4 */
- { 36464, 0x0000804F }, /* GL_RGB4_EXT */
- { 36476, 0x000083A1 }, /* GL_RGB4_S3TC */
- { 36489, 0x00008050 }, /* GL_RGB5 */
- { 36497, 0x00008D62 }, /* GL_RGB565 */
- { 36507, 0x00008D62 }, /* GL_RGB565_OES */
- { 36521, 0x00008057 }, /* GL_RGB5_A1 */
- { 36532, 0x00008057 }, /* GL_RGB5_A1_EXT */
- { 36547, 0x00008057 }, /* GL_RGB5_A1_OES */
- { 36562, 0x00008050 }, /* GL_RGB5_EXT */
- { 36574, 0x00008051 }, /* GL_RGB8 */
- { 36582, 0x00008D8F }, /* GL_RGB8I */
- { 36591, 0x00008D8F }, /* GL_RGB8I_EXT */
- { 36604, 0x00008D7D }, /* GL_RGB8UI */
- { 36614, 0x00008D7D }, /* GL_RGB8UI_EXT */
- { 36628, 0x00008051 }, /* GL_RGB8_EXT */
- { 36640, 0x00008051 }, /* GL_RGB8_OES */
- { 36652, 0x00008F96 }, /* GL_RGB8_SNORM */
- { 36666, 0x00008C3D }, /* GL_RGB9_E5 */
- { 36677, 0x00001908 }, /* GL_RGBA */
- { 36685, 0x0000805A }, /* GL_RGBA12 */
- { 36695, 0x0000805A }, /* GL_RGBA12_EXT */
- { 36709, 0x0000805B }, /* GL_RGBA16 */
- { 36719, 0x0000881A }, /* GL_RGBA16F */
- { 36730, 0x00008D88 }, /* GL_RGBA16I */
- { 36741, 0x00008D88 }, /* GL_RGBA16I_EXT */
- { 36756, 0x00008D76 }, /* GL_RGBA16UI */
- { 36768, 0x00008D76 }, /* GL_RGBA16UI_EXT */
- { 36784, 0x0000805B }, /* GL_RGBA16_EXT */
- { 36798, 0x00008F9B }, /* GL_RGBA16_SNORM */
- { 36814, 0x00008055 }, /* GL_RGBA2 */
- { 36823, 0x00008055 }, /* GL_RGBA2_EXT */
- { 36836, 0x00008814 }, /* GL_RGBA32F */
- { 36847, 0x00008D82 }, /* GL_RGBA32I */
- { 36858, 0x00008D82 }, /* GL_RGBA32I_EXT */
- { 36873, 0x00008D70 }, /* GL_RGBA32UI */
- { 36885, 0x00008D70 }, /* GL_RGBA32UI_EXT */
- { 36901, 0x00008056 }, /* GL_RGBA4 */
- { 36910, 0x000083A5 }, /* GL_RGBA4_DXT5_S3TC */
- { 36929, 0x00008056 }, /* GL_RGBA4_EXT */
- { 36942, 0x00008056 }, /* GL_RGBA4_OES */
- { 36955, 0x000083A3 }, /* GL_RGBA4_S3TC */
- { 36969, 0x00008058 }, /* GL_RGBA8 */
- { 36978, 0x00008D8E }, /* GL_RGBA8I */
- { 36988, 0x00008D8E }, /* GL_RGBA8I_EXT */
- { 37002, 0x00008D7C }, /* GL_RGBA8UI */
- { 37013, 0x00008D7C }, /* GL_RGBA8UI_EXT */
- { 37028, 0x00008058 }, /* GL_RGBA8_EXT */
- { 37041, 0x00008058 }, /* GL_RGBA8_OES */
- { 37054, 0x00008F97 }, /* GL_RGBA8_SNORM */
- { 37069, 0x000083A4 }, /* GL_RGBA_DXT5_S3TC */
- { 37087, 0x00008D99 }, /* GL_RGBA_INTEGER */
- { 37103, 0x00008D99 }, /* GL_RGBA_INTEGER_EXT */
- { 37123, 0x00008D9E }, /* GL_RGBA_INTEGER_MODE_EXT */
- { 37148, 0x00000C31 }, /* GL_RGBA_MODE */
- { 37161, 0x000083A2 }, /* GL_RGBA_S3TC */
- { 37174, 0x00008F93 }, /* GL_RGBA_SNORM */
- { 37188, 0x00008D98 }, /* GL_RGB_INTEGER */
- { 37203, 0x00008D98 }, /* GL_RGB_INTEGER_EXT */
- { 37222, 0x000083A0 }, /* GL_RGB_S3TC */
- { 37234, 0x00008573 }, /* GL_RGB_SCALE */
- { 37247, 0x00008573 }, /* GL_RGB_SCALE_ARB */
- { 37264, 0x00008573 }, /* GL_RGB_SCALE_EXT */
- { 37281, 0x00008F92 }, /* GL_RGB_SNORM */
- { 37294, 0x00008F91 }, /* GL_RG_SNORM */
- { 37306, 0x00000407 }, /* GL_RIGHT */
- { 37315, 0x00002000 }, /* GL_S */
- { 37320, 0x00008B5D }, /* GL_SAMPLER_1D */
- { 37334, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY */
- { 37354, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY_EXT */
- { 37378, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW */
- { 37405, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW_EXT */
- { 37436, 0x00008B61 }, /* GL_SAMPLER_1D_SHADOW */
- { 37457, 0x00008B5E }, /* GL_SAMPLER_2D */
- { 37471, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY */
- { 37491, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY_EXT */
- { 37515, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW */
- { 37542, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW_EXT */
- { 37573, 0x00008B63 }, /* GL_SAMPLER_2D_RECT */
- { 37592, 0x00008B64 }, /* GL_SAMPLER_2D_RECT_SHADOW */
- { 37618, 0x00008B62 }, /* GL_SAMPLER_2D_SHADOW */
- { 37639, 0x00008B5F }, /* GL_SAMPLER_3D */
- { 37653, 0x00008B5F }, /* GL_SAMPLER_3D_OES */
- { 37671, 0x00008DC2 }, /* GL_SAMPLER_BUFFER */
- { 37689, 0x00008DC2 }, /* GL_SAMPLER_BUFFER_EXT */
- { 37711, 0x00008B60 }, /* GL_SAMPLER_CUBE */
- { 37727, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW */
- { 37750, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW_EXT */
- { 37777, 0x000080A9 }, /* GL_SAMPLES */
- { 37788, 0x000086B4 }, /* GL_SAMPLES_3DFX */
- { 37804, 0x000080A9 }, /* GL_SAMPLES_ARB */
- { 37819, 0x00008914 }, /* GL_SAMPLES_PASSED */
- { 37837, 0x00008914 }, /* GL_SAMPLES_PASSED_ARB */
- { 37859, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE */
- { 37887, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE_ARB */
- { 37919, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE */
- { 37942, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE_ARB */
- { 37969, 0x000080A8 }, /* GL_SAMPLE_BUFFERS */
- { 37987, 0x000086B3 }, /* GL_SAMPLE_BUFFERS_3DFX */
- { 38010, 0x000080A8 }, /* GL_SAMPLE_BUFFERS_ARB */
- { 38032, 0x000080A0 }, /* GL_SAMPLE_COVERAGE */
- { 38051, 0x000080A0 }, /* GL_SAMPLE_COVERAGE_ARB */
- { 38074, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT */
- { 38100, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT_ARB */
- { 38130, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE */
- { 38155, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE_ARB */
- { 38184, 0x00080000 }, /* GL_SCISSOR_BIT */
- { 38199, 0x00000C10 }, /* GL_SCISSOR_BOX */
- { 38214, 0x00000C11 }, /* GL_SCISSOR_TEST */
- { 38230, 0x0000845E }, /* GL_SECONDARY_COLOR_ARRAY */
- { 38255, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */
- { 38295, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB */
- { 38339, 0x0000845D }, /* GL_SECONDARY_COLOR_ARRAY_POINTER */
- { 38372, 0x0000845A }, /* GL_SECONDARY_COLOR_ARRAY_SIZE */
- { 38402, 0x0000845C }, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */
- { 38434, 0x0000845B }, /* GL_SECONDARY_COLOR_ARRAY_TYPE */
- { 38464, 0x00001C02 }, /* GL_SELECT */
- { 38474, 0x00000DF3 }, /* GL_SELECTION_BUFFER_POINTER */
- { 38502, 0x00000DF4 }, /* GL_SELECTION_BUFFER_SIZE */
- { 38527, 0x00008012 }, /* GL_SEPARABLE_2D */
- { 38543, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS */
- { 38563, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS_EXT */
- { 38587, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR */
- { 38614, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR_EXT */
- { 38645, 0x0000150F }, /* GL_SET */
- { 38652, 0x00008DF8 }, /* GL_SHADER_BINARY_FORMATS */
- { 38677, 0x00008DFA }, /* GL_SHADER_COMPILER */
- { 38696, 0x00008B48 }, /* GL_SHADER_OBJECT_ARB */
- { 38717, 0x00008B88 }, /* GL_SHADER_SOURCE_LENGTH */
- { 38741, 0x00008B4F }, /* GL_SHADER_TYPE */
- { 38756, 0x00000B54 }, /* GL_SHADE_MODEL */
- { 38771, 0x00008B8C }, /* GL_SHADING_LANGUAGE_VERSION */
- { 38799, 0x000080BF }, /* GL_SHADOW_AMBIENT_SGIX */
- { 38822, 0x000081FB }, /* GL_SHARED_TEXTURE_PALETTE_EXT */
- { 38852, 0x00001601 }, /* GL_SHININESS */
- { 38865, 0x00001402 }, /* GL_SHORT */
- { 38874, 0x00009119 }, /* GL_SIGNALED */
- { 38886, 0x00008F9C }, /* GL_SIGNED_NORMALIZED */
- { 38907, 0x000081F9 }, /* GL_SINGLE_COLOR */
- { 38923, 0x000081F9 }, /* GL_SINGLE_COLOR_EXT */
- { 38943, 0x000085CC }, /* GL_SLICE_ACCUM_SUN */
- { 38962, 0x00008C46 }, /* GL_SLUMINANCE */
- { 38976, 0x00008C47 }, /* GL_SLUMINANCE8 */
- { 38991, 0x00008C45 }, /* GL_SLUMINANCE8_ALPHA8 */
- { 39013, 0x00008C44 }, /* GL_SLUMINANCE_ALPHA */
- { 39033, 0x00001D01 }, /* GL_SMOOTH */
- { 39043, 0x00000B23 }, /* GL_SMOOTH_LINE_WIDTH_GRANULARITY */
- { 39076, 0x00000B22 }, /* GL_SMOOTH_LINE_WIDTH_RANGE */
- { 39103, 0x00000B13 }, /* GL_SMOOTH_POINT_SIZE_GRANULARITY */
- { 39136, 0x00000B12 }, /* GL_SMOOTH_POINT_SIZE_RANGE */
- { 39163, 0x00008588 }, /* GL_SOURCE0_ALPHA */
- { 39180, 0x00008588 }, /* GL_SOURCE0_ALPHA_ARB */
- { 39201, 0x00008588 }, /* GL_SOURCE0_ALPHA_EXT */
- { 39222, 0x00008580 }, /* GL_SOURCE0_RGB */
- { 39237, 0x00008580 }, /* GL_SOURCE0_RGB_ARB */
- { 39256, 0x00008580 }, /* GL_SOURCE0_RGB_EXT */
- { 39275, 0x00008589 }, /* GL_SOURCE1_ALPHA */
- { 39292, 0x00008589 }, /* GL_SOURCE1_ALPHA_ARB */
- { 39313, 0x00008589 }, /* GL_SOURCE1_ALPHA_EXT */
- { 39334, 0x00008581 }, /* GL_SOURCE1_RGB */
- { 39349, 0x00008581 }, /* GL_SOURCE1_RGB_ARB */
- { 39368, 0x00008581 }, /* GL_SOURCE1_RGB_EXT */
- { 39387, 0x0000858A }, /* GL_SOURCE2_ALPHA */
- { 39404, 0x0000858A }, /* GL_SOURCE2_ALPHA_ARB */
- { 39425, 0x0000858A }, /* GL_SOURCE2_ALPHA_EXT */
- { 39446, 0x00008582 }, /* GL_SOURCE2_RGB */
- { 39461, 0x00008582 }, /* GL_SOURCE2_RGB_ARB */
- { 39480, 0x00008582 }, /* GL_SOURCE2_RGB_EXT */
- { 39499, 0x0000858B }, /* GL_SOURCE3_ALPHA_NV */
- { 39519, 0x00008583 }, /* GL_SOURCE3_RGB_NV */
- { 39537, 0x00001202 }, /* GL_SPECULAR */
- { 39549, 0x00002402 }, /* GL_SPHERE_MAP */
- { 39563, 0x00001206 }, /* GL_SPOT_CUTOFF */
- { 39578, 0x00001204 }, /* GL_SPOT_DIRECTION */
- { 39596, 0x00001205 }, /* GL_SPOT_EXPONENT */
- { 39613, 0x00008588 }, /* GL_SRC0_ALPHA */
- { 39627, 0x00008580 }, /* GL_SRC0_RGB */
- { 39639, 0x00008589 }, /* GL_SRC1_ALPHA */
- { 39653, 0x00008581 }, /* GL_SRC1_RGB */
- { 39665, 0x0000858A }, /* GL_SRC2_ALPHA */
- { 39679, 0x00008582 }, /* GL_SRC2_RGB */
- { 39691, 0x00000302 }, /* GL_SRC_ALPHA */
- { 39704, 0x00000308 }, /* GL_SRC_ALPHA_SATURATE */
- { 39726, 0x00000300 }, /* GL_SRC_COLOR */
- { 39739, 0x00008C40 }, /* GL_SRGB */
- { 39747, 0x00008C41 }, /* GL_SRGB8 */
- { 39756, 0x00008C43 }, /* GL_SRGB8_ALPHA8 */
- { 39772, 0x00008C42 }, /* GL_SRGB_ALPHA */
- { 39786, 0x00000503 }, /* GL_STACK_OVERFLOW */
- { 39804, 0x00000504 }, /* GL_STACK_UNDERFLOW */
- { 39823, 0x000088E6 }, /* GL_STATIC_COPY */
- { 39838, 0x000088E6 }, /* GL_STATIC_COPY_ARB */
- { 39857, 0x000088E4 }, /* GL_STATIC_DRAW */
- { 39872, 0x000088E4 }, /* GL_STATIC_DRAW_ARB */
- { 39891, 0x000088E5 }, /* GL_STATIC_READ */
- { 39906, 0x000088E5 }, /* GL_STATIC_READ_ARB */
- { 39925, 0x00001802 }, /* GL_STENCIL */
- { 39936, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT */
- { 39958, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_EXT */
- { 39984, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_OES */
- { 40010, 0x00008801 }, /* GL_STENCIL_BACK_FAIL */
- { 40031, 0x00008801 }, /* GL_STENCIL_BACK_FAIL_ATI */
- { 40056, 0x00008800 }, /* GL_STENCIL_BACK_FUNC */
- { 40077, 0x00008800 }, /* GL_STENCIL_BACK_FUNC_ATI */
- { 40102, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */
- { 40134, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI */
- { 40170, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */
- { 40202, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI */
- { 40238, 0x00008CA3 }, /* GL_STENCIL_BACK_REF */
- { 40258, 0x00008CA4 }, /* GL_STENCIL_BACK_VALUE_MASK */
- { 40285, 0x00008CA5 }, /* GL_STENCIL_BACK_WRITEMASK */
- { 40311, 0x00000D57 }, /* GL_STENCIL_BITS */
- { 40327, 0x00008224 }, /* GL_STENCIL_BUFFER */
- { 40345, 0x00000400 }, /* GL_STENCIL_BUFFER_BIT */
- { 40367, 0x00000B91 }, /* GL_STENCIL_CLEAR_VALUE */
- { 40390, 0x00000B94 }, /* GL_STENCIL_FAIL */
- { 40406, 0x00000B92 }, /* GL_STENCIL_FUNC */
- { 40422, 0x00001901 }, /* GL_STENCIL_INDEX */
- { 40439, 0x00008D46 }, /* GL_STENCIL_INDEX1 */
- { 40457, 0x00008D49 }, /* GL_STENCIL_INDEX16 */
- { 40476, 0x00008D49 }, /* GL_STENCIL_INDEX16_EXT */
- { 40499, 0x00008D46 }, /* GL_STENCIL_INDEX1_EXT */
- { 40521, 0x00008D46 }, /* GL_STENCIL_INDEX1_OES */
- { 40543, 0x00008D47 }, /* GL_STENCIL_INDEX4 */
- { 40561, 0x00008D47 }, /* GL_STENCIL_INDEX4_EXT */
- { 40583, 0x00008D47 }, /* GL_STENCIL_INDEX4_OES */
- { 40605, 0x00008D48 }, /* GL_STENCIL_INDEX8 */
- { 40623, 0x00008D48 }, /* GL_STENCIL_INDEX8_EXT */
- { 40645, 0x00008D48 }, /* GL_STENCIL_INDEX8_OES */
- { 40667, 0x00008D45 }, /* GL_STENCIL_INDEX_EXT */
- { 40688, 0x00000B95 }, /* GL_STENCIL_PASS_DEPTH_FAIL */
- { 40715, 0x00000B96 }, /* GL_STENCIL_PASS_DEPTH_PASS */
- { 40742, 0x00000B97 }, /* GL_STENCIL_REF */
- { 40757, 0x00000B90 }, /* GL_STENCIL_TEST */
- { 40773, 0x00008910 }, /* GL_STENCIL_TEST_TWO_SIDE_EXT */
- { 40802, 0x00000B93 }, /* GL_STENCIL_VALUE_MASK */
- { 40824, 0x00000B98 }, /* GL_STENCIL_WRITEMASK */
- { 40845, 0x00000C33 }, /* GL_STEREO */
- { 40855, 0x000085BE }, /* GL_STORAGE_CACHED_APPLE */
- { 40879, 0x000085BD }, /* GL_STORAGE_PRIVATE_APPLE */
- { 40904, 0x000085BF }, /* GL_STORAGE_SHARED_APPLE */
- { 40928, 0x000088E2 }, /* GL_STREAM_COPY */
- { 40943, 0x000088E2 }, /* GL_STREAM_COPY_ARB */
- { 40962, 0x000088E0 }, /* GL_STREAM_DRAW */
- { 40977, 0x000088E0 }, /* GL_STREAM_DRAW_ARB */
- { 40996, 0x000088E1 }, /* GL_STREAM_READ */
- { 41011, 0x000088E1 }, /* GL_STREAM_READ_ARB */
- { 41030, 0x00000D50 }, /* GL_SUBPIXEL_BITS */
- { 41047, 0x000084E7 }, /* GL_SUBTRACT */
- { 41059, 0x000084E7 }, /* GL_SUBTRACT_ARB */
- { 41075, 0x00009113 }, /* GL_SYNC_CONDITION */
- { 41093, 0x00009116 }, /* GL_SYNC_FENCE */
- { 41107, 0x00009115 }, /* GL_SYNC_FLAGS */
- { 41121, 0x00000001 }, /* GL_SYNC_FLUSH_COMMANDS_BIT */
- { 41148, 0x00009117 }, /* GL_SYNC_GPU_COMMANDS_COMPLETE */
- { 41178, 0x00009114 }, /* GL_SYNC_STATUS */
- { 41193, 0x00002001 }, /* GL_T */
- { 41198, 0x00002A2A }, /* GL_T2F_C3F_V3F */
- { 41213, 0x00002A2C }, /* GL_T2F_C4F_N3F_V3F */
- { 41232, 0x00002A29 }, /* GL_T2F_C4UB_V3F */
- { 41248, 0x00002A2B }, /* GL_T2F_N3F_V3F */
- { 41263, 0x00002A27 }, /* GL_T2F_V3F */
- { 41274, 0x00002A2D }, /* GL_T4F_C4F_N3F_V4F */
- { 41293, 0x00002A28 }, /* GL_T4F_V4F */
- { 41304, 0x00008031 }, /* GL_TABLE_TOO_LARGE_EXT */
- { 41327, 0x00001702 }, /* GL_TEXTURE */
- { 41338, 0x000084C0 }, /* GL_TEXTURE0 */
- { 41350, 0x000084C0 }, /* GL_TEXTURE0_ARB */
- { 41366, 0x000084C1 }, /* GL_TEXTURE1 */
- { 41378, 0x000084CA }, /* GL_TEXTURE10 */
- { 41391, 0x000084CA }, /* GL_TEXTURE10_ARB */
- { 41408, 0x000084CB }, /* GL_TEXTURE11 */
- { 41421, 0x000084CB }, /* GL_TEXTURE11_ARB */
- { 41438, 0x000084CC }, /* GL_TEXTURE12 */
- { 41451, 0x000084CC }, /* GL_TEXTURE12_ARB */
- { 41468, 0x000084CD }, /* GL_TEXTURE13 */
- { 41481, 0x000084CD }, /* GL_TEXTURE13_ARB */
- { 41498, 0x000084CE }, /* GL_TEXTURE14 */
- { 41511, 0x000084CE }, /* GL_TEXTURE14_ARB */
- { 41528, 0x000084CF }, /* GL_TEXTURE15 */
- { 41541, 0x000084CF }, /* GL_TEXTURE15_ARB */
- { 41558, 0x000084D0 }, /* GL_TEXTURE16 */
- { 41571, 0x000084D0 }, /* GL_TEXTURE16_ARB */
- { 41588, 0x000084D1 }, /* GL_TEXTURE17 */
- { 41601, 0x000084D1 }, /* GL_TEXTURE17_ARB */
- { 41618, 0x000084D2 }, /* GL_TEXTURE18 */
- { 41631, 0x000084D2 }, /* GL_TEXTURE18_ARB */
- { 41648, 0x000084D3 }, /* GL_TEXTURE19 */
- { 41661, 0x000084D3 }, /* GL_TEXTURE19_ARB */
- { 41678, 0x000084C1 }, /* GL_TEXTURE1_ARB */
- { 41694, 0x000084C2 }, /* GL_TEXTURE2 */
- { 41706, 0x000084D4 }, /* GL_TEXTURE20 */
- { 41719, 0x000084D4 }, /* GL_TEXTURE20_ARB */
- { 41736, 0x000084D5 }, /* GL_TEXTURE21 */
- { 41749, 0x000084D5 }, /* GL_TEXTURE21_ARB */
- { 41766, 0x000084D6 }, /* GL_TEXTURE22 */
- { 41779, 0x000084D6 }, /* GL_TEXTURE22_ARB */
- { 41796, 0x000084D7 }, /* GL_TEXTURE23 */
- { 41809, 0x000084D7 }, /* GL_TEXTURE23_ARB */
- { 41826, 0x000084D8 }, /* GL_TEXTURE24 */
- { 41839, 0x000084D8 }, /* GL_TEXTURE24_ARB */
- { 41856, 0x000084D9 }, /* GL_TEXTURE25 */
- { 41869, 0x000084D9 }, /* GL_TEXTURE25_ARB */
- { 41886, 0x000084DA }, /* GL_TEXTURE26 */
- { 41899, 0x000084DA }, /* GL_TEXTURE26_ARB */
- { 41916, 0x000084DB }, /* GL_TEXTURE27 */
- { 41929, 0x000084DB }, /* GL_TEXTURE27_ARB */
- { 41946, 0x000084DC }, /* GL_TEXTURE28 */
- { 41959, 0x000084DC }, /* GL_TEXTURE28_ARB */
- { 41976, 0x000084DD }, /* GL_TEXTURE29 */
- { 41989, 0x000084DD }, /* GL_TEXTURE29_ARB */
- { 42006, 0x000084C2 }, /* GL_TEXTURE2_ARB */
- { 42022, 0x000084C3 }, /* GL_TEXTURE3 */
- { 42034, 0x000084DE }, /* GL_TEXTURE30 */
- { 42047, 0x000084DE }, /* GL_TEXTURE30_ARB */
- { 42064, 0x000084DF }, /* GL_TEXTURE31 */
- { 42077, 0x000084DF }, /* GL_TEXTURE31_ARB */
- { 42094, 0x000084C3 }, /* GL_TEXTURE3_ARB */
- { 42110, 0x000084C4 }, /* GL_TEXTURE4 */
- { 42122, 0x000084C4 }, /* GL_TEXTURE4_ARB */
- { 42138, 0x000084C5 }, /* GL_TEXTURE5 */
- { 42150, 0x000084C5 }, /* GL_TEXTURE5_ARB */
- { 42166, 0x000084C6 }, /* GL_TEXTURE6 */
- { 42178, 0x000084C6 }, /* GL_TEXTURE6_ARB */
- { 42194, 0x000084C7 }, /* GL_TEXTURE7 */
- { 42206, 0x000084C7 }, /* GL_TEXTURE7_ARB */
- { 42222, 0x000084C8 }, /* GL_TEXTURE8 */
- { 42234, 0x000084C8 }, /* GL_TEXTURE8_ARB */
- { 42250, 0x000084C9 }, /* GL_TEXTURE9 */
- { 42262, 0x000084C9 }, /* GL_TEXTURE9_ARB */
- { 42278, 0x00000DE0 }, /* GL_TEXTURE_1D */
- { 42292, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY */
- { 42312, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY_EXT */
- { 42336, 0x00000DE1 }, /* GL_TEXTURE_2D */
- { 42350, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY */
- { 42370, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY_EXT */
- { 42394, 0x0000806F }, /* GL_TEXTURE_3D */
- { 42408, 0x0000806F }, /* GL_TEXTURE_3D_OES */
- { 42426, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE */
- { 42448, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE_EXT */
- { 42474, 0x0000813C }, /* GL_TEXTURE_BASE_LEVEL */
- { 42496, 0x00008068 }, /* GL_TEXTURE_BINDING_1D */
- { 42518, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY */
- { 42546, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */
- { 42578, 0x00008069 }, /* GL_TEXTURE_BINDING_2D */
- { 42600, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY */
- { 42628, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */
- { 42660, 0x0000806A }, /* GL_TEXTURE_BINDING_3D */
- { 42682, 0x0000806A }, /* GL_TEXTURE_BINDING_3D_OES */
- { 42708, 0x00008C2C }, /* GL_TEXTURE_BINDING_BUFFER */
- { 42734, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP */
- { 42762, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_ARB */
- { 42794, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_OES */
- { 42826, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE */
- { 42855, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */
- { 42888, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_NV */
- { 42920, 0x00040000 }, /* GL_TEXTURE_BIT */
- { 42935, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE */
- { 42956, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE_EXT */
- { 42981, 0x00001005 }, /* GL_TEXTURE_BORDER */
- { 42999, 0x00001004 }, /* GL_TEXTURE_BORDER_COLOR */
- { 43023, 0x00008C2A }, /* GL_TEXTURE_BUFFER */
- { 43041, 0x00008C2D }, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */
- { 43078, 0x00008C2E }, /* GL_TEXTURE_BUFFER_FORMAT */
- { 43103, 0x00008171 }, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */
- { 43134, 0x00008176 }, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */
- { 43164, 0x00008172 }, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */
- { 43194, 0x00008175 }, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */
- { 43229, 0x00008173 }, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */
- { 43260, 0x00008174 }, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */
- { 43298, 0x000080BC }, /* GL_TEXTURE_COLOR_TABLE_SGI */
- { 43325, 0x000081EF }, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */
- { 43357, 0x000080BF }, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */
- { 43391, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC */
- { 43415, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC_ARB */
- { 43443, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE */
- { 43467, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE_ARB */
- { 43495, 0x0000819B }, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */
- { 43528, 0x0000819A }, /* GL_TEXTURE_COMPARE_SGIX */
- { 43552, 0x00001003 }, /* GL_TEXTURE_COMPONENTS */
- { 43574, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED */
- { 43596, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED_ARB */
- { 43622, 0x000086A3 }, /* GL_TEXTURE_COMPRESSED_FORMATS_ARB */
- { 43656, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */
- { 43689, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB */
- { 43726, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT */
- { 43754, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT_ARB */
- { 43786, 0x00008078 }, /* GL_TEXTURE_COORD_ARRAY */
- { 43809, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */
- { 43847, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB */
- { 43889, 0x00008092 }, /* GL_TEXTURE_COORD_ARRAY_POINTER */
- { 43920, 0x00008088 }, /* GL_TEXTURE_COORD_ARRAY_SIZE */
- { 43948, 0x0000808A }, /* GL_TEXTURE_COORD_ARRAY_STRIDE */
- { 43978, 0x00008089 }, /* GL_TEXTURE_COORD_ARRAY_TYPE */
- { 44006, 0x00008B9D }, /* GL_TEXTURE_CROP_RECT_OES */
- { 44031, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP */
- { 44051, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_ARB */
- { 44075, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */
- { 44106, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB */
- { 44141, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES */
- { 44176, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */
- { 44207, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB */
- { 44242, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES */
- { 44277, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */
- { 44308, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB */
- { 44343, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES */
- { 44378, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_OES */
- { 44402, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */
- { 44433, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB */
- { 44468, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES */
- { 44503, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */
- { 44534, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB */
- { 44569, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES */
- { 44604, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */
- { 44635, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB */
- { 44670, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES */
- { 44705, 0x000088F4 }, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */
- { 44734, 0x00008071 }, /* GL_TEXTURE_DEPTH */
- { 44751, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE */
- { 44773, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE_ARB */
- { 44799, 0x00002300 }, /* GL_TEXTURE_ENV */
- { 44814, 0x00002201 }, /* GL_TEXTURE_ENV_COLOR */
- { 44835, 0x00002200 }, /* GL_TEXTURE_ENV_MODE */
- { 44855, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL */
- { 44881, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL_EXT */
- { 44911, 0x00002500 }, /* GL_TEXTURE_GEN_MODE */
- { 44931, 0x00002500 }, /* GL_TEXTURE_GEN_MODE_OES */
- { 44955, 0x00000C63 }, /* GL_TEXTURE_GEN_Q */
- { 44972, 0x00000C62 }, /* GL_TEXTURE_GEN_R */
- { 44989, 0x00000C60 }, /* GL_TEXTURE_GEN_S */
- { 45006, 0x00008D60 }, /* GL_TEXTURE_GEN_STR_OES */
- { 45029, 0x00000C61 }, /* GL_TEXTURE_GEN_T */
- { 45046, 0x0000819D }, /* GL_TEXTURE_GEQUAL_R_SGIX */
- { 45071, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE */
- { 45093, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE_EXT */
- { 45119, 0x00001001 }, /* GL_TEXTURE_HEIGHT */
- { 45137, 0x000080ED }, /* GL_TEXTURE_INDEX_SIZE_EXT */
- { 45163, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE */
- { 45189, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE_EXT */
- { 45219, 0x00001003 }, /* GL_TEXTURE_INTERNAL_FORMAT */
- { 45246, 0x0000819C }, /* GL_TEXTURE_LEQUAL_R_SGIX */
- { 45271, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS */
- { 45291, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS_EXT */
- { 45315, 0x00008190 }, /* GL_TEXTURE_LOD_BIAS_R_SGIX */
- { 45342, 0x0000818E }, /* GL_TEXTURE_LOD_BIAS_S_SGIX */
- { 45369, 0x0000818F }, /* GL_TEXTURE_LOD_BIAS_T_SGIX */
- { 45396, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE */
- { 45422, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE_EXT */
- { 45452, 0x00002800 }, /* GL_TEXTURE_MAG_FILTER */
- { 45474, 0x00000BA8 }, /* GL_TEXTURE_MATRIX */
- { 45492, 0x0000898F }, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */
- { 45532, 0x000084FE }, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */
- { 45562, 0x0000836B }, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */
- { 45590, 0x00008369 }, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */
- { 45618, 0x0000836A }, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */
- { 45646, 0x0000813D }, /* GL_TEXTURE_MAX_LEVEL */
- { 45667, 0x0000813B }, /* GL_TEXTURE_MAX_LOD */
- { 45686, 0x00002801 }, /* GL_TEXTURE_MIN_FILTER */
- { 45708, 0x0000813A }, /* GL_TEXTURE_MIN_LOD */
- { 45727, 0x00008066 }, /* GL_TEXTURE_PRIORITY */
- { 45747, 0x000085B7 }, /* GL_TEXTURE_RANGE_LENGTH_APPLE */
- { 45777, 0x000085B8 }, /* GL_TEXTURE_RANGE_POINTER_APPLE */
- { 45808, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE */
- { 45829, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_ARB */
- { 45854, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_NV */
- { 45878, 0x0000805C }, /* GL_TEXTURE_RED_SIZE */
- { 45898, 0x0000805C }, /* GL_TEXTURE_RED_SIZE_EXT */
- { 45922, 0x00008067 }, /* GL_TEXTURE_RESIDENT */
- { 45942, 0x00008C3F }, /* GL_TEXTURE_SHARED_SIZE */
- { 45965, 0x00000BA5 }, /* GL_TEXTURE_STACK_DEPTH */
- { 45988, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE */
- { 46012, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE_EXT */
- { 46040, 0x000085BC }, /* GL_TEXTURE_STORAGE_HINT_APPLE */
- { 46070, 0x00008065 }, /* GL_TEXTURE_TOO_LARGE_EXT */
- { 46095, 0x0000888F }, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */
- { 46129, 0x00001000 }, /* GL_TEXTURE_WIDTH */
- { 46146, 0x00008072 }, /* GL_TEXTURE_WRAP_R */
- { 46164, 0x00008072 }, /* GL_TEXTURE_WRAP_R_OES */
- { 46186, 0x00002802 }, /* GL_TEXTURE_WRAP_S */
- { 46204, 0x00002803 }, /* GL_TEXTURE_WRAP_T */
- { 46222, 0x0000911B }, /* GL_TIMEOUT_EXPIRED */
- { 46241, 0x000088BF }, /* GL_TIME_ELAPSED_EXT */
- { 46261, 0x00008648 }, /* GL_TRACK_MATRIX_NV */
- { 46280, 0x00008649 }, /* GL_TRACK_MATRIX_TRANSFORM_NV */
- { 46309, 0x00001000 }, /* GL_TRANSFORM_BIT */
- { 46326, 0x00008E22 }, /* GL_TRANSFORM_FEEDBACK */
- { 46348, 0x00008E25 }, /* GL_TRANSFORM_FEEDBACK_BINDING */
- { 46378, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER */
- { 46407, 0x00008E24 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */
- { 46443, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */
- { 46480, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT */
- { 46521, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER_EXT */
- { 46554, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */
- { 46588, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT */
- { 46626, 0x00008E23 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */
- { 46662, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */
- { 46696, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT */
- { 46734, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */
- { 46769, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT */
- { 46808, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */
- { 46849, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT */
- { 46894, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS */
- { 46925, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS_EXT */
- { 46960, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */
- { 47001, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT */
- { 47046, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX */
- { 47072, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX_ARB */
- { 47102, 0x000088B7 }, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */
- { 47134, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX */
- { 47164, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX_ARB */
- { 47198, 0x0000862C }, /* GL_TRANSPOSE_NV */
- { 47214, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX */
- { 47245, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX_ARB */
- { 47280, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX */
- { 47308, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX_ARB */
- { 47340, 0x00000004 }, /* GL_TRIANGLES */
- { 47353, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY */
- { 47376, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY_ARB */
- { 47403, 0x00000006 }, /* GL_TRIANGLE_FAN */
- { 47419, 0x00008615 }, /* GL_TRIANGLE_MESH_SUN */
- { 47440, 0x00000005 }, /* GL_TRIANGLE_STRIP */
- { 47458, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY */
- { 47486, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY_ARB */
- { 47518, 0x00000001 }, /* GL_TRUE */
- { 47526, 0x00008A1C }, /* GL_UNDEFINED_APPLE */
- { 47545, 0x00000CF5 }, /* GL_UNPACK_ALIGNMENT */
- { 47565, 0x0000806E }, /* GL_UNPACK_IMAGE_HEIGHT */
- { 47588, 0x00000CF1 }, /* GL_UNPACK_LSB_FIRST */
- { 47608, 0x00000CF2 }, /* GL_UNPACK_ROW_LENGTH */
- { 47629, 0x0000806D }, /* GL_UNPACK_SKIP_IMAGES */
- { 47651, 0x00000CF4 }, /* GL_UNPACK_SKIP_PIXELS */
- { 47673, 0x00000CF3 }, /* GL_UNPACK_SKIP_ROWS */
- { 47693, 0x00000CF0 }, /* GL_UNPACK_SWAP_BYTES */
- { 47714, 0x00009118 }, /* GL_UNSIGNALED */
- { 47728, 0x00001401 }, /* GL_UNSIGNED_BYTE */
- { 47745, 0x00008362 }, /* GL_UNSIGNED_BYTE_2_3_3_REV */
- { 47772, 0x00008032 }, /* GL_UNSIGNED_BYTE_3_3_2 */
- { 47795, 0x00001405 }, /* GL_UNSIGNED_INT */
- { 47811, 0x00008C3B }, /* GL_UNSIGNED_INT_10F_11F_11F_REV */
- { 47843, 0x00008036 }, /* GL_UNSIGNED_INT_10_10_10_2 */
- { 47870, 0x00008DF6 }, /* GL_UNSIGNED_INT_10_10_10_2_OES */
- { 47901, 0x000084FA }, /* GL_UNSIGNED_INT_24_8 */
- { 47922, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_EXT */
- { 47947, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_NV */
- { 47971, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_OES */
- { 47996, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV */
- { 48027, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV_EXT */
- { 48062, 0x00008C3E }, /* GL_UNSIGNED_INT_5_9_9_9_REV */
- { 48090, 0x00008035 }, /* GL_UNSIGNED_INT_8_8_8_8 */
- { 48114, 0x00008367 }, /* GL_UNSIGNED_INT_8_8_8_8_REV */
- { 48142, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D */
- { 48169, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */
- { 48202, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT */
- { 48239, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D_EXT */
- { 48270, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D */
- { 48297, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */
- { 48330, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT */
- { 48367, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D_EXT */
- { 48398, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */
- { 48430, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT */
- { 48466, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D */
- { 48493, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D_EXT */
- { 48524, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */
- { 48555, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT */
- { 48590, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE */
- { 48619, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE_EXT */
- { 48652, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2 */
- { 48673, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2_EXT */
- { 48698, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3 */
- { 48719, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3_EXT */
- { 48744, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4 */
- { 48765, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4_EXT */
- { 48790, 0x00008C17 }, /* GL_UNSIGNED_NORMALIZED */
- { 48813, 0x00001403 }, /* GL_UNSIGNED_SHORT */
- { 48831, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */
- { 48861, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT */
- { 48895, 0x00008033 }, /* GL_UNSIGNED_SHORT_4_4_4_4 */
- { 48921, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */
- { 48951, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT */
- { 48985, 0x00008034 }, /* GL_UNSIGNED_SHORT_5_5_5_1 */
- { 49011, 0x00008363 }, /* GL_UNSIGNED_SHORT_5_6_5 */
- { 49035, 0x00008364 }, /* GL_UNSIGNED_SHORT_5_6_5_REV */
- { 49063, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_APPLE */
- { 49091, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_MESA */
- { 49118, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */
- { 49150, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_MESA */
- { 49181, 0x00008CA2 }, /* GL_UPPER_LEFT */
- { 49195, 0x00002A20 }, /* GL_V2F */
- { 49202, 0x00002A21 }, /* GL_V3F */
- { 49209, 0x00008B83 }, /* GL_VALIDATE_STATUS */
- { 49228, 0x00001F00 }, /* GL_VENDOR */
- { 49238, 0x00001F02 }, /* GL_VERSION */
- { 49249, 0x00008074 }, /* GL_VERTEX_ARRAY */
- { 49265, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING */
- { 49289, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING_APPLE */
- { 49319, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
- { 49350, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */
- { 49385, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */
- { 49409, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */
- { 49430, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */
- { 49453, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */
- { 49474, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
- { 49501, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
- { 49529, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
- { 49557, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
- { 49585, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
- { 49613, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
- { 49641, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
- { 49669, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
- { 49696, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
- { 49723, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
- { 49750, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
- { 49777, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
- { 49804, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
- { 49831, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
- { 49858, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
- { 49885, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
- { 49912, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
- { 49950, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */
- { 49992, 0x000088FE }, /* GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB */
- { 50027, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */
- { 50058, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */
- { 50093, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */
- { 50124, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT */
- { 50159, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */
- { 50193, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */
- { 50231, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */
- { 50262, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */
- { 50297, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */
- { 50325, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */
- { 50357, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */
- { 50387, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */
- { 50421, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */
- { 50449, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */
- { 50481, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */
- { 50501, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */
- { 50523, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */
- { 50552, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */
- { 50573, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE */
- { 50602, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */
- { 50635, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */
- { 50667, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE */
- { 50694, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */
- { 50725, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */
- { 50755, 0x00008B31 }, /* GL_VERTEX_SHADER */
- { 50772, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */
- { 50793, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */
- { 50820, 0x00000BA2 }, /* GL_VIEWPORT */
- { 50832, 0x00000800 }, /* GL_VIEWPORT_BIT */
- { 50848, 0x00008A1A }, /* GL_VOLATILE_APPLE */
- { 50866, 0x0000911D }, /* GL_WAIT_FAILED */
- { 50881, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */
- { 50901, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
- { 50932, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */
- { 50967, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_OES */
- { 51002, 0x000086AD }, /* GL_WEIGHT_ARRAY_OES */
- { 51022, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */
- { 51050, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_OES */
- { 51078, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */
- { 51103, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_OES */
- { 51128, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
- { 51155, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_OES */
- { 51182, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */
- { 51207, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_OES */
- { 51232, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */
- { 51256, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */
- { 51275, 0x000088B9 }, /* GL_WRITE_ONLY */
- { 51289, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */
- { 51307, 0x000088B9 }, /* GL_WRITE_ONLY_OES */
- { 51325, 0x00001506 }, /* GL_XOR */
- { 51332, 0x000085B9 }, /* GL_YCBCR_422_APPLE */
- { 51351, 0x00008757 }, /* GL_YCBCR_MESA */
- { 51365, 0x00000000 }, /* GL_ZERO */
- { 51373, 0x00000D16 }, /* GL_ZOOM_X */
- { 51383, 0x00000D17 }, /* GL_ZOOM_Y */
+ { 2717, 0x0000891B }, /* GL_CLAMP_FRAGMENT_COLOR_ARB */
+ { 2745, 0x0000891C }, /* GL_CLAMP_READ_COLOR */
+ { 2765, 0x0000891C }, /* GL_CLAMP_READ_COLOR_ARB */
+ { 2789, 0x0000812D }, /* GL_CLAMP_TO_BORDER */
+ { 2808, 0x0000812D }, /* GL_CLAMP_TO_BORDER_ARB */
+ { 2831, 0x0000812D }, /* GL_CLAMP_TO_BORDER_SGIS */
+ { 2855, 0x0000812F }, /* GL_CLAMP_TO_EDGE */
+ { 2872, 0x0000812F }, /* GL_CLAMP_TO_EDGE_SGIS */
+ { 2894, 0x0000891A }, /* GL_CLAMP_VERTEX_COLOR_ARB */
+ { 2920, 0x00001500 }, /* GL_CLEAR */
+ { 2929, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE */
+ { 2954, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE_ARB */
+ { 2983, 0xFFFFFFFF }, /* GL_CLIENT_ALL_ATTRIB_BITS */
+ { 3009, 0x00000BB1 }, /* GL_CLIENT_ATTRIB_STACK_DEPTH */
+ { 3038, 0x00000001 }, /* GL_CLIENT_PIXEL_STORE_BIT */
+ { 3064, 0x00000002 }, /* GL_CLIENT_VERTEX_ARRAY_BIT */
+ { 3091, 0x00003000 }, /* GL_CLIP_DISTANCE0 */
+ { 3109, 0x00003001 }, /* GL_CLIP_DISTANCE1 */
+ { 3127, 0x00003002 }, /* GL_CLIP_DISTANCE2 */
+ { 3145, 0x00003003 }, /* GL_CLIP_DISTANCE3 */
+ { 3163, 0x00003004 }, /* GL_CLIP_DISTANCE4 */
+ { 3181, 0x00003005 }, /* GL_CLIP_DISTANCE5 */
+ { 3199, 0x00003006 }, /* GL_CLIP_DISTANCE6 */
+ { 3217, 0x00003007 }, /* GL_CLIP_DISTANCE7 */
+ { 3235, 0x00003000 }, /* GL_CLIP_PLANE0 */
+ { 3250, 0x00003001 }, /* GL_CLIP_PLANE1 */
+ { 3265, 0x00003002 }, /* GL_CLIP_PLANE2 */
+ { 3280, 0x00003003 }, /* GL_CLIP_PLANE3 */
+ { 3295, 0x00003004 }, /* GL_CLIP_PLANE4 */
+ { 3310, 0x00003005 }, /* GL_CLIP_PLANE5 */
+ { 3325, 0x000080F0 }, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */
+ { 3358, 0x00000A00 }, /* GL_COEFF */
+ { 3367, 0x00001800 }, /* GL_COLOR */
+ { 3376, 0x00008076 }, /* GL_COLOR_ARRAY */
+ { 3391, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING */
+ { 3421, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING_ARB */
+ { 3455, 0x00008090 }, /* GL_COLOR_ARRAY_POINTER */
+ { 3478, 0x00008081 }, /* GL_COLOR_ARRAY_SIZE */
+ { 3498, 0x00008083 }, /* GL_COLOR_ARRAY_STRIDE */
+ { 3520, 0x00008082 }, /* GL_COLOR_ARRAY_TYPE */
+ { 3540, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0 */
+ { 3561, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_EXT */
+ { 3586, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_OES */
+ { 3611, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1 */
+ { 3632, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10 */
+ { 3654, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10_EXT */
+ { 3680, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11 */
+ { 3702, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11_EXT */
+ { 3728, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12 */
+ { 3750, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12_EXT */
+ { 3776, 0x00008CED }, /* GL_COLOR_ATTACHMENT13 */
+ { 3798, 0x00008CED }, /* GL_COLOR_ATTACHMENT13_EXT */
+ { 3824, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14 */
+ { 3846, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14_EXT */
+ { 3872, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15 */
+ { 3894, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15_EXT */
+ { 3920, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1_EXT */
+ { 3945, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2 */
+ { 3966, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2_EXT */
+ { 3991, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3 */
+ { 4012, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3_EXT */
+ { 4037, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4 */
+ { 4058, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4_EXT */
+ { 4083, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5 */
+ { 4104, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5_EXT */
+ { 4129, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6 */
+ { 4150, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6_EXT */
+ { 4175, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7 */
+ { 4196, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7_EXT */
+ { 4221, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8 */
+ { 4242, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8_EXT */
+ { 4267, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9 */
+ { 4288, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9_EXT */
+ { 4313, 0x00004000 }, /* GL_COLOR_BUFFER_BIT */
+ { 4333, 0x00000C22 }, /* GL_COLOR_CLEAR_VALUE */
+ { 4354, 0x00001900 }, /* GL_COLOR_INDEX */
+ { 4369, 0x00001603 }, /* GL_COLOR_INDEXES */
+ { 4386, 0x00000BF2 }, /* GL_COLOR_LOGIC_OP */
+ { 4404, 0x00000B57 }, /* GL_COLOR_MATERIAL */
+ { 4422, 0x00000B55 }, /* GL_COLOR_MATERIAL_FACE */
+ { 4445, 0x00000B56 }, /* GL_COLOR_MATERIAL_PARAMETER */
+ { 4473, 0x000080B1 }, /* GL_COLOR_MATRIX */
+ { 4489, 0x000080B1 }, /* GL_COLOR_MATRIX_SGI */
+ { 4509, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH */
+ { 4537, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH_SGI */
+ { 4569, 0x00008458 }, /* GL_COLOR_SUM */
+ { 4582, 0x00008458 }, /* GL_COLOR_SUM_ARB */
+ { 4599, 0x000080D0 }, /* GL_COLOR_TABLE */
+ { 4614, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE */
+ { 4640, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_EXT */
+ { 4670, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_SGI */
+ { 4700, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS */
+ { 4720, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS_SGI */
+ { 4744, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE */
+ { 4769, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_EXT */
+ { 4798, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_SGI */
+ { 4827, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT */
+ { 4849, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_EXT */
+ { 4875, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_SGI */
+ { 4901, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE */
+ { 4927, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_EXT */
+ { 4957, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_SGI */
+ { 4987, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE */
+ { 5017, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_EXT */
+ { 5051, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_SGI */
+ { 5085, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE */
+ { 5115, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_EXT */
+ { 5149, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_SGI */
+ { 5183, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE */
+ { 5207, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_EXT */
+ { 5235, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_SGI */
+ { 5263, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE */
+ { 5284, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE_SGI */
+ { 5309, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH */
+ { 5330, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_EXT */
+ { 5355, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_SGI */
+ { 5380, 0x00000C23 }, /* GL_COLOR_WRITEMASK */
+ { 5399, 0x00008570 }, /* GL_COMBINE */
+ { 5410, 0x00008503 }, /* GL_COMBINE4 */
+ { 5422, 0x00008572 }, /* GL_COMBINE_ALPHA */
+ { 5439, 0x00008572 }, /* GL_COMBINE_ALPHA_ARB */
+ { 5460, 0x00008572 }, /* GL_COMBINE_ALPHA_EXT */
+ { 5481, 0x00008570 }, /* GL_COMBINE_ARB */
+ { 5496, 0x00008570 }, /* GL_COMBINE_EXT */
+ { 5511, 0x00008571 }, /* GL_COMBINE_RGB */
+ { 5526, 0x00008571 }, /* GL_COMBINE_RGB_ARB */
+ { 5545, 0x00008571 }, /* GL_COMBINE_RGB_EXT */
+ { 5564, 0x0000884E }, /* GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT */
+ { 5600, 0x0000884E }, /* GL_COMPARE_REF_TO_TEXTURE */
+ { 5626, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE */
+ { 5650, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE_ARB */
+ { 5678, 0x00001300 }, /* GL_COMPILE */
+ { 5689, 0x00001301 }, /* GL_COMPILE_AND_EXECUTE */
+ { 5712, 0x00008B81 }, /* GL_COMPILE_STATUS */
+ { 5730, 0x000084E9 }, /* GL_COMPRESSED_ALPHA */
+ { 5750, 0x000084E9 }, /* GL_COMPRESSED_ALPHA_ARB */
+ { 5774, 0x000084EC }, /* GL_COMPRESSED_INTENSITY */
+ { 5798, 0x000084EC }, /* GL_COMPRESSED_INTENSITY_ARB */
+ { 5826, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE */
+ { 5850, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA */
+ { 5880, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA_ARB */
+ { 5914, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE_ARB */
+ { 5942, 0x00008225 }, /* GL_COMPRESSED_RED */
+ { 5960, 0x00008226 }, /* GL_COMPRESSED_RG */
+ { 5977, 0x000084ED }, /* GL_COMPRESSED_RGB */
+ { 5995, 0x000084EE }, /* GL_COMPRESSED_RGBA */
+ { 6014, 0x000084EE }, /* GL_COMPRESSED_RGBA_ARB */
+ { 6037, 0x000086B1 }, /* GL_COMPRESSED_RGBA_FXT1_3DFX */
+ { 6066, 0x000083F1 }, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */
+ { 6099, 0x000083F2 }, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */
+ { 6132, 0x000083F3 }, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */
+ { 6165, 0x000084ED }, /* GL_COMPRESSED_RGB_ARB */
+ { 6187, 0x000086B0 }, /* GL_COMPRESSED_RGB_FXT1_3DFX */
+ { 6215, 0x000083F0 }, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */
+ { 6247, 0x00008C4A }, /* GL_COMPRESSED_SLUMINANCE */
+ { 6272, 0x00008C4B }, /* GL_COMPRESSED_SLUMINANCE_ALPHA */
+ { 6303, 0x00008C48 }, /* GL_COMPRESSED_SRGB */
+ { 6322, 0x00008C49 }, /* GL_COMPRESSED_SRGB_ALPHA */
+ { 6347, 0x000086A3 }, /* GL_COMPRESSED_TEXTURE_FORMATS */
+ { 6377, 0x0000911C }, /* GL_CONDITION_SATISFIED */
+ { 6400, 0x00008576 }, /* GL_CONSTANT */
+ { 6412, 0x00008003 }, /* GL_CONSTANT_ALPHA */
+ { 6430, 0x00008003 }, /* GL_CONSTANT_ALPHA_EXT */
+ { 6452, 0x00008576 }, /* GL_CONSTANT_ARB */
+ { 6468, 0x00001207 }, /* GL_CONSTANT_ATTENUATION */
+ { 6492, 0x00008151 }, /* GL_CONSTANT_BORDER_HP */
+ { 6514, 0x00008001 }, /* GL_CONSTANT_COLOR */
+ { 6532, 0x00008001 }, /* GL_CONSTANT_COLOR_EXT */
+ { 6554, 0x00008576 }, /* GL_CONSTANT_EXT */
+ { 6570, 0x00000002 }, /* GL_CONTEXT_COMPATIBILITY_PROFILE_BIT */
+ { 6607, 0x00000001 }, /* GL_CONTEXT_CORE_PROFILE_BIT */
+ { 6635, 0x0000821E }, /* GL_CONTEXT_FLAGS */
+ { 6652, 0x00000001 }, /* GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT */
+ { 6691, 0x00009126 }, /* GL_CONTEXT_PROFILE_MASK */
+ { 6715, 0x00008010 }, /* GL_CONVOLUTION_1D */
+ { 6733, 0x00008011 }, /* GL_CONVOLUTION_2D */
+ { 6751, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR */
+ { 6779, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR_HP */
+ { 6810, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE */
+ { 6837, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE_EXT */
+ { 6868, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS */
+ { 6895, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS_EXT */
+ { 6926, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE */
+ { 6954, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE_EXT */
+ { 6986, 0x00008017 }, /* GL_CONVOLUTION_FORMAT */
+ { 7008, 0x00008017 }, /* GL_CONVOLUTION_FORMAT_EXT */
+ { 7034, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT */
+ { 7056, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT_EXT */
+ { 7082, 0x00008018 }, /* GL_CONVOLUTION_WIDTH */
+ { 7103, 0x00008018 }, /* GL_CONVOLUTION_WIDTH_EXT */
+ { 7128, 0x00008862 }, /* GL_COORD_REPLACE */
+ { 7145, 0x00008862 }, /* GL_COORD_REPLACE_ARB */
+ { 7166, 0x00008862 }, /* GL_COORD_REPLACE_NV */
+ { 7186, 0x00008862 }, /* GL_COORD_REPLACE_OES */
+ { 7207, 0x00001503 }, /* GL_COPY */
+ { 7215, 0x0000150C }, /* GL_COPY_INVERTED */
+ { 7232, 0x00000706 }, /* GL_COPY_PIXEL_TOKEN */
+ { 7252, 0x00008F36 }, /* GL_COPY_READ_BUFFER */
+ { 7272, 0x00008F37 }, /* GL_COPY_WRITE_BUFFER */
+ { 7293, 0x00000B44 }, /* GL_CULL_FACE */
+ { 7306, 0x00000B45 }, /* GL_CULL_FACE_MODE */
+ { 7324, 0x000081AA }, /* GL_CULL_VERTEX_EXT */
+ { 7343, 0x000081AC }, /* GL_CULL_VERTEX_EYE_POSITION_EXT */
+ { 7375, 0x000081AB }, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */
+ { 7410, 0x00008626 }, /* GL_CURRENT_ATTRIB_NV */
+ { 7431, 0x00000001 }, /* GL_CURRENT_BIT */
+ { 7446, 0x00000B00 }, /* GL_CURRENT_COLOR */
+ { 7463, 0x00008453 }, /* GL_CURRENT_FOG_COORD */
+ { 7484, 0x00008453 }, /* GL_CURRENT_FOG_COORDINATE */
+ { 7510, 0x00000B01 }, /* GL_CURRENT_INDEX */
+ { 7527, 0x00008641 }, /* GL_CURRENT_MATRIX_ARB */
+ { 7549, 0x00008845 }, /* GL_CURRENT_MATRIX_INDEX_ARB */
+ { 7577, 0x00008641 }, /* GL_CURRENT_MATRIX_NV */
+ { 7598, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */
+ { 7632, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_NV */
+ { 7665, 0x00000B02 }, /* GL_CURRENT_NORMAL */
+ { 7683, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_ARB */
+ { 7713, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_OES */
+ { 7743, 0x00008B8D }, /* GL_CURRENT_PROGRAM */
+ { 7762, 0x00008865 }, /* GL_CURRENT_QUERY */
+ { 7779, 0x00008865 }, /* GL_CURRENT_QUERY_ARB */
+ { 7800, 0x00000B04 }, /* GL_CURRENT_RASTER_COLOR */
+ { 7824, 0x00000B09 }, /* GL_CURRENT_RASTER_DISTANCE */
+ { 7851, 0x00000B05 }, /* GL_CURRENT_RASTER_INDEX */
+ { 7875, 0x00000B07 }, /* GL_CURRENT_RASTER_POSITION */
+ { 7902, 0x00000B08 }, /* GL_CURRENT_RASTER_POSITION_VALID */
+ { 7935, 0x0000845F }, /* GL_CURRENT_RASTER_SECONDARY_COLOR */
+ { 7969, 0x00000B06 }, /* GL_CURRENT_RASTER_TEXTURE_COORDS */
+ { 8002, 0x00008459 }, /* GL_CURRENT_SECONDARY_COLOR */
+ { 8029, 0x00000B03 }, /* GL_CURRENT_TEXTURE_COORDS */
+ { 8055, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB */
+ { 8080, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB_ARB */
+ { 8109, 0x000086A8 }, /* GL_CURRENT_WEIGHT_ARB */
+ { 8131, 0x00000900 }, /* GL_CW */
+ { 8137, 0x0000875B }, /* GL_DEBUG_ASSERT_MESA */
+ { 8158, 0x00008759 }, /* GL_DEBUG_OBJECT_MESA */
+ { 8179, 0x0000875A }, /* GL_DEBUG_PRINT_MESA */
+ { 8199, 0x00002101 }, /* GL_DECAL */
+ { 8208, 0x00001E03 }, /* GL_DECR */
+ { 8216, 0x00008508 }, /* GL_DECR_WRAP */
+ { 8229, 0x00008508 }, /* GL_DECR_WRAP_EXT */
+ { 8246, 0x00008B80 }, /* GL_DELETE_STATUS */
+ { 8263, 0x00001801 }, /* GL_DEPTH */
+ { 8272, 0x000088F0 }, /* GL_DEPTH24_STENCIL8 */
+ { 8292, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_EXT */
+ { 8316, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_OES */
+ { 8340, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT */
+ { 8360, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_EXT */
+ { 8384, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_OES */
+ { 8408, 0x00000D1F }, /* GL_DEPTH_BIAS */
+ { 8422, 0x00000D56 }, /* GL_DEPTH_BITS */
+ { 8436, 0x00008891 }, /* GL_DEPTH_BOUNDS_EXT */
+ { 8456, 0x00008890 }, /* GL_DEPTH_BOUNDS_TEST_EXT */
+ { 8481, 0x00008223 }, /* GL_DEPTH_BUFFER */
+ { 8497, 0x00000100 }, /* GL_DEPTH_BUFFER_BIT */
+ { 8517, 0x0000864F }, /* GL_DEPTH_CLAMP */
+ { 8532, 0x0000864F }, /* GL_DEPTH_CLAMP_NV */
+ { 8550, 0x00000B73 }, /* GL_DEPTH_CLEAR_VALUE */
+ { 8571, 0x00001902 }, /* GL_DEPTH_COMPONENT */
+ { 8590, 0x000081A5 }, /* GL_DEPTH_COMPONENT16 */
+ { 8611, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_ARB */
+ { 8636, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_OES */
+ { 8661, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_SGIX */
+ { 8687, 0x000081A6 }, /* GL_DEPTH_COMPONENT24 */
+ { 8708, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_ARB */
+ { 8733, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_OES */
+ { 8758, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_SGIX */
+ { 8784, 0x000081A7 }, /* GL_DEPTH_COMPONENT32 */
+ { 8805, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_ARB */
+ { 8830, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_OES */
+ { 8855, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_SGIX */
+ { 8881, 0x00000B74 }, /* GL_DEPTH_FUNC */
+ { 8895, 0x00000B70 }, /* GL_DEPTH_RANGE */
+ { 8910, 0x00000D1E }, /* GL_DEPTH_SCALE */
+ { 8925, 0x000084F9 }, /* GL_DEPTH_STENCIL */
+ { 8942, 0x0000821A }, /* GL_DEPTH_STENCIL_ATTACHMENT */
+ { 8970, 0x000084F9 }, /* GL_DEPTH_STENCIL_EXT */
+ { 8991, 0x000084F9 }, /* GL_DEPTH_STENCIL_NV */
+ { 9011, 0x000084F9 }, /* GL_DEPTH_STENCIL_OES */
+ { 9032, 0x0000886F }, /* GL_DEPTH_STENCIL_TO_BGRA_NV */
+ { 9060, 0x0000886E }, /* GL_DEPTH_STENCIL_TO_RGBA_NV */
+ { 9088, 0x00000B71 }, /* GL_DEPTH_TEST */
+ { 9102, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE */
+ { 9124, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE_ARB */
+ { 9150, 0x00000B72 }, /* GL_DEPTH_WRITEMASK */
+ { 9169, 0x00001201 }, /* GL_DIFFUSE */
+ { 9180, 0x00000BD0 }, /* GL_DITHER */
+ { 9190, 0x00000A02 }, /* GL_DOMAIN */
+ { 9200, 0x00001100 }, /* GL_DONT_CARE */
+ { 9213, 0x000086AE }, /* GL_DOT3_RGB */
+ { 9225, 0x000086AF }, /* GL_DOT3_RGBA */
+ { 9238, 0x000086AF }, /* GL_DOT3_RGBA_ARB */
+ { 9255, 0x00008741 }, /* GL_DOT3_RGBA_EXT */
+ { 9272, 0x000086AE }, /* GL_DOT3_RGB_ARB */
+ { 9288, 0x00008740 }, /* GL_DOT3_RGB_EXT */
+ { 9304, 0x0000140A }, /* GL_DOUBLE */
+ { 9314, 0x00000C32 }, /* GL_DOUBLEBUFFER */
+ { 9330, 0x00000C01 }, /* GL_DRAW_BUFFER */
+ { 9345, 0x00008825 }, /* GL_DRAW_BUFFER0 */
+ { 9361, 0x00008825 }, /* GL_DRAW_BUFFER0_ARB */
+ { 9381, 0x00008825 }, /* GL_DRAW_BUFFER0_ATI */
+ { 9401, 0x00008826 }, /* GL_DRAW_BUFFER1 */
+ { 9417, 0x0000882F }, /* GL_DRAW_BUFFER10 */
+ { 9434, 0x0000882F }, /* GL_DRAW_BUFFER10_ARB */
+ { 9455, 0x0000882F }, /* GL_DRAW_BUFFER10_ATI */
+ { 9476, 0x00008830 }, /* GL_DRAW_BUFFER11 */
+ { 9493, 0x00008830 }, /* GL_DRAW_BUFFER11_ARB */
+ { 9514, 0x00008830 }, /* GL_DRAW_BUFFER11_ATI */
+ { 9535, 0x00008831 }, /* GL_DRAW_BUFFER12 */
+ { 9552, 0x00008831 }, /* GL_DRAW_BUFFER12_ARB */
+ { 9573, 0x00008831 }, /* GL_DRAW_BUFFER12_ATI */
+ { 9594, 0x00008832 }, /* GL_DRAW_BUFFER13 */
+ { 9611, 0x00008832 }, /* GL_DRAW_BUFFER13_ARB */
+ { 9632, 0x00008832 }, /* GL_DRAW_BUFFER13_ATI */
+ { 9653, 0x00008833 }, /* GL_DRAW_BUFFER14 */
+ { 9670, 0x00008833 }, /* GL_DRAW_BUFFER14_ARB */
+ { 9691, 0x00008833 }, /* GL_DRAW_BUFFER14_ATI */
+ { 9712, 0x00008834 }, /* GL_DRAW_BUFFER15 */
+ { 9729, 0x00008834 }, /* GL_DRAW_BUFFER15_ARB */
+ { 9750, 0x00008834 }, /* GL_DRAW_BUFFER15_ATI */
+ { 9771, 0x00008826 }, /* GL_DRAW_BUFFER1_ARB */
+ { 9791, 0x00008826 }, /* GL_DRAW_BUFFER1_ATI */
+ { 9811, 0x00008827 }, /* GL_DRAW_BUFFER2 */
+ { 9827, 0x00008827 }, /* GL_DRAW_BUFFER2_ARB */
+ { 9847, 0x00008827 }, /* GL_DRAW_BUFFER2_ATI */
+ { 9867, 0x00008828 }, /* GL_DRAW_BUFFER3 */
+ { 9883, 0x00008828 }, /* GL_DRAW_BUFFER3_ARB */
+ { 9903, 0x00008828 }, /* GL_DRAW_BUFFER3_ATI */
+ { 9923, 0x00008829 }, /* GL_DRAW_BUFFER4 */
+ { 9939, 0x00008829 }, /* GL_DRAW_BUFFER4_ARB */
+ { 9959, 0x00008829 }, /* GL_DRAW_BUFFER4_ATI */
+ { 9979, 0x0000882A }, /* GL_DRAW_BUFFER5 */
+ { 9995, 0x0000882A }, /* GL_DRAW_BUFFER5_ARB */
+ { 10015, 0x0000882A }, /* GL_DRAW_BUFFER5_ATI */
+ { 10035, 0x0000882B }, /* GL_DRAW_BUFFER6 */
+ { 10051, 0x0000882B }, /* GL_DRAW_BUFFER6_ARB */
+ { 10071, 0x0000882B }, /* GL_DRAW_BUFFER6_ATI */
+ { 10091, 0x0000882C }, /* GL_DRAW_BUFFER7 */
+ { 10107, 0x0000882C }, /* GL_DRAW_BUFFER7_ARB */
+ { 10127, 0x0000882C }, /* GL_DRAW_BUFFER7_ATI */
+ { 10147, 0x0000882D }, /* GL_DRAW_BUFFER8 */
+ { 10163, 0x0000882D }, /* GL_DRAW_BUFFER8_ARB */
+ { 10183, 0x0000882D }, /* GL_DRAW_BUFFER8_ATI */
+ { 10203, 0x0000882E }, /* GL_DRAW_BUFFER9 */
+ { 10219, 0x0000882E }, /* GL_DRAW_BUFFER9_ARB */
+ { 10239, 0x0000882E }, /* GL_DRAW_BUFFER9_ATI */
+ { 10259, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER */
+ { 10279, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING */
+ { 10307, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING_EXT */
+ { 10339, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER_EXT */
+ { 10363, 0x00000705 }, /* GL_DRAW_PIXEL_TOKEN */
+ { 10383, 0x00000304 }, /* GL_DST_ALPHA */
+ { 10396, 0x00000306 }, /* GL_DST_COLOR */
+ { 10409, 0x0000877A }, /* GL_DU8DV8_ATI */
+ { 10423, 0x00008779 }, /* GL_DUDV_ATI */
+ { 10435, 0x000088EA }, /* GL_DYNAMIC_COPY */
+ { 10451, 0x000088EA }, /* GL_DYNAMIC_COPY_ARB */
+ { 10471, 0x000088E8 }, /* GL_DYNAMIC_DRAW */
+ { 10487, 0x000088E8 }, /* GL_DYNAMIC_DRAW_ARB */
+ { 10507, 0x000088E9 }, /* GL_DYNAMIC_READ */
+ { 10523, 0x000088E9 }, /* GL_DYNAMIC_READ_ARB */
+ { 10543, 0x00000B43 }, /* GL_EDGE_FLAG */
+ { 10556, 0x00008079 }, /* GL_EDGE_FLAG_ARRAY */
+ { 10575, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */
+ { 10609, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB */
+ { 10647, 0x00008093 }, /* GL_EDGE_FLAG_ARRAY_POINTER */
+ { 10674, 0x0000808C }, /* GL_EDGE_FLAG_ARRAY_STRIDE */
+ { 10700, 0x00008893 }, /* GL_ELEMENT_ARRAY_BUFFER */
+ { 10724, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */
+ { 10756, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB */
+ { 10792, 0x00001600 }, /* GL_EMISSION */
+ { 10804, 0x00002000 }, /* GL_ENABLE_BIT */
+ { 10818, 0x00000202 }, /* GL_EQUAL */
+ { 10827, 0x00001509 }, /* GL_EQUIV */
+ { 10836, 0x00010000 }, /* GL_EVAL_BIT */
+ { 10848, 0x00000800 }, /* GL_EXP */
+ { 10855, 0x00000801 }, /* GL_EXP2 */
+ { 10863, 0x00001F03 }, /* GL_EXTENSIONS */
+ { 10877, 0x00002400 }, /* GL_EYE_LINEAR */
+ { 10891, 0x00002502 }, /* GL_EYE_PLANE */
+ { 10904, 0x0000855C }, /* GL_EYE_PLANE_ABSOLUTE_NV */
+ { 10929, 0x0000855B }, /* GL_EYE_RADIAL_NV */
+ { 10946, 0x00000000 }, /* GL_FALSE */
+ { 10955, 0x00001101 }, /* GL_FASTEST */
+ { 10966, 0x00001C01 }, /* GL_FEEDBACK */
+ { 10978, 0x00000DF0 }, /* GL_FEEDBACK_BUFFER_POINTER */
+ { 11005, 0x00000DF1 }, /* GL_FEEDBACK_BUFFER_SIZE */
+ { 11029, 0x00000DF2 }, /* GL_FEEDBACK_BUFFER_TYPE */
+ { 11053, 0x00001B02 }, /* GL_FILL */
+ { 11061, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION */
+ { 11088, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION_EXT */
+ { 11119, 0x0000140C }, /* GL_FIXED */
+ { 11128, 0x0000140C }, /* GL_FIXED_OES */
+ { 11141, 0x0000891D }, /* GL_FIXED_ONLY */
+ { 11155, 0x0000891D }, /* GL_FIXED_ONLY_ARB */
+ { 11173, 0x00001D00 }, /* GL_FLAT */
+ { 11181, 0x00001406 }, /* GL_FLOAT */
+ { 11190, 0x00008B5A }, /* GL_FLOAT_MAT2 */
+ { 11204, 0x00008B5A }, /* GL_FLOAT_MAT2_ARB */
+ { 11222, 0x00008B65 }, /* GL_FLOAT_MAT2x3 */
+ { 11238, 0x00008B66 }, /* GL_FLOAT_MAT2x4 */
+ { 11254, 0x00008B5B }, /* GL_FLOAT_MAT3 */
+ { 11268, 0x00008B5B }, /* GL_FLOAT_MAT3_ARB */
+ { 11286, 0x00008B67 }, /* GL_FLOAT_MAT3x2 */
+ { 11302, 0x00008B68 }, /* GL_FLOAT_MAT3x4 */
+ { 11318, 0x00008B5C }, /* GL_FLOAT_MAT4 */
+ { 11332, 0x00008B5C }, /* GL_FLOAT_MAT4_ARB */
+ { 11350, 0x00008B69 }, /* GL_FLOAT_MAT4x2 */
+ { 11366, 0x00008B6A }, /* GL_FLOAT_MAT4x3 */
+ { 11382, 0x00008B50 }, /* GL_FLOAT_VEC2 */
+ { 11396, 0x00008B50 }, /* GL_FLOAT_VEC2_ARB */
+ { 11414, 0x00008B51 }, /* GL_FLOAT_VEC3 */
+ { 11428, 0x00008B51 }, /* GL_FLOAT_VEC3_ARB */
+ { 11446, 0x00008B52 }, /* GL_FLOAT_VEC4 */
+ { 11460, 0x00008B52 }, /* GL_FLOAT_VEC4_ARB */
+ { 11478, 0x00000B60 }, /* GL_FOG */
+ { 11485, 0x00000080 }, /* GL_FOG_BIT */
+ { 11496, 0x00000B66 }, /* GL_FOG_COLOR */
+ { 11509, 0x00008451 }, /* GL_FOG_COORD */
+ { 11522, 0x00008451 }, /* GL_FOG_COORDINATE */
+ { 11540, 0x00008457 }, /* GL_FOG_COORDINATE_ARRAY */
+ { 11564, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */
+ { 11603, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB */
+ { 11646, 0x00008456 }, /* GL_FOG_COORDINATE_ARRAY_POINTER */
+ { 11678, 0x00008455 }, /* GL_FOG_COORDINATE_ARRAY_STRIDE */
+ { 11709, 0x00008454 }, /* GL_FOG_COORDINATE_ARRAY_TYPE */
+ { 11738, 0x00008450 }, /* GL_FOG_COORDINATE_SOURCE */
+ { 11763, 0x00008457 }, /* GL_FOG_COORD_ARRAY */
+ { 11782, 0x0000889D }, /* GL_FOG_COORD_ARRAY_BUFFER_BINDING */
+ { 11816, 0x00008456 }, /* GL_FOG_COORD_ARRAY_POINTER */
+ { 11843, 0x00008455 }, /* GL_FOG_COORD_ARRAY_STRIDE */
+ { 11869, 0x00008454 }, /* GL_FOG_COORD_ARRAY_TYPE */
+ { 11893, 0x00008450 }, /* GL_FOG_COORD_SRC */
+ { 11910, 0x00000B62 }, /* GL_FOG_DENSITY */
+ { 11925, 0x0000855A }, /* GL_FOG_DISTANCE_MODE_NV */
+ { 11949, 0x00000B64 }, /* GL_FOG_END */
+ { 11960, 0x00000C54 }, /* GL_FOG_HINT */
+ { 11972, 0x00000B61 }, /* GL_FOG_INDEX */
+ { 11985, 0x00000B65 }, /* GL_FOG_MODE */
+ { 11997, 0x00008198 }, /* GL_FOG_OFFSET_SGIX */
+ { 12016, 0x00008199 }, /* GL_FOG_OFFSET_VALUE_SGIX */
+ { 12041, 0x00000B63 }, /* GL_FOG_START */
+ { 12054, 0x00008452 }, /* GL_FRAGMENT_DEPTH */
+ { 12072, 0x00008804 }, /* GL_FRAGMENT_PROGRAM_ARB */
+ { 12096, 0x00008B30 }, /* GL_FRAGMENT_SHADER */
+ { 12115, 0x00008B30 }, /* GL_FRAGMENT_SHADER_ARB */
+ { 12138, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */
+ { 12173, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES */
+ { 12212, 0x00008D40 }, /* GL_FRAMEBUFFER */
+ { 12227, 0x00008215 }, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */
+ { 12264, 0x00008214 }, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */
+ { 12300, 0x00008210 }, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */
+ { 12341, 0x00008211 }, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */
+ { 12382, 0x00008216 }, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */
+ { 12419, 0x00008213 }, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */
+ { 12456, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED */
+ { 12490, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB */
+ { 12528, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */
+ { 12566, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT */
+ { 12608, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES */
+ { 12650, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */
+ { 12688, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT */
+ { 12730, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES */
+ { 12772, 0x00008212 }, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */
+ { 12807, 0x00008217 }, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */
+ { 12846, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT */
+ { 12895, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES */
+ { 12944, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */
+ { 12992, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT */
+ { 13044, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES */
+ { 13096, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */
+ { 13136, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */
+ { 13180, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */
+ { 13220, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT */
+ { 13264, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES */
+ { 13308, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING */
+ { 13331, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_EXT */
+ { 13358, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_OES */
+ { 13385, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE */
+ { 13409, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_EXT */
+ { 13437, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_OES */
+ { 13465, 0x00008218 }, /* GL_FRAMEBUFFER_DEFAULT */
+ { 13488, 0x00008D40 }, /* GL_FRAMEBUFFER_EXT */
+ { 13507, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */
+ { 13544, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT */
+ { 13585, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES */
+ { 13626, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS */
+ { 13663, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */
+ { 13704, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES */
+ { 13745, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */
+ { 13783, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT */
+ { 13825, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES */
+ { 13867, 0x00008CD8 }, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */
+ { 13918, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */
+ { 13956, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES */
+ { 13994, 0x00008DA9 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */
+ { 14036, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS */
+ { 14076, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB */
+ { 14120, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */
+ { 14165, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT */
+ { 14214, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES */
+ { 14263, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */
+ { 14301, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT */
+ { 14343, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */
+ { 14381, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT */
+ { 14423, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES */
+ { 14465, 0x00008D40 }, /* GL_FRAMEBUFFER_OES */
+ { 14484, 0x00008CDE }, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */
+ { 14516, 0x00008219 }, /* GL_FRAMEBUFFER_UNDEFINED */
+ { 14541, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED */
+ { 14568, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_EXT */
+ { 14599, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_OES */
+ { 14630, 0x00000404 }, /* GL_FRONT */
+ { 14639, 0x00000408 }, /* GL_FRONT_AND_BACK */
+ { 14657, 0x00000B46 }, /* GL_FRONT_FACE */
+ { 14671, 0x00000400 }, /* GL_FRONT_LEFT */
+ { 14685, 0x00000401 }, /* GL_FRONT_RIGHT */
+ { 14700, 0x00008006 }, /* GL_FUNC_ADD */
+ { 14712, 0x00008006 }, /* GL_FUNC_ADD_EXT */
+ { 14728, 0x00008006 }, /* GL_FUNC_ADD_OES */
+ { 14744, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT */
+ { 14769, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_EXT */
+ { 14798, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_OES */
+ { 14827, 0x0000800A }, /* GL_FUNC_SUBTRACT */
+ { 14844, 0x0000800A }, /* GL_FUNC_SUBTRACT_EXT */
+ { 14865, 0x0000800A }, /* GL_FUNC_SUBTRACT_OES */
+ { 14886, 0x00008191 }, /* GL_GENERATE_MIPMAP */
+ { 14905, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT */
+ { 14929, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT_SGIS */
+ { 14958, 0x00008191 }, /* GL_GENERATE_MIPMAP_SGIS */
+ { 14982, 0x00008917 }, /* GL_GEOMETRY_INPUT_TYPE */
+ { 15005, 0x00008DDB }, /* GL_GEOMETRY_INPUT_TYPE_ARB */
+ { 15032, 0x00008918 }, /* GL_GEOMETRY_OUTPUT_TYPE */
+ { 15056, 0x00008DDC }, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */
+ { 15084, 0x00008DD9 }, /* GL_GEOMETRY_SHADER */
+ { 15103, 0x00008DD9 }, /* GL_GEOMETRY_SHADER_ARB */
+ { 15126, 0x00008916 }, /* GL_GEOMETRY_VERTICES_OUT */
+ { 15151, 0x00008DDA }, /* GL_GEOMETRY_VERTICES_OUT_ARB */
+ { 15180, 0x00000206 }, /* GL_GEQUAL */
+ { 15190, 0x00000204 }, /* GL_GREATER */
+ { 15201, 0x00001904 }, /* GL_GREEN */
+ { 15210, 0x00000D19 }, /* GL_GREEN_BIAS */
+ { 15224, 0x00000D53 }, /* GL_GREEN_BITS */
+ { 15238, 0x00008D95 }, /* GL_GREEN_INTEGER */
+ { 15255, 0x00008D95 }, /* GL_GREEN_INTEGER_EXT */
+ { 15276, 0x00000D18 }, /* GL_GREEN_SCALE */
+ { 15291, 0x0000140B }, /* GL_HALF_FLOAT */
+ { 15305, 0x00008D61 }, /* GL_HALF_FLOAT_OES */
+ { 15323, 0x00008DF2 }, /* GL_HIGH_FLOAT */
+ { 15337, 0x00008DF5 }, /* GL_HIGH_INT */
+ { 15349, 0x00008000 }, /* GL_HINT_BIT */
+ { 15361, 0x00008024 }, /* GL_HISTOGRAM */
+ { 15374, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE */
+ { 15398, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE_EXT */
+ { 15426, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE */
+ { 15449, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE_EXT */
+ { 15476, 0x00008024 }, /* GL_HISTOGRAM_EXT */
+ { 15493, 0x00008027 }, /* GL_HISTOGRAM_FORMAT */
+ { 15513, 0x00008027 }, /* GL_HISTOGRAM_FORMAT_EXT */
+ { 15537, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE */
+ { 15561, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE_EXT */
+ { 15589, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE */
+ { 15617, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE_EXT */
+ { 15649, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE */
+ { 15671, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE_EXT */
+ { 15697, 0x0000802D }, /* GL_HISTOGRAM_SINK */
+ { 15715, 0x0000802D }, /* GL_HISTOGRAM_SINK_EXT */
+ { 15737, 0x00008026 }, /* GL_HISTOGRAM_WIDTH */
+ { 15756, 0x00008026 }, /* GL_HISTOGRAM_WIDTH_EXT */
+ { 15779, 0x0000862A }, /* GL_IDENTITY_NV */
+ { 15794, 0x00008150 }, /* GL_IGNORE_BORDER_HP */
+ { 15814, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */
+ { 15850, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */
+ { 15890, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */
+ { 15924, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */
+ { 15962, 0x00001E02 }, /* GL_INCR */
+ { 15970, 0x00008507 }, /* GL_INCR_WRAP */
+ { 15983, 0x00008507 }, /* GL_INCR_WRAP_EXT */
+ { 16000, 0x00008222 }, /* GL_INDEX */
+ { 16009, 0x00008077 }, /* GL_INDEX_ARRAY */
+ { 16024, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING */
+ { 16054, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING_ARB */
+ { 16088, 0x00008091 }, /* GL_INDEX_ARRAY_POINTER */
+ { 16111, 0x00008086 }, /* GL_INDEX_ARRAY_STRIDE */
+ { 16133, 0x00008085 }, /* GL_INDEX_ARRAY_TYPE */
+ { 16153, 0x00000D51 }, /* GL_INDEX_BITS */
+ { 16167, 0x00000C20 }, /* GL_INDEX_CLEAR_VALUE */
+ { 16188, 0x00000BF1 }, /* GL_INDEX_LOGIC_OP */
+ { 16206, 0x00000C30 }, /* GL_INDEX_MODE */
+ { 16220, 0x00000D13 }, /* GL_INDEX_OFFSET */
+ { 16236, 0x00000D12 }, /* GL_INDEX_SHIFT */
+ { 16251, 0x00000C21 }, /* GL_INDEX_WRITEMASK */
+ { 16270, 0x00008B84 }, /* GL_INFO_LOG_LENGTH */
+ { 16289, 0x00001404 }, /* GL_INT */
+ { 16296, 0x00008049 }, /* GL_INTENSITY */
+ { 16309, 0x0000804C }, /* GL_INTENSITY12 */
+ { 16324, 0x0000804C }, /* GL_INTENSITY12_EXT */
+ { 16343, 0x0000804D }, /* GL_INTENSITY16 */
+ { 16358, 0x00008D8B }, /* GL_INTENSITY16I_EXT */
+ { 16378, 0x00008D79 }, /* GL_INTENSITY16UI_EXT */
+ { 16399, 0x0000804D }, /* GL_INTENSITY16_EXT */
+ { 16418, 0x00008D85 }, /* GL_INTENSITY32I_EXT */
+ { 16438, 0x00008D73 }, /* GL_INTENSITY32UI_EXT */
+ { 16459, 0x0000804A }, /* GL_INTENSITY4 */
+ { 16473, 0x0000804A }, /* GL_INTENSITY4_EXT */
+ { 16491, 0x0000804B }, /* GL_INTENSITY8 */
+ { 16505, 0x00008D91 }, /* GL_INTENSITY8I_EXT */
+ { 16524, 0x00008D7F }, /* GL_INTENSITY8UI_EXT */
+ { 16544, 0x0000804B }, /* GL_INTENSITY8_EXT */
+ { 16562, 0x00008049 }, /* GL_INTENSITY_EXT */
+ { 16579, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS */
+ { 16602, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS_EXT */
+ { 16629, 0x00008575 }, /* GL_INTERPOLATE */
+ { 16644, 0x00008575 }, /* GL_INTERPOLATE_ARB */
+ { 16663, 0x00008575 }, /* GL_INTERPOLATE_EXT */
+ { 16682, 0x00008DF7 }, /* GL_INT_10_10_10_2_OES */
+ { 16704, 0x00008DC9 }, /* GL_INT_SAMPLER_1D */
+ { 16722, 0x00008DCE }, /* GL_INT_SAMPLER_1D_ARRAY */
+ { 16746, 0x00008DCE }, /* GL_INT_SAMPLER_1D_ARRAY_EXT */
+ { 16774, 0x00008DC9 }, /* GL_INT_SAMPLER_1D_EXT */
+ { 16796, 0x00008DCA }, /* GL_INT_SAMPLER_2D */
+ { 16814, 0x00008DCF }, /* GL_INT_SAMPLER_2D_ARRAY */
+ { 16838, 0x00008DCF }, /* GL_INT_SAMPLER_2D_ARRAY_EXT */
+ { 16866, 0x00008DCA }, /* GL_INT_SAMPLER_2D_EXT */
+ { 16888, 0x00008DCD }, /* GL_INT_SAMPLER_2D_RECT */
+ { 16911, 0x00008DCD }, /* GL_INT_SAMPLER_2D_RECT_EXT */
+ { 16938, 0x00008DCB }, /* GL_INT_SAMPLER_3D */
+ { 16956, 0x00008DCB }, /* GL_INT_SAMPLER_3D_EXT */
+ { 16978, 0x00008DD0 }, /* GL_INT_SAMPLER_BUFFER */
+ { 17000, 0x00008DD0 }, /* GL_INT_SAMPLER_BUFFER_EXT */
+ { 17026, 0x00008DCC }, /* GL_INT_SAMPLER_CUBE */
+ { 17046, 0x00008DCC }, /* GL_INT_SAMPLER_CUBE_EXT */
+ { 17070, 0x00008B53 }, /* GL_INT_VEC2 */
+ { 17082, 0x00008B53 }, /* GL_INT_VEC2_ARB */
+ { 17098, 0x00008B54 }, /* GL_INT_VEC3 */
+ { 17110, 0x00008B54 }, /* GL_INT_VEC3_ARB */
+ { 17126, 0x00008B55 }, /* GL_INT_VEC4 */
+ { 17138, 0x00008B55 }, /* GL_INT_VEC4_ARB */
+ { 17154, 0x00000500 }, /* GL_INVALID_ENUM */
+ { 17170, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION */
+ { 17203, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */
+ { 17240, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_OES */
+ { 17277, 0x00000502 }, /* GL_INVALID_OPERATION */
+ { 17298, 0x00000501 }, /* GL_INVALID_VALUE */
+ { 17315, 0x0000862B }, /* GL_INVERSE_NV */
+ { 17329, 0x0000862D }, /* GL_INVERSE_TRANSPOSE_NV */
+ { 17353, 0x0000150A }, /* GL_INVERT */
+ { 17363, 0x00001E00 }, /* GL_KEEP */
+ { 17371, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION */
+ { 17397, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION_EXT */
+ { 17427, 0x00000406 }, /* GL_LEFT */
+ { 17435, 0x00000203 }, /* GL_LEQUAL */
+ { 17445, 0x00000201 }, /* GL_LESS */
+ { 17453, 0x00004000 }, /* GL_LIGHT0 */
+ { 17463, 0x00004001 }, /* GL_LIGHT1 */
+ { 17473, 0x00004002 }, /* GL_LIGHT2 */
+ { 17483, 0x00004003 }, /* GL_LIGHT3 */
+ { 17493, 0x00004004 }, /* GL_LIGHT4 */
+ { 17503, 0x00004005 }, /* GL_LIGHT5 */
+ { 17513, 0x00004006 }, /* GL_LIGHT6 */
+ { 17523, 0x00004007 }, /* GL_LIGHT7 */
+ { 17533, 0x00000B50 }, /* GL_LIGHTING */
+ { 17545, 0x00000040 }, /* GL_LIGHTING_BIT */
+ { 17561, 0x00000B53 }, /* GL_LIGHT_MODEL_AMBIENT */
+ { 17584, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL */
+ { 17613, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL_EXT */
+ { 17646, 0x00000B51 }, /* GL_LIGHT_MODEL_LOCAL_VIEWER */
+ { 17674, 0x00000B52 }, /* GL_LIGHT_MODEL_TWO_SIDE */
+ { 17698, 0x00001B01 }, /* GL_LINE */
+ { 17706, 0x00002601 }, /* GL_LINEAR */
+ { 17716, 0x00001208 }, /* GL_LINEAR_ATTENUATION */
+ { 17738, 0x00008170 }, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */
+ { 17768, 0x0000844F }, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */
+ { 17799, 0x00002703 }, /* GL_LINEAR_MIPMAP_LINEAR */
+ { 17823, 0x00002701 }, /* GL_LINEAR_MIPMAP_NEAREST */
+ { 17848, 0x00000001 }, /* GL_LINES */
+ { 17857, 0x0000000A }, /* GL_LINES_ADJACENCY */
+ { 17876, 0x0000000A }, /* GL_LINES_ADJACENCY_ARB */
+ { 17899, 0x00000004 }, /* GL_LINE_BIT */
+ { 17911, 0x00000002 }, /* GL_LINE_LOOP */
+ { 17924, 0x00000707 }, /* GL_LINE_RESET_TOKEN */
+ { 17944, 0x00000B20 }, /* GL_LINE_SMOOTH */
+ { 17959, 0x00000C52 }, /* GL_LINE_SMOOTH_HINT */
+ { 17979, 0x00000B24 }, /* GL_LINE_STIPPLE */
+ { 17995, 0x00000B25 }, /* GL_LINE_STIPPLE_PATTERN */
+ { 18019, 0x00000B26 }, /* GL_LINE_STIPPLE_REPEAT */
+ { 18042, 0x00000003 }, /* GL_LINE_STRIP */
+ { 18056, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY */
+ { 18080, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY_ARB */
+ { 18108, 0x00000702 }, /* GL_LINE_TOKEN */
+ { 18122, 0x00000B21 }, /* GL_LINE_WIDTH */
+ { 18136, 0x00000B23 }, /* GL_LINE_WIDTH_GRANULARITY */
+ { 18162, 0x00000B22 }, /* GL_LINE_WIDTH_RANGE */
+ { 18182, 0x00008B82 }, /* GL_LINK_STATUS */
+ { 18197, 0x00000B32 }, /* GL_LIST_BASE */
+ { 18210, 0x00020000 }, /* GL_LIST_BIT */
+ { 18222, 0x00000B33 }, /* GL_LIST_INDEX */
+ { 18236, 0x00000B30 }, /* GL_LIST_MODE */
+ { 18249, 0x00000101 }, /* GL_LOAD */
+ { 18257, 0x00000BF1 }, /* GL_LOGIC_OP */
+ { 18269, 0x00000BF0 }, /* GL_LOGIC_OP_MODE */
+ { 18286, 0x00008CA1 }, /* GL_LOWER_LEFT */
+ { 18300, 0x00008DF0 }, /* GL_LOW_FLOAT */
+ { 18313, 0x00008DF3 }, /* GL_LOW_INT */
+ { 18324, 0x00001909 }, /* GL_LUMINANCE */
+ { 18337, 0x00008041 }, /* GL_LUMINANCE12 */
+ { 18352, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12 */
+ { 18375, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12_EXT */
+ { 18402, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4 */
+ { 18424, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4_EXT */
+ { 18450, 0x00008041 }, /* GL_LUMINANCE12_EXT */
+ { 18469, 0x00008042 }, /* GL_LUMINANCE16 */
+ { 18484, 0x00008D8C }, /* GL_LUMINANCE16I_EXT */
+ { 18504, 0x00008D7A }, /* GL_LUMINANCE16UI_EXT */
+ { 18525, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16 */
+ { 18548, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16_EXT */
+ { 18575, 0x00008042 }, /* GL_LUMINANCE16_EXT */
+ { 18594, 0x00008D86 }, /* GL_LUMINANCE32I_EXT */
+ { 18614, 0x00008D74 }, /* GL_LUMINANCE32UI_EXT */
+ { 18635, 0x0000803F }, /* GL_LUMINANCE4 */
+ { 18649, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4 */
+ { 18670, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4_EXT */
+ { 18695, 0x0000803F }, /* GL_LUMINANCE4_EXT */
+ { 18713, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2 */
+ { 18734, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2_EXT */
+ { 18759, 0x00008040 }, /* GL_LUMINANCE8 */
+ { 18773, 0x00008D92 }, /* GL_LUMINANCE8I_EXT */
+ { 18792, 0x00008D80 }, /* GL_LUMINANCE8UI_EXT */
+ { 18812, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8 */
+ { 18833, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8_EXT */
+ { 18858, 0x00008040 }, /* GL_LUMINANCE8_EXT */
+ { 18876, 0x0000190A }, /* GL_LUMINANCE_ALPHA */
+ { 18895, 0x00008D8D }, /* GL_LUMINANCE_ALPHA16I_EXT */
+ { 18921, 0x00008D7B }, /* GL_LUMINANCE_ALPHA16UI_EXT */
+ { 18948, 0x00008D87 }, /* GL_LUMINANCE_ALPHA32I_EXT */
+ { 18974, 0x00008D75 }, /* GL_LUMINANCE_ALPHA32UI_EXT */
+ { 19001, 0x00008D93 }, /* GL_LUMINANCE_ALPHA8I_EXT */
+ { 19026, 0x00008D81 }, /* GL_LUMINANCE_ALPHA8UI_EXT */
+ { 19052, 0x00008D9D }, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */
+ { 19083, 0x00008D9C }, /* GL_LUMINANCE_INTEGER_EXT */
+ { 19108, 0x0000821B }, /* GL_MAJOR_VERSION */
+ { 19125, 0x00000D90 }, /* GL_MAP1_COLOR_4 */
+ { 19141, 0x00000DD0 }, /* GL_MAP1_GRID_DOMAIN */
+ { 19161, 0x00000DD1 }, /* GL_MAP1_GRID_SEGMENTS */
+ { 19183, 0x00000D91 }, /* GL_MAP1_INDEX */
+ { 19197, 0x00000D92 }, /* GL_MAP1_NORMAL */
+ { 19212, 0x00000D93 }, /* GL_MAP1_TEXTURE_COORD_1 */
+ { 19236, 0x00000D94 }, /* GL_MAP1_TEXTURE_COORD_2 */
+ { 19260, 0x00000D95 }, /* GL_MAP1_TEXTURE_COORD_3 */
+ { 19284, 0x00000D96 }, /* GL_MAP1_TEXTURE_COORD_4 */
+ { 19308, 0x00000D97 }, /* GL_MAP1_VERTEX_3 */
+ { 19325, 0x00000D98 }, /* GL_MAP1_VERTEX_4 */
+ { 19342, 0x00008660 }, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */
+ { 19370, 0x0000866A }, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */
+ { 19399, 0x0000866B }, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */
+ { 19428, 0x0000866C }, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */
+ { 19457, 0x0000866D }, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */
+ { 19486, 0x0000866E }, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */
+ { 19515, 0x0000866F }, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */
+ { 19544, 0x00008661 }, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */
+ { 19572, 0x00008662 }, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */
+ { 19600, 0x00008663 }, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */
+ { 19628, 0x00008664 }, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */
+ { 19656, 0x00008665 }, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */
+ { 19684, 0x00008666 }, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */
+ { 19712, 0x00008667 }, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */
+ { 19740, 0x00008668 }, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */
+ { 19768, 0x00008669 }, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */
+ { 19796, 0x00000DB0 }, /* GL_MAP2_COLOR_4 */
+ { 19812, 0x00000DD2 }, /* GL_MAP2_GRID_DOMAIN */
+ { 19832, 0x00000DD3 }, /* GL_MAP2_GRID_SEGMENTS */
+ { 19854, 0x00000DB1 }, /* GL_MAP2_INDEX */
+ { 19868, 0x00000DB2 }, /* GL_MAP2_NORMAL */
+ { 19883, 0x00000DB3 }, /* GL_MAP2_TEXTURE_COORD_1 */
+ { 19907, 0x00000DB4 }, /* GL_MAP2_TEXTURE_COORD_2 */
+ { 19931, 0x00000DB5 }, /* GL_MAP2_TEXTURE_COORD_3 */
+ { 19955, 0x00000DB6 }, /* GL_MAP2_TEXTURE_COORD_4 */
+ { 19979, 0x00000DB7 }, /* GL_MAP2_VERTEX_3 */
+ { 19996, 0x00000DB8 }, /* GL_MAP2_VERTEX_4 */
+ { 20013, 0x00008670 }, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */
+ { 20041, 0x0000867A }, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */
+ { 20070, 0x0000867B }, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */
+ { 20099, 0x0000867C }, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */
+ { 20128, 0x0000867D }, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */
+ { 20157, 0x0000867E }, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */
+ { 20186, 0x0000867F }, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */
+ { 20215, 0x00008671 }, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */
+ { 20243, 0x00008672 }, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */
+ { 20271, 0x00008673 }, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */
+ { 20299, 0x00008674 }, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */
+ { 20327, 0x00008675 }, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */
+ { 20355, 0x00008676 }, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */
+ { 20383, 0x00008677 }, /* GL_MAP2_VERTEX_ATTRIB7_4_NV */
+ { 20411, 0x00008678 }, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */
+ { 20439, 0x00008679 }, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */
+ { 20467, 0x00000D10 }, /* GL_MAP_COLOR */
+ { 20480, 0x00000010 }, /* GL_MAP_FLUSH_EXPLICIT_BIT */
+ { 20506, 0x00000008 }, /* GL_MAP_INVALIDATE_BUFFER_BIT */
+ { 20535, 0x00000004 }, /* GL_MAP_INVALIDATE_RANGE_BIT */
+ { 20563, 0x00000001 }, /* GL_MAP_READ_BIT */
+ { 20579, 0x00000D11 }, /* GL_MAP_STENCIL */
+ { 20594, 0x00000020 }, /* GL_MAP_UNSYNCHRONIZED_BIT */
+ { 20620, 0x00000002 }, /* GL_MAP_WRITE_BIT */
+ { 20637, 0x000088C0 }, /* GL_MATRIX0_ARB */
+ { 20652, 0x00008630 }, /* GL_MATRIX0_NV */
+ { 20666, 0x000088CA }, /* GL_MATRIX10_ARB */
+ { 20682, 0x000088CB }, /* GL_MATRIX11_ARB */
+ { 20698, 0x000088CC }, /* GL_MATRIX12_ARB */
+ { 20714, 0x000088CD }, /* GL_MATRIX13_ARB */
+ { 20730, 0x000088CE }, /* GL_MATRIX14_ARB */
+ { 20746, 0x000088CF }, /* GL_MATRIX15_ARB */
+ { 20762, 0x000088D0 }, /* GL_MATRIX16_ARB */
+ { 20778, 0x000088D1 }, /* GL_MATRIX17_ARB */
+ { 20794, 0x000088D2 }, /* GL_MATRIX18_ARB */
+ { 20810, 0x000088D3 }, /* GL_MATRIX19_ARB */
+ { 20826, 0x000088C1 }, /* GL_MATRIX1_ARB */
+ { 20841, 0x00008631 }, /* GL_MATRIX1_NV */
+ { 20855, 0x000088D4 }, /* GL_MATRIX20_ARB */
+ { 20871, 0x000088D5 }, /* GL_MATRIX21_ARB */
+ { 20887, 0x000088D6 }, /* GL_MATRIX22_ARB */
+ { 20903, 0x000088D7 }, /* GL_MATRIX23_ARB */
+ { 20919, 0x000088D8 }, /* GL_MATRIX24_ARB */
+ { 20935, 0x000088D9 }, /* GL_MATRIX25_ARB */
+ { 20951, 0x000088DA }, /* GL_MATRIX26_ARB */
+ { 20967, 0x000088DB }, /* GL_MATRIX27_ARB */
+ { 20983, 0x000088DC }, /* GL_MATRIX28_ARB */
+ { 20999, 0x000088DD }, /* GL_MATRIX29_ARB */
+ { 21015, 0x000088C2 }, /* GL_MATRIX2_ARB */
+ { 21030, 0x00008632 }, /* GL_MATRIX2_NV */
+ { 21044, 0x000088DE }, /* GL_MATRIX30_ARB */
+ { 21060, 0x000088DF }, /* GL_MATRIX31_ARB */
+ { 21076, 0x000088C3 }, /* GL_MATRIX3_ARB */
+ { 21091, 0x00008633 }, /* GL_MATRIX3_NV */
+ { 21105, 0x000088C4 }, /* GL_MATRIX4_ARB */
+ { 21120, 0x00008634 }, /* GL_MATRIX4_NV */
+ { 21134, 0x000088C5 }, /* GL_MATRIX5_ARB */
+ { 21149, 0x00008635 }, /* GL_MATRIX5_NV */
+ { 21163, 0x000088C6 }, /* GL_MATRIX6_ARB */
+ { 21178, 0x00008636 }, /* GL_MATRIX6_NV */
+ { 21192, 0x000088C7 }, /* GL_MATRIX7_ARB */
+ { 21207, 0x00008637 }, /* GL_MATRIX7_NV */
+ { 21221, 0x000088C8 }, /* GL_MATRIX8_ARB */
+ { 21236, 0x000088C9 }, /* GL_MATRIX9_ARB */
+ { 21251, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_ARB */
+ { 21277, 0x00008B9E }, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */
+ { 21318, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_OES */
+ { 21344, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */
+ { 21378, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_OES */
+ { 21412, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */
+ { 21443, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_OES */
+ { 21474, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */
+ { 21507, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_OES */
+ { 21540, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */
+ { 21571, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_OES */
+ { 21602, 0x00000BA0 }, /* GL_MATRIX_MODE */
+ { 21617, 0x00008840 }, /* GL_MATRIX_PALETTE_ARB */
+ { 21639, 0x00008840 }, /* GL_MATRIX_PALETTE_OES */
+ { 21661, 0x00008008 }, /* GL_MAX */
+ { 21668, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE */
+ { 21691, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE_OES */
+ { 21718, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS */
+ { 21746, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */
+ { 21778, 0x00000D35 }, /* GL_MAX_ATTRIB_STACK_DEPTH */
+ { 21804, 0x00000D3B }, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */
+ { 21837, 0x00008177 }, /* GL_MAX_CLIPMAP_DEPTH_SGIX */
+ { 21863, 0x00008178 }, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */
+ { 21897, 0x00000D32 }, /* GL_MAX_CLIP_DISTANCES */
+ { 21919, 0x00000D32 }, /* GL_MAX_CLIP_PLANES */
+ { 21938, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS */
+ { 21963, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS_EXT */
+ { 21992, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */
+ { 22024, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI */
+ { 22060, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */
+ { 22096, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB */
+ { 22136, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT */
+ { 22162, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT_EXT */
+ { 22192, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH */
+ { 22217, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH_EXT */
+ { 22246, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */
+ { 22275, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB */
+ { 22308, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES */
+ { 22341, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS */
+ { 22361, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ARB */
+ { 22385, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ATI */
+ { 22409, 0x000080E9 }, /* GL_MAX_ELEMENTS_INDICES */
+ { 22433, 0x000080E8 }, /* GL_MAX_ELEMENTS_VERTICES */
+ { 22458, 0x00000D30 }, /* GL_MAX_EVAL_ORDER */
+ { 22476, 0x00008008 }, /* GL_MAX_EXT */
+ { 22487, 0x00009125 }, /* GL_MAX_FRAGMENT_INPUT_COMPONENTS */
+ { 22520, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */
+ { 22555, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB */
+ { 22594, 0x00008DFD }, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */
+ { 22626, 0x00009123 }, /* GL_MAX_GEOMETRY_INPUT_COMPONENTS */
+ { 22659, 0x00009124 }, /* GL_MAX_GEOMETRY_OUTPUT_COMPONENTS */
+ { 22693, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES */
+ { 22725, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB */
+ { 22761, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS */
+ { 22797, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB */
+ { 22837, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS */
+ { 22877, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB */
+ { 22921, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS */
+ { 22956, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB */
+ { 22995, 0x00008DDD }, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */
+ { 23034, 0x00000D31 }, /* GL_MAX_LIGHTS */
+ { 23048, 0x00000B31 }, /* GL_MAX_LIST_NESTING */
+ { 23068, 0x00008841 }, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */
+ { 23106, 0x00000D36 }, /* GL_MAX_MODELVIEW_STACK_DEPTH */
+ { 23135, 0x00000D37 }, /* GL_MAX_NAME_STACK_DEPTH */
+ { 23159, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_ARB */
+ { 23187, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_OES */
+ { 23215, 0x00000D34 }, /* GL_MAX_PIXEL_MAP_TABLE */
+ { 23238, 0x000088B1 }, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */
+ { 23275, 0x0000880B }, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */
+ { 23311, 0x000088AD }, /* GL_MAX_PROGRAM_ATTRIBS_ARB */
+ { 23338, 0x000088F5 }, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */
+ { 23367, 0x000088B5 }, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */
+ { 23401, 0x000088F4 }, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */
+ { 23437, 0x000088F6 }, /* GL_MAX_PROGRAM_IF_DEPTH_NV */
+ { 23464, 0x000088A1 }, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */
+ { 23496, 0x000088B4 }, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */
+ { 23532, 0x000088F8 }, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */
+ { 23561, 0x000088F7 }, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */
+ { 23590, 0x0000862F }, /* GL_MAX_PROGRAM_MATRICES_ARB */
+ { 23618, 0x0000862E }, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */
+ { 23656, 0x000088B3 }, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
+ { 23700, 0x0000880E }, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
+ { 23743, 0x000088AF }, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */
+ { 23777, 0x000088A3 }, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
+ { 23816, 0x000088AB }, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */
+ { 23853, 0x000088A7 }, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */
+ { 23891, 0x00008810 }, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
+ { 23934, 0x0000880F }, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
+ { 23977, 0x000088A9 }, /* GL_MAX_PROGRAM_PARAMETERS_ARB */
+ { 24007, 0x000088A5 }, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */
+ { 24038, 0x00008905 }, /* GL_MAX_PROGRAM_TEXEL_OFFSET */
+ { 24066, 0x00008905 }, /* GL_MAX_PROGRAM_TEXEL_OFFSET_EXT */
+ { 24098, 0x0000880D }, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */
+ { 24134, 0x0000880C }, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */
+ { 24170, 0x00000D38 }, /* GL_MAX_PROJECTION_STACK_DEPTH */
+ { 24200, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE */
+ { 24230, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */
+ { 24264, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_NV */
+ { 24297, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE */
+ { 24322, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_EXT */
+ { 24351, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_OES */
+ { 24380, 0x00008D57 }, /* GL_MAX_SAMPLES */
+ { 24395, 0x00008D57 }, /* GL_MAX_SAMPLES_EXT */
+ { 24414, 0x00009111 }, /* GL_MAX_SERVER_WAIT_TIMEOUT */
+ { 24441, 0x00008504 }, /* GL_MAX_SHININESS_NV */
+ { 24461, 0x00008505 }, /* GL_MAX_SPOT_EXPONENT_NV */
+ { 24485, 0x00008C2B }, /* GL_MAX_TEXTURE_BUFFER_SIZE */
+ { 24512, 0x00008C2B }, /* GL_MAX_TEXTURE_BUFFER_SIZE_ARB */
+ { 24543, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS */
+ { 24565, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS_ARB */
+ { 24591, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS */
+ { 24618, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS_ARB */
+ { 24649, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS */
+ { 24673, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS_EXT */
+ { 24701, 0x000084FF }, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */
+ { 24735, 0x00000D33 }, /* GL_MAX_TEXTURE_SIZE */
+ { 24755, 0x00000D39 }, /* GL_MAX_TEXTURE_STACK_DEPTH */
+ { 24782, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS */
+ { 24803, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS_ARB */
+ { 24828, 0x0000862F }, /* GL_MAX_TRACK_MATRICES_NV */
+ { 24853, 0x0000862E }, /* GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV */
+ { 24888, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS */
+ { 24937, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT */
+ { 24990, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS */
+ { 25033, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT */
+ { 25080, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS */
+ { 25126, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT */
+ { 25176, 0x00008B4B }, /* GL_MAX_VARYING_COMPONENTS */
+ { 25202, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS */
+ { 25224, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS_ARB */
+ { 25250, 0x00008DFC }, /* GL_MAX_VARYING_VECTORS */
+ { 25273, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS */
+ { 25295, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS_ARB */
+ { 25321, 0x00009122 }, /* GL_MAX_VERTEX_OUTPUT_COMPONENTS */
+ { 25353, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */
+ { 25387, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */
+ { 25425, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */
+ { 25458, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB */
+ { 25495, 0x00008DFB }, /* GL_MAX_VERTEX_UNIFORM_VECTORS */
+ { 25525, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_ARB */
+ { 25549, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_OES */
+ { 25573, 0x00008DDE }, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */
+ { 25610, 0x00000D3A }, /* GL_MAX_VIEWPORT_DIMS */
+ { 25631, 0x00008DF1 }, /* GL_MEDIUM_FLOAT */
+ { 25647, 0x00008DF4 }, /* GL_MEDIUM_INT */
+ { 25661, 0x00008007 }, /* GL_MIN */
+ { 25668, 0x0000802E }, /* GL_MINMAX */
+ { 25678, 0x0000802E }, /* GL_MINMAX_EXT */
+ { 25692, 0x0000802F }, /* GL_MINMAX_FORMAT */
+ { 25709, 0x0000802F }, /* GL_MINMAX_FORMAT_EXT */
+ { 25730, 0x00008030 }, /* GL_MINMAX_SINK */
+ { 25745, 0x00008030 }, /* GL_MINMAX_SINK_EXT */
+ { 25764, 0x0000821C }, /* GL_MINOR_VERSION */
+ { 25781, 0x00008007 }, /* GL_MIN_EXT */
+ { 25792, 0x00008904 }, /* GL_MIN_PROGRAM_TEXEL_OFFSET */
+ { 25820, 0x00008904 }, /* GL_MIN_PROGRAM_TEXEL_OFFSET_EXT */
+ { 25852, 0x00008370 }, /* GL_MIRRORED_REPEAT */
+ { 25871, 0x00008370 }, /* GL_MIRRORED_REPEAT_ARB */
+ { 25894, 0x00008370 }, /* GL_MIRRORED_REPEAT_IBM */
+ { 25917, 0x00008742 }, /* GL_MIRROR_CLAMP_ATI */
+ { 25937, 0x00008742 }, /* GL_MIRROR_CLAMP_EXT */
+ { 25957, 0x00008912 }, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */
+ { 25987, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_ATI */
+ { 26015, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */
+ { 26043, 0x00001700 }, /* GL_MODELVIEW */
+ { 26056, 0x00001700 }, /* GL_MODELVIEW0_ARB */
+ { 26074, 0x0000872A }, /* GL_MODELVIEW10_ARB */
+ { 26093, 0x0000872B }, /* GL_MODELVIEW11_ARB */
+ { 26112, 0x0000872C }, /* GL_MODELVIEW12_ARB */
+ { 26131, 0x0000872D }, /* GL_MODELVIEW13_ARB */
+ { 26150, 0x0000872E }, /* GL_MODELVIEW14_ARB */
+ { 26169, 0x0000872F }, /* GL_MODELVIEW15_ARB */
+ { 26188, 0x00008730 }, /* GL_MODELVIEW16_ARB */
+ { 26207, 0x00008731 }, /* GL_MODELVIEW17_ARB */
+ { 26226, 0x00008732 }, /* GL_MODELVIEW18_ARB */
+ { 26245, 0x00008733 }, /* GL_MODELVIEW19_ARB */
+ { 26264, 0x0000850A }, /* GL_MODELVIEW1_ARB */
+ { 26282, 0x00008734 }, /* GL_MODELVIEW20_ARB */
+ { 26301, 0x00008735 }, /* GL_MODELVIEW21_ARB */
+ { 26320, 0x00008736 }, /* GL_MODELVIEW22_ARB */
+ { 26339, 0x00008737 }, /* GL_MODELVIEW23_ARB */
+ { 26358, 0x00008738 }, /* GL_MODELVIEW24_ARB */
+ { 26377, 0x00008739 }, /* GL_MODELVIEW25_ARB */
+ { 26396, 0x0000873A }, /* GL_MODELVIEW26_ARB */
+ { 26415, 0x0000873B }, /* GL_MODELVIEW27_ARB */
+ { 26434, 0x0000873C }, /* GL_MODELVIEW28_ARB */
+ { 26453, 0x0000873D }, /* GL_MODELVIEW29_ARB */
+ { 26472, 0x00008722 }, /* GL_MODELVIEW2_ARB */
+ { 26490, 0x0000873E }, /* GL_MODELVIEW30_ARB */
+ { 26509, 0x0000873F }, /* GL_MODELVIEW31_ARB */
+ { 26528, 0x00008723 }, /* GL_MODELVIEW3_ARB */
+ { 26546, 0x00008724 }, /* GL_MODELVIEW4_ARB */
+ { 26564, 0x00008725 }, /* GL_MODELVIEW5_ARB */
+ { 26582, 0x00008726 }, /* GL_MODELVIEW6_ARB */
+ { 26600, 0x00008727 }, /* GL_MODELVIEW7_ARB */
+ { 26618, 0x00008728 }, /* GL_MODELVIEW8_ARB */
+ { 26636, 0x00008729 }, /* GL_MODELVIEW9_ARB */
+ { 26654, 0x00000BA6 }, /* GL_MODELVIEW_MATRIX */
+ { 26674, 0x0000898D }, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */
+ { 26716, 0x00008629 }, /* GL_MODELVIEW_PROJECTION_NV */
+ { 26743, 0x00000BA3 }, /* GL_MODELVIEW_STACK_DEPTH */
+ { 26768, 0x00002100 }, /* GL_MODULATE */
+ { 26780, 0x00008744 }, /* GL_MODULATE_ADD_ATI */
+ { 26800, 0x00008745 }, /* GL_MODULATE_SIGNED_ADD_ATI */
+ { 26827, 0x00008746 }, /* GL_MODULATE_SUBTRACT_ATI */
+ { 26852, 0x00000103 }, /* GL_MULT */
+ { 26860, 0x0000809D }, /* GL_MULTISAMPLE */
+ { 26875, 0x000086B2 }, /* GL_MULTISAMPLE_3DFX */
+ { 26895, 0x0000809D }, /* GL_MULTISAMPLE_ARB */
+ { 26914, 0x20000000 }, /* GL_MULTISAMPLE_BIT */
+ { 26933, 0x20000000 }, /* GL_MULTISAMPLE_BIT_3DFX */
+ { 26957, 0x20000000 }, /* GL_MULTISAMPLE_BIT_ARB */
+ { 26980, 0x00008534 }, /* GL_MULTISAMPLE_FILTER_HINT_NV */
+ { 27010, 0x00002A25 }, /* GL_N3F_V3F */
+ { 27021, 0x00000D70 }, /* GL_NAME_STACK_DEPTH */
+ { 27041, 0x0000150E }, /* GL_NAND */
+ { 27049, 0x00002600 }, /* GL_NEAREST */
+ { 27060, 0x0000844E }, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */
+ { 27091, 0x0000844D }, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */
+ { 27123, 0x00002702 }, /* GL_NEAREST_MIPMAP_LINEAR */
+ { 27148, 0x00002700 }, /* GL_NEAREST_MIPMAP_NEAREST */
+ { 27174, 0x00000200 }, /* GL_NEVER */
+ { 27183, 0x00001102 }, /* GL_NICEST */
+ { 27193, 0x00000000 }, /* GL_NONE */
+ { 27201, 0x00000000 }, /* GL_NONE_OES */
+ { 27213, 0x00001505 }, /* GL_NOOP */
+ { 27221, 0x00001508 }, /* GL_NOR */
+ { 27228, 0x00000BA1 }, /* GL_NORMALIZE */
+ { 27241, 0x00008075 }, /* GL_NORMAL_ARRAY */
+ { 27257, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING */
+ { 27288, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING_ARB */
+ { 27323, 0x0000808F }, /* GL_NORMAL_ARRAY_POINTER */
+ { 27347, 0x0000807F }, /* GL_NORMAL_ARRAY_STRIDE */
+ { 27370, 0x0000807E }, /* GL_NORMAL_ARRAY_TYPE */
+ { 27391, 0x00008511 }, /* GL_NORMAL_MAP */
+ { 27405, 0x00008511 }, /* GL_NORMAL_MAP_ARB */
+ { 27423, 0x00008511 }, /* GL_NORMAL_MAP_NV */
+ { 27440, 0x00008511 }, /* GL_NORMAL_MAP_OES */
+ { 27458, 0x00000205 }, /* GL_NOTEQUAL */
+ { 27470, 0x00000000 }, /* GL_NO_ERROR */
+ { 27482, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */
+ { 27516, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB */
+ { 27554, 0x0000821D }, /* GL_NUM_EXTENSIONS */
+ { 27572, 0x000087FE }, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */
+ { 27606, 0x00008DF9 }, /* GL_NUM_SHADER_BINARY_FORMATS */
+ { 27635, 0x00008B89 }, /* GL_OBJECT_ACTIVE_ATTRIBUTES_ARB */
+ { 27667, 0x00008B8A }, /* GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB */
+ { 27709, 0x00008B86 }, /* GL_OBJECT_ACTIVE_UNIFORMS_ARB */
+ { 27739, 0x00008B87 }, /* GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB */
+ { 27779, 0x00008B85 }, /* GL_OBJECT_ATTACHED_OBJECTS_ARB */
+ { 27810, 0x00008B81 }, /* GL_OBJECT_COMPILE_STATUS_ARB */
+ { 27839, 0x00008B80 }, /* GL_OBJECT_DELETE_STATUS_ARB */
+ { 27867, 0x00008B84 }, /* GL_OBJECT_INFO_LOG_LENGTH_ARB */
+ { 27897, 0x00002401 }, /* GL_OBJECT_LINEAR */
+ { 27914, 0x00008B82 }, /* GL_OBJECT_LINK_STATUS_ARB */
+ { 27940, 0x00002501 }, /* GL_OBJECT_PLANE */
+ { 27956, 0x00008B88 }, /* GL_OBJECT_SHADER_SOURCE_LENGTH_ARB */
+ { 27991, 0x00008B4F }, /* GL_OBJECT_SUBTYPE_ARB */
+ { 28013, 0x00009112 }, /* GL_OBJECT_TYPE */
+ { 28028, 0x00008B4E }, /* GL_OBJECT_TYPE_ARB */
+ { 28047, 0x00008B83 }, /* GL_OBJECT_VALIDATE_STATUS_ARB */
+ { 28077, 0x00008165 }, /* GL_OCCLUSION_TEST_HP */
+ { 28098, 0x00008166 }, /* GL_OCCLUSION_TEST_RESULT_HP */
+ { 28126, 0x00000001 }, /* GL_ONE */
+ { 28133, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA */
+ { 28161, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA_EXT */
+ { 28193, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR */
+ { 28221, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR_EXT */
+ { 28253, 0x00000305 }, /* GL_ONE_MINUS_DST_ALPHA */
+ { 28276, 0x00000307 }, /* GL_ONE_MINUS_DST_COLOR */
+ { 28299, 0x00000303 }, /* GL_ONE_MINUS_SRC_ALPHA */
+ { 28322, 0x00000301 }, /* GL_ONE_MINUS_SRC_COLOR */
+ { 28345, 0x00008598 }, /* GL_OPERAND0_ALPHA */
+ { 28363, 0x00008598 }, /* GL_OPERAND0_ALPHA_ARB */
+ { 28385, 0x00008598 }, /* GL_OPERAND0_ALPHA_EXT */
+ { 28407, 0x00008590 }, /* GL_OPERAND0_RGB */
+ { 28423, 0x00008590 }, /* GL_OPERAND0_RGB_ARB */
+ { 28443, 0x00008590 }, /* GL_OPERAND0_RGB_EXT */
+ { 28463, 0x00008599 }, /* GL_OPERAND1_ALPHA */
+ { 28481, 0x00008599 }, /* GL_OPERAND1_ALPHA_ARB */
+ { 28503, 0x00008599 }, /* GL_OPERAND1_ALPHA_EXT */
+ { 28525, 0x00008591 }, /* GL_OPERAND1_RGB */
+ { 28541, 0x00008591 }, /* GL_OPERAND1_RGB_ARB */
+ { 28561, 0x00008591 }, /* GL_OPERAND1_RGB_EXT */
+ { 28581, 0x0000859A }, /* GL_OPERAND2_ALPHA */
+ { 28599, 0x0000859A }, /* GL_OPERAND2_ALPHA_ARB */
+ { 28621, 0x0000859A }, /* GL_OPERAND2_ALPHA_EXT */
+ { 28643, 0x00008592 }, /* GL_OPERAND2_RGB */
+ { 28659, 0x00008592 }, /* GL_OPERAND2_RGB_ARB */
+ { 28679, 0x00008592 }, /* GL_OPERAND2_RGB_EXT */
+ { 28699, 0x0000859B }, /* GL_OPERAND3_ALPHA_NV */
+ { 28720, 0x00008593 }, /* GL_OPERAND3_RGB_NV */
+ { 28739, 0x00001507 }, /* GL_OR */
+ { 28745, 0x00000A01 }, /* GL_ORDER */
+ { 28754, 0x0000150D }, /* GL_OR_INVERTED */
+ { 28769, 0x0000150B }, /* GL_OR_REVERSE */
+ { 28783, 0x00000505 }, /* GL_OUT_OF_MEMORY */
+ { 28800, 0x00000D05 }, /* GL_PACK_ALIGNMENT */
+ { 28818, 0x0000806C }, /* GL_PACK_IMAGE_HEIGHT */
+ { 28839, 0x00008758 }, /* GL_PACK_INVERT_MESA */
+ { 28859, 0x00000D01 }, /* GL_PACK_LSB_FIRST */
+ { 28877, 0x00000D02 }, /* GL_PACK_ROW_LENGTH */
+ { 28896, 0x0000806B }, /* GL_PACK_SKIP_IMAGES */
+ { 28916, 0x00000D04 }, /* GL_PACK_SKIP_PIXELS */
+ { 28936, 0x00000D03 }, /* GL_PACK_SKIP_ROWS */
+ { 28954, 0x00000D00 }, /* GL_PACK_SWAP_BYTES */
+ { 28973, 0x00008B92 }, /* GL_PALETTE4_R5_G6_B5_OES */
+ { 28998, 0x00008B94 }, /* GL_PALETTE4_RGB5_A1_OES */
+ { 29022, 0x00008B90 }, /* GL_PALETTE4_RGB8_OES */
+ { 29043, 0x00008B93 }, /* GL_PALETTE4_RGBA4_OES */
+ { 29065, 0x00008B91 }, /* GL_PALETTE4_RGBA8_OES */
+ { 29087, 0x00008B97 }, /* GL_PALETTE8_R5_G6_B5_OES */
+ { 29112, 0x00008B99 }, /* GL_PALETTE8_RGB5_A1_OES */
+ { 29136, 0x00008B95 }, /* GL_PALETTE8_RGB8_OES */
+ { 29157, 0x00008B98 }, /* GL_PALETTE8_RGBA4_OES */
+ { 29179, 0x00008B96 }, /* GL_PALETTE8_RGBA8_OES */
+ { 29201, 0x00000700 }, /* GL_PASS_THROUGH_TOKEN */
+ { 29223, 0x00000C50 }, /* GL_PERSPECTIVE_CORRECTION_HINT */
+ { 29254, 0x00000C79 }, /* GL_PIXEL_MAP_A_TO_A */
+ { 29274, 0x00000CB9 }, /* GL_PIXEL_MAP_A_TO_A_SIZE */
+ { 29299, 0x00000C78 }, /* GL_PIXEL_MAP_B_TO_B */
+ { 29319, 0x00000CB8 }, /* GL_PIXEL_MAP_B_TO_B_SIZE */
+ { 29344, 0x00000C77 }, /* GL_PIXEL_MAP_G_TO_G */
+ { 29364, 0x00000CB7 }, /* GL_PIXEL_MAP_G_TO_G_SIZE */
+ { 29389, 0x00000C75 }, /* GL_PIXEL_MAP_I_TO_A */
+ { 29409, 0x00000CB5 }, /* GL_PIXEL_MAP_I_TO_A_SIZE */
+ { 29434, 0x00000C74 }, /* GL_PIXEL_MAP_I_TO_B */
+ { 29454, 0x00000CB4 }, /* GL_PIXEL_MAP_I_TO_B_SIZE */
+ { 29479, 0x00000C73 }, /* GL_PIXEL_MAP_I_TO_G */
+ { 29499, 0x00000CB3 }, /* GL_PIXEL_MAP_I_TO_G_SIZE */
+ { 29524, 0x00000C70 }, /* GL_PIXEL_MAP_I_TO_I */
+ { 29544, 0x00000CB0 }, /* GL_PIXEL_MAP_I_TO_I_SIZE */
+ { 29569, 0x00000C72 }, /* GL_PIXEL_MAP_I_TO_R */
+ { 29589, 0x00000CB2 }, /* GL_PIXEL_MAP_I_TO_R_SIZE */
+ { 29614, 0x00000C76 }, /* GL_PIXEL_MAP_R_TO_R */
+ { 29634, 0x00000CB6 }, /* GL_PIXEL_MAP_R_TO_R_SIZE */
+ { 29659, 0x00000C71 }, /* GL_PIXEL_MAP_S_TO_S */
+ { 29679, 0x00000CB1 }, /* GL_PIXEL_MAP_S_TO_S_SIZE */
+ { 29704, 0x00000020 }, /* GL_PIXEL_MODE_BIT */
+ { 29722, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER */
+ { 29743, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING */
+ { 29772, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING_EXT */
+ { 29805, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER_EXT */
+ { 29830, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER */
+ { 29853, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING */
+ { 29884, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING_EXT */
+ { 29919, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER_EXT */
+ { 29946, 0x00001B00 }, /* GL_POINT */
+ { 29955, 0x00000000 }, /* GL_POINTS */
+ { 29965, 0x00000002 }, /* GL_POINT_BIT */
+ { 29978, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION */
+ { 30008, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_ARB */
+ { 30042, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_EXT */
+ { 30076, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_SGIS */
+ { 30111, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE */
+ { 30140, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_ARB */
+ { 30173, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_EXT */
+ { 30206, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_SGIS */
+ { 30240, 0x00000B11 }, /* GL_POINT_SIZE */
+ { 30254, 0x00008B9F }, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */
+ { 30293, 0x00008B9C }, /* GL_POINT_SIZE_ARRAY_OES */
+ { 30317, 0x0000898C }, /* GL_POINT_SIZE_ARRAY_POINTER_OES */
+ { 30349, 0x0000898B }, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */
+ { 30380, 0x0000898A }, /* GL_POINT_SIZE_ARRAY_TYPE_OES */
+ { 30409, 0x00000B13 }, /* GL_POINT_SIZE_GRANULARITY */
+ { 30435, 0x00008127 }, /* GL_POINT_SIZE_MAX */
+ { 30453, 0x00008127 }, /* GL_POINT_SIZE_MAX_ARB */
+ { 30475, 0x00008127 }, /* GL_POINT_SIZE_MAX_EXT */
+ { 30497, 0x00008127 }, /* GL_POINT_SIZE_MAX_SGIS */
+ { 30520, 0x00008126 }, /* GL_POINT_SIZE_MIN */
+ { 30538, 0x00008126 }, /* GL_POINT_SIZE_MIN_ARB */
+ { 30560, 0x00008126 }, /* GL_POINT_SIZE_MIN_EXT */
+ { 30582, 0x00008126 }, /* GL_POINT_SIZE_MIN_SGIS */
+ { 30605, 0x00000B12 }, /* GL_POINT_SIZE_RANGE */
+ { 30625, 0x00000B10 }, /* GL_POINT_SMOOTH */
+ { 30641, 0x00000C51 }, /* GL_POINT_SMOOTH_HINT */
+ { 30662, 0x00008861 }, /* GL_POINT_SPRITE */
+ { 30678, 0x00008861 }, /* GL_POINT_SPRITE_ARB */
+ { 30698, 0x00008CA0 }, /* GL_POINT_SPRITE_COORD_ORIGIN */
+ { 30727, 0x00008861 }, /* GL_POINT_SPRITE_NV */
+ { 30746, 0x00008861 }, /* GL_POINT_SPRITE_OES */
+ { 30766, 0x00008863 }, /* GL_POINT_SPRITE_R_MODE_NV */
+ { 30792, 0x00000701 }, /* GL_POINT_TOKEN */
+ { 30807, 0x00000009 }, /* GL_POLYGON */
+ { 30818, 0x00000008 }, /* GL_POLYGON_BIT */
+ { 30833, 0x00000B40 }, /* GL_POLYGON_MODE */
+ { 30849, 0x00008039 }, /* GL_POLYGON_OFFSET_BIAS */
+ { 30872, 0x00008038 }, /* GL_POLYGON_OFFSET_FACTOR */
+ { 30897, 0x00008037 }, /* GL_POLYGON_OFFSET_FILL */
+ { 30920, 0x00002A02 }, /* GL_POLYGON_OFFSET_LINE */
+ { 30943, 0x00002A01 }, /* GL_POLYGON_OFFSET_POINT */
+ { 30967, 0x00002A00 }, /* GL_POLYGON_OFFSET_UNITS */
+ { 30991, 0x00000B41 }, /* GL_POLYGON_SMOOTH */
+ { 31009, 0x00000C53 }, /* GL_POLYGON_SMOOTH_HINT */
+ { 31032, 0x00000B42 }, /* GL_POLYGON_STIPPLE */
+ { 31051, 0x00000010 }, /* GL_POLYGON_STIPPLE_BIT */
+ { 31074, 0x00000703 }, /* GL_POLYGON_TOKEN */
+ { 31091, 0x00001203 }, /* GL_POSITION */
+ { 31103, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */
+ { 31135, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI */
+ { 31171, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */
+ { 31204, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI */
+ { 31241, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */
+ { 31272, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI */
+ { 31307, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */
+ { 31339, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI */
+ { 31375, 0x000080D2 }, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */
+ { 31408, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */
+ { 31440, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI */
+ { 31476, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */
+ { 31509, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI */
+ { 31546, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS */
+ { 31576, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS_SGI */
+ { 31610, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE */
+ { 31641, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE_SGI */
+ { 31676, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS */
+ { 31707, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS_EXT */
+ { 31742, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE */
+ { 31774, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE_EXT */
+ { 31810, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS */
+ { 31840, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS_EXT */
+ { 31874, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE */
+ { 31905, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE_EXT */
+ { 31940, 0x000080D1 }, /* GL_POST_CONVOLUTION_COLOR_TABLE */
+ { 31972, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS */
+ { 32003, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS_EXT */
+ { 32038, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE */
+ { 32070, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE_EXT */
+ { 32106, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS */
+ { 32135, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS_EXT */
+ { 32168, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE */
+ { 32198, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE_EXT */
+ { 32232, 0x0000817B }, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */
+ { 32271, 0x00008179 }, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */
+ { 32304, 0x0000817C }, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */
+ { 32344, 0x0000817A }, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */
+ { 32378, 0x00008578 }, /* GL_PREVIOUS */
+ { 32390, 0x00008578 }, /* GL_PREVIOUS_ARB */
+ { 32406, 0x00008578 }, /* GL_PREVIOUS_EXT */
+ { 32422, 0x00008577 }, /* GL_PRIMARY_COLOR */
+ { 32439, 0x00008577 }, /* GL_PRIMARY_COLOR_ARB */
+ { 32460, 0x00008577 }, /* GL_PRIMARY_COLOR_EXT */
+ { 32481, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED */
+ { 32505, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED_EXT */
+ { 32533, 0x00008F9D }, /* GL_PRIMITIVE_RESTART */
+ { 32554, 0x00008F9E }, /* GL_PRIMITIVE_RESTART_INDEX */
+ { 32581, 0x00008559 }, /* GL_PRIMITIVE_RESTART_INDEX_NV */
+ { 32611, 0x00008558 }, /* GL_PRIMITIVE_RESTART_NV */
+ { 32635, 0x000088B0 }, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */
+ { 32668, 0x00008805 }, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */
+ { 32700, 0x000088AC }, /* GL_PROGRAM_ATTRIBS_ARB */
+ { 32723, 0x000087FF }, /* GL_PROGRAM_BINARY_FORMATS_OES */
+ { 32753, 0x00008741 }, /* GL_PROGRAM_BINARY_LENGTH_OES */
+ { 32782, 0x00008677 }, /* GL_PROGRAM_BINDING_ARB */
+ { 32805, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_ARB */
+ { 32835, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_NV */
+ { 32864, 0x00008874 }, /* GL_PROGRAM_ERROR_STRING_ARB */
+ { 32892, 0x00008876 }, /* GL_PROGRAM_FORMAT_ARB */
+ { 32914, 0x00008875 }, /* GL_PROGRAM_FORMAT_ASCII_ARB */
+ { 32942, 0x000088A0 }, /* GL_PROGRAM_INSTRUCTIONS_ARB */
+ { 32970, 0x00008627 }, /* GL_PROGRAM_LENGTH_ARB */
+ { 32992, 0x00008627 }, /* GL_PROGRAM_LENGTH_NV */
+ { 33013, 0x000088B2 }, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
+ { 33053, 0x00008808 }, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
+ { 33092, 0x000088AE }, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */
+ { 33122, 0x000088A2 }, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
+ { 33157, 0x000088AA }, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */
+ { 33190, 0x000088A6 }, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */
+ { 33224, 0x0000880A }, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
+ { 33263, 0x00008809 }, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
+ { 33302, 0x00008B40 }, /* GL_PROGRAM_OBJECT_ARB */
+ { 33324, 0x000088A8 }, /* GL_PROGRAM_PARAMETERS_ARB */
+ { 33350, 0x00008644 }, /* GL_PROGRAM_PARAMETER_NV */
+ { 33374, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE */
+ { 33396, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE_ARB */
+ { 33422, 0x00008647 }, /* GL_PROGRAM_RESIDENT_NV */
+ { 33445, 0x00008628 }, /* GL_PROGRAM_STRING_ARB */
+ { 33467, 0x00008628 }, /* GL_PROGRAM_STRING_NV */
+ { 33488, 0x00008646 }, /* GL_PROGRAM_TARGET_NV */
+ { 33509, 0x000088A4 }, /* GL_PROGRAM_TEMPORARIES_ARB */
+ { 33536, 0x00008807 }, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */
+ { 33568, 0x00008806 }, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */
+ { 33600, 0x000088B6 }, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */
+ { 33635, 0x00001701 }, /* GL_PROJECTION */
+ { 33649, 0x00000BA7 }, /* GL_PROJECTION_MATRIX */
+ { 33670, 0x0000898E }, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */
+ { 33713, 0x00000BA4 }, /* GL_PROJECTION_STACK_DEPTH */
+ { 33739, 0x00008E4F }, /* GL_PROVOKING_VERTEX */
+ { 33759, 0x00008E4F }, /* GL_PROVOKING_VERTEX_EXT */
+ { 33783, 0x000080D3 }, /* GL_PROXY_COLOR_TABLE */
+ { 33804, 0x00008025 }, /* GL_PROXY_HISTOGRAM */
+ { 33823, 0x00008025 }, /* GL_PROXY_HISTOGRAM_EXT */
+ { 33846, 0x000080D5 }, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */
+ { 33885, 0x000080D4 }, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */
+ { 33923, 0x00008063 }, /* GL_PROXY_TEXTURE_1D */
+ { 33943, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY */
+ { 33969, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */
+ { 33999, 0x00008063 }, /* GL_PROXY_TEXTURE_1D_EXT */
+ { 34023, 0x00008064 }, /* GL_PROXY_TEXTURE_2D */
+ { 34043, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY */
+ { 34069, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */
+ { 34099, 0x00008064 }, /* GL_PROXY_TEXTURE_2D_EXT */
+ { 34123, 0x00008070 }, /* GL_PROXY_TEXTURE_3D */
+ { 34143, 0x000080BD }, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */
+ { 34176, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP */
+ { 34202, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP_ARB */
+ { 34232, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE */
+ { 34259, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */
+ { 34290, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_NV */
+ { 34320, 0x00008A1D }, /* GL_PURGEABLE_APPLE */
+ { 34339, 0x00002003 }, /* GL_Q */
+ { 34344, 0x00001209 }, /* GL_QUADRATIC_ATTENUATION */
+ { 34369, 0x00000007 }, /* GL_QUADS */
+ { 34378, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */
+ { 34422, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT */
+ { 34470, 0x00008614 }, /* GL_QUAD_MESH_SUN */
+ { 34487, 0x00000008 }, /* GL_QUAD_STRIP */
+ { 34501, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT */
+ { 34528, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT_NV */
+ { 34558, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT */
+ { 34582, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT_NV */
+ { 34609, 0x00008864 }, /* GL_QUERY_COUNTER_BITS */
+ { 34631, 0x00008864 }, /* GL_QUERY_COUNTER_BITS_ARB */
+ { 34657, 0x00008E14 }, /* GL_QUERY_NO_WAIT */
+ { 34674, 0x00008E14 }, /* GL_QUERY_NO_WAIT_NV */
+ { 34694, 0x00008866 }, /* GL_QUERY_RESULT */
+ { 34710, 0x00008866 }, /* GL_QUERY_RESULT_ARB */
+ { 34730, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE */
+ { 34756, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE_ARB */
+ { 34786, 0x00008E13 }, /* GL_QUERY_WAIT */
+ { 34800, 0x00008E13 }, /* GL_QUERY_WAIT_NV */
+ { 34817, 0x00002002 }, /* GL_R */
+ { 34822, 0x00008C3A }, /* GL_R11F_G11F_B10F */
+ { 34840, 0x00008F98 }, /* GL_R16_SNORM */
+ { 34853, 0x00002A10 }, /* GL_R3_G3_B2 */
+ { 34865, 0x00008F94 }, /* GL_R8_SNORM */
+ { 34877, 0x00008C89 }, /* GL_RASTERIZER_DISCARD */
+ { 34899, 0x00008C89 }, /* GL_RASTERIZER_DISCARD_EXT */
+ { 34925, 0x00019262 }, /* GL_RASTER_POSITION_UNCLIPPED_IBM */
+ { 34958, 0x00000C02 }, /* GL_READ_BUFFER */
+ { 34973, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER */
+ { 34993, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING */
+ { 35021, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING_EXT */
+ { 35053, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER_EXT */
+ { 35077, 0x000088B8 }, /* GL_READ_ONLY */
+ { 35090, 0x000088B8 }, /* GL_READ_ONLY_ARB */
+ { 35107, 0x000088BA }, /* GL_READ_WRITE */
+ { 35121, 0x000088BA }, /* GL_READ_WRITE_ARB */
+ { 35139, 0x00001903 }, /* GL_RED */
+ { 35146, 0x00008016 }, /* GL_REDUCE */
+ { 35156, 0x00008016 }, /* GL_REDUCE_EXT */
+ { 35170, 0x00000D15 }, /* GL_RED_BIAS */
+ { 35182, 0x00000D52 }, /* GL_RED_BITS */
+ { 35194, 0x00008D94 }, /* GL_RED_INTEGER */
+ { 35209, 0x00008D94 }, /* GL_RED_INTEGER_EXT */
+ { 35228, 0x00000D14 }, /* GL_RED_SCALE */
+ { 35241, 0x00008F90 }, /* GL_RED_SNORM */
+ { 35254, 0x00008512 }, /* GL_REFLECTION_MAP */
+ { 35272, 0x00008512 }, /* GL_REFLECTION_MAP_ARB */
+ { 35294, 0x00008512 }, /* GL_REFLECTION_MAP_NV */
+ { 35315, 0x00008512 }, /* GL_REFLECTION_MAP_OES */
+ { 35337, 0x00008A19 }, /* GL_RELEASED_APPLE */
+ { 35355, 0x00001C00 }, /* GL_RENDER */
+ { 35365, 0x00008D41 }, /* GL_RENDERBUFFER */
+ { 35381, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE */
+ { 35408, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE_OES */
+ { 35439, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING */
+ { 35463, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_EXT */
+ { 35491, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_OES */
+ { 35519, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE */
+ { 35545, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE_OES */
+ { 35575, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE */
+ { 35602, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE_OES */
+ { 35633, 0x00008D41 }, /* GL_RENDERBUFFER_EXT */
+ { 35653, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE */
+ { 35680, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE_OES */
+ { 35711, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT */
+ { 35734, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_EXT */
+ { 35761, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_OES */
+ { 35788, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT */
+ { 35820, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */
+ { 35856, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_OES */
+ { 35892, 0x00008D41 }, /* GL_RENDERBUFFER_OES */
+ { 35912, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE */
+ { 35937, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE_OES */
+ { 35966, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES */
+ { 35990, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES_EXT */
+ { 36018, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE */
+ { 36047, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE_OES */
+ { 36080, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH */
+ { 36102, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_EXT */
+ { 36128, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_OES */
+ { 36154, 0x00001F01 }, /* GL_RENDERER */
+ { 36166, 0x00000C40 }, /* GL_RENDER_MODE */
+ { 36181, 0x00002901 }, /* GL_REPEAT */
+ { 36191, 0x00001E01 }, /* GL_REPLACE */
+ { 36202, 0x00008062 }, /* GL_REPLACE_EXT */
+ { 36217, 0x00008153 }, /* GL_REPLICATE_BORDER_HP */
+ { 36240, 0x0000803A }, /* GL_RESCALE_NORMAL */
+ { 36258, 0x0000803A }, /* GL_RESCALE_NORMAL_EXT */
+ { 36280, 0x00008A1B }, /* GL_RETAINED_APPLE */
+ { 36298, 0x00000102 }, /* GL_RETURN */
+ { 36308, 0x00008F99 }, /* GL_RG16_SNORM */
+ { 36322, 0x00008F95 }, /* GL_RG8_SNORM */
+ { 36335, 0x00001907 }, /* GL_RGB */
+ { 36342, 0x00008052 }, /* GL_RGB10 */
+ { 36351, 0x00008059 }, /* GL_RGB10_A2 */
+ { 36363, 0x00008059 }, /* GL_RGB10_A2_EXT */
+ { 36379, 0x00008052 }, /* GL_RGB10_EXT */
+ { 36392, 0x00008053 }, /* GL_RGB12 */
+ { 36401, 0x00008053 }, /* GL_RGB12_EXT */
+ { 36414, 0x00008054 }, /* GL_RGB16 */
+ { 36423, 0x0000881B }, /* GL_RGB16F */
+ { 36433, 0x00008D89 }, /* GL_RGB16I */
+ { 36443, 0x00008D89 }, /* GL_RGB16I_EXT */
+ { 36457, 0x00008D77 }, /* GL_RGB16UI */
+ { 36468, 0x00008D77 }, /* GL_RGB16UI_EXT */
+ { 36483, 0x00008054 }, /* GL_RGB16_EXT */
+ { 36496, 0x00008F9A }, /* GL_RGB16_SNORM */
+ { 36511, 0x0000804E }, /* GL_RGB2_EXT */
+ { 36523, 0x00008815 }, /* GL_RGB32F */
+ { 36533, 0x00008D83 }, /* GL_RGB32I */
+ { 36543, 0x00008D83 }, /* GL_RGB32I_EXT */
+ { 36557, 0x00008D71 }, /* GL_RGB32UI */
+ { 36568, 0x00008D71 }, /* GL_RGB32UI_EXT */
+ { 36583, 0x0000804F }, /* GL_RGB4 */
+ { 36591, 0x0000804F }, /* GL_RGB4_EXT */
+ { 36603, 0x000083A1 }, /* GL_RGB4_S3TC */
+ { 36616, 0x00008050 }, /* GL_RGB5 */
+ { 36624, 0x00008D62 }, /* GL_RGB565 */
+ { 36634, 0x00008D62 }, /* GL_RGB565_OES */
+ { 36648, 0x00008057 }, /* GL_RGB5_A1 */
+ { 36659, 0x00008057 }, /* GL_RGB5_A1_EXT */
+ { 36674, 0x00008057 }, /* GL_RGB5_A1_OES */
+ { 36689, 0x00008050 }, /* GL_RGB5_EXT */
+ { 36701, 0x00008051 }, /* GL_RGB8 */
+ { 36709, 0x00008D8F }, /* GL_RGB8I */
+ { 36718, 0x00008D8F }, /* GL_RGB8I_EXT */
+ { 36731, 0x00008D7D }, /* GL_RGB8UI */
+ { 36741, 0x00008D7D }, /* GL_RGB8UI_EXT */
+ { 36755, 0x00008051 }, /* GL_RGB8_EXT */
+ { 36767, 0x00008051 }, /* GL_RGB8_OES */
+ { 36779, 0x00008F96 }, /* GL_RGB8_SNORM */
+ { 36793, 0x00008C3D }, /* GL_RGB9_E5 */
+ { 36804, 0x00001908 }, /* GL_RGBA */
+ { 36812, 0x0000805A }, /* GL_RGBA12 */
+ { 36822, 0x0000805A }, /* GL_RGBA12_EXT */
+ { 36836, 0x0000805B }, /* GL_RGBA16 */
+ { 36846, 0x0000881A }, /* GL_RGBA16F */
+ { 36857, 0x00008D88 }, /* GL_RGBA16I */
+ { 36868, 0x00008D88 }, /* GL_RGBA16I_EXT */
+ { 36883, 0x00008D76 }, /* GL_RGBA16UI */
+ { 36895, 0x00008D76 }, /* GL_RGBA16UI_EXT */
+ { 36911, 0x0000805B }, /* GL_RGBA16_EXT */
+ { 36925, 0x00008F9B }, /* GL_RGBA16_SNORM */
+ { 36941, 0x00008055 }, /* GL_RGBA2 */
+ { 36950, 0x00008055 }, /* GL_RGBA2_EXT */
+ { 36963, 0x00008814 }, /* GL_RGBA32F */
+ { 36974, 0x00008D82 }, /* GL_RGBA32I */
+ { 36985, 0x00008D82 }, /* GL_RGBA32I_EXT */
+ { 37000, 0x00008D70 }, /* GL_RGBA32UI */
+ { 37012, 0x00008D70 }, /* GL_RGBA32UI_EXT */
+ { 37028, 0x00008056 }, /* GL_RGBA4 */
+ { 37037, 0x000083A5 }, /* GL_RGBA4_DXT5_S3TC */
+ { 37056, 0x00008056 }, /* GL_RGBA4_EXT */
+ { 37069, 0x00008056 }, /* GL_RGBA4_OES */
+ { 37082, 0x000083A3 }, /* GL_RGBA4_S3TC */
+ { 37096, 0x00008058 }, /* GL_RGBA8 */
+ { 37105, 0x00008D8E }, /* GL_RGBA8I */
+ { 37115, 0x00008D8E }, /* GL_RGBA8I_EXT */
+ { 37129, 0x00008D7C }, /* GL_RGBA8UI */
+ { 37140, 0x00008D7C }, /* GL_RGBA8UI_EXT */
+ { 37155, 0x00008058 }, /* GL_RGBA8_EXT */
+ { 37168, 0x00008058 }, /* GL_RGBA8_OES */
+ { 37181, 0x00008F97 }, /* GL_RGBA8_SNORM */
+ { 37196, 0x000083A4 }, /* GL_RGBA_DXT5_S3TC */
+ { 37214, 0x00008820 }, /* GL_RGBA_FLOAT_MODE_ARB */
+ { 37237, 0x00008D99 }, /* GL_RGBA_INTEGER */
+ { 37253, 0x00008D99 }, /* GL_RGBA_INTEGER_EXT */
+ { 37273, 0x00008D9E }, /* GL_RGBA_INTEGER_MODE_EXT */
+ { 37298, 0x00000C31 }, /* GL_RGBA_MODE */
+ { 37311, 0x000083A2 }, /* GL_RGBA_S3TC */
+ { 37324, 0x00008F93 }, /* GL_RGBA_SNORM */
+ { 37338, 0x00008D98 }, /* GL_RGB_INTEGER */
+ { 37353, 0x00008D98 }, /* GL_RGB_INTEGER_EXT */
+ { 37372, 0x000083A0 }, /* GL_RGB_S3TC */
+ { 37384, 0x00008573 }, /* GL_RGB_SCALE */
+ { 37397, 0x00008573 }, /* GL_RGB_SCALE_ARB */
+ { 37414, 0x00008573 }, /* GL_RGB_SCALE_EXT */
+ { 37431, 0x00008F92 }, /* GL_RGB_SNORM */
+ { 37444, 0x00008F91 }, /* GL_RG_SNORM */
+ { 37456, 0x00000407 }, /* GL_RIGHT */
+ { 37465, 0x00002000 }, /* GL_S */
+ { 37470, 0x00008B5D }, /* GL_SAMPLER_1D */
+ { 37484, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY */
+ { 37504, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY_EXT */
+ { 37528, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW */
+ { 37555, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW_EXT */
+ { 37586, 0x00008B61 }, /* GL_SAMPLER_1D_SHADOW */
+ { 37607, 0x00008B5E }, /* GL_SAMPLER_2D */
+ { 37621, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY */
+ { 37641, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY_EXT */
+ { 37665, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW */
+ { 37692, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW_EXT */
+ { 37723, 0x00008B63 }, /* GL_SAMPLER_2D_RECT */
+ { 37742, 0x00008B64 }, /* GL_SAMPLER_2D_RECT_SHADOW */
+ { 37768, 0x00008B62 }, /* GL_SAMPLER_2D_SHADOW */
+ { 37789, 0x00008B5F }, /* GL_SAMPLER_3D */
+ { 37803, 0x00008B5F }, /* GL_SAMPLER_3D_OES */
+ { 37821, 0x00008919 }, /* GL_SAMPLER_BINDING */
+ { 37840, 0x00008DC2 }, /* GL_SAMPLER_BUFFER */
+ { 37858, 0x00008DC2 }, /* GL_SAMPLER_BUFFER_EXT */
+ { 37880, 0x00008B60 }, /* GL_SAMPLER_CUBE */
+ { 37896, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW */
+ { 37919, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW_EXT */
+ { 37946, 0x000080A9 }, /* GL_SAMPLES */
+ { 37957, 0x000086B4 }, /* GL_SAMPLES_3DFX */
+ { 37973, 0x000080A9 }, /* GL_SAMPLES_ARB */
+ { 37988, 0x00008914 }, /* GL_SAMPLES_PASSED */
+ { 38006, 0x00008914 }, /* GL_SAMPLES_PASSED_ARB */
+ { 38028, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE */
+ { 38056, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE_ARB */
+ { 38088, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE */
+ { 38111, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE_ARB */
+ { 38138, 0x000080A8 }, /* GL_SAMPLE_BUFFERS */
+ { 38156, 0x000086B3 }, /* GL_SAMPLE_BUFFERS_3DFX */
+ { 38179, 0x000080A8 }, /* GL_SAMPLE_BUFFERS_ARB */
+ { 38201, 0x000080A0 }, /* GL_SAMPLE_COVERAGE */
+ { 38220, 0x000080A0 }, /* GL_SAMPLE_COVERAGE_ARB */
+ { 38243, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT */
+ { 38269, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT_ARB */
+ { 38299, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE */
+ { 38324, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE_ARB */
+ { 38353, 0x00080000 }, /* GL_SCISSOR_BIT */
+ { 38368, 0x00000C10 }, /* GL_SCISSOR_BOX */
+ { 38383, 0x00000C11 }, /* GL_SCISSOR_TEST */
+ { 38399, 0x0000845E }, /* GL_SECONDARY_COLOR_ARRAY */
+ { 38424, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */
+ { 38464, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB */
+ { 38508, 0x0000845D }, /* GL_SECONDARY_COLOR_ARRAY_POINTER */
+ { 38541, 0x0000845A }, /* GL_SECONDARY_COLOR_ARRAY_SIZE */
+ { 38571, 0x0000845C }, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */
+ { 38603, 0x0000845B }, /* GL_SECONDARY_COLOR_ARRAY_TYPE */
+ { 38633, 0x00001C02 }, /* GL_SELECT */
+ { 38643, 0x00000DF3 }, /* GL_SELECTION_BUFFER_POINTER */
+ { 38671, 0x00000DF4 }, /* GL_SELECTION_BUFFER_SIZE */
+ { 38696, 0x00008012 }, /* GL_SEPARABLE_2D */
+ { 38712, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS */
+ { 38732, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS_EXT */
+ { 38756, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR */
+ { 38783, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR_EXT */
+ { 38814, 0x0000150F }, /* GL_SET */
+ { 38821, 0x00008DF8 }, /* GL_SHADER_BINARY_FORMATS */
+ { 38846, 0x00008DFA }, /* GL_SHADER_COMPILER */
+ { 38865, 0x00008B48 }, /* GL_SHADER_OBJECT_ARB */
+ { 38886, 0x00008B88 }, /* GL_SHADER_SOURCE_LENGTH */
+ { 38910, 0x00008B4F }, /* GL_SHADER_TYPE */
+ { 38925, 0x00000B54 }, /* GL_SHADE_MODEL */
+ { 38940, 0x00008B8C }, /* GL_SHADING_LANGUAGE_VERSION */
+ { 38968, 0x000080BF }, /* GL_SHADOW_AMBIENT_SGIX */
+ { 38991, 0x000081FB }, /* GL_SHARED_TEXTURE_PALETTE_EXT */
+ { 39021, 0x00001601 }, /* GL_SHININESS */
+ { 39034, 0x00001402 }, /* GL_SHORT */
+ { 39043, 0x00009119 }, /* GL_SIGNALED */
+ { 39055, 0x00008F9C }, /* GL_SIGNED_NORMALIZED */
+ { 39076, 0x000081F9 }, /* GL_SINGLE_COLOR */
+ { 39092, 0x000081F9 }, /* GL_SINGLE_COLOR_EXT */
+ { 39112, 0x000085CC }, /* GL_SLICE_ACCUM_SUN */
+ { 39131, 0x00008C46 }, /* GL_SLUMINANCE */
+ { 39145, 0x00008C47 }, /* GL_SLUMINANCE8 */
+ { 39160, 0x00008C45 }, /* GL_SLUMINANCE8_ALPHA8 */
+ { 39182, 0x00008C44 }, /* GL_SLUMINANCE_ALPHA */
+ { 39202, 0x00001D01 }, /* GL_SMOOTH */
+ { 39212, 0x00000B23 }, /* GL_SMOOTH_LINE_WIDTH_GRANULARITY */
+ { 39245, 0x00000B22 }, /* GL_SMOOTH_LINE_WIDTH_RANGE */
+ { 39272, 0x00000B13 }, /* GL_SMOOTH_POINT_SIZE_GRANULARITY */
+ { 39305, 0x00000B12 }, /* GL_SMOOTH_POINT_SIZE_RANGE */
+ { 39332, 0x00008588 }, /* GL_SOURCE0_ALPHA */
+ { 39349, 0x00008588 }, /* GL_SOURCE0_ALPHA_ARB */
+ { 39370, 0x00008588 }, /* GL_SOURCE0_ALPHA_EXT */
+ { 39391, 0x00008580 }, /* GL_SOURCE0_RGB */
+ { 39406, 0x00008580 }, /* GL_SOURCE0_RGB_ARB */
+ { 39425, 0x00008580 }, /* GL_SOURCE0_RGB_EXT */
+ { 39444, 0x00008589 }, /* GL_SOURCE1_ALPHA */
+ { 39461, 0x00008589 }, /* GL_SOURCE1_ALPHA_ARB */
+ { 39482, 0x00008589 }, /* GL_SOURCE1_ALPHA_EXT */
+ { 39503, 0x00008581 }, /* GL_SOURCE1_RGB */
+ { 39518, 0x00008581 }, /* GL_SOURCE1_RGB_ARB */
+ { 39537, 0x00008581 }, /* GL_SOURCE1_RGB_EXT */
+ { 39556, 0x0000858A }, /* GL_SOURCE2_ALPHA */
+ { 39573, 0x0000858A }, /* GL_SOURCE2_ALPHA_ARB */
+ { 39594, 0x0000858A }, /* GL_SOURCE2_ALPHA_EXT */
+ { 39615, 0x00008582 }, /* GL_SOURCE2_RGB */
+ { 39630, 0x00008582 }, /* GL_SOURCE2_RGB_ARB */
+ { 39649, 0x00008582 }, /* GL_SOURCE2_RGB_EXT */
+ { 39668, 0x0000858B }, /* GL_SOURCE3_ALPHA_NV */
+ { 39688, 0x00008583 }, /* GL_SOURCE3_RGB_NV */
+ { 39706, 0x00001202 }, /* GL_SPECULAR */
+ { 39718, 0x00002402 }, /* GL_SPHERE_MAP */
+ { 39732, 0x00001206 }, /* GL_SPOT_CUTOFF */
+ { 39747, 0x00001204 }, /* GL_SPOT_DIRECTION */
+ { 39765, 0x00001205 }, /* GL_SPOT_EXPONENT */
+ { 39782, 0x00008588 }, /* GL_SRC0_ALPHA */
+ { 39796, 0x00008580 }, /* GL_SRC0_RGB */
+ { 39808, 0x00008589 }, /* GL_SRC1_ALPHA */
+ { 39822, 0x00008581 }, /* GL_SRC1_RGB */
+ { 39834, 0x0000858A }, /* GL_SRC2_ALPHA */
+ { 39848, 0x00008582 }, /* GL_SRC2_RGB */
+ { 39860, 0x00000302 }, /* GL_SRC_ALPHA */
+ { 39873, 0x00000308 }, /* GL_SRC_ALPHA_SATURATE */
+ { 39895, 0x00000300 }, /* GL_SRC_COLOR */
+ { 39908, 0x00008C40 }, /* GL_SRGB */
+ { 39916, 0x00008C41 }, /* GL_SRGB8 */
+ { 39925, 0x00008C43 }, /* GL_SRGB8_ALPHA8 */
+ { 39941, 0x00008C42 }, /* GL_SRGB_ALPHA */
+ { 39955, 0x00000503 }, /* GL_STACK_OVERFLOW */
+ { 39973, 0x00000504 }, /* GL_STACK_UNDERFLOW */
+ { 39992, 0x000088E6 }, /* GL_STATIC_COPY */
+ { 40007, 0x000088E6 }, /* GL_STATIC_COPY_ARB */
+ { 40026, 0x000088E4 }, /* GL_STATIC_DRAW */
+ { 40041, 0x000088E4 }, /* GL_STATIC_DRAW_ARB */
+ { 40060, 0x000088E5 }, /* GL_STATIC_READ */
+ { 40075, 0x000088E5 }, /* GL_STATIC_READ_ARB */
+ { 40094, 0x00001802 }, /* GL_STENCIL */
+ { 40105, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT */
+ { 40127, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_EXT */
+ { 40153, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_OES */
+ { 40179, 0x00008801 }, /* GL_STENCIL_BACK_FAIL */
+ { 40200, 0x00008801 }, /* GL_STENCIL_BACK_FAIL_ATI */
+ { 40225, 0x00008800 }, /* GL_STENCIL_BACK_FUNC */
+ { 40246, 0x00008800 }, /* GL_STENCIL_BACK_FUNC_ATI */
+ { 40271, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */
+ { 40303, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI */
+ { 40339, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */
+ { 40371, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI */
+ { 40407, 0x00008CA3 }, /* GL_STENCIL_BACK_REF */
+ { 40427, 0x00008CA4 }, /* GL_STENCIL_BACK_VALUE_MASK */
+ { 40454, 0x00008CA5 }, /* GL_STENCIL_BACK_WRITEMASK */
+ { 40480, 0x00000D57 }, /* GL_STENCIL_BITS */
+ { 40496, 0x00008224 }, /* GL_STENCIL_BUFFER */
+ { 40514, 0x00000400 }, /* GL_STENCIL_BUFFER_BIT */
+ { 40536, 0x00000B91 }, /* GL_STENCIL_CLEAR_VALUE */
+ { 40559, 0x00000B94 }, /* GL_STENCIL_FAIL */
+ { 40575, 0x00000B92 }, /* GL_STENCIL_FUNC */
+ { 40591, 0x00001901 }, /* GL_STENCIL_INDEX */
+ { 40608, 0x00008D46 }, /* GL_STENCIL_INDEX1 */
+ { 40626, 0x00008D49 }, /* GL_STENCIL_INDEX16 */
+ { 40645, 0x00008D49 }, /* GL_STENCIL_INDEX16_EXT */
+ { 40668, 0x00008D46 }, /* GL_STENCIL_INDEX1_EXT */
+ { 40690, 0x00008D46 }, /* GL_STENCIL_INDEX1_OES */
+ { 40712, 0x00008D47 }, /* GL_STENCIL_INDEX4 */
+ { 40730, 0x00008D47 }, /* GL_STENCIL_INDEX4_EXT */
+ { 40752, 0x00008D47 }, /* GL_STENCIL_INDEX4_OES */
+ { 40774, 0x00008D48 }, /* GL_STENCIL_INDEX8 */
+ { 40792, 0x00008D48 }, /* GL_STENCIL_INDEX8_EXT */
+ { 40814, 0x00008D48 }, /* GL_STENCIL_INDEX8_OES */
+ { 40836, 0x00008D45 }, /* GL_STENCIL_INDEX_EXT */
+ { 40857, 0x00000B95 }, /* GL_STENCIL_PASS_DEPTH_FAIL */
+ { 40884, 0x00000B96 }, /* GL_STENCIL_PASS_DEPTH_PASS */
+ { 40911, 0x00000B97 }, /* GL_STENCIL_REF */
+ { 40926, 0x00000B90 }, /* GL_STENCIL_TEST */
+ { 40942, 0x00008910 }, /* GL_STENCIL_TEST_TWO_SIDE_EXT */
+ { 40971, 0x00000B93 }, /* GL_STENCIL_VALUE_MASK */
+ { 40993, 0x00000B98 }, /* GL_STENCIL_WRITEMASK */
+ { 41014, 0x00000C33 }, /* GL_STEREO */
+ { 41024, 0x000085BE }, /* GL_STORAGE_CACHED_APPLE */
+ { 41048, 0x000085BD }, /* GL_STORAGE_PRIVATE_APPLE */
+ { 41073, 0x000085BF }, /* GL_STORAGE_SHARED_APPLE */
+ { 41097, 0x000088E2 }, /* GL_STREAM_COPY */
+ { 41112, 0x000088E2 }, /* GL_STREAM_COPY_ARB */
+ { 41131, 0x000088E0 }, /* GL_STREAM_DRAW */
+ { 41146, 0x000088E0 }, /* GL_STREAM_DRAW_ARB */
+ { 41165, 0x000088E1 }, /* GL_STREAM_READ */
+ { 41180, 0x000088E1 }, /* GL_STREAM_READ_ARB */
+ { 41199, 0x00000D50 }, /* GL_SUBPIXEL_BITS */
+ { 41216, 0x000084E7 }, /* GL_SUBTRACT */
+ { 41228, 0x000084E7 }, /* GL_SUBTRACT_ARB */
+ { 41244, 0x00009113 }, /* GL_SYNC_CONDITION */
+ { 41262, 0x00009116 }, /* GL_SYNC_FENCE */
+ { 41276, 0x00009115 }, /* GL_SYNC_FLAGS */
+ { 41290, 0x00000001 }, /* GL_SYNC_FLUSH_COMMANDS_BIT */
+ { 41317, 0x00009117 }, /* GL_SYNC_GPU_COMMANDS_COMPLETE */
+ { 41347, 0x00009114 }, /* GL_SYNC_STATUS */
+ { 41362, 0x00002001 }, /* GL_T */
+ { 41367, 0x00002A2A }, /* GL_T2F_C3F_V3F */
+ { 41382, 0x00002A2C }, /* GL_T2F_C4F_N3F_V3F */
+ { 41401, 0x00002A29 }, /* GL_T2F_C4UB_V3F */
+ { 41417, 0x00002A2B }, /* GL_T2F_N3F_V3F */
+ { 41432, 0x00002A27 }, /* GL_T2F_V3F */
+ { 41443, 0x00002A2D }, /* GL_T4F_C4F_N3F_V4F */
+ { 41462, 0x00002A28 }, /* GL_T4F_V4F */
+ { 41473, 0x00008031 }, /* GL_TABLE_TOO_LARGE_EXT */
+ { 41496, 0x00001702 }, /* GL_TEXTURE */
+ { 41507, 0x000084C0 }, /* GL_TEXTURE0 */
+ { 41519, 0x000084C0 }, /* GL_TEXTURE0_ARB */
+ { 41535, 0x000084C1 }, /* GL_TEXTURE1 */
+ { 41547, 0x000084CA }, /* GL_TEXTURE10 */
+ { 41560, 0x000084CA }, /* GL_TEXTURE10_ARB */
+ { 41577, 0x000084CB }, /* GL_TEXTURE11 */
+ { 41590, 0x000084CB }, /* GL_TEXTURE11_ARB */
+ { 41607, 0x000084CC }, /* GL_TEXTURE12 */
+ { 41620, 0x000084CC }, /* GL_TEXTURE12_ARB */
+ { 41637, 0x000084CD }, /* GL_TEXTURE13 */
+ { 41650, 0x000084CD }, /* GL_TEXTURE13_ARB */
+ { 41667, 0x000084CE }, /* GL_TEXTURE14 */
+ { 41680, 0x000084CE }, /* GL_TEXTURE14_ARB */
+ { 41697, 0x000084CF }, /* GL_TEXTURE15 */
+ { 41710, 0x000084CF }, /* GL_TEXTURE15_ARB */
+ { 41727, 0x000084D0 }, /* GL_TEXTURE16 */
+ { 41740, 0x000084D0 }, /* GL_TEXTURE16_ARB */
+ { 41757, 0x000084D1 }, /* GL_TEXTURE17 */
+ { 41770, 0x000084D1 }, /* GL_TEXTURE17_ARB */
+ { 41787, 0x000084D2 }, /* GL_TEXTURE18 */
+ { 41800, 0x000084D2 }, /* GL_TEXTURE18_ARB */
+ { 41817, 0x000084D3 }, /* GL_TEXTURE19 */
+ { 41830, 0x000084D3 }, /* GL_TEXTURE19_ARB */
+ { 41847, 0x000084C1 }, /* GL_TEXTURE1_ARB */
+ { 41863, 0x000084C2 }, /* GL_TEXTURE2 */
+ { 41875, 0x000084D4 }, /* GL_TEXTURE20 */
+ { 41888, 0x000084D4 }, /* GL_TEXTURE20_ARB */
+ { 41905, 0x000084D5 }, /* GL_TEXTURE21 */
+ { 41918, 0x000084D5 }, /* GL_TEXTURE21_ARB */
+ { 41935, 0x000084D6 }, /* GL_TEXTURE22 */
+ { 41948, 0x000084D6 }, /* GL_TEXTURE22_ARB */
+ { 41965, 0x000084D7 }, /* GL_TEXTURE23 */
+ { 41978, 0x000084D7 }, /* GL_TEXTURE23_ARB */
+ { 41995, 0x000084D8 }, /* GL_TEXTURE24 */
+ { 42008, 0x000084D8 }, /* GL_TEXTURE24_ARB */
+ { 42025, 0x000084D9 }, /* GL_TEXTURE25 */
+ { 42038, 0x000084D9 }, /* GL_TEXTURE25_ARB */
+ { 42055, 0x000084DA }, /* GL_TEXTURE26 */
+ { 42068, 0x000084DA }, /* GL_TEXTURE26_ARB */
+ { 42085, 0x000084DB }, /* GL_TEXTURE27 */
+ { 42098, 0x000084DB }, /* GL_TEXTURE27_ARB */
+ { 42115, 0x000084DC }, /* GL_TEXTURE28 */
+ { 42128, 0x000084DC }, /* GL_TEXTURE28_ARB */
+ { 42145, 0x000084DD }, /* GL_TEXTURE29 */
+ { 42158, 0x000084DD }, /* GL_TEXTURE29_ARB */
+ { 42175, 0x000084C2 }, /* GL_TEXTURE2_ARB */
+ { 42191, 0x000084C3 }, /* GL_TEXTURE3 */
+ { 42203, 0x000084DE }, /* GL_TEXTURE30 */
+ { 42216, 0x000084DE }, /* GL_TEXTURE30_ARB */
+ { 42233, 0x000084DF }, /* GL_TEXTURE31 */
+ { 42246, 0x000084DF }, /* GL_TEXTURE31_ARB */
+ { 42263, 0x000084C3 }, /* GL_TEXTURE3_ARB */
+ { 42279, 0x000084C4 }, /* GL_TEXTURE4 */
+ { 42291, 0x000084C4 }, /* GL_TEXTURE4_ARB */
+ { 42307, 0x000084C5 }, /* GL_TEXTURE5 */
+ { 42319, 0x000084C5 }, /* GL_TEXTURE5_ARB */
+ { 42335, 0x000084C6 }, /* GL_TEXTURE6 */
+ { 42347, 0x000084C6 }, /* GL_TEXTURE6_ARB */
+ { 42363, 0x000084C7 }, /* GL_TEXTURE7 */
+ { 42375, 0x000084C7 }, /* GL_TEXTURE7_ARB */
+ { 42391, 0x000084C8 }, /* GL_TEXTURE8 */
+ { 42403, 0x000084C8 }, /* GL_TEXTURE8_ARB */
+ { 42419, 0x000084C9 }, /* GL_TEXTURE9 */
+ { 42431, 0x000084C9 }, /* GL_TEXTURE9_ARB */
+ { 42447, 0x00000DE0 }, /* GL_TEXTURE_1D */
+ { 42461, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY */
+ { 42481, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY_EXT */
+ { 42505, 0x00000DE1 }, /* GL_TEXTURE_2D */
+ { 42519, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY */
+ { 42539, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY_EXT */
+ { 42563, 0x0000806F }, /* GL_TEXTURE_3D */
+ { 42577, 0x0000806F }, /* GL_TEXTURE_3D_OES */
+ { 42595, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE */
+ { 42617, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE_EXT */
+ { 42643, 0x0000813C }, /* GL_TEXTURE_BASE_LEVEL */
+ { 42665, 0x00008068 }, /* GL_TEXTURE_BINDING_1D */
+ { 42687, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY */
+ { 42715, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */
+ { 42747, 0x00008069 }, /* GL_TEXTURE_BINDING_2D */
+ { 42769, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY */
+ { 42797, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */
+ { 42829, 0x0000806A }, /* GL_TEXTURE_BINDING_3D */
+ { 42851, 0x0000806A }, /* GL_TEXTURE_BINDING_3D_OES */
+ { 42877, 0x00008C2C }, /* GL_TEXTURE_BINDING_BUFFER */
+ { 42903, 0x00008C2C }, /* GL_TEXTURE_BINDING_BUFFER_ARB */
+ { 42933, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP */
+ { 42961, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_ARB */
+ { 42993, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_OES */
+ { 43025, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE */
+ { 43054, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */
+ { 43087, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_NV */
+ { 43119, 0x00040000 }, /* GL_TEXTURE_BIT */
+ { 43134, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE */
+ { 43155, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE_EXT */
+ { 43180, 0x00001005 }, /* GL_TEXTURE_BORDER */
+ { 43198, 0x00001004 }, /* GL_TEXTURE_BORDER_COLOR */
+ { 43222, 0x00008C2A }, /* GL_TEXTURE_BUFFER */
+ { 43240, 0x00008C2A }, /* GL_TEXTURE_BUFFER_ARB */
+ { 43262, 0x00008C2D }, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */
+ { 43299, 0x00008C2D }, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB */
+ { 43340, 0x00008C2E }, /* GL_TEXTURE_BUFFER_FORMAT */
+ { 43365, 0x00008C2E }, /* GL_TEXTURE_BUFFER_FORMAT_ARB */
+ { 43394, 0x00008171 }, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */
+ { 43425, 0x00008176 }, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */
+ { 43455, 0x00008172 }, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */
+ { 43485, 0x00008175 }, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */
+ { 43520, 0x00008173 }, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */
+ { 43551, 0x00008174 }, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */
+ { 43589, 0x000080BC }, /* GL_TEXTURE_COLOR_TABLE_SGI */
+ { 43616, 0x000081EF }, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */
+ { 43648, 0x000080BF }, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */
+ { 43682, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC */
+ { 43706, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC_ARB */
+ { 43734, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE */
+ { 43758, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE_ARB */
+ { 43786, 0x0000819B }, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */
+ { 43819, 0x0000819A }, /* GL_TEXTURE_COMPARE_SGIX */
+ { 43843, 0x00001003 }, /* GL_TEXTURE_COMPONENTS */
+ { 43865, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED */
+ { 43887, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED_ARB */
+ { 43913, 0x000086A3 }, /* GL_TEXTURE_COMPRESSED_FORMATS_ARB */
+ { 43947, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */
+ { 43980, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB */
+ { 44017, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT */
+ { 44045, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT_ARB */
+ { 44077, 0x00008078 }, /* GL_TEXTURE_COORD_ARRAY */
+ { 44100, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */
+ { 44138, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB */
+ { 44180, 0x00008092 }, /* GL_TEXTURE_COORD_ARRAY_POINTER */
+ { 44211, 0x00008088 }, /* GL_TEXTURE_COORD_ARRAY_SIZE */
+ { 44239, 0x0000808A }, /* GL_TEXTURE_COORD_ARRAY_STRIDE */
+ { 44269, 0x00008089 }, /* GL_TEXTURE_COORD_ARRAY_TYPE */
+ { 44297, 0x00008B9D }, /* GL_TEXTURE_CROP_RECT_OES */
+ { 44322, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP */
+ { 44342, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_ARB */
+ { 44366, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */
+ { 44397, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB */
+ { 44432, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES */
+ { 44467, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */
+ { 44498, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB */
+ { 44533, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES */
+ { 44568, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */
+ { 44599, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB */
+ { 44634, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES */
+ { 44669, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_OES */
+ { 44693, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */
+ { 44724, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB */
+ { 44759, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES */
+ { 44794, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */
+ { 44825, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB */
+ { 44860, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES */
+ { 44895, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */
+ { 44926, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB */
+ { 44961, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES */
+ { 44996, 0x000088F4 }, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */
+ { 45025, 0x00008071 }, /* GL_TEXTURE_DEPTH */
+ { 45042, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE */
+ { 45064, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE_ARB */
+ { 45090, 0x00002300 }, /* GL_TEXTURE_ENV */
+ { 45105, 0x00002201 }, /* GL_TEXTURE_ENV_COLOR */
+ { 45126, 0x00002200 }, /* GL_TEXTURE_ENV_MODE */
+ { 45146, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL */
+ { 45172, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL_EXT */
+ { 45202, 0x00002500 }, /* GL_TEXTURE_GEN_MODE */
+ { 45222, 0x00002500 }, /* GL_TEXTURE_GEN_MODE_OES */
+ { 45246, 0x00000C63 }, /* GL_TEXTURE_GEN_Q */
+ { 45263, 0x00000C62 }, /* GL_TEXTURE_GEN_R */
+ { 45280, 0x00000C60 }, /* GL_TEXTURE_GEN_S */
+ { 45297, 0x00008D60 }, /* GL_TEXTURE_GEN_STR_OES */
+ { 45320, 0x00000C61 }, /* GL_TEXTURE_GEN_T */
+ { 45337, 0x0000819D }, /* GL_TEXTURE_GEQUAL_R_SGIX */
+ { 45362, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE */
+ { 45384, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE_EXT */
+ { 45410, 0x00001001 }, /* GL_TEXTURE_HEIGHT */
+ { 45428, 0x000080ED }, /* GL_TEXTURE_INDEX_SIZE_EXT */
+ { 45454, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE */
+ { 45480, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE_EXT */
+ { 45510, 0x00001003 }, /* GL_TEXTURE_INTERNAL_FORMAT */
+ { 45537, 0x0000819C }, /* GL_TEXTURE_LEQUAL_R_SGIX */
+ { 45562, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS */
+ { 45582, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS_EXT */
+ { 45606, 0x00008190 }, /* GL_TEXTURE_LOD_BIAS_R_SGIX */
+ { 45633, 0x0000818E }, /* GL_TEXTURE_LOD_BIAS_S_SGIX */
+ { 45660, 0x0000818F }, /* GL_TEXTURE_LOD_BIAS_T_SGIX */
+ { 45687, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE */
+ { 45713, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE_EXT */
+ { 45743, 0x00002800 }, /* GL_TEXTURE_MAG_FILTER */
+ { 45765, 0x00000BA8 }, /* GL_TEXTURE_MATRIX */
+ { 45783, 0x0000898F }, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */
+ { 45823, 0x000084FE }, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */
+ { 45853, 0x0000836B }, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */
+ { 45881, 0x00008369 }, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */
+ { 45909, 0x0000836A }, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */
+ { 45937, 0x0000813D }, /* GL_TEXTURE_MAX_LEVEL */
+ { 45958, 0x0000813B }, /* GL_TEXTURE_MAX_LOD */
+ { 45977, 0x00002801 }, /* GL_TEXTURE_MIN_FILTER */
+ { 45999, 0x0000813A }, /* GL_TEXTURE_MIN_LOD */
+ { 46018, 0x00008066 }, /* GL_TEXTURE_PRIORITY */
+ { 46038, 0x000085B7 }, /* GL_TEXTURE_RANGE_LENGTH_APPLE */
+ { 46068, 0x000085B8 }, /* GL_TEXTURE_RANGE_POINTER_APPLE */
+ { 46099, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE */
+ { 46120, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_ARB */
+ { 46145, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_NV */
+ { 46169, 0x0000805C }, /* GL_TEXTURE_RED_SIZE */
+ { 46189, 0x0000805C }, /* GL_TEXTURE_RED_SIZE_EXT */
+ { 46213, 0x00008067 }, /* GL_TEXTURE_RESIDENT */
+ { 46233, 0x00008C3F }, /* GL_TEXTURE_SHARED_SIZE */
+ { 46256, 0x00000BA5 }, /* GL_TEXTURE_STACK_DEPTH */
+ { 46279, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE */
+ { 46303, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE_EXT */
+ { 46331, 0x000085BC }, /* GL_TEXTURE_STORAGE_HINT_APPLE */
+ { 46361, 0x00008065 }, /* GL_TEXTURE_TOO_LARGE_EXT */
+ { 46386, 0x0000888F }, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */
+ { 46420, 0x00001000 }, /* GL_TEXTURE_WIDTH */
+ { 46437, 0x00008072 }, /* GL_TEXTURE_WRAP_R */
+ { 46455, 0x00008072 }, /* GL_TEXTURE_WRAP_R_OES */
+ { 46477, 0x00002802 }, /* GL_TEXTURE_WRAP_S */
+ { 46495, 0x00002803 }, /* GL_TEXTURE_WRAP_T */
+ { 46513, 0x0000911B }, /* GL_TIMEOUT_EXPIRED */
+ { 46532, 0x000088BF }, /* GL_TIME_ELAPSED_EXT */
+ { 46552, 0x00008648 }, /* GL_TRACK_MATRIX_NV */
+ { 46571, 0x00008649 }, /* GL_TRACK_MATRIX_TRANSFORM_NV */
+ { 46600, 0x00001000 }, /* GL_TRANSFORM_BIT */
+ { 46617, 0x00008E22 }, /* GL_TRANSFORM_FEEDBACK */
+ { 46639, 0x00008E25 }, /* GL_TRANSFORM_FEEDBACK_BINDING */
+ { 46669, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER */
+ { 46698, 0x00008E24 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */
+ { 46734, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */
+ { 46771, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT */
+ { 46812, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER_EXT */
+ { 46845, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */
+ { 46879, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT */
+ { 46917, 0x00008E23 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */
+ { 46953, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */
+ { 46987, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT */
+ { 47025, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */
+ { 47060, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT */
+ { 47099, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */
+ { 47140, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT */
+ { 47185, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS */
+ { 47216, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS_EXT */
+ { 47251, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */
+ { 47292, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT */
+ { 47337, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX */
+ { 47363, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX_ARB */
+ { 47393, 0x000088B7 }, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */
+ { 47425, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX */
+ { 47455, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX_ARB */
+ { 47489, 0x0000862C }, /* GL_TRANSPOSE_NV */
+ { 47505, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX */
+ { 47536, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX_ARB */
+ { 47571, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX */
+ { 47599, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX_ARB */
+ { 47631, 0x00000004 }, /* GL_TRIANGLES */
+ { 47644, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY */
+ { 47667, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY_ARB */
+ { 47694, 0x00000006 }, /* GL_TRIANGLE_FAN */
+ { 47710, 0x00008615 }, /* GL_TRIANGLE_MESH_SUN */
+ { 47731, 0x00000005 }, /* GL_TRIANGLE_STRIP */
+ { 47749, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY */
+ { 47777, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY_ARB */
+ { 47809, 0x00000001 }, /* GL_TRUE */
+ { 47817, 0x00008A1C }, /* GL_UNDEFINED_APPLE */
+ { 47836, 0x00000CF5 }, /* GL_UNPACK_ALIGNMENT */
+ { 47856, 0x0000806E }, /* GL_UNPACK_IMAGE_HEIGHT */
+ { 47879, 0x00000CF1 }, /* GL_UNPACK_LSB_FIRST */
+ { 47899, 0x00000CF2 }, /* GL_UNPACK_ROW_LENGTH */
+ { 47920, 0x0000806D }, /* GL_UNPACK_SKIP_IMAGES */
+ { 47942, 0x00000CF4 }, /* GL_UNPACK_SKIP_PIXELS */
+ { 47964, 0x00000CF3 }, /* GL_UNPACK_SKIP_ROWS */
+ { 47984, 0x00000CF0 }, /* GL_UNPACK_SWAP_BYTES */
+ { 48005, 0x00009118 }, /* GL_UNSIGNALED */
+ { 48019, 0x00001401 }, /* GL_UNSIGNED_BYTE */
+ { 48036, 0x00008362 }, /* GL_UNSIGNED_BYTE_2_3_3_REV */
+ { 48063, 0x00008032 }, /* GL_UNSIGNED_BYTE_3_3_2 */
+ { 48086, 0x00001405 }, /* GL_UNSIGNED_INT */
+ { 48102, 0x00008C3B }, /* GL_UNSIGNED_INT_10F_11F_11F_REV */
+ { 48134, 0x00008036 }, /* GL_UNSIGNED_INT_10_10_10_2 */
+ { 48161, 0x00008DF6 }, /* GL_UNSIGNED_INT_10_10_10_2_OES */
+ { 48192, 0x000084FA }, /* GL_UNSIGNED_INT_24_8 */
+ { 48213, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_EXT */
+ { 48238, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_NV */
+ { 48262, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_OES */
+ { 48287, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV */
+ { 48318, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV_EXT */
+ { 48353, 0x00008C3E }, /* GL_UNSIGNED_INT_5_9_9_9_REV */
+ { 48381, 0x00008035 }, /* GL_UNSIGNED_INT_8_8_8_8 */
+ { 48405, 0x00008367 }, /* GL_UNSIGNED_INT_8_8_8_8_REV */
+ { 48433, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D */
+ { 48460, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */
+ { 48493, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT */
+ { 48530, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D_EXT */
+ { 48561, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D */
+ { 48588, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */
+ { 48621, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT */
+ { 48658, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D_EXT */
+ { 48689, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */
+ { 48721, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT */
+ { 48757, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D */
+ { 48784, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D_EXT */
+ { 48815, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */
+ { 48846, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT */
+ { 48881, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE */
+ { 48910, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE_EXT */
+ { 48943, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2 */
+ { 48964, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2_EXT */
+ { 48989, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3 */
+ { 49010, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3_EXT */
+ { 49035, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4 */
+ { 49056, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4_EXT */
+ { 49081, 0x00008C17 }, /* GL_UNSIGNED_NORMALIZED */
+ { 49104, 0x00001403 }, /* GL_UNSIGNED_SHORT */
+ { 49122, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */
+ { 49152, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT */
+ { 49186, 0x00008033 }, /* GL_UNSIGNED_SHORT_4_4_4_4 */
+ { 49212, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */
+ { 49242, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT */
+ { 49276, 0x00008034 }, /* GL_UNSIGNED_SHORT_5_5_5_1 */
+ { 49302, 0x00008363 }, /* GL_UNSIGNED_SHORT_5_6_5 */
+ { 49326, 0x00008364 }, /* GL_UNSIGNED_SHORT_5_6_5_REV */
+ { 49354, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_APPLE */
+ { 49382, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_MESA */
+ { 49409, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */
+ { 49441, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_MESA */
+ { 49472, 0x00008CA2 }, /* GL_UPPER_LEFT */
+ { 49486, 0x00002A20 }, /* GL_V2F */
+ { 49493, 0x00002A21 }, /* GL_V3F */
+ { 49500, 0x00008B83 }, /* GL_VALIDATE_STATUS */
+ { 49519, 0x00001F00 }, /* GL_VENDOR */
+ { 49529, 0x00001F02 }, /* GL_VERSION */
+ { 49540, 0x00008074 }, /* GL_VERTEX_ARRAY */
+ { 49556, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING */
+ { 49580, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING_APPLE */
+ { 49610, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
+ { 49641, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */
+ { 49676, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */
+ { 49700, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */
+ { 49721, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */
+ { 49744, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */
+ { 49765, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
+ { 49792, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
+ { 49820, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
+ { 49848, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
+ { 49876, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
+ { 49904, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
+ { 49932, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
+ { 49960, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
+ { 49987, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
+ { 50014, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
+ { 50041, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
+ { 50068, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
+ { 50095, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
+ { 50122, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
+ { 50149, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
+ { 50176, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
+ { 50203, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
+ { 50241, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */
+ { 50283, 0x000088FE }, /* GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB */
+ { 50318, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */
+ { 50349, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */
+ { 50384, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */
+ { 50415, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT */
+ { 50450, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */
+ { 50484, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */
+ { 50522, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */
+ { 50553, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */
+ { 50588, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */
+ { 50616, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */
+ { 50648, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */
+ { 50678, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */
+ { 50712, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */
+ { 50740, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */
+ { 50772, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */
+ { 50792, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */
+ { 50814, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */
+ { 50843, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */
+ { 50864, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE */
+ { 50893, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */
+ { 50926, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */
+ { 50958, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE */
+ { 50985, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */
+ { 51016, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */
+ { 51046, 0x00008B31 }, /* GL_VERTEX_SHADER */
+ { 51063, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */
+ { 51084, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */
+ { 51111, 0x00000BA2 }, /* GL_VIEWPORT */
+ { 51123, 0x00000800 }, /* GL_VIEWPORT_BIT */
+ { 51139, 0x00008A1A }, /* GL_VOLATILE_APPLE */
+ { 51157, 0x0000911D }, /* GL_WAIT_FAILED */
+ { 51172, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */
+ { 51192, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
+ { 51223, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */
+ { 51258, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_OES */
+ { 51293, 0x000086AD }, /* GL_WEIGHT_ARRAY_OES */
+ { 51313, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */
+ { 51341, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_OES */
+ { 51369, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */
+ { 51394, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_OES */
+ { 51419, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
+ { 51446, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_OES */
+ { 51473, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */
+ { 51498, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_OES */
+ { 51523, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */
+ { 51547, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */
+ { 51566, 0x000088B9 }, /* GL_WRITE_ONLY */
+ { 51580, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */
+ { 51598, 0x000088B9 }, /* GL_WRITE_ONLY_OES */
+ { 51616, 0x00001506 }, /* GL_XOR */
+ { 51623, 0x000085B9 }, /* GL_YCBCR_422_APPLE */
+ { 51642, 0x00008757 }, /* GL_YCBCR_MESA */
+ { 51656, 0x00000000 }, /* GL_ZERO */
+ { 51664, 0x00000D16 }, /* GL_ZOOM_X */
+ { 51674, 0x00000D17 }, /* GL_ZOOM_Y */
};
-static const unsigned reduced_enums[1552] =
+static const unsigned reduced_enums[1556] =
{
- 535, /* GL_FALSE */
- 827, /* GL_LINES */
- 831, /* GL_LINE_LOOP */
- 838, /* GL_LINE_STRIP */
- 2135, /* GL_TRIANGLES */
- 2140, /* GL_TRIANGLE_STRIP */
- 2138, /* GL_TRIANGLE_FAN */
- 1507, /* GL_QUADS */
- 1511, /* GL_QUAD_STRIP */
- 1378, /* GL_POLYGON */
- 828, /* GL_LINES_ADJACENCY */
- 839, /* GL_LINE_STRIP_ADJACENCY */
- 2136, /* GL_TRIANGLES_ADJACENCY */
- 2141, /* GL_TRIANGLE_STRIP_ADJACENCY */
- 1390, /* GL_POLYGON_STIPPLE_BIT */
- 1333, /* GL_PIXEL_MODE_BIT */
- 814, /* GL_LIGHTING_BIT */
- 568, /* GL_FOG_BIT */
+ 538, /* GL_FALSE */
+ 831, /* GL_LINES */
+ 835, /* GL_LINE_LOOP */
+ 842, /* GL_LINE_STRIP */
+ 2146, /* GL_TRIANGLES */
+ 2151, /* GL_TRIANGLE_STRIP */
+ 2149, /* GL_TRIANGLE_FAN */
+ 1512, /* GL_QUADS */
+ 1516, /* GL_QUAD_STRIP */
+ 1383, /* GL_POLYGON */
+ 832, /* GL_LINES_ADJACENCY */
+ 843, /* GL_LINE_STRIP_ADJACENCY */
+ 2147, /* GL_TRIANGLES_ADJACENCY */
+ 2152, /* GL_TRIANGLE_STRIP_ADJACENCY */
+ 1395, /* GL_POLYGON_STIPPLE_BIT */
+ 1338, /* GL_PIXEL_MODE_BIT */
+ 818, /* GL_LIGHTING_BIT */
+ 572, /* GL_FOG_BIT */
8, /* GL_ACCUM */
- 850, /* GL_LOAD */
- 1596, /* GL_RETURN */
- 1200, /* GL_MULT */
+ 854, /* GL_LOAD */
+ 1601, /* GL_RETURN */
+ 1205, /* GL_MULT */
24, /* GL_ADD */
- 1216, /* GL_NEVER */
- 804, /* GL_LESS */
- 525, /* GL_EQUAL */
- 803, /* GL_LEQUAL */
- 691, /* GL_GREATER */
- 1233, /* GL_NOTEQUAL */
- 690, /* GL_GEQUAL */
+ 1221, /* GL_NEVER */
+ 808, /* GL_LESS */
+ 528, /* GL_EQUAL */
+ 807, /* GL_LEQUAL */
+ 695, /* GL_GREATER */
+ 1238, /* GL_NOTEQUAL */
+ 694, /* GL_GEQUAL */
55, /* GL_ALWAYS */
- 1803, /* GL_SRC_COLOR */
- 1266, /* GL_ONE_MINUS_SRC_COLOR */
- 1801, /* GL_SRC_ALPHA */
- 1265, /* GL_ONE_MINUS_SRC_ALPHA */
- 504, /* GL_DST_ALPHA */
- 1263, /* GL_ONE_MINUS_DST_ALPHA */
- 505, /* GL_DST_COLOR */
- 1264, /* GL_ONE_MINUS_DST_COLOR */
- 1802, /* GL_SRC_ALPHA_SATURATE */
- 667, /* GL_FRONT_LEFT */
- 668, /* GL_FRONT_RIGHT */
+ 1810, /* GL_SRC_COLOR */
+ 1271, /* GL_ONE_MINUS_SRC_COLOR */
+ 1808, /* GL_SRC_ALPHA */
+ 1270, /* GL_ONE_MINUS_SRC_ALPHA */
+ 507, /* GL_DST_ALPHA */
+ 1268, /* GL_ONE_MINUS_DST_ALPHA */
+ 508, /* GL_DST_COLOR */
+ 1269, /* GL_ONE_MINUS_DST_COLOR */
+ 1809, /* GL_SRC_ALPHA_SATURATE */
+ 671, /* GL_FRONT_LEFT */
+ 672, /* GL_FRONT_RIGHT */
77, /* GL_BACK_LEFT */
78, /* GL_BACK_RIGHT */
- 664, /* GL_FRONT */
+ 668, /* GL_FRONT */
76, /* GL_BACK */
- 802, /* GL_LEFT */
- 1685, /* GL_RIGHT */
- 665, /* GL_FRONT_AND_BACK */
+ 806, /* GL_LEFT */
+ 1691, /* GL_RIGHT */
+ 669, /* GL_FRONT_AND_BACK */
71, /* GL_AUX0 */
72, /* GL_AUX1 */
73, /* GL_AUX2 */
74, /* GL_AUX3 */
- 790, /* GL_INVALID_ENUM */
- 795, /* GL_INVALID_VALUE */
- 794, /* GL_INVALID_OPERATION */
- 1808, /* GL_STACK_OVERFLOW */
- 1809, /* GL_STACK_UNDERFLOW */
- 1291, /* GL_OUT_OF_MEMORY */
- 791, /* GL_INVALID_FRAMEBUFFER_OPERATION */
+ 794, /* GL_INVALID_ENUM */
+ 799, /* GL_INVALID_VALUE */
+ 798, /* GL_INVALID_OPERATION */
+ 1815, /* GL_STACK_OVERFLOW */
+ 1816, /* GL_STACK_UNDERFLOW */
+ 1296, /* GL_OUT_OF_MEMORY */
+ 795, /* GL_INVALID_FRAMEBUFFER_OPERATION */
0, /* GL_2D */
2, /* GL_3D */
3, /* GL_3D_COLOR */
4, /* GL_3D_COLOR_TEXTURE */
6, /* GL_4D_COLOR_TEXTURE */
- 1311, /* GL_PASS_THROUGH_TOKEN */
- 1377, /* GL_POINT_TOKEN */
- 841, /* GL_LINE_TOKEN */
- 1391, /* GL_POLYGON_TOKEN */
+ 1316, /* GL_PASS_THROUGH_TOKEN */
+ 1382, /* GL_POINT_TOKEN */
+ 845, /* GL_LINE_TOKEN */
+ 1396, /* GL_POLYGON_TOKEN */
87, /* GL_BITMAP_TOKEN */
- 503, /* GL_DRAW_PIXEL_TOKEN */
- 349, /* GL_COPY_PIXEL_TOKEN */
- 832, /* GL_LINE_RESET_TOKEN */
- 528, /* GL_EXP */
- 529, /* GL_EXP2 */
- 386, /* GL_CW */
+ 506, /* GL_DRAW_PIXEL_TOKEN */
+ 352, /* GL_COPY_PIXEL_TOKEN */
+ 836, /* GL_LINE_RESET_TOKEN */
+ 531, /* GL_EXP */
+ 532, /* GL_EXP2 */
+ 389, /* GL_CW */
154, /* GL_CCW */
- 184, /* GL_COEFF */
- 1288, /* GL_ORDER */
- 440, /* GL_DOMAIN */
- 359, /* GL_CURRENT_COLOR */
- 362, /* GL_CURRENT_INDEX */
- 368, /* GL_CURRENT_NORMAL */
- 382, /* GL_CURRENT_TEXTURE_COORDS */
- 374, /* GL_CURRENT_RASTER_COLOR */
- 376, /* GL_CURRENT_RASTER_INDEX */
- 380, /* GL_CURRENT_RASTER_TEXTURE_COORDS */
- 377, /* GL_CURRENT_RASTER_POSITION */
- 378, /* GL_CURRENT_RASTER_POSITION_VALID */
- 375, /* GL_CURRENT_RASTER_DISTANCE */
- 1369, /* GL_POINT_SMOOTH */
- 1353, /* GL_POINT_SIZE */
- 1368, /* GL_POINT_SIZE_RANGE */
- 1359, /* GL_POINT_SIZE_GRANULARITY */
- 833, /* GL_LINE_SMOOTH */
- 842, /* GL_LINE_WIDTH */
- 844, /* GL_LINE_WIDTH_RANGE */
- 843, /* GL_LINE_WIDTH_GRANULARITY */
- 835, /* GL_LINE_STIPPLE */
- 836, /* GL_LINE_STIPPLE_PATTERN */
- 837, /* GL_LINE_STIPPLE_REPEAT */
- 849, /* GL_LIST_MODE */
- 1056, /* GL_MAX_LIST_NESTING */
- 846, /* GL_LIST_BASE */
- 848, /* GL_LIST_INDEX */
- 1380, /* GL_POLYGON_MODE */
- 1387, /* GL_POLYGON_SMOOTH */
- 1389, /* GL_POLYGON_STIPPLE */
- 514, /* GL_EDGE_FLAG */
- 352, /* GL_CULL_FACE */
- 353, /* GL_CULL_FACE_MODE */
- 666, /* GL_FRONT_FACE */
- 813, /* GL_LIGHTING */
- 818, /* GL_LIGHT_MODEL_LOCAL_VIEWER */
- 819, /* GL_LIGHT_MODEL_TWO_SIDE */
- 815, /* GL_LIGHT_MODEL_AMBIENT */
- 1750, /* GL_SHADE_MODEL */
- 232, /* GL_COLOR_MATERIAL_FACE */
- 233, /* GL_COLOR_MATERIAL_PARAMETER */
- 231, /* GL_COLOR_MATERIAL */
- 567, /* GL_FOG */
- 589, /* GL_FOG_INDEX */
- 585, /* GL_FOG_DENSITY */
- 593, /* GL_FOG_START */
- 587, /* GL_FOG_END */
- 590, /* GL_FOG_MODE */
- 569, /* GL_FOG_COLOR */
- 425, /* GL_DEPTH_RANGE */
- 434, /* GL_DEPTH_TEST */
- 437, /* GL_DEPTH_WRITEMASK */
- 410, /* GL_DEPTH_CLEAR_VALUE */
- 424, /* GL_DEPTH_FUNC */
+ 187, /* GL_COEFF */
+ 1293, /* GL_ORDER */
+ 443, /* GL_DOMAIN */
+ 362, /* GL_CURRENT_COLOR */
+ 365, /* GL_CURRENT_INDEX */
+ 371, /* GL_CURRENT_NORMAL */
+ 385, /* GL_CURRENT_TEXTURE_COORDS */
+ 377, /* GL_CURRENT_RASTER_COLOR */
+ 379, /* GL_CURRENT_RASTER_INDEX */
+ 383, /* GL_CURRENT_RASTER_TEXTURE_COORDS */
+ 380, /* GL_CURRENT_RASTER_POSITION */
+ 381, /* GL_CURRENT_RASTER_POSITION_VALID */
+ 378, /* GL_CURRENT_RASTER_DISTANCE */
+ 1374, /* GL_POINT_SMOOTH */
+ 1358, /* GL_POINT_SIZE */
+ 1373, /* GL_POINT_SIZE_RANGE */
+ 1364, /* GL_POINT_SIZE_GRANULARITY */
+ 837, /* GL_LINE_SMOOTH */
+ 846, /* GL_LINE_WIDTH */
+ 848, /* GL_LINE_WIDTH_RANGE */
+ 847, /* GL_LINE_WIDTH_GRANULARITY */
+ 839, /* GL_LINE_STIPPLE */
+ 840, /* GL_LINE_STIPPLE_PATTERN */
+ 841, /* GL_LINE_STIPPLE_REPEAT */
+ 853, /* GL_LIST_MODE */
+ 1060, /* GL_MAX_LIST_NESTING */
+ 850, /* GL_LIST_BASE */
+ 852, /* GL_LIST_INDEX */
+ 1385, /* GL_POLYGON_MODE */
+ 1392, /* GL_POLYGON_SMOOTH */
+ 1394, /* GL_POLYGON_STIPPLE */
+ 517, /* GL_EDGE_FLAG */
+ 355, /* GL_CULL_FACE */
+ 356, /* GL_CULL_FACE_MODE */
+ 670, /* GL_FRONT_FACE */
+ 817, /* GL_LIGHTING */
+ 822, /* GL_LIGHT_MODEL_LOCAL_VIEWER */
+ 823, /* GL_LIGHT_MODEL_TWO_SIDE */
+ 819, /* GL_LIGHT_MODEL_AMBIENT */
+ 1757, /* GL_SHADE_MODEL */
+ 235, /* GL_COLOR_MATERIAL_FACE */
+ 236, /* GL_COLOR_MATERIAL_PARAMETER */
+ 234, /* GL_COLOR_MATERIAL */
+ 571, /* GL_FOG */
+ 593, /* GL_FOG_INDEX */
+ 589, /* GL_FOG_DENSITY */
+ 597, /* GL_FOG_START */
+ 591, /* GL_FOG_END */
+ 594, /* GL_FOG_MODE */
+ 573, /* GL_FOG_COLOR */
+ 428, /* GL_DEPTH_RANGE */
+ 437, /* GL_DEPTH_TEST */
+ 440, /* GL_DEPTH_WRITEMASK */
+ 413, /* GL_DEPTH_CLEAR_VALUE */
+ 427, /* GL_DEPTH_FUNC */
12, /* GL_ACCUM_CLEAR_VALUE */
- 1853, /* GL_STENCIL_TEST */
- 1834, /* GL_STENCIL_CLEAR_VALUE */
- 1836, /* GL_STENCIL_FUNC */
- 1855, /* GL_STENCIL_VALUE_MASK */
- 1835, /* GL_STENCIL_FAIL */
- 1850, /* GL_STENCIL_PASS_DEPTH_FAIL */
- 1851, /* GL_STENCIL_PASS_DEPTH_PASS */
- 1852, /* GL_STENCIL_REF */
- 1856, /* GL_STENCIL_WRITEMASK */
- 1006, /* GL_MATRIX_MODE */
- 1222, /* GL_NORMALIZE */
- 2267, /* GL_VIEWPORT */
- 1195, /* GL_MODELVIEW_STACK_DEPTH */
- 1481, /* GL_PROJECTION_STACK_DEPTH */
- 2089, /* GL_TEXTURE_STACK_DEPTH */
- 1192, /* GL_MODELVIEW_MATRIX */
- 1479, /* GL_PROJECTION_MATRIX */
- 2069, /* GL_TEXTURE_MATRIX */
+ 1860, /* GL_STENCIL_TEST */
+ 1841, /* GL_STENCIL_CLEAR_VALUE */
+ 1843, /* GL_STENCIL_FUNC */
+ 1862, /* GL_STENCIL_VALUE_MASK */
+ 1842, /* GL_STENCIL_FAIL */
+ 1857, /* GL_STENCIL_PASS_DEPTH_FAIL */
+ 1858, /* GL_STENCIL_PASS_DEPTH_PASS */
+ 1859, /* GL_STENCIL_REF */
+ 1863, /* GL_STENCIL_WRITEMASK */
+ 1010, /* GL_MATRIX_MODE */
+ 1227, /* GL_NORMALIZE */
+ 2278, /* GL_VIEWPORT */
+ 1200, /* GL_MODELVIEW_STACK_DEPTH */
+ 1486, /* GL_PROJECTION_STACK_DEPTH */
+ 2100, /* GL_TEXTURE_STACK_DEPTH */
+ 1197, /* GL_MODELVIEW_MATRIX */
+ 1484, /* GL_PROJECTION_MATRIX */
+ 2080, /* GL_TEXTURE_MATRIX */
69, /* GL_ATTRIB_STACK_DEPTH */
- 166, /* GL_CLIENT_ATTRIB_STACK_DEPTH */
+ 169, /* GL_CLIENT_ATTRIB_STACK_DEPTH */
51, /* GL_ALPHA_TEST */
52, /* GL_ALPHA_TEST_FUNC */
53, /* GL_ALPHA_TEST_REF */
- 439, /* GL_DITHER */
+ 442, /* GL_DITHER */
91, /* GL_BLEND_DST */
105, /* GL_BLEND_SRC */
88, /* GL_BLEND */
- 852, /* GL_LOGIC_OP_MODE */
- 739, /* GL_INDEX_LOGIC_OP */
- 230, /* GL_COLOR_LOGIC_OP */
+ 856, /* GL_LOGIC_OP_MODE */
+ 743, /* GL_INDEX_LOGIC_OP */
+ 233, /* GL_COLOR_LOGIC_OP */
75, /* GL_AUX_BUFFERS */
- 450, /* GL_DRAW_BUFFER */
- 1534, /* GL_READ_BUFFER */
- 1727, /* GL_SCISSOR_BOX */
- 1728, /* GL_SCISSOR_TEST */
- 738, /* GL_INDEX_CLEAR_VALUE */
- 743, /* GL_INDEX_WRITEMASK */
- 227, /* GL_COLOR_CLEAR_VALUE */
- 269, /* GL_COLOR_WRITEMASK */
- 740, /* GL_INDEX_MODE */
- 1674, /* GL_RGBA_MODE */
- 449, /* GL_DOUBLEBUFFER */
- 1857, /* GL_STEREO */
- 1588, /* GL_RENDER_MODE */
- 1312, /* GL_PERSPECTIVE_CORRECTION_HINT */
- 1370, /* GL_POINT_SMOOTH_HINT */
- 834, /* GL_LINE_SMOOTH_HINT */
- 1388, /* GL_POLYGON_SMOOTH_HINT */
- 588, /* GL_FOG_HINT */
- 2049, /* GL_TEXTURE_GEN_S */
- 2051, /* GL_TEXTURE_GEN_T */
- 2048, /* GL_TEXTURE_GEN_R */
- 2047, /* GL_TEXTURE_GEN_Q */
- 1325, /* GL_PIXEL_MAP_I_TO_I */
- 1331, /* GL_PIXEL_MAP_S_TO_S */
- 1327, /* GL_PIXEL_MAP_I_TO_R */
- 1323, /* GL_PIXEL_MAP_I_TO_G */
- 1321, /* GL_PIXEL_MAP_I_TO_B */
- 1319, /* GL_PIXEL_MAP_I_TO_A */
- 1329, /* GL_PIXEL_MAP_R_TO_R */
- 1317, /* GL_PIXEL_MAP_G_TO_G */
- 1315, /* GL_PIXEL_MAP_B_TO_B */
- 1313, /* GL_PIXEL_MAP_A_TO_A */
- 1326, /* GL_PIXEL_MAP_I_TO_I_SIZE */
- 1332, /* GL_PIXEL_MAP_S_TO_S_SIZE */
- 1328, /* GL_PIXEL_MAP_I_TO_R_SIZE */
- 1324, /* GL_PIXEL_MAP_I_TO_G_SIZE */
- 1322, /* GL_PIXEL_MAP_I_TO_B_SIZE */
- 1320, /* GL_PIXEL_MAP_I_TO_A_SIZE */
- 1330, /* GL_PIXEL_MAP_R_TO_R_SIZE */
- 1318, /* GL_PIXEL_MAP_G_TO_G_SIZE */
- 1316, /* GL_PIXEL_MAP_B_TO_B_SIZE */
- 1314, /* GL_PIXEL_MAP_A_TO_A_SIZE */
- 2152, /* GL_UNPACK_SWAP_BYTES */
- 2147, /* GL_UNPACK_LSB_FIRST */
- 2148, /* GL_UNPACK_ROW_LENGTH */
- 2151, /* GL_UNPACK_SKIP_ROWS */
- 2150, /* GL_UNPACK_SKIP_PIXELS */
- 2145, /* GL_UNPACK_ALIGNMENT */
- 1300, /* GL_PACK_SWAP_BYTES */
- 1295, /* GL_PACK_LSB_FIRST */
- 1296, /* GL_PACK_ROW_LENGTH */
- 1299, /* GL_PACK_SKIP_ROWS */
- 1298, /* GL_PACK_SKIP_PIXELS */
- 1292, /* GL_PACK_ALIGNMENT */
- 947, /* GL_MAP_COLOR */
- 952, /* GL_MAP_STENCIL */
- 742, /* GL_INDEX_SHIFT */
- 741, /* GL_INDEX_OFFSET */
- 1550, /* GL_RED_SCALE */
- 1546, /* GL_RED_BIAS */
- 2293, /* GL_ZOOM_X */
- 2294, /* GL_ZOOM_Y */
- 697, /* GL_GREEN_SCALE */
- 693, /* GL_GREEN_BIAS */
+ 453, /* GL_DRAW_BUFFER */
+ 1539, /* GL_READ_BUFFER */
+ 1734, /* GL_SCISSOR_BOX */
+ 1735, /* GL_SCISSOR_TEST */
+ 742, /* GL_INDEX_CLEAR_VALUE */
+ 747, /* GL_INDEX_WRITEMASK */
+ 230, /* GL_COLOR_CLEAR_VALUE */
+ 272, /* GL_COLOR_WRITEMASK */
+ 744, /* GL_INDEX_MODE */
+ 1680, /* GL_RGBA_MODE */
+ 452, /* GL_DOUBLEBUFFER */
+ 1864, /* GL_STEREO */
+ 1593, /* GL_RENDER_MODE */
+ 1317, /* GL_PERSPECTIVE_CORRECTION_HINT */
+ 1375, /* GL_POINT_SMOOTH_HINT */
+ 838, /* GL_LINE_SMOOTH_HINT */
+ 1393, /* GL_POLYGON_SMOOTH_HINT */
+ 592, /* GL_FOG_HINT */
+ 2060, /* GL_TEXTURE_GEN_S */
+ 2062, /* GL_TEXTURE_GEN_T */
+ 2059, /* GL_TEXTURE_GEN_R */
+ 2058, /* GL_TEXTURE_GEN_Q */
+ 1330, /* GL_PIXEL_MAP_I_TO_I */
+ 1336, /* GL_PIXEL_MAP_S_TO_S */
+ 1332, /* GL_PIXEL_MAP_I_TO_R */
+ 1328, /* GL_PIXEL_MAP_I_TO_G */
+ 1326, /* GL_PIXEL_MAP_I_TO_B */
+ 1324, /* GL_PIXEL_MAP_I_TO_A */
+ 1334, /* GL_PIXEL_MAP_R_TO_R */
+ 1322, /* GL_PIXEL_MAP_G_TO_G */
+ 1320, /* GL_PIXEL_MAP_B_TO_B */
+ 1318, /* GL_PIXEL_MAP_A_TO_A */
+ 1331, /* GL_PIXEL_MAP_I_TO_I_SIZE */
+ 1337, /* GL_PIXEL_MAP_S_TO_S_SIZE */
+ 1333, /* GL_PIXEL_MAP_I_TO_R_SIZE */
+ 1329, /* GL_PIXEL_MAP_I_TO_G_SIZE */
+ 1327, /* GL_PIXEL_MAP_I_TO_B_SIZE */
+ 1325, /* GL_PIXEL_MAP_I_TO_A_SIZE */
+ 1335, /* GL_PIXEL_MAP_R_TO_R_SIZE */
+ 1323, /* GL_PIXEL_MAP_G_TO_G_SIZE */
+ 1321, /* GL_PIXEL_MAP_B_TO_B_SIZE */
+ 1319, /* GL_PIXEL_MAP_A_TO_A_SIZE */
+ 2163, /* GL_UNPACK_SWAP_BYTES */
+ 2158, /* GL_UNPACK_LSB_FIRST */
+ 2159, /* GL_UNPACK_ROW_LENGTH */
+ 2162, /* GL_UNPACK_SKIP_ROWS */
+ 2161, /* GL_UNPACK_SKIP_PIXELS */
+ 2156, /* GL_UNPACK_ALIGNMENT */
+ 1305, /* GL_PACK_SWAP_BYTES */
+ 1300, /* GL_PACK_LSB_FIRST */
+ 1301, /* GL_PACK_ROW_LENGTH */
+ 1304, /* GL_PACK_SKIP_ROWS */
+ 1303, /* GL_PACK_SKIP_PIXELS */
+ 1297, /* GL_PACK_ALIGNMENT */
+ 951, /* GL_MAP_COLOR */
+ 956, /* GL_MAP_STENCIL */
+ 746, /* GL_INDEX_SHIFT */
+ 745, /* GL_INDEX_OFFSET */
+ 1555, /* GL_RED_SCALE */
+ 1551, /* GL_RED_BIAS */
+ 2304, /* GL_ZOOM_X */
+ 2305, /* GL_ZOOM_Y */
+ 701, /* GL_GREEN_SCALE */
+ 697, /* GL_GREEN_BIAS */
115, /* GL_BLUE_SCALE */
111, /* GL_BLUE_BIAS */
50, /* GL_ALPHA_SCALE */
47, /* GL_ALPHA_BIAS */
- 426, /* GL_DEPTH_SCALE */
- 402, /* GL_DEPTH_BIAS */
- 1038, /* GL_MAX_EVAL_ORDER */
- 1055, /* GL_MAX_LIGHTS */
- 1018, /* GL_MAX_CLIP_DISTANCES */
- 1110, /* GL_MAX_TEXTURE_SIZE */
- 1062, /* GL_MAX_PIXEL_MAP_TABLE */
- 1014, /* GL_MAX_ATTRIB_STACK_DEPTH */
- 1058, /* GL_MAX_MODELVIEW_STACK_DEPTH */
- 1059, /* GL_MAX_NAME_STACK_DEPTH */
- 1090, /* GL_MAX_PROJECTION_STACK_DEPTH */
- 1111, /* GL_MAX_TEXTURE_STACK_DEPTH */
- 1137, /* GL_MAX_VIEWPORT_DIMS */
- 1015, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */
- 1867, /* GL_SUBPIXEL_BITS */
- 737, /* GL_INDEX_BITS */
- 1547, /* GL_RED_BITS */
- 694, /* GL_GREEN_BITS */
+ 429, /* GL_DEPTH_SCALE */
+ 405, /* GL_DEPTH_BIAS */
+ 1042, /* GL_MAX_EVAL_ORDER */
+ 1059, /* GL_MAX_LIGHTS */
+ 1022, /* GL_MAX_CLIP_DISTANCES */
+ 1115, /* GL_MAX_TEXTURE_SIZE */
+ 1066, /* GL_MAX_PIXEL_MAP_TABLE */
+ 1018, /* GL_MAX_ATTRIB_STACK_DEPTH */
+ 1062, /* GL_MAX_MODELVIEW_STACK_DEPTH */
+ 1063, /* GL_MAX_NAME_STACK_DEPTH */
+ 1094, /* GL_MAX_PROJECTION_STACK_DEPTH */
+ 1116, /* GL_MAX_TEXTURE_STACK_DEPTH */
+ 1142, /* GL_MAX_VIEWPORT_DIMS */
+ 1019, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */
+ 1874, /* GL_SUBPIXEL_BITS */
+ 741, /* GL_INDEX_BITS */
+ 1552, /* GL_RED_BITS */
+ 698, /* GL_GREEN_BITS */
112, /* GL_BLUE_BITS */
48, /* GL_ALPHA_BITS */
- 403, /* GL_DEPTH_BITS */
- 1831, /* GL_STENCIL_BITS */
+ 406, /* GL_DEPTH_BITS */
+ 1838, /* GL_STENCIL_BITS */
14, /* GL_ACCUM_RED_BITS */
13, /* GL_ACCUM_GREEN_BITS */
10, /* GL_ACCUM_BLUE_BITS */
9, /* GL_ACCUM_ALPHA_BITS */
- 1209, /* GL_NAME_STACK_DEPTH */
+ 1214, /* GL_NAME_STACK_DEPTH */
70, /* GL_AUTO_NORMAL */
- 893, /* GL_MAP1_COLOR_4 */
- 896, /* GL_MAP1_INDEX */
- 897, /* GL_MAP1_NORMAL */
- 898, /* GL_MAP1_TEXTURE_COORD_1 */
- 899, /* GL_MAP1_TEXTURE_COORD_2 */
- 900, /* GL_MAP1_TEXTURE_COORD_3 */
- 901, /* GL_MAP1_TEXTURE_COORD_4 */
- 902, /* GL_MAP1_VERTEX_3 */
- 903, /* GL_MAP1_VERTEX_4 */
- 920, /* GL_MAP2_COLOR_4 */
- 923, /* GL_MAP2_INDEX */
- 924, /* GL_MAP2_NORMAL */
- 925, /* GL_MAP2_TEXTURE_COORD_1 */
- 926, /* GL_MAP2_TEXTURE_COORD_2 */
- 927, /* GL_MAP2_TEXTURE_COORD_3 */
- 928, /* GL_MAP2_TEXTURE_COORD_4 */
- 929, /* GL_MAP2_VERTEX_3 */
- 930, /* GL_MAP2_VERTEX_4 */
- 894, /* GL_MAP1_GRID_DOMAIN */
- 895, /* GL_MAP1_GRID_SEGMENTS */
- 921, /* GL_MAP2_GRID_DOMAIN */
- 922, /* GL_MAP2_GRID_SEGMENTS */
- 1950, /* GL_TEXTURE_1D */
- 1953, /* GL_TEXTURE_2D */
- 538, /* GL_FEEDBACK_BUFFER_POINTER */
- 539, /* GL_FEEDBACK_BUFFER_SIZE */
- 540, /* GL_FEEDBACK_BUFFER_TYPE */
- 1737, /* GL_SELECTION_BUFFER_POINTER */
- 1738, /* GL_SELECTION_BUFFER_SIZE */
- 2095, /* GL_TEXTURE_WIDTH */
- 2055, /* GL_TEXTURE_HEIGHT */
- 1999, /* GL_TEXTURE_COMPONENTS */
- 1980, /* GL_TEXTURE_BORDER_COLOR */
- 1979, /* GL_TEXTURE_BORDER */
- 441, /* GL_DONT_CARE */
- 536, /* GL_FASTEST */
- 1217, /* GL_NICEST */
+ 897, /* GL_MAP1_COLOR_4 */
+ 900, /* GL_MAP1_INDEX */
+ 901, /* GL_MAP1_NORMAL */
+ 902, /* GL_MAP1_TEXTURE_COORD_1 */
+ 903, /* GL_MAP1_TEXTURE_COORD_2 */
+ 904, /* GL_MAP1_TEXTURE_COORD_3 */
+ 905, /* GL_MAP1_TEXTURE_COORD_4 */
+ 906, /* GL_MAP1_VERTEX_3 */
+ 907, /* GL_MAP1_VERTEX_4 */
+ 924, /* GL_MAP2_COLOR_4 */
+ 927, /* GL_MAP2_INDEX */
+ 928, /* GL_MAP2_NORMAL */
+ 929, /* GL_MAP2_TEXTURE_COORD_1 */
+ 930, /* GL_MAP2_TEXTURE_COORD_2 */
+ 931, /* GL_MAP2_TEXTURE_COORD_3 */
+ 932, /* GL_MAP2_TEXTURE_COORD_4 */
+ 933, /* GL_MAP2_VERTEX_3 */
+ 934, /* GL_MAP2_VERTEX_4 */
+ 898, /* GL_MAP1_GRID_DOMAIN */
+ 899, /* GL_MAP1_GRID_SEGMENTS */
+ 925, /* GL_MAP2_GRID_DOMAIN */
+ 926, /* GL_MAP2_GRID_SEGMENTS */
+ 1957, /* GL_TEXTURE_1D */
+ 1960, /* GL_TEXTURE_2D */
+ 541, /* GL_FEEDBACK_BUFFER_POINTER */
+ 542, /* GL_FEEDBACK_BUFFER_SIZE */
+ 543, /* GL_FEEDBACK_BUFFER_TYPE */
+ 1744, /* GL_SELECTION_BUFFER_POINTER */
+ 1745, /* GL_SELECTION_BUFFER_SIZE */
+ 2106, /* GL_TEXTURE_WIDTH */
+ 2066, /* GL_TEXTURE_HEIGHT */
+ 2010, /* GL_TEXTURE_COMPONENTS */
+ 1988, /* GL_TEXTURE_BORDER_COLOR */
+ 1987, /* GL_TEXTURE_BORDER */
+ 444, /* GL_DONT_CARE */
+ 539, /* GL_FASTEST */
+ 1222, /* GL_NICEST */
56, /* GL_AMBIENT */
- 438, /* GL_DIFFUSE */
- 1790, /* GL_SPECULAR */
- 1392, /* GL_POSITION */
- 1793, /* GL_SPOT_DIRECTION */
- 1794, /* GL_SPOT_EXPONENT */
- 1792, /* GL_SPOT_CUTOFF */
- 317, /* GL_CONSTANT_ATTENUATION */
- 822, /* GL_LINEAR_ATTENUATION */
- 1506, /* GL_QUADRATIC_ATTENUATION */
- 284, /* GL_COMPILE */
- 285, /* GL_COMPILE_AND_EXECUTE */
+ 441, /* GL_DIFFUSE */
+ 1797, /* GL_SPECULAR */
+ 1397, /* GL_POSITION */
+ 1800, /* GL_SPOT_DIRECTION */
+ 1801, /* GL_SPOT_EXPONENT */
+ 1799, /* GL_SPOT_CUTOFF */
+ 320, /* GL_CONSTANT_ATTENUATION */
+ 826, /* GL_LINEAR_ATTENUATION */
+ 1511, /* GL_QUADRATIC_ATTENUATION */
+ 287, /* GL_COMPILE */
+ 288, /* GL_COMPILE_AND_EXECUTE */
149, /* GL_BYTE */
- 2154, /* GL_UNSIGNED_BYTE */
- 1755, /* GL_SHORT */
- 2193, /* GL_UNSIGNED_SHORT */
- 745, /* GL_INT */
- 2157, /* GL_UNSIGNED_INT */
- 548, /* GL_FLOAT */
+ 2165, /* GL_UNSIGNED_BYTE */
+ 1762, /* GL_SHORT */
+ 2204, /* GL_UNSIGNED_SHORT */
+ 749, /* GL_INT */
+ 2168, /* GL_UNSIGNED_INT */
+ 552, /* GL_FLOAT */
1, /* GL_2_BYTES */
5, /* GL_3_BYTES */
7, /* GL_4_BYTES */
- 448, /* GL_DOUBLE */
- 698, /* GL_HALF_FLOAT */
- 544, /* GL_FIXED */
- 162, /* GL_CLEAR */
+ 451, /* GL_DOUBLE */
+ 702, /* GL_HALF_FLOAT */
+ 547, /* GL_FIXED */
+ 165, /* GL_CLEAR */
58, /* GL_AND */
60, /* GL_AND_REVERSE */
- 347, /* GL_COPY */
+ 350, /* GL_COPY */
59, /* GL_AND_INVERTED */
- 1220, /* GL_NOOP */
- 2289, /* GL_XOR */
- 1287, /* GL_OR */
- 1221, /* GL_NOR */
- 526, /* GL_EQUIV */
- 798, /* GL_INVERT */
- 1290, /* GL_OR_REVERSE */
- 348, /* GL_COPY_INVERTED */
- 1289, /* GL_OR_INVERTED */
- 1210, /* GL_NAND */
- 1744, /* GL_SET */
- 523, /* GL_EMISSION */
- 1754, /* GL_SHININESS */
+ 1225, /* GL_NOOP */
+ 2300, /* GL_XOR */
+ 1292, /* GL_OR */
+ 1226, /* GL_NOR */
+ 529, /* GL_EQUIV */
+ 802, /* GL_INVERT */
+ 1295, /* GL_OR_REVERSE */
+ 351, /* GL_COPY_INVERTED */
+ 1294, /* GL_OR_INVERTED */
+ 1215, /* GL_NAND */
+ 1751, /* GL_SET */
+ 526, /* GL_EMISSION */
+ 1761, /* GL_SHININESS */
57, /* GL_AMBIENT_AND_DIFFUSE */
- 229, /* GL_COLOR_INDEXES */
- 1159, /* GL_MODELVIEW */
- 1478, /* GL_PROJECTION */
- 1885, /* GL_TEXTURE */
- 185, /* GL_COLOR */
- 395, /* GL_DEPTH */
- 1816, /* GL_STENCIL */
- 228, /* GL_COLOR_INDEX */
- 1837, /* GL_STENCIL_INDEX */
- 411, /* GL_DEPTH_COMPONENT */
- 1543, /* GL_RED */
- 692, /* GL_GREEN */
+ 232, /* GL_COLOR_INDEXES */
+ 1164, /* GL_MODELVIEW */
+ 1483, /* GL_PROJECTION */
+ 1892, /* GL_TEXTURE */
+ 188, /* GL_COLOR */
+ 398, /* GL_DEPTH */
+ 1823, /* GL_STENCIL */
+ 231, /* GL_COLOR_INDEX */
+ 1844, /* GL_STENCIL_INDEX */
+ 414, /* GL_DEPTH_COMPONENT */
+ 1548, /* GL_RED */
+ 696, /* GL_GREEN */
110, /* GL_BLUE */
32, /* GL_ALPHA */
- 1599, /* GL_RGB */
- 1639, /* GL_RGBA */
- 856, /* GL_LUMINANCE */
- 883, /* GL_LUMINANCE_ALPHA */
+ 1604, /* GL_RGB */
+ 1644, /* GL_RGBA */
+ 860, /* GL_LUMINANCE */
+ 887, /* GL_LUMINANCE_ALPHA */
86, /* GL_BITMAP */
- 1342, /* GL_POINT */
- 820, /* GL_LINE */
- 541, /* GL_FILL */
- 1557, /* GL_RENDER */
- 537, /* GL_FEEDBACK */
- 1736, /* GL_SELECT */
- 547, /* GL_FLAT */
- 1765, /* GL_SMOOTH */
- 799, /* GL_KEEP */
- 1590, /* GL_REPLACE */
- 727, /* GL_INCR */
- 391, /* GL_DECR */
- 2210, /* GL_VENDOR */
- 1587, /* GL_RENDERER */
- 2211, /* GL_VERSION */
- 530, /* GL_EXTENSIONS */
- 1686, /* GL_S */
- 1876, /* GL_T */
- 1526, /* GL_R */
- 1505, /* GL_Q */
- 1196, /* GL_MODULATE */
- 390, /* GL_DECAL */
- 2042, /* GL_TEXTURE_ENV_MODE */
- 2041, /* GL_TEXTURE_ENV_COLOR */
- 2040, /* GL_TEXTURE_ENV */
- 531, /* GL_EYE_LINEAR */
- 1248, /* GL_OBJECT_LINEAR */
- 1791, /* GL_SPHERE_MAP */
- 2045, /* GL_TEXTURE_GEN_MODE */
- 1250, /* GL_OBJECT_PLANE */
- 532, /* GL_EYE_PLANE */
- 1211, /* GL_NEAREST */
- 821, /* GL_LINEAR */
- 1215, /* GL_NEAREST_MIPMAP_NEAREST */
- 826, /* GL_LINEAR_MIPMAP_NEAREST */
- 1214, /* GL_NEAREST_MIPMAP_LINEAR */
- 825, /* GL_LINEAR_MIPMAP_LINEAR */
- 2068, /* GL_TEXTURE_MAG_FILTER */
- 2077, /* GL_TEXTURE_MIN_FILTER */
- 2098, /* GL_TEXTURE_WRAP_S */
- 2099, /* GL_TEXTURE_WRAP_T */
+ 1347, /* GL_POINT */
+ 824, /* GL_LINE */
+ 544, /* GL_FILL */
+ 1562, /* GL_RENDER */
+ 540, /* GL_FEEDBACK */
+ 1743, /* GL_SELECT */
+ 551, /* GL_FLAT */
+ 1772, /* GL_SMOOTH */
+ 803, /* GL_KEEP */
+ 1595, /* GL_REPLACE */
+ 731, /* GL_INCR */
+ 394, /* GL_DECR */
+ 2221, /* GL_VENDOR */
+ 1592, /* GL_RENDERER */
+ 2222, /* GL_VERSION */
+ 533, /* GL_EXTENSIONS */
+ 1692, /* GL_S */
+ 1883, /* GL_T */
+ 1531, /* GL_R */
+ 1510, /* GL_Q */
+ 1201, /* GL_MODULATE */
+ 393, /* GL_DECAL */
+ 2053, /* GL_TEXTURE_ENV_MODE */
+ 2052, /* GL_TEXTURE_ENV_COLOR */
+ 2051, /* GL_TEXTURE_ENV */
+ 534, /* GL_EYE_LINEAR */
+ 1253, /* GL_OBJECT_LINEAR */
+ 1798, /* GL_SPHERE_MAP */
+ 2056, /* GL_TEXTURE_GEN_MODE */
+ 1255, /* GL_OBJECT_PLANE */
+ 535, /* GL_EYE_PLANE */
+ 1216, /* GL_NEAREST */
+ 825, /* GL_LINEAR */
+ 1220, /* GL_NEAREST_MIPMAP_NEAREST */
+ 830, /* GL_LINEAR_MIPMAP_NEAREST */
+ 1219, /* GL_NEAREST_MIPMAP_LINEAR */
+ 829, /* GL_LINEAR_MIPMAP_LINEAR */
+ 2079, /* GL_TEXTURE_MAG_FILTER */
+ 2088, /* GL_TEXTURE_MIN_FILTER */
+ 2109, /* GL_TEXTURE_WRAP_S */
+ 2110, /* GL_TEXTURE_WRAP_T */
155, /* GL_CLAMP */
- 1589, /* GL_REPEAT */
- 1386, /* GL_POLYGON_OFFSET_UNITS */
- 1385, /* GL_POLYGON_OFFSET_POINT */
- 1384, /* GL_POLYGON_OFFSET_LINE */
- 1529, /* GL_R3_G3_B2 */
- 2207, /* GL_V2F */
- 2208, /* GL_V3F */
+ 1594, /* GL_REPEAT */
+ 1391, /* GL_POLYGON_OFFSET_UNITS */
+ 1390, /* GL_POLYGON_OFFSET_POINT */
+ 1389, /* GL_POLYGON_OFFSET_LINE */
+ 1534, /* GL_R3_G3_B2 */
+ 2218, /* GL_V2F */
+ 2219, /* GL_V3F */
152, /* GL_C4UB_V2F */
153, /* GL_C4UB_V3F */
150, /* GL_C3F_V3F */
- 1208, /* GL_N3F_V3F */
+ 1213, /* GL_N3F_V3F */
151, /* GL_C4F_N3F_V3F */
- 1881, /* GL_T2F_V3F */
- 1883, /* GL_T4F_V4F */
- 1879, /* GL_T2F_C4UB_V3F */
- 1877, /* GL_T2F_C3F_V3F */
- 1880, /* GL_T2F_N3F_V3F */
- 1878, /* GL_T2F_C4F_N3F_V3F */
- 1882, /* GL_T4F_C4F_N3F_V4F */
- 169, /* GL_CLIP_DISTANCE0 */
- 170, /* GL_CLIP_DISTANCE1 */
- 171, /* GL_CLIP_DISTANCE2 */
- 172, /* GL_CLIP_DISTANCE3 */
- 173, /* GL_CLIP_DISTANCE4 */
- 174, /* GL_CLIP_DISTANCE5 */
- 175, /* GL_CLIP_DISTANCE6 */
- 176, /* GL_CLIP_DISTANCE7 */
- 805, /* GL_LIGHT0 */
- 806, /* GL_LIGHT1 */
- 807, /* GL_LIGHT2 */
- 808, /* GL_LIGHT3 */
- 809, /* GL_LIGHT4 */
- 810, /* GL_LIGHT5 */
- 811, /* GL_LIGHT6 */
- 812, /* GL_LIGHT7 */
- 702, /* GL_HINT_BIT */
- 319, /* GL_CONSTANT_COLOR */
- 1261, /* GL_ONE_MINUS_CONSTANT_COLOR */
- 314, /* GL_CONSTANT_ALPHA */
- 1259, /* GL_ONE_MINUS_CONSTANT_ALPHA */
+ 1888, /* GL_T2F_V3F */
+ 1890, /* GL_T4F_V4F */
+ 1886, /* GL_T2F_C4UB_V3F */
+ 1884, /* GL_T2F_C3F_V3F */
+ 1887, /* GL_T2F_N3F_V3F */
+ 1885, /* GL_T2F_C4F_N3F_V3F */
+ 1889, /* GL_T4F_C4F_N3F_V4F */
+ 172, /* GL_CLIP_DISTANCE0 */
+ 173, /* GL_CLIP_DISTANCE1 */
+ 174, /* GL_CLIP_DISTANCE2 */
+ 175, /* GL_CLIP_DISTANCE3 */
+ 176, /* GL_CLIP_DISTANCE4 */
+ 177, /* GL_CLIP_DISTANCE5 */
+ 178, /* GL_CLIP_DISTANCE6 */
+ 179, /* GL_CLIP_DISTANCE7 */
+ 809, /* GL_LIGHT0 */
+ 810, /* GL_LIGHT1 */
+ 811, /* GL_LIGHT2 */
+ 812, /* GL_LIGHT3 */
+ 813, /* GL_LIGHT4 */
+ 814, /* GL_LIGHT5 */
+ 815, /* GL_LIGHT6 */
+ 816, /* GL_LIGHT7 */
+ 706, /* GL_HINT_BIT */
+ 322, /* GL_CONSTANT_COLOR */
+ 1266, /* GL_ONE_MINUS_CONSTANT_COLOR */
+ 317, /* GL_CONSTANT_ALPHA */
+ 1264, /* GL_ONE_MINUS_CONSTANT_ALPHA */
89, /* GL_BLEND_COLOR */
- 669, /* GL_FUNC_ADD */
- 1140, /* GL_MIN */
- 1009, /* GL_MAX */
+ 673, /* GL_FUNC_ADD */
+ 1145, /* GL_MIN */
+ 1013, /* GL_MAX */
96, /* GL_BLEND_EQUATION */
- 675, /* GL_FUNC_SUBTRACT */
- 672, /* GL_FUNC_REVERSE_SUBTRACT */
- 327, /* GL_CONVOLUTION_1D */
- 328, /* GL_CONVOLUTION_2D */
- 1739, /* GL_SEPARABLE_2D */
- 331, /* GL_CONVOLUTION_BORDER_MODE */
- 335, /* GL_CONVOLUTION_FILTER_SCALE */
- 333, /* GL_CONVOLUTION_FILTER_BIAS */
- 1544, /* GL_REDUCE */
- 337, /* GL_CONVOLUTION_FORMAT */
- 341, /* GL_CONVOLUTION_WIDTH */
- 339, /* GL_CONVOLUTION_HEIGHT */
- 1028, /* GL_MAX_CONVOLUTION_WIDTH */
- 1026, /* GL_MAX_CONVOLUTION_HEIGHT */
- 1425, /* GL_POST_CONVOLUTION_RED_SCALE */
- 1421, /* GL_POST_CONVOLUTION_GREEN_SCALE */
- 1416, /* GL_POST_CONVOLUTION_BLUE_SCALE */
- 1412, /* GL_POST_CONVOLUTION_ALPHA_SCALE */
- 1423, /* GL_POST_CONVOLUTION_RED_BIAS */
- 1419, /* GL_POST_CONVOLUTION_GREEN_BIAS */
- 1414, /* GL_POST_CONVOLUTION_BLUE_BIAS */
- 1410, /* GL_POST_CONVOLUTION_ALPHA_BIAS */
- 703, /* GL_HISTOGRAM */
- 1485, /* GL_PROXY_HISTOGRAM */
- 719, /* GL_HISTOGRAM_WIDTH */
- 709, /* GL_HISTOGRAM_FORMAT */
- 715, /* GL_HISTOGRAM_RED_SIZE */
- 711, /* GL_HISTOGRAM_GREEN_SIZE */
- 706, /* GL_HISTOGRAM_BLUE_SIZE */
- 704, /* GL_HISTOGRAM_ALPHA_SIZE */
- 713, /* GL_HISTOGRAM_LUMINANCE_SIZE */
- 717, /* GL_HISTOGRAM_SINK */
- 1141, /* GL_MINMAX */
- 1143, /* GL_MINMAX_FORMAT */
- 1145, /* GL_MINMAX_SINK */
- 1884, /* GL_TABLE_TOO_LARGE_EXT */
- 2156, /* GL_UNSIGNED_BYTE_3_3_2 */
- 2196, /* GL_UNSIGNED_SHORT_4_4_4_4 */
- 2199, /* GL_UNSIGNED_SHORT_5_5_5_1 */
- 2168, /* GL_UNSIGNED_INT_8_8_8_8 */
- 2159, /* GL_UNSIGNED_INT_10_10_10_2 */
- 1383, /* GL_POLYGON_OFFSET_FILL */
- 1382, /* GL_POLYGON_OFFSET_FACTOR */
- 1381, /* GL_POLYGON_OFFSET_BIAS */
- 1593, /* GL_RESCALE_NORMAL */
+ 679, /* GL_FUNC_SUBTRACT */
+ 676, /* GL_FUNC_REVERSE_SUBTRACT */
+ 330, /* GL_CONVOLUTION_1D */
+ 331, /* GL_CONVOLUTION_2D */
+ 1746, /* GL_SEPARABLE_2D */
+ 334, /* GL_CONVOLUTION_BORDER_MODE */
+ 338, /* GL_CONVOLUTION_FILTER_SCALE */
+ 336, /* GL_CONVOLUTION_FILTER_BIAS */
+ 1549, /* GL_REDUCE */
+ 340, /* GL_CONVOLUTION_FORMAT */
+ 344, /* GL_CONVOLUTION_WIDTH */
+ 342, /* GL_CONVOLUTION_HEIGHT */
+ 1032, /* GL_MAX_CONVOLUTION_WIDTH */
+ 1030, /* GL_MAX_CONVOLUTION_HEIGHT */
+ 1430, /* GL_POST_CONVOLUTION_RED_SCALE */
+ 1426, /* GL_POST_CONVOLUTION_GREEN_SCALE */
+ 1421, /* GL_POST_CONVOLUTION_BLUE_SCALE */
+ 1417, /* GL_POST_CONVOLUTION_ALPHA_SCALE */
+ 1428, /* GL_POST_CONVOLUTION_RED_BIAS */
+ 1424, /* GL_POST_CONVOLUTION_GREEN_BIAS */
+ 1419, /* GL_POST_CONVOLUTION_BLUE_BIAS */
+ 1415, /* GL_POST_CONVOLUTION_ALPHA_BIAS */
+ 707, /* GL_HISTOGRAM */
+ 1490, /* GL_PROXY_HISTOGRAM */
+ 723, /* GL_HISTOGRAM_WIDTH */
+ 713, /* GL_HISTOGRAM_FORMAT */
+ 719, /* GL_HISTOGRAM_RED_SIZE */
+ 715, /* GL_HISTOGRAM_GREEN_SIZE */
+ 710, /* GL_HISTOGRAM_BLUE_SIZE */
+ 708, /* GL_HISTOGRAM_ALPHA_SIZE */
+ 717, /* GL_HISTOGRAM_LUMINANCE_SIZE */
+ 721, /* GL_HISTOGRAM_SINK */
+ 1146, /* GL_MINMAX */
+ 1148, /* GL_MINMAX_FORMAT */
+ 1150, /* GL_MINMAX_SINK */
+ 1891, /* GL_TABLE_TOO_LARGE_EXT */
+ 2167, /* GL_UNSIGNED_BYTE_3_3_2 */
+ 2207, /* GL_UNSIGNED_SHORT_4_4_4_4 */
+ 2210, /* GL_UNSIGNED_SHORT_5_5_5_1 */
+ 2179, /* GL_UNSIGNED_INT_8_8_8_8 */
+ 2170, /* GL_UNSIGNED_INT_10_10_10_2 */
+ 1388, /* GL_POLYGON_OFFSET_FILL */
+ 1387, /* GL_POLYGON_OFFSET_FACTOR */
+ 1386, /* GL_POLYGON_OFFSET_BIAS */
+ 1598, /* GL_RESCALE_NORMAL */
41, /* GL_ALPHA4 */
43, /* GL_ALPHA8 */
33, /* GL_ALPHA12 */
35, /* GL_ALPHA16 */
- 871, /* GL_LUMINANCE4 */
- 877, /* GL_LUMINANCE8 */
- 857, /* GL_LUMINANCE12 */
- 863, /* GL_LUMINANCE16 */
- 872, /* GL_LUMINANCE4_ALPHA4 */
- 875, /* GL_LUMINANCE6_ALPHA2 */
- 880, /* GL_LUMINANCE8_ALPHA8 */
- 860, /* GL_LUMINANCE12_ALPHA4 */
- 858, /* GL_LUMINANCE12_ALPHA12 */
- 866, /* GL_LUMINANCE16_ALPHA16 */
- 746, /* GL_INTENSITY */
- 755, /* GL_INTENSITY4 */
- 757, /* GL_INTENSITY8 */
- 747, /* GL_INTENSITY12 */
- 749, /* GL_INTENSITY16 */
- 1614, /* GL_RGB2_EXT */
- 1620, /* GL_RGB4 */
- 1623, /* GL_RGB5 */
- 1630, /* GL_RGB8 */
- 1600, /* GL_RGB10 */
- 1604, /* GL_RGB12 */
- 1606, /* GL_RGB16 */
- 1650, /* GL_RGBA2 */
- 1657, /* GL_RGBA4 */
- 1626, /* GL_RGB5_A1 */
- 1662, /* GL_RGBA8 */
- 1601, /* GL_RGB10_A2 */
- 1640, /* GL_RGBA12 */
- 1642, /* GL_RGBA16 */
- 2085, /* GL_TEXTURE_RED_SIZE */
- 2053, /* GL_TEXTURE_GREEN_SIZE */
- 1977, /* GL_TEXTURE_BLUE_SIZE */
- 1958, /* GL_TEXTURE_ALPHA_SIZE */
- 2066, /* GL_TEXTURE_LUMINANCE_SIZE */
- 2057, /* GL_TEXTURE_INTENSITY_SIZE */
- 1591, /* GL_REPLACE_EXT */
- 1489, /* GL_PROXY_TEXTURE_1D */
- 1493, /* GL_PROXY_TEXTURE_2D */
- 2093, /* GL_TEXTURE_TOO_LARGE_EXT */
- 2079, /* GL_TEXTURE_PRIORITY */
- 2087, /* GL_TEXTURE_RESIDENT */
- 1961, /* GL_TEXTURE_BINDING_1D */
- 1964, /* GL_TEXTURE_BINDING_2D */
- 1967, /* GL_TEXTURE_BINDING_3D */
- 1297, /* GL_PACK_SKIP_IMAGES */
- 1293, /* GL_PACK_IMAGE_HEIGHT */
- 2149, /* GL_UNPACK_SKIP_IMAGES */
- 2146, /* GL_UNPACK_IMAGE_HEIGHT */
- 1956, /* GL_TEXTURE_3D */
- 1497, /* GL_PROXY_TEXTURE_3D */
- 2037, /* GL_TEXTURE_DEPTH */
- 2096, /* GL_TEXTURE_WRAP_R */
- 1010, /* GL_MAX_3D_TEXTURE_SIZE */
- 2212, /* GL_VERTEX_ARRAY */
- 1223, /* GL_NORMAL_ARRAY */
- 186, /* GL_COLOR_ARRAY */
- 731, /* GL_INDEX_ARRAY */
- 2007, /* GL_TEXTURE_COORD_ARRAY */
- 515, /* GL_EDGE_FLAG_ARRAY */
- 2218, /* GL_VERTEX_ARRAY_SIZE */
- 2220, /* GL_VERTEX_ARRAY_TYPE */
- 2219, /* GL_VERTEX_ARRAY_STRIDE */
- 1228, /* GL_NORMAL_ARRAY_TYPE */
- 1227, /* GL_NORMAL_ARRAY_STRIDE */
- 190, /* GL_COLOR_ARRAY_SIZE */
- 192, /* GL_COLOR_ARRAY_TYPE */
- 191, /* GL_COLOR_ARRAY_STRIDE */
- 736, /* GL_INDEX_ARRAY_TYPE */
- 735, /* GL_INDEX_ARRAY_STRIDE */
- 2011, /* GL_TEXTURE_COORD_ARRAY_SIZE */
- 2013, /* GL_TEXTURE_COORD_ARRAY_TYPE */
- 2012, /* GL_TEXTURE_COORD_ARRAY_STRIDE */
- 519, /* GL_EDGE_FLAG_ARRAY_STRIDE */
- 2217, /* GL_VERTEX_ARRAY_POINTER */
- 1226, /* GL_NORMAL_ARRAY_POINTER */
- 189, /* GL_COLOR_ARRAY_POINTER */
- 734, /* GL_INDEX_ARRAY_POINTER */
- 2010, /* GL_TEXTURE_COORD_ARRAY_POINTER */
- 518, /* GL_EDGE_FLAG_ARRAY_POINTER */
- 1201, /* GL_MULTISAMPLE */
- 1713, /* GL_SAMPLE_ALPHA_TO_COVERAGE */
- 1715, /* GL_SAMPLE_ALPHA_TO_ONE */
- 1720, /* GL_SAMPLE_COVERAGE */
- 1717, /* GL_SAMPLE_BUFFERS */
- 1708, /* GL_SAMPLES */
- 1724, /* GL_SAMPLE_COVERAGE_VALUE */
- 1722, /* GL_SAMPLE_COVERAGE_INVERT */
- 234, /* GL_COLOR_MATRIX */
- 236, /* GL_COLOR_MATRIX_STACK_DEPTH */
- 1022, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */
- 1408, /* GL_POST_COLOR_MATRIX_RED_SCALE */
- 1404, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */
- 1399, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */
- 1395, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */
- 1406, /* GL_POST_COLOR_MATRIX_RED_BIAS */
- 1402, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */
- 1397, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */
- 1393, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */
- 1990, /* GL_TEXTURE_COLOR_TABLE_SGI */
- 1498, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */
- 1992, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */
+ 875, /* GL_LUMINANCE4 */
+ 881, /* GL_LUMINANCE8 */
+ 861, /* GL_LUMINANCE12 */
+ 867, /* GL_LUMINANCE16 */
+ 876, /* GL_LUMINANCE4_ALPHA4 */
+ 879, /* GL_LUMINANCE6_ALPHA2 */
+ 884, /* GL_LUMINANCE8_ALPHA8 */
+ 864, /* GL_LUMINANCE12_ALPHA4 */
+ 862, /* GL_LUMINANCE12_ALPHA12 */
+ 870, /* GL_LUMINANCE16_ALPHA16 */
+ 750, /* GL_INTENSITY */
+ 759, /* GL_INTENSITY4 */
+ 761, /* GL_INTENSITY8 */
+ 751, /* GL_INTENSITY12 */
+ 753, /* GL_INTENSITY16 */
+ 1619, /* GL_RGB2_EXT */
+ 1625, /* GL_RGB4 */
+ 1628, /* GL_RGB5 */
+ 1635, /* GL_RGB8 */
+ 1605, /* GL_RGB10 */
+ 1609, /* GL_RGB12 */
+ 1611, /* GL_RGB16 */
+ 1655, /* GL_RGBA2 */
+ 1662, /* GL_RGBA4 */
+ 1631, /* GL_RGB5_A1 */
+ 1667, /* GL_RGBA8 */
+ 1606, /* GL_RGB10_A2 */
+ 1645, /* GL_RGBA12 */
+ 1647, /* GL_RGBA16 */
+ 2096, /* GL_TEXTURE_RED_SIZE */
+ 2064, /* GL_TEXTURE_GREEN_SIZE */
+ 1985, /* GL_TEXTURE_BLUE_SIZE */
+ 1965, /* GL_TEXTURE_ALPHA_SIZE */
+ 2077, /* GL_TEXTURE_LUMINANCE_SIZE */
+ 2068, /* GL_TEXTURE_INTENSITY_SIZE */
+ 1596, /* GL_REPLACE_EXT */
+ 1494, /* GL_PROXY_TEXTURE_1D */
+ 1498, /* GL_PROXY_TEXTURE_2D */
+ 2104, /* GL_TEXTURE_TOO_LARGE_EXT */
+ 2090, /* GL_TEXTURE_PRIORITY */
+ 2098, /* GL_TEXTURE_RESIDENT */
+ 1968, /* GL_TEXTURE_BINDING_1D */
+ 1971, /* GL_TEXTURE_BINDING_2D */
+ 1974, /* GL_TEXTURE_BINDING_3D */
+ 1302, /* GL_PACK_SKIP_IMAGES */
+ 1298, /* GL_PACK_IMAGE_HEIGHT */
+ 2160, /* GL_UNPACK_SKIP_IMAGES */
+ 2157, /* GL_UNPACK_IMAGE_HEIGHT */
+ 1963, /* GL_TEXTURE_3D */
+ 1502, /* GL_PROXY_TEXTURE_3D */
+ 2048, /* GL_TEXTURE_DEPTH */
+ 2107, /* GL_TEXTURE_WRAP_R */
+ 1014, /* GL_MAX_3D_TEXTURE_SIZE */
+ 2223, /* GL_VERTEX_ARRAY */
+ 1228, /* GL_NORMAL_ARRAY */
+ 189, /* GL_COLOR_ARRAY */
+ 735, /* GL_INDEX_ARRAY */
+ 2018, /* GL_TEXTURE_COORD_ARRAY */
+ 518, /* GL_EDGE_FLAG_ARRAY */
+ 2229, /* GL_VERTEX_ARRAY_SIZE */
+ 2231, /* GL_VERTEX_ARRAY_TYPE */
+ 2230, /* GL_VERTEX_ARRAY_STRIDE */
+ 1233, /* GL_NORMAL_ARRAY_TYPE */
+ 1232, /* GL_NORMAL_ARRAY_STRIDE */
+ 193, /* GL_COLOR_ARRAY_SIZE */
+ 195, /* GL_COLOR_ARRAY_TYPE */
+ 194, /* GL_COLOR_ARRAY_STRIDE */
+ 740, /* GL_INDEX_ARRAY_TYPE */
+ 739, /* GL_INDEX_ARRAY_STRIDE */
+ 2022, /* GL_TEXTURE_COORD_ARRAY_SIZE */
+ 2024, /* GL_TEXTURE_COORD_ARRAY_TYPE */
+ 2023, /* GL_TEXTURE_COORD_ARRAY_STRIDE */
+ 522, /* GL_EDGE_FLAG_ARRAY_STRIDE */
+ 2228, /* GL_VERTEX_ARRAY_POINTER */
+ 1231, /* GL_NORMAL_ARRAY_POINTER */
+ 192, /* GL_COLOR_ARRAY_POINTER */
+ 738, /* GL_INDEX_ARRAY_POINTER */
+ 2021, /* GL_TEXTURE_COORD_ARRAY_POINTER */
+ 521, /* GL_EDGE_FLAG_ARRAY_POINTER */
+ 1206, /* GL_MULTISAMPLE */
+ 1720, /* GL_SAMPLE_ALPHA_TO_COVERAGE */
+ 1722, /* GL_SAMPLE_ALPHA_TO_ONE */
+ 1727, /* GL_SAMPLE_COVERAGE */
+ 1724, /* GL_SAMPLE_BUFFERS */
+ 1715, /* GL_SAMPLES */
+ 1731, /* GL_SAMPLE_COVERAGE_VALUE */
+ 1729, /* GL_SAMPLE_COVERAGE_INVERT */
+ 237, /* GL_COLOR_MATRIX */
+ 239, /* GL_COLOR_MATRIX_STACK_DEPTH */
+ 1026, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */
+ 1413, /* GL_POST_COLOR_MATRIX_RED_SCALE */
+ 1409, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */
+ 1404, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */
+ 1400, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */
+ 1411, /* GL_POST_COLOR_MATRIX_RED_BIAS */
+ 1407, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */
+ 1402, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */
+ 1398, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */
+ 2001, /* GL_TEXTURE_COLOR_TABLE_SGI */
+ 1503, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */
+ 2003, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */
94, /* GL_BLEND_DST_RGB */
108, /* GL_BLEND_SRC_RGB */
92, /* GL_BLEND_DST_ALPHA */
106, /* GL_BLEND_SRC_ALPHA */
- 240, /* GL_COLOR_TABLE */
- 1418, /* GL_POST_CONVOLUTION_COLOR_TABLE */
- 1401, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */
- 1484, /* GL_PROXY_COLOR_TABLE */
- 1488, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */
- 1487, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */
- 264, /* GL_COLOR_TABLE_SCALE */
- 244, /* GL_COLOR_TABLE_BIAS */
- 249, /* GL_COLOR_TABLE_FORMAT */
- 266, /* GL_COLOR_TABLE_WIDTH */
- 261, /* GL_COLOR_TABLE_RED_SIZE */
- 252, /* GL_COLOR_TABLE_GREEN_SIZE */
- 246, /* GL_COLOR_TABLE_BLUE_SIZE */
- 241, /* GL_COLOR_TABLE_ALPHA_SIZE */
- 258, /* GL_COLOR_TABLE_LUMINANCE_SIZE */
- 255, /* GL_COLOR_TABLE_INTENSITY_SIZE */
+ 243, /* GL_COLOR_TABLE */
+ 1423, /* GL_POST_CONVOLUTION_COLOR_TABLE */
+ 1406, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */
+ 1489, /* GL_PROXY_COLOR_TABLE */
+ 1493, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */
+ 1492, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */
+ 267, /* GL_COLOR_TABLE_SCALE */
+ 247, /* GL_COLOR_TABLE_BIAS */
+ 252, /* GL_COLOR_TABLE_FORMAT */
+ 269, /* GL_COLOR_TABLE_WIDTH */
+ 264, /* GL_COLOR_TABLE_RED_SIZE */
+ 255, /* GL_COLOR_TABLE_GREEN_SIZE */
+ 249, /* GL_COLOR_TABLE_BLUE_SIZE */
+ 244, /* GL_COLOR_TABLE_ALPHA_SIZE */
+ 261, /* GL_COLOR_TABLE_LUMINANCE_SIZE */
+ 258, /* GL_COLOR_TABLE_INTENSITY_SIZE */
79, /* GL_BGR */
80, /* GL_BGRA */
- 1037, /* GL_MAX_ELEMENTS_VERTICES */
- 1036, /* GL_MAX_ELEMENTS_INDICES */
- 2056, /* GL_TEXTURE_INDEX_SIZE_EXT */
- 183, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */
- 1364, /* GL_POINT_SIZE_MIN */
- 1360, /* GL_POINT_SIZE_MAX */
- 1349, /* GL_POINT_FADE_THRESHOLD_SIZE */
- 1345, /* GL_POINT_DISTANCE_ATTENUATION */
- 157, /* GL_CLAMP_TO_BORDER */
- 160, /* GL_CLAMP_TO_EDGE */
- 2078, /* GL_TEXTURE_MIN_LOD */
- 2076, /* GL_TEXTURE_MAX_LOD */
- 1960, /* GL_TEXTURE_BASE_LEVEL */
- 2075, /* GL_TEXTURE_MAX_LEVEL */
- 722, /* GL_IGNORE_BORDER_HP */
- 318, /* GL_CONSTANT_BORDER_HP */
- 1592, /* GL_REPLICATE_BORDER_HP */
- 329, /* GL_CONVOLUTION_BORDER_COLOR */
- 1256, /* GL_OCCLUSION_TEST_HP */
- 1257, /* GL_OCCLUSION_TEST_RESULT_HP */
- 823, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */
- 1984, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */
- 1986, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */
- 1988, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */
- 1989, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */
- 1987, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */
- 1985, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */
- 1016, /* GL_MAX_CLIPMAP_DEPTH_SGIX */
- 1017, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */
- 1428, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */
- 1430, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */
- 1427, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */
- 1429, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */
- 2064, /* GL_TEXTURE_LOD_BIAS_S_SGIX */
- 2065, /* GL_TEXTURE_LOD_BIAS_T_SGIX */
- 2063, /* GL_TEXTURE_LOD_BIAS_R_SGIX */
- 678, /* GL_GENERATE_MIPMAP */
- 679, /* GL_GENERATE_MIPMAP_HINT */
- 591, /* GL_FOG_OFFSET_SGIX */
- 592, /* GL_FOG_OFFSET_VALUE_SGIX */
- 1998, /* GL_TEXTURE_COMPARE_SGIX */
- 1997, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */
- 2060, /* GL_TEXTURE_LEQUAL_R_SGIX */
- 2052, /* GL_TEXTURE_GEQUAL_R_SGIX */
- 412, /* GL_DEPTH_COMPONENT16 */
- 416, /* GL_DEPTH_COMPONENT24 */
- 420, /* GL_DEPTH_COMPONENT32 */
- 354, /* GL_CULL_VERTEX_EXT */
- 356, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */
- 355, /* GL_CULL_VERTEX_EYE_POSITION_EXT */
- 2285, /* GL_WRAP_BORDER_SUN */
- 1991, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */
- 816, /* GL_LIGHT_MODEL_COLOR_CONTROL */
- 1758, /* GL_SINGLE_COLOR */
- 1742, /* GL_SEPARATE_SPECULAR_COLOR */
- 1753, /* GL_SHARED_TEXTURE_PALETTE_EXT */
- 603, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */
- 604, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */
- 615, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */
- 606, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */
- 602, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */
- 601, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */
- 605, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */
- 616, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */
- 633, /* GL_FRAMEBUFFER_DEFAULT */
- 660, /* GL_FRAMEBUFFER_UNDEFINED */
- 428, /* GL_DEPTH_STENCIL_ATTACHMENT */
- 892, /* GL_MAJOR_VERSION */
- 1147, /* GL_MINOR_VERSION */
- 1237, /* GL_NUM_EXTENSIONS */
- 324, /* GL_CONTEXT_FLAGS */
- 730, /* GL_INDEX */
- 406, /* GL_DEPTH_BUFFER */
- 1832, /* GL_STENCIL_BUFFER */
- 295, /* GL_COMPRESSED_RED */
- 296, /* GL_COMPRESSED_RG */
- 2155, /* GL_UNSIGNED_BYTE_2_3_3_REV */
- 2200, /* GL_UNSIGNED_SHORT_5_6_5 */
- 2201, /* GL_UNSIGNED_SHORT_5_6_5_REV */
- 2197, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */
- 2194, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */
- 2169, /* GL_UNSIGNED_INT_8_8_8_8_REV */
- 2165, /* GL_UNSIGNED_INT_2_10_10_10_REV */
- 2073, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */
- 2074, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */
- 2072, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */
- 1151, /* GL_MIRRORED_REPEAT */
- 1679, /* GL_RGB_S3TC */
- 1622, /* GL_RGB4_S3TC */
- 1675, /* GL_RGBA_S3TC */
- 1661, /* GL_RGBA4_S3TC */
- 1670, /* GL_RGBA_DXT5_S3TC */
- 1658, /* GL_RGBA4_DXT5_S3TC */
- 306, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */
- 301, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */
- 302, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */
- 303, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */
- 1213, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */
- 1212, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */
- 824, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */
- 578, /* GL_FOG_COORDINATE_SOURCE */
- 570, /* GL_FOG_COORD */
- 594, /* GL_FRAGMENT_DEPTH */
- 360, /* GL_CURRENT_FOG_COORD */
- 577, /* GL_FOG_COORDINATE_ARRAY_TYPE */
- 576, /* GL_FOG_COORDINATE_ARRAY_STRIDE */
- 575, /* GL_FOG_COORDINATE_ARRAY_POINTER */
- 572, /* GL_FOG_COORDINATE_ARRAY */
- 238, /* GL_COLOR_SUM */
- 381, /* GL_CURRENT_SECONDARY_COLOR */
- 1733, /* GL_SECONDARY_COLOR_ARRAY_SIZE */
- 1735, /* GL_SECONDARY_COLOR_ARRAY_TYPE */
- 1734, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */
- 1732, /* GL_SECONDARY_COLOR_ARRAY_POINTER */
- 1729, /* GL_SECONDARY_COLOR_ARRAY */
- 379, /* GL_CURRENT_RASTER_SECONDARY_COLOR */
+ 1041, /* GL_MAX_ELEMENTS_VERTICES */
+ 1040, /* GL_MAX_ELEMENTS_INDICES */
+ 2067, /* GL_TEXTURE_INDEX_SIZE_EXT */
+ 186, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */
+ 1369, /* GL_POINT_SIZE_MIN */
+ 1365, /* GL_POINT_SIZE_MAX */
+ 1354, /* GL_POINT_FADE_THRESHOLD_SIZE */
+ 1350, /* GL_POINT_DISTANCE_ATTENUATION */
+ 159, /* GL_CLAMP_TO_BORDER */
+ 162, /* GL_CLAMP_TO_EDGE */
+ 2089, /* GL_TEXTURE_MIN_LOD */
+ 2087, /* GL_TEXTURE_MAX_LOD */
+ 1967, /* GL_TEXTURE_BASE_LEVEL */
+ 2086, /* GL_TEXTURE_MAX_LEVEL */
+ 726, /* GL_IGNORE_BORDER_HP */
+ 321, /* GL_CONSTANT_BORDER_HP */
+ 1597, /* GL_REPLICATE_BORDER_HP */
+ 332, /* GL_CONVOLUTION_BORDER_COLOR */
+ 1261, /* GL_OCCLUSION_TEST_HP */
+ 1262, /* GL_OCCLUSION_TEST_RESULT_HP */
+ 827, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */
+ 1995, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */
+ 1997, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */
+ 1999, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */
+ 2000, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */
+ 1998, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */
+ 1996, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */
+ 1020, /* GL_MAX_CLIPMAP_DEPTH_SGIX */
+ 1021, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */
+ 1433, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */
+ 1435, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */
+ 1432, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */
+ 1434, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */
+ 2075, /* GL_TEXTURE_LOD_BIAS_S_SGIX */
+ 2076, /* GL_TEXTURE_LOD_BIAS_T_SGIX */
+ 2074, /* GL_TEXTURE_LOD_BIAS_R_SGIX */
+ 682, /* GL_GENERATE_MIPMAP */
+ 683, /* GL_GENERATE_MIPMAP_HINT */
+ 595, /* GL_FOG_OFFSET_SGIX */
+ 596, /* GL_FOG_OFFSET_VALUE_SGIX */
+ 2009, /* GL_TEXTURE_COMPARE_SGIX */
+ 2008, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */
+ 2071, /* GL_TEXTURE_LEQUAL_R_SGIX */
+ 2063, /* GL_TEXTURE_GEQUAL_R_SGIX */
+ 415, /* GL_DEPTH_COMPONENT16 */
+ 419, /* GL_DEPTH_COMPONENT24 */
+ 423, /* GL_DEPTH_COMPONENT32 */
+ 357, /* GL_CULL_VERTEX_EXT */
+ 359, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */
+ 358, /* GL_CULL_VERTEX_EYE_POSITION_EXT */
+ 2296, /* GL_WRAP_BORDER_SUN */
+ 2002, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */
+ 820, /* GL_LIGHT_MODEL_COLOR_CONTROL */
+ 1765, /* GL_SINGLE_COLOR */
+ 1749, /* GL_SEPARATE_SPECULAR_COLOR */
+ 1760, /* GL_SHARED_TEXTURE_PALETTE_EXT */
+ 607, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */
+ 608, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */
+ 619, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */
+ 610, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */
+ 606, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */
+ 605, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */
+ 609, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */
+ 620, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */
+ 637, /* GL_FRAMEBUFFER_DEFAULT */
+ 664, /* GL_FRAMEBUFFER_UNDEFINED */
+ 431, /* GL_DEPTH_STENCIL_ATTACHMENT */
+ 896, /* GL_MAJOR_VERSION */
+ 1152, /* GL_MINOR_VERSION */
+ 1242, /* GL_NUM_EXTENSIONS */
+ 327, /* GL_CONTEXT_FLAGS */
+ 734, /* GL_INDEX */
+ 409, /* GL_DEPTH_BUFFER */
+ 1839, /* GL_STENCIL_BUFFER */
+ 298, /* GL_COMPRESSED_RED */
+ 299, /* GL_COMPRESSED_RG */
+ 2166, /* GL_UNSIGNED_BYTE_2_3_3_REV */
+ 2211, /* GL_UNSIGNED_SHORT_5_6_5 */
+ 2212, /* GL_UNSIGNED_SHORT_5_6_5_REV */
+ 2208, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */
+ 2205, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */
+ 2180, /* GL_UNSIGNED_INT_8_8_8_8_REV */
+ 2176, /* GL_UNSIGNED_INT_2_10_10_10_REV */
+ 2084, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */
+ 2085, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */
+ 2083, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */
+ 1156, /* GL_MIRRORED_REPEAT */
+ 1685, /* GL_RGB_S3TC */
+ 1627, /* GL_RGB4_S3TC */
+ 1681, /* GL_RGBA_S3TC */
+ 1666, /* GL_RGBA4_S3TC */
+ 1675, /* GL_RGBA_DXT5_S3TC */
+ 1663, /* GL_RGBA4_DXT5_S3TC */
+ 309, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */
+ 304, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */
+ 305, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */
+ 306, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */
+ 1218, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */
+ 1217, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */
+ 828, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */
+ 582, /* GL_FOG_COORDINATE_SOURCE */
+ 574, /* GL_FOG_COORD */
+ 598, /* GL_FRAGMENT_DEPTH */
+ 363, /* GL_CURRENT_FOG_COORD */
+ 581, /* GL_FOG_COORDINATE_ARRAY_TYPE */
+ 580, /* GL_FOG_COORDINATE_ARRAY_STRIDE */
+ 579, /* GL_FOG_COORDINATE_ARRAY_POINTER */
+ 576, /* GL_FOG_COORDINATE_ARRAY */
+ 241, /* GL_COLOR_SUM */
+ 384, /* GL_CURRENT_SECONDARY_COLOR */
+ 1740, /* GL_SECONDARY_COLOR_ARRAY_SIZE */
+ 1742, /* GL_SECONDARY_COLOR_ARRAY_TYPE */
+ 1741, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */
+ 1739, /* GL_SECONDARY_COLOR_ARRAY_POINTER */
+ 1736, /* GL_SECONDARY_COLOR_ARRAY */
+ 382, /* GL_CURRENT_RASTER_SECONDARY_COLOR */
29, /* GL_ALIASED_POINT_SIZE_RANGE */
28, /* GL_ALIASED_LINE_WIDTH_RANGE */
- 1886, /* GL_TEXTURE0 */
- 1888, /* GL_TEXTURE1 */
- 1910, /* GL_TEXTURE2 */
- 1932, /* GL_TEXTURE3 */
- 1938, /* GL_TEXTURE4 */
- 1940, /* GL_TEXTURE5 */
- 1942, /* GL_TEXTURE6 */
- 1944, /* GL_TEXTURE7 */
- 1946, /* GL_TEXTURE8 */
- 1948, /* GL_TEXTURE9 */
- 1889, /* GL_TEXTURE10 */
- 1891, /* GL_TEXTURE11 */
- 1893, /* GL_TEXTURE12 */
- 1895, /* GL_TEXTURE13 */
- 1897, /* GL_TEXTURE14 */
- 1899, /* GL_TEXTURE15 */
- 1901, /* GL_TEXTURE16 */
- 1903, /* GL_TEXTURE17 */
- 1905, /* GL_TEXTURE18 */
- 1907, /* GL_TEXTURE19 */
- 1911, /* GL_TEXTURE20 */
- 1913, /* GL_TEXTURE21 */
- 1915, /* GL_TEXTURE22 */
- 1917, /* GL_TEXTURE23 */
- 1919, /* GL_TEXTURE24 */
- 1921, /* GL_TEXTURE25 */
- 1923, /* GL_TEXTURE26 */
- 1925, /* GL_TEXTURE27 */
- 1927, /* GL_TEXTURE28 */
- 1929, /* GL_TEXTURE29 */
- 1933, /* GL_TEXTURE30 */
- 1935, /* GL_TEXTURE31 */
+ 1893, /* GL_TEXTURE0 */
+ 1895, /* GL_TEXTURE1 */
+ 1917, /* GL_TEXTURE2 */
+ 1939, /* GL_TEXTURE3 */
+ 1945, /* GL_TEXTURE4 */
+ 1947, /* GL_TEXTURE5 */
+ 1949, /* GL_TEXTURE6 */
+ 1951, /* GL_TEXTURE7 */
+ 1953, /* GL_TEXTURE8 */
+ 1955, /* GL_TEXTURE9 */
+ 1896, /* GL_TEXTURE10 */
+ 1898, /* GL_TEXTURE11 */
+ 1900, /* GL_TEXTURE12 */
+ 1902, /* GL_TEXTURE13 */
+ 1904, /* GL_TEXTURE14 */
+ 1906, /* GL_TEXTURE15 */
+ 1908, /* GL_TEXTURE16 */
+ 1910, /* GL_TEXTURE17 */
+ 1912, /* GL_TEXTURE18 */
+ 1914, /* GL_TEXTURE19 */
+ 1918, /* GL_TEXTURE20 */
+ 1920, /* GL_TEXTURE21 */
+ 1922, /* GL_TEXTURE22 */
+ 1924, /* GL_TEXTURE23 */
+ 1926, /* GL_TEXTURE24 */
+ 1928, /* GL_TEXTURE25 */
+ 1930, /* GL_TEXTURE26 */
+ 1932, /* GL_TEXTURE27 */
+ 1934, /* GL_TEXTURE28 */
+ 1936, /* GL_TEXTURE29 */
+ 1940, /* GL_TEXTURE30 */
+ 1942, /* GL_TEXTURE31 */
19, /* GL_ACTIVE_TEXTURE */
- 163, /* GL_CLIENT_ACTIVE_TEXTURE */
- 1112, /* GL_MAX_TEXTURE_UNITS */
- 2128, /* GL_TRANSPOSE_MODELVIEW_MATRIX */
- 2131, /* GL_TRANSPOSE_PROJECTION_MATRIX */
- 2133, /* GL_TRANSPOSE_TEXTURE_MATRIX */
- 2125, /* GL_TRANSPOSE_COLOR_MATRIX */
- 1868, /* GL_SUBTRACT */
- 1094, /* GL_MAX_RENDERBUFFER_SIZE */
- 287, /* GL_COMPRESSED_ALPHA */
- 291, /* GL_COMPRESSED_LUMINANCE */
- 292, /* GL_COMPRESSED_LUMINANCE_ALPHA */
- 289, /* GL_COMPRESSED_INTENSITY */
- 297, /* GL_COMPRESSED_RGB */
- 298, /* GL_COMPRESSED_RGBA */
- 2005, /* GL_TEXTURE_COMPRESSION_HINT */
- 2082, /* GL_TEXTURE_RECTANGLE */
- 1973, /* GL_TEXTURE_BINDING_RECTANGLE */
- 1501, /* GL_PROXY_TEXTURE_RECTANGLE */
- 1091, /* GL_MAX_RECTANGLE_TEXTURE_SIZE */
- 427, /* GL_DEPTH_STENCIL */
- 2161, /* GL_UNSIGNED_INT_24_8 */
- 1107, /* GL_MAX_TEXTURE_LOD_BIAS */
- 2071, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */
- 1109, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */
- 2043, /* GL_TEXTURE_FILTER_CONTROL */
- 2061, /* GL_TEXTURE_LOD_BIAS */
- 271, /* GL_COMBINE4 */
- 1100, /* GL_MAX_SHININESS_NV */
- 1101, /* GL_MAX_SPOT_EXPONENT_NV */
- 728, /* GL_INCR_WRAP */
- 392, /* GL_DECR_WRAP */
- 1171, /* GL_MODELVIEW1_ARB */
- 1229, /* GL_NORMAL_MAP */
- 1552, /* GL_REFLECTION_MAP */
- 2015, /* GL_TEXTURE_CUBE_MAP */
- 1970, /* GL_TEXTURE_BINDING_CUBE_MAP */
- 2027, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */
- 2017, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */
- 2030, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */
- 2020, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */
- 2033, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */
- 2023, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */
- 1499, /* GL_PROXY_TEXTURE_CUBE_MAP */
- 1030, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */
- 1207, /* GL_MULTISAMPLE_FILTER_HINT_NV */
- 1442, /* GL_PRIMITIVE_RESTART_NV */
- 1441, /* GL_PRIMITIVE_RESTART_INDEX_NV */
- 586, /* GL_FOG_DISTANCE_MODE_NV */
- 534, /* GL_EYE_RADIAL_NV */
- 533, /* GL_EYE_PLANE_ABSOLUTE_NV */
- 270, /* GL_COMBINE */
- 277, /* GL_COMBINE_RGB */
- 272, /* GL_COMBINE_ALPHA */
- 1680, /* GL_RGB_SCALE */
+ 166, /* GL_CLIENT_ACTIVE_TEXTURE */
+ 1117, /* GL_MAX_TEXTURE_UNITS */
+ 2139, /* GL_TRANSPOSE_MODELVIEW_MATRIX */
+ 2142, /* GL_TRANSPOSE_PROJECTION_MATRIX */
+ 2144, /* GL_TRANSPOSE_TEXTURE_MATRIX */
+ 2136, /* GL_TRANSPOSE_COLOR_MATRIX */
+ 1875, /* GL_SUBTRACT */
+ 1098, /* GL_MAX_RENDERBUFFER_SIZE */
+ 290, /* GL_COMPRESSED_ALPHA */
+ 294, /* GL_COMPRESSED_LUMINANCE */
+ 295, /* GL_COMPRESSED_LUMINANCE_ALPHA */
+ 292, /* GL_COMPRESSED_INTENSITY */
+ 300, /* GL_COMPRESSED_RGB */
+ 301, /* GL_COMPRESSED_RGBA */
+ 2016, /* GL_TEXTURE_COMPRESSION_HINT */
+ 2093, /* GL_TEXTURE_RECTANGLE */
+ 1981, /* GL_TEXTURE_BINDING_RECTANGLE */
+ 1506, /* GL_PROXY_TEXTURE_RECTANGLE */
+ 1095, /* GL_MAX_RECTANGLE_TEXTURE_SIZE */
+ 430, /* GL_DEPTH_STENCIL */
+ 2172, /* GL_UNSIGNED_INT_24_8 */
+ 1112, /* GL_MAX_TEXTURE_LOD_BIAS */
+ 2082, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */
+ 1114, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */
+ 2054, /* GL_TEXTURE_FILTER_CONTROL */
+ 2072, /* GL_TEXTURE_LOD_BIAS */
+ 274, /* GL_COMBINE4 */
+ 1104, /* GL_MAX_SHININESS_NV */
+ 1105, /* GL_MAX_SPOT_EXPONENT_NV */
+ 732, /* GL_INCR_WRAP */
+ 395, /* GL_DECR_WRAP */
+ 1176, /* GL_MODELVIEW1_ARB */
+ 1234, /* GL_NORMAL_MAP */
+ 1557, /* GL_REFLECTION_MAP */
+ 2026, /* GL_TEXTURE_CUBE_MAP */
+ 1978, /* GL_TEXTURE_BINDING_CUBE_MAP */
+ 2038, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */
+ 2028, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */
+ 2041, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */
+ 2031, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */
+ 2044, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */
+ 2034, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */
+ 1504, /* GL_PROXY_TEXTURE_CUBE_MAP */
+ 1034, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */
+ 1212, /* GL_MULTISAMPLE_FILTER_HINT_NV */
+ 1447, /* GL_PRIMITIVE_RESTART_NV */
+ 1446, /* GL_PRIMITIVE_RESTART_INDEX_NV */
+ 590, /* GL_FOG_DISTANCE_MODE_NV */
+ 537, /* GL_EYE_RADIAL_NV */
+ 536, /* GL_EYE_PLANE_ABSOLUTE_NV */
+ 273, /* GL_COMBINE */
+ 280, /* GL_COMBINE_RGB */
+ 275, /* GL_COMBINE_ALPHA */
+ 1686, /* GL_RGB_SCALE */
25, /* GL_ADD_SIGNED */
- 764, /* GL_INTERPOLATE */
- 313, /* GL_CONSTANT */
- 1434, /* GL_PRIMARY_COLOR */
- 1431, /* GL_PREVIOUS */
- 1773, /* GL_SOURCE0_RGB */
- 1779, /* GL_SOURCE1_RGB */
- 1785, /* GL_SOURCE2_RGB */
- 1789, /* GL_SOURCE3_RGB_NV */
- 1770, /* GL_SOURCE0_ALPHA */
- 1776, /* GL_SOURCE1_ALPHA */
- 1782, /* GL_SOURCE2_ALPHA */
- 1788, /* GL_SOURCE3_ALPHA_NV */
- 1270, /* GL_OPERAND0_RGB */
- 1276, /* GL_OPERAND1_RGB */
- 1282, /* GL_OPERAND2_RGB */
- 1286, /* GL_OPERAND3_RGB_NV */
- 1267, /* GL_OPERAND0_ALPHA */
- 1273, /* GL_OPERAND1_ALPHA */
- 1279, /* GL_OPERAND2_ALPHA */
- 1285, /* GL_OPERAND3_ALPHA_NV */
+ 768, /* GL_INTERPOLATE */
+ 316, /* GL_CONSTANT */
+ 1439, /* GL_PRIMARY_COLOR */
+ 1436, /* GL_PREVIOUS */
+ 1780, /* GL_SOURCE0_RGB */
+ 1786, /* GL_SOURCE1_RGB */
+ 1792, /* GL_SOURCE2_RGB */
+ 1796, /* GL_SOURCE3_RGB_NV */
+ 1777, /* GL_SOURCE0_ALPHA */
+ 1783, /* GL_SOURCE1_ALPHA */
+ 1789, /* GL_SOURCE2_ALPHA */
+ 1795, /* GL_SOURCE3_ALPHA_NV */
+ 1275, /* GL_OPERAND0_RGB */
+ 1281, /* GL_OPERAND1_RGB */
+ 1287, /* GL_OPERAND2_RGB */
+ 1291, /* GL_OPERAND3_RGB_NV */
+ 1272, /* GL_OPERAND0_ALPHA */
+ 1278, /* GL_OPERAND1_ALPHA */
+ 1284, /* GL_OPERAND2_ALPHA */
+ 1290, /* GL_OPERAND3_ALPHA_NV */
137, /* GL_BUFFER_OBJECT_APPLE */
- 2213, /* GL_VERTEX_ARRAY_BINDING */
- 2080, /* GL_TEXTURE_RANGE_LENGTH_APPLE */
- 2081, /* GL_TEXTURE_RANGE_POINTER_APPLE */
- 2290, /* GL_YCBCR_422_APPLE */
- 2202, /* GL_UNSIGNED_SHORT_8_8_APPLE */
- 2204, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */
- 2092, /* GL_TEXTURE_STORAGE_HINT_APPLE */
- 1859, /* GL_STORAGE_PRIVATE_APPLE */
- 1858, /* GL_STORAGE_CACHED_APPLE */
- 1860, /* GL_STORAGE_SHARED_APPLE */
- 1760, /* GL_SLICE_ACCUM_SUN */
- 1510, /* GL_QUAD_MESH_SUN */
- 2139, /* GL_TRIANGLE_MESH_SUN */
- 2255, /* GL_VERTEX_PROGRAM_ARB */
- 2266, /* GL_VERTEX_STATE_PROGRAM_NV */
- 2240, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */
- 2248, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */
- 2250, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */
- 2252, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */
- 383, /* GL_CURRENT_VERTEX_ATTRIB */
- 1455, /* GL_PROGRAM_LENGTH_ARB */
- 1471, /* GL_PROGRAM_STRING_ARB */
- 1194, /* GL_MODELVIEW_PROJECTION_NV */
- 721, /* GL_IDENTITY_NV */
- 796, /* GL_INVERSE_NV */
- 2130, /* GL_TRANSPOSE_NV */
- 797, /* GL_INVERSE_TRANSPOSE_NV */
- 1075, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */
- 1074, /* GL_MAX_PROGRAM_MATRICES_ARB */
- 956, /* GL_MATRIX0_NV */
- 968, /* GL_MATRIX1_NV */
- 980, /* GL_MATRIX2_NV */
- 984, /* GL_MATRIX3_NV */
- 986, /* GL_MATRIX4_NV */
- 988, /* GL_MATRIX5_NV */
- 990, /* GL_MATRIX6_NV */
- 992, /* GL_MATRIX7_NV */
- 366, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */
- 363, /* GL_CURRENT_MATRIX_ARB */
- 1468, /* GL_PROGRAM_POINT_SIZE */
- 2261, /* GL_VERTEX_PROGRAM_TWO_SIDE */
- 1467, /* GL_PROGRAM_PARAMETER_NV */
- 2246, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */
- 1473, /* GL_PROGRAM_TARGET_NV */
- 1470, /* GL_PROGRAM_RESIDENT_NV */
- 2102, /* GL_TRACK_MATRIX_NV */
- 2103, /* GL_TRACK_MATRIX_TRANSFORM_NV */
- 2256, /* GL_VERTEX_PROGRAM_BINDING_NV */
- 1449, /* GL_PROGRAM_ERROR_POSITION_ARB */
- 408, /* GL_DEPTH_CLAMP */
- 2221, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
- 2228, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
- 2229, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
- 2230, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
- 2231, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
- 2232, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
- 2233, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
- 2234, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
- 2235, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
- 2236, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
- 2222, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
- 2223, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
- 2224, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
- 2225, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
- 2226, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
- 2227, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
- 904, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */
- 911, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */
- 912, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */
- 913, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */
- 914, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */
- 915, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */
- 916, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */
- 917, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */
- 918, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */
- 919, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */
- 905, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */
- 906, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */
- 907, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */
- 908, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */
- 909, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */
- 910, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */
- 931, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */
- 938, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */
- 939, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */
- 940, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */
- 941, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */
- 942, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */
- 943, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */
- 1448, /* GL_PROGRAM_BINDING_ARB */
- 945, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */
- 946, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */
- 932, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */
- 933, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */
- 934, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */
- 935, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */
- 936, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */
- 937, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */
- 2003, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */
- 2000, /* GL_TEXTURE_COMPRESSED */
- 1235, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */
- 311, /* GL_COMPRESSED_TEXTURE_FORMATS */
- 1134, /* GL_MAX_VERTEX_UNITS_ARB */
+ 2224, /* GL_VERTEX_ARRAY_BINDING */
+ 2091, /* GL_TEXTURE_RANGE_LENGTH_APPLE */
+ 2092, /* GL_TEXTURE_RANGE_POINTER_APPLE */
+ 2301, /* GL_YCBCR_422_APPLE */
+ 2213, /* GL_UNSIGNED_SHORT_8_8_APPLE */
+ 2215, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */
+ 2103, /* GL_TEXTURE_STORAGE_HINT_APPLE */
+ 1866, /* GL_STORAGE_PRIVATE_APPLE */
+ 1865, /* GL_STORAGE_CACHED_APPLE */
+ 1867, /* GL_STORAGE_SHARED_APPLE */
+ 1767, /* GL_SLICE_ACCUM_SUN */
+ 1515, /* GL_QUAD_MESH_SUN */
+ 2150, /* GL_TRIANGLE_MESH_SUN */
+ 2266, /* GL_VERTEX_PROGRAM_ARB */
+ 2277, /* GL_VERTEX_STATE_PROGRAM_NV */
+ 2251, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */
+ 2259, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */
+ 2261, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */
+ 2263, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */
+ 386, /* GL_CURRENT_VERTEX_ATTRIB */
+ 1460, /* GL_PROGRAM_LENGTH_ARB */
+ 1476, /* GL_PROGRAM_STRING_ARB */
+ 1199, /* GL_MODELVIEW_PROJECTION_NV */
+ 725, /* GL_IDENTITY_NV */
+ 800, /* GL_INVERSE_NV */
+ 2141, /* GL_TRANSPOSE_NV */
+ 801, /* GL_INVERSE_TRANSPOSE_NV */
+ 1079, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */
+ 1078, /* GL_MAX_PROGRAM_MATRICES_ARB */
+ 960, /* GL_MATRIX0_NV */
+ 972, /* GL_MATRIX1_NV */
+ 984, /* GL_MATRIX2_NV */
+ 988, /* GL_MATRIX3_NV */
+ 990, /* GL_MATRIX4_NV */
+ 992, /* GL_MATRIX5_NV */
+ 994, /* GL_MATRIX6_NV */
+ 996, /* GL_MATRIX7_NV */
+ 369, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */
+ 366, /* GL_CURRENT_MATRIX_ARB */
+ 1473, /* GL_PROGRAM_POINT_SIZE */
+ 2272, /* GL_VERTEX_PROGRAM_TWO_SIDE */
+ 1472, /* GL_PROGRAM_PARAMETER_NV */
+ 2257, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */
+ 1478, /* GL_PROGRAM_TARGET_NV */
+ 1475, /* GL_PROGRAM_RESIDENT_NV */
+ 2113, /* GL_TRACK_MATRIX_NV */
+ 2114, /* GL_TRACK_MATRIX_TRANSFORM_NV */
+ 2267, /* GL_VERTEX_PROGRAM_BINDING_NV */
+ 1454, /* GL_PROGRAM_ERROR_POSITION_ARB */
+ 411, /* GL_DEPTH_CLAMP */
+ 2232, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
+ 2239, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
+ 2240, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
+ 2241, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
+ 2242, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
+ 2243, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
+ 2244, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
+ 2245, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
+ 2246, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
+ 2247, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
+ 2233, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
+ 2234, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
+ 2235, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
+ 2236, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
+ 2237, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
+ 2238, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
+ 908, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */
+ 915, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */
+ 916, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */
+ 917, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */
+ 918, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */
+ 919, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */
+ 920, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */
+ 921, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */
+ 922, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */
+ 923, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */
+ 909, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */
+ 910, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */
+ 911, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */
+ 912, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */
+ 913, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */
+ 914, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */
+ 935, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */
+ 942, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */
+ 943, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */
+ 944, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */
+ 945, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */
+ 946, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */
+ 947, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */
+ 1453, /* GL_PROGRAM_BINDING_ARB */
+ 949, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */
+ 950, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */
+ 936, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */
+ 937, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */
+ 938, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */
+ 939, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */
+ 940, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */
+ 941, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */
+ 2014, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */
+ 2011, /* GL_TEXTURE_COMPRESSED */
+ 1240, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */
+ 314, /* GL_COMPRESSED_TEXTURE_FORMATS */
+ 1139, /* GL_MAX_VERTEX_UNITS_ARB */
23, /* GL_ACTIVE_VERTEX_UNITS_ARB */
- 2284, /* GL_WEIGHT_SUM_UNITY_ARB */
- 2254, /* GL_VERTEX_BLEND_ARB */
- 385, /* GL_CURRENT_WEIGHT_ARB */
- 2282, /* GL_WEIGHT_ARRAY_TYPE_ARB */
- 2280, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
- 2278, /* GL_WEIGHT_ARRAY_SIZE_ARB */
- 2276, /* GL_WEIGHT_ARRAY_POINTER_ARB */
- 2271, /* GL_WEIGHT_ARRAY_ARB */
- 442, /* GL_DOT3_RGB */
- 443, /* GL_DOT3_RGBA */
- 305, /* GL_COMPRESSED_RGB_FXT1_3DFX */
- 300, /* GL_COMPRESSED_RGBA_FXT1_3DFX */
- 1202, /* GL_MULTISAMPLE_3DFX */
- 1718, /* GL_SAMPLE_BUFFERS_3DFX */
- 1709, /* GL_SAMPLES_3DFX */
- 1182, /* GL_MODELVIEW2_ARB */
- 1185, /* GL_MODELVIEW3_ARB */
- 1186, /* GL_MODELVIEW4_ARB */
- 1187, /* GL_MODELVIEW5_ARB */
- 1188, /* GL_MODELVIEW6_ARB */
- 1189, /* GL_MODELVIEW7_ARB */
- 1190, /* GL_MODELVIEW8_ARB */
- 1191, /* GL_MODELVIEW9_ARB */
- 1161, /* GL_MODELVIEW10_ARB */
- 1162, /* GL_MODELVIEW11_ARB */
- 1163, /* GL_MODELVIEW12_ARB */
- 1164, /* GL_MODELVIEW13_ARB */
- 1165, /* GL_MODELVIEW14_ARB */
- 1166, /* GL_MODELVIEW15_ARB */
- 1167, /* GL_MODELVIEW16_ARB */
- 1168, /* GL_MODELVIEW17_ARB */
- 1169, /* GL_MODELVIEW18_ARB */
- 1170, /* GL_MODELVIEW19_ARB */
- 1172, /* GL_MODELVIEW20_ARB */
- 1173, /* GL_MODELVIEW21_ARB */
- 1174, /* GL_MODELVIEW22_ARB */
- 1175, /* GL_MODELVIEW23_ARB */
- 1176, /* GL_MODELVIEW24_ARB */
- 1177, /* GL_MODELVIEW25_ARB */
- 1178, /* GL_MODELVIEW26_ARB */
- 1179, /* GL_MODELVIEW27_ARB */
- 1180, /* GL_MODELVIEW28_ARB */
- 1181, /* GL_MODELVIEW29_ARB */
- 1183, /* GL_MODELVIEW30_ARB */
- 1184, /* GL_MODELVIEW31_ARB */
- 447, /* GL_DOT3_RGB_EXT */
- 445, /* GL_DOT3_RGBA_EXT */
- 1155, /* GL_MIRROR_CLAMP_EXT */
- 1158, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */
- 1197, /* GL_MODULATE_ADD_ATI */
- 1198, /* GL_MODULATE_SIGNED_ADD_ATI */
- 1199, /* GL_MODULATE_SUBTRACT_ATI */
- 2291, /* GL_YCBCR_MESA */
- 1294, /* GL_PACK_INVERT_MESA */
- 388, /* GL_DEBUG_OBJECT_MESA */
- 389, /* GL_DEBUG_PRINT_MESA */
- 387, /* GL_DEBUG_ASSERT_MESA */
+ 2295, /* GL_WEIGHT_SUM_UNITY_ARB */
+ 2265, /* GL_VERTEX_BLEND_ARB */
+ 388, /* GL_CURRENT_WEIGHT_ARB */
+ 2293, /* GL_WEIGHT_ARRAY_TYPE_ARB */
+ 2291, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
+ 2289, /* GL_WEIGHT_ARRAY_SIZE_ARB */
+ 2287, /* GL_WEIGHT_ARRAY_POINTER_ARB */
+ 2282, /* GL_WEIGHT_ARRAY_ARB */
+ 445, /* GL_DOT3_RGB */
+ 446, /* GL_DOT3_RGBA */
+ 308, /* GL_COMPRESSED_RGB_FXT1_3DFX */
+ 303, /* GL_COMPRESSED_RGBA_FXT1_3DFX */
+ 1207, /* GL_MULTISAMPLE_3DFX */
+ 1725, /* GL_SAMPLE_BUFFERS_3DFX */
+ 1716, /* GL_SAMPLES_3DFX */
+ 1187, /* GL_MODELVIEW2_ARB */
+ 1190, /* GL_MODELVIEW3_ARB */
+ 1191, /* GL_MODELVIEW4_ARB */
+ 1192, /* GL_MODELVIEW5_ARB */
+ 1193, /* GL_MODELVIEW6_ARB */
+ 1194, /* GL_MODELVIEW7_ARB */
+ 1195, /* GL_MODELVIEW8_ARB */
+ 1196, /* GL_MODELVIEW9_ARB */
+ 1166, /* GL_MODELVIEW10_ARB */
+ 1167, /* GL_MODELVIEW11_ARB */
+ 1168, /* GL_MODELVIEW12_ARB */
+ 1169, /* GL_MODELVIEW13_ARB */
+ 1170, /* GL_MODELVIEW14_ARB */
+ 1171, /* GL_MODELVIEW15_ARB */
+ 1172, /* GL_MODELVIEW16_ARB */
+ 1173, /* GL_MODELVIEW17_ARB */
+ 1174, /* GL_MODELVIEW18_ARB */
+ 1175, /* GL_MODELVIEW19_ARB */
+ 1177, /* GL_MODELVIEW20_ARB */
+ 1178, /* GL_MODELVIEW21_ARB */
+ 1179, /* GL_MODELVIEW22_ARB */
+ 1180, /* GL_MODELVIEW23_ARB */
+ 1181, /* GL_MODELVIEW24_ARB */
+ 1182, /* GL_MODELVIEW25_ARB */
+ 1183, /* GL_MODELVIEW26_ARB */
+ 1184, /* GL_MODELVIEW27_ARB */
+ 1185, /* GL_MODELVIEW28_ARB */
+ 1186, /* GL_MODELVIEW29_ARB */
+ 1188, /* GL_MODELVIEW30_ARB */
+ 1189, /* GL_MODELVIEW31_ARB */
+ 450, /* GL_DOT3_RGB_EXT */
+ 448, /* GL_DOT3_RGBA_EXT */
+ 1160, /* GL_MIRROR_CLAMP_EXT */
+ 1163, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */
+ 1202, /* GL_MODULATE_ADD_ATI */
+ 1203, /* GL_MODULATE_SIGNED_ADD_ATI */
+ 1204, /* GL_MODULATE_SUBTRACT_ATI */
+ 2302, /* GL_YCBCR_MESA */
+ 1299, /* GL_PACK_INVERT_MESA */
+ 391, /* GL_DEBUG_OBJECT_MESA */
+ 392, /* GL_DEBUG_PRINT_MESA */
+ 390, /* GL_DEBUG_ASSERT_MESA */
139, /* GL_BUFFER_SIZE */
141, /* GL_BUFFER_USAGE */
145, /* GL_BUMP_ROT_MATRIX_ATI */
146, /* GL_BUMP_ROT_MATRIX_SIZE_ATI */
144, /* GL_BUMP_NUM_TEX_UNITS_ATI */
148, /* GL_BUMP_TEX_UNITS_ATI */
- 507, /* GL_DUDV_ATI */
- 506, /* GL_DU8DV8_ATI */
+ 510, /* GL_DUDV_ATI */
+ 509, /* GL_DU8DV8_ATI */
143, /* GL_BUMP_ENVMAP_ATI */
147, /* GL_BUMP_TARGET_ATI */
- 1238, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */
- 1446, /* GL_PROGRAM_BINARY_FORMATS_OES */
- 1822, /* GL_STENCIL_BACK_FUNC */
- 1820, /* GL_STENCIL_BACK_FAIL */
- 1824, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */
- 1826, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */
- 595, /* GL_FRAGMENT_PROGRAM_ARB */
- 1444, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */
- 1476, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */
- 1475, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */
- 1458, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
- 1464, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
- 1463, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
- 1064, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */
- 1089, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */
- 1088, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */
- 1077, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
- 1083, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
- 1082, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
- 1652, /* GL_RGBA32F */
- 1615, /* GL_RGB32F */
- 1643, /* GL_RGBA16F */
- 1607, /* GL_RGB16F */
- 1033, /* GL_MAX_DRAW_BUFFERS */
- 451, /* GL_DRAW_BUFFER0 */
- 454, /* GL_DRAW_BUFFER1 */
- 475, /* GL_DRAW_BUFFER2 */
- 478, /* GL_DRAW_BUFFER3 */
- 481, /* GL_DRAW_BUFFER4 */
- 484, /* GL_DRAW_BUFFER5 */
- 487, /* GL_DRAW_BUFFER6 */
- 490, /* GL_DRAW_BUFFER7 */
- 493, /* GL_DRAW_BUFFER8 */
- 496, /* GL_DRAW_BUFFER9 */
- 455, /* GL_DRAW_BUFFER10 */
- 458, /* GL_DRAW_BUFFER11 */
- 461, /* GL_DRAW_BUFFER12 */
- 464, /* GL_DRAW_BUFFER13 */
- 467, /* GL_DRAW_BUFFER14 */
- 470, /* GL_DRAW_BUFFER15 */
+ 1243, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */
+ 1451, /* GL_PROGRAM_BINARY_FORMATS_OES */
+ 1829, /* GL_STENCIL_BACK_FUNC */
+ 1827, /* GL_STENCIL_BACK_FAIL */
+ 1831, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */
+ 1833, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */
+ 599, /* GL_FRAGMENT_PROGRAM_ARB */
+ 1449, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */
+ 1481, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */
+ 1480, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */
+ 1463, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
+ 1469, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
+ 1468, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
+ 1068, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */
+ 1093, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */
+ 1092, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */
+ 1081, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
+ 1087, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
+ 1086, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
+ 1657, /* GL_RGBA32F */
+ 1620, /* GL_RGB32F */
+ 1648, /* GL_RGBA16F */
+ 1612, /* GL_RGB16F */
+ 1676, /* GL_RGBA_FLOAT_MODE_ARB */
+ 1037, /* GL_MAX_DRAW_BUFFERS */
+ 454, /* GL_DRAW_BUFFER0 */
+ 457, /* GL_DRAW_BUFFER1 */
+ 478, /* GL_DRAW_BUFFER2 */
+ 481, /* GL_DRAW_BUFFER3 */
+ 484, /* GL_DRAW_BUFFER4 */
+ 487, /* GL_DRAW_BUFFER5 */
+ 490, /* GL_DRAW_BUFFER6 */
+ 493, /* GL_DRAW_BUFFER7 */
+ 496, /* GL_DRAW_BUFFER8 */
+ 499, /* GL_DRAW_BUFFER9 */
+ 458, /* GL_DRAW_BUFFER10 */
+ 461, /* GL_DRAW_BUFFER11 */
+ 464, /* GL_DRAW_BUFFER12 */
+ 467, /* GL_DRAW_BUFFER13 */
+ 470, /* GL_DRAW_BUFFER14 */
+ 473, /* GL_DRAW_BUFFER15 */
97, /* GL_BLEND_EQUATION_ALPHA */
- 1007, /* GL_MATRIX_PALETTE_ARB */
- 1057, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */
- 1060, /* GL_MAX_PALETTE_MATRICES_ARB */
- 369, /* GL_CURRENT_PALETTE_MATRIX_ARB */
- 995, /* GL_MATRIX_INDEX_ARRAY_ARB */
- 364, /* GL_CURRENT_MATRIX_INDEX_ARB */
- 1000, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */
- 1004, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */
- 1002, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */
- 998, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */
- 2038, /* GL_TEXTURE_DEPTH_SIZE */
- 435, /* GL_DEPTH_TEXTURE_MODE */
- 1995, /* GL_TEXTURE_COMPARE_MODE */
- 1993, /* GL_TEXTURE_COMPARE_FUNC */
- 281, /* GL_COMPARE_REF_TO_TEXTURE */
- 1371, /* GL_POINT_SPRITE */
- 343, /* GL_COORD_REPLACE */
- 1376, /* GL_POINT_SPRITE_R_MODE_NV */
- 1516, /* GL_QUERY_COUNTER_BITS */
- 372, /* GL_CURRENT_QUERY */
- 1520, /* GL_QUERY_RESULT */
- 1522, /* GL_QUERY_RESULT_AVAILABLE */
- 1126, /* GL_MAX_VERTEX_ATTRIBS */
- 2244, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */
- 433, /* GL_DEPTH_STENCIL_TO_RGBA_NV */
- 432, /* GL_DEPTH_STENCIL_TO_BGRA_NV */
- 1103, /* GL_MAX_TEXTURE_COORDS */
- 1105, /* GL_MAX_TEXTURE_IMAGE_UNITS */
- 1451, /* GL_PROGRAM_ERROR_STRING_ARB */
- 1453, /* GL_PROGRAM_FORMAT_ASCII_ARB */
- 1452, /* GL_PROGRAM_FORMAT_ARB */
- 2094, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */
- 405, /* GL_DEPTH_BOUNDS_TEST_EXT */
- 404, /* GL_DEPTH_BOUNDS_EXT */
+ 1011, /* GL_MATRIX_PALETTE_ARB */
+ 1061, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */
+ 1064, /* GL_MAX_PALETTE_MATRICES_ARB */
+ 372, /* GL_CURRENT_PALETTE_MATRIX_ARB */
+ 999, /* GL_MATRIX_INDEX_ARRAY_ARB */
+ 367, /* GL_CURRENT_MATRIX_INDEX_ARB */
+ 1004, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */
+ 1008, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */
+ 1006, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */
+ 1002, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */
+ 2049, /* GL_TEXTURE_DEPTH_SIZE */
+ 438, /* GL_DEPTH_TEXTURE_MODE */
+ 2006, /* GL_TEXTURE_COMPARE_MODE */
+ 2004, /* GL_TEXTURE_COMPARE_FUNC */
+ 284, /* GL_COMPARE_REF_TO_TEXTURE */
+ 1376, /* GL_POINT_SPRITE */
+ 346, /* GL_COORD_REPLACE */
+ 1381, /* GL_POINT_SPRITE_R_MODE_NV */
+ 1521, /* GL_QUERY_COUNTER_BITS */
+ 375, /* GL_CURRENT_QUERY */
+ 1525, /* GL_QUERY_RESULT */
+ 1527, /* GL_QUERY_RESULT_AVAILABLE */
+ 1131, /* GL_MAX_VERTEX_ATTRIBS */
+ 2255, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */
+ 436, /* GL_DEPTH_STENCIL_TO_RGBA_NV */
+ 435, /* GL_DEPTH_STENCIL_TO_BGRA_NV */
+ 1108, /* GL_MAX_TEXTURE_COORDS */
+ 1110, /* GL_MAX_TEXTURE_IMAGE_UNITS */
+ 1456, /* GL_PROGRAM_ERROR_STRING_ARB */
+ 1458, /* GL_PROGRAM_FORMAT_ASCII_ARB */
+ 1457, /* GL_PROGRAM_FORMAT_ARB */
+ 2105, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */
+ 408, /* GL_DEPTH_BOUNDS_TEST_EXT */
+ 407, /* GL_DEPTH_BOUNDS_EXT */
61, /* GL_ARRAY_BUFFER */
- 520, /* GL_ELEMENT_ARRAY_BUFFER */
+ 523, /* GL_ELEMENT_ARRAY_BUFFER */
62, /* GL_ARRAY_BUFFER_BINDING */
- 521, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */
- 2215, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
- 1224, /* GL_NORMAL_ARRAY_BUFFER_BINDING */
- 187, /* GL_COLOR_ARRAY_BUFFER_BINDING */
- 732, /* GL_INDEX_ARRAY_BUFFER_BINDING */
- 2008, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */
- 516, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */
- 1730, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */
- 573, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */
- 2272, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
- 2237, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
- 1454, /* GL_PROGRAM_INSTRUCTIONS_ARB */
- 1070, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */
- 1460, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
- 1079, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
- 1474, /* GL_PROGRAM_TEMPORARIES_ARB */
- 1085, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */
- 1462, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */
- 1081, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */
- 1466, /* GL_PROGRAM_PARAMETERS_ARB */
- 1084, /* GL_MAX_PROGRAM_PARAMETERS_ARB */
- 1461, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */
- 1080, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */
- 1445, /* GL_PROGRAM_ATTRIBS_ARB */
- 1065, /* GL_MAX_PROGRAM_ATTRIBS_ARB */
- 1459, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */
- 1078, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */
- 1443, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */
- 1063, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */
- 1457, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
- 1076, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
- 1071, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */
- 1067, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */
- 1477, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */
- 2127, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */
- 1539, /* GL_READ_ONLY */
- 2286, /* GL_WRITE_ONLY */
- 1541, /* GL_READ_WRITE */
+ 524, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */
+ 2226, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
+ 1229, /* GL_NORMAL_ARRAY_BUFFER_BINDING */
+ 190, /* GL_COLOR_ARRAY_BUFFER_BINDING */
+ 736, /* GL_INDEX_ARRAY_BUFFER_BINDING */
+ 2019, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */
+ 519, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */
+ 1737, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */
+ 577, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */
+ 2283, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
+ 2248, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
+ 1459, /* GL_PROGRAM_INSTRUCTIONS_ARB */
+ 1074, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */
+ 1465, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
+ 1083, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
+ 1479, /* GL_PROGRAM_TEMPORARIES_ARB */
+ 1089, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */
+ 1467, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */
+ 1085, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */
+ 1471, /* GL_PROGRAM_PARAMETERS_ARB */
+ 1088, /* GL_MAX_PROGRAM_PARAMETERS_ARB */
+ 1466, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */
+ 1084, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */
+ 1450, /* GL_PROGRAM_ATTRIBS_ARB */
+ 1069, /* GL_MAX_PROGRAM_ATTRIBS_ARB */
+ 1464, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */
+ 1082, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */
+ 1448, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */
+ 1067, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */
+ 1462, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
+ 1080, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
+ 1075, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */
+ 1071, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */
+ 1482, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */
+ 2138, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */
+ 1544, /* GL_READ_ONLY */
+ 2297, /* GL_WRITE_ONLY */
+ 1546, /* GL_READ_WRITE */
124, /* GL_BUFFER_ACCESS */
129, /* GL_BUFFER_MAPPED */
134, /* GL_BUFFER_MAP_POINTER */
- 2101, /* GL_TIME_ELAPSED_EXT */
- 955, /* GL_MATRIX0_ARB */
- 967, /* GL_MATRIX1_ARB */
- 979, /* GL_MATRIX2_ARB */
- 983, /* GL_MATRIX3_ARB */
- 985, /* GL_MATRIX4_ARB */
- 987, /* GL_MATRIX5_ARB */
- 989, /* GL_MATRIX6_ARB */
- 991, /* GL_MATRIX7_ARB */
- 993, /* GL_MATRIX8_ARB */
- 994, /* GL_MATRIX9_ARB */
- 957, /* GL_MATRIX10_ARB */
- 958, /* GL_MATRIX11_ARB */
- 959, /* GL_MATRIX12_ARB */
- 960, /* GL_MATRIX13_ARB */
- 961, /* GL_MATRIX14_ARB */
- 962, /* GL_MATRIX15_ARB */
- 963, /* GL_MATRIX16_ARB */
- 964, /* GL_MATRIX17_ARB */
- 965, /* GL_MATRIX18_ARB */
- 966, /* GL_MATRIX19_ARB */
- 969, /* GL_MATRIX20_ARB */
- 970, /* GL_MATRIX21_ARB */
- 971, /* GL_MATRIX22_ARB */
- 972, /* GL_MATRIX23_ARB */
- 973, /* GL_MATRIX24_ARB */
- 974, /* GL_MATRIX25_ARB */
- 975, /* GL_MATRIX26_ARB */
- 976, /* GL_MATRIX27_ARB */
- 977, /* GL_MATRIX28_ARB */
- 978, /* GL_MATRIX29_ARB */
- 981, /* GL_MATRIX30_ARB */
- 982, /* GL_MATRIX31_ARB */
- 1863, /* GL_STREAM_DRAW */
- 1865, /* GL_STREAM_READ */
- 1861, /* GL_STREAM_COPY */
- 1812, /* GL_STATIC_DRAW */
- 1814, /* GL_STATIC_READ */
- 1810, /* GL_STATIC_COPY */
- 510, /* GL_DYNAMIC_DRAW */
- 512, /* GL_DYNAMIC_READ */
- 508, /* GL_DYNAMIC_COPY */
- 1334, /* GL_PIXEL_PACK_BUFFER */
- 1338, /* GL_PIXEL_UNPACK_BUFFER */
- 1335, /* GL_PIXEL_PACK_BUFFER_BINDING */
- 1339, /* GL_PIXEL_UNPACK_BUFFER_BINDING */
- 396, /* GL_DEPTH24_STENCIL8 */
- 2090, /* GL_TEXTURE_STENCIL_SIZE */
- 2036, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */
- 1066, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */
- 1069, /* GL_MAX_PROGRAM_IF_DEPTH_NV */
- 1073, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */
- 1072, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */
- 2242, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */
- 2239, /* GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB */
- 1012, /* GL_MAX_ARRAY_TEXTURE_LAYERS */
- 1149, /* GL_MIN_PROGRAM_TEXEL_OFFSET */
- 1086, /* GL_MAX_PROGRAM_TEXEL_OFFSET */
- 1854, /* GL_STENCIL_TEST_TWO_SIDE_EXT */
+ 2112, /* GL_TIME_ELAPSED_EXT */
+ 959, /* GL_MATRIX0_ARB */
+ 971, /* GL_MATRIX1_ARB */
+ 983, /* GL_MATRIX2_ARB */
+ 987, /* GL_MATRIX3_ARB */
+ 989, /* GL_MATRIX4_ARB */
+ 991, /* GL_MATRIX5_ARB */
+ 993, /* GL_MATRIX6_ARB */
+ 995, /* GL_MATRIX7_ARB */
+ 997, /* GL_MATRIX8_ARB */
+ 998, /* GL_MATRIX9_ARB */
+ 961, /* GL_MATRIX10_ARB */
+ 962, /* GL_MATRIX11_ARB */
+ 963, /* GL_MATRIX12_ARB */
+ 964, /* GL_MATRIX13_ARB */
+ 965, /* GL_MATRIX14_ARB */
+ 966, /* GL_MATRIX15_ARB */
+ 967, /* GL_MATRIX16_ARB */
+ 968, /* GL_MATRIX17_ARB */
+ 969, /* GL_MATRIX18_ARB */
+ 970, /* GL_MATRIX19_ARB */
+ 973, /* GL_MATRIX20_ARB */
+ 974, /* GL_MATRIX21_ARB */
+ 975, /* GL_MATRIX22_ARB */
+ 976, /* GL_MATRIX23_ARB */
+ 977, /* GL_MATRIX24_ARB */
+ 978, /* GL_MATRIX25_ARB */
+ 979, /* GL_MATRIX26_ARB */
+ 980, /* GL_MATRIX27_ARB */
+ 981, /* GL_MATRIX28_ARB */
+ 982, /* GL_MATRIX29_ARB */
+ 985, /* GL_MATRIX30_ARB */
+ 986, /* GL_MATRIX31_ARB */
+ 1870, /* GL_STREAM_DRAW */
+ 1872, /* GL_STREAM_READ */
+ 1868, /* GL_STREAM_COPY */
+ 1819, /* GL_STATIC_DRAW */
+ 1821, /* GL_STATIC_READ */
+ 1817, /* GL_STATIC_COPY */
+ 513, /* GL_DYNAMIC_DRAW */
+ 515, /* GL_DYNAMIC_READ */
+ 511, /* GL_DYNAMIC_COPY */
+ 1339, /* GL_PIXEL_PACK_BUFFER */
+ 1343, /* GL_PIXEL_UNPACK_BUFFER */
+ 1340, /* GL_PIXEL_PACK_BUFFER_BINDING */
+ 1344, /* GL_PIXEL_UNPACK_BUFFER_BINDING */
+ 399, /* GL_DEPTH24_STENCIL8 */
+ 2101, /* GL_TEXTURE_STENCIL_SIZE */
+ 2047, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */
+ 1070, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */
+ 1073, /* GL_MAX_PROGRAM_IF_DEPTH_NV */
+ 1077, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */
+ 1076, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */
+ 2253, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */
+ 2250, /* GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB */
+ 1016, /* GL_MAX_ARRAY_TEXTURE_LAYERS */
+ 1154, /* GL_MIN_PROGRAM_TEXEL_OFFSET */
+ 1090, /* GL_MAX_PROGRAM_TEXEL_OFFSET */
+ 1861, /* GL_STENCIL_TEST_TWO_SIDE_EXT */
18, /* GL_ACTIVE_STENCIL_FACE_EXT */
- 1156, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */
- 1711, /* GL_SAMPLES_PASSED */
- 688, /* GL_GEOMETRY_VERTICES_OUT */
- 682, /* GL_GEOMETRY_INPUT_TYPE */
- 684, /* GL_GEOMETRY_OUTPUT_TYPE */
- 156, /* GL_CLAMP_READ_COLOR */
- 546, /* GL_FIXED_ONLY */
- 1358, /* GL_POINT_SIZE_ARRAY_TYPE_OES */
- 1357, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */
- 1356, /* GL_POINT_SIZE_ARRAY_POINTER_OES */
- 1193, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */
- 1480, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */
- 2070, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */
+ 1161, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */
+ 1718, /* GL_SAMPLES_PASSED */
+ 692, /* GL_GEOMETRY_VERTICES_OUT */
+ 686, /* GL_GEOMETRY_INPUT_TYPE */
+ 688, /* GL_GEOMETRY_OUTPUT_TYPE */
+ 1709, /* GL_SAMPLER_BINDING */
+ 164, /* GL_CLAMP_VERTEX_COLOR_ARB */
+ 156, /* GL_CLAMP_FRAGMENT_COLOR_ARB */
+ 157, /* GL_CLAMP_READ_COLOR */
+ 549, /* GL_FIXED_ONLY */
+ 1363, /* GL_POINT_SIZE_ARRAY_TYPE_OES */
+ 1362, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */
+ 1361, /* GL_POINT_SIZE_ARRAY_POINTER_OES */
+ 1198, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */
+ 1485, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */
+ 2081, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */
138, /* GL_BUFFER_SERIALIZED_MODIFY_APPLE */
128, /* GL_BUFFER_FLUSHING_UNMAP_APPLE */
- 1556, /* GL_RELEASED_APPLE */
- 2269, /* GL_VOLATILE_APPLE */
- 1595, /* GL_RETAINED_APPLE */
- 2144, /* GL_UNDEFINED_APPLE */
- 1504, /* GL_PURGEABLE_APPLE */
- 596, /* GL_FRAGMENT_SHADER */
- 2264, /* GL_VERTEX_SHADER */
- 1465, /* GL_PROGRAM_OBJECT_ARB */
- 1747, /* GL_SHADER_OBJECT_ARB */
- 1041, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */
- 1131, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */
- 1122, /* GL_MAX_VARYING_COMPONENTS */
- 1129, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */
- 1024, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */
- 1254, /* GL_OBJECT_TYPE_ARB */
- 1749, /* GL_SHADER_TYPE */
- 561, /* GL_FLOAT_VEC2 */
- 563, /* GL_FLOAT_VEC3 */
- 565, /* GL_FLOAT_VEC4 */
- 784, /* GL_INT_VEC2 */
- 786, /* GL_INT_VEC3 */
- 788, /* GL_INT_VEC4 */
+ 1561, /* GL_RELEASED_APPLE */
+ 2280, /* GL_VOLATILE_APPLE */
+ 1600, /* GL_RETAINED_APPLE */
+ 2155, /* GL_UNDEFINED_APPLE */
+ 1509, /* GL_PURGEABLE_APPLE */
+ 600, /* GL_FRAGMENT_SHADER */
+ 2275, /* GL_VERTEX_SHADER */
+ 1470, /* GL_PROGRAM_OBJECT_ARB */
+ 1754, /* GL_SHADER_OBJECT_ARB */
+ 1045, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */
+ 1136, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */
+ 1127, /* GL_MAX_VARYING_COMPONENTS */
+ 1134, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */
+ 1028, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */
+ 1259, /* GL_OBJECT_TYPE_ARB */
+ 1756, /* GL_SHADER_TYPE */
+ 565, /* GL_FLOAT_VEC2 */
+ 567, /* GL_FLOAT_VEC3 */
+ 569, /* GL_FLOAT_VEC4 */
+ 788, /* GL_INT_VEC2 */
+ 790, /* GL_INT_VEC3 */
+ 792, /* GL_INT_VEC4 */
116, /* GL_BOOL */
118, /* GL_BOOL_VEC2 */
120, /* GL_BOOL_VEC3 */
122, /* GL_BOOL_VEC4 */
- 549, /* GL_FLOAT_MAT2 */
- 553, /* GL_FLOAT_MAT3 */
- 557, /* GL_FLOAT_MAT4 */
- 1687, /* GL_SAMPLER_1D */
- 1693, /* GL_SAMPLER_2D */
- 1701, /* GL_SAMPLER_3D */
- 1705, /* GL_SAMPLER_CUBE */
- 1692, /* GL_SAMPLER_1D_SHADOW */
- 1700, /* GL_SAMPLER_2D_SHADOW */
- 1698, /* GL_SAMPLER_2D_RECT */
- 1699, /* GL_SAMPLER_2D_RECT_SHADOW */
- 551, /* GL_FLOAT_MAT2x3 */
- 552, /* GL_FLOAT_MAT2x4 */
- 555, /* GL_FLOAT_MAT3x2 */
- 556, /* GL_FLOAT_MAT3x4 */
- 559, /* GL_FLOAT_MAT4x2 */
- 560, /* GL_FLOAT_MAT4x3 */
- 394, /* GL_DELETE_STATUS */
- 286, /* GL_COMPILE_STATUS */
- 845, /* GL_LINK_STATUS */
- 2209, /* GL_VALIDATE_STATUS */
- 744, /* GL_INFO_LOG_LENGTH */
+ 553, /* GL_FLOAT_MAT2 */
+ 557, /* GL_FLOAT_MAT3 */
+ 561, /* GL_FLOAT_MAT4 */
+ 1693, /* GL_SAMPLER_1D */
+ 1699, /* GL_SAMPLER_2D */
+ 1707, /* GL_SAMPLER_3D */
+ 1712, /* GL_SAMPLER_CUBE */
+ 1698, /* GL_SAMPLER_1D_SHADOW */
+ 1706, /* GL_SAMPLER_2D_SHADOW */
+ 1704, /* GL_SAMPLER_2D_RECT */
+ 1705, /* GL_SAMPLER_2D_RECT_SHADOW */
+ 555, /* GL_FLOAT_MAT2x3 */
+ 556, /* GL_FLOAT_MAT2x4 */
+ 559, /* GL_FLOAT_MAT3x2 */
+ 560, /* GL_FLOAT_MAT3x4 */
+ 563, /* GL_FLOAT_MAT4x2 */
+ 564, /* GL_FLOAT_MAT4x3 */
+ 397, /* GL_DELETE_STATUS */
+ 289, /* GL_COMPILE_STATUS */
+ 849, /* GL_LINK_STATUS */
+ 2220, /* GL_VALIDATE_STATUS */
+ 748, /* GL_INFO_LOG_LENGTH */
64, /* GL_ATTACHED_SHADERS */
21, /* GL_ACTIVE_UNIFORMS */
22, /* GL_ACTIVE_UNIFORM_MAX_LENGTH */
- 1748, /* GL_SHADER_SOURCE_LENGTH */
+ 1755, /* GL_SHADER_SOURCE_LENGTH */
15, /* GL_ACTIVE_ATTRIBUTES */
16, /* GL_ACTIVE_ATTRIBUTE_MAX_LENGTH */
- 598, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */
- 1751, /* GL_SHADING_LANGUAGE_VERSION */
- 371, /* GL_CURRENT_PROGRAM */
- 1303, /* GL_PALETTE4_RGB8_OES */
- 1305, /* GL_PALETTE4_RGBA8_OES */
- 1301, /* GL_PALETTE4_R5_G6_B5_OES */
- 1304, /* GL_PALETTE4_RGBA4_OES */
- 1302, /* GL_PALETTE4_RGB5_A1_OES */
- 1308, /* GL_PALETTE8_RGB8_OES */
- 1310, /* GL_PALETTE8_RGBA8_OES */
- 1306, /* GL_PALETTE8_R5_G6_B5_OES */
- 1309, /* GL_PALETTE8_RGBA4_OES */
- 1307, /* GL_PALETTE8_RGB5_A1_OES */
- 725, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */
- 723, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */
- 1355, /* GL_POINT_SIZE_ARRAY_OES */
- 2014, /* GL_TEXTURE_CROP_RECT_OES */
- 996, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */
- 1354, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */
- 2192, /* GL_UNSIGNED_NORMALIZED */
- 1951, /* GL_TEXTURE_1D_ARRAY */
- 1490, /* GL_PROXY_TEXTURE_1D_ARRAY */
- 1954, /* GL_TEXTURE_2D_ARRAY */
- 1494, /* GL_PROXY_TEXTURE_2D_ARRAY */
- 1962, /* GL_TEXTURE_BINDING_1D_ARRAY */
- 1965, /* GL_TEXTURE_BINDING_2D_ARRAY */
- 1048, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS */
- 1981, /* GL_TEXTURE_BUFFER */
- 1102, /* GL_MAX_TEXTURE_BUFFER_SIZE */
- 1969, /* GL_TEXTURE_BINDING_BUFFER */
- 1982, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */
- 1983, /* GL_TEXTURE_BUFFER_FORMAT */
- 1527, /* GL_R11F_G11F_B10F */
- 2158, /* GL_UNSIGNED_INT_10F_11F_11F_REV */
- 1638, /* GL_RGB9_E5 */
- 2167, /* GL_UNSIGNED_INT_5_9_9_9_REV */
- 2088, /* GL_TEXTURE_SHARED_SIZE */
- 1804, /* GL_SRGB */
- 1805, /* GL_SRGB8 */
- 1807, /* GL_SRGB_ALPHA */
- 1806, /* GL_SRGB8_ALPHA8 */
- 1764, /* GL_SLUMINANCE_ALPHA */
- 1763, /* GL_SLUMINANCE8_ALPHA8 */
- 1761, /* GL_SLUMINANCE */
- 1762, /* GL_SLUMINANCE8 */
- 309, /* GL_COMPRESSED_SRGB */
- 310, /* GL_COMPRESSED_SRGB_ALPHA */
- 307, /* GL_COMPRESSED_SLUMINANCE */
- 308, /* GL_COMPRESSED_SLUMINANCE_ALPHA */
- 2123, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */
- 2112, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */
- 1120, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS */
- 2121, /* GL_TRANSFORM_FEEDBACK_VARYINGS */
- 2117, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */
- 2115, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */
- 1437, /* GL_PRIMITIVES_GENERATED */
- 2119, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */
- 1531, /* GL_RASTERIZER_DISCARD */
- 1116, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS */
- 1118, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS */
- 762, /* GL_INTERLEAVED_ATTRIBS */
- 1740, /* GL_SEPARATE_ATTRIBS */
- 2107, /* GL_TRANSFORM_FEEDBACK_BUFFER */
- 2109, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */
- 1373, /* GL_POINT_SPRITE_COORD_ORIGIN */
- 853, /* GL_LOWER_LEFT */
- 2206, /* GL_UPPER_LEFT */
- 1828, /* GL_STENCIL_BACK_REF */
- 1829, /* GL_STENCIL_BACK_VALUE_MASK */
- 1830, /* GL_STENCIL_BACK_WRITEMASK */
- 500, /* GL_DRAW_FRAMEBUFFER_BINDING */
- 1561, /* GL_RENDERBUFFER_BINDING */
- 1535, /* GL_READ_FRAMEBUFFER */
- 499, /* GL_DRAW_FRAMEBUFFER */
- 1536, /* GL_READ_FRAMEBUFFER_BINDING */
- 1580, /* GL_RENDERBUFFER_SAMPLES */
- 612, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */
- 609, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */
- 624, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */
- 619, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */
- 622, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */
- 630, /* GL_FRAMEBUFFER_COMPLETE */
- 635, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */
- 650, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */
- 644, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */
- 639, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */
- 645, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */
- 641, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */
- 655, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */
- 661, /* GL_FRAMEBUFFER_UNSUPPORTED */
- 659, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */
- 1020, /* GL_MAX_COLOR_ATTACHMENTS */
- 193, /* GL_COLOR_ATTACHMENT0 */
- 196, /* GL_COLOR_ATTACHMENT1 */
- 210, /* GL_COLOR_ATTACHMENT2 */
- 212, /* GL_COLOR_ATTACHMENT3 */
- 214, /* GL_COLOR_ATTACHMENT4 */
- 216, /* GL_COLOR_ATTACHMENT5 */
- 218, /* GL_COLOR_ATTACHMENT6 */
- 220, /* GL_COLOR_ATTACHMENT7 */
- 222, /* GL_COLOR_ATTACHMENT8 */
- 224, /* GL_COLOR_ATTACHMENT9 */
- 197, /* GL_COLOR_ATTACHMENT10 */
- 199, /* GL_COLOR_ATTACHMENT11 */
- 201, /* GL_COLOR_ATTACHMENT12 */
- 203, /* GL_COLOR_ATTACHMENT13 */
- 205, /* GL_COLOR_ATTACHMENT14 */
- 207, /* GL_COLOR_ATTACHMENT15 */
- 399, /* GL_DEPTH_ATTACHMENT */
- 1817, /* GL_STENCIL_ATTACHMENT */
- 600, /* GL_FRAMEBUFFER */
- 1558, /* GL_RENDERBUFFER */
- 1584, /* GL_RENDERBUFFER_WIDTH */
- 1571, /* GL_RENDERBUFFER_HEIGHT */
- 1574, /* GL_RENDERBUFFER_INTERNAL_FORMAT */
- 1849, /* GL_STENCIL_INDEX_EXT */
- 1838, /* GL_STENCIL_INDEX1 */
- 1843, /* GL_STENCIL_INDEX4 */
- 1846, /* GL_STENCIL_INDEX8 */
- 1839, /* GL_STENCIL_INDEX16 */
- 1578, /* GL_RENDERBUFFER_RED_SIZE */
- 1569, /* GL_RENDERBUFFER_GREEN_SIZE */
- 1564, /* GL_RENDERBUFFER_BLUE_SIZE */
- 1559, /* GL_RENDERBUFFER_ALPHA_SIZE */
- 1566, /* GL_RENDERBUFFER_DEPTH_SIZE */
- 1582, /* GL_RENDERBUFFER_STENCIL_SIZE */
- 653, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */
- 1097, /* GL_MAX_SAMPLES */
- 2050, /* GL_TEXTURE_GEN_STR_OES */
- 699, /* GL_HALF_FLOAT_OES */
- 1625, /* GL_RGB565_OES */
- 1655, /* GL_RGBA32UI */
- 1618, /* GL_RGB32UI */
+ 602, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */
+ 1758, /* GL_SHADING_LANGUAGE_VERSION */
+ 374, /* GL_CURRENT_PROGRAM */
+ 1308, /* GL_PALETTE4_RGB8_OES */
+ 1310, /* GL_PALETTE4_RGBA8_OES */
+ 1306, /* GL_PALETTE4_R5_G6_B5_OES */
+ 1309, /* GL_PALETTE4_RGBA4_OES */
+ 1307, /* GL_PALETTE4_RGB5_A1_OES */
+ 1313, /* GL_PALETTE8_RGB8_OES */
+ 1315, /* GL_PALETTE8_RGBA8_OES */
+ 1311, /* GL_PALETTE8_R5_G6_B5_OES */
+ 1314, /* GL_PALETTE8_RGBA4_OES */
+ 1312, /* GL_PALETTE8_RGB5_A1_OES */
+ 729, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */
+ 727, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */
+ 1360, /* GL_POINT_SIZE_ARRAY_OES */
+ 2025, /* GL_TEXTURE_CROP_RECT_OES */
+ 1000, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */
+ 1359, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */
+ 2203, /* GL_UNSIGNED_NORMALIZED */
+ 1958, /* GL_TEXTURE_1D_ARRAY */
+ 1495, /* GL_PROXY_TEXTURE_1D_ARRAY */
+ 1961, /* GL_TEXTURE_2D_ARRAY */
+ 1499, /* GL_PROXY_TEXTURE_2D_ARRAY */
+ 1969, /* GL_TEXTURE_BINDING_1D_ARRAY */
+ 1972, /* GL_TEXTURE_BINDING_2D_ARRAY */
+ 1052, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS */
+ 1989, /* GL_TEXTURE_BUFFER */
+ 1106, /* GL_MAX_TEXTURE_BUFFER_SIZE */
+ 1976, /* GL_TEXTURE_BINDING_BUFFER */
+ 1991, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */
+ 1993, /* GL_TEXTURE_BUFFER_FORMAT */
+ 1532, /* GL_R11F_G11F_B10F */
+ 2169, /* GL_UNSIGNED_INT_10F_11F_11F_REV */
+ 1643, /* GL_RGB9_E5 */
+ 2178, /* GL_UNSIGNED_INT_5_9_9_9_REV */
+ 2099, /* GL_TEXTURE_SHARED_SIZE */
+ 1811, /* GL_SRGB */
+ 1812, /* GL_SRGB8 */
+ 1814, /* GL_SRGB_ALPHA */
+ 1813, /* GL_SRGB8_ALPHA8 */
+ 1771, /* GL_SLUMINANCE_ALPHA */
+ 1770, /* GL_SLUMINANCE8_ALPHA8 */
+ 1768, /* GL_SLUMINANCE */
+ 1769, /* GL_SLUMINANCE8 */
+ 312, /* GL_COMPRESSED_SRGB */
+ 313, /* GL_COMPRESSED_SRGB_ALPHA */
+ 310, /* GL_COMPRESSED_SLUMINANCE */
+ 311, /* GL_COMPRESSED_SLUMINANCE_ALPHA */
+ 2134, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */
+ 2123, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */
+ 1125, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS */
+ 2132, /* GL_TRANSFORM_FEEDBACK_VARYINGS */
+ 2128, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */
+ 2126, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */
+ 1442, /* GL_PRIMITIVES_GENERATED */
+ 2130, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */
+ 1536, /* GL_RASTERIZER_DISCARD */
+ 1121, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS */
+ 1123, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS */
+ 766, /* GL_INTERLEAVED_ATTRIBS */
+ 1747, /* GL_SEPARATE_ATTRIBS */
+ 2118, /* GL_TRANSFORM_FEEDBACK_BUFFER */
+ 2120, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */
+ 1378, /* GL_POINT_SPRITE_COORD_ORIGIN */
+ 857, /* GL_LOWER_LEFT */
+ 2217, /* GL_UPPER_LEFT */
+ 1835, /* GL_STENCIL_BACK_REF */
+ 1836, /* GL_STENCIL_BACK_VALUE_MASK */
+ 1837, /* GL_STENCIL_BACK_WRITEMASK */
+ 503, /* GL_DRAW_FRAMEBUFFER_BINDING */
+ 1566, /* GL_RENDERBUFFER_BINDING */
+ 1540, /* GL_READ_FRAMEBUFFER */
+ 502, /* GL_DRAW_FRAMEBUFFER */
+ 1541, /* GL_READ_FRAMEBUFFER_BINDING */
+ 1585, /* GL_RENDERBUFFER_SAMPLES */
+ 616, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */
+ 613, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */
+ 628, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */
+ 623, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */
+ 626, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */
+ 634, /* GL_FRAMEBUFFER_COMPLETE */
+ 639, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */
+ 654, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */
+ 648, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */
+ 643, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */
+ 649, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */
+ 645, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */
+ 659, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */
+ 665, /* GL_FRAMEBUFFER_UNSUPPORTED */
+ 663, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */
+ 1024, /* GL_MAX_COLOR_ATTACHMENTS */
+ 196, /* GL_COLOR_ATTACHMENT0 */
+ 199, /* GL_COLOR_ATTACHMENT1 */
+ 213, /* GL_COLOR_ATTACHMENT2 */
+ 215, /* GL_COLOR_ATTACHMENT3 */
+ 217, /* GL_COLOR_ATTACHMENT4 */
+ 219, /* GL_COLOR_ATTACHMENT5 */
+ 221, /* GL_COLOR_ATTACHMENT6 */
+ 223, /* GL_COLOR_ATTACHMENT7 */
+ 225, /* GL_COLOR_ATTACHMENT8 */
+ 227, /* GL_COLOR_ATTACHMENT9 */
+ 200, /* GL_COLOR_ATTACHMENT10 */
+ 202, /* GL_COLOR_ATTACHMENT11 */
+ 204, /* GL_COLOR_ATTACHMENT12 */
+ 206, /* GL_COLOR_ATTACHMENT13 */
+ 208, /* GL_COLOR_ATTACHMENT14 */
+ 210, /* GL_COLOR_ATTACHMENT15 */
+ 402, /* GL_DEPTH_ATTACHMENT */
+ 1824, /* GL_STENCIL_ATTACHMENT */
+ 604, /* GL_FRAMEBUFFER */
+ 1563, /* GL_RENDERBUFFER */
+ 1589, /* GL_RENDERBUFFER_WIDTH */
+ 1576, /* GL_RENDERBUFFER_HEIGHT */
+ 1579, /* GL_RENDERBUFFER_INTERNAL_FORMAT */
+ 1856, /* GL_STENCIL_INDEX_EXT */
+ 1845, /* GL_STENCIL_INDEX1 */
+ 1850, /* GL_STENCIL_INDEX4 */
+ 1853, /* GL_STENCIL_INDEX8 */
+ 1846, /* GL_STENCIL_INDEX16 */
+ 1583, /* GL_RENDERBUFFER_RED_SIZE */
+ 1574, /* GL_RENDERBUFFER_GREEN_SIZE */
+ 1569, /* GL_RENDERBUFFER_BLUE_SIZE */
+ 1564, /* GL_RENDERBUFFER_ALPHA_SIZE */
+ 1571, /* GL_RENDERBUFFER_DEPTH_SIZE */
+ 1587, /* GL_RENDERBUFFER_STENCIL_SIZE */
+ 657, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */
+ 1101, /* GL_MAX_SAMPLES */
+ 2061, /* GL_TEXTURE_GEN_STR_OES */
+ 703, /* GL_HALF_FLOAT_OES */
+ 1630, /* GL_RGB565_OES */
+ 1660, /* GL_RGBA32UI */
+ 1623, /* GL_RGB32UI */
40, /* GL_ALPHA32UI_EXT */
- 754, /* GL_INTENSITY32UI_EXT */
- 870, /* GL_LUMINANCE32UI_EXT */
- 887, /* GL_LUMINANCE_ALPHA32UI_EXT */
- 1646, /* GL_RGBA16UI */
- 1610, /* GL_RGB16UI */
+ 758, /* GL_INTENSITY32UI_EXT */
+ 874, /* GL_LUMINANCE32UI_EXT */
+ 891, /* GL_LUMINANCE_ALPHA32UI_EXT */
+ 1651, /* GL_RGBA16UI */
+ 1615, /* GL_RGB16UI */
37, /* GL_ALPHA16UI_EXT */
- 751, /* GL_INTENSITY16UI_EXT */
- 865, /* GL_LUMINANCE16UI_EXT */
- 885, /* GL_LUMINANCE_ALPHA16UI_EXT */
- 1665, /* GL_RGBA8UI */
- 1633, /* GL_RGB8UI */
+ 755, /* GL_INTENSITY16UI_EXT */
+ 869, /* GL_LUMINANCE16UI_EXT */
+ 889, /* GL_LUMINANCE_ALPHA16UI_EXT */
+ 1670, /* GL_RGBA8UI */
+ 1638, /* GL_RGB8UI */
45, /* GL_ALPHA8UI_EXT */
- 759, /* GL_INTENSITY8UI_EXT */
- 879, /* GL_LUMINANCE8UI_EXT */
- 889, /* GL_LUMINANCE_ALPHA8UI_EXT */
- 1653, /* GL_RGBA32I */
- 1616, /* GL_RGB32I */
+ 763, /* GL_INTENSITY8UI_EXT */
+ 883, /* GL_LUMINANCE8UI_EXT */
+ 893, /* GL_LUMINANCE_ALPHA8UI_EXT */
+ 1658, /* GL_RGBA32I */
+ 1621, /* GL_RGB32I */
39, /* GL_ALPHA32I_EXT */
- 753, /* GL_INTENSITY32I_EXT */
- 869, /* GL_LUMINANCE32I_EXT */
- 886, /* GL_LUMINANCE_ALPHA32I_EXT */
- 1644, /* GL_RGBA16I */
- 1608, /* GL_RGB16I */
+ 757, /* GL_INTENSITY32I_EXT */
+ 873, /* GL_LUMINANCE32I_EXT */
+ 890, /* GL_LUMINANCE_ALPHA32I_EXT */
+ 1649, /* GL_RGBA16I */
+ 1613, /* GL_RGB16I */
36, /* GL_ALPHA16I_EXT */
- 750, /* GL_INTENSITY16I_EXT */
- 864, /* GL_LUMINANCE16I_EXT */
- 884, /* GL_LUMINANCE_ALPHA16I_EXT */
- 1663, /* GL_RGBA8I */
- 1631, /* GL_RGB8I */
+ 754, /* GL_INTENSITY16I_EXT */
+ 868, /* GL_LUMINANCE16I_EXT */
+ 888, /* GL_LUMINANCE_ALPHA16I_EXT */
+ 1668, /* GL_RGBA8I */
+ 1636, /* GL_RGB8I */
44, /* GL_ALPHA8I_EXT */
- 758, /* GL_INTENSITY8I_EXT */
- 878, /* GL_LUMINANCE8I_EXT */
- 888, /* GL_LUMINANCE_ALPHA8I_EXT */
- 1548, /* GL_RED_INTEGER */
- 695, /* GL_GREEN_INTEGER */
+ 762, /* GL_INTENSITY8I_EXT */
+ 882, /* GL_LUMINANCE8I_EXT */
+ 892, /* GL_LUMINANCE_ALPHA8I_EXT */
+ 1553, /* GL_RED_INTEGER */
+ 699, /* GL_GREEN_INTEGER */
113, /* GL_BLUE_INTEGER */
49, /* GL_ALPHA_INTEGER_EXT */
- 1677, /* GL_RGB_INTEGER */
- 1671, /* GL_RGBA_INTEGER */
+ 1683, /* GL_RGB_INTEGER */
+ 1677, /* GL_RGBA_INTEGER */
84, /* GL_BGR_INTEGER */
82, /* GL_BGRA_INTEGER */
- 891, /* GL_LUMINANCE_INTEGER_EXT */
- 890, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */
- 1673, /* GL_RGBA_INTEGER_MODE_EXT */
- 607, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED */
- 648, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS */
- 647, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */
- 1688, /* GL_SAMPLER_1D_ARRAY */
- 1694, /* GL_SAMPLER_2D_ARRAY */
- 1703, /* GL_SAMPLER_BUFFER */
- 1690, /* GL_SAMPLER_1D_ARRAY_SHADOW */
- 1696, /* GL_SAMPLER_2D_ARRAY_SHADOW */
- 1706, /* GL_SAMPLER_CUBE_SHADOW */
- 2186, /* GL_UNSIGNED_INT_VEC2 */
- 2188, /* GL_UNSIGNED_INT_VEC3 */
- 2190, /* GL_UNSIGNED_INT_VEC4 */
- 768, /* GL_INT_SAMPLER_1D */
- 772, /* GL_INT_SAMPLER_2D */
- 778, /* GL_INT_SAMPLER_3D */
- 782, /* GL_INT_SAMPLER_CUBE */
- 776, /* GL_INT_SAMPLER_2D_RECT */
- 769, /* GL_INT_SAMPLER_1D_ARRAY */
- 773, /* GL_INT_SAMPLER_2D_ARRAY */
- 780, /* GL_INT_SAMPLER_BUFFER */
- 2170, /* GL_UNSIGNED_INT_SAMPLER_1D */
- 2174, /* GL_UNSIGNED_INT_SAMPLER_2D */
- 2180, /* GL_UNSIGNED_INT_SAMPLER_3D */
- 2184, /* GL_UNSIGNED_INT_SAMPLER_CUBE */
- 2178, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */
- 2171, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */
- 2175, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */
- 2182, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */
- 686, /* GL_GEOMETRY_SHADER */
- 689, /* GL_GEOMETRY_VERTICES_OUT_ARB */
- 683, /* GL_GEOMETRY_INPUT_TYPE_ARB */
- 685, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */
- 1054, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */
- 1136, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */
- 1052, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS */
- 1046, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES */
- 1050, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS */
- 854, /* GL_LOW_FLOAT */
- 1138, /* GL_MEDIUM_FLOAT */
- 700, /* GL_HIGH_FLOAT */
- 855, /* GL_LOW_INT */
- 1139, /* GL_MEDIUM_INT */
- 701, /* GL_HIGH_INT */
- 2160, /* GL_UNSIGNED_INT_10_10_10_2_OES */
- 767, /* GL_INT_10_10_10_2_OES */
- 1745, /* GL_SHADER_BINARY_FORMATS */
- 1239, /* GL_NUM_SHADER_BINARY_FORMATS */
- 1746, /* GL_SHADER_COMPILER */
- 1133, /* GL_MAX_VERTEX_UNIFORM_VECTORS */
- 1125, /* GL_MAX_VARYING_VECTORS */
- 1043, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */
- 1524, /* GL_QUERY_WAIT */
- 1518, /* GL_QUERY_NO_WAIT */
- 1514, /* GL_QUERY_BY_REGION_WAIT */
- 1512, /* GL_QUERY_BY_REGION_NO_WAIT */
- 2105, /* GL_TRANSFORM_FEEDBACK */
- 2114, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */
- 2108, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */
- 2106, /* GL_TRANSFORM_FEEDBACK_BINDING */
- 1508, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */
- 542, /* GL_FIRST_VERTEX_CONVENTION */
- 800, /* GL_LAST_VERTEX_CONVENTION */
- 1482, /* GL_PROVOKING_VERTEX */
- 350, /* GL_COPY_READ_BUFFER */
- 351, /* GL_COPY_WRITE_BUFFER */
- 1551, /* GL_RED_SNORM */
- 1684, /* GL_RG_SNORM */
- 1683, /* GL_RGB_SNORM */
- 1676, /* GL_RGBA_SNORM */
- 1530, /* GL_R8_SNORM */
- 1598, /* GL_RG8_SNORM */
- 1637, /* GL_RGB8_SNORM */
- 1669, /* GL_RGBA8_SNORM */
- 1528, /* GL_R16_SNORM */
- 1597, /* GL_RG16_SNORM */
- 1613, /* GL_RGB16_SNORM */
- 1649, /* GL_RGBA16_SNORM */
- 1757, /* GL_SIGNED_NORMALIZED */
- 1439, /* GL_PRIMITIVE_RESTART */
- 1440, /* GL_PRIMITIVE_RESTART_INDEX */
- 1099, /* GL_MAX_SERVER_WAIT_TIMEOUT */
- 1253, /* GL_OBJECT_TYPE */
- 1870, /* GL_SYNC_CONDITION */
- 1875, /* GL_SYNC_STATUS */
- 1872, /* GL_SYNC_FLAGS */
- 1871, /* GL_SYNC_FENCE */
- 1874, /* GL_SYNC_GPU_COMMANDS_COMPLETE */
- 2153, /* GL_UNSIGNALED */
- 1756, /* GL_SIGNALED */
+ 895, /* GL_LUMINANCE_INTEGER_EXT */
+ 894, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */
+ 1679, /* GL_RGBA_INTEGER_MODE_EXT */
+ 611, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED */
+ 652, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS */
+ 651, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */
+ 1694, /* GL_SAMPLER_1D_ARRAY */
+ 1700, /* GL_SAMPLER_2D_ARRAY */
+ 1710, /* GL_SAMPLER_BUFFER */
+ 1696, /* GL_SAMPLER_1D_ARRAY_SHADOW */
+ 1702, /* GL_SAMPLER_2D_ARRAY_SHADOW */
+ 1713, /* GL_SAMPLER_CUBE_SHADOW */
+ 2197, /* GL_UNSIGNED_INT_VEC2 */
+ 2199, /* GL_UNSIGNED_INT_VEC3 */
+ 2201, /* GL_UNSIGNED_INT_VEC4 */
+ 772, /* GL_INT_SAMPLER_1D */
+ 776, /* GL_INT_SAMPLER_2D */
+ 782, /* GL_INT_SAMPLER_3D */
+ 786, /* GL_INT_SAMPLER_CUBE */
+ 780, /* GL_INT_SAMPLER_2D_RECT */
+ 773, /* GL_INT_SAMPLER_1D_ARRAY */
+ 777, /* GL_INT_SAMPLER_2D_ARRAY */
+ 784, /* GL_INT_SAMPLER_BUFFER */
+ 2181, /* GL_UNSIGNED_INT_SAMPLER_1D */
+ 2185, /* GL_UNSIGNED_INT_SAMPLER_2D */
+ 2191, /* GL_UNSIGNED_INT_SAMPLER_3D */
+ 2195, /* GL_UNSIGNED_INT_SAMPLER_CUBE */
+ 2189, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */
+ 2182, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */
+ 2186, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */
+ 2193, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */
+ 690, /* GL_GEOMETRY_SHADER */
+ 693, /* GL_GEOMETRY_VERTICES_OUT_ARB */
+ 687, /* GL_GEOMETRY_INPUT_TYPE_ARB */
+ 689, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */
+ 1058, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */
+ 1141, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */
+ 1056, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS */
+ 1050, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES */
+ 1054, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS */
+ 858, /* GL_LOW_FLOAT */
+ 1143, /* GL_MEDIUM_FLOAT */
+ 704, /* GL_HIGH_FLOAT */
+ 859, /* GL_LOW_INT */
+ 1144, /* GL_MEDIUM_INT */
+ 705, /* GL_HIGH_INT */
+ 2171, /* GL_UNSIGNED_INT_10_10_10_2_OES */
+ 771, /* GL_INT_10_10_10_2_OES */
+ 1752, /* GL_SHADER_BINARY_FORMATS */
+ 1244, /* GL_NUM_SHADER_BINARY_FORMATS */
+ 1753, /* GL_SHADER_COMPILER */
+ 1138, /* GL_MAX_VERTEX_UNIFORM_VECTORS */
+ 1130, /* GL_MAX_VARYING_VECTORS */
+ 1047, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */
+ 1529, /* GL_QUERY_WAIT */
+ 1523, /* GL_QUERY_NO_WAIT */
+ 1519, /* GL_QUERY_BY_REGION_WAIT */
+ 1517, /* GL_QUERY_BY_REGION_NO_WAIT */
+ 2116, /* GL_TRANSFORM_FEEDBACK */
+ 2125, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */
+ 2119, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */
+ 2117, /* GL_TRANSFORM_FEEDBACK_BINDING */
+ 1513, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */
+ 545, /* GL_FIRST_VERTEX_CONVENTION */
+ 804, /* GL_LAST_VERTEX_CONVENTION */
+ 1487, /* GL_PROVOKING_VERTEX */
+ 353, /* GL_COPY_READ_BUFFER */
+ 354, /* GL_COPY_WRITE_BUFFER */
+ 1556, /* GL_RED_SNORM */
+ 1690, /* GL_RG_SNORM */
+ 1689, /* GL_RGB_SNORM */
+ 1682, /* GL_RGBA_SNORM */
+ 1535, /* GL_R8_SNORM */
+ 1603, /* GL_RG8_SNORM */
+ 1642, /* GL_RGB8_SNORM */
+ 1674, /* GL_RGBA8_SNORM */
+ 1533, /* GL_R16_SNORM */
+ 1602, /* GL_RG16_SNORM */
+ 1618, /* GL_RGB16_SNORM */
+ 1654, /* GL_RGBA16_SNORM */
+ 1764, /* GL_SIGNED_NORMALIZED */
+ 1444, /* GL_PRIMITIVE_RESTART */
+ 1445, /* GL_PRIMITIVE_RESTART_INDEX */
+ 1103, /* GL_MAX_SERVER_WAIT_TIMEOUT */
+ 1258, /* GL_OBJECT_TYPE */
+ 1877, /* GL_SYNC_CONDITION */
+ 1882, /* GL_SYNC_STATUS */
+ 1879, /* GL_SYNC_FLAGS */
+ 1878, /* GL_SYNC_FENCE */
+ 1881, /* GL_SYNC_GPU_COMMANDS_COMPLETE */
+ 2164, /* GL_UNSIGNALED */
+ 1763, /* GL_SIGNALED */
54, /* GL_ALREADY_SIGNALED */
- 2100, /* GL_TIMEOUT_EXPIRED */
- 312, /* GL_CONDITION_SATISFIED */
- 2270, /* GL_WAIT_FAILED */
+ 2111, /* GL_TIMEOUT_EXPIRED */
+ 315, /* GL_CONDITION_SATISFIED */
+ 2281, /* GL_WAIT_FAILED */
126, /* GL_BUFFER_ACCESS_FLAGS */
132, /* GL_BUFFER_MAP_LENGTH */
133, /* GL_BUFFER_MAP_OFFSET */
- 1128, /* GL_MAX_VERTEX_OUTPUT_COMPONENTS */
- 1044, /* GL_MAX_GEOMETRY_INPUT_COMPONENTS */
- 1045, /* GL_MAX_GEOMETRY_OUTPUT_COMPONENTS */
- 1040, /* GL_MAX_FRAGMENT_INPUT_COMPONENTS */
- 326, /* GL_CONTEXT_PROFILE_MASK */
- 527, /* GL_EVAL_BIT */
- 1533, /* GL_RASTER_POSITION_UNCLIPPED_IBM */
- 847, /* GL_LIST_BIT */
- 1976, /* GL_TEXTURE_BIT */
- 1726, /* GL_SCISSOR_BIT */
+ 1133, /* GL_MAX_VERTEX_OUTPUT_COMPONENTS */
+ 1048, /* GL_MAX_GEOMETRY_INPUT_COMPONENTS */
+ 1049, /* GL_MAX_GEOMETRY_OUTPUT_COMPONENTS */
+ 1044, /* GL_MAX_FRAGMENT_INPUT_COMPONENTS */
+ 329, /* GL_CONTEXT_PROFILE_MASK */
+ 530, /* GL_EVAL_BIT */
+ 1538, /* GL_RASTER_POSITION_UNCLIPPED_IBM */
+ 851, /* GL_LIST_BIT */
+ 1984, /* GL_TEXTURE_BIT */
+ 1733, /* GL_SCISSOR_BIT */
30, /* GL_ALL_ATTRIB_BITS */
- 1204, /* GL_MULTISAMPLE_BIT */
+ 1209, /* GL_MULTISAMPLE_BIT */
31, /* GL_ALL_CLIENT_ATTRIB_BITS */
};
diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c
index 4b6e91c4f31..8a0ab961523 100644
--- a/src/mesa/main/extensions.c
+++ b/src/mesa/main/extensions.c
@@ -79,6 +79,7 @@ static const struct extension extension_table[] = {
/* ARB Extensions */
{ "GL_ARB_ES2_compatibility", o(ARB_ES2_compatibility), GL, 2009 },
{ "GL_ARB_blend_func_extended", o(ARB_blend_func_extended), GL, 2009 },
+ { "GL_ARB_color_buffer_float", o(ARB_color_buffer_float), GL, 2004 },
{ "GL_ARB_copy_buffer", o(ARB_copy_buffer), GL, 2008 },
{ "GL_ARB_depth_buffer_float", o(ARB_depth_buffer_float), GL, 2008 },
{ "GL_ARB_depth_clamp", o(ARB_depth_clamp), GL, 2003 },
@@ -123,6 +124,7 @@ static const struct extension extension_table[] = {
{ "GL_ARB_texture_env_combine", o(ARB_texture_env_combine), GL, 2001 },
{ "GL_ARB_texture_env_crossbar", o(ARB_texture_env_crossbar), GL, 2001 },
{ "GL_ARB_texture_env_dot3", o(ARB_texture_env_dot3), GL, 2001 },
+ { "GL_ARB_texture_float", o(ARB_texture_float), GL, 2004 },
{ "GL_ARB_texture_mirrored_repeat", o(ARB_texture_mirrored_repeat), GL, 2001 },
{ "GL_ARB_texture_multisample", o(ARB_texture_multisample), GL, 2009 },
{ "GL_ARB_texture_non_power_of_two", o(ARB_texture_non_power_of_two), GL, 2003 },
@@ -202,6 +204,7 @@ static const struct extension extension_table[] = {
{ "GL_EXT_texture", o(EXT_texture), GL, 1996 },
{ "GL_EXT_texture_rectangle", o(NV_texture_rectangle), GL, 2004 },
{ "GL_EXT_texture_shared_exponent", o(EXT_texture_shared_exponent), GL, 2004 },
+ { "GL_EXT_texture_snorm", o(EXT_texture_snorm), GL, 2009 },
{ "GL_EXT_texture_sRGB", o(EXT_texture_sRGB), GL, 2004 },
{ "GL_EXT_texture_sRGB_decode", o(EXT_texture_sRGB_decode), GL, 2006 },
{ "GL_EXT_texture_swizzle", o(EXT_texture_swizzle), GL, 2008 },
@@ -260,11 +263,13 @@ static const struct extension extension_table[] = {
{ "GL_APPLE_packed_pixels", o(APPLE_packed_pixels), GL, 2002 },
{ "GL_APPLE_vertex_array_object", o(APPLE_vertex_array_object), GL, 2002 },
{ "GL_ATI_blend_equation_separate", o(EXT_blend_equation_separate), GL, 2003 },
+ { "GL_ATI_draw_buffers", o(ARB_draw_buffers), GL, 2002 },
{ "GL_ATI_envmap_bumpmap", o(ATI_envmap_bumpmap), GL, 2001 },
{ "GL_ATI_fragment_shader", o(ATI_fragment_shader), GL, 2001 },
{ "GL_ATI_separate_stencil", o(ATI_separate_stencil), GL, 2006 },
{ "GL_ATI_texture_compression_3dc", o(ATI_texture_compression_3dc), GL, 2004 },
{ "GL_ATI_texture_env_combine3", o(ATI_texture_env_combine3), GL, 2002 },
+ { "GL_ATI_texture_float", o(ARB_texture_float), GL, 2002 },
{ "GL_ATI_texture_mirror_once", o(ATI_texture_mirror_once), GL, 2006 },
{ "GL_IBM_multimode_draw_arrays", o(IBM_multimode_draw_arrays), GL, 1998 },
{ "GL_IBM_rasterpos_clip", o(IBM_rasterpos_clip), GL, 1996 },
@@ -273,9 +278,8 @@ static const struct extension extension_table[] = {
{ "GL_MESA_pack_invert", o(MESA_pack_invert), GL, 2002 },
{ "GL_MESA_resize_buffers", o(MESA_resize_buffers), GL, 1999 },
{ "GL_MESA_texture_array", o(MESA_texture_array), GL, 2007 },
- { "GL_MESA_texture_signed_rgba", o(MESA_texture_signed_rgba), GL, 2009 },
+ { "GL_MESA_texture_signed_rgba", o(EXT_texture_snorm), GL, 2009 },
{ "GL_MESA_window_pos", o(ARB_window_pos), GL, 2000 },
- { "GL_MESAX_texture_float", o(ARB_texture_float), GL, 2009 },
{ "GL_MESA_ycbcr_texture", o(MESA_ycbcr_texture), GL, 2002 },
{ "GL_NV_blend_square", o(NV_blend_square), GL, 1999 },
{ "GL_NV_conditional_render", o(NV_conditional_render), GL, 2008 },
@@ -753,7 +757,7 @@ _mesa_extension_is_enabled( struct gl_context *ctx, const char *name )
static char *
get_extension_override( struct gl_context *ctx )
{
- const char *env_const= _mesa_getenv("MESA_EXTENSION_OVERRIDE");
+ const char *env_const = _mesa_getenv("MESA_EXTENSION_OVERRIDE");
char *env;
char *ext;
char *extra_exts;
@@ -794,7 +798,7 @@ get_extension_override( struct gl_context *ctx )
}
/* Remove trailing space. */
- len = strlen(extra_exts);
+ len = strlen(extra_exts);
if (extra_exts[len - 1] == ' ')
extra_exts[len - 1] = '\0';
@@ -875,12 +879,24 @@ _mesa_make_extension_string(struct gl_context *ctx)
GLboolean *base = (GLboolean *) &ctx->Extensions;
const struct extension *i;
unsigned j;
-
+ unsigned maxYear = ~0;
+
+ /* Check if the MESA_EXTENSION_MAX_YEAR env var is set */
+ {
+ const char *env = getenv("MESA_EXTENSION_MAX_YEAR");
+ if (env) {
+ maxYear = atoi(env);
+ _mesa_debug(ctx, "Note: limiting GL extensions to %u or earlier\n",
+ maxYear);
+ }
+ }
/* Compute length of the extension string. */
count = 0;
for (i = extension_table; i->name != 0; ++i) {
- if (base[i->offset] && (i->api_set & (1 << ctx->API))) {
+ if (base[i->offset] &&
+ i->year <= maxYear &&
+ (i->api_set & (1 << ctx->API))) {
length += strlen(i->name) + 1; /* +1 for space */
++count;
}
@@ -894,7 +910,7 @@ _mesa_make_extension_string(struct gl_context *ctx)
return NULL;
}
- extension_indices = malloc(count * sizeof extension_indices);
+ extension_indices = malloc(count * sizeof(extension_index));
if (extension_indices == NULL) {
free(exts);
free(extra_extensions);
@@ -908,7 +924,9 @@ _mesa_make_extension_string(struct gl_context *ctx)
*/
j = 0;
for (i = extension_table; i->name != 0; ++i) {
- if (base[i->offset] && (i->api_set & (1 << ctx->API))) {
+ if (base[i->offset] &&
+ i->year <= maxYear &&
+ (i->api_set & (1 << ctx->API))) {
extension_indices[j++] = i - extension_table;
}
}
diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c
index ffdd0842562..1edb310ea13 100644
--- a/src/mesa/main/fbobject.c
+++ b/src/mesa/main/fbobject.c
@@ -335,7 +335,7 @@ _mesa_set_texture_attachment(struct gl_context *ctx,
att->Zoffset = zoffset;
att->Complete = GL_FALSE;
- if (att->Texture->Image[att->CubeMapFace][att->TextureLevel]) {
+ if (_mesa_get_attachment_teximage(att)) {
ctx->Driver.RenderTexture(ctx, fb, att);
}
@@ -716,8 +716,8 @@ _mesa_test_framebuffer_completeness(struct gl_context *ctx,
/* get width, height, format of the renderbuffer/texture
*/
if (att->Type == GL_TEXTURE) {
- const struct gl_texture_image *texImg
- = att->Texture->Image[att->CubeMapFace][att->TextureLevel];
+ const struct gl_texture_image *texImg =
+ _mesa_get_attachment_teximage(att);
minWidth = MIN2(minWidth, texImg->Width);
maxWidth = MAX2(maxWidth, texImg->Width);
minHeight = MIN2(minHeight, texImg->Height);
@@ -746,7 +746,7 @@ _mesa_test_framebuffer_completeness(struct gl_context *ctx,
continue;
}
- if (numSamples < 0) {
+ if (att->Renderbuffer && numSamples < 0) {
/* first buffer */
numSamples = att->Renderbuffer->NumSamples;
}
@@ -1081,7 +1081,6 @@ _mesa_base_fbo_format(struct gl_context *ctx, GLenum internalFormat)
case GL_RGB10_A2:
case GL_RGBA12:
case GL_RGBA16:
- case GL_RGBA16_SNORM:
case GL_SRGB8_ALPHA8_EXT:
return GL_RGBA;
case GL_STENCIL_INDEX:
@@ -1109,7 +1108,74 @@ _mesa_base_fbo_format(struct gl_context *ctx, GLenum internalFormat)
case GL_RG8:
case GL_RG16:
return ctx->Extensions.ARB_texture_rg ? GL_RG : 0;
- /* XXX add floating point and integer formats eventually */
+ /* signed normalized texture formats */
+ case GL_RED_SNORM:
+ case GL_R8_SNORM:
+ case GL_R16_SNORM:
+ return ctx->Extensions.EXT_texture_snorm ? GL_RED : 0;
+ case GL_RG_SNORM:
+ case GL_RG8_SNORM:
+ case GL_RG16_SNORM:
+ return ctx->Extensions.EXT_texture_snorm ? GL_RG : 0;
+ case GL_RGB_SNORM:
+ case GL_RGB8_SNORM:
+ case GL_RGB16_SNORM:
+ return ctx->Extensions.EXT_texture_snorm ? GL_RGB : 0;
+ case GL_RGBA_SNORM:
+ case GL_RGBA8_SNORM:
+ case GL_RGBA16_SNORM:
+ return ctx->Extensions.EXT_texture_snorm ? GL_RGBA : 0;
+ case GL_ALPHA_SNORM:
+ case GL_ALPHA8_SNORM:
+ case GL_ALPHA16_SNORM:
+ return ctx->Extensions.EXT_texture_snorm &&
+ ctx->Extensions.ARB_framebuffer_object ? GL_ALPHA : 0;
+ case GL_LUMINANCE_SNORM:
+ case GL_LUMINANCE8_SNORM:
+ case GL_LUMINANCE16_SNORM:
+ return ctx->Extensions.EXT_texture_snorm &&
+ ctx->Extensions.ARB_framebuffer_object ? GL_LUMINANCE : 0;
+ case GL_LUMINANCE_ALPHA_SNORM:
+ case GL_LUMINANCE8_ALPHA8_SNORM:
+ case GL_LUMINANCE16_ALPHA16_SNORM:
+ return ctx->Extensions.EXT_texture_snorm &&
+ ctx->Extensions.ARB_framebuffer_object ? GL_LUMINANCE_ALPHA : 0;
+ case GL_INTENSITY_SNORM:
+ case GL_INTENSITY8_SNORM:
+ case GL_INTENSITY16_SNORM:
+ return ctx->Extensions.EXT_texture_snorm &&
+ ctx->Extensions.ARB_framebuffer_object ? GL_INTENSITY : 0;
+ case GL_R16F:
+ case GL_R32F:
+ return ctx->Extensions.ARB_texture_rg &&
+ ctx->Extensions.ARB_texture_float ? GL_RED : 0;
+ case GL_RG16F:
+ case GL_RG32F:
+ return ctx->Extensions.ARB_texture_rg &&
+ ctx->Extensions.ARB_texture_float ? GL_RG : 0;
+ case GL_RGB16F:
+ case GL_RGB32F:
+ return ctx->Extensions.ARB_texture_float ? GL_RGB : 0;
+ case GL_RGBA16F:
+ case GL_RGBA32F:
+ return ctx->Extensions.ARB_texture_float ? GL_RGBA : 0;
+ case GL_ALPHA16F_ARB:
+ case GL_ALPHA32F_ARB:
+ return ctx->Extensions.ARB_texture_float &&
+ ctx->Extensions.ARB_framebuffer_object ? GL_ALPHA : 0;
+ case GL_LUMINANCE16F_ARB:
+ case GL_LUMINANCE32F_ARB:
+ return ctx->Extensions.ARB_texture_float &&
+ ctx->Extensions.ARB_framebuffer_object ? GL_LUMINANCE : 0;
+ case GL_LUMINANCE_ALPHA16F_ARB:
+ case GL_LUMINANCE_ALPHA32F_ARB:
+ return ctx->Extensions.ARB_texture_float &&
+ ctx->Extensions.ARB_framebuffer_object ? GL_LUMINANCE_ALPHA : 0;
+ case GL_INTENSITY16F_ARB:
+ case GL_INTENSITY32F_ARB:
+ return ctx->Extensions.ARB_texture_float &&
+ ctx->Extensions.ARB_framebuffer_object ? GL_INTENSITY : 0;
+ /* XXX add integer formats eventually */
default:
return 0;
}
@@ -1460,9 +1526,7 @@ check_begin_texture_render(struct gl_context *ctx, struct gl_framebuffer *fb)
for (i = 0; i < BUFFER_COUNT; i++) {
struct gl_renderbuffer_attachment *att = fb->Attachment + i;
- struct gl_texture_object *texObj = att->Texture;
- if (texObj
- && texObj->Image[att->CubeMapFace][att->TextureLevel]) {
+ if (att->Texture && _mesa_get_attachment_teximage(att)) {
ctx->Driver.RenderTexture(ctx, fb, att);
}
}
@@ -2321,7 +2385,7 @@ _mesa_BlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
if ((mask & (GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT))
&& filter != GL_NEAREST) {
_mesa_error(ctx, GL_INVALID_OPERATION,
- "glBlitFramebufferEXT(depth/stencil requires GL_NEAREST filter");
+ "glBlitFramebufferEXT(depth/stencil requires GL_NEAREST filter)");
return;
}
@@ -2342,7 +2406,7 @@ _mesa_BlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
_mesa_get_format_bits(readRb->Format, GL_STENCIL_BITS) !=
_mesa_get_format_bits(drawRb->Format, GL_STENCIL_BITS)) {
_mesa_error(ctx, GL_INVALID_OPERATION,
- "glBlitFramebufferEXT(stencil buffer size mismatch");
+ "glBlitFramebufferEXT(stencil buffer size mismatch)");
return;
}
}
@@ -2355,7 +2419,7 @@ _mesa_BlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
_mesa_get_format_bits(readRb->Format, GL_DEPTH_BITS) !=
_mesa_get_format_bits(drawRb->Format, GL_DEPTH_BITS)) {
_mesa_error(ctx, GL_INVALID_OPERATION,
- "glBlitFramebufferEXT(depth buffer size mismatch");
+ "glBlitFramebufferEXT(depth buffer size mismatch)");
return;
}
}
@@ -2374,7 +2438,7 @@ _mesa_BlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
if (srcX1 - srcX0 != dstX1 - dstX0 ||
srcY1 - srcY0 != dstY1 - dstY0) {
_mesa_error(ctx, GL_INVALID_OPERATION,
- "glBlitFramebufferEXT(bad src/dst multisample region sizes");
+ "glBlitFramebufferEXT(bad src/dst multisample region sizes)");
return;
}
@@ -2383,7 +2447,7 @@ _mesa_BlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
colorDrawRb &&
colorReadRb->Format != colorDrawRb->Format) {
_mesa_error(ctx, GL_INVALID_OPERATION,
- "glBlitFramebufferEXT(bad src/dst multisample pixel formats");
+ "glBlitFramebufferEXT(bad src/dst multisample pixel formats)");
return;
}
}
diff --git a/src/mesa/main/fbobject.h b/src/mesa/main/fbobject.h
index ba74a95b74c..7eb20050209 100644
--- a/src/mesa/main/fbobject.h
+++ b/src/mesa/main/fbobject.h
@@ -26,6 +26,7 @@
#ifndef FBOBJECT_H
#define FBOBJECT_H
+#include "compiler.h"
#include "glheader.h"
struct gl_context;
@@ -48,6 +49,24 @@ _mesa_get_attachment(struct gl_context *ctx, struct gl_framebuffer *fb,
GLenum attachment);
+/** Return the texture image for a renderbuffer attachment */
+static INLINE struct gl_texture_image *
+_mesa_get_attachment_teximage(struct gl_renderbuffer_attachment *att)
+{
+ assert(att->Type == GL_TEXTURE);
+ return att->Texture->Image[att->CubeMapFace][att->TextureLevel];
+}
+
+
+/** Return the (const) texture image for a renderbuffer attachment */
+static INLINE const struct gl_texture_image *
+_mesa_get_attachment_teximage_const(const struct gl_renderbuffer_attachment *att)
+{
+ assert(att->Type == GL_TEXTURE);
+ return att->Texture->Image[att->CubeMapFace][att->TextureLevel];
+}
+
+
extern void
_mesa_remove_attachment(struct gl_context *ctx,
struct gl_renderbuffer_attachment *att);
@@ -65,14 +84,16 @@ _mesa_set_renderbuffer_attachment(struct gl_context *ctx,
struct gl_renderbuffer *rb);
extern void
-_mesa_framebuffer_renderbuffer(struct gl_context *ctx, struct gl_framebuffer *fb,
+_mesa_framebuffer_renderbuffer(struct gl_context *ctx,
+ struct gl_framebuffer *fb,
GLenum attachment, struct gl_renderbuffer *rb);
extern void
_mesa_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb);
extern void
-_mesa_test_framebuffer_completeness(struct gl_context *ctx, struct gl_framebuffer *fb);
+_mesa_test_framebuffer_completeness(struct gl_context *ctx,
+ struct gl_framebuffer *fb);
extern GLboolean
_mesa_is_legal_color_format(const struct gl_context *ctx, GLenum baseFormat);
diff --git a/src/mesa/main/ff_fragment_shader.cpp b/src/mesa/main/ff_fragment_shader.cpp
index 9be531735ed..0b53c28f7ae 100644
--- a/src/mesa/main/ff_fragment_shader.cpp
+++ b/src/mesa/main/ff_fragment_shader.cpp
@@ -439,9 +439,10 @@ static GLuint make_state_key( struct gl_context *ctx, struct state_key *key )
key->unit[i].source_index =
translate_tex_src_bit(texUnit->_ReallyEnabled);
- key->unit[i].shadow = ((texObj->CompareMode == GL_COMPARE_R_TO_TEXTURE) &&
- ((format == GL_DEPTH_COMPONENT) ||
- (format == GL_DEPTH_STENCIL_EXT)));
+ key->unit[i].shadow =
+ ((texObj->Sampler.CompareMode == GL_COMPARE_R_TO_TEXTURE) &&
+ ((format == GL_DEPTH_COMPONENT) ||
+ (format == GL_DEPTH_STENCIL_EXT)));
key->unit[i].NumArgsRGB = comb->_NumArgsRGB;
key->unit[i].NumArgsA = comb->_NumArgsA;
@@ -726,7 +727,7 @@ static struct ureg register_input( struct texenv_fragment_program *p, GLuint inp
}
else {
GLuint idx = frag_to_vert_attrib( input );
- return register_param3( p, STATE_INTERNAL, STATE_CURRENT_ATTRIB, idx );
+ return register_param3( p, STATE_INTERNAL, STATE_CURRENT_ATTRIB_MAYBE_VP_CLAMPED, idx );
}
}
@@ -1529,15 +1530,26 @@ create_new_program(struct gl_context *ctx, struct state_key *key,
*/
emit_arith( &p, OPCODE_END, undef, WRITEMASK_XYZW, 0, undef, undef, undef);
- if (key->fog_enabled) {
- /* Pull fog mode from struct gl_context, the value in the state key is
- * a reduced value and not what is expected in FogOption
- */
- p.program->FogOption = ctx->Fog.Mode;
- p.program->Base.InputsRead |= FRAG_BIT_FOGC;
+ /* Allocate final instruction array. This has to be done before calling
+ * _mesa_append_fog_code because that function frees the Base.Instructions.
+ * At this point, Base.Instructions points to stack data, so it's a really
+ * bad idea to free it.
+ */
+ p.program->Base.Instructions
+ = _mesa_alloc_instructions(p.program->Base.NumInstructions);
+ if (!p.program->Base.Instructions) {
+ _mesa_error(ctx, GL_OUT_OF_MEMORY,
+ "generating tex env program");
+ return;
}
- else {
- p.program->FogOption = GL_NONE;
+ _mesa_copy_instructions(p.program->Base.Instructions, instBuffer,
+ p.program->Base.NumInstructions);
+
+ /* Append fog code. This must be done before checking the program against
+ * the limits becuase it will potentially add some instructions.
+ */
+ if (key->fog_enabled) {
+ _mesa_append_fog_code(ctx, p.program, ctx->Fog.Mode, GL_FALSE);
}
if (p.program->Base.NumTexIndirections > ctx->Const.FragmentProgram.MaxTexIndirections)
@@ -1551,23 +1563,6 @@ create_new_program(struct gl_context *ctx, struct state_key *key,
ASSERT(p.program->Base.NumInstructions <= MAX_INSTRUCTIONS);
- /* Allocate final instruction array */
- p.program->Base.Instructions
- = _mesa_alloc_instructions(p.program->Base.NumInstructions);
- if (!p.program->Base.Instructions) {
- _mesa_error(ctx, GL_OUT_OF_MEMORY,
- "generating tex env program");
- return;
- }
- _mesa_copy_instructions(p.program->Base.Instructions, instBuffer,
- p.program->Base.NumInstructions);
-
- if (key->num_draw_buffers && p.program->FogOption) {
- _mesa_append_fog_code(ctx, p.program);
- p.program->FogOption = GL_NONE;
- }
-
-
/* Notify driver the fragment program has (actually) changed.
*/
if (ctx->Driver.ProgramStringNotify) {
diff --git a/src/mesa/main/fog.c b/src/mesa/main/fog.c
index fd64bd1fd89..88aa31a7fcb 100644
--- a/src/mesa/main/fog.c
+++ b/src/mesa/main/fog.c
@@ -79,12 +79,17 @@ _mesa_Fogiv(GLenum pname, const GLint *params )
}
-#define UPDATE_FOG_SCALE(ctx) do {\
- if (ctx->Fog.End == ctx->Fog.Start)\
- ctx->Fog._Scale = 1.0f;\
- else\
- ctx->Fog._Scale = 1.0f / (ctx->Fog.End - ctx->Fog.Start);\
- } while(0)
+/**
+ * Update the gl_fog_attrib::_Scale field.
+ */
+static void
+update_fog_scale(struct gl_context *ctx)
+{
+ if (ctx->Fog.End == ctx->Fog.Start)
+ ctx->Fog._Scale = 1.0f;
+ else
+ ctx->Fog._Scale = 1.0f / (ctx->Fog.End - ctx->Fog.Start);
+}
void GLAPIENTRY
@@ -126,14 +131,14 @@ _mesa_Fogfv( GLenum pname, const GLfloat *params )
return;
FLUSH_VERTICES(ctx, _NEW_FOG);
ctx->Fog.Start = *params;
- UPDATE_FOG_SCALE(ctx);
+ update_fog_scale(ctx);
break;
case GL_FOG_END:
if (ctx->Fog.End == *params)
return;
FLUSH_VERTICES(ctx, _NEW_FOG);
ctx->Fog.End = *params;
- UPDATE_FOG_SCALE(ctx);
+ update_fog_scale(ctx);
break;
case GL_FOG_INDEX:
if (ctx->Fog.Index == *params)
@@ -145,6 +150,10 @@ _mesa_Fogfv( GLenum pname, const GLfloat *params )
if (TEST_EQ_4V(ctx->Fog.Color, params))
return;
FLUSH_VERTICES(ctx, _NEW_FOG);
+ ctx->Fog.ColorUnclamped[0] = params[0];
+ ctx->Fog.ColorUnclamped[1] = params[1];
+ ctx->Fog.ColorUnclamped[2] = params[2];
+ ctx->Fog.ColorUnclamped[3] = params[3];
ctx->Fog.Color[0] = CLAMP(params[0], 0.0F, 1.0F);
ctx->Fog.Color[1] = CLAMP(params[1], 0.0F, 1.0F);
ctx->Fog.Color[2] = CLAMP(params[2], 0.0F, 1.0F);
@@ -184,6 +193,7 @@ void _mesa_init_fog( struct gl_context * ctx )
ctx->Fog.Enabled = GL_FALSE;
ctx->Fog.Mode = GL_EXP;
ASSIGN_4V( ctx->Fog.Color, 0.0, 0.0, 0.0, 0.0 );
+ ASSIGN_4V( ctx->Fog.ColorUnclamped, 0.0, 0.0, 0.0, 0.0 );
ctx->Fog.Index = 0.0;
ctx->Fog.Density = 1.0;
ctx->Fog.Start = 0.0;
diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c
index db10c9b4c2e..4c31ccb763c 100644
--- a/src/mesa/main/formats.c
+++ b/src/mesa/main/formats.c
@@ -677,7 +677,7 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] =
{
MESA_FORMAT_LUMINANCE_FLOAT32,
"MESA_FORMAT_LUMINANCE_FLOAT32",
- GL_ALPHA,
+ GL_LUMINANCE,
GL_FLOAT,
0, 0, 0, 0,
32, 0, 0, 0, 0,
@@ -686,7 +686,7 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] =
{
MESA_FORMAT_LUMINANCE_FLOAT16,
"MESA_FORMAT_LUMINANCE_FLOAT16",
- GL_ALPHA,
+ GL_LUMINANCE,
GL_FLOAT,
0, 0, 0, 0,
16, 0, 0, 0, 0,
@@ -728,6 +728,42 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] =
0, 16, 0, 0, 0,
1, 1, 2
},
+ {
+ MESA_FORMAT_R_FLOAT32,
+ "MESA_FORMAT_R_FLOAT32",
+ GL_RED,
+ GL_FLOAT,
+ 32, 0, 0, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 4
+ },
+ {
+ MESA_FORMAT_R_FLOAT16,
+ "MESA_FORMAT_R_FLOAT16",
+ GL_RED,
+ GL_FLOAT,
+ 16, 0, 0, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 2
+ },
+ {
+ MESA_FORMAT_RG_FLOAT32,
+ "MESA_FORMAT_RG_FLOAT32",
+ GL_RG,
+ GL_FLOAT,
+ 32, 32, 0, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 8
+ },
+ {
+ MESA_FORMAT_RG_FLOAT16,
+ "MESA_FORMAT_RG_FLOAT16",
+ GL_RG,
+ GL_FLOAT,
+ 16, 16, 0, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 4
+ },
/* unnormalized signed int formats */
{
@@ -809,8 +845,8 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] =
1, 1, 1 /* BlockWidth/Height,Bytes */
},
{
- MESA_FORMAT_SIGNED_RG88,
- "MESA_FORMAT_SIGNED_RG88",
+ MESA_FORMAT_SIGNED_RG88_REV,
+ "MESA_FORMAT_SIGNED_RG88_REV",
GL_RG,
GL_SIGNED_NORMALIZED,
8, 8, 0, 0,
@@ -847,8 +883,8 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] =
/* Signed 16 bits / channel */
{
- MESA_FORMAT_SIGNED_R_16,
- "MESA_FORMAT_SIGNED_R_16",
+ MESA_FORMAT_SIGNED_R16,
+ "MESA_FORMAT_SIGNED_R16",
GL_RED,
GL_SIGNED_NORMALIZED,
16, 0, 0, 0,
@@ -856,8 +892,8 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] =
1, 1, 2
},
{
- MESA_FORMAT_SIGNED_RG_16,
- "MESA_FORMAT_SIGNED_RG_16",
+ MESA_FORMAT_SIGNED_GR1616,
+ "MESA_FORMAT_SIGNED_GR1616",
GL_RG,
GL_SIGNED_NORMALIZED,
16, 16, 0, 0,
@@ -963,6 +999,80 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] =
4, 0, 0, 0, 0,
4, 4, 16 /* 16 bytes per 4x4 block */
},
+
+ /* Signed formats from EXT_texture_snorm that are not in GL3.1 */
+ {
+ MESA_FORMAT_SIGNED_A8,
+ "MESA_FORMAT_SIGNED_A8",
+ GL_ALPHA,
+ GL_SIGNED_NORMALIZED,
+ 0, 0, 0, 8,
+ 0, 0, 0, 0, 0,
+ 1, 1, 1
+ },
+ {
+ MESA_FORMAT_SIGNED_L8,
+ "MESA_FORMAT_SIGNED_L8",
+ GL_LUMINANCE,
+ GL_SIGNED_NORMALIZED,
+ 0, 0, 0, 0,
+ 8, 0, 0, 0, 0,
+ 1, 1, 1
+ },
+ {
+ MESA_FORMAT_SIGNED_AL88,
+ "MESA_FORMAT_SIGNED_AL88",
+ GL_LUMINANCE_ALPHA,
+ GL_SIGNED_NORMALIZED,
+ 0, 0, 0, 8,
+ 8, 0, 0, 0, 0,
+ 1, 1, 2
+ },
+ {
+ MESA_FORMAT_SIGNED_I8,
+ "MESA_FORMAT_SIGNED_I8",
+ GL_INTENSITY,
+ GL_SIGNED_NORMALIZED,
+ 0, 0, 0, 0,
+ 0, 8, 0, 0, 0,
+ 1, 1, 1
+ },
+ {
+ MESA_FORMAT_SIGNED_A16,
+ "MESA_FORMAT_SIGNED_A16",
+ GL_ALPHA,
+ GL_SIGNED_NORMALIZED,
+ 0, 0, 0, 16,
+ 0, 0, 0, 0, 0,
+ 1, 1, 2
+ },
+ {
+ MESA_FORMAT_SIGNED_L16,
+ "MESA_FORMAT_SIGNED_L16",
+ GL_LUMINANCE,
+ GL_SIGNED_NORMALIZED,
+ 0, 0, 0, 0,
+ 16, 0, 0, 0, 0,
+ 1, 1, 2
+ },
+ {
+ MESA_FORMAT_SIGNED_AL1616,
+ "MESA_FORMAT_SIGNED_AL1616",
+ GL_LUMINANCE_ALPHA,
+ GL_SIGNED_NORMALIZED,
+ 0, 0, 0, 16,
+ 16, 0, 0, 0, 0,
+ 1, 1, 4
+ },
+ {
+ MESA_FORMAT_SIGNED_I16,
+ "MESA_FORMAT_SIGNED_I16",
+ GL_INTENSITY,
+ GL_SIGNED_NORMALIZED,
+ 0, 0, 0, 0,
+ 0, 16, 0, 0, 0,
+ 1, 1, 2
+ }
};
@@ -1530,10 +1640,14 @@ _mesa_format_to_type_and_comps(gl_format format,
return;
case MESA_FORMAT_SIGNED_R8:
+ case MESA_FORMAT_SIGNED_A8:
+ case MESA_FORMAT_SIGNED_L8:
+ case MESA_FORMAT_SIGNED_I8:
*datatype = GL_BYTE;
*comps = 1;
return;
- case MESA_FORMAT_SIGNED_RG88:
+ case MESA_FORMAT_SIGNED_RG88_REV:
+ case MESA_FORMAT_SIGNED_AL88:
*datatype = GL_BYTE;
*comps = 2;
return;
@@ -1549,11 +1663,15 @@ _mesa_format_to_type_and_comps(gl_format format,
*comps = 4;
return;
- case MESA_FORMAT_SIGNED_R_16:
+ case MESA_FORMAT_SIGNED_R16:
+ case MESA_FORMAT_SIGNED_A16:
+ case MESA_FORMAT_SIGNED_L16:
+ case MESA_FORMAT_SIGNED_I16:
*datatype = GL_SHORT;
*comps = 1;
return;
- case MESA_FORMAT_SIGNED_RG_16:
+ case MESA_FORMAT_SIGNED_GR1616:
+ case MESA_FORMAT_SIGNED_AL1616:
*datatype = GL_SHORT;
*comps = 2;
return;
@@ -1632,22 +1750,26 @@ _mesa_format_to_type_and_comps(gl_format format,
*comps = 3;
return;
case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32:
+ case MESA_FORMAT_RG_FLOAT32:
*datatype = GL_FLOAT;
*comps = 2;
return;
case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16:
+ case MESA_FORMAT_RG_FLOAT16:
*datatype = GL_HALF_FLOAT_ARB;
*comps = 2;
return;
case MESA_FORMAT_ALPHA_FLOAT32:
case MESA_FORMAT_LUMINANCE_FLOAT32:
case MESA_FORMAT_INTENSITY_FLOAT32:
+ case MESA_FORMAT_R_FLOAT32:
*datatype = GL_FLOAT;
*comps = 1;
return;
case MESA_FORMAT_ALPHA_FLOAT16:
case MESA_FORMAT_LUMINANCE_FLOAT16:
case MESA_FORMAT_INTENSITY_FLOAT16:
+ case MESA_FORMAT_R_FLOAT16:
*datatype = GL_HALF_FLOAT_ARB;
*comps = 1;
return;
diff --git a/src/mesa/main/formats.h b/src/mesa/main/formats.h
index 04a18930b4e..15ac62cfef9 100644
--- a/src/mesa/main/formats.h
+++ b/src/mesa/main/formats.h
@@ -142,6 +142,10 @@ typedef enum
MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16,
MESA_FORMAT_INTENSITY_FLOAT32,
MESA_FORMAT_INTENSITY_FLOAT16,
+ MESA_FORMAT_R_FLOAT32,
+ MESA_FORMAT_R_FLOAT16,
+ MESA_FORMAT_RG_FLOAT32,
+ MESA_FORMAT_RG_FLOAT16,
/*@}*/
/**
@@ -168,12 +172,12 @@ typedef enum
/*@{*/
MESA_FORMAT_DUDV8, /* DUDU DUDU DVDV DVDV */
MESA_FORMAT_SIGNED_R8, /* RRRR RRRR */
- MESA_FORMAT_SIGNED_RG88, /* RRRR RRRR GGGG GGGG */
+ MESA_FORMAT_SIGNED_RG88_REV, /* GGGG GGGG RRRR RRRR */
MESA_FORMAT_SIGNED_RGBX8888, /* RRRR RRRR GGGG GGGG BBBB BBBB xxxx xxxx */
MESA_FORMAT_SIGNED_RGBA8888, /* RRRR RRRR GGGG GGGG BBBB BBBB AAAA AAAA */
MESA_FORMAT_SIGNED_RGBA8888_REV,/*AAAA AAAA BBBB BBBB GGGG GGGG RRRR RRRR */
- MESA_FORMAT_SIGNED_R_16, /* ushort[0]=R */
- MESA_FORMAT_SIGNED_RG_16, /* ushort[0]=R, ushort[1]=G */
+ MESA_FORMAT_SIGNED_R16, /* RRRR RRRR RRRR RRRR */
+ MESA_FORMAT_SIGNED_GR1616, /* GGGG GGGG GGGG GGGG RRRR RRRR RRRR RRRR */
MESA_FORMAT_SIGNED_RGB_16, /* ushort[0]=R, ushort[1]=G, ushort[2]=B */
MESA_FORMAT_SIGNED_RGBA_16, /* ... */
MESA_FORMAT_RGBA_16, /* ... */
@@ -193,6 +197,15 @@ typedef enum
MESA_FORMAT_SIGNED_LA_LATC2,
/*@}*/
+ MESA_FORMAT_SIGNED_A8, /* AAAA AAAA */
+ MESA_FORMAT_SIGNED_L8, /* LLLL LLLL */
+ MESA_FORMAT_SIGNED_AL88, /* AAAA AAAA LLLL LLLL */
+ MESA_FORMAT_SIGNED_I8, /* IIII IIII */
+ MESA_FORMAT_SIGNED_A16, /* AAAA AAAA AAAA AAAA */
+ MESA_FORMAT_SIGNED_L16, /* LLLL LLLL LLLL LLLL */
+ MESA_FORMAT_SIGNED_AL1616, /* AAAA AAAA AAAA AAAA LLLL LLLL LLLL LLLL */
+ MESA_FORMAT_SIGNED_I16, /* IIII IIII IIII IIII */
+
MESA_FORMAT_COUNT
} gl_format;
diff --git a/src/mesa/main/framebuffer.c b/src/mesa/main/framebuffer.c
index 430e013d017..66c9bd91096 100644
--- a/src/mesa/main/framebuffer.c
+++ b/src/mesa/main/framebuffer.c
@@ -551,7 +551,6 @@ _mesa_update_framebuffer_visual(struct gl_context *ctx,
fb->Visual.alphaBits = _mesa_get_format_bits(fmt, GL_ALPHA_BITS);
fb->Visual.rgbBits = fb->Visual.redBits
+ fb->Visual.greenBits + fb->Visual.blueBits;
- fb->Visual.floatMode = GL_FALSE;
fb->Visual.samples = rb->NumSamples;
if (_mesa_get_format_color_encoding(fmt) == GL_SRGB)
fb->Visual.sRGBCapable = ctx->Const.sRGBCapable;
@@ -560,6 +559,19 @@ _mesa_update_framebuffer_visual(struct gl_context *ctx,
}
}
+ fb->Visual.floatMode = GL_FALSE;
+ for (i = 0; i < BUFFER_COUNT; i++) {
+ if (fb->Attachment[i].Renderbuffer) {
+ const struct gl_renderbuffer *rb = fb->Attachment[i].Renderbuffer;
+ const gl_format fmt = rb->Format;
+
+ if (_mesa_get_format_datatype(fmt) == GL_FLOAT) {
+ fb->Visual.floatMode = GL_TRUE;
+ break;
+ }
+ }
+ }
+
if (fb->Attachment[BUFFER_DEPTH].Renderbuffer) {
const struct gl_renderbuffer *rb =
fb->Attachment[BUFFER_DEPTH].Renderbuffer;
@@ -1061,12 +1073,12 @@ _mesa_print_framebuffer(const struct gl_framebuffer *fb)
for (i = 0; i < BUFFER_COUNT; i++) {
const struct gl_renderbuffer_attachment *att = &fb->Attachment[i];
if (att->Type == GL_TEXTURE) {
- const struct gl_texture_image *texImage;
+ const struct gl_texture_image *texImage =
+ _mesa_get_attachment_teximage_const(att);
fprintf(stderr,
" %2d: Texture %u, level %u, face %u, slice %u, complete %d\n",
i, att->Texture->Name, att->TextureLevel, att->CubeMapFace,
att->Zoffset, att->Complete);
- texImage = att->Texture->Image[att->CubeMapFace][att->TextureLevel];
fprintf(stderr, " Size: %u x %u x %u Format %s\n",
texImage->Width, texImage->Height, texImage->Depth,
_mesa_get_format_name(texImage->TexFormat));
diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c
index 7d1a5cf6002..e18803280c1 100644
--- a/src/mesa/main/get.c
+++ b/src/mesa/main/get.c
@@ -131,6 +131,7 @@ enum value_extra {
EXTRA_VERSION_32,
EXTRA_VERSION_ES2,
EXTRA_NEW_BUFFERS,
+ EXTRA_NEW_FRAG_CLAMP,
EXTRA_VALID_DRAW_BUFFER,
EXTRA_VALID_TEXTURE_UNIT,
EXTRA_FLUSH_CURRENT,
@@ -223,6 +224,11 @@ static const int extra_new_buffers[] = {
EXTRA_END
};
+static const int extra_new_frag_clamp[] = {
+ EXTRA_NEW_FRAG_CLAMP,
+ EXTRA_END
+};
+
static const int extra_valid_draw_buffer[] = {
EXTRA_VALID_DRAW_BUFFER,
EXTRA_END
@@ -272,6 +278,11 @@ static const int extra_EXT_gpu_shader4[] = {
EXTRA_END
};
+static const int extra_ARB_sampler_objects[] = {
+ EXT(ARB_sampler_objects),
+ EXTRA_END
+};
+
EXTRA_EXT(ARB_ES2_compatibility);
EXTRA_EXT(ARB_multitexture);
@@ -317,6 +328,7 @@ EXTRA_EXT(ARB_vertex_buffer_object);
EXTRA_EXT(ARB_geometry_shader4);
EXTRA_EXT(ARB_copy_buffer);
EXTRA_EXT(EXT_framebuffer_sRGB);
+EXTRA_EXT(ARB_texture_buffer_object);
static const int
extra_ARB_vertex_program_ARB_fragment_program_NV_vertex_program[] = {
@@ -374,7 +386,7 @@ static const struct value_desc values[] = {
{ GL_BLEND, CONTEXT_BIT0(Color.BlendEnabled), NO_EXTRA },
{ GL_BLEND_SRC, CONTEXT_ENUM(Color.Blend[0].SrcRGB), NO_EXTRA },
{ GL_BLUE_BITS, BUFFER_INT(Visual.blueBits), extra_new_buffers },
- { GL_COLOR_CLEAR_VALUE, CONTEXT_FIELD(Color.ClearColor[0], TYPE_FLOATN_4), NO_EXTRA },
+ { GL_COLOR_CLEAR_VALUE, LOC_CUSTOM, TYPE_FLOATN_4, 0, extra_new_frag_clamp },
{ GL_COLOR_WRITEMASK, LOC_CUSTOM, TYPE_INT_4, 0, NO_EXTRA },
{ GL_CULL_FACE, CONTEXT_BOOL(Polygon.CullFlag), NO_EXTRA },
{ GL_CULL_FACE_MODE, CONTEXT_ENUM(Polygon.CullFaceMode), NO_EXTRA },
@@ -511,7 +523,7 @@ static const struct value_desc values[] = {
{ GL_LIGHT_MODEL_TWO_SIDE, CONTEXT_BOOL(Light.Model.TwoSide), NO_EXTRA },
{ GL_ALPHA_TEST, CONTEXT_BOOL(Color.AlphaEnabled), NO_EXTRA },
{ GL_ALPHA_TEST_FUNC, CONTEXT_ENUM(Color.AlphaFunc), NO_EXTRA },
- { GL_ALPHA_TEST_REF, CONTEXT_FIELD(Color.AlphaRef, TYPE_FLOATN), NO_EXTRA },
+ { GL_ALPHA_TEST_REF, LOC_CUSTOM, TYPE_FLOATN, 0, extra_new_frag_clamp },
{ GL_BLEND_DST, CONTEXT_ENUM(Color.Blend[0].DstRGB), NO_EXTRA },
{ GL_CLIP_PLANE0, CONTEXT_BIT0(Transform.ClipPlanesEnabled), NO_EXTRA },
{ GL_CLIP_PLANE1, CONTEXT_BIT1(Transform.ClipPlanesEnabled), NO_EXTRA },
@@ -530,7 +542,7 @@ static const struct value_desc values[] = {
extra_flush_current_valid_texture_unit },
{ GL_DISTANCE_ATTENUATION_EXT, CONTEXT_FLOAT3(Point.Params[0]), NO_EXTRA },
{ GL_FOG, CONTEXT_BOOL(Fog.Enabled), NO_EXTRA },
- { GL_FOG_COLOR, CONTEXT_FIELD(Fog.Color[0], TYPE_FLOATN_4), NO_EXTRA },
+ { GL_FOG_COLOR, LOC_CUSTOM, TYPE_FLOATN_4, 0, extra_new_frag_clamp },
{ GL_FOG_DENSITY, CONTEXT_FLOAT(Fog.Density), NO_EXTRA },
{ GL_FOG_END, CONTEXT_FLOAT(Fog.End), NO_EXTRA },
{ GL_FOG_HINT, CONTEXT_ENUM(Hint.Fog), NO_EXTRA },
@@ -572,7 +584,7 @@ static const struct value_desc values[] = {
{ GL_VERTEX_ARRAY_SIZE, ARRAY_INT(Vertex.Size), NO_EXTRA },
{ GL_VERTEX_ARRAY_TYPE, ARRAY_ENUM(Vertex.Type), NO_EXTRA },
{ GL_VERTEX_ARRAY_STRIDE, ARRAY_INT(Vertex.Stride), NO_EXTRA },
- { GL_NORMAL_ARRAY, ARRAY_ENUM(Normal.Enabled), NO_EXTRA },
+ { GL_NORMAL_ARRAY, ARRAY_BOOL(Normal.Enabled), NO_EXTRA },
{ GL_NORMAL_ARRAY_TYPE, ARRAY_ENUM(Normal.Type), NO_EXTRA },
{ GL_NORMAL_ARRAY_STRIDE, ARRAY_INT(Normal.Stride), NO_EXTRA },
{ GL_COLOR_ARRAY, ARRAY_BOOL(Color.Enabled), NO_EXTRA },
@@ -582,11 +594,11 @@ static const struct value_desc values[] = {
{ GL_TEXTURE_COORD_ARRAY,
LOC_CUSTOM, TYPE_BOOLEAN, offsetof(struct gl_client_array, Enabled), NO_EXTRA },
{ GL_TEXTURE_COORD_ARRAY_SIZE,
- LOC_CUSTOM, TYPE_BOOLEAN, offsetof(struct gl_client_array, Size), NO_EXTRA },
+ LOC_CUSTOM, TYPE_INT, offsetof(struct gl_client_array, Size), NO_EXTRA },
{ GL_TEXTURE_COORD_ARRAY_TYPE,
- LOC_CUSTOM, TYPE_BOOLEAN, offsetof(struct gl_client_array, Type), NO_EXTRA },
+ LOC_CUSTOM, TYPE_ENUM, offsetof(struct gl_client_array, Type), NO_EXTRA },
{ GL_TEXTURE_COORD_ARRAY_STRIDE,
- LOC_CUSTOM, TYPE_BOOLEAN, offsetof(struct gl_client_array, Stride), NO_EXTRA },
+ LOC_CUSTOM, TYPE_INT, offsetof(struct gl_client_array, Stride), NO_EXTRA },
/* GL_ARB_ES2_compatibility */
{ GL_SHADER_COMPILER, CONST(1), extra_ARB_ES2_compatibility },
@@ -674,7 +686,7 @@ static const struct value_desc values[] = {
/* GL_ARB_draw_buffers */
{ GL_MAX_DRAW_BUFFERS_ARB, CONTEXT_INT(Const.MaxDrawBuffers), NO_EXTRA },
- { GL_BLEND_COLOR_EXT, CONTEXT_FIELD(Color.BlendColor[0], TYPE_FLOATN_4), NO_EXTRA },
+ { GL_BLEND_COLOR_EXT, LOC_CUSTOM, TYPE_FLOATN_4, 0, extra_new_frag_clamp },
/* GL_ARB_fragment_program */
{ GL_MAX_TEXTURE_IMAGE_UNITS_ARB, /* == GL_MAX_TEXTURE_IMAGE_UNITS_NV */
CONTEXT_INT(Const.MaxTextureImageUnits),
@@ -1219,6 +1231,9 @@ static const struct value_desc values[] = {
CONTEXT_INT(Const.MaxVertexVaryingComponents),
extra_ARB_geometry_shader4 },
+ /* GL_ARB_color_buffer_float */
+ { GL_RGBA_FLOAT_MODE_ARB, BUFFER_FIELD(Visual.floatMode, TYPE_BOOLEAN), 0 },
+
/* GL_EXT_gpu_shader4 / GL 3.0 */
{ GL_MIN_PROGRAM_TEXEL_OFFSET,
CONTEXT_INT(Const.MinProgramTexelOffset),
@@ -1227,6 +1242,22 @@ static const struct value_desc values[] = {
CONTEXT_INT(Const.MaxProgramTexelOffset),
extra_EXT_gpu_shader4 },
+ /* GL_ARB_texture_buffer_object */
+ { GL_MAX_TEXTURE_BUFFER_SIZE_ARB, CONTEXT_INT(Const.MaxTextureBufferSize),
+ extra_ARB_texture_buffer_object },
+ { GL_TEXTURE_BINDING_BUFFER_ARB, LOC_CUSTOM, TYPE_INT, 0,
+ extra_ARB_texture_buffer_object },
+ { GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB, LOC_CUSTOM, TYPE_INT,
+ TEXTURE_BUFFER_INDEX, extra_ARB_texture_buffer_object },
+ { GL_TEXTURE_BUFFER_FORMAT_ARB, LOC_CUSTOM, TYPE_INT, 0,
+ extra_ARB_texture_buffer_object },
+ { GL_TEXTURE_BUFFER_ARB, LOC_CUSTOM, TYPE_INT, 0,
+ extra_ARB_texture_buffer_object },
+
+ /* GL_ARB_sampler_objects / GL 3.3 */
+ { GL_SAMPLER_BINDING,
+ LOC_CUSTOM, TYPE_INT, GL_SAMPLER_BINDING, extra_ARB_sampler_objects },
+
/* GL 3.0 */
{ GL_NUM_EXTENSIONS, LOC_CUSTOM, TYPE_INT, 0, extra_version_30 },
{ GL_MAJOR_VERSION, CONTEXT_INT(VersionMajor), extra_version_30 },
@@ -1367,7 +1398,7 @@ void _mesa_init_get_hash(struct gl_context *ctx)
static void
find_custom_value(struct gl_context *ctx, const struct value_desc *d, union value *v)
{
- struct gl_buffer_object *buffer_obj;
+ struct gl_buffer_object **buffer_obj;
struct gl_client_array *array;
GLuint unit, *p;
@@ -1569,9 +1600,9 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu
case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
- buffer_obj = (struct gl_buffer_object *)
+ buffer_obj = (struct gl_buffer_object **)
((char *) ctx->Array.ArrayObj + d->offset);
- v->value_int = buffer_obj->Name;
+ v->value_int = (*buffer_obj)->Name;
break;
case GL_ARRAY_BUFFER_BINDING_ARB:
v->value_int = ctx->Array.ArrayBufferObj->Name;
@@ -1633,6 +1664,30 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu
v->value_int = ctx->Array.ArrayObj->PointSize.BufferObj->Name;
break;
+ case GL_FOG_COLOR:
+ if(ctx->Color._ClampFragmentColor)
+ COPY_4FV(v->value_float_4, ctx->Fog.Color);
+ else
+ COPY_4FV(v->value_float_4, ctx->Fog.ColorUnclamped);
+ break;
+ case GL_COLOR_CLEAR_VALUE:
+ if(ctx->Color._ClampFragmentColor)
+ COPY_4FV(v->value_float_4, ctx->Color.ClearColor);
+ else
+ COPY_4FV(v->value_float_4, ctx->Color.ClearColorUnclamped);
+ break;
+ case GL_BLEND_COLOR_EXT:
+ if(ctx->Color._ClampFragmentColor)
+ COPY_4FV(v->value_float_4, ctx->Color.BlendColor);
+ else
+ COPY_4FV(v->value_float_4, ctx->Color.BlendColorUnclamped);
+ break;
+ case GL_ALPHA_TEST_REF:
+ if(ctx->Color._ClampFragmentColor)
+ v->value_float = ctx->Color.AlphaRef;
+ else
+ v->value_float = ctx->Color.AlphaRefUnclamped;
+ break;
case GL_MAX_VERTEX_UNIFORM_VECTORS:
v->value_int = ctx->Const.VertexProgram.MaxUniformComponents / 4;
break;
@@ -1640,6 +1695,37 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu
case GL_MAX_FRAGMENT_UNIFORM_VECTORS:
v->value_int = ctx->Const.FragmentProgram.MaxUniformComponents / 4;
break;
+
+ /* GL_ARB_texture_buffer_object */
+ case GL_TEXTURE_BUFFER_ARB:
+ v->value_int = ctx->Texture.BufferObject->Name;
+ break;
+ case GL_TEXTURE_BINDING_BUFFER_ARB:
+ unit = ctx->Texture.CurrentUnit;
+ v->value_int =
+ ctx->Texture.Unit[unit].CurrentTex[TEXTURE_BUFFER_INDEX]->Name;
+ break;
+ case GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB:
+ {
+ struct gl_buffer_object *buf =
+ ctx->Texture.Unit[ctx->Texture.CurrentUnit]
+ .CurrentTex[TEXTURE_BUFFER_INDEX]->BufferObject;
+ v->value_int = buf ? buf->Name : 0;
+ }
+ break;
+ case GL_TEXTURE_BUFFER_FORMAT_ARB:
+ v->value_int = ctx->Texture.Unit[ctx->Texture.CurrentUnit]
+ .CurrentTex[TEXTURE_BUFFER_INDEX]->BufferObjectFormat;
+ break;
+
+ /* GL_ARB_sampler_objects */
+ case GL_SAMPLER_BINDING:
+ {
+ struct gl_sampler_object *samp =
+ ctx->Texture.Unit[ctx->Texture.CurrentUnit].Sampler;
+ v->value_int = samp ? samp->Name : 0;
+ }
+ break;
}
}
@@ -1687,6 +1773,10 @@ check_extra(struct gl_context *ctx, const char *func, const struct value_desc *d
enabled++;
}
break;
+ case EXTRA_NEW_FRAG_CLAMP:
+ if (ctx->NewState & (_NEW_BUFFERS | _NEW_FRAG_CLAMP))
+ _mesa_update_state(ctx);
+ break;
case EXTRA_VERSION_ES2:
if (ctx->API == API_OPENGLES2) {
total++;
diff --git a/src/mesa/main/glapidispatch.h b/src/mesa/main/glapidispatch.h
index cbfe6400e42..c1cc6cb1254 100644
--- a/src/mesa/main/glapidispatch.h
+++ b/src/mesa/main/glapidispatch.h
@@ -59,7 +59,7 @@
} while(0)
/* total number of offsets below */
-#define _gloffset_COUNT 892
+#define _gloffset_COUNT 908
#define _gloffset_NewList 0
#define _gloffset_EndList 1
@@ -636,330 +636,346 @@
#define _gloffset_GetActiveAttribARB 569
#define _gloffset_GetAttribLocationARB 570
#define _gloffset_DrawBuffersARB 571
-#define _gloffset_DrawArraysInstancedARB 572
-#define _gloffset_DrawElementsInstancedARB 573
-#define _gloffset_RenderbufferStorageMultisample 574
-#define _gloffset_FramebufferTextureARB 575
-#define _gloffset_FramebufferTextureFaceARB 576
-#define _gloffset_ProgramParameteriARB 577
-#define _gloffset_VertexAttribDivisorARB 578
-#define _gloffset_FlushMappedBufferRange 579
-#define _gloffset_MapBufferRange 580
-#define _gloffset_BindVertexArray 581
-#define _gloffset_GenVertexArrays 582
-#define _gloffset_CopyBufferSubData 583
-#define _gloffset_ClientWaitSync 584
-#define _gloffset_DeleteSync 585
-#define _gloffset_FenceSync 586
-#define _gloffset_GetInteger64v 587
-#define _gloffset_GetSynciv 588
-#define _gloffset_IsSync 589
-#define _gloffset_WaitSync 590
-#define _gloffset_DrawElementsBaseVertex 591
-#define _gloffset_DrawRangeElementsBaseVertex 592
-#define _gloffset_MultiDrawElementsBaseVertex 593
-#define _gloffset_BlendEquationSeparateiARB 594
-#define _gloffset_BlendEquationiARB 595
-#define _gloffset_BlendFuncSeparateiARB 596
-#define _gloffset_BlendFunciARB 597
-#define _gloffset_BindTransformFeedback 598
-#define _gloffset_DeleteTransformFeedbacks 599
-#define _gloffset_DrawTransformFeedback 600
-#define _gloffset_GenTransformFeedbacks 601
-#define _gloffset_IsTransformFeedback 602
-#define _gloffset_PauseTransformFeedback 603
-#define _gloffset_ResumeTransformFeedback 604
-#define _gloffset_ClearDepthf 605
-#define _gloffset_DepthRangef 606
-#define _gloffset_GetShaderPrecisionFormat 607
-#define _gloffset_ReleaseShaderCompiler 608
-#define _gloffset_ShaderBinary 609
-#define _gloffset_PolygonOffsetEXT 610
-#define _gloffset_GetPixelTexGenParameterfvSGIS 611
-#define _gloffset_GetPixelTexGenParameterivSGIS 612
-#define _gloffset_PixelTexGenParameterfSGIS 613
-#define _gloffset_PixelTexGenParameterfvSGIS 614
-#define _gloffset_PixelTexGenParameteriSGIS 615
-#define _gloffset_PixelTexGenParameterivSGIS 616
-#define _gloffset_SampleMaskSGIS 617
-#define _gloffset_SamplePatternSGIS 618
-#define _gloffset_ColorPointerEXT 619
-#define _gloffset_EdgeFlagPointerEXT 620
-#define _gloffset_IndexPointerEXT 621
-#define _gloffset_NormalPointerEXT 622
-#define _gloffset_TexCoordPointerEXT 623
-#define _gloffset_VertexPointerEXT 624
-#define _gloffset_PointParameterfEXT 625
-#define _gloffset_PointParameterfvEXT 626
-#define _gloffset_LockArraysEXT 627
-#define _gloffset_UnlockArraysEXT 628
-#define _gloffset_SecondaryColor3bEXT 629
-#define _gloffset_SecondaryColor3bvEXT 630
-#define _gloffset_SecondaryColor3dEXT 631
-#define _gloffset_SecondaryColor3dvEXT 632
-#define _gloffset_SecondaryColor3fEXT 633
-#define _gloffset_SecondaryColor3fvEXT 634
-#define _gloffset_SecondaryColor3iEXT 635
-#define _gloffset_SecondaryColor3ivEXT 636
-#define _gloffset_SecondaryColor3sEXT 637
-#define _gloffset_SecondaryColor3svEXT 638
-#define _gloffset_SecondaryColor3ubEXT 639
-#define _gloffset_SecondaryColor3ubvEXT 640
-#define _gloffset_SecondaryColor3uiEXT 641
-#define _gloffset_SecondaryColor3uivEXT 642
-#define _gloffset_SecondaryColor3usEXT 643
-#define _gloffset_SecondaryColor3usvEXT 644
-#define _gloffset_SecondaryColorPointerEXT 645
-#define _gloffset_MultiDrawArraysEXT 646
-#define _gloffset_MultiDrawElementsEXT 647
-#define _gloffset_FogCoordPointerEXT 648
-#define _gloffset_FogCoorddEXT 649
-#define _gloffset_FogCoorddvEXT 650
-#define _gloffset_FogCoordfEXT 651
-#define _gloffset_FogCoordfvEXT 652
-#define _gloffset_PixelTexGenSGIX 653
-#define _gloffset_BlendFuncSeparateEXT 654
-#define _gloffset_FlushVertexArrayRangeNV 655
-#define _gloffset_VertexArrayRangeNV 656
-#define _gloffset_CombinerInputNV 657
-#define _gloffset_CombinerOutputNV 658
-#define _gloffset_CombinerParameterfNV 659
-#define _gloffset_CombinerParameterfvNV 660
-#define _gloffset_CombinerParameteriNV 661
-#define _gloffset_CombinerParameterivNV 662
-#define _gloffset_FinalCombinerInputNV 663
-#define _gloffset_GetCombinerInputParameterfvNV 664
-#define _gloffset_GetCombinerInputParameterivNV 665
-#define _gloffset_GetCombinerOutputParameterfvNV 666
-#define _gloffset_GetCombinerOutputParameterivNV 667
-#define _gloffset_GetFinalCombinerInputParameterfvNV 668
-#define _gloffset_GetFinalCombinerInputParameterivNV 669
-#define _gloffset_ResizeBuffersMESA 670
-#define _gloffset_WindowPos2dMESA 671
-#define _gloffset_WindowPos2dvMESA 672
-#define _gloffset_WindowPos2fMESA 673
-#define _gloffset_WindowPos2fvMESA 674
-#define _gloffset_WindowPos2iMESA 675
-#define _gloffset_WindowPos2ivMESA 676
-#define _gloffset_WindowPos2sMESA 677
-#define _gloffset_WindowPos2svMESA 678
-#define _gloffset_WindowPos3dMESA 679
-#define _gloffset_WindowPos3dvMESA 680
-#define _gloffset_WindowPos3fMESA 681
-#define _gloffset_WindowPos3fvMESA 682
-#define _gloffset_WindowPos3iMESA 683
-#define _gloffset_WindowPos3ivMESA 684
-#define _gloffset_WindowPos3sMESA 685
-#define _gloffset_WindowPos3svMESA 686
-#define _gloffset_WindowPos4dMESA 687
-#define _gloffset_WindowPos4dvMESA 688
-#define _gloffset_WindowPos4fMESA 689
-#define _gloffset_WindowPos4fvMESA 690
-#define _gloffset_WindowPos4iMESA 691
-#define _gloffset_WindowPos4ivMESA 692
-#define _gloffset_WindowPos4sMESA 693
-#define _gloffset_WindowPos4svMESA 694
-#define _gloffset_MultiModeDrawArraysIBM 695
-#define _gloffset_MultiModeDrawElementsIBM 696
-#define _gloffset_DeleteFencesNV 697
-#define _gloffset_FinishFenceNV 698
-#define _gloffset_GenFencesNV 699
-#define _gloffset_GetFenceivNV 700
-#define _gloffset_IsFenceNV 701
-#define _gloffset_SetFenceNV 702
-#define _gloffset_TestFenceNV 703
-#define _gloffset_AreProgramsResidentNV 704
-#define _gloffset_BindProgramNV 705
-#define _gloffset_DeleteProgramsNV 706
-#define _gloffset_ExecuteProgramNV 707
-#define _gloffset_GenProgramsNV 708
-#define _gloffset_GetProgramParameterdvNV 709
-#define _gloffset_GetProgramParameterfvNV 710
-#define _gloffset_GetProgramStringNV 711
-#define _gloffset_GetProgramivNV 712
-#define _gloffset_GetTrackMatrixivNV 713
-#define _gloffset_GetVertexAttribPointervNV 714
-#define _gloffset_GetVertexAttribdvNV 715
-#define _gloffset_GetVertexAttribfvNV 716
-#define _gloffset_GetVertexAttribivNV 717
-#define _gloffset_IsProgramNV 718
-#define _gloffset_LoadProgramNV 719
-#define _gloffset_ProgramParameters4dvNV 720
-#define _gloffset_ProgramParameters4fvNV 721
-#define _gloffset_RequestResidentProgramsNV 722
-#define _gloffset_TrackMatrixNV 723
-#define _gloffset_VertexAttrib1dNV 724
-#define _gloffset_VertexAttrib1dvNV 725
-#define _gloffset_VertexAttrib1fNV 726
-#define _gloffset_VertexAttrib1fvNV 727
-#define _gloffset_VertexAttrib1sNV 728
-#define _gloffset_VertexAttrib1svNV 729
-#define _gloffset_VertexAttrib2dNV 730
-#define _gloffset_VertexAttrib2dvNV 731
-#define _gloffset_VertexAttrib2fNV 732
-#define _gloffset_VertexAttrib2fvNV 733
-#define _gloffset_VertexAttrib2sNV 734
-#define _gloffset_VertexAttrib2svNV 735
-#define _gloffset_VertexAttrib3dNV 736
-#define _gloffset_VertexAttrib3dvNV 737
-#define _gloffset_VertexAttrib3fNV 738
-#define _gloffset_VertexAttrib3fvNV 739
-#define _gloffset_VertexAttrib3sNV 740
-#define _gloffset_VertexAttrib3svNV 741
-#define _gloffset_VertexAttrib4dNV 742
-#define _gloffset_VertexAttrib4dvNV 743
-#define _gloffset_VertexAttrib4fNV 744
-#define _gloffset_VertexAttrib4fvNV 745
-#define _gloffset_VertexAttrib4sNV 746
-#define _gloffset_VertexAttrib4svNV 747
-#define _gloffset_VertexAttrib4ubNV 748
-#define _gloffset_VertexAttrib4ubvNV 749
-#define _gloffset_VertexAttribPointerNV 750
-#define _gloffset_VertexAttribs1dvNV 751
-#define _gloffset_VertexAttribs1fvNV 752
-#define _gloffset_VertexAttribs1svNV 753
-#define _gloffset_VertexAttribs2dvNV 754
-#define _gloffset_VertexAttribs2fvNV 755
-#define _gloffset_VertexAttribs2svNV 756
-#define _gloffset_VertexAttribs3dvNV 757
-#define _gloffset_VertexAttribs3fvNV 758
-#define _gloffset_VertexAttribs3svNV 759
-#define _gloffset_VertexAttribs4dvNV 760
-#define _gloffset_VertexAttribs4fvNV 761
-#define _gloffset_VertexAttribs4svNV 762
-#define _gloffset_VertexAttribs4ubvNV 763
-#define _gloffset_GetTexBumpParameterfvATI 764
-#define _gloffset_GetTexBumpParameterivATI 765
-#define _gloffset_TexBumpParameterfvATI 766
-#define _gloffset_TexBumpParameterivATI 767
-#define _gloffset_AlphaFragmentOp1ATI 768
-#define _gloffset_AlphaFragmentOp2ATI 769
-#define _gloffset_AlphaFragmentOp3ATI 770
-#define _gloffset_BeginFragmentShaderATI 771
-#define _gloffset_BindFragmentShaderATI 772
-#define _gloffset_ColorFragmentOp1ATI 773
-#define _gloffset_ColorFragmentOp2ATI 774
-#define _gloffset_ColorFragmentOp3ATI 775
-#define _gloffset_DeleteFragmentShaderATI 776
-#define _gloffset_EndFragmentShaderATI 777
-#define _gloffset_GenFragmentShadersATI 778
-#define _gloffset_PassTexCoordATI 779
-#define _gloffset_SampleMapATI 780
-#define _gloffset_SetFragmentShaderConstantATI 781
-#define _gloffset_PointParameteriNV 782
-#define _gloffset_PointParameterivNV 783
-#define _gloffset_ActiveStencilFaceEXT 784
-#define _gloffset_BindVertexArrayAPPLE 785
-#define _gloffset_DeleteVertexArraysAPPLE 786
-#define _gloffset_GenVertexArraysAPPLE 787
-#define _gloffset_IsVertexArrayAPPLE 788
-#define _gloffset_GetProgramNamedParameterdvNV 789
-#define _gloffset_GetProgramNamedParameterfvNV 790
-#define _gloffset_ProgramNamedParameter4dNV 791
-#define _gloffset_ProgramNamedParameter4dvNV 792
-#define _gloffset_ProgramNamedParameter4fNV 793
-#define _gloffset_ProgramNamedParameter4fvNV 794
-#define _gloffset_PrimitiveRestartIndexNV 795
-#define _gloffset_PrimitiveRestartNV 796
-#define _gloffset_DepthBoundsEXT 797
-#define _gloffset_BlendEquationSeparateEXT 798
-#define _gloffset_BindFramebufferEXT 799
-#define _gloffset_BindRenderbufferEXT 800
-#define _gloffset_CheckFramebufferStatusEXT 801
-#define _gloffset_DeleteFramebuffersEXT 802
-#define _gloffset_DeleteRenderbuffersEXT 803
-#define _gloffset_FramebufferRenderbufferEXT 804
-#define _gloffset_FramebufferTexture1DEXT 805
-#define _gloffset_FramebufferTexture2DEXT 806
-#define _gloffset_FramebufferTexture3DEXT 807
-#define _gloffset_GenFramebuffersEXT 808
-#define _gloffset_GenRenderbuffersEXT 809
-#define _gloffset_GenerateMipmapEXT 810
-#define _gloffset_GetFramebufferAttachmentParameterivEXT 811
-#define _gloffset_GetRenderbufferParameterivEXT 812
-#define _gloffset_IsFramebufferEXT 813
-#define _gloffset_IsRenderbufferEXT 814
-#define _gloffset_RenderbufferStorageEXT 815
-#define _gloffset_BlitFramebufferEXT 816
-#define _gloffset_BufferParameteriAPPLE 817
-#define _gloffset_FlushMappedBufferRangeAPPLE 818
-#define _gloffset_BindFragDataLocationEXT 819
-#define _gloffset_GetFragDataLocationEXT 820
-#define _gloffset_GetUniformuivEXT 821
-#define _gloffset_GetVertexAttribIivEXT 822
-#define _gloffset_GetVertexAttribIuivEXT 823
-#define _gloffset_Uniform1uiEXT 824
-#define _gloffset_Uniform1uivEXT 825
-#define _gloffset_Uniform2uiEXT 826
-#define _gloffset_Uniform2uivEXT 827
-#define _gloffset_Uniform3uiEXT 828
-#define _gloffset_Uniform3uivEXT 829
-#define _gloffset_Uniform4uiEXT 830
-#define _gloffset_Uniform4uivEXT 831
-#define _gloffset_VertexAttribI1iEXT 832
-#define _gloffset_VertexAttribI1ivEXT 833
-#define _gloffset_VertexAttribI1uiEXT 834
-#define _gloffset_VertexAttribI1uivEXT 835
-#define _gloffset_VertexAttribI2iEXT 836
-#define _gloffset_VertexAttribI2ivEXT 837
-#define _gloffset_VertexAttribI2uiEXT 838
-#define _gloffset_VertexAttribI2uivEXT 839
-#define _gloffset_VertexAttribI3iEXT 840
-#define _gloffset_VertexAttribI3ivEXT 841
-#define _gloffset_VertexAttribI3uiEXT 842
-#define _gloffset_VertexAttribI3uivEXT 843
-#define _gloffset_VertexAttribI4bvEXT 844
-#define _gloffset_VertexAttribI4iEXT 845
-#define _gloffset_VertexAttribI4ivEXT 846
-#define _gloffset_VertexAttribI4svEXT 847
-#define _gloffset_VertexAttribI4ubvEXT 848
-#define _gloffset_VertexAttribI4uiEXT 849
-#define _gloffset_VertexAttribI4uivEXT 850
-#define _gloffset_VertexAttribI4usvEXT 851
-#define _gloffset_VertexAttribIPointerEXT 852
-#define _gloffset_FramebufferTextureLayerEXT 853
-#define _gloffset_ColorMaskIndexedEXT 854
-#define _gloffset_DisableIndexedEXT 855
-#define _gloffset_EnableIndexedEXT 856
-#define _gloffset_GetBooleanIndexedvEXT 857
-#define _gloffset_GetIntegerIndexedvEXT 858
-#define _gloffset_IsEnabledIndexedEXT 859
-#define _gloffset_ClearColorIiEXT 860
-#define _gloffset_ClearColorIuiEXT 861
-#define _gloffset_GetTexParameterIivEXT 862
-#define _gloffset_GetTexParameterIuivEXT 863
-#define _gloffset_TexParameterIivEXT 864
-#define _gloffset_TexParameterIuivEXT 865
-#define _gloffset_BeginConditionalRenderNV 866
-#define _gloffset_EndConditionalRenderNV 867
-#define _gloffset_BeginTransformFeedbackEXT 868
-#define _gloffset_BindBufferBaseEXT 869
-#define _gloffset_BindBufferOffsetEXT 870
-#define _gloffset_BindBufferRangeEXT 871
-#define _gloffset_EndTransformFeedbackEXT 872
-#define _gloffset_GetTransformFeedbackVaryingEXT 873
-#define _gloffset_TransformFeedbackVaryingsEXT 874
-#define _gloffset_ProvokingVertexEXT 875
-#define _gloffset_GetTexParameterPointervAPPLE 876
-#define _gloffset_TextureRangeAPPLE 877
-#define _gloffset_GetObjectParameterivAPPLE 878
-#define _gloffset_ObjectPurgeableAPPLE 879
-#define _gloffset_ObjectUnpurgeableAPPLE 880
-#define _gloffset_ActiveProgramEXT 881
-#define _gloffset_CreateShaderProgramEXT 882
-#define _gloffset_UseShaderProgramEXT 883
-#define _gloffset_TextureBarrierNV 884
-#define _gloffset_StencilFuncSeparateATI 885
-#define _gloffset_ProgramEnvParameters4fvEXT 886
-#define _gloffset_ProgramLocalParameters4fvEXT 887
-#define _gloffset_GetQueryObjecti64vEXT 888
-#define _gloffset_GetQueryObjectui64vEXT 889
-#define _gloffset_EGLImageTargetRenderbufferStorageOES 890
-#define _gloffset_EGLImageTargetTexture2DOES 891
+#define _gloffset_ClampColorARB 572
+#define _gloffset_DrawArraysInstancedARB 573
+#define _gloffset_DrawElementsInstancedARB 574
+#define _gloffset_RenderbufferStorageMultisample 575
+#define _gloffset_FramebufferTextureARB 576
+#define _gloffset_FramebufferTextureFaceARB 577
+#define _gloffset_ProgramParameteriARB 578
+#define _gloffset_VertexAttribDivisorARB 579
+#define _gloffset_FlushMappedBufferRange 580
+#define _gloffset_MapBufferRange 581
+#define _gloffset_TexBufferARB 582
+#define _gloffset_BindVertexArray 583
+#define _gloffset_GenVertexArrays 584
+#define _gloffset_CopyBufferSubData 585
+#define _gloffset_ClientWaitSync 586
+#define _gloffset_DeleteSync 587
+#define _gloffset_FenceSync 588
+#define _gloffset_GetInteger64v 589
+#define _gloffset_GetSynciv 590
+#define _gloffset_IsSync 591
+#define _gloffset_WaitSync 592
+#define _gloffset_DrawElementsBaseVertex 593
+#define _gloffset_DrawRangeElementsBaseVertex 594
+#define _gloffset_MultiDrawElementsBaseVertex 595
+#define _gloffset_BlendEquationSeparateiARB 596
+#define _gloffset_BlendEquationiARB 597
+#define _gloffset_BlendFuncSeparateiARB 598
+#define _gloffset_BlendFunciARB 599
+#define _gloffset_BindSampler 600
+#define _gloffset_DeleteSamplers 601
+#define _gloffset_GenSamplers 602
+#define _gloffset_GetSamplerParameterIiv 603
+#define _gloffset_GetSamplerParameterIuiv 604
+#define _gloffset_GetSamplerParameterfv 605
+#define _gloffset_GetSamplerParameteriv 606
+#define _gloffset_IsSampler 607
+#define _gloffset_SamplerParameterIiv 608
+#define _gloffset_SamplerParameterIuiv 609
+#define _gloffset_SamplerParameterf 610
+#define _gloffset_SamplerParameterfv 611
+#define _gloffset_SamplerParameteri 612
+#define _gloffset_SamplerParameteriv 613
+#define _gloffset_BindTransformFeedback 614
+#define _gloffset_DeleteTransformFeedbacks 615
+#define _gloffset_DrawTransformFeedback 616
+#define _gloffset_GenTransformFeedbacks 617
+#define _gloffset_IsTransformFeedback 618
+#define _gloffset_PauseTransformFeedback 619
+#define _gloffset_ResumeTransformFeedback 620
+#define _gloffset_ClearDepthf 621
+#define _gloffset_DepthRangef 622
+#define _gloffset_GetShaderPrecisionFormat 623
+#define _gloffset_ReleaseShaderCompiler 624
+#define _gloffset_ShaderBinary 625
+#define _gloffset_PolygonOffsetEXT 626
+#define _gloffset_GetPixelTexGenParameterfvSGIS 627
+#define _gloffset_GetPixelTexGenParameterivSGIS 628
+#define _gloffset_PixelTexGenParameterfSGIS 629
+#define _gloffset_PixelTexGenParameterfvSGIS 630
+#define _gloffset_PixelTexGenParameteriSGIS 631
+#define _gloffset_PixelTexGenParameterivSGIS 632
+#define _gloffset_SampleMaskSGIS 633
+#define _gloffset_SamplePatternSGIS 634
+#define _gloffset_ColorPointerEXT 635
+#define _gloffset_EdgeFlagPointerEXT 636
+#define _gloffset_IndexPointerEXT 637
+#define _gloffset_NormalPointerEXT 638
+#define _gloffset_TexCoordPointerEXT 639
+#define _gloffset_VertexPointerEXT 640
+#define _gloffset_PointParameterfEXT 641
+#define _gloffset_PointParameterfvEXT 642
+#define _gloffset_LockArraysEXT 643
+#define _gloffset_UnlockArraysEXT 644
+#define _gloffset_SecondaryColor3bEXT 645
+#define _gloffset_SecondaryColor3bvEXT 646
+#define _gloffset_SecondaryColor3dEXT 647
+#define _gloffset_SecondaryColor3dvEXT 648
+#define _gloffset_SecondaryColor3fEXT 649
+#define _gloffset_SecondaryColor3fvEXT 650
+#define _gloffset_SecondaryColor3iEXT 651
+#define _gloffset_SecondaryColor3ivEXT 652
+#define _gloffset_SecondaryColor3sEXT 653
+#define _gloffset_SecondaryColor3svEXT 654
+#define _gloffset_SecondaryColor3ubEXT 655
+#define _gloffset_SecondaryColor3ubvEXT 656
+#define _gloffset_SecondaryColor3uiEXT 657
+#define _gloffset_SecondaryColor3uivEXT 658
+#define _gloffset_SecondaryColor3usEXT 659
+#define _gloffset_SecondaryColor3usvEXT 660
+#define _gloffset_SecondaryColorPointerEXT 661
+#define _gloffset_MultiDrawArraysEXT 662
+#define _gloffset_MultiDrawElementsEXT 663
+#define _gloffset_FogCoordPointerEXT 664
+#define _gloffset_FogCoorddEXT 665
+#define _gloffset_FogCoorddvEXT 666
+#define _gloffset_FogCoordfEXT 667
+#define _gloffset_FogCoordfvEXT 668
+#define _gloffset_PixelTexGenSGIX 669
+#define _gloffset_BlendFuncSeparateEXT 670
+#define _gloffset_FlushVertexArrayRangeNV 671
+#define _gloffset_VertexArrayRangeNV 672
+#define _gloffset_CombinerInputNV 673
+#define _gloffset_CombinerOutputNV 674
+#define _gloffset_CombinerParameterfNV 675
+#define _gloffset_CombinerParameterfvNV 676
+#define _gloffset_CombinerParameteriNV 677
+#define _gloffset_CombinerParameterivNV 678
+#define _gloffset_FinalCombinerInputNV 679
+#define _gloffset_GetCombinerInputParameterfvNV 680
+#define _gloffset_GetCombinerInputParameterivNV 681
+#define _gloffset_GetCombinerOutputParameterfvNV 682
+#define _gloffset_GetCombinerOutputParameterivNV 683
+#define _gloffset_GetFinalCombinerInputParameterfvNV 684
+#define _gloffset_GetFinalCombinerInputParameterivNV 685
+#define _gloffset_ResizeBuffersMESA 686
+#define _gloffset_WindowPos2dMESA 687
+#define _gloffset_WindowPos2dvMESA 688
+#define _gloffset_WindowPos2fMESA 689
+#define _gloffset_WindowPos2fvMESA 690
+#define _gloffset_WindowPos2iMESA 691
+#define _gloffset_WindowPos2ivMESA 692
+#define _gloffset_WindowPos2sMESA 693
+#define _gloffset_WindowPos2svMESA 694
+#define _gloffset_WindowPos3dMESA 695
+#define _gloffset_WindowPos3dvMESA 696
+#define _gloffset_WindowPos3fMESA 697
+#define _gloffset_WindowPos3fvMESA 698
+#define _gloffset_WindowPos3iMESA 699
+#define _gloffset_WindowPos3ivMESA 700
+#define _gloffset_WindowPos3sMESA 701
+#define _gloffset_WindowPos3svMESA 702
+#define _gloffset_WindowPos4dMESA 703
+#define _gloffset_WindowPos4dvMESA 704
+#define _gloffset_WindowPos4fMESA 705
+#define _gloffset_WindowPos4fvMESA 706
+#define _gloffset_WindowPos4iMESA 707
+#define _gloffset_WindowPos4ivMESA 708
+#define _gloffset_WindowPos4sMESA 709
+#define _gloffset_WindowPos4svMESA 710
+#define _gloffset_MultiModeDrawArraysIBM 711
+#define _gloffset_MultiModeDrawElementsIBM 712
+#define _gloffset_DeleteFencesNV 713
+#define _gloffset_FinishFenceNV 714
+#define _gloffset_GenFencesNV 715
+#define _gloffset_GetFenceivNV 716
+#define _gloffset_IsFenceNV 717
+#define _gloffset_SetFenceNV 718
+#define _gloffset_TestFenceNV 719
+#define _gloffset_AreProgramsResidentNV 720
+#define _gloffset_BindProgramNV 721
+#define _gloffset_DeleteProgramsNV 722
+#define _gloffset_ExecuteProgramNV 723
+#define _gloffset_GenProgramsNV 724
+#define _gloffset_GetProgramParameterdvNV 725
+#define _gloffset_GetProgramParameterfvNV 726
+#define _gloffset_GetProgramStringNV 727
+#define _gloffset_GetProgramivNV 728
+#define _gloffset_GetTrackMatrixivNV 729
+#define _gloffset_GetVertexAttribPointervNV 730
+#define _gloffset_GetVertexAttribdvNV 731
+#define _gloffset_GetVertexAttribfvNV 732
+#define _gloffset_GetVertexAttribivNV 733
+#define _gloffset_IsProgramNV 734
+#define _gloffset_LoadProgramNV 735
+#define _gloffset_ProgramParameters4dvNV 736
+#define _gloffset_ProgramParameters4fvNV 737
+#define _gloffset_RequestResidentProgramsNV 738
+#define _gloffset_TrackMatrixNV 739
+#define _gloffset_VertexAttrib1dNV 740
+#define _gloffset_VertexAttrib1dvNV 741
+#define _gloffset_VertexAttrib1fNV 742
+#define _gloffset_VertexAttrib1fvNV 743
+#define _gloffset_VertexAttrib1sNV 744
+#define _gloffset_VertexAttrib1svNV 745
+#define _gloffset_VertexAttrib2dNV 746
+#define _gloffset_VertexAttrib2dvNV 747
+#define _gloffset_VertexAttrib2fNV 748
+#define _gloffset_VertexAttrib2fvNV 749
+#define _gloffset_VertexAttrib2sNV 750
+#define _gloffset_VertexAttrib2svNV 751
+#define _gloffset_VertexAttrib3dNV 752
+#define _gloffset_VertexAttrib3dvNV 753
+#define _gloffset_VertexAttrib3fNV 754
+#define _gloffset_VertexAttrib3fvNV 755
+#define _gloffset_VertexAttrib3sNV 756
+#define _gloffset_VertexAttrib3svNV 757
+#define _gloffset_VertexAttrib4dNV 758
+#define _gloffset_VertexAttrib4dvNV 759
+#define _gloffset_VertexAttrib4fNV 760
+#define _gloffset_VertexAttrib4fvNV 761
+#define _gloffset_VertexAttrib4sNV 762
+#define _gloffset_VertexAttrib4svNV 763
+#define _gloffset_VertexAttrib4ubNV 764
+#define _gloffset_VertexAttrib4ubvNV 765
+#define _gloffset_VertexAttribPointerNV 766
+#define _gloffset_VertexAttribs1dvNV 767
+#define _gloffset_VertexAttribs1fvNV 768
+#define _gloffset_VertexAttribs1svNV 769
+#define _gloffset_VertexAttribs2dvNV 770
+#define _gloffset_VertexAttribs2fvNV 771
+#define _gloffset_VertexAttribs2svNV 772
+#define _gloffset_VertexAttribs3dvNV 773
+#define _gloffset_VertexAttribs3fvNV 774
+#define _gloffset_VertexAttribs3svNV 775
+#define _gloffset_VertexAttribs4dvNV 776
+#define _gloffset_VertexAttribs4fvNV 777
+#define _gloffset_VertexAttribs4svNV 778
+#define _gloffset_VertexAttribs4ubvNV 779
+#define _gloffset_GetTexBumpParameterfvATI 780
+#define _gloffset_GetTexBumpParameterivATI 781
+#define _gloffset_TexBumpParameterfvATI 782
+#define _gloffset_TexBumpParameterivATI 783
+#define _gloffset_AlphaFragmentOp1ATI 784
+#define _gloffset_AlphaFragmentOp2ATI 785
+#define _gloffset_AlphaFragmentOp3ATI 786
+#define _gloffset_BeginFragmentShaderATI 787
+#define _gloffset_BindFragmentShaderATI 788
+#define _gloffset_ColorFragmentOp1ATI 789
+#define _gloffset_ColorFragmentOp2ATI 790
+#define _gloffset_ColorFragmentOp3ATI 791
+#define _gloffset_DeleteFragmentShaderATI 792
+#define _gloffset_EndFragmentShaderATI 793
+#define _gloffset_GenFragmentShadersATI 794
+#define _gloffset_PassTexCoordATI 795
+#define _gloffset_SampleMapATI 796
+#define _gloffset_SetFragmentShaderConstantATI 797
+#define _gloffset_PointParameteriNV 798
+#define _gloffset_PointParameterivNV 799
+#define _gloffset_ActiveStencilFaceEXT 800
+#define _gloffset_BindVertexArrayAPPLE 801
+#define _gloffset_DeleteVertexArraysAPPLE 802
+#define _gloffset_GenVertexArraysAPPLE 803
+#define _gloffset_IsVertexArrayAPPLE 804
+#define _gloffset_GetProgramNamedParameterdvNV 805
+#define _gloffset_GetProgramNamedParameterfvNV 806
+#define _gloffset_ProgramNamedParameter4dNV 807
+#define _gloffset_ProgramNamedParameter4dvNV 808
+#define _gloffset_ProgramNamedParameter4fNV 809
+#define _gloffset_ProgramNamedParameter4fvNV 810
+#define _gloffset_PrimitiveRestartIndexNV 811
+#define _gloffset_PrimitiveRestartNV 812
+#define _gloffset_DepthBoundsEXT 813
+#define _gloffset_BlendEquationSeparateEXT 814
+#define _gloffset_BindFramebufferEXT 815
+#define _gloffset_BindRenderbufferEXT 816
+#define _gloffset_CheckFramebufferStatusEXT 817
+#define _gloffset_DeleteFramebuffersEXT 818
+#define _gloffset_DeleteRenderbuffersEXT 819
+#define _gloffset_FramebufferRenderbufferEXT 820
+#define _gloffset_FramebufferTexture1DEXT 821
+#define _gloffset_FramebufferTexture2DEXT 822
+#define _gloffset_FramebufferTexture3DEXT 823
+#define _gloffset_GenFramebuffersEXT 824
+#define _gloffset_GenRenderbuffersEXT 825
+#define _gloffset_GenerateMipmapEXT 826
+#define _gloffset_GetFramebufferAttachmentParameterivEXT 827
+#define _gloffset_GetRenderbufferParameterivEXT 828
+#define _gloffset_IsFramebufferEXT 829
+#define _gloffset_IsRenderbufferEXT 830
+#define _gloffset_RenderbufferStorageEXT 831
+#define _gloffset_BlitFramebufferEXT 832
+#define _gloffset_BufferParameteriAPPLE 833
+#define _gloffset_FlushMappedBufferRangeAPPLE 834
+#define _gloffset_BindFragDataLocationEXT 835
+#define _gloffset_GetFragDataLocationEXT 836
+#define _gloffset_GetUniformuivEXT 837
+#define _gloffset_GetVertexAttribIivEXT 838
+#define _gloffset_GetVertexAttribIuivEXT 839
+#define _gloffset_Uniform1uiEXT 840
+#define _gloffset_Uniform1uivEXT 841
+#define _gloffset_Uniform2uiEXT 842
+#define _gloffset_Uniform2uivEXT 843
+#define _gloffset_Uniform3uiEXT 844
+#define _gloffset_Uniform3uivEXT 845
+#define _gloffset_Uniform4uiEXT 846
+#define _gloffset_Uniform4uivEXT 847
+#define _gloffset_VertexAttribI1iEXT 848
+#define _gloffset_VertexAttribI1ivEXT 849
+#define _gloffset_VertexAttribI1uiEXT 850
+#define _gloffset_VertexAttribI1uivEXT 851
+#define _gloffset_VertexAttribI2iEXT 852
+#define _gloffset_VertexAttribI2ivEXT 853
+#define _gloffset_VertexAttribI2uiEXT 854
+#define _gloffset_VertexAttribI2uivEXT 855
+#define _gloffset_VertexAttribI3iEXT 856
+#define _gloffset_VertexAttribI3ivEXT 857
+#define _gloffset_VertexAttribI3uiEXT 858
+#define _gloffset_VertexAttribI3uivEXT 859
+#define _gloffset_VertexAttribI4bvEXT 860
+#define _gloffset_VertexAttribI4iEXT 861
+#define _gloffset_VertexAttribI4ivEXT 862
+#define _gloffset_VertexAttribI4svEXT 863
+#define _gloffset_VertexAttribI4ubvEXT 864
+#define _gloffset_VertexAttribI4uiEXT 865
+#define _gloffset_VertexAttribI4uivEXT 866
+#define _gloffset_VertexAttribI4usvEXT 867
+#define _gloffset_VertexAttribIPointerEXT 868
+#define _gloffset_FramebufferTextureLayerEXT 869
+#define _gloffset_ColorMaskIndexedEXT 870
+#define _gloffset_DisableIndexedEXT 871
+#define _gloffset_EnableIndexedEXT 872
+#define _gloffset_GetBooleanIndexedvEXT 873
+#define _gloffset_GetIntegerIndexedvEXT 874
+#define _gloffset_IsEnabledIndexedEXT 875
+#define _gloffset_ClearColorIiEXT 876
+#define _gloffset_ClearColorIuiEXT 877
+#define _gloffset_GetTexParameterIivEXT 878
+#define _gloffset_GetTexParameterIuivEXT 879
+#define _gloffset_TexParameterIivEXT 880
+#define _gloffset_TexParameterIuivEXT 881
+#define _gloffset_BeginConditionalRenderNV 882
+#define _gloffset_EndConditionalRenderNV 883
+#define _gloffset_BeginTransformFeedbackEXT 884
+#define _gloffset_BindBufferBaseEXT 885
+#define _gloffset_BindBufferOffsetEXT 886
+#define _gloffset_BindBufferRangeEXT 887
+#define _gloffset_EndTransformFeedbackEXT 888
+#define _gloffset_GetTransformFeedbackVaryingEXT 889
+#define _gloffset_TransformFeedbackVaryingsEXT 890
+#define _gloffset_ProvokingVertexEXT 891
+#define _gloffset_GetTexParameterPointervAPPLE 892
+#define _gloffset_TextureRangeAPPLE 893
+#define _gloffset_GetObjectParameterivAPPLE 894
+#define _gloffset_ObjectPurgeableAPPLE 895
+#define _gloffset_ObjectUnpurgeableAPPLE 896
+#define _gloffset_ActiveProgramEXT 897
+#define _gloffset_CreateShaderProgramEXT 898
+#define _gloffset_UseShaderProgramEXT 899
+#define _gloffset_TextureBarrierNV 900
+#define _gloffset_StencilFuncSeparateATI 901
+#define _gloffset_ProgramEnvParameters4fvEXT 902
+#define _gloffset_ProgramLocalParameters4fvEXT 903
+#define _gloffset_GetQueryObjecti64vEXT 904
+#define _gloffset_GetQueryObjectui64vEXT 905
+#define _gloffset_EGLImageTargetRenderbufferStorageOES 906
+#define _gloffset_EGLImageTargetTexture2DOES 907
#else /* !_GLAPI_USE_REMAP_TABLE */
-#define driDispatchRemapTable_size 484
+#define driDispatchRemapTable_size 500
extern int driDispatchRemapTable[ driDispatchRemapTable_size ];
#define AttachShader_remap_index 0
@@ -1126,326 +1142,342 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ];
#define GetActiveAttribARB_remap_index 161
#define GetAttribLocationARB_remap_index 162
#define DrawBuffersARB_remap_index 163
-#define DrawArraysInstancedARB_remap_index 164
-#define DrawElementsInstancedARB_remap_index 165
-#define RenderbufferStorageMultisample_remap_index 166
-#define FramebufferTextureARB_remap_index 167
-#define FramebufferTextureFaceARB_remap_index 168
-#define ProgramParameteriARB_remap_index 169
-#define VertexAttribDivisorARB_remap_index 170
-#define FlushMappedBufferRange_remap_index 171
-#define MapBufferRange_remap_index 172
-#define BindVertexArray_remap_index 173
-#define GenVertexArrays_remap_index 174
-#define CopyBufferSubData_remap_index 175
-#define ClientWaitSync_remap_index 176
-#define DeleteSync_remap_index 177
-#define FenceSync_remap_index 178
-#define GetInteger64v_remap_index 179
-#define GetSynciv_remap_index 180
-#define IsSync_remap_index 181
-#define WaitSync_remap_index 182
-#define DrawElementsBaseVertex_remap_index 183
-#define DrawRangeElementsBaseVertex_remap_index 184
-#define MultiDrawElementsBaseVertex_remap_index 185
-#define BlendEquationSeparateiARB_remap_index 186
-#define BlendEquationiARB_remap_index 187
-#define BlendFuncSeparateiARB_remap_index 188
-#define BlendFunciARB_remap_index 189
-#define BindTransformFeedback_remap_index 190
-#define DeleteTransformFeedbacks_remap_index 191
-#define DrawTransformFeedback_remap_index 192
-#define GenTransformFeedbacks_remap_index 193
-#define IsTransformFeedback_remap_index 194
-#define PauseTransformFeedback_remap_index 195
-#define ResumeTransformFeedback_remap_index 196
-#define ClearDepthf_remap_index 197
-#define DepthRangef_remap_index 198
-#define GetShaderPrecisionFormat_remap_index 199
-#define ReleaseShaderCompiler_remap_index 200
-#define ShaderBinary_remap_index 201
-#define PolygonOffsetEXT_remap_index 202
-#define GetPixelTexGenParameterfvSGIS_remap_index 203
-#define GetPixelTexGenParameterivSGIS_remap_index 204
-#define PixelTexGenParameterfSGIS_remap_index 205
-#define PixelTexGenParameterfvSGIS_remap_index 206
-#define PixelTexGenParameteriSGIS_remap_index 207
-#define PixelTexGenParameterivSGIS_remap_index 208
-#define SampleMaskSGIS_remap_index 209
-#define SamplePatternSGIS_remap_index 210
-#define ColorPointerEXT_remap_index 211
-#define EdgeFlagPointerEXT_remap_index 212
-#define IndexPointerEXT_remap_index 213
-#define NormalPointerEXT_remap_index 214
-#define TexCoordPointerEXT_remap_index 215
-#define VertexPointerEXT_remap_index 216
-#define PointParameterfEXT_remap_index 217
-#define PointParameterfvEXT_remap_index 218
-#define LockArraysEXT_remap_index 219
-#define UnlockArraysEXT_remap_index 220
-#define SecondaryColor3bEXT_remap_index 221
-#define SecondaryColor3bvEXT_remap_index 222
-#define SecondaryColor3dEXT_remap_index 223
-#define SecondaryColor3dvEXT_remap_index 224
-#define SecondaryColor3fEXT_remap_index 225
-#define SecondaryColor3fvEXT_remap_index 226
-#define SecondaryColor3iEXT_remap_index 227
-#define SecondaryColor3ivEXT_remap_index 228
-#define SecondaryColor3sEXT_remap_index 229
-#define SecondaryColor3svEXT_remap_index 230
-#define SecondaryColor3ubEXT_remap_index 231
-#define SecondaryColor3ubvEXT_remap_index 232
-#define SecondaryColor3uiEXT_remap_index 233
-#define SecondaryColor3uivEXT_remap_index 234
-#define SecondaryColor3usEXT_remap_index 235
-#define SecondaryColor3usvEXT_remap_index 236
-#define SecondaryColorPointerEXT_remap_index 237
-#define MultiDrawArraysEXT_remap_index 238
-#define MultiDrawElementsEXT_remap_index 239
-#define FogCoordPointerEXT_remap_index 240
-#define FogCoorddEXT_remap_index 241
-#define FogCoorddvEXT_remap_index 242
-#define FogCoordfEXT_remap_index 243
-#define FogCoordfvEXT_remap_index 244
-#define PixelTexGenSGIX_remap_index 245
-#define BlendFuncSeparateEXT_remap_index 246
-#define FlushVertexArrayRangeNV_remap_index 247
-#define VertexArrayRangeNV_remap_index 248
-#define CombinerInputNV_remap_index 249
-#define CombinerOutputNV_remap_index 250
-#define CombinerParameterfNV_remap_index 251
-#define CombinerParameterfvNV_remap_index 252
-#define CombinerParameteriNV_remap_index 253
-#define CombinerParameterivNV_remap_index 254
-#define FinalCombinerInputNV_remap_index 255
-#define GetCombinerInputParameterfvNV_remap_index 256
-#define GetCombinerInputParameterivNV_remap_index 257
-#define GetCombinerOutputParameterfvNV_remap_index 258
-#define GetCombinerOutputParameterivNV_remap_index 259
-#define GetFinalCombinerInputParameterfvNV_remap_index 260
-#define GetFinalCombinerInputParameterivNV_remap_index 261
-#define ResizeBuffersMESA_remap_index 262
-#define WindowPos2dMESA_remap_index 263
-#define WindowPos2dvMESA_remap_index 264
-#define WindowPos2fMESA_remap_index 265
-#define WindowPos2fvMESA_remap_index 266
-#define WindowPos2iMESA_remap_index 267
-#define WindowPos2ivMESA_remap_index 268
-#define WindowPos2sMESA_remap_index 269
-#define WindowPos2svMESA_remap_index 270
-#define WindowPos3dMESA_remap_index 271
-#define WindowPos3dvMESA_remap_index 272
-#define WindowPos3fMESA_remap_index 273
-#define WindowPos3fvMESA_remap_index 274
-#define WindowPos3iMESA_remap_index 275
-#define WindowPos3ivMESA_remap_index 276
-#define WindowPos3sMESA_remap_index 277
-#define WindowPos3svMESA_remap_index 278
-#define WindowPos4dMESA_remap_index 279
-#define WindowPos4dvMESA_remap_index 280
-#define WindowPos4fMESA_remap_index 281
-#define WindowPos4fvMESA_remap_index 282
-#define WindowPos4iMESA_remap_index 283
-#define WindowPos4ivMESA_remap_index 284
-#define WindowPos4sMESA_remap_index 285
-#define WindowPos4svMESA_remap_index 286
-#define MultiModeDrawArraysIBM_remap_index 287
-#define MultiModeDrawElementsIBM_remap_index 288
-#define DeleteFencesNV_remap_index 289
-#define FinishFenceNV_remap_index 290
-#define GenFencesNV_remap_index 291
-#define GetFenceivNV_remap_index 292
-#define IsFenceNV_remap_index 293
-#define SetFenceNV_remap_index 294
-#define TestFenceNV_remap_index 295
-#define AreProgramsResidentNV_remap_index 296
-#define BindProgramNV_remap_index 297
-#define DeleteProgramsNV_remap_index 298
-#define ExecuteProgramNV_remap_index 299
-#define GenProgramsNV_remap_index 300
-#define GetProgramParameterdvNV_remap_index 301
-#define GetProgramParameterfvNV_remap_index 302
-#define GetProgramStringNV_remap_index 303
-#define GetProgramivNV_remap_index 304
-#define GetTrackMatrixivNV_remap_index 305
-#define GetVertexAttribPointervNV_remap_index 306
-#define GetVertexAttribdvNV_remap_index 307
-#define GetVertexAttribfvNV_remap_index 308
-#define GetVertexAttribivNV_remap_index 309
-#define IsProgramNV_remap_index 310
-#define LoadProgramNV_remap_index 311
-#define ProgramParameters4dvNV_remap_index 312
-#define ProgramParameters4fvNV_remap_index 313
-#define RequestResidentProgramsNV_remap_index 314
-#define TrackMatrixNV_remap_index 315
-#define VertexAttrib1dNV_remap_index 316
-#define VertexAttrib1dvNV_remap_index 317
-#define VertexAttrib1fNV_remap_index 318
-#define VertexAttrib1fvNV_remap_index 319
-#define VertexAttrib1sNV_remap_index 320
-#define VertexAttrib1svNV_remap_index 321
-#define VertexAttrib2dNV_remap_index 322
-#define VertexAttrib2dvNV_remap_index 323
-#define VertexAttrib2fNV_remap_index 324
-#define VertexAttrib2fvNV_remap_index 325
-#define VertexAttrib2sNV_remap_index 326
-#define VertexAttrib2svNV_remap_index 327
-#define VertexAttrib3dNV_remap_index 328
-#define VertexAttrib3dvNV_remap_index 329
-#define VertexAttrib3fNV_remap_index 330
-#define VertexAttrib3fvNV_remap_index 331
-#define VertexAttrib3sNV_remap_index 332
-#define VertexAttrib3svNV_remap_index 333
-#define VertexAttrib4dNV_remap_index 334
-#define VertexAttrib4dvNV_remap_index 335
-#define VertexAttrib4fNV_remap_index 336
-#define VertexAttrib4fvNV_remap_index 337
-#define VertexAttrib4sNV_remap_index 338
-#define VertexAttrib4svNV_remap_index 339
-#define VertexAttrib4ubNV_remap_index 340
-#define VertexAttrib4ubvNV_remap_index 341
-#define VertexAttribPointerNV_remap_index 342
-#define VertexAttribs1dvNV_remap_index 343
-#define VertexAttribs1fvNV_remap_index 344
-#define VertexAttribs1svNV_remap_index 345
-#define VertexAttribs2dvNV_remap_index 346
-#define VertexAttribs2fvNV_remap_index 347
-#define VertexAttribs2svNV_remap_index 348
-#define VertexAttribs3dvNV_remap_index 349
-#define VertexAttribs3fvNV_remap_index 350
-#define VertexAttribs3svNV_remap_index 351
-#define VertexAttribs4dvNV_remap_index 352
-#define VertexAttribs4fvNV_remap_index 353
-#define VertexAttribs4svNV_remap_index 354
-#define VertexAttribs4ubvNV_remap_index 355
-#define GetTexBumpParameterfvATI_remap_index 356
-#define GetTexBumpParameterivATI_remap_index 357
-#define TexBumpParameterfvATI_remap_index 358
-#define TexBumpParameterivATI_remap_index 359
-#define AlphaFragmentOp1ATI_remap_index 360
-#define AlphaFragmentOp2ATI_remap_index 361
-#define AlphaFragmentOp3ATI_remap_index 362
-#define BeginFragmentShaderATI_remap_index 363
-#define BindFragmentShaderATI_remap_index 364
-#define ColorFragmentOp1ATI_remap_index 365
-#define ColorFragmentOp2ATI_remap_index 366
-#define ColorFragmentOp3ATI_remap_index 367
-#define DeleteFragmentShaderATI_remap_index 368
-#define EndFragmentShaderATI_remap_index 369
-#define GenFragmentShadersATI_remap_index 370
-#define PassTexCoordATI_remap_index 371
-#define SampleMapATI_remap_index 372
-#define SetFragmentShaderConstantATI_remap_index 373
-#define PointParameteriNV_remap_index 374
-#define PointParameterivNV_remap_index 375
-#define ActiveStencilFaceEXT_remap_index 376
-#define BindVertexArrayAPPLE_remap_index 377
-#define DeleteVertexArraysAPPLE_remap_index 378
-#define GenVertexArraysAPPLE_remap_index 379
-#define IsVertexArrayAPPLE_remap_index 380
-#define GetProgramNamedParameterdvNV_remap_index 381
-#define GetProgramNamedParameterfvNV_remap_index 382
-#define ProgramNamedParameter4dNV_remap_index 383
-#define ProgramNamedParameter4dvNV_remap_index 384
-#define ProgramNamedParameter4fNV_remap_index 385
-#define ProgramNamedParameter4fvNV_remap_index 386
-#define PrimitiveRestartIndexNV_remap_index 387
-#define PrimitiveRestartNV_remap_index 388
-#define DepthBoundsEXT_remap_index 389
-#define BlendEquationSeparateEXT_remap_index 390
-#define BindFramebufferEXT_remap_index 391
-#define BindRenderbufferEXT_remap_index 392
-#define CheckFramebufferStatusEXT_remap_index 393
-#define DeleteFramebuffersEXT_remap_index 394
-#define DeleteRenderbuffersEXT_remap_index 395
-#define FramebufferRenderbufferEXT_remap_index 396
-#define FramebufferTexture1DEXT_remap_index 397
-#define FramebufferTexture2DEXT_remap_index 398
-#define FramebufferTexture3DEXT_remap_index 399
-#define GenFramebuffersEXT_remap_index 400
-#define GenRenderbuffersEXT_remap_index 401
-#define GenerateMipmapEXT_remap_index 402
-#define GetFramebufferAttachmentParameterivEXT_remap_index 403
-#define GetRenderbufferParameterivEXT_remap_index 404
-#define IsFramebufferEXT_remap_index 405
-#define IsRenderbufferEXT_remap_index 406
-#define RenderbufferStorageEXT_remap_index 407
-#define BlitFramebufferEXT_remap_index 408
-#define BufferParameteriAPPLE_remap_index 409
-#define FlushMappedBufferRangeAPPLE_remap_index 410
-#define BindFragDataLocationEXT_remap_index 411
-#define GetFragDataLocationEXT_remap_index 412
-#define GetUniformuivEXT_remap_index 413
-#define GetVertexAttribIivEXT_remap_index 414
-#define GetVertexAttribIuivEXT_remap_index 415
-#define Uniform1uiEXT_remap_index 416
-#define Uniform1uivEXT_remap_index 417
-#define Uniform2uiEXT_remap_index 418
-#define Uniform2uivEXT_remap_index 419
-#define Uniform3uiEXT_remap_index 420
-#define Uniform3uivEXT_remap_index 421
-#define Uniform4uiEXT_remap_index 422
-#define Uniform4uivEXT_remap_index 423
-#define VertexAttribI1iEXT_remap_index 424
-#define VertexAttribI1ivEXT_remap_index 425
-#define VertexAttribI1uiEXT_remap_index 426
-#define VertexAttribI1uivEXT_remap_index 427
-#define VertexAttribI2iEXT_remap_index 428
-#define VertexAttribI2ivEXT_remap_index 429
-#define VertexAttribI2uiEXT_remap_index 430
-#define VertexAttribI2uivEXT_remap_index 431
-#define VertexAttribI3iEXT_remap_index 432
-#define VertexAttribI3ivEXT_remap_index 433
-#define VertexAttribI3uiEXT_remap_index 434
-#define VertexAttribI3uivEXT_remap_index 435
-#define VertexAttribI4bvEXT_remap_index 436
-#define VertexAttribI4iEXT_remap_index 437
-#define VertexAttribI4ivEXT_remap_index 438
-#define VertexAttribI4svEXT_remap_index 439
-#define VertexAttribI4ubvEXT_remap_index 440
-#define VertexAttribI4uiEXT_remap_index 441
-#define VertexAttribI4uivEXT_remap_index 442
-#define VertexAttribI4usvEXT_remap_index 443
-#define VertexAttribIPointerEXT_remap_index 444
-#define FramebufferTextureLayerEXT_remap_index 445
-#define ColorMaskIndexedEXT_remap_index 446
-#define DisableIndexedEXT_remap_index 447
-#define EnableIndexedEXT_remap_index 448
-#define GetBooleanIndexedvEXT_remap_index 449
-#define GetIntegerIndexedvEXT_remap_index 450
-#define IsEnabledIndexedEXT_remap_index 451
-#define ClearColorIiEXT_remap_index 452
-#define ClearColorIuiEXT_remap_index 453
-#define GetTexParameterIivEXT_remap_index 454
-#define GetTexParameterIuivEXT_remap_index 455
-#define TexParameterIivEXT_remap_index 456
-#define TexParameterIuivEXT_remap_index 457
-#define BeginConditionalRenderNV_remap_index 458
-#define EndConditionalRenderNV_remap_index 459
-#define BeginTransformFeedbackEXT_remap_index 460
-#define BindBufferBaseEXT_remap_index 461
-#define BindBufferOffsetEXT_remap_index 462
-#define BindBufferRangeEXT_remap_index 463
-#define EndTransformFeedbackEXT_remap_index 464
-#define GetTransformFeedbackVaryingEXT_remap_index 465
-#define TransformFeedbackVaryingsEXT_remap_index 466
-#define ProvokingVertexEXT_remap_index 467
-#define GetTexParameterPointervAPPLE_remap_index 468
-#define TextureRangeAPPLE_remap_index 469
-#define GetObjectParameterivAPPLE_remap_index 470
-#define ObjectPurgeableAPPLE_remap_index 471
-#define ObjectUnpurgeableAPPLE_remap_index 472
-#define ActiveProgramEXT_remap_index 473
-#define CreateShaderProgramEXT_remap_index 474
-#define UseShaderProgramEXT_remap_index 475
-#define TextureBarrierNV_remap_index 476
-#define StencilFuncSeparateATI_remap_index 477
-#define ProgramEnvParameters4fvEXT_remap_index 478
-#define ProgramLocalParameters4fvEXT_remap_index 479
-#define GetQueryObjecti64vEXT_remap_index 480
-#define GetQueryObjectui64vEXT_remap_index 481
-#define EGLImageTargetRenderbufferStorageOES_remap_index 482
-#define EGLImageTargetTexture2DOES_remap_index 483
+#define ClampColorARB_remap_index 164
+#define DrawArraysInstancedARB_remap_index 165
+#define DrawElementsInstancedARB_remap_index 166
+#define RenderbufferStorageMultisample_remap_index 167
+#define FramebufferTextureARB_remap_index 168
+#define FramebufferTextureFaceARB_remap_index 169
+#define ProgramParameteriARB_remap_index 170
+#define VertexAttribDivisorARB_remap_index 171
+#define FlushMappedBufferRange_remap_index 172
+#define MapBufferRange_remap_index 173
+#define TexBufferARB_remap_index 174
+#define BindVertexArray_remap_index 175
+#define GenVertexArrays_remap_index 176
+#define CopyBufferSubData_remap_index 177
+#define ClientWaitSync_remap_index 178
+#define DeleteSync_remap_index 179
+#define FenceSync_remap_index 180
+#define GetInteger64v_remap_index 181
+#define GetSynciv_remap_index 182
+#define IsSync_remap_index 183
+#define WaitSync_remap_index 184
+#define DrawElementsBaseVertex_remap_index 185
+#define DrawRangeElementsBaseVertex_remap_index 186
+#define MultiDrawElementsBaseVertex_remap_index 187
+#define BlendEquationSeparateiARB_remap_index 188
+#define BlendEquationiARB_remap_index 189
+#define BlendFuncSeparateiARB_remap_index 190
+#define BlendFunciARB_remap_index 191
+#define BindSampler_remap_index 192
+#define DeleteSamplers_remap_index 193
+#define GenSamplers_remap_index 194
+#define GetSamplerParameterIiv_remap_index 195
+#define GetSamplerParameterIuiv_remap_index 196
+#define GetSamplerParameterfv_remap_index 197
+#define GetSamplerParameteriv_remap_index 198
+#define IsSampler_remap_index 199
+#define SamplerParameterIiv_remap_index 200
+#define SamplerParameterIuiv_remap_index 201
+#define SamplerParameterf_remap_index 202
+#define SamplerParameterfv_remap_index 203
+#define SamplerParameteri_remap_index 204
+#define SamplerParameteriv_remap_index 205
+#define BindTransformFeedback_remap_index 206
+#define DeleteTransformFeedbacks_remap_index 207
+#define DrawTransformFeedback_remap_index 208
+#define GenTransformFeedbacks_remap_index 209
+#define IsTransformFeedback_remap_index 210
+#define PauseTransformFeedback_remap_index 211
+#define ResumeTransformFeedback_remap_index 212
+#define ClearDepthf_remap_index 213
+#define DepthRangef_remap_index 214
+#define GetShaderPrecisionFormat_remap_index 215
+#define ReleaseShaderCompiler_remap_index 216
+#define ShaderBinary_remap_index 217
+#define PolygonOffsetEXT_remap_index 218
+#define GetPixelTexGenParameterfvSGIS_remap_index 219
+#define GetPixelTexGenParameterivSGIS_remap_index 220
+#define PixelTexGenParameterfSGIS_remap_index 221
+#define PixelTexGenParameterfvSGIS_remap_index 222
+#define PixelTexGenParameteriSGIS_remap_index 223
+#define PixelTexGenParameterivSGIS_remap_index 224
+#define SampleMaskSGIS_remap_index 225
+#define SamplePatternSGIS_remap_index 226
+#define ColorPointerEXT_remap_index 227
+#define EdgeFlagPointerEXT_remap_index 228
+#define IndexPointerEXT_remap_index 229
+#define NormalPointerEXT_remap_index 230
+#define TexCoordPointerEXT_remap_index 231
+#define VertexPointerEXT_remap_index 232
+#define PointParameterfEXT_remap_index 233
+#define PointParameterfvEXT_remap_index 234
+#define LockArraysEXT_remap_index 235
+#define UnlockArraysEXT_remap_index 236
+#define SecondaryColor3bEXT_remap_index 237
+#define SecondaryColor3bvEXT_remap_index 238
+#define SecondaryColor3dEXT_remap_index 239
+#define SecondaryColor3dvEXT_remap_index 240
+#define SecondaryColor3fEXT_remap_index 241
+#define SecondaryColor3fvEXT_remap_index 242
+#define SecondaryColor3iEXT_remap_index 243
+#define SecondaryColor3ivEXT_remap_index 244
+#define SecondaryColor3sEXT_remap_index 245
+#define SecondaryColor3svEXT_remap_index 246
+#define SecondaryColor3ubEXT_remap_index 247
+#define SecondaryColor3ubvEXT_remap_index 248
+#define SecondaryColor3uiEXT_remap_index 249
+#define SecondaryColor3uivEXT_remap_index 250
+#define SecondaryColor3usEXT_remap_index 251
+#define SecondaryColor3usvEXT_remap_index 252
+#define SecondaryColorPointerEXT_remap_index 253
+#define MultiDrawArraysEXT_remap_index 254
+#define MultiDrawElementsEXT_remap_index 255
+#define FogCoordPointerEXT_remap_index 256
+#define FogCoorddEXT_remap_index 257
+#define FogCoorddvEXT_remap_index 258
+#define FogCoordfEXT_remap_index 259
+#define FogCoordfvEXT_remap_index 260
+#define PixelTexGenSGIX_remap_index 261
+#define BlendFuncSeparateEXT_remap_index 262
+#define FlushVertexArrayRangeNV_remap_index 263
+#define VertexArrayRangeNV_remap_index 264
+#define CombinerInputNV_remap_index 265
+#define CombinerOutputNV_remap_index 266
+#define CombinerParameterfNV_remap_index 267
+#define CombinerParameterfvNV_remap_index 268
+#define CombinerParameteriNV_remap_index 269
+#define CombinerParameterivNV_remap_index 270
+#define FinalCombinerInputNV_remap_index 271
+#define GetCombinerInputParameterfvNV_remap_index 272
+#define GetCombinerInputParameterivNV_remap_index 273
+#define GetCombinerOutputParameterfvNV_remap_index 274
+#define GetCombinerOutputParameterivNV_remap_index 275
+#define GetFinalCombinerInputParameterfvNV_remap_index 276
+#define GetFinalCombinerInputParameterivNV_remap_index 277
+#define ResizeBuffersMESA_remap_index 278
+#define WindowPos2dMESA_remap_index 279
+#define WindowPos2dvMESA_remap_index 280
+#define WindowPos2fMESA_remap_index 281
+#define WindowPos2fvMESA_remap_index 282
+#define WindowPos2iMESA_remap_index 283
+#define WindowPos2ivMESA_remap_index 284
+#define WindowPos2sMESA_remap_index 285
+#define WindowPos2svMESA_remap_index 286
+#define WindowPos3dMESA_remap_index 287
+#define WindowPos3dvMESA_remap_index 288
+#define WindowPos3fMESA_remap_index 289
+#define WindowPos3fvMESA_remap_index 290
+#define WindowPos3iMESA_remap_index 291
+#define WindowPos3ivMESA_remap_index 292
+#define WindowPos3sMESA_remap_index 293
+#define WindowPos3svMESA_remap_index 294
+#define WindowPos4dMESA_remap_index 295
+#define WindowPos4dvMESA_remap_index 296
+#define WindowPos4fMESA_remap_index 297
+#define WindowPos4fvMESA_remap_index 298
+#define WindowPos4iMESA_remap_index 299
+#define WindowPos4ivMESA_remap_index 300
+#define WindowPos4sMESA_remap_index 301
+#define WindowPos4svMESA_remap_index 302
+#define MultiModeDrawArraysIBM_remap_index 303
+#define MultiModeDrawElementsIBM_remap_index 304
+#define DeleteFencesNV_remap_index 305
+#define FinishFenceNV_remap_index 306
+#define GenFencesNV_remap_index 307
+#define GetFenceivNV_remap_index 308
+#define IsFenceNV_remap_index 309
+#define SetFenceNV_remap_index 310
+#define TestFenceNV_remap_index 311
+#define AreProgramsResidentNV_remap_index 312
+#define BindProgramNV_remap_index 313
+#define DeleteProgramsNV_remap_index 314
+#define ExecuteProgramNV_remap_index 315
+#define GenProgramsNV_remap_index 316
+#define GetProgramParameterdvNV_remap_index 317
+#define GetProgramParameterfvNV_remap_index 318
+#define GetProgramStringNV_remap_index 319
+#define GetProgramivNV_remap_index 320
+#define GetTrackMatrixivNV_remap_index 321
+#define GetVertexAttribPointervNV_remap_index 322
+#define GetVertexAttribdvNV_remap_index 323
+#define GetVertexAttribfvNV_remap_index 324
+#define GetVertexAttribivNV_remap_index 325
+#define IsProgramNV_remap_index 326
+#define LoadProgramNV_remap_index 327
+#define ProgramParameters4dvNV_remap_index 328
+#define ProgramParameters4fvNV_remap_index 329
+#define RequestResidentProgramsNV_remap_index 330
+#define TrackMatrixNV_remap_index 331
+#define VertexAttrib1dNV_remap_index 332
+#define VertexAttrib1dvNV_remap_index 333
+#define VertexAttrib1fNV_remap_index 334
+#define VertexAttrib1fvNV_remap_index 335
+#define VertexAttrib1sNV_remap_index 336
+#define VertexAttrib1svNV_remap_index 337
+#define VertexAttrib2dNV_remap_index 338
+#define VertexAttrib2dvNV_remap_index 339
+#define VertexAttrib2fNV_remap_index 340
+#define VertexAttrib2fvNV_remap_index 341
+#define VertexAttrib2sNV_remap_index 342
+#define VertexAttrib2svNV_remap_index 343
+#define VertexAttrib3dNV_remap_index 344
+#define VertexAttrib3dvNV_remap_index 345
+#define VertexAttrib3fNV_remap_index 346
+#define VertexAttrib3fvNV_remap_index 347
+#define VertexAttrib3sNV_remap_index 348
+#define VertexAttrib3svNV_remap_index 349
+#define VertexAttrib4dNV_remap_index 350
+#define VertexAttrib4dvNV_remap_index 351
+#define VertexAttrib4fNV_remap_index 352
+#define VertexAttrib4fvNV_remap_index 353
+#define VertexAttrib4sNV_remap_index 354
+#define VertexAttrib4svNV_remap_index 355
+#define VertexAttrib4ubNV_remap_index 356
+#define VertexAttrib4ubvNV_remap_index 357
+#define VertexAttribPointerNV_remap_index 358
+#define VertexAttribs1dvNV_remap_index 359
+#define VertexAttribs1fvNV_remap_index 360
+#define VertexAttribs1svNV_remap_index 361
+#define VertexAttribs2dvNV_remap_index 362
+#define VertexAttribs2fvNV_remap_index 363
+#define VertexAttribs2svNV_remap_index 364
+#define VertexAttribs3dvNV_remap_index 365
+#define VertexAttribs3fvNV_remap_index 366
+#define VertexAttribs3svNV_remap_index 367
+#define VertexAttribs4dvNV_remap_index 368
+#define VertexAttribs4fvNV_remap_index 369
+#define VertexAttribs4svNV_remap_index 370
+#define VertexAttribs4ubvNV_remap_index 371
+#define GetTexBumpParameterfvATI_remap_index 372
+#define GetTexBumpParameterivATI_remap_index 373
+#define TexBumpParameterfvATI_remap_index 374
+#define TexBumpParameterivATI_remap_index 375
+#define AlphaFragmentOp1ATI_remap_index 376
+#define AlphaFragmentOp2ATI_remap_index 377
+#define AlphaFragmentOp3ATI_remap_index 378
+#define BeginFragmentShaderATI_remap_index 379
+#define BindFragmentShaderATI_remap_index 380
+#define ColorFragmentOp1ATI_remap_index 381
+#define ColorFragmentOp2ATI_remap_index 382
+#define ColorFragmentOp3ATI_remap_index 383
+#define DeleteFragmentShaderATI_remap_index 384
+#define EndFragmentShaderATI_remap_index 385
+#define GenFragmentShadersATI_remap_index 386
+#define PassTexCoordATI_remap_index 387
+#define SampleMapATI_remap_index 388
+#define SetFragmentShaderConstantATI_remap_index 389
+#define PointParameteriNV_remap_index 390
+#define PointParameterivNV_remap_index 391
+#define ActiveStencilFaceEXT_remap_index 392
+#define BindVertexArrayAPPLE_remap_index 393
+#define DeleteVertexArraysAPPLE_remap_index 394
+#define GenVertexArraysAPPLE_remap_index 395
+#define IsVertexArrayAPPLE_remap_index 396
+#define GetProgramNamedParameterdvNV_remap_index 397
+#define GetProgramNamedParameterfvNV_remap_index 398
+#define ProgramNamedParameter4dNV_remap_index 399
+#define ProgramNamedParameter4dvNV_remap_index 400
+#define ProgramNamedParameter4fNV_remap_index 401
+#define ProgramNamedParameter4fvNV_remap_index 402
+#define PrimitiveRestartIndexNV_remap_index 403
+#define PrimitiveRestartNV_remap_index 404
+#define DepthBoundsEXT_remap_index 405
+#define BlendEquationSeparateEXT_remap_index 406
+#define BindFramebufferEXT_remap_index 407
+#define BindRenderbufferEXT_remap_index 408
+#define CheckFramebufferStatusEXT_remap_index 409
+#define DeleteFramebuffersEXT_remap_index 410
+#define DeleteRenderbuffersEXT_remap_index 411
+#define FramebufferRenderbufferEXT_remap_index 412
+#define FramebufferTexture1DEXT_remap_index 413
+#define FramebufferTexture2DEXT_remap_index 414
+#define FramebufferTexture3DEXT_remap_index 415
+#define GenFramebuffersEXT_remap_index 416
+#define GenRenderbuffersEXT_remap_index 417
+#define GenerateMipmapEXT_remap_index 418
+#define GetFramebufferAttachmentParameterivEXT_remap_index 419
+#define GetRenderbufferParameterivEXT_remap_index 420
+#define IsFramebufferEXT_remap_index 421
+#define IsRenderbufferEXT_remap_index 422
+#define RenderbufferStorageEXT_remap_index 423
+#define BlitFramebufferEXT_remap_index 424
+#define BufferParameteriAPPLE_remap_index 425
+#define FlushMappedBufferRangeAPPLE_remap_index 426
+#define BindFragDataLocationEXT_remap_index 427
+#define GetFragDataLocationEXT_remap_index 428
+#define GetUniformuivEXT_remap_index 429
+#define GetVertexAttribIivEXT_remap_index 430
+#define GetVertexAttribIuivEXT_remap_index 431
+#define Uniform1uiEXT_remap_index 432
+#define Uniform1uivEXT_remap_index 433
+#define Uniform2uiEXT_remap_index 434
+#define Uniform2uivEXT_remap_index 435
+#define Uniform3uiEXT_remap_index 436
+#define Uniform3uivEXT_remap_index 437
+#define Uniform4uiEXT_remap_index 438
+#define Uniform4uivEXT_remap_index 439
+#define VertexAttribI1iEXT_remap_index 440
+#define VertexAttribI1ivEXT_remap_index 441
+#define VertexAttribI1uiEXT_remap_index 442
+#define VertexAttribI1uivEXT_remap_index 443
+#define VertexAttribI2iEXT_remap_index 444
+#define VertexAttribI2ivEXT_remap_index 445
+#define VertexAttribI2uiEXT_remap_index 446
+#define VertexAttribI2uivEXT_remap_index 447
+#define VertexAttribI3iEXT_remap_index 448
+#define VertexAttribI3ivEXT_remap_index 449
+#define VertexAttribI3uiEXT_remap_index 450
+#define VertexAttribI3uivEXT_remap_index 451
+#define VertexAttribI4bvEXT_remap_index 452
+#define VertexAttribI4iEXT_remap_index 453
+#define VertexAttribI4ivEXT_remap_index 454
+#define VertexAttribI4svEXT_remap_index 455
+#define VertexAttribI4ubvEXT_remap_index 456
+#define VertexAttribI4uiEXT_remap_index 457
+#define VertexAttribI4uivEXT_remap_index 458
+#define VertexAttribI4usvEXT_remap_index 459
+#define VertexAttribIPointerEXT_remap_index 460
+#define FramebufferTextureLayerEXT_remap_index 461
+#define ColorMaskIndexedEXT_remap_index 462
+#define DisableIndexedEXT_remap_index 463
+#define EnableIndexedEXT_remap_index 464
+#define GetBooleanIndexedvEXT_remap_index 465
+#define GetIntegerIndexedvEXT_remap_index 466
+#define IsEnabledIndexedEXT_remap_index 467
+#define ClearColorIiEXT_remap_index 468
+#define ClearColorIuiEXT_remap_index 469
+#define GetTexParameterIivEXT_remap_index 470
+#define GetTexParameterIuivEXT_remap_index 471
+#define TexParameterIivEXT_remap_index 472
+#define TexParameterIuivEXT_remap_index 473
+#define BeginConditionalRenderNV_remap_index 474
+#define EndConditionalRenderNV_remap_index 475
+#define BeginTransformFeedbackEXT_remap_index 476
+#define BindBufferBaseEXT_remap_index 477
+#define BindBufferOffsetEXT_remap_index 478
+#define BindBufferRangeEXT_remap_index 479
+#define EndTransformFeedbackEXT_remap_index 480
+#define GetTransformFeedbackVaryingEXT_remap_index 481
+#define TransformFeedbackVaryingsEXT_remap_index 482
+#define ProvokingVertexEXT_remap_index 483
+#define GetTexParameterPointervAPPLE_remap_index 484
+#define TextureRangeAPPLE_remap_index 485
+#define GetObjectParameterivAPPLE_remap_index 486
+#define ObjectPurgeableAPPLE_remap_index 487
+#define ObjectUnpurgeableAPPLE_remap_index 488
+#define ActiveProgramEXT_remap_index 489
+#define CreateShaderProgramEXT_remap_index 490
+#define UseShaderProgramEXT_remap_index 491
+#define TextureBarrierNV_remap_index 492
+#define StencilFuncSeparateATI_remap_index 493
+#define ProgramEnvParameters4fvEXT_remap_index 494
+#define ProgramLocalParameters4fvEXT_remap_index 495
+#define GetQueryObjecti64vEXT_remap_index 496
+#define GetQueryObjectui64vEXT_remap_index 497
+#define EGLImageTargetRenderbufferStorageOES_remap_index 498
+#define EGLImageTargetTexture2DOES_remap_index 499
#define _gloffset_AttachShader driDispatchRemapTable[AttachShader_remap_index]
#define _gloffset_CreateProgram driDispatchRemapTable[CreateProgram_remap_index]
@@ -1611,6 +1643,7 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ];
#define _gloffset_GetActiveAttribARB driDispatchRemapTable[GetActiveAttribARB_remap_index]
#define _gloffset_GetAttribLocationARB driDispatchRemapTable[GetAttribLocationARB_remap_index]
#define _gloffset_DrawBuffersARB driDispatchRemapTable[DrawBuffersARB_remap_index]
+#define _gloffset_ClampColorARB driDispatchRemapTable[ClampColorARB_remap_index]
#define _gloffset_DrawArraysInstancedARB driDispatchRemapTable[DrawArraysInstancedARB_remap_index]
#define _gloffset_DrawElementsInstancedARB driDispatchRemapTable[DrawElementsInstancedARB_remap_index]
#define _gloffset_RenderbufferStorageMultisample driDispatchRemapTable[RenderbufferStorageMultisample_remap_index]
@@ -1620,6 +1653,7 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ];
#define _gloffset_VertexAttribDivisorARB driDispatchRemapTable[VertexAttribDivisorARB_remap_index]
#define _gloffset_FlushMappedBufferRange driDispatchRemapTable[FlushMappedBufferRange_remap_index]
#define _gloffset_MapBufferRange driDispatchRemapTable[MapBufferRange_remap_index]
+#define _gloffset_TexBufferARB driDispatchRemapTable[TexBufferARB_remap_index]
#define _gloffset_BindVertexArray driDispatchRemapTable[BindVertexArray_remap_index]
#define _gloffset_GenVertexArrays driDispatchRemapTable[GenVertexArrays_remap_index]
#define _gloffset_CopyBufferSubData driDispatchRemapTable[CopyBufferSubData_remap_index]
@@ -1637,6 +1671,20 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ];
#define _gloffset_BlendEquationiARB driDispatchRemapTable[BlendEquationiARB_remap_index]
#define _gloffset_BlendFuncSeparateiARB driDispatchRemapTable[BlendFuncSeparateiARB_remap_index]
#define _gloffset_BlendFunciARB driDispatchRemapTable[BlendFunciARB_remap_index]
+#define _gloffset_BindSampler driDispatchRemapTable[BindSampler_remap_index]
+#define _gloffset_DeleteSamplers driDispatchRemapTable[DeleteSamplers_remap_index]
+#define _gloffset_GenSamplers driDispatchRemapTable[GenSamplers_remap_index]
+#define _gloffset_GetSamplerParameterIiv driDispatchRemapTable[GetSamplerParameterIiv_remap_index]
+#define _gloffset_GetSamplerParameterIuiv driDispatchRemapTable[GetSamplerParameterIuiv_remap_index]
+#define _gloffset_GetSamplerParameterfv driDispatchRemapTable[GetSamplerParameterfv_remap_index]
+#define _gloffset_GetSamplerParameteriv driDispatchRemapTable[GetSamplerParameteriv_remap_index]
+#define _gloffset_IsSampler driDispatchRemapTable[IsSampler_remap_index]
+#define _gloffset_SamplerParameterIiv driDispatchRemapTable[SamplerParameterIiv_remap_index]
+#define _gloffset_SamplerParameterIuiv driDispatchRemapTable[SamplerParameterIuiv_remap_index]
+#define _gloffset_SamplerParameterf driDispatchRemapTable[SamplerParameterf_remap_index]
+#define _gloffset_SamplerParameterfv driDispatchRemapTable[SamplerParameterfv_remap_index]
+#define _gloffset_SamplerParameteri driDispatchRemapTable[SamplerParameteri_remap_index]
+#define _gloffset_SamplerParameteriv driDispatchRemapTable[SamplerParameteriv_remap_index]
#define _gloffset_BindTransformFeedback driDispatchRemapTable[BindTransformFeedback_remap_index]
#define _gloffset_DeleteTransformFeedbacks driDispatchRemapTable[DeleteTransformFeedbacks_remap_index]
#define _gloffset_DrawTransformFeedback driDispatchRemapTable[DrawTransformFeedback_remap_index]
@@ -3227,7 +3275,7 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ];
#define CALL_ClampColor(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum)), _gloffset_ClampColor, parameters)
#define GET_ClampColor(disp) GET_by_offset(disp, _gloffset_ClampColor)
#define SET_ClampColor(disp, fn) SET_by_offset(disp, _gloffset_ClampColor, fn)
-#define CALL_ClearBufferfi(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, const GLfloat, const GLint)), _gloffset_ClearBufferfi, parameters)
+#define CALL_ClearBufferfi(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLfloat, GLint)), _gloffset_ClearBufferfi, parameters)
#define GET_ClearBufferfi(disp) GET_by_offset(disp, _gloffset_ClearBufferfi)
#define SET_ClearBufferfi(disp, fn) SET_by_offset(disp, _gloffset_ClearBufferfi, fn)
#define CALL_ClearBufferfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, const GLfloat *)), _gloffset_ClearBufferfv, parameters)
@@ -3650,6 +3698,9 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ];
#define CALL_DrawBuffersARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLenum *)), _gloffset_DrawBuffersARB, parameters)
#define GET_DrawBuffersARB(disp) GET_by_offset(disp, _gloffset_DrawBuffersARB)
#define SET_DrawBuffersARB(disp, fn) SET_by_offset(disp, _gloffset_DrawBuffersARB, fn)
+#define CALL_ClampColorARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum)), _gloffset_ClampColorARB, parameters)
+#define GET_ClampColorARB(disp) GET_by_offset(disp, _gloffset_ClampColorARB)
+#define SET_ClampColorARB(disp, fn) SET_by_offset(disp, _gloffset_ClampColorARB, fn)
#define CALL_DrawArraysInstancedARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLsizei, GLsizei)), _gloffset_DrawArraysInstancedARB, parameters)
#define GET_DrawArraysInstancedARB(disp) GET_by_offset(disp, _gloffset_DrawArraysInstancedARB)
#define SET_DrawArraysInstancedARB(disp, fn) SET_by_offset(disp, _gloffset_DrawArraysInstancedARB, fn)
@@ -3677,6 +3728,9 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ];
#define CALL_MapBufferRange(disp, parameters) CALL_by_offset(disp, (GLvoid * (GLAPIENTRYP)(GLenum, GLintptr, GLsizeiptr, GLbitfield)), _gloffset_MapBufferRange, parameters)
#define GET_MapBufferRange(disp) GET_by_offset(disp, _gloffset_MapBufferRange)
#define SET_MapBufferRange(disp, fn) SET_by_offset(disp, _gloffset_MapBufferRange, fn)
+#define CALL_TexBufferARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLuint)), _gloffset_TexBufferARB, parameters)
+#define GET_TexBufferARB(disp) GET_by_offset(disp, _gloffset_TexBufferARB)
+#define SET_TexBufferARB(disp, fn) SET_by_offset(disp, _gloffset_TexBufferARB, fn)
#define CALL_BindVertexArray(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_BindVertexArray, parameters)
#define GET_BindVertexArray(disp) GET_by_offset(disp, _gloffset_BindVertexArray)
#define SET_BindVertexArray(disp, fn) SET_by_offset(disp, _gloffset_BindVertexArray, fn)
@@ -3728,6 +3782,48 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ];
#define CALL_BlendFunciARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLenum)), _gloffset_BlendFunciARB, parameters)
#define GET_BlendFunciARB(disp) GET_by_offset(disp, _gloffset_BlendFunciARB)
#define SET_BlendFunciARB(disp, fn) SET_by_offset(disp, _gloffset_BlendFunciARB, fn)
+#define CALL_BindSampler(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint)), _gloffset_BindSampler, parameters)
+#define GET_BindSampler(disp) GET_by_offset(disp, _gloffset_BindSampler)
+#define SET_BindSampler(disp, fn) SET_by_offset(disp, _gloffset_BindSampler, fn)
+#define CALL_DeleteSamplers(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), _gloffset_DeleteSamplers, parameters)
+#define GET_DeleteSamplers(disp) GET_by_offset(disp, _gloffset_DeleteSamplers)
+#define SET_DeleteSamplers(disp, fn) SET_by_offset(disp, _gloffset_DeleteSamplers, fn)
+#define CALL_GenSamplers(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), _gloffset_GenSamplers, parameters)
+#define GET_GenSamplers(disp) GET_by_offset(disp, _gloffset_GenSamplers)
+#define SET_GenSamplers(disp, fn) SET_by_offset(disp, _gloffset_GenSamplers, fn)
+#define CALL_GetSamplerParameterIiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), _gloffset_GetSamplerParameterIiv, parameters)
+#define GET_GetSamplerParameterIiv(disp) GET_by_offset(disp, _gloffset_GetSamplerParameterIiv)
+#define SET_GetSamplerParameterIiv(disp, fn) SET_by_offset(disp, _gloffset_GetSamplerParameterIiv, fn)
+#define CALL_GetSamplerParameterIuiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLuint *)), _gloffset_GetSamplerParameterIuiv, parameters)
+#define GET_GetSamplerParameterIuiv(disp) GET_by_offset(disp, _gloffset_GetSamplerParameterIuiv)
+#define SET_GetSamplerParameterIuiv(disp, fn) SET_by_offset(disp, _gloffset_GetSamplerParameterIuiv, fn)
+#define CALL_GetSamplerParameterfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLfloat *)), _gloffset_GetSamplerParameterfv, parameters)
+#define GET_GetSamplerParameterfv(disp) GET_by_offset(disp, _gloffset_GetSamplerParameterfv)
+#define SET_GetSamplerParameterfv(disp, fn) SET_by_offset(disp, _gloffset_GetSamplerParameterfv, fn)
+#define CALL_GetSamplerParameteriv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), _gloffset_GetSamplerParameteriv, parameters)
+#define GET_GetSamplerParameteriv(disp) GET_by_offset(disp, _gloffset_GetSamplerParameteriv)
+#define SET_GetSamplerParameteriv(disp, fn) SET_by_offset(disp, _gloffset_GetSamplerParameteriv, fn)
+#define CALL_IsSampler(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), _gloffset_IsSampler, parameters)
+#define GET_IsSampler(disp) GET_by_offset(disp, _gloffset_IsSampler)
+#define SET_IsSampler(disp, fn) SET_by_offset(disp, _gloffset_IsSampler, fn)
+#define CALL_SamplerParameterIiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, const GLint *)), _gloffset_SamplerParameterIiv, parameters)
+#define GET_SamplerParameterIiv(disp) GET_by_offset(disp, _gloffset_SamplerParameterIiv)
+#define SET_SamplerParameterIiv(disp, fn) SET_by_offset(disp, _gloffset_SamplerParameterIiv, fn)
+#define CALL_SamplerParameterIuiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, const GLuint *)), _gloffset_SamplerParameterIuiv, parameters)
+#define GET_SamplerParameterIuiv(disp) GET_by_offset(disp, _gloffset_SamplerParameterIuiv)
+#define SET_SamplerParameterIuiv(disp, fn) SET_by_offset(disp, _gloffset_SamplerParameterIuiv, fn)
+#define CALL_SamplerParameterf(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLfloat)), _gloffset_SamplerParameterf, parameters)
+#define GET_SamplerParameterf(disp) GET_by_offset(disp, _gloffset_SamplerParameterf)
+#define SET_SamplerParameterf(disp, fn) SET_by_offset(disp, _gloffset_SamplerParameterf, fn)
+#define CALL_SamplerParameterfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, const GLfloat *)), _gloffset_SamplerParameterfv, parameters)
+#define GET_SamplerParameterfv(disp) GET_by_offset(disp, _gloffset_SamplerParameterfv)
+#define SET_SamplerParameterfv(disp, fn) SET_by_offset(disp, _gloffset_SamplerParameterfv, fn)
+#define CALL_SamplerParameteri(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint)), _gloffset_SamplerParameteri, parameters)
+#define GET_SamplerParameteri(disp) GET_by_offset(disp, _gloffset_SamplerParameteri)
+#define SET_SamplerParameteri(disp, fn) SET_by_offset(disp, _gloffset_SamplerParameteri, fn)
+#define CALL_SamplerParameteriv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, const GLint *)), _gloffset_SamplerParameteriv, parameters)
+#define GET_SamplerParameteriv(disp) GET_by_offset(disp, _gloffset_SamplerParameteriv)
+#define SET_SamplerParameteriv(disp, fn) SET_by_offset(disp, _gloffset_SamplerParameteriv, fn)
#define CALL_BindTransformFeedback(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_BindTransformFeedback, parameters)
#define GET_BindTransformFeedback(disp) GET_by_offset(disp, _gloffset_BindTransformFeedback)
#define SET_BindTransformFeedback(disp, fn) SET_by_offset(disp, _gloffset_BindTransformFeedback, fn)
diff --git a/src/mesa/main/image.c b/src/mesa/main/image.c
index bbde3800e8c..28841c25102 100644
--- a/src/mesa/main/image.c
+++ b/src/mesa/main/image.c
@@ -748,9 +748,6 @@ _mesa_is_color_format(GLenum format)
case GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT:
case GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT:
case GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI:
- /* signed, normalized texture formats */
- case GL_RGBA_SNORM:
- case GL_RGBA8_SNORM:
/* generic integer formats */
case GL_RED_INTEGER_EXT:
case GL_GREEN_INTEGER_EXT:
@@ -799,6 +796,31 @@ _mesa_is_color_format(GLenum format)
case GL_INTENSITY8I_EXT:
case GL_LUMINANCE8I_EXT:
case GL_LUMINANCE_ALPHA8I_EXT:
+ /* signed, normalized texture formats */
+ case GL_RED_SNORM:
+ case GL_R8_SNORM:
+ case GL_R16_SNORM:
+ case GL_RG_SNORM:
+ case GL_RG8_SNORM:
+ case GL_RG16_SNORM:
+ case GL_RGB_SNORM:
+ case GL_RGB8_SNORM:
+ case GL_RGB16_SNORM:
+ case GL_RGBA_SNORM:
+ case GL_RGBA8_SNORM:
+ case GL_RGBA16_SNORM:
+ case GL_ALPHA_SNORM:
+ case GL_ALPHA8_SNORM:
+ case GL_ALPHA16_SNORM:
+ case GL_LUMINANCE_SNORM:
+ case GL_LUMINANCE8_SNORM:
+ case GL_LUMINANCE16_SNORM:
+ case GL_LUMINANCE_ALPHA_SNORM:
+ case GL_LUMINANCE8_ALPHA8_SNORM:
+ case GL_LUMINANCE16_ALPHA16_SNORM:
+ case GL_INTENSITY_SNORM:
+ case GL_INTENSITY8_SNORM:
+ case GL_INTENSITY16_SNORM:
return GL_TRUE;
case GL_YCBCR_MESA: /* not considered to be RGB */
/* fall-through */
diff --git a/src/mesa/main/macros.h b/src/mesa/main/macros.h
index b2ec0ba9b73..86a58cc6b43 100644
--- a/src/mesa/main/macros.h
+++ b/src/mesa/main/macros.h
@@ -58,8 +58,7 @@ extern GLfloat _mesa_ubyte_to_float_color_tab[256];
#define BYTE_TO_FLOAT_TEX(B) ((B) == -128 ? -1.0F : (B) * (1.0F/127.0F))
/** Convert GLfloat in [-1.0,1.0] to GLbyte in [-128,127], texture/fb data */
-#define FLOAT_TO_BYTE_TEX(X) ( (GLint) (127.0F * (X)) )
-
+#define FLOAT_TO_BYTE_TEX(X) CLAMP( (GLint) (127.0F * (X)), -128, 127 )
/** Convert GLushort in [0,65535] to GLfloat in [0.0,1.0] */
#define USHORT_TO_FLOAT(S) ((GLfloat) (S) * (1.0F / 65535.0F))
diff --git a/src/mesa/main/matrix.c b/src/mesa/main/matrix.c
index 76c7e1c9d1b..56973661cea 100644
--- a/src/mesa/main/matrix.c
+++ b/src/mesa/main/matrix.c
@@ -140,8 +140,8 @@ _mesa_Ortho( GLdouble left, GLdouble right,
* \sa glMatrixMode().
*
* Flushes the vertices, validates the parameter and updates
- * __struct gl_contextRec::CurrentStack and gl_transform_attrib::MatrixMode with the
- * specified matrix stack.
+ * __struct gl_contextRec::CurrentStack and gl_transform_attrib::MatrixMode
+ * with the specified matrix stack.
*/
void GLAPIENTRY
_mesa_MatrixMode( GLenum mode )
@@ -170,7 +170,8 @@ _mesa_MatrixMode( GLenum mode )
*/
#if 0
if (ctx->Texture.CurrentUnit >= ctx->Const.MaxTextureCoordUnits) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glMatrixMode(invalid tex unit %d)",
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glMatrixMode(invalid tex unit %d)",
ctx->Texture.CurrentUnit);
return;
}
@@ -232,8 +233,8 @@ _mesa_MatrixMode( GLenum mode )
* \sa glPushMatrix().
*
* Verifies the current matrix stack is not full, and duplicates the top-most
- * matrix in the stack. Marks __struct gl_contextRec::NewState with the stack dirty
- * flag.
+ * matrix in the stack.
+ * Marks __struct gl_contextRec::NewState with the stack dirty flag.
*/
void GLAPIENTRY
_mesa_PushMatrix( void )
@@ -272,8 +273,8 @@ _mesa_PushMatrix( void )
* \sa glPopMatrix().
*
* Flushes the vertices, verifies the current matrix stack is not empty, and
- * moves the stack head down. Marks __struct gl_contextRec::NewState with the dirty
- * stack flag.
+ * moves the stack head down.
+ * Marks __struct gl_contextRec::NewState with the dirty stack flag.
*/
void GLAPIENTRY
_mesa_PopMatrix( void )
@@ -309,9 +310,9 @@ _mesa_PopMatrix( void )
*
* \sa glLoadIdentity().
*
- * Flushes the vertices and calls _math_matrix_set_identity() with the top-most
- * matrix in the current stack. Marks __struct gl_contextRec::NewState with the stack
- * dirty flag.
+ * Flushes the vertices and calls _math_matrix_set_identity() with the
+ * top-most matrix in the current stack.
+ * Marks __struct gl_contextRec::NewState with the stack dirty flag.
*/
void GLAPIENTRY
_mesa_LoadIdentity( void )
@@ -334,9 +335,9 @@ _mesa_LoadIdentity( void )
*
* \sa glLoadMatrixf().
*
- * Flushes the vertices and calls _math_matrix_loadf() with the top-most matrix
- * in the current stack and the given matrix. Marks __struct gl_contextRec::NewState
- * with the dirty stack flag.
+ * Flushes the vertices and calls _math_matrix_loadf() with the top-most
+ * matrix in the current stack and the given matrix.
+ * Marks __struct gl_contextRec::NewState with the dirty stack flag.
*/
void GLAPIENTRY
_mesa_LoadMatrixf( const GLfloat *m )
@@ -560,8 +561,8 @@ _mesa_MultTransposeMatrixdARB( const GLdouble *m )
* Calls _math_matrix_analyse() with the top-matrix of the projection matrix
* stack, and recomputes user clip positions if necessary.
*
- * \note This routine references __struct gl_contextRec::Tranform attribute values to
- * compute userclip positions in clip space, but is only called on
+ * \note This routine references __struct gl_contextRec::Tranform attribute
+ * values to compute userclip positions in clip space, but is only called on
* _NEW_PROJECTION. The _mesa_ClipPlane() function keeps these values up to
* date across changes to the __struct gl_contextRec::Transform attributes.
*/
@@ -594,8 +595,8 @@ update_projection( struct gl_context *ctx )
* \param ctx GL context.
*
* Multiplies the top matrices of the projection and model view stacks into
- * __struct gl_contextRec::_ModelProjectMatrix via _math_matrix_mul_matrix() and
- * analyzes the resulting matrix via _math_matrix_analyse().
+ * __struct gl_contextRec::_ModelProjectMatrix via _math_matrix_mul_matrix()
+ * and analyzes the resulting matrix via _math_matrix_analyse().
*/
static void
calculate_model_project_matrix( struct gl_context *ctx )
@@ -624,7 +625,7 @@ void _mesa_update_modelview_project( struct gl_context *ctx, GLuint new_state )
if (new_state & _NEW_MODELVIEW) {
_math_matrix_analyse( ctx->ModelviewMatrixStack.Top );
- /* Bring cull position uptodate.
+ /* Bring cull position up to date.
*/
TRANSFORM_POINT3( ctx->Transform.CullObjPos,
ctx->ModelviewMatrixStack.Top->inv,
@@ -635,7 +636,7 @@ void _mesa_update_modelview_project( struct gl_context *ctx, GLuint new_state )
if (new_state & _NEW_PROJECTION)
update_projection( ctx );
- /* Keep ModelviewProject uptodate always to allow tnl
+ /* Keep ModelviewProject up to date always to allow tnl
* implementations that go model->clip even when eye is required.
*/
calculate_model_project_matrix(ctx);
diff --git a/src/mesa/main/mfeatures.h b/src/mesa/main/mfeatures.h
index 1b39f5fdd36..33db5081419 100644
--- a/src/mesa/main/mfeatures.h
+++ b/src/mesa/main/mfeatures.h
@@ -122,6 +122,7 @@
#define FEATURE_ARB_framebuffer_object (FEATURE_GL && FEATURE_EXT_framebuffer_object)
#define FEATURE_ARB_map_buffer_range FEATURE_GL
#define FEATURE_ARB_pixel_buffer_object (FEATURE_GL && FEATURE_EXT_pixel_buffer_object)
+#define FEATURE_ARB_sampler_objects FEATURE_GL
#define FEATURE_ARB_sync FEATURE_GL
#define FEATURE_ARB_vertex_buffer_object 1
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 831774fa4b1..160ae9d2622 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -691,7 +691,8 @@ struct gl_accum_attrib
struct gl_colorbuffer_attrib
{
GLuint ClearIndex; /**< Index to use for glClear */
- GLclampf ClearColor[4]; /**< Color to use for glClear */
+ GLfloat ClearColorUnclamped[4]; /**< Color to use for glClear*/
+ GLclampf ClearColor[4]; /**< Color to use for glClear */
GLuint IndexMask; /**< Color index write mask */
GLubyte ColorMask[MAX_DRAW_BUFFERS][4];/**< Each flag is 0xff or 0x0 */
@@ -704,6 +705,7 @@ struct gl_colorbuffer_attrib
/*@{*/
GLboolean AlphaEnabled; /**< Alpha test enabled flag */
GLenum AlphaFunc; /**< Alpha test function */
+ GLfloat AlphaRefUnclamped;
GLclampf AlphaRef; /**< Alpha reference value */
/*@}*/
@@ -712,7 +714,14 @@ struct gl_colorbuffer_attrib
*/
/*@{*/
GLbitfield BlendEnabled; /**< Per-buffer blend enable flags */
+
+ /* NOTE: this does _not_ depend on fragment clamping or any other clamping control,
+ * only on the fixed-pointness of the render target.
+ * The query does however depend on fragment color clamping.
+ */
+ GLfloat BlendColorUnclamped[4]; /**< Blending color */
GLfloat BlendColor[4]; /**< Blending color */
+
struct
{
GLenum SrcRGB; /**< RGB blend source term */
@@ -741,7 +750,9 @@ struct gl_colorbuffer_attrib
GLboolean DitherFlag; /**< Dither enable flag */
GLenum ClampFragmentColor; /**< GL_TRUE, GL_FALSE or GL_FIXED_ONLY_ARB */
+ GLboolean _ClampFragmentColor; /** < with GL_FIXED_ONLY_ARB resolved */
GLenum ClampReadColor; /**< GL_TRUE, GL_FALSE or GL_FIXED_ONLY_ARB */
+ GLboolean _ClampReadColor; /** < with GL_FIXED_ONLY_ARB resolved */
GLboolean sRGBEnabled; /**< Framebuffer sRGB blending/updating requested */
};
@@ -840,6 +851,7 @@ struct gl_eval_attrib
struct gl_fog_attrib
{
GLboolean Enabled; /**< Fog enabled flag */
+ GLfloat ColorUnclamped[4]; /**< Fog color */
GLfloat Color[4]; /**< Fog color */
GLfloat Density; /**< Density >= 0.0 */
GLfloat Start; /**< Start distance in eye coords */
@@ -921,6 +933,7 @@ struct gl_light_attrib
GLbitfield ColorMaterialBitmask; /**< bitmask formed from Face and Mode */
GLboolean ColorMaterialEnabled;
GLenum ClampVertexColor;
+ GLboolean _ClampVertexColor;
struct gl_light EnabledList; /**< List sentinel */
@@ -1126,6 +1139,7 @@ struct gl_stencil_attrib
*/
typedef enum
{
+ TEXTURE_BUFFER_INDEX,
TEXTURE_2D_ARRAY_INDEX,
TEXTURE_1D_ARRAY_INDEX,
TEXTURE_CUBE_INDEX,
@@ -1142,6 +1156,7 @@ typedef enum
* Used for Texture.Unit[]._ReallyEnabled flags.
*/
/*@{*/
+#define TEXTURE_BUFFER_BIT (1 << TEXTURE_BUFFER_INDEX)
#define TEXTURE_2D_ARRAY_BIT (1 << TEXTURE_2D_ARRAY_INDEX)
#define TEXTURE_1D_ARRAY_BIT (1 << TEXTURE_1D_ARRAY_INDEX)
#define TEXTURE_CUBE_BIT (1 << TEXTURE_CUBE_INDEX)
@@ -1290,37 +1305,58 @@ typedef enum
/**
- * Texture object state. Contains the array of mipmap images, border color,
- * wrap modes, filter modes, shadow/texcompare state, and the per-texture
- * color palette.
+ * Sampler object state. These objects are new with GL_ARB_sampler_objects
+ * and OpenGL 3.3. Legacy texture objects also contain a sampler object.
*/
-struct gl_texture_object
+struct gl_sampler_object
{
- _glthread_Mutex Mutex; /**< for thread safety */
- GLint RefCount; /**< reference count */
- GLuint Name; /**< the user-visible texture object ID */
- GLenum Target; /**< GL_TEXTURE_1D, GL_TEXTURE_2D, etc. */
- GLfloat Priority; /**< in [0,1] */
- union {
- GLfloat f[4];
- GLuint ui[4];
- GLint i[4];
- } BorderColor; /**< Interpreted according to texture format */
+ GLuint Name;
+ GLint RefCount;
+
GLenum WrapS; /**< S-axis texture image wrap mode */
GLenum WrapT; /**< T-axis texture image wrap mode */
GLenum WrapR; /**< R-axis texture image wrap mode */
GLenum MinFilter; /**< minification filter */
GLenum MagFilter; /**< magnification filter */
+ union {
+ GLfloat f[4];
+ GLuint ui[4];
+ GLint i[4];
+ } BorderColor; /**< Interpreted according to texture format */
GLfloat MinLod; /**< min lambda, OpenGL 1.2 */
GLfloat MaxLod; /**< max lambda, OpenGL 1.2 */
GLfloat LodBias; /**< OpenGL 1.4 */
- GLint BaseLevel; /**< min mipmap level, OpenGL 1.2 */
- GLint MaxLevel; /**< max mipmap level, OpenGL 1.2 */
GLfloat MaxAnisotropy; /**< GL_EXT_texture_filter_anisotropic */
GLenum CompareMode; /**< GL_ARB_shadow */
GLenum CompareFunc; /**< GL_ARB_shadow */
GLfloat CompareFailValue; /**< GL_ARB_shadow_ambient */
+ GLenum sRGBDecode; /**< GL_DECODE_EXT or GL_SKIP_DECODE_EXT */
+
+ /* deprecated sampler state */
GLenum DepthMode; /**< GL_ARB_depth_texture */
+
+ /** Is the texture object complete with respect to this sampler? */
+ GLboolean _CompleteTexture;
+};
+
+
+/**
+ * Texture object state. Contains the array of mipmap images, border color,
+ * wrap modes, filter modes, shadow/texcompare state, and the per-texture
+ * color palette.
+ */
+struct gl_texture_object
+{
+ _glthread_Mutex Mutex; /**< for thread safety */
+ GLint RefCount; /**< reference count */
+ GLuint Name; /**< the user-visible texture object ID */
+ GLenum Target; /**< GL_TEXTURE_1D, GL_TEXTURE_2D, etc. */
+
+ struct gl_sampler_object Sampler;
+
+ GLfloat Priority; /**< in [0,1] */
+ GLint BaseLevel; /**< min mipmap level, OpenGL 1.2 */
+ GLint MaxLevel; /**< max mipmap level, OpenGL 1.2 */
GLint _MaxLevel; /**< actual max mipmap level (q in the spec) */
GLfloat _MaxLambda; /**< = _MaxLevel - BaseLevel (q - b in spec) */
GLint CropRect[4]; /**< GL_OES_draw_texture */
@@ -1330,11 +1366,14 @@ struct gl_texture_object
GLboolean _Complete; /**< Is texture object complete? */
GLboolean _RenderToTexture; /**< Any rendering to this texture? */
GLboolean Purgeable; /**< Is the buffer purgeable under memory pressure? */
- GLenum sRGBDecode; /**< GL_DECODE_EXT or GL_SKIP_DECODE_EXT */
/** Actual texture images, indexed by [cube face] and [mipmap level] */
struct gl_texture_image *Image[MAX_FACES][MAX_TEXTURE_LEVELS];
+ /** GL_ARB_texture_buffer_object */
+ struct gl_buffer_object *BufferObject;
+ GLenum BufferObjectFormat;
+
/** GL_EXT_paletted_texture */
struct gl_color_table Palette;
@@ -1396,7 +1435,8 @@ struct gl_texture_unit
GLbitfield _ReallyEnabled; /**< 0 or exactly one of TEXTURE_*_BIT flags */
GLenum EnvMode; /**< GL_MODULATE, GL_DECAL, GL_BLEND, etc. */
- GLfloat EnvColor[4];
+ GLclampf EnvColor[4];
+ GLfloat EnvColorUnclamped[4];
struct gl_texgen GenS;
struct gl_texgen GenT;
@@ -1409,6 +1449,9 @@ struct gl_texture_unit
GLenum BumpTarget;
GLfloat RotMatrix[4]; /* 2x2 matrix */
+ /** Current sampler object (GL_ARB_sampler_objects) */
+ struct gl_sampler_object *Sampler;
+
/**
* \name GL_EXT_texture_env_combine
*/
@@ -1444,6 +1487,9 @@ struct gl_texture_attrib
struct gl_texture_object *ProxyTex[NUM_TEXTURE_TARGETS];
+ /** GL_ARB_texture_buffer_object */
+ struct gl_buffer_object *BufferObject;
+
/** GL_ARB_seamless_cubemap */
GLboolean CubeMapSeamless;
@@ -1877,7 +1923,6 @@ struct gl_geometry_program
struct gl_fragment_program
{
struct gl_program Base; /**< base class */
- GLenum FogOption;
GLboolean UsesKill; /**< shader uses KIL instruction */
GLboolean OriginUpperLeft;
GLboolean PixelCenterInteger;
@@ -2340,6 +2385,9 @@ struct gl_shared_state
/* GL_ARB_sync */
struct simple_node SyncObjects;
+ /** GL_ARB_sampler_objects */
+ struct _mesa_HashTable *SamplerObjects;
+
void *DriverData; /**< Device driver shared state */
};
@@ -2357,27 +2405,26 @@ struct gl_shared_state
*/
struct gl_renderbuffer
{
-#define RB_MAGIC 0xaabbccdd
- int Magic; /** XXX TEMPORARY DEBUG INFO */
_glthread_Mutex Mutex; /**< for thread safety */
GLuint ClassID; /**< Useful for drivers */
GLuint Name;
GLint RefCount;
GLuint Width, Height;
+ GLint RowStride; /**< Padded width in units of pixels */
GLboolean Purgeable; /**< Is the buffer purgeable under memory pressure? */
+ GLboolean AttachedAnytime; /**< TRUE if it was attached to a framebuffer */
+
+ GLubyte NumSamples;
+
GLenum InternalFormat; /**< The user-specified format */
GLenum _BaseFormat; /**< Either GL_RGB, GL_RGBA, GL_DEPTH_COMPONENT or
GL_STENCIL_INDEX. */
gl_format Format; /**< The actual renderbuffer memory format */
- GLubyte NumSamples;
-
GLenum DataType; /**< Type of values passed to the Get/Put functions */
GLvoid *Data; /**< This may not be used by some kinds of RBs */
- GLboolean AttachedAnytime; /**< TRUE if it was attached to a framebuffer */
-
/* Used to wrap one renderbuffer around another: */
struct gl_renderbuffer *Wrapped;
@@ -2616,6 +2663,7 @@ struct gl_constants
GLuint MaxTextureUnits; /**< = MIN(CoordUnits, ImageUnits) */
GLfloat MaxTextureMaxAnisotropy; /**< GL_EXT_texture_filter_anisotropic */
GLfloat MaxTextureLodBias; /**< GL_EXT_texture_lod_bias */
+ GLuint MaxTextureBufferSize; /**< GL_ARB_texture_buffer_object */
GLuint MaxArrayLockSize;
@@ -2704,6 +2752,7 @@ struct gl_extensions
GLboolean dummy_false; /* Set false by _mesa_init_extensions(). */
GLboolean ARB_ES2_compatibility;
GLboolean ARB_blend_func_extended;
+ GLboolean ARB_color_buffer_float;
GLboolean ARB_copy_buffer;
GLboolean ARB_depth_buffer_float;
GLboolean ARB_depth_clamp;
@@ -2813,6 +2862,7 @@ struct gl_extensions
GLboolean EXT_texture_lod_bias;
GLboolean EXT_texture_mirror_clamp;
GLboolean EXT_texture_shared_exponent;
+ GLboolean EXT_texture_snorm;
GLboolean EXT_texture_sRGB;
GLboolean EXT_texture_sRGB_decode;
GLboolean EXT_texture_swizzle;
@@ -2840,7 +2890,6 @@ struct gl_extensions
GLboolean MESA_resize_buffers;
GLboolean MESA_ycbcr_texture;
GLboolean MESA_texture_array;
- GLboolean MESA_texture_signed_rgba;
GLboolean NV_blend_square;
GLboolean NV_conditional_render;
GLboolean NV_fragment_program;
@@ -2933,6 +2982,7 @@ struct gl_matrix_stack
#define _NEW_PROGRAM (1 << 26) /**< New program/shader state */
#define _NEW_PROGRAM_CONSTANTS (1 << 27)
#define _NEW_BUFFER_OBJECT (1 << 28)
+#define _NEW_FRAG_CLAMP (1 << 29)
#define _NEW_ALL ~0
/*@}*/
@@ -3022,11 +3072,6 @@ struct gl_matrix_stack
_NEW_POINT | \
_NEW_PROGRAM | \
_NEW_MODELVIEW)
-
-#define _MESA_NEW_NEED_NORMALS (_NEW_LIGHT | \
- _NEW_TEXTURE)
-
-#define _MESA_NEW_TRANSFER_STATE (_NEW_PIXEL)
/*@}*/
diff --git a/src/mesa/main/pack.c b/src/mesa/main/pack.c
index 512835cb803..4bb0a90045e 100644
--- a/src/mesa/main/pack.c
+++ b/src/mesa/main/pack.c
@@ -504,17 +504,6 @@ _mesa_pack_rgba_span_float(struct gl_context *ctx, GLuint n, GLfloat rgba[][4],
luminance = NULL;
}
- /* XXX
- * This test should probably go away. Have the caller set/clear the
- * IMAGE_CLAMP_BIT as needed.
- */
- if (dstType != GL_FLOAT || ctx->Color.ClampReadColor == GL_TRUE) {
- if (!intDstFormat) {
- /* need to clamp to [0, 1] */
- transferOps |= IMAGE_CLAMP_BIT;
- }
- }
-
if (transferOps) {
_mesa_apply_rgba_transfer_ops(ctx, transferOps, n, rgba);
}
@@ -3984,7 +3973,8 @@ _mesa_unpack_dudv_span_byte( struct gl_context *ctx,
GLbitfield transferOps )
{
ASSERT(dstFormat == GL_DUDV_ATI);
- ASSERT(srcFormat == GL_DUDV_ATI);
+ ASSERT(srcFormat == GL_DUDV_ATI ||
+ srcFormat == GL_DU8DV8_ATI);
ASSERT(srcType == GL_UNSIGNED_BYTE ||
srcType == GL_BYTE ||
diff --git a/src/mesa/main/pbo.c b/src/mesa/main/pbo.c
index dc00d423ba9..56b26a954bd 100644
--- a/src/mesa/main/pbo.c
+++ b/src/mesa/main/pbo.c
@@ -81,8 +81,8 @@ _mesa_validate_pbo_access(GLuint dimensions,
format, type, 0, 0, 0);
/* get address just past the last pixel we'll read */
- end = _mesa_image_address(dimensions, pack, ptr, width, height,
- format, type, depth-1, height-1, width);
+ end = _mesa_image_address(dimensions, pack, ptr, width, height,
+ format, type, depth-1, height-1, width);
sizeAddr = ((const GLubyte *) 0) + pack->BufferObj->Size;
diff --git a/src/mesa/main/pixel.c b/src/mesa/main/pixel.c
index 195fa234be2..da99c9b6f35 100644
--- a/src/mesa/main/pixel.c
+++ b/src/mesa/main/pixel.c
@@ -617,7 +617,7 @@ update_image_transfer_state(struct gl_context *ctx)
*/
void _mesa_update_pixel( struct gl_context *ctx, GLuint new_state )
{
- if (new_state & _MESA_NEW_TRANSFER_STATE)
+ if (new_state & _NEW_PIXEL)
update_image_transfer_state(ctx);
}
diff --git a/src/mesa/main/readpix.c b/src/mesa/main/readpix.c
index 6e09a52c88a..a172a0000f5 100644
--- a/src/mesa/main/readpix.c
+++ b/src/mesa/main/readpix.c
@@ -44,8 +44,8 @@
* \return GL_TRUE if error detected, GL_FALSE if no errors
*/
GLboolean
-_mesa_error_check_format_type(struct gl_context *ctx, GLenum format, GLenum type,
- GLboolean drawing)
+_mesa_error_check_format_type(struct gl_context *ctx, GLenum format,
+ GLenum type, GLboolean drawing)
{
const char *readDraw = drawing ? "Draw" : "Read";
const GLboolean reading = !drawing;
diff --git a/src/mesa/main/remap_helper.h b/src/mesa/main/remap_helper.h
index 61530df3e1a..72a2f1e0b81 100644
--- a/src/mesa/main/remap_helper.h
+++ b/src/mesa/main/remap_helper.h
@@ -70,4710 +70,4774 @@ static const char _mesa_function_pool[] =
"\0"
"glLoadIdentity\0"
"\0"
- /* _mesa_function_pool[216]: GetCombinerOutputParameterfvNV (will be remapped) */
- "iiip\0"
- "glGetCombinerOutputParameterfvNV\0"
- "\0"
- /* _mesa_function_pool[255]: SampleCoverageARB (will be remapped) */
+ /* _mesa_function_pool[216]: SampleCoverageARB (will be remapped) */
"fi\0"
"glSampleCoverage\0"
"glSampleCoverageARB\0"
"\0"
- /* _mesa_function_pool[296]: ConvolutionFilter1D (offset 348) */
+ /* _mesa_function_pool[257]: ConvolutionFilter1D (offset 348) */
"iiiiip\0"
"glConvolutionFilter1D\0"
"glConvolutionFilter1DEXT\0"
"\0"
- /* _mesa_function_pool[351]: BeginQueryARB (will be remapped) */
+ /* _mesa_function_pool[312]: BeginQueryARB (will be remapped) */
"ii\0"
"glBeginQuery\0"
"glBeginQueryARB\0"
"\0"
- /* _mesa_function_pool[384]: RasterPos3dv (offset 71) */
+ /* _mesa_function_pool[345]: RasterPos3dv (offset 71) */
"p\0"
"glRasterPos3dv\0"
"\0"
- /* _mesa_function_pool[402]: PointParameteriNV (will be remapped) */
+ /* _mesa_function_pool[363]: PointParameteriNV (will be remapped) */
"ii\0"
"glPointParameteri\0"
"glPointParameteriNV\0"
"\0"
- /* _mesa_function_pool[444]: GetProgramiv (will be remapped) */
+ /* _mesa_function_pool[405]: GetProgramiv (will be remapped) */
"iip\0"
"glGetProgramiv\0"
"\0"
- /* _mesa_function_pool[464]: MultiTexCoord3sARB (offset 398) */
+ /* _mesa_function_pool[425]: MultiTexCoord3sARB (offset 398) */
"iiii\0"
"glMultiTexCoord3s\0"
"glMultiTexCoord3sARB\0"
"\0"
- /* _mesa_function_pool[509]: SecondaryColor3iEXT (will be remapped) */
+ /* _mesa_function_pool[470]: SecondaryColor3iEXT (will be remapped) */
"iii\0"
"glSecondaryColor3i\0"
"glSecondaryColor3iEXT\0"
"\0"
- /* _mesa_function_pool[555]: WindowPos3fMESA (will be remapped) */
+ /* _mesa_function_pool[516]: WindowPos3fMESA (will be remapped) */
"fff\0"
"glWindowPos3f\0"
"glWindowPos3fARB\0"
"glWindowPos3fMESA\0"
"\0"
- /* _mesa_function_pool[609]: TexCoord1iv (offset 99) */
+ /* _mesa_function_pool[570]: TexCoord1iv (offset 99) */
"p\0"
"glTexCoord1iv\0"
"\0"
- /* _mesa_function_pool[626]: TexCoord4sv (offset 125) */
+ /* _mesa_function_pool[587]: TexCoord4sv (offset 125) */
"p\0"
"glTexCoord4sv\0"
"\0"
- /* _mesa_function_pool[643]: RasterPos4s (offset 84) */
+ /* _mesa_function_pool[604]: RasterPos4s (offset 84) */
"iiii\0"
"glRasterPos4s\0"
"\0"
- /* _mesa_function_pool[663]: PixelTexGenParameterfvSGIS (will be remapped) */
+ /* _mesa_function_pool[624]: PixelTexGenParameterfvSGIS (will be remapped) */
"ip\0"
"glPixelTexGenParameterfvSGIS\0"
"\0"
- /* _mesa_function_pool[696]: ActiveTextureARB (offset 374) */
+ /* _mesa_function_pool[657]: ActiveTextureARB (offset 374) */
"i\0"
"glActiveTexture\0"
"glActiveTextureARB\0"
"\0"
- /* _mesa_function_pool[734]: BlitFramebufferEXT (will be remapped) */
+ /* _mesa_function_pool[695]: BlitFramebufferEXT (will be remapped) */
"iiiiiiiiii\0"
"glBlitFramebuffer\0"
"glBlitFramebufferEXT\0"
"\0"
- /* _mesa_function_pool[785]: TexCoord1f (offset 96) */
+ /* _mesa_function_pool[746]: TexCoord1f (offset 96) */
"f\0"
"glTexCoord1f\0"
"\0"
- /* _mesa_function_pool[801]: TexCoord1d (offset 94) */
+ /* _mesa_function_pool[762]: TexCoord1d (offset 94) */
"d\0"
"glTexCoord1d\0"
"\0"
- /* _mesa_function_pool[817]: VertexAttrib4ubvNV (will be remapped) */
+ /* _mesa_function_pool[778]: VertexAttrib4ubvNV (will be remapped) */
"ip\0"
"glVertexAttrib4ubvNV\0"
"\0"
- /* _mesa_function_pool[842]: TexCoord1i (offset 98) */
+ /* _mesa_function_pool[803]: TexCoord1i (offset 98) */
"i\0"
"glTexCoord1i\0"
"\0"
- /* _mesa_function_pool[858]: GetProgramNamedParameterdvNV (will be remapped) */
+ /* _mesa_function_pool[819]: GetProgramNamedParameterdvNV (will be remapped) */
"iipp\0"
"glGetProgramNamedParameterdvNV\0"
"\0"
- /* _mesa_function_pool[895]: Histogram (offset 367) */
+ /* _mesa_function_pool[856]: Histogram (offset 367) */
"iiii\0"
"glHistogram\0"
"glHistogramEXT\0"
"\0"
- /* _mesa_function_pool[928]: TexCoord1s (offset 100) */
+ /* _mesa_function_pool[889]: TexCoord1s (offset 100) */
"i\0"
"glTexCoord1s\0"
"\0"
- /* _mesa_function_pool[944]: GetMapfv (offset 267) */
+ /* _mesa_function_pool[905]: GetMapfv (offset 267) */
"iip\0"
"glGetMapfv\0"
"\0"
- /* _mesa_function_pool[960]: EvalCoord1f (offset 230) */
+ /* _mesa_function_pool[921]: EvalCoord1f (offset 230) */
"f\0"
"glEvalCoord1f\0"
"\0"
- /* _mesa_function_pool[977]: FramebufferTexture (will be remapped) */
+ /* _mesa_function_pool[938]: FramebufferTexture (will be remapped) */
"iiii\0"
"glFramebufferTexture\0"
"\0"
- /* _mesa_function_pool[1004]: VertexAttribI1ivEXT (will be remapped) */
+ /* _mesa_function_pool[965]: VertexAttribI1ivEXT (will be remapped) */
"ip\0"
"glVertexAttribI1ivEXT\0"
"glVertexAttribI1iv\0"
"\0"
- /* _mesa_function_pool[1049]: TexImage4DSGIS (dynamic) */
+ /* _mesa_function_pool[1010]: TexImage4DSGIS (dynamic) */
"iiiiiiiiiip\0"
"glTexImage4DSGIS\0"
"\0"
- /* _mesa_function_pool[1079]: PolygonStipple (offset 175) */
+ /* _mesa_function_pool[1040]: PolygonStipple (offset 175) */
"p\0"
"glPolygonStipple\0"
"\0"
- /* _mesa_function_pool[1099]: WindowPos2dvMESA (will be remapped) */
+ /* _mesa_function_pool[1060]: WindowPos2dvMESA (will be remapped) */
"p\0"
"glWindowPos2dv\0"
"glWindowPos2dvARB\0"
"glWindowPos2dvMESA\0"
"\0"
- /* _mesa_function_pool[1154]: ReplacementCodeuiColor3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[1115]: ReplacementCodeuiColor3fVertex3fvSUN (dynamic) */
"ppp\0"
"glReplacementCodeuiColor3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[1198]: BlendEquationSeparateEXT (will be remapped) */
+ /* _mesa_function_pool[1159]: BlendEquationSeparateEXT (will be remapped) */
"ii\0"
"glBlendEquationSeparate\0"
"glBlendEquationSeparateEXT\0"
"glBlendEquationSeparateATI\0"
"\0"
- /* _mesa_function_pool[1280]: ListParameterfSGIX (dynamic) */
+ /* _mesa_function_pool[1241]: ListParameterfSGIX (dynamic) */
"iif\0"
"glListParameterfSGIX\0"
"\0"
- /* _mesa_function_pool[1306]: SecondaryColor3bEXT (will be remapped) */
+ /* _mesa_function_pool[1267]: SecondaryColor3bEXT (will be remapped) */
"iii\0"
"glSecondaryColor3b\0"
"glSecondaryColor3bEXT\0"
"\0"
- /* _mesa_function_pool[1352]: TexCoord4fColor4fNormal3fVertex4fvSUN (dynamic) */
+ /* _mesa_function_pool[1313]: TexCoord4fColor4fNormal3fVertex4fvSUN (dynamic) */
"pppp\0"
"glTexCoord4fColor4fNormal3fVertex4fvSUN\0"
"\0"
- /* _mesa_function_pool[1398]: GetPixelMapfv (offset 271) */
+ /* _mesa_function_pool[1359]: GetPixelMapfv (offset 271) */
"ip\0"
"glGetPixelMapfv\0"
"\0"
- /* _mesa_function_pool[1418]: Color3uiv (offset 22) */
+ /* _mesa_function_pool[1379]: Color3uiv (offset 22) */
"p\0"
"glColor3uiv\0"
"\0"
- /* _mesa_function_pool[1433]: IsEnabled (offset 286) */
+ /* _mesa_function_pool[1394]: IsEnabled (offset 286) */
"i\0"
"glIsEnabled\0"
"\0"
- /* _mesa_function_pool[1448]: VertexAttrib4svNV (will be remapped) */
+ /* _mesa_function_pool[1409]: VertexAttrib4svNV (will be remapped) */
"ip\0"
"glVertexAttrib4svNV\0"
"\0"
- /* _mesa_function_pool[1472]: EvalCoord2fv (offset 235) */
+ /* _mesa_function_pool[1433]: EvalCoord2fv (offset 235) */
"p\0"
"glEvalCoord2fv\0"
"\0"
- /* _mesa_function_pool[1490]: GetBufferSubDataARB (will be remapped) */
+ /* _mesa_function_pool[1451]: GetBufferSubDataARB (will be remapped) */
"iiip\0"
"glGetBufferSubData\0"
"glGetBufferSubDataARB\0"
"\0"
- /* _mesa_function_pool[1537]: BufferSubDataARB (will be remapped) */
+ /* _mesa_function_pool[1498]: BufferSubDataARB (will be remapped) */
"iiip\0"
"glBufferSubData\0"
"glBufferSubDataARB\0"
"\0"
- /* _mesa_function_pool[1578]: TexCoord2fColor4ubVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[1539]: TexCoord2fColor4ubVertex3fvSUN (dynamic) */
"ppp\0"
"glTexCoord2fColor4ubVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[1616]: AttachShader (will be remapped) */
+ /* _mesa_function_pool[1577]: AttachShader (will be remapped) */
"ii\0"
"glAttachShader\0"
"\0"
- /* _mesa_function_pool[1635]: VertexAttrib2fARB (will be remapped) */
+ /* _mesa_function_pool[1596]: VertexAttrib2fARB (will be remapped) */
"iff\0"
"glVertexAttrib2f\0"
"glVertexAttrib2fARB\0"
"\0"
- /* _mesa_function_pool[1677]: GetDebugLogLengthMESA (dynamic) */
+ /* _mesa_function_pool[1638]: GetDebugLogLengthMESA (dynamic) */
"iii\0"
"glGetDebugLogLengthMESA\0"
"\0"
- /* _mesa_function_pool[1706]: GetMapiv (offset 268) */
+ /* _mesa_function_pool[1667]: GetMapiv (offset 268) */
"iip\0"
"glGetMapiv\0"
"\0"
- /* _mesa_function_pool[1722]: VertexAttrib3fARB (will be remapped) */
+ /* _mesa_function_pool[1683]: VertexAttrib3fARB (will be remapped) */
"ifff\0"
"glVertexAttrib3f\0"
"glVertexAttrib3fARB\0"
"\0"
- /* _mesa_function_pool[1765]: Indexubv (offset 316) */
+ /* _mesa_function_pool[1726]: Indexubv (offset 316) */
"p\0"
"glIndexubv\0"
"\0"
- /* _mesa_function_pool[1779]: GetQueryivARB (will be remapped) */
+ /* _mesa_function_pool[1740]: GetQueryivARB (will be remapped) */
"iip\0"
"glGetQueryiv\0"
"glGetQueryivARB\0"
"\0"
- /* _mesa_function_pool[1813]: TexImage3D (offset 371) */
+ /* _mesa_function_pool[1774]: TexImage3D (offset 371) */
"iiiiiiiiip\0"
"glTexImage3D\0"
"glTexImage3DEXT\0"
"\0"
- /* _mesa_function_pool[1854]: BindFragDataLocationEXT (will be remapped) */
+ /* _mesa_function_pool[1815]: BindFragDataLocationEXT (will be remapped) */
"iip\0"
"glBindFragDataLocationEXT\0"
"glBindFragDataLocation\0"
"\0"
- /* _mesa_function_pool[1908]: ReplacementCodeuiVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[1869]: ReplacementCodeuiVertex3fvSUN (dynamic) */
"pp\0"
"glReplacementCodeuiVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[1944]: EdgeFlagPointer (offset 312) */
+ /* _mesa_function_pool[1905]: EdgeFlagPointer (offset 312) */
"ip\0"
"glEdgeFlagPointer\0"
"\0"
- /* _mesa_function_pool[1966]: Color3ubv (offset 20) */
+ /* _mesa_function_pool[1927]: Color3ubv (offset 20) */
"p\0"
"glColor3ubv\0"
"\0"
- /* _mesa_function_pool[1981]: GetQueryObjectivARB (will be remapped) */
+ /* _mesa_function_pool[1942]: GetQueryObjectivARB (will be remapped) */
"iip\0"
"glGetQueryObjectiv\0"
"glGetQueryObjectivARB\0"
"\0"
- /* _mesa_function_pool[2027]: Vertex3dv (offset 135) */
+ /* _mesa_function_pool[1988]: Vertex3dv (offset 135) */
"p\0"
"glVertex3dv\0"
"\0"
- /* _mesa_function_pool[2042]: ReplacementCodeuiTexCoord2fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[2003]: ReplacementCodeuiTexCoord2fVertex3fvSUN (dynamic) */
"ppp\0"
"glReplacementCodeuiTexCoord2fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[2089]: CompressedTexSubImage2DARB (will be remapped) */
+ /* _mesa_function_pool[2050]: CompressedTexSubImage2DARB (will be remapped) */
"iiiiiiiip\0"
"glCompressedTexSubImage2D\0"
"glCompressedTexSubImage2DARB\0"
"\0"
- /* _mesa_function_pool[2155]: CombinerOutputNV (will be remapped) */
+ /* _mesa_function_pool[2116]: CombinerOutputNV (will be remapped) */
"iiiiiiiiii\0"
"glCombinerOutputNV\0"
"\0"
- /* _mesa_function_pool[2186]: VertexAttribs3fvNV (will be remapped) */
+ /* _mesa_function_pool[2147]: VertexAttribs3fvNV (will be remapped) */
"iip\0"
"glVertexAttribs3fvNV\0"
"\0"
- /* _mesa_function_pool[2212]: Uniform2fARB (will be remapped) */
+ /* _mesa_function_pool[2173]: Uniform2fARB (will be remapped) */
"iff\0"
"glUniform2f\0"
"glUniform2fARB\0"
"\0"
- /* _mesa_function_pool[2244]: LightModeliv (offset 166) */
+ /* _mesa_function_pool[2205]: LightModeliv (offset 166) */
"ip\0"
"glLightModeliv\0"
"\0"
- /* _mesa_function_pool[2263]: VertexAttrib1svARB (will be remapped) */
+ /* _mesa_function_pool[2224]: VertexAttrib1svARB (will be remapped) */
"ip\0"
"glVertexAttrib1sv\0"
"glVertexAttrib1svARB\0"
"\0"
- /* _mesa_function_pool[2306]: VertexAttribs1dvNV (will be remapped) */
+ /* _mesa_function_pool[2267]: VertexAttribs1dvNV (will be remapped) */
"iip\0"
"glVertexAttribs1dvNV\0"
"\0"
- /* _mesa_function_pool[2332]: Uniform2ivARB (will be remapped) */
+ /* _mesa_function_pool[2293]: Uniform2ivARB (will be remapped) */
"iip\0"
"glUniform2iv\0"
"glUniform2ivARB\0"
"\0"
- /* _mesa_function_pool[2366]: GetImageTransformParameterfvHP (dynamic) */
+ /* _mesa_function_pool[2327]: GetImageTransformParameterfvHP (dynamic) */
"iip\0"
"glGetImageTransformParameterfvHP\0"
"\0"
- /* _mesa_function_pool[2404]: Normal3bv (offset 53) */
+ /* _mesa_function_pool[2365]: Normal3bv (offset 53) */
"p\0"
"glNormal3bv\0"
"\0"
- /* _mesa_function_pool[2419]: TexGeniv (offset 193) */
+ /* _mesa_function_pool[2380]: TexGeniv (offset 193) */
"iip\0"
"glTexGeniv\0"
"\0"
- /* _mesa_function_pool[2435]: WeightubvARB (dynamic) */
+ /* _mesa_function_pool[2396]: WeightubvARB (dynamic) */
"ip\0"
"glWeightubvARB\0"
"\0"
- /* _mesa_function_pool[2454]: VertexAttrib1fvNV (will be remapped) */
+ /* _mesa_function_pool[2415]: VertexAttrib1fvNV (will be remapped) */
"ip\0"
"glVertexAttrib1fvNV\0"
"\0"
- /* _mesa_function_pool[2478]: Vertex3iv (offset 139) */
+ /* _mesa_function_pool[2439]: Vertex3iv (offset 139) */
"p\0"
"glVertex3iv\0"
"\0"
- /* _mesa_function_pool[2493]: CopyConvolutionFilter1D (offset 354) */
+ /* _mesa_function_pool[2454]: CopyConvolutionFilter1D (offset 354) */
"iiiii\0"
"glCopyConvolutionFilter1D\0"
"glCopyConvolutionFilter1DEXT\0"
"\0"
- /* _mesa_function_pool[2555]: VertexAttribI1uiEXT (will be remapped) */
+ /* _mesa_function_pool[2516]: VertexAttribI1uiEXT (will be remapped) */
"ii\0"
"glVertexAttribI1uiEXT\0"
"glVertexAttribI1ui\0"
"\0"
- /* _mesa_function_pool[2600]: ReplacementCodeuiNormal3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[2561]: ReplacementCodeuiNormal3fVertex3fSUN (dynamic) */
"iffffff\0"
"glReplacementCodeuiNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[2648]: DeleteSync (will be remapped) */
+ /* _mesa_function_pool[2609]: DeleteSync (will be remapped) */
"i\0"
"glDeleteSync\0"
"\0"
- /* _mesa_function_pool[2664]: FragmentMaterialfvSGIX (dynamic) */
+ /* _mesa_function_pool[2625]: FragmentMaterialfvSGIX (dynamic) */
"iip\0"
"glFragmentMaterialfvSGIX\0"
"\0"
- /* _mesa_function_pool[2694]: BlendColor (offset 336) */
+ /* _mesa_function_pool[2655]: BlendColor (offset 336) */
"ffff\0"
"glBlendColor\0"
"glBlendColorEXT\0"
"\0"
- /* _mesa_function_pool[2729]: UniformMatrix4fvARB (will be remapped) */
+ /* _mesa_function_pool[2690]: UniformMatrix4fvARB (will be remapped) */
"iiip\0"
"glUniformMatrix4fv\0"
"glUniformMatrix4fvARB\0"
"\0"
- /* _mesa_function_pool[2776]: DeleteVertexArraysAPPLE (will be remapped) */
+ /* _mesa_function_pool[2737]: DeleteVertexArraysAPPLE (will be remapped) */
"ip\0"
"glDeleteVertexArrays\0"
"glDeleteVertexArraysAPPLE\0"
"\0"
- /* _mesa_function_pool[2827]: TexBuffer (will be remapped) */
+ /* _mesa_function_pool[2788]: TexBuffer (will be remapped) */
"iii\0"
"glTexBuffer\0"
"\0"
- /* _mesa_function_pool[2844]: ReadInstrumentsSGIX (dynamic) */
+ /* _mesa_function_pool[2805]: ReadInstrumentsSGIX (dynamic) */
"i\0"
"glReadInstrumentsSGIX\0"
"\0"
- /* _mesa_function_pool[2869]: CallLists (offset 3) */
+ /* _mesa_function_pool[2830]: CallLists (offset 3) */
"iip\0"
"glCallLists\0"
"\0"
- /* _mesa_function_pool[2886]: UniformMatrix2x4fv (will be remapped) */
+ /* _mesa_function_pool[2847]: UniformMatrix2x4fv (will be remapped) */
"iiip\0"
"glUniformMatrix2x4fv\0"
"\0"
- /* _mesa_function_pool[2913]: Color4ubVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[2874]: Color4ubVertex3fvSUN (dynamic) */
"pp\0"
"glColor4ubVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[2940]: Normal3iv (offset 59) */
+ /* _mesa_function_pool[2901]: Normal3iv (offset 59) */
"p\0"
"glNormal3iv\0"
"\0"
- /* _mesa_function_pool[2955]: PassThrough (offset 199) */
+ /* _mesa_function_pool[2916]: PassThrough (offset 199) */
"f\0"
"glPassThrough\0"
"\0"
- /* _mesa_function_pool[2972]: GetVertexAttribIivEXT (will be remapped) */
+ /* _mesa_function_pool[2933]: GetVertexAttribIivEXT (will be remapped) */
"iip\0"
"glGetVertexAttribIivEXT\0"
"glGetVertexAttribIiv\0"
"\0"
- /* _mesa_function_pool[3022]: TexParameterIivEXT (will be remapped) */
+ /* _mesa_function_pool[2983]: TexParameterIivEXT (will be remapped) */
"iip\0"
"glTexParameterIivEXT\0"
"glTexParameterIiv\0"
"\0"
- /* _mesa_function_pool[3066]: FramebufferTextureLayerEXT (will be remapped) */
+ /* _mesa_function_pool[3027]: FramebufferTextureLayerEXT (will be remapped) */
"iiiii\0"
"glFramebufferTextureLayer\0"
"glFramebufferTextureLayerEXT\0"
"\0"
- /* _mesa_function_pool[3128]: GetListParameterfvSGIX (dynamic) */
+ /* _mesa_function_pool[3089]: GetListParameterfvSGIX (dynamic) */
"iip\0"
"glGetListParameterfvSGIX\0"
"\0"
- /* _mesa_function_pool[3158]: Viewport (offset 305) */
+ /* _mesa_function_pool[3119]: Viewport (offset 305) */
"iiii\0"
"glViewport\0"
"\0"
- /* _mesa_function_pool[3175]: VertexAttrib4NusvARB (will be remapped) */
+ /* _mesa_function_pool[3136]: VertexAttrib4NusvARB (will be remapped) */
"ip\0"
"glVertexAttrib4Nusv\0"
"glVertexAttrib4NusvARB\0"
"\0"
- /* _mesa_function_pool[3222]: WindowPos4svMESA (will be remapped) */
+ /* _mesa_function_pool[3183]: WindowPos4svMESA (will be remapped) */
"p\0"
"glWindowPos4svMESA\0"
"\0"
- /* _mesa_function_pool[3244]: CreateProgramObjectARB (will be remapped) */
+ /* _mesa_function_pool[3205]: CreateProgramObjectARB (will be remapped) */
"\0"
"glCreateProgramObjectARB\0"
"\0"
- /* _mesa_function_pool[3271]: DeleteTransformFeedbacks (will be remapped) */
+ /* _mesa_function_pool[3232]: DeleteTransformFeedbacks (will be remapped) */
"ip\0"
"glDeleteTransformFeedbacks\0"
"\0"
- /* _mesa_function_pool[3302]: UniformMatrix4x3fv (will be remapped) */
+ /* _mesa_function_pool[3263]: UniformMatrix4x3fv (will be remapped) */
"iiip\0"
"glUniformMatrix4x3fv\0"
"\0"
- /* _mesa_function_pool[3329]: PrioritizeTextures (offset 331) */
+ /* _mesa_function_pool[3290]: PrioritizeTextures (offset 331) */
"ipp\0"
"glPrioritizeTextures\0"
"glPrioritizeTexturesEXT\0"
"\0"
- /* _mesa_function_pool[3379]: VertexAttribI3uiEXT (will be remapped) */
+ /* _mesa_function_pool[3340]: VertexAttribI3uiEXT (will be remapped) */
"iiii\0"
"glVertexAttribI3uiEXT\0"
"glVertexAttribI3ui\0"
"\0"
- /* _mesa_function_pool[3426]: AsyncMarkerSGIX (dynamic) */
+ /* _mesa_function_pool[3387]: AsyncMarkerSGIX (dynamic) */
"i\0"
"glAsyncMarkerSGIX\0"
"\0"
- /* _mesa_function_pool[3447]: GlobalAlphaFactorubSUN (dynamic) */
+ /* _mesa_function_pool[3408]: GlobalAlphaFactorubSUN (dynamic) */
"i\0"
"glGlobalAlphaFactorubSUN\0"
"\0"
- /* _mesa_function_pool[3475]: ClearColorIuiEXT (will be remapped) */
+ /* _mesa_function_pool[3436]: ClearColorIuiEXT (will be remapped) */
"iiii\0"
"glClearColorIuiEXT\0"
"\0"
- /* _mesa_function_pool[3500]: ClearDebugLogMESA (dynamic) */
+ /* _mesa_function_pool[3461]: ClearDebugLogMESA (dynamic) */
"iii\0"
"glClearDebugLogMESA\0"
"\0"
- /* _mesa_function_pool[3525]: Uniform4uiEXT (will be remapped) */
+ /* _mesa_function_pool[3486]: Uniform4uiEXT (will be remapped) */
"iiiii\0"
"glUniform4uiEXT\0"
"glUniform4ui\0"
"\0"
- /* _mesa_function_pool[3561]: ResetHistogram (offset 369) */
+ /* _mesa_function_pool[3522]: ResetHistogram (offset 369) */
"i\0"
"glResetHistogram\0"
"glResetHistogramEXT\0"
"\0"
- /* _mesa_function_pool[3601]: GetProgramNamedParameterfvNV (will be remapped) */
+ /* _mesa_function_pool[3562]: GetProgramNamedParameterfvNV (will be remapped) */
"iipp\0"
"glGetProgramNamedParameterfvNV\0"
"\0"
- /* _mesa_function_pool[3638]: PointParameterfEXT (will be remapped) */
+ /* _mesa_function_pool[3599]: PointParameterfEXT (will be remapped) */
"if\0"
"glPointParameterf\0"
"glPointParameterfARB\0"
"glPointParameterfEXT\0"
"glPointParameterfSGIS\0"
"\0"
- /* _mesa_function_pool[3724]: LoadIdentityDeformationMapSGIX (dynamic) */
+ /* _mesa_function_pool[3685]: LoadIdentityDeformationMapSGIX (dynamic) */
"i\0"
"glLoadIdentityDeformationMapSGIX\0"
"\0"
- /* _mesa_function_pool[3760]: GenFencesNV (will be remapped) */
+ /* _mesa_function_pool[3721]: GenFencesNV (will be remapped) */
"ip\0"
"glGenFencesNV\0"
"\0"
- /* _mesa_function_pool[3778]: ImageTransformParameterfHP (dynamic) */
+ /* _mesa_function_pool[3739]: ImageTransformParameterfHP (dynamic) */
"iif\0"
"glImageTransformParameterfHP\0"
"\0"
- /* _mesa_function_pool[3812]: MatrixIndexusvARB (dynamic) */
+ /* _mesa_function_pool[3773]: MatrixIndexusvARB (dynamic) */
"ip\0"
"glMatrixIndexusvARB\0"
"\0"
- /* _mesa_function_pool[3836]: DrawElementsBaseVertex (will be remapped) */
+ /* _mesa_function_pool[3797]: DrawElementsBaseVertex (will be remapped) */
"iiipi\0"
"glDrawElementsBaseVertex\0"
"\0"
- /* _mesa_function_pool[3868]: DisableVertexAttribArrayARB (will be remapped) */
+ /* _mesa_function_pool[3829]: DisableVertexAttribArrayARB (will be remapped) */
"i\0"
"glDisableVertexAttribArray\0"
"glDisableVertexAttribArrayARB\0"
"\0"
- /* _mesa_function_pool[3928]: TexCoord2sv (offset 109) */
+ /* _mesa_function_pool[3889]: TexCoord2sv (offset 109) */
"p\0"
"glTexCoord2sv\0"
"\0"
- /* _mesa_function_pool[3945]: Vertex4dv (offset 143) */
+ /* _mesa_function_pool[3906]: Vertex4dv (offset 143) */
"p\0"
"glVertex4dv\0"
"\0"
- /* _mesa_function_pool[3960]: StencilMaskSeparate (will be remapped) */
+ /* _mesa_function_pool[3921]: StencilMaskSeparate (will be remapped) */
"ii\0"
"glStencilMaskSeparate\0"
"\0"
- /* _mesa_function_pool[3986]: ProgramLocalParameter4dARB (will be remapped) */
+ /* _mesa_function_pool[3947]: ProgramLocalParameter4dARB (will be remapped) */
"iidddd\0"
"glProgramLocalParameter4dARB\0"
"\0"
- /* _mesa_function_pool[4023]: CompressedTexImage3DARB (will be remapped) */
+ /* _mesa_function_pool[3984]: CompressedTexImage3DARB (will be remapped) */
"iiiiiiiip\0"
"glCompressedTexImage3D\0"
"glCompressedTexImage3DARB\0"
"\0"
- /* _mesa_function_pool[4083]: Color3sv (offset 18) */
+ /* _mesa_function_pool[4044]: Color3sv (offset 18) */
"p\0"
"glColor3sv\0"
"\0"
- /* _mesa_function_pool[4097]: GetConvolutionParameteriv (offset 358) */
+ /* _mesa_function_pool[4058]: GetConvolutionParameteriv (offset 358) */
"iip\0"
"glGetConvolutionParameteriv\0"
"glGetConvolutionParameterivEXT\0"
"\0"
- /* _mesa_function_pool[4161]: VertexAttrib1fARB (will be remapped) */
+ /* _mesa_function_pool[4122]: DeleteSamplers (will be remapped) */
+ "ip\0"
+ "glDeleteSamplers\0"
+ "\0"
+ /* _mesa_function_pool[4143]: VertexAttrib1fARB (will be remapped) */
"if\0"
"glVertexAttrib1f\0"
"glVertexAttrib1fARB\0"
"\0"
- /* _mesa_function_pool[4202]: Vertex2dv (offset 127) */
+ /* _mesa_function_pool[4184]: Vertex2dv (offset 127) */
"p\0"
"glVertex2dv\0"
"\0"
- /* _mesa_function_pool[4217]: TestFenceNV (will be remapped) */
+ /* _mesa_function_pool[4199]: TestFenceNV (will be remapped) */
"i\0"
"glTestFenceNV\0"
"\0"
- /* _mesa_function_pool[4234]: MultiTexCoord1fvARB (offset 379) */
+ /* _mesa_function_pool[4216]: GetVertexAttribIuivEXT (will be remapped) */
+ "iip\0"
+ "glGetVertexAttribIuivEXT\0"
+ "glGetVertexAttribIuiv\0"
+ "\0"
+ /* _mesa_function_pool[4268]: MultiTexCoord1fvARB (offset 379) */
"ip\0"
"glMultiTexCoord1fv\0"
"glMultiTexCoord1fvARB\0"
"\0"
- /* _mesa_function_pool[4279]: TexCoord3iv (offset 115) */
+ /* _mesa_function_pool[4313]: TexCoord3iv (offset 115) */
"p\0"
"glTexCoord3iv\0"
"\0"
- /* _mesa_function_pool[4296]: Uniform2uivEXT (will be remapped) */
+ /* _mesa_function_pool[4330]: Uniform2uivEXT (will be remapped) */
"iip\0"
"glUniform2uivEXT\0"
"glUniform2uiv\0"
"\0"
- /* _mesa_function_pool[4332]: ColorFragmentOp2ATI (will be remapped) */
+ /* _mesa_function_pool[4366]: ColorFragmentOp2ATI (will be remapped) */
"iiiiiiiiii\0"
"glColorFragmentOp2ATI\0"
"\0"
- /* _mesa_function_pool[4366]: SecondaryColorPointerListIBM (dynamic) */
+ /* _mesa_function_pool[4400]: SecondaryColorPointerListIBM (dynamic) */
"iiipi\0"
"glSecondaryColorPointerListIBM\0"
"\0"
- /* _mesa_function_pool[4404]: GetPixelTexGenParameterivSGIS (will be remapped) */
+ /* _mesa_function_pool[4438]: GetPixelTexGenParameterivSGIS (will be remapped) */
"ip\0"
"glGetPixelTexGenParameterivSGIS\0"
"\0"
- /* _mesa_function_pool[4440]: Color3fv (offset 14) */
+ /* _mesa_function_pool[4474]: Color3fv (offset 14) */
"p\0"
"glColor3fv\0"
"\0"
- /* _mesa_function_pool[4454]: VertexAttrib4fNV (will be remapped) */
+ /* _mesa_function_pool[4488]: VertexAttrib4fNV (will be remapped) */
"iffff\0"
"glVertexAttrib4fNV\0"
"\0"
- /* _mesa_function_pool[4480]: ReplacementCodeubSUN (dynamic) */
+ /* _mesa_function_pool[4514]: ReplacementCodeubSUN (dynamic) */
"i\0"
"glReplacementCodeubSUN\0"
"\0"
- /* _mesa_function_pool[4506]: FinishAsyncSGIX (dynamic) */
+ /* _mesa_function_pool[4540]: FinishAsyncSGIX (dynamic) */
"p\0"
"glFinishAsyncSGIX\0"
"\0"
- /* _mesa_function_pool[4527]: GetDebugLogMESA (dynamic) */
+ /* _mesa_function_pool[4561]: GetDebugLogMESA (dynamic) */
"iiiipp\0"
"glGetDebugLogMESA\0"
"\0"
- /* _mesa_function_pool[4553]: FogCoorddEXT (will be remapped) */
+ /* _mesa_function_pool[4587]: FogCoorddEXT (will be remapped) */
"d\0"
"glFogCoordd\0"
"glFogCoorddEXT\0"
"\0"
- /* _mesa_function_pool[4583]: BeginConditionalRenderNV (will be remapped) */
+ /* _mesa_function_pool[4617]: BeginConditionalRenderNV (will be remapped) */
"ii\0"
"glBeginConditionalRenderNV\0"
"glBeginConditionalRender\0"
"\0"
- /* _mesa_function_pool[4639]: Color4ubVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[4673]: Color4ubVertex3fSUN (dynamic) */
"iiiifff\0"
"glColor4ubVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[4670]: FogCoordfEXT (will be remapped) */
+ /* _mesa_function_pool[4704]: FogCoordfEXT (will be remapped) */
"f\0"
"glFogCoordf\0"
"glFogCoordfEXT\0"
"\0"
- /* _mesa_function_pool[4700]: PointSize (offset 173) */
+ /* _mesa_function_pool[4734]: PointSize (offset 173) */
"f\0"
"glPointSize\0"
"\0"
- /* _mesa_function_pool[4715]: VertexAttribI2uivEXT (will be remapped) */
+ /* _mesa_function_pool[4749]: VertexAttribI2uivEXT (will be remapped) */
"ip\0"
"glVertexAttribI2uivEXT\0"
"glVertexAttribI2uiv\0"
"\0"
- /* _mesa_function_pool[4762]: TexCoord2fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[4796]: TexCoord2fVertex3fSUN (dynamic) */
"fffff\0"
"glTexCoord2fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[4793]: PopName (offset 200) */
+ /* _mesa_function_pool[4827]: PopName (offset 200) */
"\0"
"glPopName\0"
"\0"
- /* _mesa_function_pool[4805]: GlobalAlphaFactoriSUN (dynamic) */
+ /* _mesa_function_pool[4839]: GetSamplerParameterfv (will be remapped) */
+ "iip\0"
+ "glGetSamplerParameterfv\0"
+ "\0"
+ /* _mesa_function_pool[4868]: GlobalAlphaFactoriSUN (dynamic) */
"i\0"
"glGlobalAlphaFactoriSUN\0"
"\0"
- /* _mesa_function_pool[4832]: VertexAttrib2dNV (will be remapped) */
+ /* _mesa_function_pool[4895]: VertexAttrib2dNV (will be remapped) */
"idd\0"
"glVertexAttrib2dNV\0"
"\0"
- /* _mesa_function_pool[4856]: GetProgramInfoLog (will be remapped) */
+ /* _mesa_function_pool[4919]: GetProgramInfoLog (will be remapped) */
"iipp\0"
"glGetProgramInfoLog\0"
"\0"
- /* _mesa_function_pool[4882]: VertexAttrib4NbvARB (will be remapped) */
+ /* _mesa_function_pool[4945]: VertexAttrib4NbvARB (will be remapped) */
"ip\0"
"glVertexAttrib4Nbv\0"
"glVertexAttrib4NbvARB\0"
"\0"
- /* _mesa_function_pool[4927]: GetActiveAttribARB (will be remapped) */
+ /* _mesa_function_pool[4990]: GetActiveAttribARB (will be remapped) */
"iiipppp\0"
"glGetActiveAttrib\0"
"glGetActiveAttribARB\0"
"\0"
- /* _mesa_function_pool[4975]: Vertex4sv (offset 149) */
+ /* _mesa_function_pool[5038]: Vertex4sv (offset 149) */
"p\0"
"glVertex4sv\0"
"\0"
- /* _mesa_function_pool[4990]: VertexAttrib4ubNV (will be remapped) */
+ /* _mesa_function_pool[5053]: VertexAttrib4ubNV (will be remapped) */
"iiiii\0"
"glVertexAttrib4ubNV\0"
"\0"
- /* _mesa_function_pool[5017]: ClampColor (will be remapped) */
+ /* _mesa_function_pool[5080]: ClampColor (will be remapped) */
"ii\0"
"glClampColor\0"
"\0"
- /* _mesa_function_pool[5034]: TextureRangeAPPLE (will be remapped) */
+ /* _mesa_function_pool[5097]: TextureRangeAPPLE (will be remapped) */
"iip\0"
"glTextureRangeAPPLE\0"
"\0"
- /* _mesa_function_pool[5059]: GetTexEnvfv (offset 276) */
+ /* _mesa_function_pool[5122]: GetTexEnvfv (offset 276) */
"iip\0"
"glGetTexEnvfv\0"
"\0"
- /* _mesa_function_pool[5078]: BindTransformFeedback (will be remapped) */
+ /* _mesa_function_pool[5141]: BindTransformFeedback (will be remapped) */
"ii\0"
"glBindTransformFeedback\0"
"\0"
- /* _mesa_function_pool[5106]: TexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[5169]: TexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */
"ffffffffffff\0"
"glTexCoord2fColor4fNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[5159]: Indexub (offset 315) */
+ /* _mesa_function_pool[5222]: Indexub (offset 315) */
"i\0"
"glIndexub\0"
"\0"
- /* _mesa_function_pool[5172]: ColorMaskIndexedEXT (will be remapped) */
- "iiiii\0"
- "glColorMaskIndexedEXT\0"
- "glColorMaski\0"
- "\0"
- /* _mesa_function_pool[5214]: TexEnvi (offset 186) */
+ /* _mesa_function_pool[5235]: TexEnvi (offset 186) */
"iii\0"
"glTexEnvi\0"
"\0"
- /* _mesa_function_pool[5229]: GetClipPlane (offset 259) */
+ /* _mesa_function_pool[5250]: GetClipPlane (offset 259) */
"ip\0"
"glGetClipPlane\0"
"\0"
- /* _mesa_function_pool[5248]: CombinerParameterfvNV (will be remapped) */
+ /* _mesa_function_pool[5269]: CombinerParameterfvNV (will be remapped) */
"ip\0"
"glCombinerParameterfvNV\0"
"\0"
- /* _mesa_function_pool[5276]: VertexAttribs3dvNV (will be remapped) */
+ /* _mesa_function_pool[5297]: VertexAttribs3dvNV (will be remapped) */
"iip\0"
"glVertexAttribs3dvNV\0"
"\0"
- /* _mesa_function_pool[5302]: VertexAttribI2uiEXT (will be remapped) */
+ /* _mesa_function_pool[5323]: VertexAttribI2uiEXT (will be remapped) */
"iii\0"
"glVertexAttribI2uiEXT\0"
"glVertexAttribI2ui\0"
"\0"
- /* _mesa_function_pool[5348]: VertexAttribs4fvNV (will be remapped) */
+ /* _mesa_function_pool[5369]: VertexAttribs4fvNV (will be remapped) */
"iip\0"
"glVertexAttribs4fvNV\0"
"\0"
- /* _mesa_function_pool[5374]: VertexArrayRangeNV (will be remapped) */
+ /* _mesa_function_pool[5395]: VertexArrayRangeNV (will be remapped) */
"ip\0"
"glVertexArrayRangeNV\0"
"\0"
- /* _mesa_function_pool[5399]: FragmentLightiSGIX (dynamic) */
+ /* _mesa_function_pool[5420]: FragmentLightiSGIX (dynamic) */
"iii\0"
"glFragmentLightiSGIX\0"
"\0"
- /* _mesa_function_pool[5425]: PolygonOffsetEXT (will be remapped) */
+ /* _mesa_function_pool[5446]: PolygonOffsetEXT (will be remapped) */
"ff\0"
"glPolygonOffsetEXT\0"
"\0"
- /* _mesa_function_pool[5448]: VertexAttribI4uivEXT (will be remapped) */
+ /* _mesa_function_pool[5469]: VertexAttribI4uivEXT (will be remapped) */
"ip\0"
"glVertexAttribI4uivEXT\0"
"glVertexAttribI4uiv\0"
"\0"
- /* _mesa_function_pool[5495]: PollAsyncSGIX (dynamic) */
+ /* _mesa_function_pool[5516]: PollAsyncSGIX (dynamic) */
"p\0"
"glPollAsyncSGIX\0"
"\0"
- /* _mesa_function_pool[5514]: DeleteFragmentShaderATI (will be remapped) */
+ /* _mesa_function_pool[5535]: DeleteFragmentShaderATI (will be remapped) */
"i\0"
"glDeleteFragmentShaderATI\0"
"\0"
- /* _mesa_function_pool[5543]: Scaled (offset 301) */
+ /* _mesa_function_pool[5564]: Scaled (offset 301) */
"ddd\0"
"glScaled\0"
"\0"
- /* _mesa_function_pool[5557]: ResumeTransformFeedback (will be remapped) */
+ /* _mesa_function_pool[5578]: ResumeTransformFeedback (will be remapped) */
"\0"
"glResumeTransformFeedback\0"
"\0"
- /* _mesa_function_pool[5585]: Scalef (offset 302) */
+ /* _mesa_function_pool[5606]: Scalef (offset 302) */
"fff\0"
"glScalef\0"
"\0"
- /* _mesa_function_pool[5599]: TexCoord2fNormal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[5620]: TexCoord2fNormal3fVertex3fvSUN (dynamic) */
"ppp\0"
"glTexCoord2fNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[5637]: MultTransposeMatrixdARB (will be remapped) */
+ /* _mesa_function_pool[5658]: ProgramEnvParameters4fvEXT (will be remapped) */
+ "iiip\0"
+ "glProgramEnvParameters4fvEXT\0"
+ "\0"
+ /* _mesa_function_pool[5693]: MultTransposeMatrixdARB (will be remapped) */
"p\0"
"glMultTransposeMatrixd\0"
"glMultTransposeMatrixdARB\0"
"\0"
- /* _mesa_function_pool[5689]: ObjectUnpurgeableAPPLE (will be remapped) */
+ /* _mesa_function_pool[5745]: ColorMaskIndexedEXT (will be remapped) */
+ "iiiii\0"
+ "glColorMaskIndexedEXT\0"
+ "glColorMaski\0"
+ "\0"
+ /* _mesa_function_pool[5787]: ObjectUnpurgeableAPPLE (will be remapped) */
"iii\0"
"glObjectUnpurgeableAPPLE\0"
"\0"
- /* _mesa_function_pool[5719]: AlphaFunc (offset 240) */
+ /* _mesa_function_pool[5817]: AlphaFunc (offset 240) */
"if\0"
"glAlphaFunc\0"
"\0"
- /* _mesa_function_pool[5735]: WindowPos2svMESA (will be remapped) */
+ /* _mesa_function_pool[5833]: WindowPos2svMESA (will be remapped) */
"p\0"
"glWindowPos2sv\0"
"glWindowPos2svARB\0"
"glWindowPos2svMESA\0"
"\0"
- /* _mesa_function_pool[5790]: EdgeFlag (offset 41) */
+ /* _mesa_function_pool[5888]: EdgeFlag (offset 41) */
"i\0"
"glEdgeFlag\0"
"\0"
- /* _mesa_function_pool[5804]: TexCoord2iv (offset 107) */
+ /* _mesa_function_pool[5902]: TexCoord2iv (offset 107) */
"p\0"
"glTexCoord2iv\0"
"\0"
- /* _mesa_function_pool[5821]: CompressedTexImage1DARB (will be remapped) */
+ /* _mesa_function_pool[5919]: CompressedTexImage1DARB (will be remapped) */
"iiiiiip\0"
"glCompressedTexImage1D\0"
"glCompressedTexImage1DARB\0"
"\0"
- /* _mesa_function_pool[5879]: Rotated (offset 299) */
+ /* _mesa_function_pool[5977]: Rotated (offset 299) */
"dddd\0"
"glRotated\0"
"\0"
- /* _mesa_function_pool[5895]: GetTexParameterIuivEXT (will be remapped) */
+ /* _mesa_function_pool[5993]: GetTexParameterIuivEXT (will be remapped) */
"iip\0"
"glGetTexParameterIuivEXT\0"
"glGetTexParameterIuiv\0"
"\0"
- /* _mesa_function_pool[5947]: VertexAttrib2sNV (will be remapped) */
+ /* _mesa_function_pool[6045]: VertexAttrib2sNV (will be remapped) */
"iii\0"
"glVertexAttrib2sNV\0"
"\0"
- /* _mesa_function_pool[5971]: ReadPixels (offset 256) */
+ /* _mesa_function_pool[6069]: ReadPixels (offset 256) */
"iiiiiip\0"
"glReadPixels\0"
"\0"
- /* _mesa_function_pool[5993]: EdgeFlagv (offset 42) */
+ /* _mesa_function_pool[6091]: EdgeFlagv (offset 42) */
"p\0"
"glEdgeFlagv\0"
"\0"
- /* _mesa_function_pool[6008]: NormalPointerListIBM (dynamic) */
+ /* _mesa_function_pool[6106]: NormalPointerListIBM (dynamic) */
"iipi\0"
"glNormalPointerListIBM\0"
"\0"
- /* _mesa_function_pool[6037]: IndexPointerEXT (will be remapped) */
+ /* _mesa_function_pool[6135]: IndexPointerEXT (will be remapped) */
"iiip\0"
"glIndexPointerEXT\0"
"\0"
- /* _mesa_function_pool[6061]: Color4iv (offset 32) */
+ /* _mesa_function_pool[6159]: Color4iv (offset 32) */
"p\0"
"glColor4iv\0"
"\0"
- /* _mesa_function_pool[6075]: TexParameterf (offset 178) */
+ /* _mesa_function_pool[6173]: TexParameterf (offset 178) */
"iif\0"
"glTexParameterf\0"
"\0"
- /* _mesa_function_pool[6096]: TexParameteri (offset 180) */
+ /* _mesa_function_pool[6194]: TexParameteri (offset 180) */
"iii\0"
"glTexParameteri\0"
"\0"
- /* _mesa_function_pool[6117]: NormalPointerEXT (will be remapped) */
+ /* _mesa_function_pool[6215]: NormalPointerEXT (will be remapped) */
"iiip\0"
"glNormalPointerEXT\0"
"\0"
- /* _mesa_function_pool[6142]: MultiTexCoord3dARB (offset 392) */
+ /* _mesa_function_pool[6240]: MultiTexCoord3dARB (offset 392) */
"iddd\0"
"glMultiTexCoord3d\0"
"glMultiTexCoord3dARB\0"
"\0"
- /* _mesa_function_pool[6187]: MultiTexCoord2iARB (offset 388) */
+ /* _mesa_function_pool[6285]: MultiTexCoord2iARB (offset 388) */
"iii\0"
"glMultiTexCoord2i\0"
"glMultiTexCoord2iARB\0"
"\0"
- /* _mesa_function_pool[6231]: DrawPixels (offset 257) */
+ /* _mesa_function_pool[6329]: DrawPixels (offset 257) */
"iiiip\0"
"glDrawPixels\0"
"\0"
- /* _mesa_function_pool[6251]: ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[6349]: ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (dynamic) */
"iffffffff\0"
"glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[6311]: MultiTexCoord2svARB (offset 391) */
+ /* _mesa_function_pool[6409]: MultiTexCoord2svARB (offset 391) */
"ip\0"
"glMultiTexCoord2sv\0"
"glMultiTexCoord2svARB\0"
"\0"
- /* _mesa_function_pool[6356]: ReplacementCodeubvSUN (dynamic) */
+ /* _mesa_function_pool[6454]: ReplacementCodeubvSUN (dynamic) */
"p\0"
"glReplacementCodeubvSUN\0"
"\0"
- /* _mesa_function_pool[6383]: Uniform3iARB (will be remapped) */
+ /* _mesa_function_pool[6481]: Uniform3iARB (will be remapped) */
"iiii\0"
"glUniform3i\0"
"glUniform3iARB\0"
"\0"
- /* _mesa_function_pool[6416]: DrawTransformFeedback (will be remapped) */
+ /* _mesa_function_pool[6514]: DrawTransformFeedback (will be remapped) */
"ii\0"
"glDrawTransformFeedback\0"
"\0"
- /* _mesa_function_pool[6444]: DrawElementsInstancedARB (will be remapped) */
+ /* _mesa_function_pool[6542]: DrawElementsInstancedARB (will be remapped) */
"iiipi\0"
"glDrawElementsInstancedARB\0"
"glDrawElementsInstancedEXT\0"
"glDrawElementsInstanced\0"
"\0"
- /* _mesa_function_pool[6529]: GetShaderInfoLog (will be remapped) */
+ /* _mesa_function_pool[6627]: GetShaderInfoLog (will be remapped) */
"iipp\0"
"glGetShaderInfoLog\0"
"\0"
- /* _mesa_function_pool[6554]: WeightivARB (dynamic) */
+ /* _mesa_function_pool[6652]: WeightivARB (dynamic) */
"ip\0"
"glWeightivARB\0"
"\0"
- /* _mesa_function_pool[6572]: PollInstrumentsSGIX (dynamic) */
+ /* _mesa_function_pool[6670]: PollInstrumentsSGIX (dynamic) */
"p\0"
"glPollInstrumentsSGIX\0"
"\0"
- /* _mesa_function_pool[6597]: GlobalAlphaFactordSUN (dynamic) */
+ /* _mesa_function_pool[6695]: GlobalAlphaFactordSUN (dynamic) */
"d\0"
"glGlobalAlphaFactordSUN\0"
"\0"
- /* _mesa_function_pool[6624]: GetFinalCombinerInputParameterfvNV (will be remapped) */
+ /* _mesa_function_pool[6722]: GetFinalCombinerInputParameterfvNV (will be remapped) */
"iip\0"
"glGetFinalCombinerInputParameterfvNV\0"
"\0"
- /* _mesa_function_pool[6666]: GenerateMipmapEXT (will be remapped) */
+ /* _mesa_function_pool[6764]: GenerateMipmapEXT (will be remapped) */
"i\0"
"glGenerateMipmap\0"
"glGenerateMipmapEXT\0"
"\0"
- /* _mesa_function_pool[6706]: GenLists (offset 5) */
+ /* _mesa_function_pool[6804]: GenLists (offset 5) */
"i\0"
"glGenLists\0"
"\0"
- /* _mesa_function_pool[6720]: DepthRangef (will be remapped) */
+ /* _mesa_function_pool[6818]: DepthRangef (will be remapped) */
"ff\0"
"glDepthRangef\0"
"\0"
- /* _mesa_function_pool[6738]: GetMapAttribParameterivNV (dynamic) */
+ /* _mesa_function_pool[6836]: GetMapAttribParameterivNV (dynamic) */
"iiip\0"
"glGetMapAttribParameterivNV\0"
"\0"
- /* _mesa_function_pool[6772]: CreateShaderObjectARB (will be remapped) */
+ /* _mesa_function_pool[6870]: CreateShaderObjectARB (will be remapped) */
"i\0"
"glCreateShaderObjectARB\0"
"\0"
- /* _mesa_function_pool[6799]: GetSharpenTexFuncSGIS (dynamic) */
+ /* _mesa_function_pool[6897]: GetSharpenTexFuncSGIS (dynamic) */
"ip\0"
"glGetSharpenTexFuncSGIS\0"
"\0"
- /* _mesa_function_pool[6827]: BufferDataARB (will be remapped) */
+ /* _mesa_function_pool[6925]: BufferDataARB (will be remapped) */
"iipi\0"
"glBufferData\0"
"glBufferDataARB\0"
"\0"
- /* _mesa_function_pool[6862]: FlushVertexArrayRangeNV (will be remapped) */
+ /* _mesa_function_pool[6960]: FlushVertexArrayRangeNV (will be remapped) */
"\0"
"glFlushVertexArrayRangeNV\0"
"\0"
- /* _mesa_function_pool[6890]: MapGrid2d (offset 226) */
+ /* _mesa_function_pool[6988]: MapGrid2d (offset 226) */
"iddidd\0"
"glMapGrid2d\0"
"\0"
- /* _mesa_function_pool[6910]: MapGrid2f (offset 227) */
+ /* _mesa_function_pool[7008]: MapGrid2f (offset 227) */
"iffiff\0"
"glMapGrid2f\0"
"\0"
- /* _mesa_function_pool[6930]: SampleMapATI (will be remapped) */
+ /* _mesa_function_pool[7028]: SampleMapATI (will be remapped) */
"iii\0"
"glSampleMapATI\0"
"\0"
- /* _mesa_function_pool[6950]: VertexPointerEXT (will be remapped) */
+ /* _mesa_function_pool[7048]: VertexPointerEXT (will be remapped) */
"iiiip\0"
"glVertexPointerEXT\0"
"\0"
- /* _mesa_function_pool[6976]: GetTexFilterFuncSGIS (dynamic) */
+ /* _mesa_function_pool[7074]: GetTexFilterFuncSGIS (dynamic) */
"iip\0"
"glGetTexFilterFuncSGIS\0"
"\0"
- /* _mesa_function_pool[7004]: Scissor (offset 176) */
+ /* _mesa_function_pool[7102]: Scissor (offset 176) */
"iiii\0"
"glScissor\0"
"\0"
- /* _mesa_function_pool[7020]: Fogf (offset 153) */
+ /* _mesa_function_pool[7118]: Fogf (offset 153) */
"if\0"
"glFogf\0"
"\0"
- /* _mesa_function_pool[7031]: ReplacementCodeuiColor4ubVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[7129]: ReplacementCodeuiColor4ubVertex3fvSUN (dynamic) */
"ppp\0"
"glReplacementCodeuiColor4ubVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[7076]: TexSubImage1D (offset 332) */
+ /* _mesa_function_pool[7174]: TexSubImage1D (offset 332) */
"iiiiiip\0"
"glTexSubImage1D\0"
"glTexSubImage1DEXT\0"
"\0"
- /* _mesa_function_pool[7120]: VertexAttrib1sARB (will be remapped) */
+ /* _mesa_function_pool[7218]: VertexAttrib1sARB (will be remapped) */
"ii\0"
"glVertexAttrib1s\0"
"glVertexAttrib1sARB\0"
"\0"
- /* _mesa_function_pool[7161]: FenceSync (will be remapped) */
+ /* _mesa_function_pool[7259]: FenceSync (will be remapped) */
"ii\0"
"glFenceSync\0"
"\0"
- /* _mesa_function_pool[7177]: Color4usv (offset 40) */
+ /* _mesa_function_pool[7275]: Color4usv (offset 40) */
"p\0"
"glColor4usv\0"
"\0"
- /* _mesa_function_pool[7192]: Fogi (offset 155) */
+ /* _mesa_function_pool[7290]: Fogi (offset 155) */
"ii\0"
"glFogi\0"
"\0"
- /* _mesa_function_pool[7203]: DepthRange (offset 288) */
+ /* _mesa_function_pool[7301]: DepthRange (offset 288) */
"dd\0"
"glDepthRange\0"
"\0"
- /* _mesa_function_pool[7220]: RasterPos3iv (offset 75) */
+ /* _mesa_function_pool[7318]: RasterPos3iv (offset 75) */
"p\0"
"glRasterPos3iv\0"
"\0"
- /* _mesa_function_pool[7238]: FinalCombinerInputNV (will be remapped) */
+ /* _mesa_function_pool[7336]: FinalCombinerInputNV (will be remapped) */
"iiii\0"
"glFinalCombinerInputNV\0"
"\0"
- /* _mesa_function_pool[7267]: TexCoord2i (offset 106) */
+ /* _mesa_function_pool[7365]: TexCoord2i (offset 106) */
"ii\0"
"glTexCoord2i\0"
"\0"
- /* _mesa_function_pool[7284]: PixelMapfv (offset 251) */
+ /* _mesa_function_pool[7382]: PixelMapfv (offset 251) */
"iip\0"
"glPixelMapfv\0"
"\0"
- /* _mesa_function_pool[7302]: Color4ui (offset 37) */
+ /* _mesa_function_pool[7400]: Color4ui (offset 37) */
"iiii\0"
"glColor4ui\0"
"\0"
- /* _mesa_function_pool[7319]: RasterPos3s (offset 76) */
+ /* _mesa_function_pool[7417]: RasterPos3s (offset 76) */
"iii\0"
"glRasterPos3s\0"
"\0"
- /* _mesa_function_pool[7338]: Color3usv (offset 24) */
+ /* _mesa_function_pool[7436]: Color3usv (offset 24) */
"p\0"
"glColor3usv\0"
"\0"
- /* _mesa_function_pool[7353]: FlushRasterSGIX (dynamic) */
+ /* _mesa_function_pool[7451]: FlushRasterSGIX (dynamic) */
"\0"
"glFlushRasterSGIX\0"
"\0"
- /* _mesa_function_pool[7373]: TexCoord2f (offset 104) */
+ /* _mesa_function_pool[7471]: TexCoord2f (offset 104) */
"ff\0"
"glTexCoord2f\0"
"\0"
- /* _mesa_function_pool[7390]: ReplacementCodeuiTexCoord2fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[7488]: ReplacementCodeuiTexCoord2fVertex3fSUN (dynamic) */
"ifffff\0"
"glReplacementCodeuiTexCoord2fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[7439]: TexCoord2d (offset 102) */
+ /* _mesa_function_pool[7537]: TexCoord2d (offset 102) */
"dd\0"
"glTexCoord2d\0"
"\0"
- /* _mesa_function_pool[7456]: RasterPos3d (offset 70) */
+ /* _mesa_function_pool[7554]: RasterPos3d (offset 70) */
"ddd\0"
"glRasterPos3d\0"
"\0"
- /* _mesa_function_pool[7475]: RasterPos3f (offset 72) */
+ /* _mesa_function_pool[7573]: RasterPos3f (offset 72) */
"fff\0"
"glRasterPos3f\0"
"\0"
- /* _mesa_function_pool[7494]: Uniform1fARB (will be remapped) */
+ /* _mesa_function_pool[7592]: Uniform1fARB (will be remapped) */
"if\0"
"glUniform1f\0"
"glUniform1fARB\0"
"\0"
- /* _mesa_function_pool[7525]: AreTexturesResident (offset 322) */
+ /* _mesa_function_pool[7623]: AreTexturesResident (offset 322) */
"ipp\0"
"glAreTexturesResident\0"
"glAreTexturesResidentEXT\0"
"\0"
- /* _mesa_function_pool[7577]: TexCoord2s (offset 108) */
+ /* _mesa_function_pool[7675]: TexCoord2s (offset 108) */
"ii\0"
"glTexCoord2s\0"
"\0"
- /* _mesa_function_pool[7594]: StencilOpSeparate (will be remapped) */
+ /* _mesa_function_pool[7692]: StencilOpSeparate (will be remapped) */
"iiii\0"
"glStencilOpSeparate\0"
"glStencilOpSeparateATI\0"
"\0"
- /* _mesa_function_pool[7643]: ColorTableParameteriv (offset 341) */
+ /* _mesa_function_pool[7741]: ColorTableParameteriv (offset 341) */
"iip\0"
"glColorTableParameteriv\0"
"glColorTableParameterivSGI\0"
"\0"
- /* _mesa_function_pool[7699]: FogCoordPointerListIBM (dynamic) */
+ /* _mesa_function_pool[7797]: FogCoordPointerListIBM (dynamic) */
"iipi\0"
"glFogCoordPointerListIBM\0"
"\0"
- /* _mesa_function_pool[7730]: WindowPos3dMESA (will be remapped) */
+ /* _mesa_function_pool[7828]: WindowPos3dMESA (will be remapped) */
"ddd\0"
"glWindowPos3d\0"
"glWindowPos3dARB\0"
"glWindowPos3dMESA\0"
"\0"
- /* _mesa_function_pool[7784]: Color4us (offset 39) */
+ /* _mesa_function_pool[7882]: Color4us (offset 39) */
"iiii\0"
"glColor4us\0"
"\0"
- /* _mesa_function_pool[7801]: PointParameterfvEXT (will be remapped) */
+ /* _mesa_function_pool[7899]: PointParameterfvEXT (will be remapped) */
"ip\0"
"glPointParameterfv\0"
"glPointParameterfvARB\0"
"glPointParameterfvEXT\0"
"glPointParameterfvSGIS\0"
"\0"
- /* _mesa_function_pool[7891]: Color3bv (offset 10) */
+ /* _mesa_function_pool[7989]: Color3bv (offset 10) */
"p\0"
"glColor3bv\0"
"\0"
- /* _mesa_function_pool[7905]: WindowPos2fvMESA (will be remapped) */
+ /* _mesa_function_pool[8003]: WindowPos2fvMESA (will be remapped) */
"p\0"
"glWindowPos2fv\0"
"glWindowPos2fvARB\0"
"glWindowPos2fvMESA\0"
"\0"
- /* _mesa_function_pool[7960]: SecondaryColor3bvEXT (will be remapped) */
+ /* _mesa_function_pool[8058]: SecondaryColor3bvEXT (will be remapped) */
"p\0"
"glSecondaryColor3bv\0"
"glSecondaryColor3bvEXT\0"
"\0"
- /* _mesa_function_pool[8006]: VertexPointerListIBM (dynamic) */
+ /* _mesa_function_pool[8104]: VertexPointerListIBM (dynamic) */
"iiipi\0"
"glVertexPointerListIBM\0"
"\0"
- /* _mesa_function_pool[8036]: GetProgramLocalParameterfvARB (will be remapped) */
+ /* _mesa_function_pool[8134]: GetProgramLocalParameterfvARB (will be remapped) */
"iip\0"
"glGetProgramLocalParameterfvARB\0"
"\0"
- /* _mesa_function_pool[8073]: FragmentMaterialfSGIX (dynamic) */
+ /* _mesa_function_pool[8171]: FragmentMaterialfSGIX (dynamic) */
"iif\0"
"glFragmentMaterialfSGIX\0"
"\0"
- /* _mesa_function_pool[8102]: TexCoord2fNormal3fVertex3fSUN (dynamic) */
- "ffffffff\0"
- "glTexCoord2fNormal3fVertex3fSUN\0"
+ /* _mesa_function_pool[8200]: BindSampler (will be remapped) */
+ "ii\0"
+ "glBindSampler\0"
"\0"
- /* _mesa_function_pool[8144]: RenderbufferStorageEXT (will be remapped) */
+ /* _mesa_function_pool[8218]: RenderbufferStorageEXT (will be remapped) */
"iiii\0"
"glRenderbufferStorage\0"
"glRenderbufferStorageEXT\0"
"\0"
- /* _mesa_function_pool[8197]: IsFenceNV (will be remapped) */
+ /* _mesa_function_pool[8271]: IsFenceNV (will be remapped) */
"i\0"
"glIsFenceNV\0"
"\0"
- /* _mesa_function_pool[8212]: AttachObjectARB (will be remapped) */
+ /* _mesa_function_pool[8286]: AttachObjectARB (will be remapped) */
"ii\0"
"glAttachObjectARB\0"
"\0"
- /* _mesa_function_pool[8234]: GetFragmentLightivSGIX (dynamic) */
+ /* _mesa_function_pool[8308]: GetFragmentLightivSGIX (dynamic) */
"iip\0"
"glGetFragmentLightivSGIX\0"
"\0"
- /* _mesa_function_pool[8264]: UniformMatrix2fvARB (will be remapped) */
+ /* _mesa_function_pool[8338]: UniformMatrix2fvARB (will be remapped) */
"iiip\0"
"glUniformMatrix2fv\0"
"glUniformMatrix2fvARB\0"
"\0"
- /* _mesa_function_pool[8311]: MultiTexCoord2fARB (offset 386) */
+ /* _mesa_function_pool[8385]: MultiTexCoord2fARB (offset 386) */
"iff\0"
"glMultiTexCoord2f\0"
"glMultiTexCoord2fARB\0"
"\0"
- /* _mesa_function_pool[8355]: ColorTable (offset 339) */
+ /* _mesa_function_pool[8429]: ColorTable (offset 339) */
"iiiiip\0"
"glColorTable\0"
"glColorTableSGI\0"
"glColorTableEXT\0"
"\0"
- /* _mesa_function_pool[8408]: IndexPointer (offset 314) */
+ /* _mesa_function_pool[8482]: IndexPointer (offset 314) */
"iip\0"
"glIndexPointer\0"
"\0"
- /* _mesa_function_pool[8428]: Accum (offset 213) */
+ /* _mesa_function_pool[8502]: Accum (offset 213) */
"if\0"
"glAccum\0"
"\0"
- /* _mesa_function_pool[8440]: GetTexImage (offset 281) */
+ /* _mesa_function_pool[8514]: GetTexImage (offset 281) */
"iiiip\0"
"glGetTexImage\0"
"\0"
- /* _mesa_function_pool[8461]: MapControlPointsNV (dynamic) */
+ /* _mesa_function_pool[8535]: MapControlPointsNV (dynamic) */
"iiiiiiiip\0"
"glMapControlPointsNV\0"
"\0"
- /* _mesa_function_pool[8493]: ConvolutionFilter2D (offset 349) */
+ /* _mesa_function_pool[8567]: ConvolutionFilter2D (offset 349) */
"iiiiiip\0"
"glConvolutionFilter2D\0"
"glConvolutionFilter2DEXT\0"
"\0"
- /* _mesa_function_pool[8549]: Finish (offset 216) */
+ /* _mesa_function_pool[8623]: Finish (offset 216) */
"\0"
"glFinish\0"
"\0"
- /* _mesa_function_pool[8560]: MapParameterfvNV (dynamic) */
+ /* _mesa_function_pool[8634]: MapParameterfvNV (dynamic) */
"iip\0"
"glMapParameterfvNV\0"
"\0"
- /* _mesa_function_pool[8584]: ClearStencil (offset 207) */
+ /* _mesa_function_pool[8658]: ClearStencil (offset 207) */
"i\0"
"glClearStencil\0"
"\0"
- /* _mesa_function_pool[8602]: VertexAttrib3dvARB (will be remapped) */
+ /* _mesa_function_pool[8676]: VertexAttrib3dvARB (will be remapped) */
"ip\0"
"glVertexAttrib3dv\0"
"glVertexAttrib3dvARB\0"
"\0"
- /* _mesa_function_pool[8645]: Uniform4uivEXT (will be remapped) */
+ /* _mesa_function_pool[8719]: Uniform4uivEXT (will be remapped) */
"iip\0"
"glUniform4uivEXT\0"
"glUniform4uiv\0"
"\0"
- /* _mesa_function_pool[8681]: HintPGI (dynamic) */
+ /* _mesa_function_pool[8755]: HintPGI (dynamic) */
"ii\0"
"glHintPGI\0"
"\0"
- /* _mesa_function_pool[8695]: ConvolutionParameteriv (offset 353) */
+ /* _mesa_function_pool[8769]: ConvolutionParameteriv (offset 353) */
"iip\0"
"glConvolutionParameteriv\0"
"glConvolutionParameterivEXT\0"
"\0"
- /* _mesa_function_pool[8753]: Color4s (offset 33) */
+ /* _mesa_function_pool[8827]: Color4s (offset 33) */
"iiii\0"
"glColor4s\0"
"\0"
- /* _mesa_function_pool[8769]: InterleavedArrays (offset 317) */
+ /* _mesa_function_pool[8843]: InterleavedArrays (offset 317) */
"iip\0"
"glInterleavedArrays\0"
"\0"
- /* _mesa_function_pool[8794]: RasterPos2fv (offset 65) */
+ /* _mesa_function_pool[8868]: RasterPos2fv (offset 65) */
"p\0"
"glRasterPos2fv\0"
"\0"
- /* _mesa_function_pool[8812]: TexCoord1fv (offset 97) */
+ /* _mesa_function_pool[8886]: TexCoord1fv (offset 97) */
"p\0"
"glTexCoord1fv\0"
"\0"
- /* _mesa_function_pool[8829]: Vertex2d (offset 126) */
+ /* _mesa_function_pool[8903]: Vertex2d (offset 126) */
"dd\0"
"glVertex2d\0"
"\0"
- /* _mesa_function_pool[8844]: CullParameterdvEXT (dynamic) */
+ /* _mesa_function_pool[8918]: CullParameterdvEXT (dynamic) */
"ip\0"
"glCullParameterdvEXT\0"
"\0"
- /* _mesa_function_pool[8869]: ProgramNamedParameter4fNV (will be remapped) */
+ /* _mesa_function_pool[8943]: ProgramNamedParameter4fNV (will be remapped) */
"iipffff\0"
"glProgramNamedParameter4fNV\0"
"\0"
- /* _mesa_function_pool[8906]: Color3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[8980]: Color3fVertex3fSUN (dynamic) */
"ffffff\0"
"glColor3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[8935]: ProgramEnvParameter4fvARB (will be remapped) */
+ /* _mesa_function_pool[9009]: ProgramEnvParameter4fvARB (will be remapped) */
"iip\0"
"glProgramEnvParameter4fvARB\0"
"glProgramParameter4fvNV\0"
"\0"
- /* _mesa_function_pool[8992]: Color4i (offset 31) */
+ /* _mesa_function_pool[9066]: Color4i (offset 31) */
"iiii\0"
"glColor4i\0"
"\0"
- /* _mesa_function_pool[9008]: Color4f (offset 29) */
+ /* _mesa_function_pool[9082]: Color4f (offset 29) */
"ffff\0"
"glColor4f\0"
"\0"
- /* _mesa_function_pool[9024]: RasterPos4fv (offset 81) */
+ /* _mesa_function_pool[9098]: RasterPos4fv (offset 81) */
"p\0"
"glRasterPos4fv\0"
"\0"
- /* _mesa_function_pool[9042]: Color4d (offset 27) */
+ /* _mesa_function_pool[9116]: Color4d (offset 27) */
"dddd\0"
"glColor4d\0"
"\0"
- /* _mesa_function_pool[9058]: ClearIndex (offset 205) */
+ /* _mesa_function_pool[9132]: ClearIndex (offset 205) */
"f\0"
"glClearIndex\0"
"\0"
- /* _mesa_function_pool[9074]: Color4b (offset 25) */
+ /* _mesa_function_pool[9148]: Color4b (offset 25) */
"iiii\0"
"glColor4b\0"
"\0"
- /* _mesa_function_pool[9090]: LoadMatrixd (offset 292) */
+ /* _mesa_function_pool[9164]: LoadMatrixd (offset 292) */
"p\0"
"glLoadMatrixd\0"
"\0"
- /* _mesa_function_pool[9107]: FragmentLightModeliSGIX (dynamic) */
+ /* _mesa_function_pool[9181]: FragmentLightModeliSGIX (dynamic) */
"ii\0"
"glFragmentLightModeliSGIX\0"
"\0"
- /* _mesa_function_pool[9137]: RasterPos2dv (offset 63) */
+ /* _mesa_function_pool[9211]: RasterPos2dv (offset 63) */
"p\0"
"glRasterPos2dv\0"
"\0"
- /* _mesa_function_pool[9155]: ConvolutionParameterfv (offset 351) */
+ /* _mesa_function_pool[9229]: ConvolutionParameterfv (offset 351) */
"iip\0"
"glConvolutionParameterfv\0"
"glConvolutionParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[9213]: TbufferMask3DFX (dynamic) */
+ /* _mesa_function_pool[9287]: TbufferMask3DFX (dynamic) */
"i\0"
"glTbufferMask3DFX\0"
"\0"
- /* _mesa_function_pool[9234]: GetTexGendv (offset 278) */
+ /* _mesa_function_pool[9308]: GetTexGendv (offset 278) */
"iip\0"
"glGetTexGendv\0"
"\0"
- /* _mesa_function_pool[9253]: GetVertexAttribfvNV (will be remapped) */
+ /* _mesa_function_pool[9327]: GetVertexAttribfvNV (will be remapped) */
"iip\0"
"glGetVertexAttribfvNV\0"
"\0"
- /* _mesa_function_pool[9280]: BeginTransformFeedbackEXT (will be remapped) */
+ /* _mesa_function_pool[9354]: BeginTransformFeedbackEXT (will be remapped) */
"i\0"
"glBeginTransformFeedbackEXT\0"
"glBeginTransformFeedback\0"
"\0"
- /* _mesa_function_pool[9336]: LoadProgramNV (will be remapped) */
+ /* _mesa_function_pool[9410]: LoadProgramNV (will be remapped) */
"iiip\0"
"glLoadProgramNV\0"
"\0"
- /* _mesa_function_pool[9358]: WaitSync (will be remapped) */
+ /* _mesa_function_pool[9432]: WaitSync (will be remapped) */
"iii\0"
"glWaitSync\0"
"\0"
- /* _mesa_function_pool[9374]: EndList (offset 1) */
+ /* _mesa_function_pool[9448]: EndList (offset 1) */
"\0"
"glEndList\0"
"\0"
- /* _mesa_function_pool[9386]: VertexAttrib4fvNV (will be remapped) */
+ /* _mesa_function_pool[9460]: VertexAttrib4fvNV (will be remapped) */
"ip\0"
"glVertexAttrib4fvNV\0"
"\0"
- /* _mesa_function_pool[9410]: GetAttachedObjectsARB (will be remapped) */
+ /* _mesa_function_pool[9484]: GetAttachedObjectsARB (will be remapped) */
"iipp\0"
"glGetAttachedObjectsARB\0"
"\0"
- /* _mesa_function_pool[9440]: Uniform3fvARB (will be remapped) */
+ /* _mesa_function_pool[9514]: Uniform3fvARB (will be remapped) */
"iip\0"
"glUniform3fv\0"
"glUniform3fvARB\0"
"\0"
- /* _mesa_function_pool[9474]: EvalCoord1fv (offset 231) */
+ /* _mesa_function_pool[9548]: EvalCoord1fv (offset 231) */
"p\0"
"glEvalCoord1fv\0"
"\0"
- /* _mesa_function_pool[9492]: DrawRangeElements (offset 338) */
+ /* _mesa_function_pool[9566]: DrawRangeElements (offset 338) */
"iiiiip\0"
"glDrawRangeElements\0"
"glDrawRangeElementsEXT\0"
"\0"
- /* _mesa_function_pool[9543]: EvalMesh2 (offset 238) */
+ /* _mesa_function_pool[9617]: EvalMesh2 (offset 238) */
"iiiii\0"
"glEvalMesh2\0"
"\0"
- /* _mesa_function_pool[9562]: Vertex4fv (offset 145) */
+ /* _mesa_function_pool[9636]: Vertex4fv (offset 145) */
"p\0"
"glVertex4fv\0"
"\0"
- /* _mesa_function_pool[9577]: GenTransformFeedbacks (will be remapped) */
+ /* _mesa_function_pool[9651]: GenTransformFeedbacks (will be remapped) */
"ip\0"
"glGenTransformFeedbacks\0"
"\0"
- /* _mesa_function_pool[9605]: SpriteParameterfvSGIX (dynamic) */
+ /* _mesa_function_pool[9679]: SpriteParameterfvSGIX (dynamic) */
"ip\0"
"glSpriteParameterfvSGIX\0"
"\0"
- /* _mesa_function_pool[9633]: CheckFramebufferStatusEXT (will be remapped) */
+ /* _mesa_function_pool[9707]: CheckFramebufferStatusEXT (will be remapped) */
"i\0"
"glCheckFramebufferStatus\0"
"glCheckFramebufferStatusEXT\0"
"\0"
- /* _mesa_function_pool[9689]: GlobalAlphaFactoruiSUN (dynamic) */
+ /* _mesa_function_pool[9763]: GlobalAlphaFactoruiSUN (dynamic) */
"i\0"
"glGlobalAlphaFactoruiSUN\0"
"\0"
- /* _mesa_function_pool[9717]: GetHandleARB (will be remapped) */
+ /* _mesa_function_pool[9791]: GetHandleARB (will be remapped) */
"i\0"
"glGetHandleARB\0"
"\0"
- /* _mesa_function_pool[9735]: GetVertexAttribivARB (will be remapped) */
+ /* _mesa_function_pool[9809]: GetVertexAttribivARB (will be remapped) */
"iip\0"
"glGetVertexAttribiv\0"
"glGetVertexAttribivARB\0"
"\0"
- /* _mesa_function_pool[9783]: BlendFunciARB (will be remapped) */
+ /* _mesa_function_pool[9857]: BlendFunciARB (will be remapped) */
"iii\0"
"glBlendFunciARB\0"
"\0"
- /* _mesa_function_pool[9804]: GetCombinerInputParameterfvNV (will be remapped) */
+ /* _mesa_function_pool[9878]: GetCombinerInputParameterfvNV (will be remapped) */
"iiiip\0"
"glGetCombinerInputParameterfvNV\0"
"\0"
- /* _mesa_function_pool[9843]: GetTexParameterIivEXT (will be remapped) */
+ /* _mesa_function_pool[9917]: GetTexParameterIivEXT (will be remapped) */
"iip\0"
"glGetTexParameterIivEXT\0"
"glGetTexParameterIiv\0"
"\0"
- /* _mesa_function_pool[9893]: CreateProgram (will be remapped) */
+ /* _mesa_function_pool[9967]: CreateProgram (will be remapped) */
"\0"
"glCreateProgram\0"
"\0"
- /* _mesa_function_pool[9911]: LoadTransposeMatrixdARB (will be remapped) */
+ /* _mesa_function_pool[9985]: LoadTransposeMatrixdARB (will be remapped) */
"p\0"
"glLoadTransposeMatrixd\0"
"glLoadTransposeMatrixdARB\0"
"\0"
- /* _mesa_function_pool[9963]: ReleaseShaderCompiler (will be remapped) */
+ /* _mesa_function_pool[10037]: ReleaseShaderCompiler (will be remapped) */
"\0"
"glReleaseShaderCompiler\0"
"\0"
- /* _mesa_function_pool[9989]: GetMinmax (offset 364) */
+ /* _mesa_function_pool[10063]: GetMinmax (offset 364) */
"iiiip\0"
"glGetMinmax\0"
"glGetMinmaxEXT\0"
"\0"
- /* _mesa_function_pool[10023]: StencilFuncSeparate (will be remapped) */
+ /* _mesa_function_pool[10097]: StencilFuncSeparate (will be remapped) */
"iiii\0"
"glStencilFuncSeparate\0"
"\0"
- /* _mesa_function_pool[10051]: SecondaryColor3sEXT (will be remapped) */
+ /* _mesa_function_pool[10125]: SecondaryColor3sEXT (will be remapped) */
"iii\0"
"glSecondaryColor3s\0"
"glSecondaryColor3sEXT\0"
"\0"
- /* _mesa_function_pool[10097]: Color3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[10171]: Color3fVertex3fvSUN (dynamic) */
"pp\0"
"glColor3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[10123]: GetInteger64i_v (will be remapped) */
+ /* _mesa_function_pool[10197]: GetInteger64i_v (will be remapped) */
"iip\0"
"glGetInteger64i_v\0"
"\0"
- /* _mesa_function_pool[10146]: Normal3fv (offset 57) */
+ /* _mesa_function_pool[10220]: Normal3fv (offset 57) */
"p\0"
"glNormal3fv\0"
"\0"
- /* _mesa_function_pool[10161]: GlobalAlphaFactorbSUN (dynamic) */
+ /* _mesa_function_pool[10235]: GlobalAlphaFactorbSUN (dynamic) */
"i\0"
"glGlobalAlphaFactorbSUN\0"
"\0"
- /* _mesa_function_pool[10188]: Color3us (offset 23) */
+ /* _mesa_function_pool[10262]: Color3us (offset 23) */
"iii\0"
"glColor3us\0"
"\0"
- /* _mesa_function_pool[10204]: ImageTransformParameterfvHP (dynamic) */
+ /* _mesa_function_pool[10278]: ImageTransformParameterfvHP (dynamic) */
"iip\0"
"glImageTransformParameterfvHP\0"
"\0"
- /* _mesa_function_pool[10239]: VertexAttrib4ivARB (will be remapped) */
+ /* _mesa_function_pool[10313]: VertexAttrib4ivARB (will be remapped) */
"ip\0"
"glVertexAttrib4iv\0"
"glVertexAttrib4ivARB\0"
"\0"
- /* _mesa_function_pool[10282]: End (offset 43) */
+ /* _mesa_function_pool[10356]: End (offset 43) */
"\0"
"glEnd\0"
"\0"
- /* _mesa_function_pool[10290]: VertexAttrib3fNV (will be remapped) */
+ /* _mesa_function_pool[10364]: VertexAttrib3fNV (will be remapped) */
"ifff\0"
"glVertexAttrib3fNV\0"
"\0"
- /* _mesa_function_pool[10315]: VertexAttribs2dvNV (will be remapped) */
+ /* _mesa_function_pool[10389]: VertexAttribs2dvNV (will be remapped) */
"iip\0"
"glVertexAttribs2dvNV\0"
"\0"
- /* _mesa_function_pool[10341]: GetQueryObjectui64vEXT (will be remapped) */
+ /* _mesa_function_pool[10415]: GetQueryObjectui64vEXT (will be remapped) */
"iip\0"
"glGetQueryObjectui64vEXT\0"
"\0"
- /* _mesa_function_pool[10371]: MultiTexCoord3fvARB (offset 395) */
+ /* _mesa_function_pool[10445]: MultiTexCoord3fvARB (offset 395) */
"ip\0"
"glMultiTexCoord3fv\0"
"glMultiTexCoord3fvARB\0"
"\0"
- /* _mesa_function_pool[10416]: SecondaryColor3dEXT (will be remapped) */
+ /* _mesa_function_pool[10490]: SecondaryColor3dEXT (will be remapped) */
"ddd\0"
"glSecondaryColor3d\0"
"glSecondaryColor3dEXT\0"
"\0"
- /* _mesa_function_pool[10462]: Color3ub (offset 19) */
+ /* _mesa_function_pool[10536]: Color3ub (offset 19) */
"iii\0"
"glColor3ub\0"
"\0"
- /* _mesa_function_pool[10478]: GetProgramParameterfvNV (will be remapped) */
+ /* _mesa_function_pool[10552]: GetProgramParameterfvNV (will be remapped) */
"iiip\0"
"glGetProgramParameterfvNV\0"
"\0"
- /* _mesa_function_pool[10510]: TangentPointerEXT (dynamic) */
+ /* _mesa_function_pool[10584]: TangentPointerEXT (dynamic) */
"iip\0"
"glTangentPointerEXT\0"
"\0"
- /* _mesa_function_pool[10535]: Color4fNormal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[10609]: Color4fNormal3fVertex3fvSUN (dynamic) */
"ppp\0"
"glColor4fNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[10570]: GetInstrumentsSGIX (dynamic) */
+ /* _mesa_function_pool[10644]: GetInstrumentsSGIX (dynamic) */
"\0"
"glGetInstrumentsSGIX\0"
"\0"
- /* _mesa_function_pool[10593]: GetUniformuivEXT (will be remapped) */
+ /* _mesa_function_pool[10667]: GetUniformuivEXT (will be remapped) */
"iip\0"
"glGetUniformuivEXT\0"
"glGetUniformuiv\0"
"\0"
- /* _mesa_function_pool[10633]: Color3ui (offset 21) */
+ /* _mesa_function_pool[10707]: Color3ui (offset 21) */
"iii\0"
"glColor3ui\0"
"\0"
- /* _mesa_function_pool[10649]: EvalMapsNV (dynamic) */
+ /* _mesa_function_pool[10723]: EvalMapsNV (dynamic) */
"ii\0"
"glEvalMapsNV\0"
"\0"
- /* _mesa_function_pool[10666]: TexSubImage2D (offset 333) */
+ /* _mesa_function_pool[10740]: TexSubImage2D (offset 333) */
"iiiiiiiip\0"
"glTexSubImage2D\0"
"glTexSubImage2DEXT\0"
"\0"
- /* _mesa_function_pool[10712]: FragmentLightivSGIX (dynamic) */
+ /* _mesa_function_pool[10786]: FragmentLightivSGIX (dynamic) */
"iip\0"
"glFragmentLightivSGIX\0"
"\0"
- /* _mesa_function_pool[10739]: GetTexParameterPointervAPPLE (will be remapped) */
+ /* _mesa_function_pool[10813]: GetTexParameterPointervAPPLE (will be remapped) */
"iip\0"
"glGetTexParameterPointervAPPLE\0"
"\0"
- /* _mesa_function_pool[10775]: TexGenfv (offset 191) */
+ /* _mesa_function_pool[10849]: TexGenfv (offset 191) */
"iip\0"
"glTexGenfv\0"
"\0"
- /* _mesa_function_pool[10791]: GetTransformFeedbackVaryingEXT (will be remapped) */
+ /* _mesa_function_pool[10865]: GetTransformFeedbackVaryingEXT (will be remapped) */
"iiipppp\0"
"glGetTransformFeedbackVaryingEXT\0"
"glGetTransformFeedbackVarying\0"
"\0"
- /* _mesa_function_pool[10863]: VertexAttrib4bvARB (will be remapped) */
+ /* _mesa_function_pool[10937]: VertexAttrib4bvARB (will be remapped) */
"ip\0"
"glVertexAttrib4bv\0"
"glVertexAttrib4bvARB\0"
"\0"
- /* _mesa_function_pool[10906]: ShaderBinary (will be remapped) */
+ /* _mesa_function_pool[10980]: ShaderBinary (will be remapped) */
"ipipi\0"
"glShaderBinary\0"
"\0"
- /* _mesa_function_pool[10928]: GetIntegerIndexedvEXT (will be remapped) */
+ /* _mesa_function_pool[11002]: GetIntegerIndexedvEXT (will be remapped) */
"iip\0"
"glGetIntegerIndexedvEXT\0"
"glGetIntegeri_v\0"
"\0"
- /* _mesa_function_pool[10973]: MultiTexCoord4sARB (offset 406) */
+ /* _mesa_function_pool[11047]: MultiTexCoord4sARB (offset 406) */
"iiiii\0"
"glMultiTexCoord4s\0"
"glMultiTexCoord4sARB\0"
"\0"
- /* _mesa_function_pool[11019]: GetFragmentMaterialivSGIX (dynamic) */
+ /* _mesa_function_pool[11093]: GetFragmentMaterialivSGIX (dynamic) */
"iip\0"
"glGetFragmentMaterialivSGIX\0"
"\0"
- /* _mesa_function_pool[11052]: WindowPos4dMESA (will be remapped) */
+ /* _mesa_function_pool[11126]: WindowPos4dMESA (will be remapped) */
"dddd\0"
"glWindowPos4dMESA\0"
"\0"
- /* _mesa_function_pool[11076]: WeightPointerARB (dynamic) */
+ /* _mesa_function_pool[11150]: WeightPointerARB (dynamic) */
"iiip\0"
"glWeightPointerARB\0"
"\0"
- /* _mesa_function_pool[11101]: WindowPos2dMESA (will be remapped) */
+ /* _mesa_function_pool[11175]: WindowPos2dMESA (will be remapped) */
"dd\0"
"glWindowPos2d\0"
"glWindowPos2dARB\0"
"glWindowPos2dMESA\0"
"\0"
- /* _mesa_function_pool[11154]: FramebufferTexture3DEXT (will be remapped) */
+ /* _mesa_function_pool[11228]: FramebufferTexture3DEXT (will be remapped) */
"iiiiii\0"
"glFramebufferTexture3D\0"
"glFramebufferTexture3DEXT\0"
"\0"
- /* _mesa_function_pool[11211]: BlendEquation (offset 337) */
+ /* _mesa_function_pool[11285]: BlendEquation (offset 337) */
"i\0"
"glBlendEquation\0"
"glBlendEquationEXT\0"
"\0"
- /* _mesa_function_pool[11249]: VertexAttrib3dNV (will be remapped) */
+ /* _mesa_function_pool[11323]: VertexAttrib3dNV (will be remapped) */
"iddd\0"
"glVertexAttrib3dNV\0"
"\0"
- /* _mesa_function_pool[11274]: VertexAttrib3dARB (will be remapped) */
+ /* _mesa_function_pool[11348]: VertexAttrib3dARB (will be remapped) */
"iddd\0"
"glVertexAttrib3d\0"
"glVertexAttrib3dARB\0"
"\0"
- /* _mesa_function_pool[11317]: VertexAttribI4usvEXT (will be remapped) */
+ /* _mesa_function_pool[11391]: VertexAttribI4usvEXT (will be remapped) */
"ip\0"
"glVertexAttribI4usvEXT\0"
"glVertexAttribI4usv\0"
"\0"
- /* _mesa_function_pool[11364]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[11438]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */
"ppppp\0"
"glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[11428]: VertexAttrib4fARB (will be remapped) */
+ /* _mesa_function_pool[11502]: VertexAttrib4fARB (will be remapped) */
"iffff\0"
"glVertexAttrib4f\0"
"glVertexAttrib4fARB\0"
"\0"
- /* _mesa_function_pool[11472]: GetError (offset 261) */
+ /* _mesa_function_pool[11546]: GetError (offset 261) */
"\0"
"glGetError\0"
"\0"
- /* _mesa_function_pool[11485]: IndexFuncEXT (dynamic) */
+ /* _mesa_function_pool[11559]: IndexFuncEXT (dynamic) */
"if\0"
"glIndexFuncEXT\0"
"\0"
- /* _mesa_function_pool[11504]: TexCoord3dv (offset 111) */
+ /* _mesa_function_pool[11578]: TexCoord3dv (offset 111) */
"p\0"
"glTexCoord3dv\0"
"\0"
- /* _mesa_function_pool[11521]: Indexdv (offset 45) */
+ /* _mesa_function_pool[11595]: Indexdv (offset 45) */
"p\0"
"glIndexdv\0"
"\0"
- /* _mesa_function_pool[11534]: FramebufferTexture2DEXT (will be remapped) */
+ /* _mesa_function_pool[11608]: FramebufferTexture2DEXT (will be remapped) */
"iiiii\0"
"glFramebufferTexture2D\0"
"glFramebufferTexture2DEXT\0"
"\0"
- /* _mesa_function_pool[11590]: Normal3s (offset 60) */
+ /* _mesa_function_pool[11664]: Normal3s (offset 60) */
"iii\0"
"glNormal3s\0"
"\0"
- /* _mesa_function_pool[11606]: GetObjectParameterivAPPLE (will be remapped) */
+ /* _mesa_function_pool[11680]: GetObjectParameterivAPPLE (will be remapped) */
"iiip\0"
"glGetObjectParameterivAPPLE\0"
"\0"
- /* _mesa_function_pool[11640]: PushName (offset 201) */
+ /* _mesa_function_pool[11714]: PushName (offset 201) */
"i\0"
"glPushName\0"
"\0"
- /* _mesa_function_pool[11654]: MultiTexCoord2dvARB (offset 385) */
+ /* _mesa_function_pool[11728]: MultiTexCoord2dvARB (offset 385) */
"ip\0"
"glMultiTexCoord2dv\0"
"glMultiTexCoord2dvARB\0"
"\0"
- /* _mesa_function_pool[11699]: CullParameterfvEXT (dynamic) */
+ /* _mesa_function_pool[11773]: CullParameterfvEXT (dynamic) */
"ip\0"
"glCullParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[11724]: Normal3i (offset 58) */
+ /* _mesa_function_pool[11798]: Normal3i (offset 58) */
"iii\0"
"glNormal3i\0"
"\0"
- /* _mesa_function_pool[11740]: ProgramNamedParameter4fvNV (will be remapped) */
+ /* _mesa_function_pool[11814]: ProgramNamedParameter4fvNV (will be remapped) */
"iipp\0"
"glProgramNamedParameter4fvNV\0"
"\0"
- /* _mesa_function_pool[11775]: SecondaryColorPointerEXT (will be remapped) */
+ /* _mesa_function_pool[11849]: SecondaryColorPointerEXT (will be remapped) */
"iiip\0"
"glSecondaryColorPointer\0"
"glSecondaryColorPointerEXT\0"
"\0"
- /* _mesa_function_pool[11832]: VertexAttrib4fvARB (will be remapped) */
+ /* _mesa_function_pool[11906]: VertexAttrib4fvARB (will be remapped) */
"ip\0"
"glVertexAttrib4fv\0"
"glVertexAttrib4fvARB\0"
"\0"
- /* _mesa_function_pool[11875]: ColorPointerListIBM (dynamic) */
- "iiipi\0"
- "glColorPointerListIBM\0"
+ /* _mesa_function_pool[11949]: PixelTexGenSGIX (will be remapped) */
+ "i\0"
+ "glPixelTexGenSGIX\0"
"\0"
- /* _mesa_function_pool[11904]: GetActiveUniformARB (will be remapped) */
+ /* _mesa_function_pool[11970]: GetActiveUniformARB (will be remapped) */
"iiipppp\0"
"glGetActiveUniform\0"
"glGetActiveUniformARB\0"
"\0"
- /* _mesa_function_pool[11954]: ImageTransformParameteriHP (dynamic) */
+ /* _mesa_function_pool[12020]: ImageTransformParameteriHP (dynamic) */
"iii\0"
"glImageTransformParameteriHP\0"
"\0"
- /* _mesa_function_pool[11988]: Normal3b (offset 52) */
+ /* _mesa_function_pool[12054]: Normal3b (offset 52) */
"iii\0"
"glNormal3b\0"
"\0"
- /* _mesa_function_pool[12004]: Normal3d (offset 54) */
+ /* _mesa_function_pool[12070]: Normal3d (offset 54) */
"ddd\0"
"glNormal3d\0"
"\0"
- /* _mesa_function_pool[12020]: Uniform1uiEXT (will be remapped) */
+ /* _mesa_function_pool[12086]: Uniform1uiEXT (will be remapped) */
"ii\0"
"glUniform1uiEXT\0"
"glUniform1ui\0"
"\0"
- /* _mesa_function_pool[12053]: Normal3f (offset 56) */
+ /* _mesa_function_pool[12119]: Normal3f (offset 56) */
"fff\0"
"glNormal3f\0"
"\0"
- /* _mesa_function_pool[12069]: MultiTexCoord1svARB (offset 383) */
+ /* _mesa_function_pool[12135]: MultiTexCoord1svARB (offset 383) */
"ip\0"
"glMultiTexCoord1sv\0"
"glMultiTexCoord1svARB\0"
"\0"
- /* _mesa_function_pool[12114]: Indexi (offset 48) */
+ /* _mesa_function_pool[12180]: Indexi (offset 48) */
"i\0"
"glIndexi\0"
"\0"
- /* _mesa_function_pool[12126]: EGLImageTargetTexture2DOES (will be remapped) */
+ /* _mesa_function_pool[12192]: EGLImageTargetTexture2DOES (will be remapped) */
"ip\0"
"glEGLImageTargetTexture2DOES\0"
"\0"
- /* _mesa_function_pool[12159]: EndQueryARB (will be remapped) */
+ /* _mesa_function_pool[12225]: EndQueryARB (will be remapped) */
"i\0"
"glEndQuery\0"
"glEndQueryARB\0"
"\0"
- /* _mesa_function_pool[12187]: DeleteFencesNV (will be remapped) */
+ /* _mesa_function_pool[12253]: DeleteFencesNV (will be remapped) */
"ip\0"
"glDeleteFencesNV\0"
"\0"
- /* _mesa_function_pool[12208]: DeformationMap3dSGIX (dynamic) */
- "iddiiddiiddiip\0"
- "glDeformationMap3dSGIX\0"
+ /* _mesa_function_pool[12274]: ColorPointerListIBM (dynamic) */
+ "iiipi\0"
+ "glColorPointerListIBM\0"
"\0"
- /* _mesa_function_pool[12247]: BindBufferRangeEXT (will be remapped) */
+ /* _mesa_function_pool[12303]: BindBufferRangeEXT (will be remapped) */
"iiiii\0"
"glBindBufferRangeEXT\0"
"glBindBufferRange\0"
"\0"
- /* _mesa_function_pool[12293]: DepthMask (offset 211) */
+ /* _mesa_function_pool[12349]: DepthMask (offset 211) */
"i\0"
"glDepthMask\0"
"\0"
- /* _mesa_function_pool[12308]: IsShader (will be remapped) */
+ /* _mesa_function_pool[12364]: IsShader (will be remapped) */
"i\0"
"glIsShader\0"
"\0"
- /* _mesa_function_pool[12322]: Indexf (offset 46) */
+ /* _mesa_function_pool[12378]: Indexf (offset 46) */
"f\0"
"glIndexf\0"
"\0"
- /* _mesa_function_pool[12334]: GetImageTransformParameterivHP (dynamic) */
+ /* _mesa_function_pool[12390]: GetImageTransformParameterivHP (dynamic) */
"iip\0"
"glGetImageTransformParameterivHP\0"
"\0"
- /* _mesa_function_pool[12372]: Indexd (offset 44) */
+ /* _mesa_function_pool[12428]: Indexd (offset 44) */
"d\0"
"glIndexd\0"
"\0"
- /* _mesa_function_pool[12384]: GetMaterialiv (offset 270) */
+ /* _mesa_function_pool[12440]: GetMaterialiv (offset 270) */
"iip\0"
"glGetMaterialiv\0"
"\0"
- /* _mesa_function_pool[12405]: StencilOp (offset 244) */
+ /* _mesa_function_pool[12461]: StencilOp (offset 244) */
"iii\0"
"glStencilOp\0"
"\0"
- /* _mesa_function_pool[12422]: WindowPos4ivMESA (will be remapped) */
+ /* _mesa_function_pool[12478]: WindowPos4ivMESA (will be remapped) */
"p\0"
"glWindowPos4ivMESA\0"
"\0"
- /* _mesa_function_pool[12444]: FramebufferTextureLayer (dynamic) */
+ /* _mesa_function_pool[12500]: FramebufferTextureLayer (dynamic) */
"iiiii\0"
"glFramebufferTextureLayerARB\0"
"\0"
- /* _mesa_function_pool[12480]: MultiTexCoord3svARB (offset 399) */
+ /* _mesa_function_pool[12536]: MultiTexCoord3svARB (offset 399) */
"ip\0"
"glMultiTexCoord3sv\0"
"glMultiTexCoord3svARB\0"
"\0"
- /* _mesa_function_pool[12525]: TexEnvfv (offset 185) */
+ /* _mesa_function_pool[12581]: TexEnvfv (offset 185) */
"iip\0"
"glTexEnvfv\0"
"\0"
- /* _mesa_function_pool[12541]: MultiTexCoord4iARB (offset 404) */
+ /* _mesa_function_pool[12597]: MultiTexCoord4iARB (offset 404) */
"iiiii\0"
"glMultiTexCoord4i\0"
"glMultiTexCoord4iARB\0"
"\0"
- /* _mesa_function_pool[12587]: Indexs (offset 50) */
+ /* _mesa_function_pool[12643]: Indexs (offset 50) */
"i\0"
"glIndexs\0"
"\0"
- /* _mesa_function_pool[12599]: Binormal3ivEXT (dynamic) */
+ /* _mesa_function_pool[12655]: Binormal3ivEXT (dynamic) */
"p\0"
"glBinormal3ivEXT\0"
"\0"
- /* _mesa_function_pool[12619]: ResizeBuffersMESA (will be remapped) */
+ /* _mesa_function_pool[12675]: ResizeBuffersMESA (will be remapped) */
"\0"
"glResizeBuffersMESA\0"
"\0"
- /* _mesa_function_pool[12641]: BlendFuncSeparateiARB (will be remapped) */
+ /* _mesa_function_pool[12697]: BlendFuncSeparateiARB (will be remapped) */
"iiiii\0"
"glBlendFuncSeparateiARB\0"
"\0"
- /* _mesa_function_pool[12672]: GetUniformivARB (will be remapped) */
+ /* _mesa_function_pool[12728]: GetUniformivARB (will be remapped) */
"iip\0"
"glGetUniformiv\0"
"glGetUniformivARB\0"
"\0"
- /* _mesa_function_pool[12710]: PixelTexGenParameteriSGIS (will be remapped) */
+ /* _mesa_function_pool[12766]: PixelTexGenParameteriSGIS (will be remapped) */
"ii\0"
"glPixelTexGenParameteriSGIS\0"
"\0"
- /* _mesa_function_pool[12742]: VertexPointervINTEL (dynamic) */
+ /* _mesa_function_pool[12798]: VertexPointervINTEL (dynamic) */
"iip\0"
"glVertexPointervINTEL\0"
"\0"
- /* _mesa_function_pool[12769]: Vertex2i (offset 130) */
+ /* _mesa_function_pool[12825]: Vertex2i (offset 130) */
"ii\0"
"glVertex2i\0"
"\0"
- /* _mesa_function_pool[12784]: LoadMatrixf (offset 291) */
+ /* _mesa_function_pool[12840]: LoadMatrixf (offset 291) */
"p\0"
"glLoadMatrixf\0"
"\0"
- /* _mesa_function_pool[12801]: VertexAttribI1uivEXT (will be remapped) */
+ /* _mesa_function_pool[12857]: VertexAttribI1uivEXT (will be remapped) */
"ip\0"
"glVertexAttribI1uivEXT\0"
"glVertexAttribI1uiv\0"
"\0"
- /* _mesa_function_pool[12848]: Vertex2f (offset 128) */
+ /* _mesa_function_pool[12904]: Vertex2f (offset 128) */
"ff\0"
"glVertex2f\0"
"\0"
- /* _mesa_function_pool[12863]: ReplacementCodeuiColor4fNormal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[12919]: ReplacementCodeuiColor4fNormal3fVertex3fvSUN (dynamic) */
"pppp\0"
"glReplacementCodeuiColor4fNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[12916]: Color4bv (offset 26) */
+ /* _mesa_function_pool[12972]: Color4bv (offset 26) */
"p\0"
"glColor4bv\0"
"\0"
- /* _mesa_function_pool[12930]: VertexPointer (offset 321) */
+ /* _mesa_function_pool[12986]: VertexPointer (offset 321) */
"iiip\0"
"glVertexPointer\0"
"\0"
- /* _mesa_function_pool[12952]: SecondaryColor3uiEXT (will be remapped) */
+ /* _mesa_function_pool[13008]: SecondaryColor3uiEXT (will be remapped) */
"iii\0"
"glSecondaryColor3ui\0"
"glSecondaryColor3uiEXT\0"
"\0"
- /* _mesa_function_pool[13000]: StartInstrumentsSGIX (dynamic) */
+ /* _mesa_function_pool[13056]: StartInstrumentsSGIX (dynamic) */
"\0"
"glStartInstrumentsSGIX\0"
"\0"
- /* _mesa_function_pool[13025]: SecondaryColor3usvEXT (will be remapped) */
+ /* _mesa_function_pool[13081]: SecondaryColor3usvEXT (will be remapped) */
"p\0"
"glSecondaryColor3usv\0"
"glSecondaryColor3usvEXT\0"
"\0"
- /* _mesa_function_pool[13073]: VertexAttrib2fvNV (will be remapped) */
+ /* _mesa_function_pool[13129]: VertexAttrib2fvNV (will be remapped) */
"ip\0"
"glVertexAttrib2fvNV\0"
"\0"
- /* _mesa_function_pool[13097]: ProgramLocalParameter4dvARB (will be remapped) */
+ /* _mesa_function_pool[13153]: ProgramLocalParameter4dvARB (will be remapped) */
"iip\0"
"glProgramLocalParameter4dvARB\0"
"\0"
- /* _mesa_function_pool[13132]: DeleteLists (offset 4) */
+ /* _mesa_function_pool[13188]: DeleteLists (offset 4) */
"ii\0"
"glDeleteLists\0"
"\0"
- /* _mesa_function_pool[13150]: LogicOp (offset 242) */
+ /* _mesa_function_pool[13206]: LogicOp (offset 242) */
"i\0"
"glLogicOp\0"
"\0"
- /* _mesa_function_pool[13163]: MatrixIndexuivARB (dynamic) */
+ /* _mesa_function_pool[13219]: MatrixIndexuivARB (dynamic) */
"ip\0"
"glMatrixIndexuivARB\0"
"\0"
- /* _mesa_function_pool[13187]: Vertex2s (offset 132) */
+ /* _mesa_function_pool[13243]: Vertex2s (offset 132) */
"ii\0"
"glVertex2s\0"
"\0"
- /* _mesa_function_pool[13202]: RenderbufferStorageMultisample (will be remapped) */
+ /* _mesa_function_pool[13258]: RenderbufferStorageMultisample (will be remapped) */
"iiiii\0"
"glRenderbufferStorageMultisample\0"
"glRenderbufferStorageMultisampleEXT\0"
"\0"
- /* _mesa_function_pool[13278]: TexCoord4fv (offset 121) */
+ /* _mesa_function_pool[13334]: TexCoord4fv (offset 121) */
"p\0"
"glTexCoord4fv\0"
"\0"
- /* _mesa_function_pool[13295]: Tangent3sEXT (dynamic) */
+ /* _mesa_function_pool[13351]: Tangent3sEXT (dynamic) */
"iii\0"
"glTangent3sEXT\0"
"\0"
- /* _mesa_function_pool[13315]: GlobalAlphaFactorfSUN (dynamic) */
+ /* _mesa_function_pool[13371]: GlobalAlphaFactorfSUN (dynamic) */
"f\0"
"glGlobalAlphaFactorfSUN\0"
"\0"
- /* _mesa_function_pool[13342]: MultiTexCoord3iARB (offset 396) */
+ /* _mesa_function_pool[13398]: MultiTexCoord3iARB (offset 396) */
"iiii\0"
"glMultiTexCoord3i\0"
"glMultiTexCoord3iARB\0"
"\0"
- /* _mesa_function_pool[13387]: IsProgram (will be remapped) */
+ /* _mesa_function_pool[13443]: IsProgram (will be remapped) */
"i\0"
"glIsProgram\0"
"\0"
- /* _mesa_function_pool[13402]: TexCoordPointerListIBM (dynamic) */
+ /* _mesa_function_pool[13458]: TexCoordPointerListIBM (dynamic) */
"iiipi\0"
"glTexCoordPointerListIBM\0"
"\0"
- /* _mesa_function_pool[13434]: VertexAttribI4svEXT (will be remapped) */
+ /* _mesa_function_pool[13490]: VertexAttribI4svEXT (will be remapped) */
"ip\0"
"glVertexAttribI4svEXT\0"
"glVertexAttribI4sv\0"
"\0"
- /* _mesa_function_pool[13479]: GlobalAlphaFactorusSUN (dynamic) */
+ /* _mesa_function_pool[13535]: GlobalAlphaFactorusSUN (dynamic) */
"i\0"
"glGlobalAlphaFactorusSUN\0"
"\0"
- /* _mesa_function_pool[13507]: VertexAttrib2dvNV (will be remapped) */
+ /* _mesa_function_pool[13563]: VertexAttrib2dvNV (will be remapped) */
"ip\0"
"glVertexAttrib2dvNV\0"
"\0"
- /* _mesa_function_pool[13531]: FramebufferRenderbufferEXT (will be remapped) */
+ /* _mesa_function_pool[13587]: FramebufferRenderbufferEXT (will be remapped) */
"iiii\0"
"glFramebufferRenderbuffer\0"
"glFramebufferRenderbufferEXT\0"
"\0"
- /* _mesa_function_pool[13592]: ClearBufferuiv (will be remapped) */
+ /* _mesa_function_pool[13648]: ClearBufferuiv (will be remapped) */
"iip\0"
"glClearBufferuiv\0"
"\0"
- /* _mesa_function_pool[13614]: VertexAttrib1dvNV (will be remapped) */
+ /* _mesa_function_pool[13670]: VertexAttrib1dvNV (will be remapped) */
"ip\0"
"glVertexAttrib1dvNV\0"
"\0"
- /* _mesa_function_pool[13638]: GenTextures (offset 328) */
+ /* _mesa_function_pool[13694]: GenTextures (offset 328) */
"ip\0"
"glGenTextures\0"
"glGenTexturesEXT\0"
"\0"
- /* _mesa_function_pool[13673]: FramebufferTextureARB (will be remapped) */
+ /* _mesa_function_pool[13729]: FramebufferTextureARB (will be remapped) */
"iiii\0"
"glFramebufferTextureARB\0"
"\0"
- /* _mesa_function_pool[13703]: SetFenceNV (will be remapped) */
+ /* _mesa_function_pool[13759]: SetFenceNV (will be remapped) */
"ii\0"
"glSetFenceNV\0"
"\0"
- /* _mesa_function_pool[13720]: FramebufferTexture1DEXT (will be remapped) */
+ /* _mesa_function_pool[13776]: FramebufferTexture1DEXT (will be remapped) */
"iiiii\0"
"glFramebufferTexture1D\0"
"glFramebufferTexture1DEXT\0"
"\0"
- /* _mesa_function_pool[13776]: GetCombinerOutputParameterivNV (will be remapped) */
+ /* _mesa_function_pool[13832]: GetCombinerOutputParameterivNV (will be remapped) */
"iiip\0"
"glGetCombinerOutputParameterivNV\0"
"\0"
- /* _mesa_function_pool[13815]: PixelTexGenParameterivSGIS (will be remapped) */
+ /* _mesa_function_pool[13871]: MultiModeDrawArraysIBM (will be remapped) */
+ "pppii\0"
+ "glMultiModeDrawArraysIBM\0"
+ "\0"
+ /* _mesa_function_pool[13903]: PixelTexGenParameterivSGIS (will be remapped) */
"ip\0"
"glPixelTexGenParameterivSGIS\0"
"\0"
- /* _mesa_function_pool[13848]: TextureNormalEXT (dynamic) */
+ /* _mesa_function_pool[13936]: TextureNormalEXT (dynamic) */
"i\0"
"glTextureNormalEXT\0"
"\0"
- /* _mesa_function_pool[13870]: IndexPointerListIBM (dynamic) */
+ /* _mesa_function_pool[13958]: IndexPointerListIBM (dynamic) */
"iipi\0"
"glIndexPointerListIBM\0"
"\0"
- /* _mesa_function_pool[13898]: WeightfvARB (dynamic) */
+ /* _mesa_function_pool[13986]: WeightfvARB (dynamic) */
"ip\0"
"glWeightfvARB\0"
"\0"
- /* _mesa_function_pool[13916]: RasterPos2sv (offset 69) */
+ /* _mesa_function_pool[14004]: GetCombinerOutputParameterfvNV (will be remapped) */
+ "iiip\0"
+ "glGetCombinerOutputParameterfvNV\0"
+ "\0"
+ /* _mesa_function_pool[14043]: RasterPos2sv (offset 69) */
"p\0"
"glRasterPos2sv\0"
"\0"
- /* _mesa_function_pool[13934]: Color4ubv (offset 36) */
+ /* _mesa_function_pool[14061]: Color4ubv (offset 36) */
"p\0"
"glColor4ubv\0"
"\0"
- /* _mesa_function_pool[13949]: DrawBuffer (offset 202) */
+ /* _mesa_function_pool[14076]: DrawBuffer (offset 202) */
"i\0"
"glDrawBuffer\0"
"\0"
- /* _mesa_function_pool[13965]: TexCoord2fv (offset 105) */
+ /* _mesa_function_pool[14092]: TexCoord2fv (offset 105) */
"p\0"
"glTexCoord2fv\0"
"\0"
- /* _mesa_function_pool[13982]: WindowPos4fMESA (will be remapped) */
+ /* _mesa_function_pool[14109]: WindowPos4fMESA (will be remapped) */
"ffff\0"
"glWindowPos4fMESA\0"
"\0"
- /* _mesa_function_pool[14006]: TexCoord1sv (offset 101) */
+ /* _mesa_function_pool[14133]: TexCoord1sv (offset 101) */
"p\0"
"glTexCoord1sv\0"
"\0"
- /* _mesa_function_pool[14023]: WindowPos3dvMESA (will be remapped) */
+ /* _mesa_function_pool[14150]: WindowPos3dvMESA (will be remapped) */
"p\0"
"glWindowPos3dv\0"
"glWindowPos3dvARB\0"
"glWindowPos3dvMESA\0"
"\0"
- /* _mesa_function_pool[14078]: DepthFunc (offset 245) */
+ /* _mesa_function_pool[14205]: DepthFunc (offset 245) */
"i\0"
"glDepthFunc\0"
"\0"
- /* _mesa_function_pool[14093]: PixelMapusv (offset 253) */
+ /* _mesa_function_pool[14220]: PixelMapusv (offset 253) */
"iip\0"
"glPixelMapusv\0"
"\0"
- /* _mesa_function_pool[14112]: GetQueryObjecti64vEXT (will be remapped) */
+ /* _mesa_function_pool[14239]: GetQueryObjecti64vEXT (will be remapped) */
"iip\0"
"glGetQueryObjecti64vEXT\0"
"\0"
- /* _mesa_function_pool[14141]: MultiTexCoord1dARB (offset 376) */
+ /* _mesa_function_pool[14268]: MultiTexCoord1dARB (offset 376) */
"id\0"
"glMultiTexCoord1d\0"
"glMultiTexCoord1dARB\0"
"\0"
- /* _mesa_function_pool[14184]: PointParameterivNV (will be remapped) */
+ /* _mesa_function_pool[14311]: PointParameterivNV (will be remapped) */
"ip\0"
"glPointParameteriv\0"
"glPointParameterivNV\0"
"\0"
- /* _mesa_function_pool[14228]: BlendFunc (offset 241) */
+ /* _mesa_function_pool[14355]: IsSampler (will be remapped) */
+ "i\0"
+ "glIsSampler\0"
+ "\0"
+ /* _mesa_function_pool[14370]: BlendFunc (offset 241) */
"ii\0"
"glBlendFunc\0"
"\0"
- /* _mesa_function_pool[14244]: EndTransformFeedbackEXT (will be remapped) */
+ /* _mesa_function_pool[14386]: EndTransformFeedbackEXT (will be remapped) */
"\0"
"glEndTransformFeedbackEXT\0"
"glEndTransformFeedback\0"
"\0"
- /* _mesa_function_pool[14295]: Uniform2fvARB (will be remapped) */
+ /* _mesa_function_pool[14437]: Uniform2fvARB (will be remapped) */
"iip\0"
"glUniform2fv\0"
"glUniform2fvARB\0"
"\0"
- /* _mesa_function_pool[14329]: BufferParameteriAPPLE (will be remapped) */
+ /* _mesa_function_pool[14471]: BufferParameteriAPPLE (will be remapped) */
"iii\0"
"glBufferParameteriAPPLE\0"
"\0"
- /* _mesa_function_pool[14358]: MultiTexCoord3dvARB (offset 393) */
+ /* _mesa_function_pool[14500]: MultiTexCoord3dvARB (offset 393) */
"ip\0"
"glMultiTexCoord3dv\0"
"glMultiTexCoord3dvARB\0"
"\0"
- /* _mesa_function_pool[14403]: ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[14545]: ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (dynamic) */
"pppp\0"
"glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[14459]: DeleteObjectARB (will be remapped) */
+ /* _mesa_function_pool[14601]: DeleteObjectARB (will be remapped) */
"i\0"
"glDeleteObjectARB\0"
"\0"
- /* _mesa_function_pool[14480]: GetShaderPrecisionFormat (will be remapped) */
+ /* _mesa_function_pool[14622]: GetShaderPrecisionFormat (will be remapped) */
"iipp\0"
"glGetShaderPrecisionFormat\0"
"\0"
- /* _mesa_function_pool[14513]: MatrixIndexPointerARB (dynamic) */
+ /* _mesa_function_pool[14655]: MatrixIndexPointerARB (dynamic) */
"iiip\0"
"glMatrixIndexPointerARB\0"
"\0"
- /* _mesa_function_pool[14543]: ProgramNamedParameter4dvNV (will be remapped) */
+ /* _mesa_function_pool[14685]: ProgramNamedParameter4dvNV (will be remapped) */
"iipp\0"
"glProgramNamedParameter4dvNV\0"
"\0"
- /* _mesa_function_pool[14578]: Tangent3fvEXT (dynamic) */
+ /* _mesa_function_pool[14720]: Tangent3fvEXT (dynamic) */
"p\0"
"glTangent3fvEXT\0"
"\0"
- /* _mesa_function_pool[14597]: Flush (offset 217) */
+ /* _mesa_function_pool[14739]: Flush (offset 217) */
"\0"
"glFlush\0"
"\0"
- /* _mesa_function_pool[14607]: Color4uiv (offset 38) */
+ /* _mesa_function_pool[14749]: Color4uiv (offset 38) */
"p\0"
"glColor4uiv\0"
"\0"
- /* _mesa_function_pool[14622]: VertexAttribI4iEXT (will be remapped) */
+ /* _mesa_function_pool[14764]: VertexAttribI4iEXT (will be remapped) */
"iiiii\0"
"glVertexAttribI4iEXT\0"
"glVertexAttribI4i\0"
"\0"
- /* _mesa_function_pool[14668]: GenVertexArrays (will be remapped) */
+ /* _mesa_function_pool[14810]: GenVertexArrays (will be remapped) */
"ip\0"
"glGenVertexArrays\0"
"\0"
- /* _mesa_function_pool[14690]: Uniform3uivEXT (will be remapped) */
+ /* _mesa_function_pool[14832]: Uniform3uivEXT (will be remapped) */
"iip\0"
"glUniform3uivEXT\0"
"glUniform3uiv\0"
"\0"
- /* _mesa_function_pool[14726]: RasterPos3sv (offset 77) */
+ /* _mesa_function_pool[14868]: RasterPos3sv (offset 77) */
"p\0"
"glRasterPos3sv\0"
"\0"
- /* _mesa_function_pool[14744]: BindFramebufferEXT (will be remapped) */
+ /* _mesa_function_pool[14886]: BindFramebufferEXT (will be remapped) */
"ii\0"
"glBindFramebuffer\0"
"glBindFramebufferEXT\0"
"\0"
- /* _mesa_function_pool[14787]: ReferencePlaneSGIX (dynamic) */
+ /* _mesa_function_pool[14929]: ReferencePlaneSGIX (dynamic) */
"p\0"
"glReferencePlaneSGIX\0"
"\0"
- /* _mesa_function_pool[14811]: PushAttrib (offset 219) */
+ /* _mesa_function_pool[14953]: PushAttrib (offset 219) */
"i\0"
"glPushAttrib\0"
"\0"
- /* _mesa_function_pool[14827]: RasterPos2i (offset 66) */
+ /* _mesa_function_pool[14969]: RasterPos2i (offset 66) */
"ii\0"
"glRasterPos2i\0"
"\0"
- /* _mesa_function_pool[14845]: ValidateProgramARB (will be remapped) */
+ /* _mesa_function_pool[14987]: ValidateProgramARB (will be remapped) */
"i\0"
"glValidateProgram\0"
"glValidateProgramARB\0"
"\0"
- /* _mesa_function_pool[14887]: TexParameteriv (offset 181) */
+ /* _mesa_function_pool[15029]: TexParameteriv (offset 181) */
"iip\0"
"glTexParameteriv\0"
"\0"
- /* _mesa_function_pool[14909]: UnlockArraysEXT (will be remapped) */
+ /* _mesa_function_pool[15051]: UnlockArraysEXT (will be remapped) */
"\0"
"glUnlockArraysEXT\0"
"\0"
- /* _mesa_function_pool[14929]: TexCoord2fColor3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[15071]: TexCoord2fColor3fVertex3fSUN (dynamic) */
"ffffffff\0"
"glTexCoord2fColor3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[14970]: WindowPos3fvMESA (will be remapped) */
+ /* _mesa_function_pool[15112]: WindowPos3fvMESA (will be remapped) */
"p\0"
"glWindowPos3fv\0"
"glWindowPos3fvARB\0"
"glWindowPos3fvMESA\0"
"\0"
- /* _mesa_function_pool[15025]: RasterPos2f (offset 64) */
+ /* _mesa_function_pool[15167]: RasterPos2f (offset 64) */
"ff\0"
"glRasterPos2f\0"
"\0"
- /* _mesa_function_pool[15043]: VertexAttrib1svNV (will be remapped) */
+ /* _mesa_function_pool[15185]: VertexAttrib1svNV (will be remapped) */
"ip\0"
"glVertexAttrib1svNV\0"
"\0"
- /* _mesa_function_pool[15067]: RasterPos2d (offset 62) */
+ /* _mesa_function_pool[15209]: RasterPos2d (offset 62) */
"dd\0"
"glRasterPos2d\0"
"\0"
- /* _mesa_function_pool[15085]: RasterPos3fv (offset 73) */
+ /* _mesa_function_pool[15227]: RasterPos3fv (offset 73) */
"p\0"
"glRasterPos3fv\0"
"\0"
- /* _mesa_function_pool[15103]: CopyTexSubImage3D (offset 373) */
+ /* _mesa_function_pool[15245]: CopyTexSubImage3D (offset 373) */
"iiiiiiiii\0"
"glCopyTexSubImage3D\0"
"glCopyTexSubImage3DEXT\0"
"\0"
- /* _mesa_function_pool[15157]: VertexAttrib2dARB (will be remapped) */
+ /* _mesa_function_pool[15299]: VertexAttrib2dARB (will be remapped) */
"idd\0"
"glVertexAttrib2d\0"
"glVertexAttrib2dARB\0"
"\0"
- /* _mesa_function_pool[15199]: Color4ub (offset 35) */
+ /* _mesa_function_pool[15341]: Color4ub (offset 35) */
"iiii\0"
"glColor4ub\0"
"\0"
- /* _mesa_function_pool[15216]: GetInteger64v (will be remapped) */
+ /* _mesa_function_pool[15358]: GetInteger64v (will be remapped) */
"ip\0"
"glGetInteger64v\0"
"\0"
- /* _mesa_function_pool[15236]: TextureColorMaskSGIS (dynamic) */
+ /* _mesa_function_pool[15378]: TextureColorMaskSGIS (dynamic) */
"iiii\0"
"glTextureColorMaskSGIS\0"
"\0"
- /* _mesa_function_pool[15265]: RasterPos2s (offset 68) */
+ /* _mesa_function_pool[15407]: RasterPos2s (offset 68) */
"ii\0"
"glRasterPos2s\0"
"\0"
- /* _mesa_function_pool[15283]: GetColorTable (offset 343) */
+ /* _mesa_function_pool[15425]: GetColorTable (offset 343) */
"iiip\0"
"glGetColorTable\0"
"glGetColorTableSGI\0"
"glGetColorTableEXT\0"
"\0"
- /* _mesa_function_pool[15343]: SelectBuffer (offset 195) */
+ /* _mesa_function_pool[15485]: SelectBuffer (offset 195) */
"ip\0"
"glSelectBuffer\0"
"\0"
- /* _mesa_function_pool[15362]: Indexiv (offset 49) */
+ /* _mesa_function_pool[15504]: Indexiv (offset 49) */
"p\0"
"glIndexiv\0"
"\0"
- /* _mesa_function_pool[15375]: TexCoord3i (offset 114) */
+ /* _mesa_function_pool[15517]: TexCoord3i (offset 114) */
"iii\0"
"glTexCoord3i\0"
"\0"
- /* _mesa_function_pool[15393]: CopyColorTable (offset 342) */
+ /* _mesa_function_pool[15535]: CopyColorTable (offset 342) */
"iiiii\0"
"glCopyColorTable\0"
"glCopyColorTableSGI\0"
"\0"
- /* _mesa_function_pool[15437]: GetHistogramParameterfv (offset 362) */
+ /* _mesa_function_pool[15579]: GetHistogramParameterfv (offset 362) */
"iip\0"
"glGetHistogramParameterfv\0"
"glGetHistogramParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[15497]: Frustum (offset 289) */
+ /* _mesa_function_pool[15639]: Frustum (offset 289) */
"dddddd\0"
"glFrustum\0"
"\0"
- /* _mesa_function_pool[15515]: GetString (offset 275) */
+ /* _mesa_function_pool[15657]: GetString (offset 275) */
"i\0"
"glGetString\0"
"\0"
- /* _mesa_function_pool[15530]: ColorPointervINTEL (dynamic) */
+ /* _mesa_function_pool[15672]: ColorPointervINTEL (dynamic) */
"iip\0"
"glColorPointervINTEL\0"
"\0"
- /* _mesa_function_pool[15556]: TexEnvf (offset 184) */
+ /* _mesa_function_pool[15698]: TexEnvf (offset 184) */
"iif\0"
"glTexEnvf\0"
"\0"
- /* _mesa_function_pool[15571]: TexCoord3d (offset 110) */
+ /* _mesa_function_pool[15713]: TexCoord3d (offset 110) */
"ddd\0"
"glTexCoord3d\0"
"\0"
- /* _mesa_function_pool[15589]: AlphaFragmentOp1ATI (will be remapped) */
+ /* _mesa_function_pool[15731]: AlphaFragmentOp1ATI (will be remapped) */
"iiiiii\0"
"glAlphaFragmentOp1ATI\0"
"\0"
- /* _mesa_function_pool[15619]: TexCoord3f (offset 112) */
+ /* _mesa_function_pool[15761]: TexCoord3f (offset 112) */
"fff\0"
"glTexCoord3f\0"
"\0"
- /* _mesa_function_pool[15637]: MultiTexCoord3ivARB (offset 397) */
+ /* _mesa_function_pool[15779]: MultiTexCoord3ivARB (offset 397) */
"ip\0"
"glMultiTexCoord3iv\0"
"glMultiTexCoord3ivARB\0"
"\0"
- /* _mesa_function_pool[15682]: MultiTexCoord2sARB (offset 390) */
+ /* _mesa_function_pool[15824]: MultiTexCoord2sARB (offset 390) */
"iii\0"
"glMultiTexCoord2s\0"
"glMultiTexCoord2sARB\0"
"\0"
- /* _mesa_function_pool[15726]: VertexAttrib1dvARB (will be remapped) */
+ /* _mesa_function_pool[15868]: VertexAttrib1dvARB (will be remapped) */
"ip\0"
"glVertexAttrib1dv\0"
"glVertexAttrib1dvARB\0"
"\0"
- /* _mesa_function_pool[15769]: DeleteTextures (offset 327) */
+ /* _mesa_function_pool[15911]: DeleteTextures (offset 327) */
"ip\0"
"glDeleteTextures\0"
"glDeleteTexturesEXT\0"
"\0"
- /* _mesa_function_pool[15810]: TexCoordPointerEXT (will be remapped) */
+ /* _mesa_function_pool[15952]: TexCoordPointerEXT (will be remapped) */
"iiiip\0"
"glTexCoordPointerEXT\0"
"\0"
- /* _mesa_function_pool[15838]: TexSubImage4DSGIS (dynamic) */
+ /* _mesa_function_pool[15980]: TexSubImage4DSGIS (dynamic) */
"iiiiiiiiiiiip\0"
"glTexSubImage4DSGIS\0"
"\0"
- /* _mesa_function_pool[15873]: TexCoord3s (offset 116) */
+ /* _mesa_function_pool[16015]: TexCoord3s (offset 116) */
"iii\0"
"glTexCoord3s\0"
"\0"
- /* _mesa_function_pool[15891]: GetTexLevelParameteriv (offset 285) */
+ /* _mesa_function_pool[16033]: GetTexLevelParameteriv (offset 285) */
"iiip\0"
"glGetTexLevelParameteriv\0"
"\0"
- /* _mesa_function_pool[15922]: CombinerStageParameterfvNV (dynamic) */
+ /* _mesa_function_pool[16064]: CombinerStageParameterfvNV (dynamic) */
"iip\0"
"glCombinerStageParameterfvNV\0"
"\0"
- /* _mesa_function_pool[15956]: StopInstrumentsSGIX (dynamic) */
+ /* _mesa_function_pool[16098]: StopInstrumentsSGIX (dynamic) */
"i\0"
"glStopInstrumentsSGIX\0"
"\0"
- /* _mesa_function_pool[15981]: TexCoord4fColor4fNormal3fVertex4fSUN (dynamic) */
+ /* _mesa_function_pool[16123]: TexCoord4fColor4fNormal3fVertex4fSUN (dynamic) */
"fffffffffffffff\0"
"glTexCoord4fColor4fNormal3fVertex4fSUN\0"
"\0"
- /* _mesa_function_pool[16037]: ClearAccum (offset 204) */
+ /* _mesa_function_pool[16179]: ClearAccum (offset 204) */
"ffff\0"
"glClearAccum\0"
"\0"
- /* _mesa_function_pool[16056]: DeformSGIX (dynamic) */
+ /* _mesa_function_pool[16198]: DeformSGIX (dynamic) */
"i\0"
"glDeformSGIX\0"
"\0"
- /* _mesa_function_pool[16072]: GetVertexAttribfvARB (will be remapped) */
+ /* _mesa_function_pool[16214]: GetVertexAttribfvARB (will be remapped) */
"iip\0"
"glGetVertexAttribfv\0"
"glGetVertexAttribfvARB\0"
"\0"
- /* _mesa_function_pool[16120]: SecondaryColor3ivEXT (will be remapped) */
+ /* _mesa_function_pool[16262]: SecondaryColor3ivEXT (will be remapped) */
"p\0"
"glSecondaryColor3iv\0"
"glSecondaryColor3ivEXT\0"
"\0"
- /* _mesa_function_pool[16166]: TexCoord4iv (offset 123) */
+ /* _mesa_function_pool[16308]: TexCoord4iv (offset 123) */
"p\0"
"glTexCoord4iv\0"
"\0"
- /* _mesa_function_pool[16183]: VertexAttribI4uiEXT (will be remapped) */
+ /* _mesa_function_pool[16325]: VertexAttribI4uiEXT (will be remapped) */
"iiiii\0"
"glVertexAttribI4uiEXT\0"
"glVertexAttribI4ui\0"
"\0"
- /* _mesa_function_pool[16231]: GetFragmentMaterialfvSGIX (dynamic) */
+ /* _mesa_function_pool[16373]: GetFragmentMaterialfvSGIX (dynamic) */
"iip\0"
"glGetFragmentMaterialfvSGIX\0"
"\0"
- /* _mesa_function_pool[16264]: UniformMatrix4x2fv (will be remapped) */
+ /* _mesa_function_pool[16406]: UniformMatrix4x2fv (will be remapped) */
"iiip\0"
"glUniformMatrix4x2fv\0"
"\0"
- /* _mesa_function_pool[16291]: GetDetailTexFuncSGIS (dynamic) */
+ /* _mesa_function_pool[16433]: GetDetailTexFuncSGIS (dynamic) */
"ip\0"
"glGetDetailTexFuncSGIS\0"
"\0"
- /* _mesa_function_pool[16318]: GetCombinerStageParameterfvNV (dynamic) */
+ /* _mesa_function_pool[16460]: GetCombinerStageParameterfvNV (dynamic) */
"iip\0"
"glGetCombinerStageParameterfvNV\0"
"\0"
- /* _mesa_function_pool[16355]: PolygonOffset (offset 319) */
+ /* _mesa_function_pool[16497]: SamplerParameterIiv (will be remapped) */
+ "iip\0"
+ "glSamplerParameterIiv\0"
+ "\0"
+ /* _mesa_function_pool[16524]: PolygonOffset (offset 319) */
"ff\0"
"glPolygonOffset\0"
"\0"
- /* _mesa_function_pool[16375]: BindVertexArray (will be remapped) */
+ /* _mesa_function_pool[16544]: BindVertexArray (will be remapped) */
"i\0"
"glBindVertexArray\0"
"\0"
- /* _mesa_function_pool[16396]: Color4ubVertex2fvSUN (dynamic) */
+ /* _mesa_function_pool[16565]: Color4ubVertex2fvSUN (dynamic) */
"pp\0"
"glColor4ubVertex2fvSUN\0"
"\0"
- /* _mesa_function_pool[16423]: Rectd (offset 86) */
+ /* _mesa_function_pool[16592]: Rectd (offset 86) */
"dddd\0"
"glRectd\0"
"\0"
- /* _mesa_function_pool[16437]: TexFilterFuncSGIS (dynamic) */
+ /* _mesa_function_pool[16606]: TexFilterFuncSGIS (dynamic) */
"iiip\0"
"glTexFilterFuncSGIS\0"
"\0"
- /* _mesa_function_pool[16463]: TextureBarrierNV (will be remapped) */
+ /* _mesa_function_pool[16632]: TextureBarrierNV (will be remapped) */
"\0"
"glTextureBarrierNV\0"
"\0"
- /* _mesa_function_pool[16484]: VertexAttribI4ubvEXT (will be remapped) */
+ /* _mesa_function_pool[16653]: SamplerParameterfv (will be remapped) */
+ "iip\0"
+ "glSamplerParameterfv\0"
+ "\0"
+ /* _mesa_function_pool[16679]: VertexAttribI4ubvEXT (will be remapped) */
"ip\0"
"glVertexAttribI4ubvEXT\0"
"glVertexAttribI4ubv\0"
"\0"
- /* _mesa_function_pool[16531]: GetAttribLocationARB (will be remapped) */
+ /* _mesa_function_pool[16726]: GetAttribLocationARB (will be remapped) */
"ip\0"
"glGetAttribLocation\0"
"glGetAttribLocationARB\0"
"\0"
- /* _mesa_function_pool[16578]: RasterPos3i (offset 74) */
+ /* _mesa_function_pool[16773]: RasterPos3i (offset 74) */
"iii\0"
"glRasterPos3i\0"
"\0"
- /* _mesa_function_pool[16597]: VertexAttrib4ubvARB (will be remapped) */
+ /* _mesa_function_pool[16792]: BlendEquationSeparateiARB (will be remapped) */
+ "iii\0"
+ "glBlendEquationSeparateiARB\0"
+ "\0"
+ /* _mesa_function_pool[16825]: VertexAttrib4ubvARB (will be remapped) */
"ip\0"
"glVertexAttrib4ubv\0"
"glVertexAttrib4ubvARB\0"
"\0"
- /* _mesa_function_pool[16642]: DetailTexFuncSGIS (dynamic) */
+ /* _mesa_function_pool[16870]: DetailTexFuncSGIS (dynamic) */
"iip\0"
"glDetailTexFuncSGIS\0"
"\0"
- /* _mesa_function_pool[16667]: Normal3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[16895]: Normal3fVertex3fSUN (dynamic) */
"ffffff\0"
"glNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[16697]: CopyTexImage2D (offset 324) */
+ /* _mesa_function_pool[16925]: CopyTexImage2D (offset 324) */
"iiiiiiii\0"
"glCopyTexImage2D\0"
"glCopyTexImage2DEXT\0"
"\0"
- /* _mesa_function_pool[16744]: GetBufferPointervARB (will be remapped) */
+ /* _mesa_function_pool[16972]: GetBufferPointervARB (will be remapped) */
"iip\0"
"glGetBufferPointerv\0"
"glGetBufferPointervARB\0"
"\0"
- /* _mesa_function_pool[16792]: ProgramEnvParameter4fARB (will be remapped) */
+ /* _mesa_function_pool[17020]: ProgramEnvParameter4fARB (will be remapped) */
"iiffff\0"
"glProgramEnvParameter4fARB\0"
"glProgramParameter4fNV\0"
"\0"
- /* _mesa_function_pool[16850]: Uniform3ivARB (will be remapped) */
+ /* _mesa_function_pool[17078]: Uniform3ivARB (will be remapped) */
"iip\0"
"glUniform3iv\0"
"glUniform3ivARB\0"
"\0"
- /* _mesa_function_pool[16884]: Lightfv (offset 160) */
+ /* _mesa_function_pool[17112]: Lightfv (offset 160) */
"iip\0"
"glLightfv\0"
"\0"
- /* _mesa_function_pool[16899]: PrimitiveRestartIndexNV (will be remapped) */
+ /* _mesa_function_pool[17127]: PrimitiveRestartIndexNV (will be remapped) */
"i\0"
"glPrimitiveRestartIndexNV\0"
"glPrimitiveRestartIndex\0"
"\0"
- /* _mesa_function_pool[16952]: ClearDepth (offset 208) */
+ /* _mesa_function_pool[17180]: ClearDepth (offset 208) */
"d\0"
"glClearDepth\0"
"\0"
- /* _mesa_function_pool[16968]: GetFenceivNV (will be remapped) */
+ /* _mesa_function_pool[17196]: GetFenceivNV (will be remapped) */
"iip\0"
"glGetFenceivNV\0"
"\0"
- /* _mesa_function_pool[16988]: WindowPos4dvMESA (will be remapped) */
+ /* _mesa_function_pool[17216]: WindowPos4dvMESA (will be remapped) */
"p\0"
"glWindowPos4dvMESA\0"
"\0"
- /* _mesa_function_pool[17010]: ColorSubTable (offset 346) */
+ /* _mesa_function_pool[17238]: ColorSubTable (offset 346) */
"iiiiip\0"
"glColorSubTable\0"
"glColorSubTableEXT\0"
"\0"
- /* _mesa_function_pool[17053]: Color4fv (offset 30) */
+ /* _mesa_function_pool[17281]: Color4fv (offset 30) */
"p\0"
"glColor4fv\0"
"\0"
- /* _mesa_function_pool[17067]: MultiTexCoord4ivARB (offset 405) */
+ /* _mesa_function_pool[17295]: MultiTexCoord4ivARB (offset 405) */
"ip\0"
"glMultiTexCoord4iv\0"
"glMultiTexCoord4ivARB\0"
"\0"
- /* _mesa_function_pool[17112]: ProgramLocalParameters4fvEXT (will be remapped) */
+ /* _mesa_function_pool[17340]: ProgramLocalParameters4fvEXT (will be remapped) */
"iiip\0"
"glProgramLocalParameters4fvEXT\0"
"\0"
- /* _mesa_function_pool[17149]: ColorPointer (offset 308) */
+ /* _mesa_function_pool[17377]: ColorPointer (offset 308) */
"iiip\0"
"glColorPointer\0"
"\0"
- /* _mesa_function_pool[17170]: Rects (offset 92) */
+ /* _mesa_function_pool[17398]: Rects (offset 92) */
"iiii\0"
"glRects\0"
"\0"
- /* _mesa_function_pool[17184]: GetMapAttribParameterfvNV (dynamic) */
+ /* _mesa_function_pool[17412]: GetMapAttribParameterfvNV (dynamic) */
"iiip\0"
"glGetMapAttribParameterfvNV\0"
"\0"
- /* _mesa_function_pool[17218]: CreateShaderProgramEXT (will be remapped) */
+ /* _mesa_function_pool[17446]: CreateShaderProgramEXT (will be remapped) */
"ip\0"
"glCreateShaderProgramEXT\0"
"\0"
- /* _mesa_function_pool[17247]: ActiveProgramEXT (will be remapped) */
+ /* _mesa_function_pool[17475]: ActiveProgramEXT (will be remapped) */
"i\0"
"glActiveProgramEXT\0"
"\0"
- /* _mesa_function_pool[17269]: Lightiv (offset 162) */
+ /* _mesa_function_pool[17497]: Lightiv (offset 162) */
"iip\0"
"glLightiv\0"
"\0"
- /* _mesa_function_pool[17284]: VertexAttrib4sARB (will be remapped) */
+ /* _mesa_function_pool[17512]: VertexAttrib4sARB (will be remapped) */
"iiiii\0"
"glVertexAttrib4s\0"
"glVertexAttrib4sARB\0"
"\0"
- /* _mesa_function_pool[17328]: GetQueryObjectuivARB (will be remapped) */
+ /* _mesa_function_pool[17556]: GetQueryObjectuivARB (will be remapped) */
"iip\0"
"glGetQueryObjectuiv\0"
"glGetQueryObjectuivARB\0"
"\0"
- /* _mesa_function_pool[17376]: GetTexParameteriv (offset 283) */
+ /* _mesa_function_pool[17604]: GetTexParameteriv (offset 283) */
"iip\0"
"glGetTexParameteriv\0"
"\0"
- /* _mesa_function_pool[17401]: MapParameterivNV (dynamic) */
+ /* _mesa_function_pool[17629]: MapParameterivNV (dynamic) */
"iip\0"
"glMapParameterivNV\0"
"\0"
- /* _mesa_function_pool[17425]: GenRenderbuffersEXT (will be remapped) */
+ /* _mesa_function_pool[17653]: GenRenderbuffersEXT (will be remapped) */
"ip\0"
"glGenRenderbuffers\0"
"glGenRenderbuffersEXT\0"
"\0"
- /* _mesa_function_pool[17470]: ClearBufferfv (will be remapped) */
+ /* _mesa_function_pool[17698]: ClearBufferfv (will be remapped) */
"iip\0"
"glClearBufferfv\0"
"\0"
- /* _mesa_function_pool[17491]: VertexAttrib2dvARB (will be remapped) */
+ /* _mesa_function_pool[17719]: VertexAttrib2dvARB (will be remapped) */
"ip\0"
"glVertexAttrib2dv\0"
"glVertexAttrib2dvARB\0"
"\0"
- /* _mesa_function_pool[17534]: EdgeFlagPointerEXT (will be remapped) */
+ /* _mesa_function_pool[17762]: EdgeFlagPointerEXT (will be remapped) */
"iip\0"
"glEdgeFlagPointerEXT\0"
"\0"
- /* _mesa_function_pool[17560]: VertexAttribs2svNV (will be remapped) */
+ /* _mesa_function_pool[17788]: VertexAttribs2svNV (will be remapped) */
"iip\0"
"glVertexAttribs2svNV\0"
"\0"
- /* _mesa_function_pool[17586]: WeightbvARB (dynamic) */
+ /* _mesa_function_pool[17814]: WeightbvARB (dynamic) */
"ip\0"
"glWeightbvARB\0"
"\0"
- /* _mesa_function_pool[17604]: VertexAttrib2fvARB (will be remapped) */
+ /* _mesa_function_pool[17832]: VertexAttrib2fvARB (will be remapped) */
"ip\0"
"glVertexAttrib2fv\0"
"glVertexAttrib2fvARB\0"
"\0"
- /* _mesa_function_pool[17647]: GetBufferParameterivARB (will be remapped) */
+ /* _mesa_function_pool[17875]: GetBufferParameterivARB (will be remapped) */
"iip\0"
"glGetBufferParameteriv\0"
"glGetBufferParameterivARB\0"
"\0"
- /* _mesa_function_pool[17701]: Rectdv (offset 87) */
+ /* _mesa_function_pool[17929]: Rectdv (offset 87) */
"pp\0"
"glRectdv\0"
"\0"
- /* _mesa_function_pool[17714]: ListParameteriSGIX (dynamic) */
+ /* _mesa_function_pool[17942]: ListParameteriSGIX (dynamic) */
"iii\0"
"glListParameteriSGIX\0"
"\0"
- /* _mesa_function_pool[17740]: BlendEquationiARB (will be remapped) */
+ /* _mesa_function_pool[17968]: BlendEquationiARB (will be remapped) */
"ii\0"
"glBlendEquationiARB\0"
"\0"
- /* _mesa_function_pool[17764]: ReplacementCodeuiColor4fNormal3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[17992]: ReplacementCodeuiColor4fNormal3fVertex3fSUN (dynamic) */
"iffffffffff\0"
"glReplacementCodeuiColor4fNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[17823]: InstrumentsBufferSGIX (dynamic) */
+ /* _mesa_function_pool[18051]: InstrumentsBufferSGIX (dynamic) */
"ip\0"
"glInstrumentsBufferSGIX\0"
"\0"
- /* _mesa_function_pool[17851]: VertexAttrib4NivARB (will be remapped) */
+ /* _mesa_function_pool[18079]: VertexAttrib4NivARB (will be remapped) */
"ip\0"
"glVertexAttrib4Niv\0"
"glVertexAttrib4NivARB\0"
"\0"
- /* _mesa_function_pool[17896]: DrawArraysInstancedARB (will be remapped) */
+ /* _mesa_function_pool[18124]: DrawArraysInstancedARB (will be remapped) */
"iiii\0"
"glDrawArraysInstancedARB\0"
"glDrawArraysInstancedEXT\0"
"glDrawArraysInstanced\0"
"\0"
- /* _mesa_function_pool[17974]: GetAttachedShaders (will be remapped) */
+ /* _mesa_function_pool[18202]: GetAttachedShaders (will be remapped) */
"iipp\0"
"glGetAttachedShaders\0"
"\0"
- /* _mesa_function_pool[18001]: GenVertexArraysAPPLE (will be remapped) */
+ /* _mesa_function_pool[18229]: GenVertexArraysAPPLE (will be remapped) */
"ip\0"
"glGenVertexArraysAPPLE\0"
"\0"
- /* _mesa_function_pool[18028]: ClearBufferfi (will be remapped) */
+ /* _mesa_function_pool[18256]: ClearBufferfi (will be remapped) */
"iifi\0"
"glClearBufferfi\0"
"\0"
- /* _mesa_function_pool[18050]: Materialiv (offset 172) */
+ /* _mesa_function_pool[18278]: Materialiv (offset 172) */
"iip\0"
"glMaterialiv\0"
"\0"
- /* _mesa_function_pool[18068]: PushClientAttrib (offset 335) */
+ /* _mesa_function_pool[18296]: PushClientAttrib (offset 335) */
"i\0"
"glPushClientAttrib\0"
"\0"
- /* _mesa_function_pool[18090]: ProgramEnvParameters4fvEXT (will be remapped) */
- "iiip\0"
- "glProgramEnvParameters4fvEXT\0"
+ /* _mesa_function_pool[18318]: SamplerParameteriv (will be remapped) */
+ "iip\0"
+ "glSamplerParameteriv\0"
"\0"
- /* _mesa_function_pool[18125]: TexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[18344]: TexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */
"pppp\0"
"glTexCoord2fColor4fNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[18171]: WindowPos2iMESA (will be remapped) */
+ /* _mesa_function_pool[18390]: WindowPos2iMESA (will be remapped) */
"ii\0"
"glWindowPos2i\0"
"glWindowPos2iARB\0"
"glWindowPos2iMESA\0"
"\0"
- /* _mesa_function_pool[18224]: SampleMaskSGIS (will be remapped) */
+ /* _mesa_function_pool[18443]: SampleMaskSGIS (will be remapped) */
"fi\0"
"glSampleMaskSGIS\0"
"glSampleMaskEXT\0"
"\0"
- /* _mesa_function_pool[18261]: SecondaryColor3fvEXT (will be remapped) */
+ /* _mesa_function_pool[18480]: SecondaryColor3fvEXT (will be remapped) */
"p\0"
"glSecondaryColor3fv\0"
"glSecondaryColor3fvEXT\0"
"\0"
- /* _mesa_function_pool[18307]: PolygonMode (offset 174) */
+ /* _mesa_function_pool[18526]: PolygonMode (offset 174) */
"ii\0"
"glPolygonMode\0"
"\0"
- /* _mesa_function_pool[18325]: CompressedTexSubImage1DARB (will be remapped) */
+ /* _mesa_function_pool[18544]: CompressedTexSubImage1DARB (will be remapped) */
"iiiiiip\0"
"glCompressedTexSubImage1D\0"
"glCompressedTexSubImage1DARB\0"
"\0"
- /* _mesa_function_pool[18389]: VertexAttribI1iEXT (will be remapped) */
+ /* _mesa_function_pool[18608]: VertexAttribI1iEXT (will be remapped) */
"ii\0"
"glVertexAttribI1iEXT\0"
"glVertexAttribI1i\0"
"\0"
- /* _mesa_function_pool[18432]: GetVertexAttribivNV (will be remapped) */
+ /* _mesa_function_pool[18651]: TexCoord2fNormal3fVertex3fSUN (dynamic) */
+ "ffffffff\0"
+ "glTexCoord2fNormal3fVertex3fSUN\0"
+ "\0"
+ /* _mesa_function_pool[18693]: GetVertexAttribivNV (will be remapped) */
"iip\0"
"glGetVertexAttribivNV\0"
"\0"
- /* _mesa_function_pool[18459]: GetProgramStringARB (will be remapped) */
+ /* _mesa_function_pool[18720]: GetProgramStringARB (will be remapped) */
"iip\0"
"glGetProgramStringARB\0"
"\0"
- /* _mesa_function_pool[18486]: VertexAttribIPointerEXT (will be remapped) */
+ /* _mesa_function_pool[18747]: VertexAttribIPointerEXT (will be remapped) */
"iiiip\0"
"glVertexAttribIPointerEXT\0"
"glVertexAttribIPointer\0"
"\0"
- /* _mesa_function_pool[18542]: TexBumpParameterfvATI (will be remapped) */
+ /* _mesa_function_pool[18803]: TexBumpParameterfvATI (will be remapped) */
"ip\0"
"glTexBumpParameterfvATI\0"
"\0"
- /* _mesa_function_pool[18570]: CompileShaderARB (will be remapped) */
+ /* _mesa_function_pool[18831]: Tangent3ivEXT (dynamic) */
+ "p\0"
+ "glTangent3ivEXT\0"
+ "\0"
+ /* _mesa_function_pool[18850]: CompileShaderARB (will be remapped) */
"i\0"
"glCompileShader\0"
"glCompileShaderARB\0"
"\0"
- /* _mesa_function_pool[18608]: DeleteShader (will be remapped) */
+ /* _mesa_function_pool[18888]: DeleteShader (will be remapped) */
"i\0"
"glDeleteShader\0"
"\0"
- /* _mesa_function_pool[18626]: DisableClientState (offset 309) */
+ /* _mesa_function_pool[18906]: DisableClientState (offset 309) */
"i\0"
"glDisableClientState\0"
"\0"
- /* _mesa_function_pool[18650]: TexGeni (offset 192) */
+ /* _mesa_function_pool[18930]: TexGeni (offset 192) */
"iii\0"
"glTexGeni\0"
"\0"
- /* _mesa_function_pool[18665]: TexGenf (offset 190) */
+ /* _mesa_function_pool[18945]: TexGenf (offset 190) */
"iif\0"
"glTexGenf\0"
"\0"
- /* _mesa_function_pool[18680]: Uniform3fARB (will be remapped) */
+ /* _mesa_function_pool[18960]: Uniform3fARB (will be remapped) */
"ifff\0"
"glUniform3f\0"
"glUniform3fARB\0"
"\0"
- /* _mesa_function_pool[18713]: TexGend (offset 188) */
+ /* _mesa_function_pool[18993]: TexGend (offset 188) */
"iid\0"
"glTexGend\0"
"\0"
- /* _mesa_function_pool[18728]: ListParameterfvSGIX (dynamic) */
+ /* _mesa_function_pool[19008]: ListParameterfvSGIX (dynamic) */
"iip\0"
"glListParameterfvSGIX\0"
"\0"
- /* _mesa_function_pool[18755]: GetPolygonStipple (offset 274) */
+ /* _mesa_function_pool[19035]: GetPolygonStipple (offset 274) */
"p\0"
"glGetPolygonStipple\0"
"\0"
- /* _mesa_function_pool[18778]: Tangent3dvEXT (dynamic) */
+ /* _mesa_function_pool[19058]: Tangent3dvEXT (dynamic) */
"p\0"
"glTangent3dvEXT\0"
"\0"
- /* _mesa_function_pool[18797]: BindBufferOffsetEXT (will be remapped) */
+ /* _mesa_function_pool[19077]: BindBufferOffsetEXT (will be remapped) */
"iiii\0"
"glBindBufferOffsetEXT\0"
"\0"
- /* _mesa_function_pool[18825]: WindowPos3sMESA (will be remapped) */
+ /* _mesa_function_pool[19105]: WindowPos3sMESA (will be remapped) */
"iii\0"
"glWindowPos3s\0"
"glWindowPos3sARB\0"
"glWindowPos3sMESA\0"
"\0"
- /* _mesa_function_pool[18879]: VertexAttrib2svNV (will be remapped) */
+ /* _mesa_function_pool[19159]: VertexAttrib2svNV (will be remapped) */
"ip\0"
"glVertexAttrib2svNV\0"
"\0"
- /* _mesa_function_pool[18903]: DisableIndexedEXT (will be remapped) */
+ /* _mesa_function_pool[19183]: DisableIndexedEXT (will be remapped) */
"ii\0"
"glDisableIndexedEXT\0"
"glDisablei\0"
"\0"
- /* _mesa_function_pool[18938]: BindBufferBaseEXT (will be remapped) */
+ /* _mesa_function_pool[19218]: BindBufferBaseEXT (will be remapped) */
"iii\0"
"glBindBufferBaseEXT\0"
"glBindBufferBase\0"
"\0"
- /* _mesa_function_pool[18980]: TexCoord2fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[19260]: TexCoord2fVertex3fvSUN (dynamic) */
"pp\0"
"glTexCoord2fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[19009]: WindowPos4sMESA (will be remapped) */
+ /* _mesa_function_pool[19289]: WindowPos4sMESA (will be remapped) */
"iiii\0"
"glWindowPos4sMESA\0"
"\0"
- /* _mesa_function_pool[19033]: VertexAttrib4NuivARB (will be remapped) */
+ /* _mesa_function_pool[19313]: VertexAttrib4NuivARB (will be remapped) */
"ip\0"
"glVertexAttrib4Nuiv\0"
"glVertexAttrib4NuivARB\0"
"\0"
- /* _mesa_function_pool[19080]: ClientActiveTextureARB (offset 375) */
+ /* _mesa_function_pool[19360]: ClientActiveTextureARB (offset 375) */
"i\0"
"glClientActiveTexture\0"
"glClientActiveTextureARB\0"
"\0"
- /* _mesa_function_pool[19130]: PixelTexGenSGIX (will be remapped) */
- "i\0"
- "glPixelTexGenSGIX\0"
+ /* _mesa_function_pool[19410]: GetSamplerParameterIuiv (will be remapped) */
+ "iip\0"
+ "glGetSamplerParameterIuiv\0"
"\0"
- /* _mesa_function_pool[19151]: ReplacementCodeusvSUN (dynamic) */
+ /* _mesa_function_pool[19441]: ReplacementCodeusvSUN (dynamic) */
"p\0"
"glReplacementCodeusvSUN\0"
"\0"
- /* _mesa_function_pool[19178]: Uniform4fARB (will be remapped) */
+ /* _mesa_function_pool[19468]: Uniform4fARB (will be remapped) */
"iffff\0"
"glUniform4f\0"
"glUniform4fARB\0"
"\0"
- /* _mesa_function_pool[19212]: Color4sv (offset 34) */
+ /* _mesa_function_pool[19502]: Color4sv (offset 34) */
"p\0"
"glColor4sv\0"
"\0"
- /* _mesa_function_pool[19226]: FlushMappedBufferRange (will be remapped) */
+ /* _mesa_function_pool[19516]: FlushMappedBufferRange (will be remapped) */
"iii\0"
"glFlushMappedBufferRange\0"
"\0"
- /* _mesa_function_pool[19256]: IsProgramNV (will be remapped) */
+ /* _mesa_function_pool[19546]: IsProgramNV (will be remapped) */
"i\0"
"glIsProgramARB\0"
"glIsProgramNV\0"
"\0"
- /* _mesa_function_pool[19288]: FlushMappedBufferRangeAPPLE (will be remapped) */
+ /* _mesa_function_pool[19578]: FlushMappedBufferRangeAPPLE (will be remapped) */
"iii\0"
"glFlushMappedBufferRangeAPPLE\0"
"\0"
- /* _mesa_function_pool[19323]: PixelZoom (offset 246) */
+ /* _mesa_function_pool[19613]: PixelZoom (offset 246) */
"ff\0"
"glPixelZoom\0"
"\0"
- /* _mesa_function_pool[19339]: ReplacementCodePointerSUN (dynamic) */
+ /* _mesa_function_pool[19629]: ReplacementCodePointerSUN (dynamic) */
"iip\0"
"glReplacementCodePointerSUN\0"
"\0"
- /* _mesa_function_pool[19372]: ProgramEnvParameter4dARB (will be remapped) */
+ /* _mesa_function_pool[19662]: ProgramEnvParameter4dARB (will be remapped) */
"iidddd\0"
"glProgramEnvParameter4dARB\0"
"glProgramParameter4dNV\0"
"\0"
- /* _mesa_function_pool[19430]: ColorTableParameterfv (offset 340) */
+ /* _mesa_function_pool[19720]: ColorTableParameterfv (offset 340) */
"iip\0"
"glColorTableParameterfv\0"
"glColorTableParameterfvSGI\0"
"\0"
- /* _mesa_function_pool[19486]: FragmentLightModelfSGIX (dynamic) */
+ /* _mesa_function_pool[19776]: FragmentLightModelfSGIX (dynamic) */
"if\0"
"glFragmentLightModelfSGIX\0"
"\0"
- /* _mesa_function_pool[19516]: Binormal3bvEXT (dynamic) */
+ /* _mesa_function_pool[19806]: Binormal3bvEXT (dynamic) */
"p\0"
"glBinormal3bvEXT\0"
"\0"
- /* _mesa_function_pool[19536]: PixelMapuiv (offset 252) */
+ /* _mesa_function_pool[19826]: PixelMapuiv (offset 252) */
"iip\0"
"glPixelMapuiv\0"
"\0"
- /* _mesa_function_pool[19555]: Color3dv (offset 12) */
+ /* _mesa_function_pool[19845]: Color3dv (offset 12) */
"p\0"
"glColor3dv\0"
"\0"
- /* _mesa_function_pool[19569]: IsTexture (offset 330) */
+ /* _mesa_function_pool[19859]: IsTexture (offset 330) */
"i\0"
"glIsTexture\0"
"glIsTextureEXT\0"
"\0"
- /* _mesa_function_pool[19599]: VertexWeightfvEXT (dynamic) */
+ /* _mesa_function_pool[19889]: GenSamplers (will be remapped) */
+ "ip\0"
+ "glGenSamplers\0"
+ "\0"
+ /* _mesa_function_pool[19907]: VertexWeightfvEXT (dynamic) */
"p\0"
"glVertexWeightfvEXT\0"
"\0"
- /* _mesa_function_pool[19622]: VertexAttrib1dARB (will be remapped) */
+ /* _mesa_function_pool[19930]: VertexAttrib1dARB (will be remapped) */
"id\0"
"glVertexAttrib1d\0"
"glVertexAttrib1dARB\0"
"\0"
- /* _mesa_function_pool[19663]: ImageTransformParameterivHP (dynamic) */
+ /* _mesa_function_pool[19971]: ImageTransformParameterivHP (dynamic) */
"iip\0"
"glImageTransformParameterivHP\0"
"\0"
- /* _mesa_function_pool[19698]: TexCoord4i (offset 122) */
+ /* _mesa_function_pool[20006]: TexCoord4i (offset 122) */
"iiii\0"
"glTexCoord4i\0"
"\0"
- /* _mesa_function_pool[19717]: DeleteQueriesARB (will be remapped) */
+ /* _mesa_function_pool[20025]: DeleteQueriesARB (will be remapped) */
"ip\0"
"glDeleteQueries\0"
"glDeleteQueriesARB\0"
"\0"
- /* _mesa_function_pool[19756]: Color4ubVertex2fSUN (dynamic) */
+ /* _mesa_function_pool[20064]: Color4ubVertex2fSUN (dynamic) */
"iiiiff\0"
"glColor4ubVertex2fSUN\0"
"\0"
- /* _mesa_function_pool[19786]: FragmentColorMaterialSGIX (dynamic) */
+ /* _mesa_function_pool[20094]: FragmentColorMaterialSGIX (dynamic) */
"ii\0"
"glFragmentColorMaterialSGIX\0"
"\0"
- /* _mesa_function_pool[19818]: CurrentPaletteMatrixARB (dynamic) */
+ /* _mesa_function_pool[20126]: CurrentPaletteMatrixARB (dynamic) */
"i\0"
"glCurrentPaletteMatrixARB\0"
"\0"
- /* _mesa_function_pool[19847]: GetMapdv (offset 266) */
+ /* _mesa_function_pool[20155]: GetMapdv (offset 266) */
"iip\0"
"glGetMapdv\0"
"\0"
- /* _mesa_function_pool[19863]: ObjectPurgeableAPPLE (will be remapped) */
+ /* _mesa_function_pool[20171]: ObjectPurgeableAPPLE (will be remapped) */
"iii\0"
"glObjectPurgeableAPPLE\0"
"\0"
- /* _mesa_function_pool[19891]: GetStringi (will be remapped) */
+ /* _mesa_function_pool[20199]: GetStringi (will be remapped) */
"ii\0"
"glGetStringi\0"
"\0"
- /* _mesa_function_pool[19908]: SamplePatternSGIS (will be remapped) */
+ /* _mesa_function_pool[20216]: SamplePatternSGIS (will be remapped) */
"i\0"
"glSamplePatternSGIS\0"
"glSamplePatternEXT\0"
"\0"
- /* _mesa_function_pool[19950]: PixelStoref (offset 249) */
+ /* _mesa_function_pool[20258]: PixelStoref (offset 249) */
"if\0"
"glPixelStoref\0"
"\0"
- /* _mesa_function_pool[19968]: IsQueryARB (will be remapped) */
+ /* _mesa_function_pool[20276]: IsQueryARB (will be remapped) */
"i\0"
"glIsQuery\0"
"glIsQueryARB\0"
"\0"
- /* _mesa_function_pool[19994]: ReplacementCodeuiColor4ubVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[20302]: ReplacementCodeuiColor4ubVertex3fSUN (dynamic) */
"iiiiifff\0"
"glReplacementCodeuiColor4ubVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[20043]: PixelStorei (offset 250) */
+ /* _mesa_function_pool[20351]: PixelStorei (offset 250) */
"ii\0"
"glPixelStorei\0"
"\0"
- /* _mesa_function_pool[20061]: VertexAttrib4usvARB (will be remapped) */
+ /* _mesa_function_pool[20369]: VertexAttrib4usvARB (will be remapped) */
"ip\0"
"glVertexAttrib4usv\0"
"glVertexAttrib4usvARB\0"
"\0"
- /* _mesa_function_pool[20106]: LinkProgramARB (will be remapped) */
+ /* _mesa_function_pool[20414]: LinkProgramARB (will be remapped) */
"i\0"
"glLinkProgram\0"
"glLinkProgramARB\0"
"\0"
- /* _mesa_function_pool[20140]: VertexAttrib2fNV (will be remapped) */
+ /* _mesa_function_pool[20448]: VertexAttrib2fNV (will be remapped) */
"iff\0"
"glVertexAttrib2fNV\0"
"\0"
- /* _mesa_function_pool[20164]: ShaderSourceARB (will be remapped) */
+ /* _mesa_function_pool[20472]: ShaderSourceARB (will be remapped) */
"iipp\0"
"glShaderSource\0"
"glShaderSourceARB\0"
"\0"
- /* _mesa_function_pool[20203]: FragmentMaterialiSGIX (dynamic) */
+ /* _mesa_function_pool[20511]: FragmentMaterialiSGIX (dynamic) */
"iii\0"
"glFragmentMaterialiSGIX\0"
"\0"
- /* _mesa_function_pool[20232]: EvalCoord2dv (offset 233) */
+ /* _mesa_function_pool[20540]: EvalCoord2dv (offset 233) */
"p\0"
"glEvalCoord2dv\0"
"\0"
- /* _mesa_function_pool[20250]: VertexAttrib3svARB (will be remapped) */
+ /* _mesa_function_pool[20558]: VertexAttrib3svARB (will be remapped) */
"ip\0"
"glVertexAttrib3sv\0"
"glVertexAttrib3svARB\0"
"\0"
- /* _mesa_function_pool[20293]: ColorMaterial (offset 151) */
+ /* _mesa_function_pool[20601]: ColorMaterial (offset 151) */
"ii\0"
"glColorMaterial\0"
"\0"
- /* _mesa_function_pool[20313]: CompressedTexSubImage3DARB (will be remapped) */
+ /* _mesa_function_pool[20621]: CompressedTexSubImage3DARB (will be remapped) */
"iiiiiiiiiip\0"
"glCompressedTexSubImage3D\0"
"glCompressedTexSubImage3DARB\0"
"\0"
- /* _mesa_function_pool[20381]: WindowPos2ivMESA (will be remapped) */
+ /* _mesa_function_pool[20689]: WindowPos2ivMESA (will be remapped) */
"p\0"
"glWindowPos2iv\0"
"glWindowPos2ivARB\0"
"glWindowPos2ivMESA\0"
"\0"
- /* _mesa_function_pool[20436]: IsFramebufferEXT (will be remapped) */
+ /* _mesa_function_pool[20744]: IsFramebufferEXT (will be remapped) */
"i\0"
"glIsFramebuffer\0"
"glIsFramebufferEXT\0"
"\0"
- /* _mesa_function_pool[20474]: Uniform4ivARB (will be remapped) */
+ /* _mesa_function_pool[20782]: Uniform4ivARB (will be remapped) */
"iip\0"
"glUniform4iv\0"
"glUniform4ivARB\0"
"\0"
- /* _mesa_function_pool[20508]: GetVertexAttribdvARB (will be remapped) */
+ /* _mesa_function_pool[20816]: GetVertexAttribdvARB (will be remapped) */
"iip\0"
"glGetVertexAttribdv\0"
"glGetVertexAttribdvARB\0"
"\0"
- /* _mesa_function_pool[20556]: TexBumpParameterivATI (will be remapped) */
+ /* _mesa_function_pool[20864]: TexBumpParameterivATI (will be remapped) */
"ip\0"
"glTexBumpParameterivATI\0"
"\0"
- /* _mesa_function_pool[20584]: GetSeparableFilter (offset 359) */
+ /* _mesa_function_pool[20892]: GetSeparableFilter (offset 359) */
"iiippp\0"
"glGetSeparableFilter\0"
"glGetSeparableFilterEXT\0"
"\0"
- /* _mesa_function_pool[20637]: Binormal3dEXT (dynamic) */
+ /* _mesa_function_pool[20945]: Binormal3dEXT (dynamic) */
"ddd\0"
"glBinormal3dEXT\0"
"\0"
- /* _mesa_function_pool[20658]: SpriteParameteriSGIX (dynamic) */
+ /* _mesa_function_pool[20966]: SpriteParameteriSGIX (dynamic) */
"ii\0"
"glSpriteParameteriSGIX\0"
"\0"
- /* _mesa_function_pool[20685]: RequestResidentProgramsNV (will be remapped) */
+ /* _mesa_function_pool[20993]: RequestResidentProgramsNV (will be remapped) */
"ip\0"
"glRequestResidentProgramsNV\0"
"\0"
- /* _mesa_function_pool[20717]: TagSampleBufferSGIX (dynamic) */
+ /* _mesa_function_pool[21025]: TagSampleBufferSGIX (dynamic) */
"\0"
"glTagSampleBufferSGIX\0"
"\0"
- /* _mesa_function_pool[20741]: TransformFeedbackVaryingsEXT (will be remapped) */
+ /* _mesa_function_pool[21049]: TransformFeedbackVaryingsEXT (will be remapped) */
"iipi\0"
"glTransformFeedbackVaryingsEXT\0"
"glTransformFeedbackVaryings\0"
"\0"
- /* _mesa_function_pool[20806]: FeedbackBuffer (offset 194) */
+ /* _mesa_function_pool[21114]: FeedbackBuffer (offset 194) */
"iip\0"
"glFeedbackBuffer\0"
"\0"
- /* _mesa_function_pool[20828]: RasterPos2iv (offset 67) */
+ /* _mesa_function_pool[21136]: RasterPos2iv (offset 67) */
"p\0"
"glRasterPos2iv\0"
"\0"
- /* _mesa_function_pool[20846]: TexImage1D (offset 182) */
+ /* _mesa_function_pool[21154]: TexImage1D (offset 182) */
"iiiiiiip\0"
"glTexImage1D\0"
"\0"
- /* _mesa_function_pool[20869]: ListParameterivSGIX (dynamic) */
+ /* _mesa_function_pool[21177]: ListParameterivSGIX (dynamic) */
"iip\0"
"glListParameterivSGIX\0"
"\0"
- /* _mesa_function_pool[20896]: MultiDrawElementsEXT (will be remapped) */
+ /* _mesa_function_pool[21204]: MultiDrawElementsEXT (will be remapped) */
"ipipi\0"
"glMultiDrawElements\0"
"glMultiDrawElementsEXT\0"
"\0"
- /* _mesa_function_pool[20946]: Color3s (offset 17) */
+ /* _mesa_function_pool[21254]: Color3s (offset 17) */
"iii\0"
"glColor3s\0"
"\0"
- /* _mesa_function_pool[20961]: Uniform1ivARB (will be remapped) */
+ /* _mesa_function_pool[21269]: Uniform1ivARB (will be remapped) */
"iip\0"
"glUniform1iv\0"
"glUniform1ivARB\0"
"\0"
- /* _mesa_function_pool[20995]: WindowPos2sMESA (will be remapped) */
+ /* _mesa_function_pool[21303]: WindowPos2sMESA (will be remapped) */
"ii\0"
"glWindowPos2s\0"
"glWindowPos2sARB\0"
"glWindowPos2sMESA\0"
"\0"
- /* _mesa_function_pool[21048]: WeightusvARB (dynamic) */
+ /* _mesa_function_pool[21356]: WeightusvARB (dynamic) */
"ip\0"
"glWeightusvARB\0"
"\0"
- /* _mesa_function_pool[21067]: TexCoordPointer (offset 320) */
+ /* _mesa_function_pool[21375]: TexCoordPointer (offset 320) */
"iiip\0"
"glTexCoordPointer\0"
"\0"
- /* _mesa_function_pool[21091]: FogCoordPointerEXT (will be remapped) */
+ /* _mesa_function_pool[21399]: FogCoordPointerEXT (will be remapped) */
"iip\0"
"glFogCoordPointer\0"
"glFogCoordPointerEXT\0"
"\0"
- /* _mesa_function_pool[21135]: IndexMaterialEXT (dynamic) */
+ /* _mesa_function_pool[21443]: IndexMaterialEXT (dynamic) */
"ii\0"
"glIndexMaterialEXT\0"
"\0"
- /* _mesa_function_pool[21158]: Color3i (offset 15) */
+ /* _mesa_function_pool[21466]: Color3i (offset 15) */
"iii\0"
"glColor3i\0"
"\0"
- /* _mesa_function_pool[21173]: FrontFace (offset 157) */
+ /* _mesa_function_pool[21481]: FrontFace (offset 157) */
"i\0"
"glFrontFace\0"
"\0"
- /* _mesa_function_pool[21188]: EvalCoord2d (offset 232) */
+ /* _mesa_function_pool[21496]: EvalCoord2d (offset 232) */
"dd\0"
"glEvalCoord2d\0"
"\0"
- /* _mesa_function_pool[21206]: SecondaryColor3ubvEXT (will be remapped) */
+ /* _mesa_function_pool[21514]: SecondaryColor3ubvEXT (will be remapped) */
"p\0"
"glSecondaryColor3ubv\0"
"glSecondaryColor3ubvEXT\0"
"\0"
- /* _mesa_function_pool[21254]: EvalCoord2f (offset 234) */
+ /* _mesa_function_pool[21562]: EvalCoord2f (offset 234) */
"ff\0"
"glEvalCoord2f\0"
"\0"
- /* _mesa_function_pool[21272]: VertexAttrib4dvARB (will be remapped) */
+ /* _mesa_function_pool[21580]: VertexAttrib4dvARB (will be remapped) */
"ip\0"
"glVertexAttrib4dv\0"
"glVertexAttrib4dvARB\0"
"\0"
- /* _mesa_function_pool[21315]: BindAttribLocationARB (will be remapped) */
+ /* _mesa_function_pool[21623]: BindAttribLocationARB (will be remapped) */
"iip\0"
"glBindAttribLocation\0"
"glBindAttribLocationARB\0"
"\0"
- /* _mesa_function_pool[21365]: Color3b (offset 9) */
+ /* _mesa_function_pool[21673]: Color3b (offset 9) */
"iii\0"
"glColor3b\0"
"\0"
- /* _mesa_function_pool[21380]: MultiTexCoord2dARB (offset 384) */
+ /* _mesa_function_pool[21688]: MultiTexCoord2dARB (offset 384) */
"idd\0"
"glMultiTexCoord2d\0"
"glMultiTexCoord2dARB\0"
"\0"
- /* _mesa_function_pool[21424]: ExecuteProgramNV (will be remapped) */
+ /* _mesa_function_pool[21732]: ExecuteProgramNV (will be remapped) */
"iip\0"
"glExecuteProgramNV\0"
"\0"
- /* _mesa_function_pool[21448]: Color3f (offset 13) */
+ /* _mesa_function_pool[21756]: Color3f (offset 13) */
"fff\0"
"glColor3f\0"
"\0"
- /* _mesa_function_pool[21463]: LightEnviSGIX (dynamic) */
+ /* _mesa_function_pool[21771]: LightEnviSGIX (dynamic) */
"ii\0"
"glLightEnviSGIX\0"
"\0"
- /* _mesa_function_pool[21483]: Color3d (offset 11) */
+ /* _mesa_function_pool[21791]: Color3d (offset 11) */
"ddd\0"
"glColor3d\0"
"\0"
- /* _mesa_function_pool[21498]: Normal3dv (offset 55) */
+ /* _mesa_function_pool[21806]: Normal3dv (offset 55) */
"p\0"
"glNormal3dv\0"
"\0"
- /* _mesa_function_pool[21513]: Lightf (offset 159) */
+ /* _mesa_function_pool[21821]: Lightf (offset 159) */
"iif\0"
"glLightf\0"
"\0"
- /* _mesa_function_pool[21527]: ReplacementCodeuiSUN (dynamic) */
+ /* _mesa_function_pool[21835]: ReplacementCodeuiSUN (dynamic) */
"i\0"
"glReplacementCodeuiSUN\0"
"\0"
- /* _mesa_function_pool[21553]: MatrixMode (offset 293) */
+ /* _mesa_function_pool[21861]: MatrixMode (offset 293) */
"i\0"
"glMatrixMode\0"
"\0"
- /* _mesa_function_pool[21569]: GetPixelMapusv (offset 273) */
+ /* _mesa_function_pool[21877]: GetPixelMapusv (offset 273) */
"ip\0"
"glGetPixelMapusv\0"
"\0"
- /* _mesa_function_pool[21590]: Lighti (offset 161) */
+ /* _mesa_function_pool[21898]: Lighti (offset 161) */
"iii\0"
"glLighti\0"
"\0"
- /* _mesa_function_pool[21604]: VertexAttribPointerNV (will be remapped) */
+ /* _mesa_function_pool[21912]: VertexAttribPointerNV (will be remapped) */
"iiiip\0"
"glVertexAttribPointerNV\0"
"\0"
- /* _mesa_function_pool[21635]: ClearDepthf (will be remapped) */
+ /* _mesa_function_pool[21943]: ClearDepthf (will be remapped) */
"f\0"
"glClearDepthf\0"
"\0"
- /* _mesa_function_pool[21652]: GetBooleanIndexedvEXT (will be remapped) */
+ /* _mesa_function_pool[21960]: GetBooleanIndexedvEXT (will be remapped) */
"iip\0"
"glGetBooleanIndexedvEXT\0"
"glGetBooleani_v\0"
"\0"
- /* _mesa_function_pool[21697]: GetFramebufferAttachmentParameterivEXT (will be remapped) */
+ /* _mesa_function_pool[22005]: GetFramebufferAttachmentParameterivEXT (will be remapped) */
"iiip\0"
"glGetFramebufferAttachmentParameteriv\0"
"glGetFramebufferAttachmentParameterivEXT\0"
"\0"
- /* _mesa_function_pool[21782]: PixelTransformParameterfEXT (dynamic) */
+ /* _mesa_function_pool[22090]: PixelTransformParameterfEXT (dynamic) */
"iif\0"
"glPixelTransformParameterfEXT\0"
"\0"
- /* _mesa_function_pool[21817]: MultiTexCoord4dvARB (offset 401) */
+ /* _mesa_function_pool[22125]: MultiTexCoord4dvARB (offset 401) */
"ip\0"
"glMultiTexCoord4dv\0"
"glMultiTexCoord4dvARB\0"
"\0"
- /* _mesa_function_pool[21862]: PixelTransformParameteriEXT (dynamic) */
+ /* _mesa_function_pool[22170]: PixelTransformParameteriEXT (dynamic) */
"iii\0"
"glPixelTransformParameteriEXT\0"
"\0"
- /* _mesa_function_pool[21897]: GetDoublev (offset 260) */
+ /* _mesa_function_pool[22205]: GetDoublev (offset 260) */
"ip\0"
"glGetDoublev\0"
"\0"
- /* _mesa_function_pool[21914]: MultMatrixd (offset 295) */
+ /* _mesa_function_pool[22222]: MultMatrixd (offset 295) */
"p\0"
"glMultMatrixd\0"
"\0"
- /* _mesa_function_pool[21931]: MultMatrixf (offset 294) */
+ /* _mesa_function_pool[22239]: MultMatrixf (offset 294) */
"p\0"
"glMultMatrixf\0"
"\0"
- /* _mesa_function_pool[21948]: VertexAttribI4bvEXT (will be remapped) */
+ /* _mesa_function_pool[22256]: VertexAttribI4bvEXT (will be remapped) */
"ip\0"
"glVertexAttribI4bvEXT\0"
"glVertexAttribI4bv\0"
"\0"
- /* _mesa_function_pool[21993]: TexCoord2fColor4ubVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[22301]: TexCoord2fColor4ubVertex3fSUN (dynamic) */
"ffiiiifff\0"
"glTexCoord2fColor4ubVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[22036]: Uniform1iARB (will be remapped) */
+ /* _mesa_function_pool[22344]: Uniform1iARB (will be remapped) */
"ii\0"
"glUniform1i\0"
"glUniform1iARB\0"
"\0"
- /* _mesa_function_pool[22067]: VertexAttribPointerARB (will be remapped) */
+ /* _mesa_function_pool[22375]: VertexAttribPointerARB (will be remapped) */
"iiiiip\0"
"glVertexAttribPointer\0"
"glVertexAttribPointerARB\0"
"\0"
- /* _mesa_function_pool[22122]: VertexAttrib3sNV (will be remapped) */
+ /* _mesa_function_pool[22430]: VertexAttrib3sNV (will be remapped) */
"iiii\0"
"glVertexAttrib3sNV\0"
"\0"
- /* _mesa_function_pool[22147]: SharpenTexFuncSGIS (dynamic) */
+ /* _mesa_function_pool[22455]: SharpenTexFuncSGIS (dynamic) */
"iip\0"
"glSharpenTexFuncSGIS\0"
"\0"
- /* _mesa_function_pool[22173]: MultiTexCoord4fvARB (offset 403) */
+ /* _mesa_function_pool[22481]: MultiTexCoord4fvARB (offset 403) */
"ip\0"
"glMultiTexCoord4fv\0"
"glMultiTexCoord4fvARB\0"
"\0"
- /* _mesa_function_pool[22218]: Uniform2uiEXT (will be remapped) */
+ /* _mesa_function_pool[22526]: Uniform2uiEXT (will be remapped) */
"iii\0"
"glUniform2uiEXT\0"
"glUniform2ui\0"
"\0"
- /* _mesa_function_pool[22252]: UniformMatrix2x3fv (will be remapped) */
+ /* _mesa_function_pool[22560]: UniformMatrix2x3fv (will be remapped) */
"iiip\0"
"glUniformMatrix2x3fv\0"
"\0"
- /* _mesa_function_pool[22279]: TrackMatrixNV (will be remapped) */
- "iiii\0"
- "glTrackMatrixNV\0"
+ /* _mesa_function_pool[22587]: SamplerParameteri (will be remapped) */
+ "iii\0"
+ "glSamplerParameteri\0"
"\0"
- /* _mesa_function_pool[22301]: CombinerParameteriNV (will be remapped) */
+ /* _mesa_function_pool[22612]: SamplerParameterf (will be remapped) */
+ "iif\0"
+ "glSamplerParameterf\0"
+ "\0"
+ /* _mesa_function_pool[22637]: CombinerParameteriNV (will be remapped) */
"ii\0"
"glCombinerParameteriNV\0"
"\0"
- /* _mesa_function_pool[22328]: DeleteAsyncMarkersSGIX (dynamic) */
+ /* _mesa_function_pool[22664]: DeleteAsyncMarkersSGIX (dynamic) */
"ii\0"
"glDeleteAsyncMarkersSGIX\0"
"\0"
- /* _mesa_function_pool[22357]: ReplacementCodeusSUN (dynamic) */
+ /* _mesa_function_pool[22693]: ReplacementCodeusSUN (dynamic) */
"i\0"
"glReplacementCodeusSUN\0"
"\0"
- /* _mesa_function_pool[22383]: IsAsyncMarkerSGIX (dynamic) */
+ /* _mesa_function_pool[22719]: IsAsyncMarkerSGIX (dynamic) */
"i\0"
"glIsAsyncMarkerSGIX\0"
"\0"
- /* _mesa_function_pool[22406]: FrameZoomSGIX (dynamic) */
+ /* _mesa_function_pool[22742]: FrameZoomSGIX (dynamic) */
"i\0"
"glFrameZoomSGIX\0"
"\0"
- /* _mesa_function_pool[22425]: Normal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[22761]: Normal3fVertex3fvSUN (dynamic) */
"pp\0"
"glNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[22452]: RasterPos4sv (offset 85) */
+ /* _mesa_function_pool[22788]: RasterPos4sv (offset 85) */
"p\0"
"glRasterPos4sv\0"
"\0"
- /* _mesa_function_pool[22470]: VertexAttrib4NsvARB (will be remapped) */
+ /* _mesa_function_pool[22806]: VertexAttrib4NsvARB (will be remapped) */
"ip\0"
"glVertexAttrib4Nsv\0"
"glVertexAttrib4NsvARB\0"
"\0"
- /* _mesa_function_pool[22515]: VertexAttrib3fvARB (will be remapped) */
+ /* _mesa_function_pool[22851]: VertexAttrib3fvARB (will be remapped) */
"ip\0"
"glVertexAttrib3fv\0"
"glVertexAttrib3fvARB\0"
"\0"
- /* _mesa_function_pool[22558]: ClearColor (offset 206) */
+ /* _mesa_function_pool[22894]: ClearColor (offset 206) */
"ffff\0"
"glClearColor\0"
"\0"
- /* _mesa_function_pool[22577]: GetSynciv (will be remapped) */
+ /* _mesa_function_pool[22913]: GetSynciv (will be remapped) */
"iiipp\0"
"glGetSynciv\0"
"\0"
- /* _mesa_function_pool[22596]: ClearColorIiEXT (will be remapped) */
+ /* _mesa_function_pool[22932]: ClearColorIiEXT (will be remapped) */
"iiii\0"
"glClearColorIiEXT\0"
"\0"
- /* _mesa_function_pool[22620]: DeleteFramebuffersEXT (will be remapped) */
+ /* _mesa_function_pool[22956]: DeleteFramebuffersEXT (will be remapped) */
"ip\0"
"glDeleteFramebuffers\0"
"glDeleteFramebuffersEXT\0"
"\0"
- /* _mesa_function_pool[22669]: GlobalAlphaFactorsSUN (dynamic) */
+ /* _mesa_function_pool[23005]: GlobalAlphaFactorsSUN (dynamic) */
"i\0"
"glGlobalAlphaFactorsSUN\0"
"\0"
- /* _mesa_function_pool[22696]: IsEnabledIndexedEXT (will be remapped) */
+ /* _mesa_function_pool[23032]: IsEnabledIndexedEXT (will be remapped) */
"ii\0"
"glIsEnabledIndexedEXT\0"
"glIsEnabledi\0"
"\0"
- /* _mesa_function_pool[22735]: TexEnviv (offset 187) */
+ /* _mesa_function_pool[23071]: TexEnviv (offset 187) */
"iip\0"
"glTexEnviv\0"
"\0"
- /* _mesa_function_pool[22751]: TexSubImage3D (offset 372) */
+ /* _mesa_function_pool[23087]: TexSubImage3D (offset 372) */
"iiiiiiiiiip\0"
"glTexSubImage3D\0"
"glTexSubImage3DEXT\0"
"\0"
- /* _mesa_function_pool[22799]: Tangent3fEXT (dynamic) */
+ /* _mesa_function_pool[23135]: Tangent3fEXT (dynamic) */
"fff\0"
"glTangent3fEXT\0"
"\0"
- /* _mesa_function_pool[22819]: SecondaryColor3uivEXT (will be remapped) */
+ /* _mesa_function_pool[23155]: SecondaryColor3uivEXT (will be remapped) */
"p\0"
"glSecondaryColor3uiv\0"
"glSecondaryColor3uivEXT\0"
"\0"
- /* _mesa_function_pool[22867]: MatrixIndexubvARB (dynamic) */
+ /* _mesa_function_pool[23203]: MatrixIndexubvARB (dynamic) */
"ip\0"
"glMatrixIndexubvARB\0"
"\0"
- /* _mesa_function_pool[22891]: Color4fNormal3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[23227]: Color4fNormal3fVertex3fSUN (dynamic) */
"ffffffffff\0"
"glColor4fNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[22932]: PixelTexGenParameterfSGIS (will be remapped) */
+ /* _mesa_function_pool[23268]: PixelTexGenParameterfSGIS (will be remapped) */
"if\0"
"glPixelTexGenParameterfSGIS\0"
"\0"
- /* _mesa_function_pool[22964]: CreateShader (will be remapped) */
+ /* _mesa_function_pool[23300]: CreateShader (will be remapped) */
"i\0"
"glCreateShader\0"
"\0"
- /* _mesa_function_pool[22982]: GetColorTableParameterfv (offset 344) */
+ /* _mesa_function_pool[23318]: GetColorTableParameterfv (offset 344) */
"iip\0"
"glGetColorTableParameterfv\0"
"glGetColorTableParameterfvSGI\0"
"glGetColorTableParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[23074]: FragmentLightModelfvSGIX (dynamic) */
+ /* _mesa_function_pool[23410]: FragmentLightModelfvSGIX (dynamic) */
"ip\0"
"glFragmentLightModelfvSGIX\0"
"\0"
- /* _mesa_function_pool[23105]: Bitmap (offset 8) */
+ /* _mesa_function_pool[23441]: Bitmap (offset 8) */
"iiffffp\0"
"glBitmap\0"
"\0"
- /* _mesa_function_pool[23123]: MultiTexCoord3fARB (offset 394) */
+ /* _mesa_function_pool[23459]: MultiTexCoord3fARB (offset 394) */
"ifff\0"
"glMultiTexCoord3f\0"
"glMultiTexCoord3fARB\0"
"\0"
- /* _mesa_function_pool[23168]: GetTexLevelParameterfv (offset 284) */
+ /* _mesa_function_pool[23504]: GetTexLevelParameterfv (offset 284) */
"iiip\0"
"glGetTexLevelParameterfv\0"
"\0"
- /* _mesa_function_pool[23199]: GetPixelTexGenParameterfvSGIS (will be remapped) */
+ /* _mesa_function_pool[23535]: GetPixelTexGenParameterfvSGIS (will be remapped) */
"ip\0"
"glGetPixelTexGenParameterfvSGIS\0"
"\0"
- /* _mesa_function_pool[23235]: GenFramebuffersEXT (will be remapped) */
+ /* _mesa_function_pool[23571]: GenFramebuffersEXT (will be remapped) */
"ip\0"
"glGenFramebuffers\0"
"glGenFramebuffersEXT\0"
"\0"
- /* _mesa_function_pool[23278]: VertexAttribDivisor (will be remapped) */
+ /* _mesa_function_pool[23614]: VertexAttribDivisor (will be remapped) */
"ii\0"
"glVertexAttribDivisor\0"
"\0"
- /* _mesa_function_pool[23304]: GetProgramParameterdvNV (will be remapped) */
+ /* _mesa_function_pool[23640]: GetProgramParameterdvNV (will be remapped) */
"iiip\0"
"glGetProgramParameterdvNV\0"
"\0"
- /* _mesa_function_pool[23336]: Vertex2sv (offset 133) */
+ /* _mesa_function_pool[23672]: Vertex2sv (offset 133) */
"p\0"
"glVertex2sv\0"
"\0"
- /* _mesa_function_pool[23351]: GetIntegerv (offset 263) */
+ /* _mesa_function_pool[23687]: GetIntegerv (offset 263) */
"ip\0"
"glGetIntegerv\0"
"\0"
- /* _mesa_function_pool[23369]: IsVertexArrayAPPLE (will be remapped) */
+ /* _mesa_function_pool[23705]: IsVertexArrayAPPLE (will be remapped) */
"i\0"
"glIsVertexArray\0"
"glIsVertexArrayAPPLE\0"
"\0"
- /* _mesa_function_pool[23409]: FragmentLightfvSGIX (dynamic) */
+ /* _mesa_function_pool[23745]: FragmentLightfvSGIX (dynamic) */
"iip\0"
"glFragmentLightfvSGIX\0"
"\0"
- /* _mesa_function_pool[23436]: VertexAttribDivisorARB (will be remapped) */
+ /* _mesa_function_pool[23772]: VertexAttribDivisorARB (will be remapped) */
"ii\0"
"glVertexAttribDivisorARB\0"
"\0"
- /* _mesa_function_pool[23465]: DetachShader (will be remapped) */
+ /* _mesa_function_pool[23801]: DetachShader (will be remapped) */
"ii\0"
"glDetachShader\0"
"\0"
- /* _mesa_function_pool[23484]: VertexAttrib4NubARB (will be remapped) */
+ /* _mesa_function_pool[23820]: VertexAttrib4NubARB (will be remapped) */
"iiiii\0"
"glVertexAttrib4Nub\0"
"glVertexAttrib4NubARB\0"
"\0"
- /* _mesa_function_pool[23532]: GetProgramEnvParameterfvARB (will be remapped) */
+ /* _mesa_function_pool[23868]: GetProgramEnvParameterfvARB (will be remapped) */
"iip\0"
"glGetProgramEnvParameterfvARB\0"
"\0"
- /* _mesa_function_pool[23567]: GetTrackMatrixivNV (will be remapped) */
+ /* _mesa_function_pool[23903]: GetTrackMatrixivNV (will be remapped) */
"iiip\0"
"glGetTrackMatrixivNV\0"
"\0"
- /* _mesa_function_pool[23594]: VertexAttrib3svNV (will be remapped) */
+ /* _mesa_function_pool[23930]: VertexAttrib3svNV (will be remapped) */
"ip\0"
"glVertexAttrib3svNV\0"
"\0"
- /* _mesa_function_pool[23618]: Uniform4fvARB (will be remapped) */
+ /* _mesa_function_pool[23954]: Uniform4fvARB (will be remapped) */
"iip\0"
"glUniform4fv\0"
"glUniform4fvARB\0"
"\0"
- /* _mesa_function_pool[23652]: MultTransposeMatrixfARB (will be remapped) */
+ /* _mesa_function_pool[23988]: MultTransposeMatrixfARB (will be remapped) */
"p\0"
"glMultTransposeMatrixf\0"
"glMultTransposeMatrixfARB\0"
"\0"
- /* _mesa_function_pool[23704]: GetTexEnviv (offset 277) */
+ /* _mesa_function_pool[24040]: GetTexEnviv (offset 277) */
"iip\0"
"glGetTexEnviv\0"
"\0"
- /* _mesa_function_pool[23723]: ColorFragmentOp1ATI (will be remapped) */
+ /* _mesa_function_pool[24059]: ColorFragmentOp1ATI (will be remapped) */
"iiiiiii\0"
"glColorFragmentOp1ATI\0"
"\0"
- /* _mesa_function_pool[23754]: GetUniformfvARB (will be remapped) */
+ /* _mesa_function_pool[24090]: GetUniformfvARB (will be remapped) */
"iip\0"
"glGetUniformfv\0"
"glGetUniformfvARB\0"
"\0"
- /* _mesa_function_pool[23792]: EGLImageTargetRenderbufferStorageOES (will be remapped) */
+ /* _mesa_function_pool[24128]: EGLImageTargetRenderbufferStorageOES (will be remapped) */
"ip\0"
"glEGLImageTargetRenderbufferStorageOES\0"
"\0"
- /* _mesa_function_pool[23835]: VertexAttribI2ivEXT (will be remapped) */
+ /* _mesa_function_pool[24171]: VertexAttribI2ivEXT (will be remapped) */
"ip\0"
"glVertexAttribI2ivEXT\0"
"glVertexAttribI2iv\0"
"\0"
- /* _mesa_function_pool[23880]: PopClientAttrib (offset 334) */
+ /* _mesa_function_pool[24216]: PopClientAttrib (offset 334) */
"\0"
"glPopClientAttrib\0"
"\0"
- /* _mesa_function_pool[23900]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[24236]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */
"iffffffffffff\0"
"glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[23971]: DetachObjectARB (will be remapped) */
+ /* _mesa_function_pool[24307]: DetachObjectARB (will be remapped) */
"ii\0"
"glDetachObjectARB\0"
"\0"
- /* _mesa_function_pool[23993]: VertexBlendARB (dynamic) */
+ /* _mesa_function_pool[24329]: VertexBlendARB (dynamic) */
"i\0"
"glVertexBlendARB\0"
"\0"
- /* _mesa_function_pool[24013]: WindowPos3iMESA (will be remapped) */
+ /* _mesa_function_pool[24349]: WindowPos3iMESA (will be remapped) */
"iii\0"
"glWindowPos3i\0"
"glWindowPos3iARB\0"
"glWindowPos3iMESA\0"
"\0"
- /* _mesa_function_pool[24067]: SeparableFilter2D (offset 360) */
+ /* _mesa_function_pool[24403]: SeparableFilter2D (offset 360) */
"iiiiiipp\0"
"glSeparableFilter2D\0"
"glSeparableFilter2DEXT\0"
"\0"
- /* _mesa_function_pool[24120]: ProgramParameteriARB (will be remapped) */
+ /* _mesa_function_pool[24456]: ProgramParameteriARB (will be remapped) */
"iii\0"
"glProgramParameteriARB\0"
"\0"
- /* _mesa_function_pool[24148]: Map1d (offset 220) */
+ /* _mesa_function_pool[24484]: Map1d (offset 220) */
"iddiip\0"
"glMap1d\0"
"\0"
- /* _mesa_function_pool[24164]: Map1f (offset 221) */
+ /* _mesa_function_pool[24500]: Map1f (offset 221) */
"iffiip\0"
"glMap1f\0"
"\0"
- /* _mesa_function_pool[24180]: CompressedTexImage2DARB (will be remapped) */
+ /* _mesa_function_pool[24516]: CompressedTexImage2DARB (will be remapped) */
"iiiiiiip\0"
"glCompressedTexImage2D\0"
"glCompressedTexImage2DARB\0"
"\0"
- /* _mesa_function_pool[24239]: ArrayElement (offset 306) */
+ /* _mesa_function_pool[24575]: ArrayElement (offset 306) */
"i\0"
"glArrayElement\0"
"glArrayElementEXT\0"
"\0"
- /* _mesa_function_pool[24275]: TexImage2D (offset 183) */
+ /* _mesa_function_pool[24611]: TexImage2D (offset 183) */
"iiiiiiiip\0"
"glTexImage2D\0"
"\0"
- /* _mesa_function_pool[24299]: DepthBoundsEXT (will be remapped) */
+ /* _mesa_function_pool[24635]: DepthBoundsEXT (will be remapped) */
"dd\0"
"glDepthBoundsEXT\0"
"\0"
- /* _mesa_function_pool[24320]: ProgramParameters4fvNV (will be remapped) */
+ /* _mesa_function_pool[24656]: ProgramParameters4fvNV (will be remapped) */
"iiip\0"
"glProgramParameters4fvNV\0"
"\0"
- /* _mesa_function_pool[24351]: DeformationMap3fSGIX (dynamic) */
+ /* _mesa_function_pool[24687]: DeformationMap3fSGIX (dynamic) */
"iffiiffiiffiip\0"
"glDeformationMap3fSGIX\0"
"\0"
- /* _mesa_function_pool[24390]: GetProgramivNV (will be remapped) */
+ /* _mesa_function_pool[24726]: GetProgramivNV (will be remapped) */
"iip\0"
"glGetProgramivNV\0"
"\0"
- /* _mesa_function_pool[24412]: GetFragDataLocationEXT (will be remapped) */
+ /* _mesa_function_pool[24748]: GetFragDataLocationEXT (will be remapped) */
"ip\0"
"glGetFragDataLocationEXT\0"
"glGetFragDataLocation\0"
"\0"
- /* _mesa_function_pool[24463]: GetMinmaxParameteriv (offset 366) */
+ /* _mesa_function_pool[24799]: GetMinmaxParameteriv (offset 366) */
"iip\0"
"glGetMinmaxParameteriv\0"
"glGetMinmaxParameterivEXT\0"
"\0"
- /* _mesa_function_pool[24517]: PixelTransferf (offset 247) */
+ /* _mesa_function_pool[24853]: PixelTransferf (offset 247) */
"if\0"
"glPixelTransferf\0"
"\0"
- /* _mesa_function_pool[24538]: CopyTexImage1D (offset 323) */
+ /* _mesa_function_pool[24874]: CopyTexImage1D (offset 323) */
"iiiiiii\0"
"glCopyTexImage1D\0"
"glCopyTexImage1DEXT\0"
"\0"
- /* _mesa_function_pool[24584]: PushMatrix (offset 298) */
+ /* _mesa_function_pool[24920]: PushMatrix (offset 298) */
"\0"
"glPushMatrix\0"
"\0"
- /* _mesa_function_pool[24599]: Fogiv (offset 156) */
+ /* _mesa_function_pool[24935]: Fogiv (offset 156) */
"ip\0"
"glFogiv\0"
"\0"
- /* _mesa_function_pool[24611]: TexCoord1dv (offset 95) */
+ /* _mesa_function_pool[24947]: TexCoord1dv (offset 95) */
"p\0"
"glTexCoord1dv\0"
"\0"
- /* _mesa_function_pool[24628]: AlphaFragmentOp3ATI (will be remapped) */
+ /* _mesa_function_pool[24964]: AlphaFragmentOp3ATI (will be remapped) */
"iiiiiiiiiiii\0"
"glAlphaFragmentOp3ATI\0"
"\0"
- /* _mesa_function_pool[24664]: PixelTransferi (offset 248) */
+ /* _mesa_function_pool[25000]: PixelTransferi (offset 248) */
"ii\0"
"glPixelTransferi\0"
"\0"
- /* _mesa_function_pool[24685]: GetVertexAttribdvNV (will be remapped) */
+ /* _mesa_function_pool[25021]: GetVertexAttribdvNV (will be remapped) */
"iip\0"
"glGetVertexAttribdvNV\0"
"\0"
- /* _mesa_function_pool[24712]: VertexAttrib3fvNV (will be remapped) */
+ /* _mesa_function_pool[25048]: VertexAttrib3fvNV (will be remapped) */
"ip\0"
"glVertexAttrib3fvNV\0"
"\0"
- /* _mesa_function_pool[24736]: Rotatef (offset 300) */
+ /* _mesa_function_pool[25072]: Rotatef (offset 300) */
"ffff\0"
"glRotatef\0"
"\0"
- /* _mesa_function_pool[24752]: GetFinalCombinerInputParameterivNV (will be remapped) */
+ /* _mesa_function_pool[25088]: GetFinalCombinerInputParameterivNV (will be remapped) */
"iip\0"
"glGetFinalCombinerInputParameterivNV\0"
"\0"
- /* _mesa_function_pool[24794]: Vertex3i (offset 138) */
+ /* _mesa_function_pool[25130]: Vertex3i (offset 138) */
"iii\0"
"glVertex3i\0"
"\0"
- /* _mesa_function_pool[24810]: Vertex3f (offset 136) */
+ /* _mesa_function_pool[25146]: Vertex3f (offset 136) */
"fff\0"
"glVertex3f\0"
"\0"
- /* _mesa_function_pool[24826]: Clear (offset 203) */
+ /* _mesa_function_pool[25162]: Clear (offset 203) */
"i\0"
"glClear\0"
"\0"
- /* _mesa_function_pool[24837]: Vertex3d (offset 134) */
+ /* _mesa_function_pool[25173]: Vertex3d (offset 134) */
"ddd\0"
"glVertex3d\0"
"\0"
- /* _mesa_function_pool[24853]: GetMapParameterivNV (dynamic) */
+ /* _mesa_function_pool[25189]: GetMapParameterivNV (dynamic) */
"iip\0"
"glGetMapParameterivNV\0"
"\0"
- /* _mesa_function_pool[24880]: Uniform4iARB (will be remapped) */
+ /* _mesa_function_pool[25216]: Uniform4iARB (will be remapped) */
"iiiii\0"
"glUniform4i\0"
"glUniform4iARB\0"
"\0"
- /* _mesa_function_pool[24914]: ReadBuffer (offset 254) */
+ /* _mesa_function_pool[25250]: ReadBuffer (offset 254) */
"i\0"
"glReadBuffer\0"
"\0"
- /* _mesa_function_pool[24930]: ConvolutionParameteri (offset 352) */
+ /* _mesa_function_pool[25266]: ConvolutionParameteri (offset 352) */
"iii\0"
"glConvolutionParameteri\0"
"glConvolutionParameteriEXT\0"
"\0"
- /* _mesa_function_pool[24986]: Ortho (offset 296) */
+ /* _mesa_function_pool[25322]: Ortho (offset 296) */
"dddddd\0"
"glOrtho\0"
"\0"
- /* _mesa_function_pool[25002]: Binormal3sEXT (dynamic) */
+ /* _mesa_function_pool[25338]: Binormal3sEXT (dynamic) */
"iii\0"
"glBinormal3sEXT\0"
"\0"
- /* _mesa_function_pool[25023]: ListBase (offset 6) */
+ /* _mesa_function_pool[25359]: ListBase (offset 6) */
"i\0"
"glListBase\0"
"\0"
- /* _mesa_function_pool[25037]: Vertex3s (offset 140) */
+ /* _mesa_function_pool[25373]: VertexAttribI3ivEXT (will be remapped) */
+ "ip\0"
+ "glVertexAttribI3ivEXT\0"
+ "glVertexAttribI3iv\0"
+ "\0"
+ /* _mesa_function_pool[25418]: Vertex3s (offset 140) */
"iii\0"
"glVertex3s\0"
"\0"
- /* _mesa_function_pool[25053]: ConvolutionParameterf (offset 350) */
+ /* _mesa_function_pool[25434]: ConvolutionParameterf (offset 350) */
"iif\0"
"glConvolutionParameterf\0"
"glConvolutionParameterfEXT\0"
"\0"
- /* _mesa_function_pool[25109]: GetColorTableParameteriv (offset 345) */
+ /* _mesa_function_pool[25490]: GetColorTableParameteriv (offset 345) */
"iip\0"
"glGetColorTableParameteriv\0"
"glGetColorTableParameterivSGI\0"
"glGetColorTableParameterivEXT\0"
"\0"
- /* _mesa_function_pool[25201]: ProgramEnvParameter4dvARB (will be remapped) */
+ /* _mesa_function_pool[25582]: ProgramEnvParameter4dvARB (will be remapped) */
"iip\0"
"glProgramEnvParameter4dvARB\0"
"glProgramParameter4dvNV\0"
"\0"
- /* _mesa_function_pool[25258]: ShadeModel (offset 177) */
+ /* _mesa_function_pool[25639]: ShadeModel (offset 177) */
"i\0"
"glShadeModel\0"
"\0"
- /* _mesa_function_pool[25274]: VertexAttribs2fvNV (will be remapped) */
+ /* _mesa_function_pool[25655]: VertexAttribs2fvNV (will be remapped) */
"iip\0"
"glVertexAttribs2fvNV\0"
"\0"
- /* _mesa_function_pool[25300]: Rectiv (offset 91) */
+ /* _mesa_function_pool[25681]: Rectiv (offset 91) */
"pp\0"
"glRectiv\0"
"\0"
- /* _mesa_function_pool[25313]: UseProgramObjectARB (will be remapped) */
+ /* _mesa_function_pool[25694]: UseProgramObjectARB (will be remapped) */
"i\0"
"glUseProgram\0"
"glUseProgramObjectARB\0"
"\0"
- /* _mesa_function_pool[25351]: GetMapParameterfvNV (dynamic) */
+ /* _mesa_function_pool[25732]: GetMapParameterfvNV (dynamic) */
"iip\0"
"glGetMapParameterfvNV\0"
"\0"
- /* _mesa_function_pool[25378]: EndConditionalRenderNV (will be remapped) */
+ /* _mesa_function_pool[25759]: EndConditionalRenderNV (will be remapped) */
"\0"
"glEndConditionalRenderNV\0"
"glEndConditionalRender\0"
"\0"
- /* _mesa_function_pool[25428]: PassTexCoordATI (will be remapped) */
+ /* _mesa_function_pool[25809]: PassTexCoordATI (will be remapped) */
"iii\0"
"glPassTexCoordATI\0"
"\0"
- /* _mesa_function_pool[25451]: DeleteProgram (will be remapped) */
+ /* _mesa_function_pool[25832]: DeleteProgram (will be remapped) */
"i\0"
"glDeleteProgram\0"
"\0"
- /* _mesa_function_pool[25470]: Tangent3ivEXT (dynamic) */
- "p\0"
- "glTangent3ivEXT\0"
+ /* _mesa_function_pool[25851]: GetSamplerParameteriv (will be remapped) */
+ "iip\0"
+ "glGetSamplerParameteriv\0"
"\0"
- /* _mesa_function_pool[25489]: Tangent3dEXT (dynamic) */
+ /* _mesa_function_pool[25880]: Tangent3dEXT (dynamic) */
"ddd\0"
"glTangent3dEXT\0"
"\0"
- /* _mesa_function_pool[25509]: SecondaryColor3dvEXT (will be remapped) */
+ /* _mesa_function_pool[25900]: SecondaryColor3dvEXT (will be remapped) */
"p\0"
"glSecondaryColor3dv\0"
"glSecondaryColor3dvEXT\0"
"\0"
- /* _mesa_function_pool[25555]: AlphaFragmentOp2ATI (will be remapped) */
+ /* _mesa_function_pool[25946]: AlphaFragmentOp2ATI (will be remapped) */
"iiiiiiiii\0"
"glAlphaFragmentOp2ATI\0"
"\0"
- /* _mesa_function_pool[25588]: Vertex2fv (offset 129) */
+ /* _mesa_function_pool[25979]: Vertex2fv (offset 129) */
"p\0"
"glVertex2fv\0"
"\0"
- /* _mesa_function_pool[25603]: MultiDrawArraysEXT (will be remapped) */
+ /* _mesa_function_pool[25994]: MultiDrawArraysEXT (will be remapped) */
"ippi\0"
"glMultiDrawArrays\0"
"glMultiDrawArraysEXT\0"
"\0"
- /* _mesa_function_pool[25648]: BindRenderbufferEXT (will be remapped) */
+ /* _mesa_function_pool[26039]: BindRenderbufferEXT (will be remapped) */
"ii\0"
"glBindRenderbuffer\0"
"glBindRenderbufferEXT\0"
"\0"
- /* _mesa_function_pool[25693]: MultiTexCoord4dARB (offset 400) */
+ /* _mesa_function_pool[26084]: MultiTexCoord4dARB (offset 400) */
"idddd\0"
"glMultiTexCoord4d\0"
"glMultiTexCoord4dARB\0"
"\0"
- /* _mesa_function_pool[25739]: FramebufferTextureFaceARB (will be remapped) */
+ /* _mesa_function_pool[26130]: FramebufferTextureFaceARB (will be remapped) */
"iiiii\0"
"glFramebufferTextureFaceARB\0"
"\0"
- /* _mesa_function_pool[25774]: Vertex3sv (offset 141) */
+ /* _mesa_function_pool[26165]: Vertex3sv (offset 141) */
"p\0"
"glVertex3sv\0"
"\0"
- /* _mesa_function_pool[25789]: SecondaryColor3usEXT (will be remapped) */
+ /* _mesa_function_pool[26180]: SecondaryColor3usEXT (will be remapped) */
"iii\0"
"glSecondaryColor3us\0"
"glSecondaryColor3usEXT\0"
"\0"
- /* _mesa_function_pool[25837]: ProgramLocalParameter4fvARB (will be remapped) */
+ /* _mesa_function_pool[26228]: ProgramLocalParameter4fvARB (will be remapped) */
"iip\0"
"glProgramLocalParameter4fvARB\0"
"\0"
- /* _mesa_function_pool[25872]: DeleteProgramsNV (will be remapped) */
+ /* _mesa_function_pool[26263]: DeleteProgramsNV (will be remapped) */
"ip\0"
"glDeleteProgramsARB\0"
"glDeleteProgramsNV\0"
"\0"
- /* _mesa_function_pool[25915]: EvalMesh1 (offset 236) */
+ /* _mesa_function_pool[26306]: EvalMesh1 (offset 236) */
"iii\0"
"glEvalMesh1\0"
"\0"
- /* _mesa_function_pool[25932]: PauseTransformFeedback (will be remapped) */
+ /* _mesa_function_pool[26323]: PauseTransformFeedback (will be remapped) */
"\0"
"glPauseTransformFeedback\0"
"\0"
- /* _mesa_function_pool[25959]: MultiTexCoord1sARB (offset 382) */
+ /* _mesa_function_pool[26350]: MultiTexCoord1sARB (offset 382) */
"ii\0"
"glMultiTexCoord1s\0"
"glMultiTexCoord1sARB\0"
"\0"
- /* _mesa_function_pool[26002]: ReplacementCodeuiColor3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[26393]: ReplacementCodeuiColor3fVertex3fSUN (dynamic) */
"iffffff\0"
"glReplacementCodeuiColor3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[26049]: GetVertexAttribPointervNV (will be remapped) */
+ /* _mesa_function_pool[26440]: GetVertexAttribPointervNV (will be remapped) */
"iip\0"
"glGetVertexAttribPointerv\0"
"glGetVertexAttribPointervARB\0"
"glGetVertexAttribPointervNV\0"
"\0"
- /* _mesa_function_pool[26137]: VertexAttribs1fvNV (will be remapped) */
+ /* _mesa_function_pool[26528]: VertexAttribs1fvNV (will be remapped) */
"iip\0"
"glVertexAttribs1fvNV\0"
"\0"
- /* _mesa_function_pool[26163]: MultiTexCoord1dvARB (offset 377) */
+ /* _mesa_function_pool[26554]: MultiTexCoord1dvARB (offset 377) */
"ip\0"
"glMultiTexCoord1dv\0"
"glMultiTexCoord1dvARB\0"
"\0"
- /* _mesa_function_pool[26208]: Uniform2iARB (will be remapped) */
+ /* _mesa_function_pool[26599]: Uniform2iARB (will be remapped) */
"iii\0"
"glUniform2i\0"
"glUniform2iARB\0"
"\0"
- /* _mesa_function_pool[26240]: Vertex2iv (offset 131) */
+ /* _mesa_function_pool[26631]: Vertex2iv (offset 131) */
"p\0"
"glVertex2iv\0"
"\0"
- /* _mesa_function_pool[26255]: GetProgramStringNV (will be remapped) */
+ /* _mesa_function_pool[26646]: GetProgramStringNV (will be remapped) */
"iip\0"
"glGetProgramStringNV\0"
"\0"
- /* _mesa_function_pool[26281]: ColorPointerEXT (will be remapped) */
+ /* _mesa_function_pool[26672]: ColorPointerEXT (will be remapped) */
"iiiip\0"
"glColorPointerEXT\0"
"\0"
- /* _mesa_function_pool[26306]: LineWidth (offset 168) */
+ /* _mesa_function_pool[26697]: LineWidth (offset 168) */
"f\0"
"glLineWidth\0"
"\0"
- /* _mesa_function_pool[26321]: MapBufferARB (will be remapped) */
+ /* _mesa_function_pool[26712]: MapBufferARB (will be remapped) */
"ii\0"
"glMapBuffer\0"
"glMapBufferARB\0"
"\0"
- /* _mesa_function_pool[26352]: MultiDrawElementsBaseVertex (will be remapped) */
+ /* _mesa_function_pool[26743]: MultiDrawElementsBaseVertex (will be remapped) */
"ipipip\0"
"glMultiDrawElementsBaseVertex\0"
"\0"
- /* _mesa_function_pool[26390]: TexParameterIuivEXT (will be remapped) */
+ /* _mesa_function_pool[26781]: TexParameterIuivEXT (will be remapped) */
"iip\0"
"glTexParameterIuivEXT\0"
"glTexParameterIuiv\0"
"\0"
- /* _mesa_function_pool[26436]: Binormal3svEXT (dynamic) */
+ /* _mesa_function_pool[26827]: Binormal3svEXT (dynamic) */
"p\0"
"glBinormal3svEXT\0"
"\0"
- /* _mesa_function_pool[26456]: ApplyTextureEXT (dynamic) */
+ /* _mesa_function_pool[26847]: ApplyTextureEXT (dynamic) */
"i\0"
"glApplyTextureEXT\0"
"\0"
- /* _mesa_function_pool[26477]: GetBufferParameteri64v (will be remapped) */
+ /* _mesa_function_pool[26868]: GetBufferParameteri64v (will be remapped) */
"iip\0"
"glGetBufferParameteri64v\0"
"\0"
- /* _mesa_function_pool[26507]: TexGendv (offset 189) */
+ /* _mesa_function_pool[26898]: TexGendv (offset 189) */
"iip\0"
"glTexGendv\0"
"\0"
- /* _mesa_function_pool[26523]: VertexAttribI3iEXT (will be remapped) */
+ /* _mesa_function_pool[26914]: VertexAttribI3iEXT (will be remapped) */
"iiii\0"
"glVertexAttribI3iEXT\0"
"glVertexAttribI3i\0"
"\0"
- /* _mesa_function_pool[26568]: EnableIndexedEXT (will be remapped) */
+ /* _mesa_function_pool[26959]: EnableIndexedEXT (will be remapped) */
"ii\0"
"glEnableIndexedEXT\0"
"glEnablei\0"
"\0"
- /* _mesa_function_pool[26601]: TextureMaterialEXT (dynamic) */
+ /* _mesa_function_pool[26992]: TextureMaterialEXT (dynamic) */
"ii\0"
"glTextureMaterialEXT\0"
"\0"
- /* _mesa_function_pool[26626]: TextureLightEXT (dynamic) */
+ /* _mesa_function_pool[27017]: TextureLightEXT (dynamic) */
"i\0"
"glTextureLightEXT\0"
"\0"
- /* _mesa_function_pool[26647]: ResetMinmax (offset 370) */
+ /* _mesa_function_pool[27038]: ResetMinmax (offset 370) */
"i\0"
"glResetMinmax\0"
"glResetMinmaxEXT\0"
"\0"
- /* _mesa_function_pool[26681]: SpriteParameterfSGIX (dynamic) */
+ /* _mesa_function_pool[27072]: SpriteParameterfSGIX (dynamic) */
"if\0"
"glSpriteParameterfSGIX\0"
"\0"
- /* _mesa_function_pool[26708]: EnableClientState (offset 313) */
+ /* _mesa_function_pool[27099]: EnableClientState (offset 313) */
"i\0"
"glEnableClientState\0"
"\0"
- /* _mesa_function_pool[26731]: VertexAttrib4sNV (will be remapped) */
+ /* _mesa_function_pool[27122]: VertexAttrib4sNV (will be remapped) */
"iiiii\0"
"glVertexAttrib4sNV\0"
"\0"
- /* _mesa_function_pool[26757]: GetConvolutionParameterfv (offset 357) */
+ /* _mesa_function_pool[27148]: GetConvolutionParameterfv (offset 357) */
"iip\0"
"glGetConvolutionParameterfv\0"
"glGetConvolutionParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[26821]: VertexAttribs4dvNV (will be remapped) */
+ /* _mesa_function_pool[27212]: VertexAttribs4dvNV (will be remapped) */
"iip\0"
"glVertexAttribs4dvNV\0"
"\0"
- /* _mesa_function_pool[26847]: MultiModeDrawArraysIBM (will be remapped) */
- "pppii\0"
- "glMultiModeDrawArraysIBM\0"
- "\0"
- /* _mesa_function_pool[26879]: VertexAttrib4dARB (will be remapped) */
+ /* _mesa_function_pool[27238]: VertexAttrib4dARB (will be remapped) */
"idddd\0"
"glVertexAttrib4d\0"
"glVertexAttrib4dARB\0"
"\0"
- /* _mesa_function_pool[26923]: GetTexBumpParameterfvATI (will be remapped) */
+ /* _mesa_function_pool[27282]: GetTexBumpParameterfvATI (will be remapped) */
"ip\0"
"glGetTexBumpParameterfvATI\0"
"\0"
- /* _mesa_function_pool[26954]: ProgramNamedParameter4dNV (will be remapped) */
+ /* _mesa_function_pool[27313]: ProgramNamedParameter4dNV (will be remapped) */
"iipdddd\0"
"glProgramNamedParameter4dNV\0"
"\0"
- /* _mesa_function_pool[26991]: GetMaterialfv (offset 269) */
+ /* _mesa_function_pool[27350]: GetMaterialfv (offset 269) */
"iip\0"
"glGetMaterialfv\0"
"\0"
- /* _mesa_function_pool[27012]: VertexWeightfEXT (dynamic) */
+ /* _mesa_function_pool[27371]: VertexWeightfEXT (dynamic) */
"f\0"
"glVertexWeightfEXT\0"
"\0"
- /* _mesa_function_pool[27034]: SetFragmentShaderConstantATI (will be remapped) */
+ /* _mesa_function_pool[27393]: SetFragmentShaderConstantATI (will be remapped) */
"ip\0"
"glSetFragmentShaderConstantATI\0"
"\0"
- /* _mesa_function_pool[27069]: Binormal3fEXT (dynamic) */
+ /* _mesa_function_pool[27428]: Binormal3fEXT (dynamic) */
"fff\0"
"glBinormal3fEXT\0"
"\0"
- /* _mesa_function_pool[27090]: CallList (offset 2) */
+ /* _mesa_function_pool[27449]: CallList (offset 2) */
"i\0"
"glCallList\0"
"\0"
- /* _mesa_function_pool[27104]: Materialfv (offset 170) */
+ /* _mesa_function_pool[27463]: Materialfv (offset 170) */
"iip\0"
"glMaterialfv\0"
"\0"
- /* _mesa_function_pool[27122]: TexCoord3fv (offset 113) */
+ /* _mesa_function_pool[27481]: TexCoord3fv (offset 113) */
"p\0"
"glTexCoord3fv\0"
"\0"
- /* _mesa_function_pool[27139]: FogCoordfvEXT (will be remapped) */
+ /* _mesa_function_pool[27498]: FogCoordfvEXT (will be remapped) */
"p\0"
"glFogCoordfv\0"
"glFogCoordfvEXT\0"
"\0"
- /* _mesa_function_pool[27171]: MultiTexCoord1ivARB (offset 381) */
+ /* _mesa_function_pool[27530]: MultiTexCoord1ivARB (offset 381) */
"ip\0"
"glMultiTexCoord1iv\0"
"glMultiTexCoord1ivARB\0"
"\0"
- /* _mesa_function_pool[27216]: SecondaryColor3ubEXT (will be remapped) */
+ /* _mesa_function_pool[27575]: SecondaryColor3ubEXT (will be remapped) */
"iii\0"
"glSecondaryColor3ub\0"
"glSecondaryColor3ubEXT\0"
"\0"
- /* _mesa_function_pool[27264]: MultiTexCoord2ivARB (offset 389) */
+ /* _mesa_function_pool[27623]: MultiTexCoord2ivARB (offset 389) */
"ip\0"
"glMultiTexCoord2iv\0"
"glMultiTexCoord2ivARB\0"
"\0"
- /* _mesa_function_pool[27309]: FogFuncSGIS (dynamic) */
+ /* _mesa_function_pool[27668]: FogFuncSGIS (dynamic) */
"ip\0"
"glFogFuncSGIS\0"
"\0"
- /* _mesa_function_pool[27327]: CopyTexSubImage2D (offset 326) */
+ /* _mesa_function_pool[27686]: CopyTexSubImage2D (offset 326) */
"iiiiiiii\0"
"glCopyTexSubImage2D\0"
"glCopyTexSubImage2DEXT\0"
"\0"
- /* _mesa_function_pool[27380]: GetObjectParameterivARB (will be remapped) */
+ /* _mesa_function_pool[27739]: GetObjectParameterivARB (will be remapped) */
"iip\0"
"glGetObjectParameterivARB\0"
"\0"
- /* _mesa_function_pool[27411]: Color3iv (offset 16) */
+ /* _mesa_function_pool[27770]: Color3iv (offset 16) */
"p\0"
"glColor3iv\0"
"\0"
- /* _mesa_function_pool[27425]: TexCoord4fVertex4fSUN (dynamic) */
+ /* _mesa_function_pool[27784]: TexCoord4fVertex4fSUN (dynamic) */
"ffffffff\0"
"glTexCoord4fVertex4fSUN\0"
"\0"
- /* _mesa_function_pool[27459]: DrawElements (offset 311) */
+ /* _mesa_function_pool[27818]: DrawElements (offset 311) */
"iiip\0"
"glDrawElements\0"
"\0"
- /* _mesa_function_pool[27480]: BindVertexArrayAPPLE (will be remapped) */
+ /* _mesa_function_pool[27839]: BindVertexArrayAPPLE (will be remapped) */
"i\0"
"glBindVertexArrayAPPLE\0"
"\0"
- /* _mesa_function_pool[27506]: GetProgramLocalParameterdvARB (will be remapped) */
+ /* _mesa_function_pool[27865]: GetProgramLocalParameterdvARB (will be remapped) */
"iip\0"
"glGetProgramLocalParameterdvARB\0"
"\0"
- /* _mesa_function_pool[27543]: GetHistogramParameteriv (offset 363) */
+ /* _mesa_function_pool[27902]: GetHistogramParameteriv (offset 363) */
"iip\0"
"glGetHistogramParameteriv\0"
"glGetHistogramParameterivEXT\0"
"\0"
- /* _mesa_function_pool[27603]: MultiTexCoord1iARB (offset 380) */
+ /* _mesa_function_pool[27962]: MultiTexCoord1iARB (offset 380) */
"ii\0"
"glMultiTexCoord1i\0"
"glMultiTexCoord1iARB\0"
"\0"
- /* _mesa_function_pool[27646]: GetConvolutionFilter (offset 356) */
+ /* _mesa_function_pool[28005]: GetConvolutionFilter (offset 356) */
"iiip\0"
"glGetConvolutionFilter\0"
"glGetConvolutionFilterEXT\0"
"\0"
- /* _mesa_function_pool[27701]: GetProgramivARB (will be remapped) */
+ /* _mesa_function_pool[28060]: GetProgramivARB (will be remapped) */
"iip\0"
"glGetProgramivARB\0"
"\0"
- /* _mesa_function_pool[27724]: BlendFuncSeparateEXT (will be remapped) */
+ /* _mesa_function_pool[28083]: TexBufferARB (will be remapped) */
+ "iii\0"
+ "glTexBufferARB\0"
+ "\0"
+ /* _mesa_function_pool[28103]: BlendFuncSeparateEXT (will be remapped) */
"iiii\0"
"glBlendFuncSeparate\0"
"glBlendFuncSeparateEXT\0"
"glBlendFuncSeparateINGR\0"
"\0"
- /* _mesa_function_pool[27797]: MapBufferRange (will be remapped) */
+ /* _mesa_function_pool[28176]: MapBufferRange (will be remapped) */
"iiii\0"
"glMapBufferRange\0"
"\0"
- /* _mesa_function_pool[27820]: ProgramParameters4dvNV (will be remapped) */
+ /* _mesa_function_pool[28199]: ProgramParameters4dvNV (will be remapped) */
"iiip\0"
"glProgramParameters4dvNV\0"
"\0"
- /* _mesa_function_pool[27851]: TexCoord2fColor3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[28230]: TexCoord2fColor3fVertex3fvSUN (dynamic) */
"ppp\0"
"glTexCoord2fColor3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[27888]: EvalPoint2 (offset 239) */
+ /* _mesa_function_pool[28267]: EvalPoint2 (offset 239) */
"ii\0"
"glEvalPoint2\0"
"\0"
- /* _mesa_function_pool[27905]: Uniform1uivEXT (will be remapped) */
+ /* _mesa_function_pool[28284]: Uniform1uivEXT (will be remapped) */
"iip\0"
"glUniform1uivEXT\0"
"glUniform1uiv\0"
"\0"
- /* _mesa_function_pool[27941]: EvalPoint1 (offset 237) */
+ /* _mesa_function_pool[28320]: EvalPoint1 (offset 237) */
"i\0"
"glEvalPoint1\0"
"\0"
- /* _mesa_function_pool[27957]: Binormal3dvEXT (dynamic) */
+ /* _mesa_function_pool[28336]: Binormal3dvEXT (dynamic) */
"p\0"
"glBinormal3dvEXT\0"
"\0"
- /* _mesa_function_pool[27977]: PopMatrix (offset 297) */
+ /* _mesa_function_pool[28356]: PopMatrix (offset 297) */
"\0"
"glPopMatrix\0"
"\0"
- /* _mesa_function_pool[27991]: GetVertexAttribIuivEXT (will be remapped) */
- "iip\0"
- "glGetVertexAttribIuivEXT\0"
- "glGetVertexAttribIuiv\0"
- "\0"
- /* _mesa_function_pool[28043]: FinishFenceNV (will be remapped) */
+ /* _mesa_function_pool[28370]: FinishFenceNV (will be remapped) */
"i\0"
"glFinishFenceNV\0"
"\0"
- /* _mesa_function_pool[28062]: GetFogFuncSGIS (dynamic) */
+ /* _mesa_function_pool[28389]: GetFogFuncSGIS (dynamic) */
"p\0"
"glGetFogFuncSGIS\0"
"\0"
- /* _mesa_function_pool[28082]: GetUniformLocationARB (will be remapped) */
+ /* _mesa_function_pool[28409]: GetUniformLocationARB (will be remapped) */
"ip\0"
"glGetUniformLocation\0"
"glGetUniformLocationARB\0"
"\0"
- /* _mesa_function_pool[28131]: SecondaryColor3fEXT (will be remapped) */
+ /* _mesa_function_pool[28458]: SecondaryColor3fEXT (will be remapped) */
"fff\0"
"glSecondaryColor3f\0"
"glSecondaryColor3fEXT\0"
"\0"
- /* _mesa_function_pool[28177]: GetTexGeniv (offset 280) */
+ /* _mesa_function_pool[28504]: GetTexGeniv (offset 280) */
"iip\0"
"glGetTexGeniv\0"
"\0"
- /* _mesa_function_pool[28196]: CombinerInputNV (will be remapped) */
+ /* _mesa_function_pool[28523]: CombinerInputNV (will be remapped) */
"iiiiii\0"
"glCombinerInputNV\0"
"\0"
- /* _mesa_function_pool[28222]: VertexAttrib3sARB (will be remapped) */
+ /* _mesa_function_pool[28549]: VertexAttrib3sARB (will be remapped) */
"iiii\0"
"glVertexAttrib3s\0"
"glVertexAttrib3sARB\0"
"\0"
- /* _mesa_function_pool[28265]: IsTransformFeedback (will be remapped) */
+ /* _mesa_function_pool[28592]: IsTransformFeedback (will be remapped) */
"i\0"
"glIsTransformFeedback\0"
"\0"
- /* _mesa_function_pool[28290]: ReplacementCodeuiNormal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[28617]: ReplacementCodeuiNormal3fVertex3fvSUN (dynamic) */
"ppp\0"
"glReplacementCodeuiNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[28335]: Map2d (offset 222) */
+ /* _mesa_function_pool[28662]: Map2d (offset 222) */
"iddiiddiip\0"
"glMap2d\0"
"\0"
- /* _mesa_function_pool[28355]: Map2f (offset 223) */
+ /* _mesa_function_pool[28682]: Map2f (offset 223) */
"iffiiffiip\0"
"glMap2f\0"
"\0"
- /* _mesa_function_pool[28375]: ProgramStringARB (will be remapped) */
+ /* _mesa_function_pool[28702]: ProgramStringARB (will be remapped) */
"iiip\0"
"glProgramStringARB\0"
"\0"
- /* _mesa_function_pool[28400]: Vertex4s (offset 148) */
+ /* _mesa_function_pool[28727]: Vertex4s (offset 148) */
"iiii\0"
"glVertex4s\0"
"\0"
- /* _mesa_function_pool[28417]: TexCoord4fVertex4fvSUN (dynamic) */
+ /* _mesa_function_pool[28744]: TexCoord4fVertex4fvSUN (dynamic) */
"pp\0"
"glTexCoord4fVertex4fvSUN\0"
"\0"
- /* _mesa_function_pool[28446]: FragmentLightModelivSGIX (dynamic) */
+ /* _mesa_function_pool[28773]: FragmentLightModelivSGIX (dynamic) */
"ip\0"
"glFragmentLightModelivSGIX\0"
"\0"
- /* _mesa_function_pool[28477]: VertexAttrib1fNV (will be remapped) */
+ /* _mesa_function_pool[28804]: VertexAttrib1fNV (will be remapped) */
"if\0"
"glVertexAttrib1fNV\0"
"\0"
- /* _mesa_function_pool[28500]: Vertex4f (offset 144) */
+ /* _mesa_function_pool[28827]: Vertex4f (offset 144) */
"ffff\0"
"glVertex4f\0"
"\0"
- /* _mesa_function_pool[28517]: EvalCoord1d (offset 228) */
+ /* _mesa_function_pool[28844]: EvalCoord1d (offset 228) */
"d\0"
"glEvalCoord1d\0"
"\0"
- /* _mesa_function_pool[28534]: Vertex4d (offset 142) */
+ /* _mesa_function_pool[28861]: Vertex4d (offset 142) */
"dddd\0"
"glVertex4d\0"
"\0"
- /* _mesa_function_pool[28551]: RasterPos4dv (offset 79) */
+ /* _mesa_function_pool[28878]: RasterPos4dv (offset 79) */
"p\0"
"glRasterPos4dv\0"
"\0"
- /* _mesa_function_pool[28569]: UseShaderProgramEXT (will be remapped) */
+ /* _mesa_function_pool[28896]: UseShaderProgramEXT (will be remapped) */
"ii\0"
"glUseShaderProgramEXT\0"
"\0"
- /* _mesa_function_pool[28595]: FragmentLightfSGIX (dynamic) */
+ /* _mesa_function_pool[28922]: FragmentLightfSGIX (dynamic) */
"iif\0"
"glFragmentLightfSGIX\0"
"\0"
- /* _mesa_function_pool[28621]: GetCompressedTexImageARB (will be remapped) */
+ /* _mesa_function_pool[28948]: GetCompressedTexImageARB (will be remapped) */
"iip\0"
"glGetCompressedTexImage\0"
"glGetCompressedTexImageARB\0"
"\0"
- /* _mesa_function_pool[28677]: GetTexGenfv (offset 279) */
+ /* _mesa_function_pool[29004]: GetTexGenfv (offset 279) */
"iip\0"
"glGetTexGenfv\0"
"\0"
- /* _mesa_function_pool[28696]: Vertex4i (offset 146) */
+ /* _mesa_function_pool[29023]: Vertex4i (offset 146) */
"iiii\0"
"glVertex4i\0"
"\0"
- /* _mesa_function_pool[28713]: VertexWeightPointerEXT (dynamic) */
+ /* _mesa_function_pool[29040]: VertexWeightPointerEXT (dynamic) */
"iiip\0"
"glVertexWeightPointerEXT\0"
"\0"
- /* _mesa_function_pool[28744]: GetHistogram (offset 361) */
+ /* _mesa_function_pool[29071]: GetHistogram (offset 361) */
"iiiip\0"
"glGetHistogram\0"
"glGetHistogramEXT\0"
"\0"
- /* _mesa_function_pool[28784]: ActiveStencilFaceEXT (will be remapped) */
+ /* _mesa_function_pool[29111]: ActiveStencilFaceEXT (will be remapped) */
"i\0"
"glActiveStencilFaceEXT\0"
"\0"
- /* _mesa_function_pool[28810]: StencilFuncSeparateATI (will be remapped) */
+ /* _mesa_function_pool[29137]: StencilFuncSeparateATI (will be remapped) */
"iiii\0"
"glStencilFuncSeparateATI\0"
"\0"
- /* _mesa_function_pool[28841]: Materialf (offset 169) */
+ /* _mesa_function_pool[29168]: Materialf (offset 169) */
"iif\0"
"glMaterialf\0"
"\0"
- /* _mesa_function_pool[28858]: GetShaderSourceARB (will be remapped) */
+ /* _mesa_function_pool[29185]: GetShaderSourceARB (will be remapped) */
"iipp\0"
"glGetShaderSource\0"
"glGetShaderSourceARB\0"
"\0"
- /* _mesa_function_pool[28903]: IglooInterfaceSGIX (dynamic) */
+ /* _mesa_function_pool[29230]: IglooInterfaceSGIX (dynamic) */
"ip\0"
"glIglooInterfaceSGIX\0"
"\0"
- /* _mesa_function_pool[28928]: Materiali (offset 171) */
+ /* _mesa_function_pool[29255]: Materiali (offset 171) */
"iii\0"
"glMateriali\0"
"\0"
- /* _mesa_function_pool[28945]: VertexAttrib4dNV (will be remapped) */
+ /* _mesa_function_pool[29272]: VertexAttrib4dNV (will be remapped) */
"idddd\0"
"glVertexAttrib4dNV\0"
"\0"
- /* _mesa_function_pool[28971]: MultiModeDrawElementsIBM (will be remapped) */
+ /* _mesa_function_pool[29298]: MultiModeDrawElementsIBM (will be remapped) */
"ppipii\0"
"glMultiModeDrawElementsIBM\0"
"\0"
- /* _mesa_function_pool[29006]: Indexsv (offset 51) */
+ /* _mesa_function_pool[29333]: Indexsv (offset 51) */
"p\0"
"glIndexsv\0"
"\0"
- /* _mesa_function_pool[29019]: MultiTexCoord4svARB (offset 407) */
+ /* _mesa_function_pool[29346]: MultiTexCoord4svARB (offset 407) */
"ip\0"
"glMultiTexCoord4sv\0"
"glMultiTexCoord4svARB\0"
"\0"
- /* _mesa_function_pool[29064]: LightModelfv (offset 164) */
+ /* _mesa_function_pool[29391]: LightModelfv (offset 164) */
"ip\0"
"glLightModelfv\0"
"\0"
- /* _mesa_function_pool[29083]: TexCoord2dv (offset 103) */
+ /* _mesa_function_pool[29410]: TexCoord2dv (offset 103) */
"p\0"
"glTexCoord2dv\0"
"\0"
- /* _mesa_function_pool[29100]: GenQueriesARB (will be remapped) */
+ /* _mesa_function_pool[29427]: GenQueriesARB (will be remapped) */
"ip\0"
"glGenQueries\0"
"glGenQueriesARB\0"
"\0"
- /* _mesa_function_pool[29133]: EvalCoord1dv (offset 229) */
+ /* _mesa_function_pool[29460]: EvalCoord1dv (offset 229) */
"p\0"
"glEvalCoord1dv\0"
"\0"
- /* _mesa_function_pool[29151]: ReplacementCodeuiVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[29478]: ReplacementCodeuiVertex3fSUN (dynamic) */
"ifff\0"
"glReplacementCodeuiVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[29188]: Translated (offset 303) */
+ /* _mesa_function_pool[29515]: Translated (offset 303) */
"ddd\0"
"glTranslated\0"
"\0"
- /* _mesa_function_pool[29206]: Translatef (offset 304) */
+ /* _mesa_function_pool[29533]: Translatef (offset 304) */
"fff\0"
"glTranslatef\0"
"\0"
- /* _mesa_function_pool[29224]: Uniform3uiEXT (will be remapped) */
+ /* _mesa_function_pool[29551]: Uniform3uiEXT (will be remapped) */
"iiii\0"
"glUniform3uiEXT\0"
"glUniform3ui\0"
"\0"
- /* _mesa_function_pool[29259]: StencilMask (offset 209) */
+ /* _mesa_function_pool[29586]: StencilMask (offset 209) */
"i\0"
"glStencilMask\0"
"\0"
- /* _mesa_function_pool[29276]: Tangent3iEXT (dynamic) */
+ /* _mesa_function_pool[29603]: Tangent3iEXT (dynamic) */
"iii\0"
"glTangent3iEXT\0"
"\0"
- /* _mesa_function_pool[29296]: GetLightiv (offset 265) */
+ /* _mesa_function_pool[29623]: ClampColorARB (will be remapped) */
+ "ii\0"
+ "glClampColorARB\0"
+ "\0"
+ /* _mesa_function_pool[29643]: GetLightiv (offset 265) */
"iip\0"
"glGetLightiv\0"
"\0"
- /* _mesa_function_pool[29314]: DrawMeshArraysSUN (dynamic) */
+ /* _mesa_function_pool[29661]: GetSamplerParameterIiv (will be remapped) */
+ "iip\0"
+ "glGetSamplerParameterIiv\0"
+ "\0"
+ /* _mesa_function_pool[29691]: DrawMeshArraysSUN (dynamic) */
"iiii\0"
"glDrawMeshArraysSUN\0"
"\0"
- /* _mesa_function_pool[29340]: IsList (offset 287) */
+ /* _mesa_function_pool[29717]: IsList (offset 287) */
"i\0"
"glIsList\0"
"\0"
- /* _mesa_function_pool[29352]: IsSync (will be remapped) */
+ /* _mesa_function_pool[29729]: IsSync (will be remapped) */
"i\0"
"glIsSync\0"
"\0"
- /* _mesa_function_pool[29364]: RenderMode (offset 196) */
+ /* _mesa_function_pool[29741]: RenderMode (offset 196) */
"i\0"
"glRenderMode\0"
"\0"
- /* _mesa_function_pool[29380]: GetMapControlPointsNV (dynamic) */
+ /* _mesa_function_pool[29757]: GetMapControlPointsNV (dynamic) */
"iiiiiip\0"
"glGetMapControlPointsNV\0"
"\0"
- /* _mesa_function_pool[29413]: DrawBuffersARB (will be remapped) */
+ /* _mesa_function_pool[29790]: DrawBuffersARB (will be remapped) */
"ip\0"
"glDrawBuffers\0"
"glDrawBuffersARB\0"
"glDrawBuffersATI\0"
"\0"
- /* _mesa_function_pool[29465]: ClearBufferiv (will be remapped) */
+ /* _mesa_function_pool[29842]: ClearBufferiv (will be remapped) */
"iip\0"
"glClearBufferiv\0"
"\0"
- /* _mesa_function_pool[29486]: ProgramLocalParameter4fARB (will be remapped) */
+ /* _mesa_function_pool[29863]: ProgramLocalParameter4fARB (will be remapped) */
"iiffff\0"
"glProgramLocalParameter4fARB\0"
"\0"
- /* _mesa_function_pool[29523]: SpriteParameterivSGIX (dynamic) */
+ /* _mesa_function_pool[29900]: SpriteParameterivSGIX (dynamic) */
"ip\0"
"glSpriteParameterivSGIX\0"
"\0"
- /* _mesa_function_pool[29551]: ProvokingVertexEXT (will be remapped) */
+ /* _mesa_function_pool[29928]: ProvokingVertexEXT (will be remapped) */
"i\0"
"glProvokingVertexEXT\0"
"glProvokingVertex\0"
"\0"
- /* _mesa_function_pool[29593]: MultiTexCoord1fARB (offset 378) */
+ /* _mesa_function_pool[29970]: MultiTexCoord1fARB (offset 378) */
"if\0"
"glMultiTexCoord1f\0"
"glMultiTexCoord1fARB\0"
"\0"
- /* _mesa_function_pool[29636]: LoadName (offset 198) */
+ /* _mesa_function_pool[30013]: LoadName (offset 198) */
"i\0"
"glLoadName\0"
"\0"
- /* _mesa_function_pool[29650]: VertexAttribs4ubvNV (will be remapped) */
+ /* _mesa_function_pool[30027]: VertexAttribs4ubvNV (will be remapped) */
"iip\0"
"glVertexAttribs4ubvNV\0"
"\0"
- /* _mesa_function_pool[29677]: WeightsvARB (dynamic) */
+ /* _mesa_function_pool[30054]: WeightsvARB (dynamic) */
"ip\0"
"glWeightsvARB\0"
"\0"
- /* _mesa_function_pool[29695]: Uniform1fvARB (will be remapped) */
+ /* _mesa_function_pool[30072]: Uniform1fvARB (will be remapped) */
"iip\0"
"glUniform1fv\0"
"glUniform1fvARB\0"
"\0"
- /* _mesa_function_pool[29729]: CopyTexSubImage1D (offset 325) */
+ /* _mesa_function_pool[30106]: CopyTexSubImage1D (offset 325) */
"iiiiii\0"
"glCopyTexSubImage1D\0"
"glCopyTexSubImage1DEXT\0"
"\0"
- /* _mesa_function_pool[29780]: CullFace (offset 152) */
+ /* _mesa_function_pool[30157]: CullFace (offset 152) */
"i\0"
"glCullFace\0"
"\0"
- /* _mesa_function_pool[29794]: BindTexture (offset 307) */
+ /* _mesa_function_pool[30171]: BindTexture (offset 307) */
"ii\0"
"glBindTexture\0"
"glBindTextureEXT\0"
"\0"
- /* _mesa_function_pool[29829]: BeginFragmentShaderATI (will be remapped) */
+ /* _mesa_function_pool[30206]: BeginFragmentShaderATI (will be remapped) */
"\0"
"glBeginFragmentShaderATI\0"
"\0"
- /* _mesa_function_pool[29856]: MultiTexCoord4fARB (offset 402) */
+ /* _mesa_function_pool[30233]: MultiTexCoord4fARB (offset 402) */
"iffff\0"
"glMultiTexCoord4f\0"
"glMultiTexCoord4fARB\0"
"\0"
- /* _mesa_function_pool[29902]: VertexAttribs3svNV (will be remapped) */
+ /* _mesa_function_pool[30279]: VertexAttribs3svNV (will be remapped) */
"iip\0"
"glVertexAttribs3svNV\0"
"\0"
- /* _mesa_function_pool[29928]: StencilFunc (offset 243) */
+ /* _mesa_function_pool[30305]: StencilFunc (offset 243) */
"iii\0"
"glStencilFunc\0"
"\0"
- /* _mesa_function_pool[29947]: CopyPixels (offset 255) */
+ /* _mesa_function_pool[30324]: CopyPixels (offset 255) */
"iiiii\0"
"glCopyPixels\0"
"\0"
- /* _mesa_function_pool[29967]: Rectsv (offset 93) */
+ /* _mesa_function_pool[30344]: Rectsv (offset 93) */
"pp\0"
"glRectsv\0"
"\0"
- /* _mesa_function_pool[29980]: ReplacementCodeuivSUN (dynamic) */
+ /* _mesa_function_pool[30357]: ReplacementCodeuivSUN (dynamic) */
"p\0"
"glReplacementCodeuivSUN\0"
"\0"
- /* _mesa_function_pool[30007]: EnableVertexAttribArrayARB (will be remapped) */
+ /* _mesa_function_pool[30384]: EnableVertexAttribArrayARB (will be remapped) */
"i\0"
"glEnableVertexAttribArray\0"
"glEnableVertexAttribArrayARB\0"
"\0"
- /* _mesa_function_pool[30065]: NormalPointervINTEL (dynamic) */
+ /* _mesa_function_pool[30442]: NormalPointervINTEL (dynamic) */
"ip\0"
"glNormalPointervINTEL\0"
"\0"
- /* _mesa_function_pool[30091]: CopyConvolutionFilter2D (offset 355) */
+ /* _mesa_function_pool[30468]: CopyConvolutionFilter2D (offset 355) */
"iiiiii\0"
"glCopyConvolutionFilter2D\0"
"glCopyConvolutionFilter2DEXT\0"
"\0"
- /* _mesa_function_pool[30154]: WindowPos3ivMESA (will be remapped) */
+ /* _mesa_function_pool[30531]: WindowPos3ivMESA (will be remapped) */
"p\0"
"glWindowPos3iv\0"
"glWindowPos3ivARB\0"
"glWindowPos3ivMESA\0"
"\0"
- /* _mesa_function_pool[30209]: CopyBufferSubData (will be remapped) */
+ /* _mesa_function_pool[30586]: CopyBufferSubData (will be remapped) */
"iiiii\0"
"glCopyBufferSubData\0"
"\0"
- /* _mesa_function_pool[30236]: NormalPointer (offset 318) */
+ /* _mesa_function_pool[30613]: NormalPointer (offset 318) */
"iip\0"
"glNormalPointer\0"
"\0"
- /* _mesa_function_pool[30257]: TexParameterfv (offset 179) */
+ /* _mesa_function_pool[30634]: TexParameterfv (offset 179) */
"iip\0"
"glTexParameterfv\0"
"\0"
- /* _mesa_function_pool[30279]: IsBufferARB (will be remapped) */
+ /* _mesa_function_pool[30656]: IsBufferARB (will be remapped) */
"i\0"
"glIsBuffer\0"
"glIsBufferARB\0"
"\0"
- /* _mesa_function_pool[30307]: WindowPos4iMESA (will be remapped) */
+ /* _mesa_function_pool[30684]: WindowPos4iMESA (will be remapped) */
"iiii\0"
"glWindowPos4iMESA\0"
"\0"
- /* _mesa_function_pool[30331]: VertexAttrib4uivARB (will be remapped) */
+ /* _mesa_function_pool[30708]: VertexAttrib4uivARB (will be remapped) */
"ip\0"
"glVertexAttrib4uiv\0"
"glVertexAttrib4uivARB\0"
"\0"
- /* _mesa_function_pool[30376]: Tangent3bvEXT (dynamic) */
+ /* _mesa_function_pool[30753]: Tangent3bvEXT (dynamic) */
"p\0"
"glTangent3bvEXT\0"
"\0"
- /* _mesa_function_pool[30395]: VertexAttribI3uivEXT (will be remapped) */
+ /* _mesa_function_pool[30772]: VertexAttribI3uivEXT (will be remapped) */
"ip\0"
"glVertexAttribI3uivEXT\0"
"glVertexAttribI3uiv\0"
"\0"
- /* _mesa_function_pool[30442]: UniformMatrix3x4fv (will be remapped) */
+ /* _mesa_function_pool[30819]: UniformMatrix3x4fv (will be remapped) */
"iiip\0"
"glUniformMatrix3x4fv\0"
"\0"
- /* _mesa_function_pool[30469]: ClipPlane (offset 150) */
+ /* _mesa_function_pool[30846]: ClipPlane (offset 150) */
"ip\0"
"glClipPlane\0"
"\0"
- /* _mesa_function_pool[30485]: Recti (offset 90) */
+ /* _mesa_function_pool[30862]: Recti (offset 90) */
"iiii\0"
"glRecti\0"
"\0"
- /* _mesa_function_pool[30499]: VertexAttribI3ivEXT (will be remapped) */
- "ip\0"
- "glVertexAttribI3ivEXT\0"
- "glVertexAttribI3iv\0"
+ /* _mesa_function_pool[30876]: TrackMatrixNV (will be remapped) */
+ "iiii\0"
+ "glTrackMatrixNV\0"
"\0"
- /* _mesa_function_pool[30544]: DrawRangeElementsBaseVertex (will be remapped) */
+ /* _mesa_function_pool[30898]: DrawRangeElementsBaseVertex (will be remapped) */
"iiiiipi\0"
"glDrawRangeElementsBaseVertex\0"
"\0"
- /* _mesa_function_pool[30583]: TexCoordPointervINTEL (dynamic) */
+ /* _mesa_function_pool[30937]: SamplerParameterIuiv (will be remapped) */
+ "iip\0"
+ "glSamplerParameterIuiv\0"
+ "\0"
+ /* _mesa_function_pool[30965]: TexCoordPointervINTEL (dynamic) */
"iip\0"
"glTexCoordPointervINTEL\0"
"\0"
- /* _mesa_function_pool[30612]: DeleteBuffersARB (will be remapped) */
+ /* _mesa_function_pool[30994]: DeleteBuffersARB (will be remapped) */
"ip\0"
"glDeleteBuffers\0"
"glDeleteBuffersARB\0"
"\0"
- /* _mesa_function_pool[30651]: PixelTransformParameterfvEXT (dynamic) */
+ /* _mesa_function_pool[31033]: PixelTransformParameterfvEXT (dynamic) */
"iip\0"
"glPixelTransformParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[30687]: PrimitiveRestartNV (will be remapped) */
+ /* _mesa_function_pool[31069]: PrimitiveRestartNV (will be remapped) */
"\0"
"glPrimitiveRestartNV\0"
"\0"
- /* _mesa_function_pool[30710]: WindowPos4fvMESA (will be remapped) */
+ /* _mesa_function_pool[31092]: WindowPos4fvMESA (will be remapped) */
"p\0"
"glWindowPos4fvMESA\0"
"\0"
- /* _mesa_function_pool[30732]: GetPixelMapuiv (offset 272) */
+ /* _mesa_function_pool[31114]: GetPixelMapuiv (offset 272) */
"ip\0"
"glGetPixelMapuiv\0"
"\0"
- /* _mesa_function_pool[30753]: Rectf (offset 88) */
+ /* _mesa_function_pool[31135]: Rectf (offset 88) */
"ffff\0"
"glRectf\0"
"\0"
- /* _mesa_function_pool[30767]: VertexAttrib1sNV (will be remapped) */
+ /* _mesa_function_pool[31149]: VertexAttrib1sNV (will be remapped) */
"ii\0"
"glVertexAttrib1sNV\0"
"\0"
- /* _mesa_function_pool[30790]: Indexfv (offset 47) */
+ /* _mesa_function_pool[31172]: Indexfv (offset 47) */
"p\0"
"glIndexfv\0"
"\0"
- /* _mesa_function_pool[30803]: SecondaryColor3svEXT (will be remapped) */
+ /* _mesa_function_pool[31185]: SecondaryColor3svEXT (will be remapped) */
"p\0"
"glSecondaryColor3sv\0"
"glSecondaryColor3svEXT\0"
"\0"
- /* _mesa_function_pool[30849]: LoadTransposeMatrixfARB (will be remapped) */
+ /* _mesa_function_pool[31231]: LoadTransposeMatrixfARB (will be remapped) */
"p\0"
"glLoadTransposeMatrixf\0"
"glLoadTransposeMatrixfARB\0"
"\0"
- /* _mesa_function_pool[30901]: GetPointerv (offset 329) */
+ /* _mesa_function_pool[31283]: GetPointerv (offset 329) */
"ip\0"
"glGetPointerv\0"
"glGetPointervEXT\0"
"\0"
- /* _mesa_function_pool[30936]: Tangent3bEXT (dynamic) */
+ /* _mesa_function_pool[31318]: Tangent3bEXT (dynamic) */
"iii\0"
"glTangent3bEXT\0"
"\0"
- /* _mesa_function_pool[30956]: CombinerParameterfNV (will be remapped) */
+ /* _mesa_function_pool[31338]: CombinerParameterfNV (will be remapped) */
"if\0"
"glCombinerParameterfNV\0"
"\0"
- /* _mesa_function_pool[30983]: IndexMask (offset 212) */
+ /* _mesa_function_pool[31365]: IndexMask (offset 212) */
"i\0"
"glIndexMask\0"
"\0"
- /* _mesa_function_pool[30998]: BindProgramNV (will be remapped) */
+ /* _mesa_function_pool[31380]: BindProgramNV (will be remapped) */
"ii\0"
"glBindProgramARB\0"
"glBindProgramNV\0"
"\0"
- /* _mesa_function_pool[31035]: VertexAttrib4svARB (will be remapped) */
+ /* _mesa_function_pool[31417]: VertexAttrib4svARB (will be remapped) */
"ip\0"
"glVertexAttrib4sv\0"
"glVertexAttrib4svARB\0"
"\0"
- /* _mesa_function_pool[31078]: GetFloatv (offset 262) */
+ /* _mesa_function_pool[31460]: GetFloatv (offset 262) */
"ip\0"
"glGetFloatv\0"
"\0"
- /* _mesa_function_pool[31094]: CreateDebugObjectMESA (dynamic) */
+ /* _mesa_function_pool[31476]: CreateDebugObjectMESA (dynamic) */
"\0"
"glCreateDebugObjectMESA\0"
"\0"
- /* _mesa_function_pool[31120]: GetShaderiv (will be remapped) */
+ /* _mesa_function_pool[31502]: GetShaderiv (will be remapped) */
"iip\0"
"glGetShaderiv\0"
"\0"
- /* _mesa_function_pool[31139]: ClientWaitSync (will be remapped) */
+ /* _mesa_function_pool[31521]: ClientWaitSync (will be remapped) */
"iii\0"
"glClientWaitSync\0"
"\0"
- /* _mesa_function_pool[31161]: TexCoord4s (offset 124) */
+ /* _mesa_function_pool[31543]: TexCoord4s (offset 124) */
"iiii\0"
"glTexCoord4s\0"
"\0"
- /* _mesa_function_pool[31180]: TexCoord3sv (offset 117) */
+ /* _mesa_function_pool[31562]: TexCoord3sv (offset 117) */
"p\0"
"glTexCoord3sv\0"
"\0"
- /* _mesa_function_pool[31197]: BindFragmentShaderATI (will be remapped) */
+ /* _mesa_function_pool[31579]: BindFragmentShaderATI (will be remapped) */
"i\0"
"glBindFragmentShaderATI\0"
"\0"
- /* _mesa_function_pool[31224]: PopAttrib (offset 218) */
+ /* _mesa_function_pool[31606]: PopAttrib (offset 218) */
"\0"
"glPopAttrib\0"
"\0"
- /* _mesa_function_pool[31238]: Fogfv (offset 154) */
+ /* _mesa_function_pool[31620]: Fogfv (offset 154) */
"ip\0"
"glFogfv\0"
"\0"
- /* _mesa_function_pool[31250]: UnmapBufferARB (will be remapped) */
+ /* _mesa_function_pool[31632]: UnmapBufferARB (will be remapped) */
"i\0"
"glUnmapBuffer\0"
"glUnmapBufferARB\0"
"\0"
- /* _mesa_function_pool[31284]: InitNames (offset 197) */
+ /* _mesa_function_pool[31666]: InitNames (offset 197) */
"\0"
"glInitNames\0"
"\0"
- /* _mesa_function_pool[31298]: Normal3sv (offset 61) */
+ /* _mesa_function_pool[31680]: Normal3sv (offset 61) */
"p\0"
"glNormal3sv\0"
"\0"
- /* _mesa_function_pool[31313]: Minmax (offset 368) */
+ /* _mesa_function_pool[31695]: Minmax (offset 368) */
"iii\0"
"glMinmax\0"
"glMinmaxEXT\0"
"\0"
- /* _mesa_function_pool[31339]: TexCoord4d (offset 118) */
+ /* _mesa_function_pool[31721]: TexCoord4d (offset 118) */
"dddd\0"
"glTexCoord4d\0"
"\0"
- /* _mesa_function_pool[31358]: TexCoord4f (offset 120) */
+ /* _mesa_function_pool[31740]: DeformationMap3dSGIX (dynamic) */
+ "iddiiddiiddiip\0"
+ "glDeformationMap3dSGIX\0"
+ "\0"
+ /* _mesa_function_pool[31779]: TexCoord4f (offset 120) */
"ffff\0"
"glTexCoord4f\0"
"\0"
- /* _mesa_function_pool[31377]: FogCoorddvEXT (will be remapped) */
+ /* _mesa_function_pool[31798]: FogCoorddvEXT (will be remapped) */
"p\0"
"glFogCoorddv\0"
"glFogCoorddvEXT\0"
"\0"
- /* _mesa_function_pool[31409]: FinishTextureSUNX (dynamic) */
+ /* _mesa_function_pool[31830]: FinishTextureSUNX (dynamic) */
"\0"
"glFinishTextureSUNX\0"
"\0"
- /* _mesa_function_pool[31431]: GetFragmentLightfvSGIX (dynamic) */
+ /* _mesa_function_pool[31852]: GetFragmentLightfvSGIX (dynamic) */
"iip\0"
"glGetFragmentLightfvSGIX\0"
"\0"
- /* _mesa_function_pool[31461]: Binormal3fvEXT (dynamic) */
+ /* _mesa_function_pool[31882]: Binormal3fvEXT (dynamic) */
"p\0"
"glBinormal3fvEXT\0"
"\0"
- /* _mesa_function_pool[31481]: GetBooleanv (offset 258) */
+ /* _mesa_function_pool[31902]: GetBooleanv (offset 258) */
"ip\0"
"glGetBooleanv\0"
"\0"
- /* _mesa_function_pool[31499]: ColorFragmentOp3ATI (will be remapped) */
+ /* _mesa_function_pool[31920]: ColorFragmentOp3ATI (will be remapped) */
"iiiiiiiiiiiii\0"
"glColorFragmentOp3ATI\0"
"\0"
- /* _mesa_function_pool[31536]: Hint (offset 158) */
+ /* _mesa_function_pool[31957]: Hint (offset 158) */
"ii\0"
"glHint\0"
"\0"
- /* _mesa_function_pool[31547]: Color4dv (offset 28) */
+ /* _mesa_function_pool[31968]: Color4dv (offset 28) */
"p\0"
"glColor4dv\0"
"\0"
- /* _mesa_function_pool[31561]: VertexAttrib2svARB (will be remapped) */
+ /* _mesa_function_pool[31982]: VertexAttrib2svARB (will be remapped) */
"ip\0"
"glVertexAttrib2sv\0"
"glVertexAttrib2svARB\0"
"\0"
- /* _mesa_function_pool[31604]: AreProgramsResidentNV (will be remapped) */
+ /* _mesa_function_pool[32025]: AreProgramsResidentNV (will be remapped) */
"ipp\0"
"glAreProgramsResidentNV\0"
"\0"
- /* _mesa_function_pool[31633]: WindowPos3svMESA (will be remapped) */
+ /* _mesa_function_pool[32054]: WindowPos3svMESA (will be remapped) */
"p\0"
"glWindowPos3sv\0"
"glWindowPos3svARB\0"
"glWindowPos3svMESA\0"
"\0"
- /* _mesa_function_pool[31688]: CopyColorSubTable (offset 347) */
+ /* _mesa_function_pool[32109]: CopyColorSubTable (offset 347) */
"iiiii\0"
"glCopyColorSubTable\0"
"glCopyColorSubTableEXT\0"
"\0"
- /* _mesa_function_pool[31738]: WeightdvARB (dynamic) */
+ /* _mesa_function_pool[32159]: WeightdvARB (dynamic) */
"ip\0"
"glWeightdvARB\0"
"\0"
- /* _mesa_function_pool[31756]: DeleteRenderbuffersEXT (will be remapped) */
+ /* _mesa_function_pool[32177]: DeleteRenderbuffersEXT (will be remapped) */
"ip\0"
"glDeleteRenderbuffers\0"
"glDeleteRenderbuffersEXT\0"
"\0"
- /* _mesa_function_pool[31807]: VertexAttrib4NubvARB (will be remapped) */
+ /* _mesa_function_pool[32228]: VertexAttrib4NubvARB (will be remapped) */
"ip\0"
"glVertexAttrib4Nubv\0"
"glVertexAttrib4NubvARB\0"
"\0"
- /* _mesa_function_pool[31854]: VertexAttrib3dvNV (will be remapped) */
+ /* _mesa_function_pool[32275]: VertexAttrib3dvNV (will be remapped) */
"ip\0"
"glVertexAttrib3dvNV\0"
"\0"
- /* _mesa_function_pool[31878]: GetObjectParameterfvARB (will be remapped) */
+ /* _mesa_function_pool[32299]: GetObjectParameterfvARB (will be remapped) */
"iip\0"
"glGetObjectParameterfvARB\0"
"\0"
- /* _mesa_function_pool[31909]: Vertex4iv (offset 147) */
+ /* _mesa_function_pool[32330]: Vertex4iv (offset 147) */
"p\0"
"glVertex4iv\0"
"\0"
- /* _mesa_function_pool[31924]: GetProgramEnvParameterdvARB (will be remapped) */
+ /* _mesa_function_pool[32345]: GetProgramEnvParameterdvARB (will be remapped) */
"iip\0"
"glGetProgramEnvParameterdvARB\0"
"\0"
- /* _mesa_function_pool[31959]: TexCoord4dv (offset 119) */
+ /* _mesa_function_pool[32380]: TexCoord4dv (offset 119) */
"p\0"
"glTexCoord4dv\0"
"\0"
- /* _mesa_function_pool[31976]: LockArraysEXT (will be remapped) */
+ /* _mesa_function_pool[32397]: LockArraysEXT (will be remapped) */
"ii\0"
"glLockArraysEXT\0"
"\0"
- /* _mesa_function_pool[31996]: Begin (offset 7) */
+ /* _mesa_function_pool[32417]: Begin (offset 7) */
"i\0"
"glBegin\0"
"\0"
- /* _mesa_function_pool[32007]: LightModeli (offset 165) */
+ /* _mesa_function_pool[32428]: LightModeli (offset 165) */
"ii\0"
"glLightModeli\0"
"\0"
- /* _mesa_function_pool[32025]: VertexAttribI4ivEXT (will be remapped) */
+ /* _mesa_function_pool[32446]: VertexAttribI4ivEXT (will be remapped) */
"ip\0"
"glVertexAttribI4ivEXT\0"
"glVertexAttribI4iv\0"
"\0"
- /* _mesa_function_pool[32070]: Rectfv (offset 89) */
+ /* _mesa_function_pool[32491]: Rectfv (offset 89) */
"pp\0"
"glRectfv\0"
"\0"
- /* _mesa_function_pool[32083]: BlendEquationSeparateiARB (will be remapped) */
- "iii\0"
- "glBlendEquationSeparateiARB\0"
- "\0"
- /* _mesa_function_pool[32116]: LightModelf (offset 163) */
+ /* _mesa_function_pool[32504]: LightModelf (offset 163) */
"if\0"
"glLightModelf\0"
"\0"
- /* _mesa_function_pool[32134]: GetTexParameterfv (offset 282) */
+ /* _mesa_function_pool[32522]: GetTexParameterfv (offset 282) */
"iip\0"
"glGetTexParameterfv\0"
"\0"
- /* _mesa_function_pool[32159]: GetLightfv (offset 264) */
+ /* _mesa_function_pool[32547]: GetLightfv (offset 264) */
"iip\0"
"glGetLightfv\0"
"\0"
- /* _mesa_function_pool[32177]: PixelTransformParameterivEXT (dynamic) */
+ /* _mesa_function_pool[32565]: PixelTransformParameterivEXT (dynamic) */
"iip\0"
"glPixelTransformParameterivEXT\0"
"\0"
- /* _mesa_function_pool[32213]: BinormalPointerEXT (dynamic) */
+ /* _mesa_function_pool[32601]: BinormalPointerEXT (dynamic) */
"iip\0"
"glBinormalPointerEXT\0"
"\0"
- /* _mesa_function_pool[32239]: VertexAttrib1dNV (will be remapped) */
+ /* _mesa_function_pool[32627]: VertexAttrib1dNV (will be remapped) */
"id\0"
"glVertexAttrib1dNV\0"
"\0"
- /* _mesa_function_pool[32262]: GetCombinerInputParameterivNV (will be remapped) */
+ /* _mesa_function_pool[32650]: GetCombinerInputParameterivNV (will be remapped) */
"iiiip\0"
"glGetCombinerInputParameterivNV\0"
"\0"
- /* _mesa_function_pool[32301]: Disable (offset 214) */
+ /* _mesa_function_pool[32689]: Disable (offset 214) */
"i\0"
"glDisable\0"
"\0"
- /* _mesa_function_pool[32314]: MultiTexCoord2fvARB (offset 387) */
+ /* _mesa_function_pool[32702]: MultiTexCoord2fvARB (offset 387) */
"ip\0"
"glMultiTexCoord2fv\0"
"glMultiTexCoord2fvARB\0"
"\0"
- /* _mesa_function_pool[32359]: GetRenderbufferParameterivEXT (will be remapped) */
+ /* _mesa_function_pool[32747]: GetRenderbufferParameterivEXT (will be remapped) */
"iip\0"
"glGetRenderbufferParameteriv\0"
"glGetRenderbufferParameterivEXT\0"
"\0"
- /* _mesa_function_pool[32425]: CombinerParameterivNV (will be remapped) */
+ /* _mesa_function_pool[32813]: CombinerParameterivNV (will be remapped) */
"ip\0"
"glCombinerParameterivNV\0"
"\0"
- /* _mesa_function_pool[32453]: GenFragmentShadersATI (will be remapped) */
+ /* _mesa_function_pool[32841]: GenFragmentShadersATI (will be remapped) */
"i\0"
"glGenFragmentShadersATI\0"
"\0"
- /* _mesa_function_pool[32480]: DrawArrays (offset 310) */
+ /* _mesa_function_pool[32868]: DrawArrays (offset 310) */
"iii\0"
"glDrawArrays\0"
"glDrawArraysEXT\0"
"\0"
- /* _mesa_function_pool[32514]: WeightuivARB (dynamic) */
+ /* _mesa_function_pool[32902]: WeightuivARB (dynamic) */
"ip\0"
"glWeightuivARB\0"
"\0"
- /* _mesa_function_pool[32533]: VertexAttrib2sARB (will be remapped) */
+ /* _mesa_function_pool[32921]: VertexAttrib2sARB (will be remapped) */
"iii\0"
"glVertexAttrib2s\0"
"glVertexAttrib2sARB\0"
"\0"
- /* _mesa_function_pool[32575]: ColorMask (offset 210) */
+ /* _mesa_function_pool[32963]: ColorMask (offset 210) */
"iiii\0"
"glColorMask\0"
"\0"
- /* _mesa_function_pool[32593]: GenAsyncMarkersSGIX (dynamic) */
+ /* _mesa_function_pool[32981]: GenAsyncMarkersSGIX (dynamic) */
"i\0"
"glGenAsyncMarkersSGIX\0"
"\0"
- /* _mesa_function_pool[32618]: Tangent3svEXT (dynamic) */
+ /* _mesa_function_pool[33006]: Tangent3svEXT (dynamic) */
"p\0"
"glTangent3svEXT\0"
"\0"
- /* _mesa_function_pool[32637]: GetListParameterivSGIX (dynamic) */
+ /* _mesa_function_pool[33025]: GetListParameterivSGIX (dynamic) */
"iip\0"
"glGetListParameterivSGIX\0"
"\0"
- /* _mesa_function_pool[32667]: BindBufferARB (will be remapped) */
+ /* _mesa_function_pool[33055]: BindBufferARB (will be remapped) */
"ii\0"
"glBindBuffer\0"
"glBindBufferARB\0"
"\0"
- /* _mesa_function_pool[32700]: GetInfoLogARB (will be remapped) */
+ /* _mesa_function_pool[33088]: GetInfoLogARB (will be remapped) */
"iipp\0"
"glGetInfoLogARB\0"
"\0"
- /* _mesa_function_pool[32722]: RasterPos4iv (offset 83) */
+ /* _mesa_function_pool[33110]: RasterPos4iv (offset 83) */
"p\0"
"glRasterPos4iv\0"
"\0"
- /* _mesa_function_pool[32740]: Enable (offset 215) */
+ /* _mesa_function_pool[33128]: Enable (offset 215) */
"i\0"
"glEnable\0"
"\0"
- /* _mesa_function_pool[32752]: LineStipple (offset 167) */
+ /* _mesa_function_pool[33140]: LineStipple (offset 167) */
"ii\0"
"glLineStipple\0"
"\0"
- /* _mesa_function_pool[32770]: VertexAttribs4svNV (will be remapped) */
+ /* _mesa_function_pool[33158]: VertexAttribs4svNV (will be remapped) */
"iip\0"
"glVertexAttribs4svNV\0"
"\0"
- /* _mesa_function_pool[32796]: EdgeFlagPointerListIBM (dynamic) */
+ /* _mesa_function_pool[33184]: EdgeFlagPointerListIBM (dynamic) */
"ipi\0"
"glEdgeFlagPointerListIBM\0"
"\0"
- /* _mesa_function_pool[32826]: UniformMatrix3x2fv (will be remapped) */
+ /* _mesa_function_pool[33214]: UniformMatrix3x2fv (will be remapped) */
"iiip\0"
"glUniformMatrix3x2fv\0"
"\0"
- /* _mesa_function_pool[32853]: GetMinmaxParameterfv (offset 365) */
+ /* _mesa_function_pool[33241]: GetMinmaxParameterfv (offset 365) */
"iip\0"
"glGetMinmaxParameterfv\0"
"glGetMinmaxParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[32907]: VertexAttrib1fvARB (will be remapped) */
+ /* _mesa_function_pool[33295]: VertexAttrib1fvARB (will be remapped) */
"ip\0"
"glVertexAttrib1fv\0"
"glVertexAttrib1fvARB\0"
"\0"
- /* _mesa_function_pool[32950]: GenBuffersARB (will be remapped) */
+ /* _mesa_function_pool[33338]: GenBuffersARB (will be remapped) */
"ip\0"
"glGenBuffers\0"
"glGenBuffersARB\0"
"\0"
- /* _mesa_function_pool[32983]: VertexAttribs1svNV (will be remapped) */
+ /* _mesa_function_pool[33371]: VertexAttribs1svNV (will be remapped) */
"iip\0"
"glVertexAttribs1svNV\0"
"\0"
- /* _mesa_function_pool[33009]: Vertex3fv (offset 137) */
+ /* _mesa_function_pool[33397]: Vertex3fv (offset 137) */
"p\0"
"glVertex3fv\0"
"\0"
- /* _mesa_function_pool[33024]: GetTexBumpParameterivATI (will be remapped) */
+ /* _mesa_function_pool[33412]: GetTexBumpParameterivATI (will be remapped) */
"ip\0"
"glGetTexBumpParameterivATI\0"
"\0"
- /* _mesa_function_pool[33055]: Binormal3bEXT (dynamic) */
+ /* _mesa_function_pool[33443]: Binormal3bEXT (dynamic) */
"iii\0"
"glBinormal3bEXT\0"
"\0"
- /* _mesa_function_pool[33076]: FragmentMaterialivSGIX (dynamic) */
+ /* _mesa_function_pool[33464]: FragmentMaterialivSGIX (dynamic) */
"iip\0"
"glFragmentMaterialivSGIX\0"
"\0"
- /* _mesa_function_pool[33106]: IsRenderbufferEXT (will be remapped) */
+ /* _mesa_function_pool[33494]: IsRenderbufferEXT (will be remapped) */
"i\0"
"glIsRenderbuffer\0"
"glIsRenderbufferEXT\0"
"\0"
- /* _mesa_function_pool[33146]: GenProgramsNV (will be remapped) */
+ /* _mesa_function_pool[33534]: GenProgramsNV (will be remapped) */
"ip\0"
"glGenProgramsARB\0"
"glGenProgramsNV\0"
"\0"
- /* _mesa_function_pool[33183]: VertexAttrib4dvNV (will be remapped) */
+ /* _mesa_function_pool[33571]: VertexAttrib4dvNV (will be remapped) */
"ip\0"
"glVertexAttrib4dvNV\0"
"\0"
- /* _mesa_function_pool[33207]: EndFragmentShaderATI (will be remapped) */
+ /* _mesa_function_pool[33595]: EndFragmentShaderATI (will be remapped) */
"\0"
"glEndFragmentShaderATI\0"
"\0"
- /* _mesa_function_pool[33232]: Binormal3iEXT (dynamic) */
+ /* _mesa_function_pool[33620]: Binormal3iEXT (dynamic) */
"iii\0"
"glBinormal3iEXT\0"
"\0"
- /* _mesa_function_pool[33253]: WindowPos2fMESA (will be remapped) */
+ /* _mesa_function_pool[33641]: WindowPos2fMESA (will be remapped) */
"ff\0"
"glWindowPos2f\0"
"glWindowPos2fARB\0"
@@ -4783,600 +4847,616 @@ static const char _mesa_function_pool[] =
/* these functions need to be remapped */
static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
- { 1616, AttachShader_remap_index },
- { 9893, CreateProgram_remap_index },
- { 22964, CreateShader_remap_index },
- { 25451, DeleteProgram_remap_index },
- { 18608, DeleteShader_remap_index },
- { 23465, DetachShader_remap_index },
- { 17974, GetAttachedShaders_remap_index },
- { 4856, GetProgramInfoLog_remap_index },
- { 444, GetProgramiv_remap_index },
- { 6529, GetShaderInfoLog_remap_index },
- { 31120, GetShaderiv_remap_index },
- { 13387, IsProgram_remap_index },
- { 12308, IsShader_remap_index },
- { 10023, StencilFuncSeparate_remap_index },
- { 3960, StencilMaskSeparate_remap_index },
- { 7594, StencilOpSeparate_remap_index },
- { 22252, UniformMatrix2x3fv_remap_index },
- { 2886, UniformMatrix2x4fv_remap_index },
- { 32826, UniformMatrix3x2fv_remap_index },
- { 30442, UniformMatrix3x4fv_remap_index },
- { 16264, UniformMatrix4x2fv_remap_index },
- { 3302, UniformMatrix4x3fv_remap_index },
- { 5017, ClampColor_remap_index },
- { 18028, ClearBufferfi_remap_index },
- { 17470, ClearBufferfv_remap_index },
- { 29465, ClearBufferiv_remap_index },
- { 13592, ClearBufferuiv_remap_index },
- { 19891, GetStringi_remap_index },
- { 2827, TexBuffer_remap_index },
- { 977, FramebufferTexture_remap_index },
- { 26477, GetBufferParameteri64v_remap_index },
- { 10123, GetInteger64i_v_remap_index },
- { 23278, VertexAttribDivisor_remap_index },
- { 9911, LoadTransposeMatrixdARB_remap_index },
- { 30849, LoadTransposeMatrixfARB_remap_index },
- { 5637, MultTransposeMatrixdARB_remap_index },
- { 23652, MultTransposeMatrixfARB_remap_index },
- { 255, SampleCoverageARB_remap_index },
- { 5821, CompressedTexImage1DARB_remap_index },
- { 24180, CompressedTexImage2DARB_remap_index },
- { 4023, CompressedTexImage3DARB_remap_index },
- { 18325, CompressedTexSubImage1DARB_remap_index },
- { 2089, CompressedTexSubImage2DARB_remap_index },
- { 20313, CompressedTexSubImage3DARB_remap_index },
- { 28621, GetCompressedTexImageARB_remap_index },
- { 3868, DisableVertexAttribArrayARB_remap_index },
- { 30007, EnableVertexAttribArrayARB_remap_index },
- { 31924, GetProgramEnvParameterdvARB_remap_index },
- { 23532, GetProgramEnvParameterfvARB_remap_index },
- { 27506, GetProgramLocalParameterdvARB_remap_index },
- { 8036, GetProgramLocalParameterfvARB_remap_index },
- { 18459, GetProgramStringARB_remap_index },
- { 27701, GetProgramivARB_remap_index },
- { 20508, GetVertexAttribdvARB_remap_index },
- { 16072, GetVertexAttribfvARB_remap_index },
- { 9735, GetVertexAttribivARB_remap_index },
- { 19372, ProgramEnvParameter4dARB_remap_index },
- { 25201, ProgramEnvParameter4dvARB_remap_index },
- { 16792, ProgramEnvParameter4fARB_remap_index },
- { 8935, ProgramEnvParameter4fvARB_remap_index },
- { 3986, ProgramLocalParameter4dARB_remap_index },
- { 13097, ProgramLocalParameter4dvARB_remap_index },
- { 29486, ProgramLocalParameter4fARB_remap_index },
- { 25837, ProgramLocalParameter4fvARB_remap_index },
- { 28375, ProgramStringARB_remap_index },
- { 19622, VertexAttrib1dARB_remap_index },
- { 15726, VertexAttrib1dvARB_remap_index },
- { 4161, VertexAttrib1fARB_remap_index },
- { 32907, VertexAttrib1fvARB_remap_index },
- { 7120, VertexAttrib1sARB_remap_index },
- { 2263, VertexAttrib1svARB_remap_index },
- { 15157, VertexAttrib2dARB_remap_index },
- { 17491, VertexAttrib2dvARB_remap_index },
- { 1635, VertexAttrib2fARB_remap_index },
- { 17604, VertexAttrib2fvARB_remap_index },
- { 32533, VertexAttrib2sARB_remap_index },
- { 31561, VertexAttrib2svARB_remap_index },
- { 11274, VertexAttrib3dARB_remap_index },
- { 8602, VertexAttrib3dvARB_remap_index },
- { 1722, VertexAttrib3fARB_remap_index },
- { 22515, VertexAttrib3fvARB_remap_index },
- { 28222, VertexAttrib3sARB_remap_index },
- { 20250, VertexAttrib3svARB_remap_index },
- { 4882, VertexAttrib4NbvARB_remap_index },
- { 17851, VertexAttrib4NivARB_remap_index },
- { 22470, VertexAttrib4NsvARB_remap_index },
- { 23484, VertexAttrib4NubARB_remap_index },
- { 31807, VertexAttrib4NubvARB_remap_index },
- { 19033, VertexAttrib4NuivARB_remap_index },
- { 3175, VertexAttrib4NusvARB_remap_index },
- { 10863, VertexAttrib4bvARB_remap_index },
- { 26879, VertexAttrib4dARB_remap_index },
- { 21272, VertexAttrib4dvARB_remap_index },
- { 11428, VertexAttrib4fARB_remap_index },
- { 11832, VertexAttrib4fvARB_remap_index },
- { 10239, VertexAttrib4ivARB_remap_index },
- { 17284, VertexAttrib4sARB_remap_index },
- { 31035, VertexAttrib4svARB_remap_index },
- { 16597, VertexAttrib4ubvARB_remap_index },
- { 30331, VertexAttrib4uivARB_remap_index },
- { 20061, VertexAttrib4usvARB_remap_index },
- { 22067, VertexAttribPointerARB_remap_index },
- { 32667, BindBufferARB_remap_index },
- { 6827, BufferDataARB_remap_index },
- { 1537, BufferSubDataARB_remap_index },
- { 30612, DeleteBuffersARB_remap_index },
- { 32950, GenBuffersARB_remap_index },
- { 17647, GetBufferParameterivARB_remap_index },
- { 16744, GetBufferPointervARB_remap_index },
- { 1490, GetBufferSubDataARB_remap_index },
- { 30279, IsBufferARB_remap_index },
- { 26321, MapBufferARB_remap_index },
- { 31250, UnmapBufferARB_remap_index },
- { 351, BeginQueryARB_remap_index },
- { 19717, DeleteQueriesARB_remap_index },
- { 12159, EndQueryARB_remap_index },
- { 29100, GenQueriesARB_remap_index },
- { 1981, GetQueryObjectivARB_remap_index },
- { 17328, GetQueryObjectuivARB_remap_index },
- { 1779, GetQueryivARB_remap_index },
- { 19968, IsQueryARB_remap_index },
- { 8212, AttachObjectARB_remap_index },
- { 18570, CompileShaderARB_remap_index },
- { 3244, CreateProgramObjectARB_remap_index },
- { 6772, CreateShaderObjectARB_remap_index },
- { 14459, DeleteObjectARB_remap_index },
- { 23971, DetachObjectARB_remap_index },
- { 11904, GetActiveUniformARB_remap_index },
- { 9410, GetAttachedObjectsARB_remap_index },
- { 9717, GetHandleARB_remap_index },
- { 32700, GetInfoLogARB_remap_index },
- { 31878, GetObjectParameterfvARB_remap_index },
- { 27380, GetObjectParameterivARB_remap_index },
- { 28858, GetShaderSourceARB_remap_index },
- { 28082, GetUniformLocationARB_remap_index },
- { 23754, GetUniformfvARB_remap_index },
- { 12672, GetUniformivARB_remap_index },
- { 20106, LinkProgramARB_remap_index },
- { 20164, ShaderSourceARB_remap_index },
- { 7494, Uniform1fARB_remap_index },
- { 29695, Uniform1fvARB_remap_index },
- { 22036, Uniform1iARB_remap_index },
- { 20961, Uniform1ivARB_remap_index },
- { 2212, Uniform2fARB_remap_index },
- { 14295, Uniform2fvARB_remap_index },
- { 26208, Uniform2iARB_remap_index },
- { 2332, Uniform2ivARB_remap_index },
- { 18680, Uniform3fARB_remap_index },
- { 9440, Uniform3fvARB_remap_index },
- { 6383, Uniform3iARB_remap_index },
- { 16850, Uniform3ivARB_remap_index },
- { 19178, Uniform4fARB_remap_index },
- { 23618, Uniform4fvARB_remap_index },
- { 24880, Uniform4iARB_remap_index },
- { 20474, Uniform4ivARB_remap_index },
- { 8264, UniformMatrix2fvARB_remap_index },
+ { 1577, AttachShader_remap_index },
+ { 9967, CreateProgram_remap_index },
+ { 23300, CreateShader_remap_index },
+ { 25832, DeleteProgram_remap_index },
+ { 18888, DeleteShader_remap_index },
+ { 23801, DetachShader_remap_index },
+ { 18202, GetAttachedShaders_remap_index },
+ { 4919, GetProgramInfoLog_remap_index },
+ { 405, GetProgramiv_remap_index },
+ { 6627, GetShaderInfoLog_remap_index },
+ { 31502, GetShaderiv_remap_index },
+ { 13443, IsProgram_remap_index },
+ { 12364, IsShader_remap_index },
+ { 10097, StencilFuncSeparate_remap_index },
+ { 3921, StencilMaskSeparate_remap_index },
+ { 7692, StencilOpSeparate_remap_index },
+ { 22560, UniformMatrix2x3fv_remap_index },
+ { 2847, UniformMatrix2x4fv_remap_index },
+ { 33214, UniformMatrix3x2fv_remap_index },
+ { 30819, UniformMatrix3x4fv_remap_index },
+ { 16406, UniformMatrix4x2fv_remap_index },
+ { 3263, UniformMatrix4x3fv_remap_index },
+ { 5080, ClampColor_remap_index },
+ { 18256, ClearBufferfi_remap_index },
+ { 17698, ClearBufferfv_remap_index },
+ { 29842, ClearBufferiv_remap_index },
+ { 13648, ClearBufferuiv_remap_index },
+ { 20199, GetStringi_remap_index },
+ { 2788, TexBuffer_remap_index },
+ { 938, FramebufferTexture_remap_index },
+ { 26868, GetBufferParameteri64v_remap_index },
+ { 10197, GetInteger64i_v_remap_index },
+ { 23614, VertexAttribDivisor_remap_index },
+ { 9985, LoadTransposeMatrixdARB_remap_index },
+ { 31231, LoadTransposeMatrixfARB_remap_index },
+ { 5693, MultTransposeMatrixdARB_remap_index },
+ { 23988, MultTransposeMatrixfARB_remap_index },
+ { 216, SampleCoverageARB_remap_index },
+ { 5919, CompressedTexImage1DARB_remap_index },
+ { 24516, CompressedTexImage2DARB_remap_index },
+ { 3984, CompressedTexImage3DARB_remap_index },
+ { 18544, CompressedTexSubImage1DARB_remap_index },
+ { 2050, CompressedTexSubImage2DARB_remap_index },
+ { 20621, CompressedTexSubImage3DARB_remap_index },
+ { 28948, GetCompressedTexImageARB_remap_index },
+ { 3829, DisableVertexAttribArrayARB_remap_index },
+ { 30384, EnableVertexAttribArrayARB_remap_index },
+ { 32345, GetProgramEnvParameterdvARB_remap_index },
+ { 23868, GetProgramEnvParameterfvARB_remap_index },
+ { 27865, GetProgramLocalParameterdvARB_remap_index },
+ { 8134, GetProgramLocalParameterfvARB_remap_index },
+ { 18720, GetProgramStringARB_remap_index },
+ { 28060, GetProgramivARB_remap_index },
+ { 20816, GetVertexAttribdvARB_remap_index },
+ { 16214, GetVertexAttribfvARB_remap_index },
+ { 9809, GetVertexAttribivARB_remap_index },
+ { 19662, ProgramEnvParameter4dARB_remap_index },
+ { 25582, ProgramEnvParameter4dvARB_remap_index },
+ { 17020, ProgramEnvParameter4fARB_remap_index },
+ { 9009, ProgramEnvParameter4fvARB_remap_index },
+ { 3947, ProgramLocalParameter4dARB_remap_index },
+ { 13153, ProgramLocalParameter4dvARB_remap_index },
+ { 29863, ProgramLocalParameter4fARB_remap_index },
+ { 26228, ProgramLocalParameter4fvARB_remap_index },
+ { 28702, ProgramStringARB_remap_index },
+ { 19930, VertexAttrib1dARB_remap_index },
+ { 15868, VertexAttrib1dvARB_remap_index },
+ { 4143, VertexAttrib1fARB_remap_index },
+ { 33295, VertexAttrib1fvARB_remap_index },
+ { 7218, VertexAttrib1sARB_remap_index },
+ { 2224, VertexAttrib1svARB_remap_index },
+ { 15299, VertexAttrib2dARB_remap_index },
+ { 17719, VertexAttrib2dvARB_remap_index },
+ { 1596, VertexAttrib2fARB_remap_index },
+ { 17832, VertexAttrib2fvARB_remap_index },
+ { 32921, VertexAttrib2sARB_remap_index },
+ { 31982, VertexAttrib2svARB_remap_index },
+ { 11348, VertexAttrib3dARB_remap_index },
+ { 8676, VertexAttrib3dvARB_remap_index },
+ { 1683, VertexAttrib3fARB_remap_index },
+ { 22851, VertexAttrib3fvARB_remap_index },
+ { 28549, VertexAttrib3sARB_remap_index },
+ { 20558, VertexAttrib3svARB_remap_index },
+ { 4945, VertexAttrib4NbvARB_remap_index },
+ { 18079, VertexAttrib4NivARB_remap_index },
+ { 22806, VertexAttrib4NsvARB_remap_index },
+ { 23820, VertexAttrib4NubARB_remap_index },
+ { 32228, VertexAttrib4NubvARB_remap_index },
+ { 19313, VertexAttrib4NuivARB_remap_index },
+ { 3136, VertexAttrib4NusvARB_remap_index },
+ { 10937, VertexAttrib4bvARB_remap_index },
+ { 27238, VertexAttrib4dARB_remap_index },
+ { 21580, VertexAttrib4dvARB_remap_index },
+ { 11502, VertexAttrib4fARB_remap_index },
+ { 11906, VertexAttrib4fvARB_remap_index },
+ { 10313, VertexAttrib4ivARB_remap_index },
+ { 17512, VertexAttrib4sARB_remap_index },
+ { 31417, VertexAttrib4svARB_remap_index },
+ { 16825, VertexAttrib4ubvARB_remap_index },
+ { 30708, VertexAttrib4uivARB_remap_index },
+ { 20369, VertexAttrib4usvARB_remap_index },
+ { 22375, VertexAttribPointerARB_remap_index },
+ { 33055, BindBufferARB_remap_index },
+ { 6925, BufferDataARB_remap_index },
+ { 1498, BufferSubDataARB_remap_index },
+ { 30994, DeleteBuffersARB_remap_index },
+ { 33338, GenBuffersARB_remap_index },
+ { 17875, GetBufferParameterivARB_remap_index },
+ { 16972, GetBufferPointervARB_remap_index },
+ { 1451, GetBufferSubDataARB_remap_index },
+ { 30656, IsBufferARB_remap_index },
+ { 26712, MapBufferARB_remap_index },
+ { 31632, UnmapBufferARB_remap_index },
+ { 312, BeginQueryARB_remap_index },
+ { 20025, DeleteQueriesARB_remap_index },
+ { 12225, EndQueryARB_remap_index },
+ { 29427, GenQueriesARB_remap_index },
+ { 1942, GetQueryObjectivARB_remap_index },
+ { 17556, GetQueryObjectuivARB_remap_index },
+ { 1740, GetQueryivARB_remap_index },
+ { 20276, IsQueryARB_remap_index },
+ { 8286, AttachObjectARB_remap_index },
+ { 18850, CompileShaderARB_remap_index },
+ { 3205, CreateProgramObjectARB_remap_index },
+ { 6870, CreateShaderObjectARB_remap_index },
+ { 14601, DeleteObjectARB_remap_index },
+ { 24307, DetachObjectARB_remap_index },
+ { 11970, GetActiveUniformARB_remap_index },
+ { 9484, GetAttachedObjectsARB_remap_index },
+ { 9791, GetHandleARB_remap_index },
+ { 33088, GetInfoLogARB_remap_index },
+ { 32299, GetObjectParameterfvARB_remap_index },
+ { 27739, GetObjectParameterivARB_remap_index },
+ { 29185, GetShaderSourceARB_remap_index },
+ { 28409, GetUniformLocationARB_remap_index },
+ { 24090, GetUniformfvARB_remap_index },
+ { 12728, GetUniformivARB_remap_index },
+ { 20414, LinkProgramARB_remap_index },
+ { 20472, ShaderSourceARB_remap_index },
+ { 7592, Uniform1fARB_remap_index },
+ { 30072, Uniform1fvARB_remap_index },
+ { 22344, Uniform1iARB_remap_index },
+ { 21269, Uniform1ivARB_remap_index },
+ { 2173, Uniform2fARB_remap_index },
+ { 14437, Uniform2fvARB_remap_index },
+ { 26599, Uniform2iARB_remap_index },
+ { 2293, Uniform2ivARB_remap_index },
+ { 18960, Uniform3fARB_remap_index },
+ { 9514, Uniform3fvARB_remap_index },
+ { 6481, Uniform3iARB_remap_index },
+ { 17078, Uniform3ivARB_remap_index },
+ { 19468, Uniform4fARB_remap_index },
+ { 23954, Uniform4fvARB_remap_index },
+ { 25216, Uniform4iARB_remap_index },
+ { 20782, Uniform4ivARB_remap_index },
+ { 8338, UniformMatrix2fvARB_remap_index },
{ 17, UniformMatrix3fvARB_remap_index },
- { 2729, UniformMatrix4fvARB_remap_index },
- { 25313, UseProgramObjectARB_remap_index },
- { 14845, ValidateProgramARB_remap_index },
- { 21315, BindAttribLocationARB_remap_index },
- { 4927, GetActiveAttribARB_remap_index },
- { 16531, GetAttribLocationARB_remap_index },
- { 29413, DrawBuffersARB_remap_index },
- { 17896, DrawArraysInstancedARB_remap_index },
- { 6444, DrawElementsInstancedARB_remap_index },
- { 13202, RenderbufferStorageMultisample_remap_index },
- { 13673, FramebufferTextureARB_remap_index },
- { 25739, FramebufferTextureFaceARB_remap_index },
- { 24120, ProgramParameteriARB_remap_index },
- { 23436, VertexAttribDivisorARB_remap_index },
- { 19226, FlushMappedBufferRange_remap_index },
- { 27797, MapBufferRange_remap_index },
- { 16375, BindVertexArray_remap_index },
- { 14668, GenVertexArrays_remap_index },
- { 30209, CopyBufferSubData_remap_index },
- { 31139, ClientWaitSync_remap_index },
- { 2648, DeleteSync_remap_index },
- { 7161, FenceSync_remap_index },
- { 15216, GetInteger64v_remap_index },
- { 22577, GetSynciv_remap_index },
- { 29352, IsSync_remap_index },
- { 9358, WaitSync_remap_index },
- { 3836, DrawElementsBaseVertex_remap_index },
- { 30544, DrawRangeElementsBaseVertex_remap_index },
- { 26352, MultiDrawElementsBaseVertex_remap_index },
- { 32083, BlendEquationSeparateiARB_remap_index },
- { 17740, BlendEquationiARB_remap_index },
- { 12641, BlendFuncSeparateiARB_remap_index },
- { 9783, BlendFunciARB_remap_index },
- { 5078, BindTransformFeedback_remap_index },
- { 3271, DeleteTransformFeedbacks_remap_index },
- { 6416, DrawTransformFeedback_remap_index },
- { 9577, GenTransformFeedbacks_remap_index },
- { 28265, IsTransformFeedback_remap_index },
- { 25932, PauseTransformFeedback_remap_index },
- { 5557, ResumeTransformFeedback_remap_index },
- { 21635, ClearDepthf_remap_index },
- { 6720, DepthRangef_remap_index },
- { 14480, GetShaderPrecisionFormat_remap_index },
- { 9963, ReleaseShaderCompiler_remap_index },
- { 10906, ShaderBinary_remap_index },
- { 5425, PolygonOffsetEXT_remap_index },
- { 23199, GetPixelTexGenParameterfvSGIS_remap_index },
- { 4404, GetPixelTexGenParameterivSGIS_remap_index },
- { 22932, PixelTexGenParameterfSGIS_remap_index },
- { 663, PixelTexGenParameterfvSGIS_remap_index },
- { 12710, PixelTexGenParameteriSGIS_remap_index },
- { 13815, PixelTexGenParameterivSGIS_remap_index },
- { 18224, SampleMaskSGIS_remap_index },
- { 19908, SamplePatternSGIS_remap_index },
- { 26281, ColorPointerEXT_remap_index },
- { 17534, EdgeFlagPointerEXT_remap_index },
- { 6037, IndexPointerEXT_remap_index },
- { 6117, NormalPointerEXT_remap_index },
- { 15810, TexCoordPointerEXT_remap_index },
- { 6950, VertexPointerEXT_remap_index },
- { 3638, PointParameterfEXT_remap_index },
- { 7801, PointParameterfvEXT_remap_index },
- { 31976, LockArraysEXT_remap_index },
- { 14909, UnlockArraysEXT_remap_index },
- { 1306, SecondaryColor3bEXT_remap_index },
- { 7960, SecondaryColor3bvEXT_remap_index },
- { 10416, SecondaryColor3dEXT_remap_index },
- { 25509, SecondaryColor3dvEXT_remap_index },
- { 28131, SecondaryColor3fEXT_remap_index },
- { 18261, SecondaryColor3fvEXT_remap_index },
- { 509, SecondaryColor3iEXT_remap_index },
- { 16120, SecondaryColor3ivEXT_remap_index },
- { 10051, SecondaryColor3sEXT_remap_index },
- { 30803, SecondaryColor3svEXT_remap_index },
- { 27216, SecondaryColor3ubEXT_remap_index },
- { 21206, SecondaryColor3ubvEXT_remap_index },
- { 12952, SecondaryColor3uiEXT_remap_index },
- { 22819, SecondaryColor3uivEXT_remap_index },
- { 25789, SecondaryColor3usEXT_remap_index },
- { 13025, SecondaryColor3usvEXT_remap_index },
- { 11775, SecondaryColorPointerEXT_remap_index },
- { 25603, MultiDrawArraysEXT_remap_index },
- { 20896, MultiDrawElementsEXT_remap_index },
- { 21091, FogCoordPointerEXT_remap_index },
- { 4553, FogCoorddEXT_remap_index },
- { 31377, FogCoorddvEXT_remap_index },
- { 4670, FogCoordfEXT_remap_index },
- { 27139, FogCoordfvEXT_remap_index },
- { 19130, PixelTexGenSGIX_remap_index },
- { 27724, BlendFuncSeparateEXT_remap_index },
- { 6862, FlushVertexArrayRangeNV_remap_index },
- { 5374, VertexArrayRangeNV_remap_index },
- { 28196, CombinerInputNV_remap_index },
- { 2155, CombinerOutputNV_remap_index },
- { 30956, CombinerParameterfNV_remap_index },
- { 5248, CombinerParameterfvNV_remap_index },
- { 22301, CombinerParameteriNV_remap_index },
- { 32425, CombinerParameterivNV_remap_index },
- { 7238, FinalCombinerInputNV_remap_index },
- { 9804, GetCombinerInputParameterfvNV_remap_index },
- { 32262, GetCombinerInputParameterivNV_remap_index },
- { 216, GetCombinerOutputParameterfvNV_remap_index },
- { 13776, GetCombinerOutputParameterivNV_remap_index },
- { 6624, GetFinalCombinerInputParameterfvNV_remap_index },
- { 24752, GetFinalCombinerInputParameterivNV_remap_index },
- { 12619, ResizeBuffersMESA_remap_index },
- { 11101, WindowPos2dMESA_remap_index },
- { 1099, WindowPos2dvMESA_remap_index },
- { 33253, WindowPos2fMESA_remap_index },
- { 7905, WindowPos2fvMESA_remap_index },
- { 18171, WindowPos2iMESA_remap_index },
- { 20381, WindowPos2ivMESA_remap_index },
- { 20995, WindowPos2sMESA_remap_index },
- { 5735, WindowPos2svMESA_remap_index },
- { 7730, WindowPos3dMESA_remap_index },
- { 14023, WindowPos3dvMESA_remap_index },
- { 555, WindowPos3fMESA_remap_index },
- { 14970, WindowPos3fvMESA_remap_index },
- { 24013, WindowPos3iMESA_remap_index },
- { 30154, WindowPos3ivMESA_remap_index },
- { 18825, WindowPos3sMESA_remap_index },
- { 31633, WindowPos3svMESA_remap_index },
- { 11052, WindowPos4dMESA_remap_index },
- { 16988, WindowPos4dvMESA_remap_index },
- { 13982, WindowPos4fMESA_remap_index },
- { 30710, WindowPos4fvMESA_remap_index },
- { 30307, WindowPos4iMESA_remap_index },
- { 12422, WindowPos4ivMESA_remap_index },
- { 19009, WindowPos4sMESA_remap_index },
- { 3222, WindowPos4svMESA_remap_index },
- { 26847, MultiModeDrawArraysIBM_remap_index },
- { 28971, MultiModeDrawElementsIBM_remap_index },
- { 12187, DeleteFencesNV_remap_index },
- { 28043, FinishFenceNV_remap_index },
- { 3760, GenFencesNV_remap_index },
- { 16968, GetFenceivNV_remap_index },
- { 8197, IsFenceNV_remap_index },
- { 13703, SetFenceNV_remap_index },
- { 4217, TestFenceNV_remap_index },
- { 31604, AreProgramsResidentNV_remap_index },
- { 30998, BindProgramNV_remap_index },
- { 25872, DeleteProgramsNV_remap_index },
- { 21424, ExecuteProgramNV_remap_index },
- { 33146, GenProgramsNV_remap_index },
- { 23304, GetProgramParameterdvNV_remap_index },
- { 10478, GetProgramParameterfvNV_remap_index },
- { 26255, GetProgramStringNV_remap_index },
- { 24390, GetProgramivNV_remap_index },
- { 23567, GetTrackMatrixivNV_remap_index },
- { 26049, GetVertexAttribPointervNV_remap_index },
- { 24685, GetVertexAttribdvNV_remap_index },
- { 9253, GetVertexAttribfvNV_remap_index },
- { 18432, GetVertexAttribivNV_remap_index },
- { 19256, IsProgramNV_remap_index },
- { 9336, LoadProgramNV_remap_index },
- { 27820, ProgramParameters4dvNV_remap_index },
- { 24320, ProgramParameters4fvNV_remap_index },
- { 20685, RequestResidentProgramsNV_remap_index },
- { 22279, TrackMatrixNV_remap_index },
- { 32239, VertexAttrib1dNV_remap_index },
- { 13614, VertexAttrib1dvNV_remap_index },
- { 28477, VertexAttrib1fNV_remap_index },
- { 2454, VertexAttrib1fvNV_remap_index },
- { 30767, VertexAttrib1sNV_remap_index },
- { 15043, VertexAttrib1svNV_remap_index },
- { 4832, VertexAttrib2dNV_remap_index },
- { 13507, VertexAttrib2dvNV_remap_index },
- { 20140, VertexAttrib2fNV_remap_index },
- { 13073, VertexAttrib2fvNV_remap_index },
- { 5947, VertexAttrib2sNV_remap_index },
- { 18879, VertexAttrib2svNV_remap_index },
- { 11249, VertexAttrib3dNV_remap_index },
- { 31854, VertexAttrib3dvNV_remap_index },
- { 10290, VertexAttrib3fNV_remap_index },
- { 24712, VertexAttrib3fvNV_remap_index },
- { 22122, VertexAttrib3sNV_remap_index },
- { 23594, VertexAttrib3svNV_remap_index },
- { 28945, VertexAttrib4dNV_remap_index },
- { 33183, VertexAttrib4dvNV_remap_index },
- { 4454, VertexAttrib4fNV_remap_index },
- { 9386, VertexAttrib4fvNV_remap_index },
- { 26731, VertexAttrib4sNV_remap_index },
- { 1448, VertexAttrib4svNV_remap_index },
- { 4990, VertexAttrib4ubNV_remap_index },
- { 817, VertexAttrib4ubvNV_remap_index },
- { 21604, VertexAttribPointerNV_remap_index },
- { 2306, VertexAttribs1dvNV_remap_index },
- { 26137, VertexAttribs1fvNV_remap_index },
- { 32983, VertexAttribs1svNV_remap_index },
- { 10315, VertexAttribs2dvNV_remap_index },
- { 25274, VertexAttribs2fvNV_remap_index },
- { 17560, VertexAttribs2svNV_remap_index },
- { 5276, VertexAttribs3dvNV_remap_index },
- { 2186, VertexAttribs3fvNV_remap_index },
- { 29902, VertexAttribs3svNV_remap_index },
- { 26821, VertexAttribs4dvNV_remap_index },
- { 5348, VertexAttribs4fvNV_remap_index },
- { 32770, VertexAttribs4svNV_remap_index },
- { 29650, VertexAttribs4ubvNV_remap_index },
- { 26923, GetTexBumpParameterfvATI_remap_index },
- { 33024, GetTexBumpParameterivATI_remap_index },
- { 18542, TexBumpParameterfvATI_remap_index },
- { 20556, TexBumpParameterivATI_remap_index },
- { 15589, AlphaFragmentOp1ATI_remap_index },
- { 25555, AlphaFragmentOp2ATI_remap_index },
- { 24628, AlphaFragmentOp3ATI_remap_index },
- { 29829, BeginFragmentShaderATI_remap_index },
- { 31197, BindFragmentShaderATI_remap_index },
- { 23723, ColorFragmentOp1ATI_remap_index },
- { 4332, ColorFragmentOp2ATI_remap_index },
- { 31499, ColorFragmentOp3ATI_remap_index },
- { 5514, DeleteFragmentShaderATI_remap_index },
- { 33207, EndFragmentShaderATI_remap_index },
- { 32453, GenFragmentShadersATI_remap_index },
- { 25428, PassTexCoordATI_remap_index },
- { 6930, SampleMapATI_remap_index },
- { 27034, SetFragmentShaderConstantATI_remap_index },
- { 402, PointParameteriNV_remap_index },
- { 14184, PointParameterivNV_remap_index },
- { 28784, ActiveStencilFaceEXT_remap_index },
- { 27480, BindVertexArrayAPPLE_remap_index },
- { 2776, DeleteVertexArraysAPPLE_remap_index },
- { 18001, GenVertexArraysAPPLE_remap_index },
- { 23369, IsVertexArrayAPPLE_remap_index },
- { 858, GetProgramNamedParameterdvNV_remap_index },
- { 3601, GetProgramNamedParameterfvNV_remap_index },
- { 26954, ProgramNamedParameter4dNV_remap_index },
- { 14543, ProgramNamedParameter4dvNV_remap_index },
- { 8869, ProgramNamedParameter4fNV_remap_index },
- { 11740, ProgramNamedParameter4fvNV_remap_index },
- { 16899, PrimitiveRestartIndexNV_remap_index },
- { 30687, PrimitiveRestartNV_remap_index },
- { 24299, DepthBoundsEXT_remap_index },
- { 1198, BlendEquationSeparateEXT_remap_index },
- { 14744, BindFramebufferEXT_remap_index },
- { 25648, BindRenderbufferEXT_remap_index },
- { 9633, CheckFramebufferStatusEXT_remap_index },
- { 22620, DeleteFramebuffersEXT_remap_index },
- { 31756, DeleteRenderbuffersEXT_remap_index },
- { 13531, FramebufferRenderbufferEXT_remap_index },
- { 13720, FramebufferTexture1DEXT_remap_index },
- { 11534, FramebufferTexture2DEXT_remap_index },
- { 11154, FramebufferTexture3DEXT_remap_index },
- { 23235, GenFramebuffersEXT_remap_index },
- { 17425, GenRenderbuffersEXT_remap_index },
- { 6666, GenerateMipmapEXT_remap_index },
- { 21697, GetFramebufferAttachmentParameterivEXT_remap_index },
- { 32359, GetRenderbufferParameterivEXT_remap_index },
- { 20436, IsFramebufferEXT_remap_index },
- { 33106, IsRenderbufferEXT_remap_index },
- { 8144, RenderbufferStorageEXT_remap_index },
- { 734, BlitFramebufferEXT_remap_index },
- { 14329, BufferParameteriAPPLE_remap_index },
- { 19288, FlushMappedBufferRangeAPPLE_remap_index },
- { 1854, BindFragDataLocationEXT_remap_index },
- { 24412, GetFragDataLocationEXT_remap_index },
- { 10593, GetUniformuivEXT_remap_index },
- { 2972, GetVertexAttribIivEXT_remap_index },
- { 27991, GetVertexAttribIuivEXT_remap_index },
- { 12020, Uniform1uiEXT_remap_index },
- { 27905, Uniform1uivEXT_remap_index },
- { 22218, Uniform2uiEXT_remap_index },
- { 4296, Uniform2uivEXT_remap_index },
- { 29224, Uniform3uiEXT_remap_index },
- { 14690, Uniform3uivEXT_remap_index },
- { 3525, Uniform4uiEXT_remap_index },
- { 8645, Uniform4uivEXT_remap_index },
- { 18389, VertexAttribI1iEXT_remap_index },
- { 1004, VertexAttribI1ivEXT_remap_index },
- { 2555, VertexAttribI1uiEXT_remap_index },
- { 12801, VertexAttribI1uivEXT_remap_index },
+ { 2690, UniformMatrix4fvARB_remap_index },
+ { 25694, UseProgramObjectARB_remap_index },
+ { 14987, ValidateProgramARB_remap_index },
+ { 21623, BindAttribLocationARB_remap_index },
+ { 4990, GetActiveAttribARB_remap_index },
+ { 16726, GetAttribLocationARB_remap_index },
+ { 29790, DrawBuffersARB_remap_index },
+ { 29623, ClampColorARB_remap_index },
+ { 18124, DrawArraysInstancedARB_remap_index },
+ { 6542, DrawElementsInstancedARB_remap_index },
+ { 13258, RenderbufferStorageMultisample_remap_index },
+ { 13729, FramebufferTextureARB_remap_index },
+ { 26130, FramebufferTextureFaceARB_remap_index },
+ { 24456, ProgramParameteriARB_remap_index },
+ { 23772, VertexAttribDivisorARB_remap_index },
+ { 19516, FlushMappedBufferRange_remap_index },
+ { 28176, MapBufferRange_remap_index },
+ { 28083, TexBufferARB_remap_index },
+ { 16544, BindVertexArray_remap_index },
+ { 14810, GenVertexArrays_remap_index },
+ { 30586, CopyBufferSubData_remap_index },
+ { 31521, ClientWaitSync_remap_index },
+ { 2609, DeleteSync_remap_index },
+ { 7259, FenceSync_remap_index },
+ { 15358, GetInteger64v_remap_index },
+ { 22913, GetSynciv_remap_index },
+ { 29729, IsSync_remap_index },
+ { 9432, WaitSync_remap_index },
+ { 3797, DrawElementsBaseVertex_remap_index },
+ { 30898, DrawRangeElementsBaseVertex_remap_index },
+ { 26743, MultiDrawElementsBaseVertex_remap_index },
+ { 16792, BlendEquationSeparateiARB_remap_index },
+ { 17968, BlendEquationiARB_remap_index },
+ { 12697, BlendFuncSeparateiARB_remap_index },
+ { 9857, BlendFunciARB_remap_index },
+ { 8200, BindSampler_remap_index },
+ { 4122, DeleteSamplers_remap_index },
+ { 19889, GenSamplers_remap_index },
+ { 29661, GetSamplerParameterIiv_remap_index },
+ { 19410, GetSamplerParameterIuiv_remap_index },
+ { 4839, GetSamplerParameterfv_remap_index },
+ { 25851, GetSamplerParameteriv_remap_index },
+ { 14355, IsSampler_remap_index },
+ { 16497, SamplerParameterIiv_remap_index },
+ { 30937, SamplerParameterIuiv_remap_index },
+ { 22612, SamplerParameterf_remap_index },
+ { 16653, SamplerParameterfv_remap_index },
+ { 22587, SamplerParameteri_remap_index },
+ { 18318, SamplerParameteriv_remap_index },
+ { 5141, BindTransformFeedback_remap_index },
+ { 3232, DeleteTransformFeedbacks_remap_index },
+ { 6514, DrawTransformFeedback_remap_index },
+ { 9651, GenTransformFeedbacks_remap_index },
+ { 28592, IsTransformFeedback_remap_index },
+ { 26323, PauseTransformFeedback_remap_index },
+ { 5578, ResumeTransformFeedback_remap_index },
+ { 21943, ClearDepthf_remap_index },
+ { 6818, DepthRangef_remap_index },
+ { 14622, GetShaderPrecisionFormat_remap_index },
+ { 10037, ReleaseShaderCompiler_remap_index },
+ { 10980, ShaderBinary_remap_index },
+ { 5446, PolygonOffsetEXT_remap_index },
+ { 23535, GetPixelTexGenParameterfvSGIS_remap_index },
+ { 4438, GetPixelTexGenParameterivSGIS_remap_index },
+ { 23268, PixelTexGenParameterfSGIS_remap_index },
+ { 624, PixelTexGenParameterfvSGIS_remap_index },
+ { 12766, PixelTexGenParameteriSGIS_remap_index },
+ { 13903, PixelTexGenParameterivSGIS_remap_index },
+ { 18443, SampleMaskSGIS_remap_index },
+ { 20216, SamplePatternSGIS_remap_index },
+ { 26672, ColorPointerEXT_remap_index },
+ { 17762, EdgeFlagPointerEXT_remap_index },
+ { 6135, IndexPointerEXT_remap_index },
+ { 6215, NormalPointerEXT_remap_index },
+ { 15952, TexCoordPointerEXT_remap_index },
+ { 7048, VertexPointerEXT_remap_index },
+ { 3599, PointParameterfEXT_remap_index },
+ { 7899, PointParameterfvEXT_remap_index },
+ { 32397, LockArraysEXT_remap_index },
+ { 15051, UnlockArraysEXT_remap_index },
+ { 1267, SecondaryColor3bEXT_remap_index },
+ { 8058, SecondaryColor3bvEXT_remap_index },
+ { 10490, SecondaryColor3dEXT_remap_index },
+ { 25900, SecondaryColor3dvEXT_remap_index },
+ { 28458, SecondaryColor3fEXT_remap_index },
+ { 18480, SecondaryColor3fvEXT_remap_index },
+ { 470, SecondaryColor3iEXT_remap_index },
+ { 16262, SecondaryColor3ivEXT_remap_index },
+ { 10125, SecondaryColor3sEXT_remap_index },
+ { 31185, SecondaryColor3svEXT_remap_index },
+ { 27575, SecondaryColor3ubEXT_remap_index },
+ { 21514, SecondaryColor3ubvEXT_remap_index },
+ { 13008, SecondaryColor3uiEXT_remap_index },
+ { 23155, SecondaryColor3uivEXT_remap_index },
+ { 26180, SecondaryColor3usEXT_remap_index },
+ { 13081, SecondaryColor3usvEXT_remap_index },
+ { 11849, SecondaryColorPointerEXT_remap_index },
+ { 25994, MultiDrawArraysEXT_remap_index },
+ { 21204, MultiDrawElementsEXT_remap_index },
+ { 21399, FogCoordPointerEXT_remap_index },
+ { 4587, FogCoorddEXT_remap_index },
+ { 31798, FogCoorddvEXT_remap_index },
+ { 4704, FogCoordfEXT_remap_index },
+ { 27498, FogCoordfvEXT_remap_index },
+ { 11949, PixelTexGenSGIX_remap_index },
+ { 28103, BlendFuncSeparateEXT_remap_index },
+ { 6960, FlushVertexArrayRangeNV_remap_index },
+ { 5395, VertexArrayRangeNV_remap_index },
+ { 28523, CombinerInputNV_remap_index },
+ { 2116, CombinerOutputNV_remap_index },
+ { 31338, CombinerParameterfNV_remap_index },
+ { 5269, CombinerParameterfvNV_remap_index },
+ { 22637, CombinerParameteriNV_remap_index },
+ { 32813, CombinerParameterivNV_remap_index },
+ { 7336, FinalCombinerInputNV_remap_index },
+ { 9878, GetCombinerInputParameterfvNV_remap_index },
+ { 32650, GetCombinerInputParameterivNV_remap_index },
+ { 14004, GetCombinerOutputParameterfvNV_remap_index },
+ { 13832, GetCombinerOutputParameterivNV_remap_index },
+ { 6722, GetFinalCombinerInputParameterfvNV_remap_index },
+ { 25088, GetFinalCombinerInputParameterivNV_remap_index },
+ { 12675, ResizeBuffersMESA_remap_index },
+ { 11175, WindowPos2dMESA_remap_index },
+ { 1060, WindowPos2dvMESA_remap_index },
+ { 33641, WindowPos2fMESA_remap_index },
+ { 8003, WindowPos2fvMESA_remap_index },
+ { 18390, WindowPos2iMESA_remap_index },
+ { 20689, WindowPos2ivMESA_remap_index },
+ { 21303, WindowPos2sMESA_remap_index },
+ { 5833, WindowPos2svMESA_remap_index },
+ { 7828, WindowPos3dMESA_remap_index },
+ { 14150, WindowPos3dvMESA_remap_index },
+ { 516, WindowPos3fMESA_remap_index },
+ { 15112, WindowPos3fvMESA_remap_index },
+ { 24349, WindowPos3iMESA_remap_index },
+ { 30531, WindowPos3ivMESA_remap_index },
+ { 19105, WindowPos3sMESA_remap_index },
+ { 32054, WindowPos3svMESA_remap_index },
+ { 11126, WindowPos4dMESA_remap_index },
+ { 17216, WindowPos4dvMESA_remap_index },
+ { 14109, WindowPos4fMESA_remap_index },
+ { 31092, WindowPos4fvMESA_remap_index },
+ { 30684, WindowPos4iMESA_remap_index },
+ { 12478, WindowPos4ivMESA_remap_index },
+ { 19289, WindowPos4sMESA_remap_index },
+ { 3183, WindowPos4svMESA_remap_index },
+ { 13871, MultiModeDrawArraysIBM_remap_index },
+ { 29298, MultiModeDrawElementsIBM_remap_index },
+ { 12253, DeleteFencesNV_remap_index },
+ { 28370, FinishFenceNV_remap_index },
+ { 3721, GenFencesNV_remap_index },
+ { 17196, GetFenceivNV_remap_index },
+ { 8271, IsFenceNV_remap_index },
+ { 13759, SetFenceNV_remap_index },
+ { 4199, TestFenceNV_remap_index },
+ { 32025, AreProgramsResidentNV_remap_index },
+ { 31380, BindProgramNV_remap_index },
+ { 26263, DeleteProgramsNV_remap_index },
+ { 21732, ExecuteProgramNV_remap_index },
+ { 33534, GenProgramsNV_remap_index },
+ { 23640, GetProgramParameterdvNV_remap_index },
+ { 10552, GetProgramParameterfvNV_remap_index },
+ { 26646, GetProgramStringNV_remap_index },
+ { 24726, GetProgramivNV_remap_index },
+ { 23903, GetTrackMatrixivNV_remap_index },
+ { 26440, GetVertexAttribPointervNV_remap_index },
+ { 25021, GetVertexAttribdvNV_remap_index },
+ { 9327, GetVertexAttribfvNV_remap_index },
+ { 18693, GetVertexAttribivNV_remap_index },
+ { 19546, IsProgramNV_remap_index },
+ { 9410, LoadProgramNV_remap_index },
+ { 28199, ProgramParameters4dvNV_remap_index },
+ { 24656, ProgramParameters4fvNV_remap_index },
+ { 20993, RequestResidentProgramsNV_remap_index },
+ { 30876, TrackMatrixNV_remap_index },
+ { 32627, VertexAttrib1dNV_remap_index },
+ { 13670, VertexAttrib1dvNV_remap_index },
+ { 28804, VertexAttrib1fNV_remap_index },
+ { 2415, VertexAttrib1fvNV_remap_index },
+ { 31149, VertexAttrib1sNV_remap_index },
+ { 15185, VertexAttrib1svNV_remap_index },
+ { 4895, VertexAttrib2dNV_remap_index },
+ { 13563, VertexAttrib2dvNV_remap_index },
+ { 20448, VertexAttrib2fNV_remap_index },
+ { 13129, VertexAttrib2fvNV_remap_index },
+ { 6045, VertexAttrib2sNV_remap_index },
+ { 19159, VertexAttrib2svNV_remap_index },
+ { 11323, VertexAttrib3dNV_remap_index },
+ { 32275, VertexAttrib3dvNV_remap_index },
+ { 10364, VertexAttrib3fNV_remap_index },
+ { 25048, VertexAttrib3fvNV_remap_index },
+ { 22430, VertexAttrib3sNV_remap_index },
+ { 23930, VertexAttrib3svNV_remap_index },
+ { 29272, VertexAttrib4dNV_remap_index },
+ { 33571, VertexAttrib4dvNV_remap_index },
+ { 4488, VertexAttrib4fNV_remap_index },
+ { 9460, VertexAttrib4fvNV_remap_index },
+ { 27122, VertexAttrib4sNV_remap_index },
+ { 1409, VertexAttrib4svNV_remap_index },
+ { 5053, VertexAttrib4ubNV_remap_index },
+ { 778, VertexAttrib4ubvNV_remap_index },
+ { 21912, VertexAttribPointerNV_remap_index },
+ { 2267, VertexAttribs1dvNV_remap_index },
+ { 26528, VertexAttribs1fvNV_remap_index },
+ { 33371, VertexAttribs1svNV_remap_index },
+ { 10389, VertexAttribs2dvNV_remap_index },
+ { 25655, VertexAttribs2fvNV_remap_index },
+ { 17788, VertexAttribs2svNV_remap_index },
+ { 5297, VertexAttribs3dvNV_remap_index },
+ { 2147, VertexAttribs3fvNV_remap_index },
+ { 30279, VertexAttribs3svNV_remap_index },
+ { 27212, VertexAttribs4dvNV_remap_index },
+ { 5369, VertexAttribs4fvNV_remap_index },
+ { 33158, VertexAttribs4svNV_remap_index },
+ { 30027, VertexAttribs4ubvNV_remap_index },
+ { 27282, GetTexBumpParameterfvATI_remap_index },
+ { 33412, GetTexBumpParameterivATI_remap_index },
+ { 18803, TexBumpParameterfvATI_remap_index },
+ { 20864, TexBumpParameterivATI_remap_index },
+ { 15731, AlphaFragmentOp1ATI_remap_index },
+ { 25946, AlphaFragmentOp2ATI_remap_index },
+ { 24964, AlphaFragmentOp3ATI_remap_index },
+ { 30206, BeginFragmentShaderATI_remap_index },
+ { 31579, BindFragmentShaderATI_remap_index },
+ { 24059, ColorFragmentOp1ATI_remap_index },
+ { 4366, ColorFragmentOp2ATI_remap_index },
+ { 31920, ColorFragmentOp3ATI_remap_index },
+ { 5535, DeleteFragmentShaderATI_remap_index },
+ { 33595, EndFragmentShaderATI_remap_index },
+ { 32841, GenFragmentShadersATI_remap_index },
+ { 25809, PassTexCoordATI_remap_index },
+ { 7028, SampleMapATI_remap_index },
+ { 27393, SetFragmentShaderConstantATI_remap_index },
+ { 363, PointParameteriNV_remap_index },
+ { 14311, PointParameterivNV_remap_index },
+ { 29111, ActiveStencilFaceEXT_remap_index },
+ { 27839, BindVertexArrayAPPLE_remap_index },
+ { 2737, DeleteVertexArraysAPPLE_remap_index },
+ { 18229, GenVertexArraysAPPLE_remap_index },
+ { 23705, IsVertexArrayAPPLE_remap_index },
+ { 819, GetProgramNamedParameterdvNV_remap_index },
+ { 3562, GetProgramNamedParameterfvNV_remap_index },
+ { 27313, ProgramNamedParameter4dNV_remap_index },
+ { 14685, ProgramNamedParameter4dvNV_remap_index },
+ { 8943, ProgramNamedParameter4fNV_remap_index },
+ { 11814, ProgramNamedParameter4fvNV_remap_index },
+ { 17127, PrimitiveRestartIndexNV_remap_index },
+ { 31069, PrimitiveRestartNV_remap_index },
+ { 24635, DepthBoundsEXT_remap_index },
+ { 1159, BlendEquationSeparateEXT_remap_index },
+ { 14886, BindFramebufferEXT_remap_index },
+ { 26039, BindRenderbufferEXT_remap_index },
+ { 9707, CheckFramebufferStatusEXT_remap_index },
+ { 22956, DeleteFramebuffersEXT_remap_index },
+ { 32177, DeleteRenderbuffersEXT_remap_index },
+ { 13587, FramebufferRenderbufferEXT_remap_index },
+ { 13776, FramebufferTexture1DEXT_remap_index },
+ { 11608, FramebufferTexture2DEXT_remap_index },
+ { 11228, FramebufferTexture3DEXT_remap_index },
+ { 23571, GenFramebuffersEXT_remap_index },
+ { 17653, GenRenderbuffersEXT_remap_index },
+ { 6764, GenerateMipmapEXT_remap_index },
+ { 22005, GetFramebufferAttachmentParameterivEXT_remap_index },
+ { 32747, GetRenderbufferParameterivEXT_remap_index },
+ { 20744, IsFramebufferEXT_remap_index },
+ { 33494, IsRenderbufferEXT_remap_index },
+ { 8218, RenderbufferStorageEXT_remap_index },
+ { 695, BlitFramebufferEXT_remap_index },
+ { 14471, BufferParameteriAPPLE_remap_index },
+ { 19578, FlushMappedBufferRangeAPPLE_remap_index },
+ { 1815, BindFragDataLocationEXT_remap_index },
+ { 24748, GetFragDataLocationEXT_remap_index },
+ { 10667, GetUniformuivEXT_remap_index },
+ { 2933, GetVertexAttribIivEXT_remap_index },
+ { 4216, GetVertexAttribIuivEXT_remap_index },
+ { 12086, Uniform1uiEXT_remap_index },
+ { 28284, Uniform1uivEXT_remap_index },
+ { 22526, Uniform2uiEXT_remap_index },
+ { 4330, Uniform2uivEXT_remap_index },
+ { 29551, Uniform3uiEXT_remap_index },
+ { 14832, Uniform3uivEXT_remap_index },
+ { 3486, Uniform4uiEXT_remap_index },
+ { 8719, Uniform4uivEXT_remap_index },
+ { 18608, VertexAttribI1iEXT_remap_index },
+ { 965, VertexAttribI1ivEXT_remap_index },
+ { 2516, VertexAttribI1uiEXT_remap_index },
+ { 12857, VertexAttribI1uivEXT_remap_index },
{ 81, VertexAttribI2iEXT_remap_index },
- { 23835, VertexAttribI2ivEXT_remap_index },
- { 5302, VertexAttribI2uiEXT_remap_index },
- { 4715, VertexAttribI2uivEXT_remap_index },
- { 26523, VertexAttribI3iEXT_remap_index },
- { 30499, VertexAttribI3ivEXT_remap_index },
- { 3379, VertexAttribI3uiEXT_remap_index },
- { 30395, VertexAttribI3uivEXT_remap_index },
- { 21948, VertexAttribI4bvEXT_remap_index },
- { 14622, VertexAttribI4iEXT_remap_index },
- { 32025, VertexAttribI4ivEXT_remap_index },
- { 13434, VertexAttribI4svEXT_remap_index },
- { 16484, VertexAttribI4ubvEXT_remap_index },
- { 16183, VertexAttribI4uiEXT_remap_index },
- { 5448, VertexAttribI4uivEXT_remap_index },
- { 11317, VertexAttribI4usvEXT_remap_index },
- { 18486, VertexAttribIPointerEXT_remap_index },
- { 3066, FramebufferTextureLayerEXT_remap_index },
- { 5172, ColorMaskIndexedEXT_remap_index },
- { 18903, DisableIndexedEXT_remap_index },
- { 26568, EnableIndexedEXT_remap_index },
- { 21652, GetBooleanIndexedvEXT_remap_index },
- { 10928, GetIntegerIndexedvEXT_remap_index },
- { 22696, IsEnabledIndexedEXT_remap_index },
- { 22596, ClearColorIiEXT_remap_index },
- { 3475, ClearColorIuiEXT_remap_index },
- { 9843, GetTexParameterIivEXT_remap_index },
- { 5895, GetTexParameterIuivEXT_remap_index },
- { 3022, TexParameterIivEXT_remap_index },
- { 26390, TexParameterIuivEXT_remap_index },
- { 4583, BeginConditionalRenderNV_remap_index },
- { 25378, EndConditionalRenderNV_remap_index },
- { 9280, BeginTransformFeedbackEXT_remap_index },
- { 18938, BindBufferBaseEXT_remap_index },
- { 18797, BindBufferOffsetEXT_remap_index },
- { 12247, BindBufferRangeEXT_remap_index },
- { 14244, EndTransformFeedbackEXT_remap_index },
- { 10791, GetTransformFeedbackVaryingEXT_remap_index },
- { 20741, TransformFeedbackVaryingsEXT_remap_index },
- { 29551, ProvokingVertexEXT_remap_index },
- { 10739, GetTexParameterPointervAPPLE_remap_index },
- { 5034, TextureRangeAPPLE_remap_index },
- { 11606, GetObjectParameterivAPPLE_remap_index },
- { 19863, ObjectPurgeableAPPLE_remap_index },
- { 5689, ObjectUnpurgeableAPPLE_remap_index },
- { 17247, ActiveProgramEXT_remap_index },
- { 17218, CreateShaderProgramEXT_remap_index },
- { 28569, UseShaderProgramEXT_remap_index },
- { 16463, TextureBarrierNV_remap_index },
- { 28810, StencilFuncSeparateATI_remap_index },
- { 18090, ProgramEnvParameters4fvEXT_remap_index },
- { 17112, ProgramLocalParameters4fvEXT_remap_index },
- { 14112, GetQueryObjecti64vEXT_remap_index },
- { 10341, GetQueryObjectui64vEXT_remap_index },
- { 23792, EGLImageTargetRenderbufferStorageOES_remap_index },
- { 12126, EGLImageTargetTexture2DOES_remap_index },
+ { 24171, VertexAttribI2ivEXT_remap_index },
+ { 5323, VertexAttribI2uiEXT_remap_index },
+ { 4749, VertexAttribI2uivEXT_remap_index },
+ { 26914, VertexAttribI3iEXT_remap_index },
+ { 25373, VertexAttribI3ivEXT_remap_index },
+ { 3340, VertexAttribI3uiEXT_remap_index },
+ { 30772, VertexAttribI3uivEXT_remap_index },
+ { 22256, VertexAttribI4bvEXT_remap_index },
+ { 14764, VertexAttribI4iEXT_remap_index },
+ { 32446, VertexAttribI4ivEXT_remap_index },
+ { 13490, VertexAttribI4svEXT_remap_index },
+ { 16679, VertexAttribI4ubvEXT_remap_index },
+ { 16325, VertexAttribI4uiEXT_remap_index },
+ { 5469, VertexAttribI4uivEXT_remap_index },
+ { 11391, VertexAttribI4usvEXT_remap_index },
+ { 18747, VertexAttribIPointerEXT_remap_index },
+ { 3027, FramebufferTextureLayerEXT_remap_index },
+ { 5745, ColorMaskIndexedEXT_remap_index },
+ { 19183, DisableIndexedEXT_remap_index },
+ { 26959, EnableIndexedEXT_remap_index },
+ { 21960, GetBooleanIndexedvEXT_remap_index },
+ { 11002, GetIntegerIndexedvEXT_remap_index },
+ { 23032, IsEnabledIndexedEXT_remap_index },
+ { 22932, ClearColorIiEXT_remap_index },
+ { 3436, ClearColorIuiEXT_remap_index },
+ { 9917, GetTexParameterIivEXT_remap_index },
+ { 5993, GetTexParameterIuivEXT_remap_index },
+ { 2983, TexParameterIivEXT_remap_index },
+ { 26781, TexParameterIuivEXT_remap_index },
+ { 4617, BeginConditionalRenderNV_remap_index },
+ { 25759, EndConditionalRenderNV_remap_index },
+ { 9354, BeginTransformFeedbackEXT_remap_index },
+ { 19218, BindBufferBaseEXT_remap_index },
+ { 19077, BindBufferOffsetEXT_remap_index },
+ { 12303, BindBufferRangeEXT_remap_index },
+ { 14386, EndTransformFeedbackEXT_remap_index },
+ { 10865, GetTransformFeedbackVaryingEXT_remap_index },
+ { 21049, TransformFeedbackVaryingsEXT_remap_index },
+ { 29928, ProvokingVertexEXT_remap_index },
+ { 10813, GetTexParameterPointervAPPLE_remap_index },
+ { 5097, TextureRangeAPPLE_remap_index },
+ { 11680, GetObjectParameterivAPPLE_remap_index },
+ { 20171, ObjectPurgeableAPPLE_remap_index },
+ { 5787, ObjectUnpurgeableAPPLE_remap_index },
+ { 17475, ActiveProgramEXT_remap_index },
+ { 17446, CreateShaderProgramEXT_remap_index },
+ { 28896, UseShaderProgramEXT_remap_index },
+ { 16632, TextureBarrierNV_remap_index },
+ { 29137, StencilFuncSeparateATI_remap_index },
+ { 5658, ProgramEnvParameters4fvEXT_remap_index },
+ { 17340, ProgramLocalParameters4fvEXT_remap_index },
+ { 14239, GetQueryObjecti64vEXT_remap_index },
+ { 10415, GetQueryObjectui64vEXT_remap_index },
+ { 24128, EGLImageTargetRenderbufferStorageOES_remap_index },
+ { 12192, EGLImageTargetTexture2DOES_remap_index },
{ -1, -1 }
};
/* these functions are in the ABI, but have alternative names */
static const struct gl_function_remap MESA_alt_functions[] = {
/* from GL_EXT_blend_color */
- { 2694, _gloffset_BlendColor },
+ { 2655, _gloffset_BlendColor },
/* from GL_EXT_blend_minmax */
- { 11211, _gloffset_BlendEquation },
+ { 11285, _gloffset_BlendEquation },
/* from GL_EXT_color_subtable */
- { 17010, _gloffset_ColorSubTable },
- { 31688, _gloffset_CopyColorSubTable },
+ { 17238, _gloffset_ColorSubTable },
+ { 32109, _gloffset_CopyColorSubTable },
/* from GL_EXT_convolution */
- { 296, _gloffset_ConvolutionFilter1D },
- { 2493, _gloffset_CopyConvolutionFilter1D },
- { 4097, _gloffset_GetConvolutionParameteriv },
- { 8493, _gloffset_ConvolutionFilter2D },
- { 8695, _gloffset_ConvolutionParameteriv },
- { 9155, _gloffset_ConvolutionParameterfv },
- { 20584, _gloffset_GetSeparableFilter },
- { 24067, _gloffset_SeparableFilter2D },
- { 24930, _gloffset_ConvolutionParameteri },
- { 25053, _gloffset_ConvolutionParameterf },
- { 26757, _gloffset_GetConvolutionParameterfv },
- { 27646, _gloffset_GetConvolutionFilter },
- { 30091, _gloffset_CopyConvolutionFilter2D },
+ { 257, _gloffset_ConvolutionFilter1D },
+ { 2454, _gloffset_CopyConvolutionFilter1D },
+ { 4058, _gloffset_GetConvolutionParameteriv },
+ { 8567, _gloffset_ConvolutionFilter2D },
+ { 8769, _gloffset_ConvolutionParameteriv },
+ { 9229, _gloffset_ConvolutionParameterfv },
+ { 20892, _gloffset_GetSeparableFilter },
+ { 24403, _gloffset_SeparableFilter2D },
+ { 25266, _gloffset_ConvolutionParameteri },
+ { 25434, _gloffset_ConvolutionParameterf },
+ { 27148, _gloffset_GetConvolutionParameterfv },
+ { 28005, _gloffset_GetConvolutionFilter },
+ { 30468, _gloffset_CopyConvolutionFilter2D },
/* from GL_EXT_copy_texture */
- { 15103, _gloffset_CopyTexSubImage3D },
- { 16697, _gloffset_CopyTexImage2D },
- { 24538, _gloffset_CopyTexImage1D },
- { 27327, _gloffset_CopyTexSubImage2D },
- { 29729, _gloffset_CopyTexSubImage1D },
+ { 15245, _gloffset_CopyTexSubImage3D },
+ { 16925, _gloffset_CopyTexImage2D },
+ { 24874, _gloffset_CopyTexImage1D },
+ { 27686, _gloffset_CopyTexSubImage2D },
+ { 30106, _gloffset_CopyTexSubImage1D },
/* from GL_EXT_draw_range_elements */
- { 9492, _gloffset_DrawRangeElements },
+ { 9566, _gloffset_DrawRangeElements },
/* from GL_EXT_histogram */
- { 895, _gloffset_Histogram },
- { 3561, _gloffset_ResetHistogram },
- { 9989, _gloffset_GetMinmax },
- { 15437, _gloffset_GetHistogramParameterfv },
- { 24463, _gloffset_GetMinmaxParameteriv },
- { 26647, _gloffset_ResetMinmax },
- { 27543, _gloffset_GetHistogramParameteriv },
- { 28744, _gloffset_GetHistogram },
- { 31313, _gloffset_Minmax },
- { 32853, _gloffset_GetMinmaxParameterfv },
+ { 856, _gloffset_Histogram },
+ { 3522, _gloffset_ResetHistogram },
+ { 10063, _gloffset_GetMinmax },
+ { 15579, _gloffset_GetHistogramParameterfv },
+ { 24799, _gloffset_GetMinmaxParameteriv },
+ { 27038, _gloffset_ResetMinmax },
+ { 27902, _gloffset_GetHistogramParameteriv },
+ { 29071, _gloffset_GetHistogram },
+ { 31695, _gloffset_Minmax },
+ { 33241, _gloffset_GetMinmaxParameterfv },
/* from GL_EXT_paletted_texture */
- { 8355, _gloffset_ColorTable },
- { 15283, _gloffset_GetColorTable },
- { 22982, _gloffset_GetColorTableParameterfv },
- { 25109, _gloffset_GetColorTableParameteriv },
+ { 8429, _gloffset_ColorTable },
+ { 15425, _gloffset_GetColorTable },
+ { 23318, _gloffset_GetColorTableParameterfv },
+ { 25490, _gloffset_GetColorTableParameteriv },
/* from GL_EXT_subtexture */
- { 7076, _gloffset_TexSubImage1D },
- { 10666, _gloffset_TexSubImage2D },
+ { 7174, _gloffset_TexSubImage1D },
+ { 10740, _gloffset_TexSubImage2D },
/* from GL_EXT_texture3D */
- { 1813, _gloffset_TexImage3D },
- { 22751, _gloffset_TexSubImage3D },
+ { 1774, _gloffset_TexImage3D },
+ { 23087, _gloffset_TexSubImage3D },
/* from GL_EXT_texture_object */
- { 3329, _gloffset_PrioritizeTextures },
- { 7525, _gloffset_AreTexturesResident },
- { 13638, _gloffset_GenTextures },
- { 15769, _gloffset_DeleteTextures },
- { 19569, _gloffset_IsTexture },
- { 29794, _gloffset_BindTexture },
+ { 3290, _gloffset_PrioritizeTextures },
+ { 7623, _gloffset_AreTexturesResident },
+ { 13694, _gloffset_GenTextures },
+ { 15911, _gloffset_DeleteTextures },
+ { 19859, _gloffset_IsTexture },
+ { 30171, _gloffset_BindTexture },
/* from GL_EXT_vertex_array */
- { 24239, _gloffset_ArrayElement },
- { 30901, _gloffset_GetPointerv },
- { 32480, _gloffset_DrawArrays },
+ { 24575, _gloffset_ArrayElement },
+ { 31283, _gloffset_GetPointerv },
+ { 32868, _gloffset_DrawArrays },
/* from GL_SGI_color_table */
- { 7643, _gloffset_ColorTableParameteriv },
- { 8355, _gloffset_ColorTable },
- { 15283, _gloffset_GetColorTable },
- { 15393, _gloffset_CopyColorTable },
- { 19430, _gloffset_ColorTableParameterfv },
- { 22982, _gloffset_GetColorTableParameterfv },
- { 25109, _gloffset_GetColorTableParameteriv },
+ { 7741, _gloffset_ColorTableParameteriv },
+ { 8429, _gloffset_ColorTable },
+ { 15425, _gloffset_GetColorTable },
+ { 15535, _gloffset_CopyColorTable },
+ { 19720, _gloffset_ColorTableParameterfv },
+ { 23318, _gloffset_GetColorTableParameterfv },
+ { 25490, _gloffset_GetColorTableParameteriv },
/* from GL_VERSION_1_3 */
- { 464, _gloffset_MultiTexCoord3sARB },
- { 696, _gloffset_ActiveTextureARB },
- { 4234, _gloffset_MultiTexCoord1fvARB },
- { 6142, _gloffset_MultiTexCoord3dARB },
- { 6187, _gloffset_MultiTexCoord2iARB },
- { 6311, _gloffset_MultiTexCoord2svARB },
- { 8311, _gloffset_MultiTexCoord2fARB },
- { 10371, _gloffset_MultiTexCoord3fvARB },
- { 10973, _gloffset_MultiTexCoord4sARB },
- { 11654, _gloffset_MultiTexCoord2dvARB },
- { 12069, _gloffset_MultiTexCoord1svARB },
- { 12480, _gloffset_MultiTexCoord3svARB },
- { 12541, _gloffset_MultiTexCoord4iARB },
- { 13342, _gloffset_MultiTexCoord3iARB },
- { 14141, _gloffset_MultiTexCoord1dARB },
- { 14358, _gloffset_MultiTexCoord3dvARB },
- { 15637, _gloffset_MultiTexCoord3ivARB },
- { 15682, _gloffset_MultiTexCoord2sARB },
- { 17067, _gloffset_MultiTexCoord4ivARB },
- { 19080, _gloffset_ClientActiveTextureARB },
- { 21380, _gloffset_MultiTexCoord2dARB },
- { 21817, _gloffset_MultiTexCoord4dvARB },
- { 22173, _gloffset_MultiTexCoord4fvARB },
- { 23123, _gloffset_MultiTexCoord3fARB },
- { 25693, _gloffset_MultiTexCoord4dARB },
- { 25959, _gloffset_MultiTexCoord1sARB },
- { 26163, _gloffset_MultiTexCoord1dvARB },
- { 27171, _gloffset_MultiTexCoord1ivARB },
- { 27264, _gloffset_MultiTexCoord2ivARB },
- { 27603, _gloffset_MultiTexCoord1iARB },
- { 29019, _gloffset_MultiTexCoord4svARB },
- { 29593, _gloffset_MultiTexCoord1fARB },
- { 29856, _gloffset_MultiTexCoord4fARB },
- { 32314, _gloffset_MultiTexCoord2fvARB },
+ { 425, _gloffset_MultiTexCoord3sARB },
+ { 657, _gloffset_ActiveTextureARB },
+ { 4268, _gloffset_MultiTexCoord1fvARB },
+ { 6240, _gloffset_MultiTexCoord3dARB },
+ { 6285, _gloffset_MultiTexCoord2iARB },
+ { 6409, _gloffset_MultiTexCoord2svARB },
+ { 8385, _gloffset_MultiTexCoord2fARB },
+ { 10445, _gloffset_MultiTexCoord3fvARB },
+ { 11047, _gloffset_MultiTexCoord4sARB },
+ { 11728, _gloffset_MultiTexCoord2dvARB },
+ { 12135, _gloffset_MultiTexCoord1svARB },
+ { 12536, _gloffset_MultiTexCoord3svARB },
+ { 12597, _gloffset_MultiTexCoord4iARB },
+ { 13398, _gloffset_MultiTexCoord3iARB },
+ { 14268, _gloffset_MultiTexCoord1dARB },
+ { 14500, _gloffset_MultiTexCoord3dvARB },
+ { 15779, _gloffset_MultiTexCoord3ivARB },
+ { 15824, _gloffset_MultiTexCoord2sARB },
+ { 17295, _gloffset_MultiTexCoord4ivARB },
+ { 19360, _gloffset_ClientActiveTextureARB },
+ { 21688, _gloffset_MultiTexCoord2dARB },
+ { 22125, _gloffset_MultiTexCoord4dvARB },
+ { 22481, _gloffset_MultiTexCoord4fvARB },
+ { 23459, _gloffset_MultiTexCoord3fARB },
+ { 26084, _gloffset_MultiTexCoord4dARB },
+ { 26350, _gloffset_MultiTexCoord1sARB },
+ { 26554, _gloffset_MultiTexCoord1dvARB },
+ { 27530, _gloffset_MultiTexCoord1ivARB },
+ { 27623, _gloffset_MultiTexCoord2ivARB },
+ { 27962, _gloffset_MultiTexCoord1iARB },
+ { 29346, _gloffset_MultiTexCoord4svARB },
+ { 29970, _gloffset_MultiTexCoord1fARB },
+ { 30233, _gloffset_MultiTexCoord4fARB },
+ { 32702, _gloffset_MultiTexCoord2fvARB },
{ -1, -1 }
};
@@ -5384,7 +5464,7 @@ static const struct gl_function_remap MESA_alt_functions[] = {
#if defined(need_GL_3DFX_tbuffer)
static const struct gl_function_remap GL_3DFX_tbuffer_functions[] = {
- { 9213, -1 }, /* TbufferMask3DFX */
+ { 9287, -1 }, /* TbufferMask3DFX */
{ -1, -1 }
};
#endif
@@ -5424,6 +5504,13 @@ static const struct gl_function_remap GL_ARB_ES2_compatibility_functions[] = {
};
#endif
+#if defined(need_GL_ARB_color_buffer_float)
+/* functions defined in MESA_remap_table_functions are excluded */
+static const struct gl_function_remap GL_ARB_color_buffer_float_functions[] = {
+ { -1, -1 }
+};
+#endif
+
#if defined(need_GL_ARB_copy_buffer)
/* functions defined in MESA_remap_table_functions are excluded */
static const struct gl_function_remap GL_ARB_copy_buffer_functions[] = {
@@ -5469,7 +5556,7 @@ static const struct gl_function_remap GL_ARB_framebuffer_object_functions[] = {
#if defined(need_GL_ARB_geometry_shader4)
/* functions defined in MESA_remap_table_functions are excluded */
static const struct gl_function_remap GL_ARB_geometry_shader4_functions[] = {
- { 12444, -1 }, /* FramebufferTextureLayer */
+ { 12500, -1 }, /* FramebufferTextureLayer */
{ -1, -1 }
};
#endif
@@ -5490,11 +5577,11 @@ static const struct gl_function_remap GL_ARB_map_buffer_range_functions[] = {
#if defined(need_GL_ARB_matrix_palette)
static const struct gl_function_remap GL_ARB_matrix_palette_functions[] = {
- { 3812, -1 }, /* MatrixIndexusvARB */
- { 13163, -1 }, /* MatrixIndexuivARB */
- { 14513, -1 }, /* MatrixIndexPointerARB */
- { 19818, -1 }, /* CurrentPaletteMatrixARB */
- { 22867, -1 }, /* MatrixIndexubvARB */
+ { 3773, -1 }, /* MatrixIndexusvARB */
+ { 13219, -1 }, /* MatrixIndexuivARB */
+ { 14655, -1 }, /* MatrixIndexPointerARB */
+ { 20126, -1 }, /* CurrentPaletteMatrixARB */
+ { 23203, -1 }, /* MatrixIndexubvARB */
{ -1, -1 }
};
#endif
@@ -5527,6 +5614,13 @@ static const struct gl_function_remap GL_ARB_provoking_vertex_functions[] = {
};
#endif
+#if defined(need_GL_ARB_sampler_objects)
+/* functions defined in MESA_remap_table_functions are excluded */
+static const struct gl_function_remap GL_ARB_sampler_objects_functions[] = {
+ { -1, -1 }
+};
+#endif
+
#if defined(need_GL_ARB_shader_objects)
/* functions defined in MESA_remap_table_functions are excluded */
static const struct gl_function_remap GL_ARB_shader_objects_functions[] = {
@@ -5541,6 +5635,13 @@ static const struct gl_function_remap GL_ARB_sync_functions[] = {
};
#endif
+#if defined(need_GL_ARB_texture_buffer_object)
+/* functions defined in MESA_remap_table_functions are excluded */
+static const struct gl_function_remap GL_ARB_texture_buffer_object_functions[] = {
+ { -1, -1 }
+};
+#endif
+
#if defined(need_GL_ARB_texture_compression)
/* functions defined in MESA_remap_table_functions are excluded */
static const struct gl_function_remap GL_ARB_texture_compression_functions[] = {
@@ -5571,16 +5672,16 @@ static const struct gl_function_remap GL_ARB_vertex_array_object_functions[] = {
#if defined(need_GL_ARB_vertex_blend)
static const struct gl_function_remap GL_ARB_vertex_blend_functions[] = {
- { 2435, -1 }, /* WeightubvARB */
- { 6554, -1 }, /* WeightivARB */
- { 11076, -1 }, /* WeightPointerARB */
- { 13898, -1 }, /* WeightfvARB */
- { 17586, -1 }, /* WeightbvARB */
- { 21048, -1 }, /* WeightusvARB */
- { 23993, -1 }, /* VertexBlendARB */
- { 29677, -1 }, /* WeightsvARB */
- { 31738, -1 }, /* WeightdvARB */
- { 32514, -1 }, /* WeightuivARB */
+ { 2396, -1 }, /* WeightubvARB */
+ { 6652, -1 }, /* WeightivARB */
+ { 11150, -1 }, /* WeightPointerARB */
+ { 13986, -1 }, /* WeightfvARB */
+ { 17814, -1 }, /* WeightbvARB */
+ { 21356, -1 }, /* WeightusvARB */
+ { 24329, -1 }, /* VertexBlendARB */
+ { 30054, -1 }, /* WeightsvARB */
+ { 32159, -1 }, /* WeightdvARB */
+ { 32902, -1 }, /* WeightuivARB */
{ -1, -1 }
};
#endif
@@ -5650,7 +5751,7 @@ static const struct gl_function_remap GL_ATI_separate_stencil_functions[] = {
#if defined(need_GL_EXT_blend_color)
static const struct gl_function_remap GL_EXT_blend_color_functions[] = {
- { 2694, _gloffset_BlendColor },
+ { 2655, _gloffset_BlendColor },
{ -1, -1 }
};
#endif
@@ -5671,15 +5772,15 @@ static const struct gl_function_remap GL_EXT_blend_func_separate_functions[] = {
#if defined(need_GL_EXT_blend_minmax)
static const struct gl_function_remap GL_EXT_blend_minmax_functions[] = {
- { 11211, _gloffset_BlendEquation },
+ { 11285, _gloffset_BlendEquation },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_color_subtable)
static const struct gl_function_remap GL_EXT_color_subtable_functions[] = {
- { 17010, _gloffset_ColorSubTable },
- { 31688, _gloffset_CopyColorSubTable },
+ { 17238, _gloffset_ColorSubTable },
+ { 32109, _gloffset_CopyColorSubTable },
{ -1, -1 }
};
#endif
@@ -5693,66 +5794,66 @@ static const struct gl_function_remap GL_EXT_compiled_vertex_array_functions[] =
#if defined(need_GL_EXT_convolution)
static const struct gl_function_remap GL_EXT_convolution_functions[] = {
- { 296, _gloffset_ConvolutionFilter1D },
- { 2493, _gloffset_CopyConvolutionFilter1D },
- { 4097, _gloffset_GetConvolutionParameteriv },
- { 8493, _gloffset_ConvolutionFilter2D },
- { 8695, _gloffset_ConvolutionParameteriv },
- { 9155, _gloffset_ConvolutionParameterfv },
- { 20584, _gloffset_GetSeparableFilter },
- { 24067, _gloffset_SeparableFilter2D },
- { 24930, _gloffset_ConvolutionParameteri },
- { 25053, _gloffset_ConvolutionParameterf },
- { 26757, _gloffset_GetConvolutionParameterfv },
- { 27646, _gloffset_GetConvolutionFilter },
- { 30091, _gloffset_CopyConvolutionFilter2D },
+ { 257, _gloffset_ConvolutionFilter1D },
+ { 2454, _gloffset_CopyConvolutionFilter1D },
+ { 4058, _gloffset_GetConvolutionParameteriv },
+ { 8567, _gloffset_ConvolutionFilter2D },
+ { 8769, _gloffset_ConvolutionParameteriv },
+ { 9229, _gloffset_ConvolutionParameterfv },
+ { 20892, _gloffset_GetSeparableFilter },
+ { 24403, _gloffset_SeparableFilter2D },
+ { 25266, _gloffset_ConvolutionParameteri },
+ { 25434, _gloffset_ConvolutionParameterf },
+ { 27148, _gloffset_GetConvolutionParameterfv },
+ { 28005, _gloffset_GetConvolutionFilter },
+ { 30468, _gloffset_CopyConvolutionFilter2D },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_coordinate_frame)
static const struct gl_function_remap GL_EXT_coordinate_frame_functions[] = {
- { 10510, -1 }, /* TangentPointerEXT */
- { 12599, -1 }, /* Binormal3ivEXT */
- { 13295, -1 }, /* Tangent3sEXT */
- { 14578, -1 }, /* Tangent3fvEXT */
- { 18778, -1 }, /* Tangent3dvEXT */
- { 19516, -1 }, /* Binormal3bvEXT */
- { 20637, -1 }, /* Binormal3dEXT */
- { 22799, -1 }, /* Tangent3fEXT */
- { 25002, -1 }, /* Binormal3sEXT */
- { 25470, -1 }, /* Tangent3ivEXT */
- { 25489, -1 }, /* Tangent3dEXT */
- { 26436, -1 }, /* Binormal3svEXT */
- { 27069, -1 }, /* Binormal3fEXT */
- { 27957, -1 }, /* Binormal3dvEXT */
- { 29276, -1 }, /* Tangent3iEXT */
- { 30376, -1 }, /* Tangent3bvEXT */
- { 30936, -1 }, /* Tangent3bEXT */
- { 31461, -1 }, /* Binormal3fvEXT */
- { 32213, -1 }, /* BinormalPointerEXT */
- { 32618, -1 }, /* Tangent3svEXT */
- { 33055, -1 }, /* Binormal3bEXT */
- { 33232, -1 }, /* Binormal3iEXT */
+ { 10584, -1 }, /* TangentPointerEXT */
+ { 12655, -1 }, /* Binormal3ivEXT */
+ { 13351, -1 }, /* Tangent3sEXT */
+ { 14720, -1 }, /* Tangent3fvEXT */
+ { 18831, -1 }, /* Tangent3ivEXT */
+ { 19058, -1 }, /* Tangent3dvEXT */
+ { 19806, -1 }, /* Binormal3bvEXT */
+ { 20945, -1 }, /* Binormal3dEXT */
+ { 23135, -1 }, /* Tangent3fEXT */
+ { 25338, -1 }, /* Binormal3sEXT */
+ { 25880, -1 }, /* Tangent3dEXT */
+ { 26827, -1 }, /* Binormal3svEXT */
+ { 27428, -1 }, /* Binormal3fEXT */
+ { 28336, -1 }, /* Binormal3dvEXT */
+ { 29603, -1 }, /* Tangent3iEXT */
+ { 30753, -1 }, /* Tangent3bvEXT */
+ { 31318, -1 }, /* Tangent3bEXT */
+ { 31882, -1 }, /* Binormal3fvEXT */
+ { 32601, -1 }, /* BinormalPointerEXT */
+ { 33006, -1 }, /* Tangent3svEXT */
+ { 33443, -1 }, /* Binormal3bEXT */
+ { 33620, -1 }, /* Binormal3iEXT */
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_copy_texture)
static const struct gl_function_remap GL_EXT_copy_texture_functions[] = {
- { 15103, _gloffset_CopyTexSubImage3D },
- { 16697, _gloffset_CopyTexImage2D },
- { 24538, _gloffset_CopyTexImage1D },
- { 27327, _gloffset_CopyTexSubImage2D },
- { 29729, _gloffset_CopyTexSubImage1D },
+ { 15245, _gloffset_CopyTexSubImage3D },
+ { 16925, _gloffset_CopyTexImage2D },
+ { 24874, _gloffset_CopyTexImage1D },
+ { 27686, _gloffset_CopyTexSubImage2D },
+ { 30106, _gloffset_CopyTexSubImage1D },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_cull_vertex)
static const struct gl_function_remap GL_EXT_cull_vertex_functions[] = {
- { 8844, -1 }, /* CullParameterdvEXT */
- { 11699, -1 }, /* CullParameterfvEXT */
+ { 8918, -1 }, /* CullParameterdvEXT */
+ { 11773, -1 }, /* CullParameterfvEXT */
{ -1, -1 }
};
#endif
@@ -5780,7 +5881,7 @@ static const struct gl_function_remap GL_EXT_draw_instanced_functions[] = {
#if defined(need_GL_EXT_draw_range_elements)
static const struct gl_function_remap GL_EXT_draw_range_elements_functions[] = {
- { 9492, _gloffset_DrawRangeElements },
+ { 9566, _gloffset_DrawRangeElements },
{ -1, -1 }
};
#endif
@@ -5829,39 +5930,39 @@ static const struct gl_function_remap GL_EXT_gpu_shader4_functions[] = {
#if defined(need_GL_EXT_histogram)
static const struct gl_function_remap GL_EXT_histogram_functions[] = {
- { 895, _gloffset_Histogram },
- { 3561, _gloffset_ResetHistogram },
- { 9989, _gloffset_GetMinmax },
- { 15437, _gloffset_GetHistogramParameterfv },
- { 24463, _gloffset_GetMinmaxParameteriv },
- { 26647, _gloffset_ResetMinmax },
- { 27543, _gloffset_GetHistogramParameteriv },
- { 28744, _gloffset_GetHistogram },
- { 31313, _gloffset_Minmax },
- { 32853, _gloffset_GetMinmaxParameterfv },
+ { 856, _gloffset_Histogram },
+ { 3522, _gloffset_ResetHistogram },
+ { 10063, _gloffset_GetMinmax },
+ { 15579, _gloffset_GetHistogramParameterfv },
+ { 24799, _gloffset_GetMinmaxParameteriv },
+ { 27038, _gloffset_ResetMinmax },
+ { 27902, _gloffset_GetHistogramParameteriv },
+ { 29071, _gloffset_GetHistogram },
+ { 31695, _gloffset_Minmax },
+ { 33241, _gloffset_GetMinmaxParameterfv },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_index_func)
static const struct gl_function_remap GL_EXT_index_func_functions[] = {
- { 11485, -1 }, /* IndexFuncEXT */
+ { 11559, -1 }, /* IndexFuncEXT */
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_index_material)
static const struct gl_function_remap GL_EXT_index_material_functions[] = {
- { 21135, -1 }, /* IndexMaterialEXT */
+ { 21443, -1 }, /* IndexMaterialEXT */
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_light_texture)
static const struct gl_function_remap GL_EXT_light_texture_functions[] = {
- { 26456, -1 }, /* ApplyTextureEXT */
- { 26601, -1 }, /* TextureMaterialEXT */
- { 26626, -1 }, /* TextureLightEXT */
+ { 26847, -1 }, /* ApplyTextureEXT */
+ { 26992, -1 }, /* TextureMaterialEXT */
+ { 27017, -1 }, /* TextureLightEXT */
{ -1, -1 }
};
#endif
@@ -5882,20 +5983,20 @@ static const struct gl_function_remap GL_EXT_multisample_functions[] = {
#if defined(need_GL_EXT_paletted_texture)
static const struct gl_function_remap GL_EXT_paletted_texture_functions[] = {
- { 8355, _gloffset_ColorTable },
- { 15283, _gloffset_GetColorTable },
- { 22982, _gloffset_GetColorTableParameterfv },
- { 25109, _gloffset_GetColorTableParameteriv },
+ { 8429, _gloffset_ColorTable },
+ { 15425, _gloffset_GetColorTable },
+ { 23318, _gloffset_GetColorTableParameterfv },
+ { 25490, _gloffset_GetColorTableParameteriv },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_pixel_transform)
static const struct gl_function_remap GL_EXT_pixel_transform_functions[] = {
- { 21782, -1 }, /* PixelTransformParameterfEXT */
- { 21862, -1 }, /* PixelTransformParameteriEXT */
- { 30651, -1 }, /* PixelTransformParameterfvEXT */
- { 32177, -1 }, /* PixelTransformParameterivEXT */
+ { 22090, -1 }, /* PixelTransformParameterfEXT */
+ { 22170, -1 }, /* PixelTransformParameteriEXT */
+ { 31033, -1 }, /* PixelTransformParameterfvEXT */
+ { 32565, -1 }, /* PixelTransformParameterivEXT */
{ -1, -1 }
};
#endif
@@ -5944,16 +6045,16 @@ static const struct gl_function_remap GL_EXT_stencil_two_side_functions[] = {
#if defined(need_GL_EXT_subtexture)
static const struct gl_function_remap GL_EXT_subtexture_functions[] = {
- { 7076, _gloffset_TexSubImage1D },
- { 10666, _gloffset_TexSubImage2D },
+ { 7174, _gloffset_TexSubImage1D },
+ { 10740, _gloffset_TexSubImage2D },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_texture3D)
static const struct gl_function_remap GL_EXT_texture3D_functions[] = {
- { 1813, _gloffset_TexImage3D },
- { 22751, _gloffset_TexSubImage3D },
+ { 1774, _gloffset_TexImage3D },
+ { 23087, _gloffset_TexSubImage3D },
{ -1, -1 }
};
#endif
@@ -5974,19 +6075,19 @@ static const struct gl_function_remap GL_EXT_texture_integer_functions[] = {
#if defined(need_GL_EXT_texture_object)
static const struct gl_function_remap GL_EXT_texture_object_functions[] = {
- { 3329, _gloffset_PrioritizeTextures },
- { 7525, _gloffset_AreTexturesResident },
- { 13638, _gloffset_GenTextures },
- { 15769, _gloffset_DeleteTextures },
- { 19569, _gloffset_IsTexture },
- { 29794, _gloffset_BindTexture },
+ { 3290, _gloffset_PrioritizeTextures },
+ { 7623, _gloffset_AreTexturesResident },
+ { 13694, _gloffset_GenTextures },
+ { 15911, _gloffset_DeleteTextures },
+ { 19859, _gloffset_IsTexture },
+ { 30171, _gloffset_BindTexture },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_texture_perturb_normal)
static const struct gl_function_remap GL_EXT_texture_perturb_normal_functions[] = {
- { 13848, -1 }, /* TextureNormalEXT */
+ { 13936, -1 }, /* TextureNormalEXT */
{ -1, -1 }
};
#endif
@@ -6008,30 +6109,30 @@ static const struct gl_function_remap GL_EXT_transform_feedback_functions[] = {
#if defined(need_GL_EXT_vertex_array)
/* functions defined in MESA_remap_table_functions are excluded */
static const struct gl_function_remap GL_EXT_vertex_array_functions[] = {
- { 24239, _gloffset_ArrayElement },
- { 30901, _gloffset_GetPointerv },
- { 32480, _gloffset_DrawArrays },
+ { 24575, _gloffset_ArrayElement },
+ { 31283, _gloffset_GetPointerv },
+ { 32868, _gloffset_DrawArrays },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_vertex_weighting)
static const struct gl_function_remap GL_EXT_vertex_weighting_functions[] = {
- { 19599, -1 }, /* VertexWeightfvEXT */
- { 27012, -1 }, /* VertexWeightfEXT */
- { 28713, -1 }, /* VertexWeightPointerEXT */
+ { 19907, -1 }, /* VertexWeightfvEXT */
+ { 27371, -1 }, /* VertexWeightfEXT */
+ { 29040, -1 }, /* VertexWeightPointerEXT */
{ -1, -1 }
};
#endif
#if defined(need_GL_HP_image_transform)
static const struct gl_function_remap GL_HP_image_transform_functions[] = {
- { 2366, -1 }, /* GetImageTransformParameterfvHP */
- { 3778, -1 }, /* ImageTransformParameterfHP */
- { 10204, -1 }, /* ImageTransformParameterfvHP */
- { 11954, -1 }, /* ImageTransformParameteriHP */
- { 12334, -1 }, /* GetImageTransformParameterivHP */
- { 19663, -1 }, /* ImageTransformParameterivHP */
+ { 2327, -1 }, /* GetImageTransformParameterfvHP */
+ { 3739, -1 }, /* ImageTransformParameterfHP */
+ { 10278, -1 }, /* ImageTransformParameterfvHP */
+ { 12020, -1 }, /* ImageTransformParameteriHP */
+ { 12390, -1 }, /* GetImageTransformParameterivHP */
+ { 19971, -1 }, /* ImageTransformParameterivHP */
{ -1, -1 }
};
#endif
@@ -6045,14 +6146,14 @@ static const struct gl_function_remap GL_IBM_multimode_draw_arrays_functions[] =
#if defined(need_GL_IBM_vertex_array_lists)
static const struct gl_function_remap GL_IBM_vertex_array_lists_functions[] = {
- { 4366, -1 }, /* SecondaryColorPointerListIBM */
- { 6008, -1 }, /* NormalPointerListIBM */
- { 7699, -1 }, /* FogCoordPointerListIBM */
- { 8006, -1 }, /* VertexPointerListIBM */
- { 11875, -1 }, /* ColorPointerListIBM */
- { 13402, -1 }, /* TexCoordPointerListIBM */
- { 13870, -1 }, /* IndexPointerListIBM */
- { 32796, -1 }, /* EdgeFlagPointerListIBM */
+ { 4400, -1 }, /* SecondaryColorPointerListIBM */
+ { 6106, -1 }, /* NormalPointerListIBM */
+ { 7797, -1 }, /* FogCoordPointerListIBM */
+ { 8104, -1 }, /* VertexPointerListIBM */
+ { 12274, -1 }, /* ColorPointerListIBM */
+ { 13458, -1 }, /* TexCoordPointerListIBM */
+ { 13958, -1 }, /* IndexPointerListIBM */
+ { 33184, -1 }, /* EdgeFlagPointerListIBM */
{ -1, -1 }
};
#endif
@@ -6066,10 +6167,10 @@ static const struct gl_function_remap GL_INGR_blend_func_separate_functions[] =
#if defined(need_GL_INTEL_parallel_arrays)
static const struct gl_function_remap GL_INTEL_parallel_arrays_functions[] = {
- { 12742, -1 }, /* VertexPointervINTEL */
- { 15530, -1 }, /* ColorPointervINTEL */
- { 30065, -1 }, /* NormalPointervINTEL */
- { 30583, -1 }, /* TexCoordPointervINTEL */
+ { 12798, -1 }, /* VertexPointervINTEL */
+ { 15672, -1 }, /* ColorPointervINTEL */
+ { 30442, -1 }, /* NormalPointervINTEL */
+ { 30965, -1 }, /* TexCoordPointervINTEL */
{ -1, -1 }
};
#endif
@@ -6083,10 +6184,10 @@ static const struct gl_function_remap GL_MESA_resize_buffers_functions[] = {
#if defined(need_GL_MESA_shader_debug)
static const struct gl_function_remap GL_MESA_shader_debug_functions[] = {
- { 1677, -1 }, /* GetDebugLogLengthMESA */
- { 3500, -1 }, /* ClearDebugLogMESA */
- { 4527, -1 }, /* GetDebugLogMESA */
- { 31094, -1 }, /* CreateDebugObjectMESA */
+ { 1638, -1 }, /* GetDebugLogLengthMESA */
+ { 3461, -1 }, /* ClearDebugLogMESA */
+ { 4561, -1 }, /* GetDebugLogMESA */
+ { 31476, -1 }, /* CreateDebugObjectMESA */
{ -1, -1 }
};
#endif
@@ -6107,15 +6208,15 @@ static const struct gl_function_remap GL_NV_condtitional_render_functions[] = {
#if defined(need_GL_NV_evaluators)
static const struct gl_function_remap GL_NV_evaluators_functions[] = {
- { 6738, -1 }, /* GetMapAttribParameterivNV */
- { 8461, -1 }, /* MapControlPointsNV */
- { 8560, -1 }, /* MapParameterfvNV */
- { 10649, -1 }, /* EvalMapsNV */
- { 17184, -1 }, /* GetMapAttribParameterfvNV */
- { 17401, -1 }, /* MapParameterivNV */
- { 24853, -1 }, /* GetMapParameterivNV */
- { 25351, -1 }, /* GetMapParameterfvNV */
- { 29380, -1 }, /* GetMapControlPointsNV */
+ { 6836, -1 }, /* GetMapAttribParameterivNV */
+ { 8535, -1 }, /* MapControlPointsNV */
+ { 8634, -1 }, /* MapParameterfvNV */
+ { 10723, -1 }, /* EvalMapsNV */
+ { 17412, -1 }, /* GetMapAttribParameterfvNV */
+ { 17629, -1 }, /* MapParameterivNV */
+ { 25189, -1 }, /* GetMapParameterivNV */
+ { 25732, -1 }, /* GetMapParameterfvNV */
+ { 29757, -1 }, /* GetMapControlPointsNV */
{ -1, -1 }
};
#endif
@@ -6157,8 +6258,8 @@ static const struct gl_function_remap GL_NV_register_combiners_functions[] = {
#if defined(need_GL_NV_register_combiners2)
static const struct gl_function_remap GL_NV_register_combiners2_functions[] = {
- { 15922, -1 }, /* CombinerStageParameterfvNV */
- { 16318, -1 }, /* GetCombinerStageParameterfvNV */
+ { 16064, -1 }, /* CombinerStageParameterfvNV */
+ { 16460, -1 }, /* GetCombinerStageParameterfvNV */
{ -1, -1 }
};
#endif
@@ -6193,23 +6294,23 @@ static const struct gl_function_remap GL_OES_EGL_image_functions[] = {
#if defined(need_GL_PGI_misc_hints)
static const struct gl_function_remap GL_PGI_misc_hints_functions[] = {
- { 8681, -1 }, /* HintPGI */
+ { 8755, -1 }, /* HintPGI */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIS_detail_texture)
static const struct gl_function_remap GL_SGIS_detail_texture_functions[] = {
- { 16291, -1 }, /* GetDetailTexFuncSGIS */
- { 16642, -1 }, /* DetailTexFuncSGIS */
+ { 16433, -1 }, /* GetDetailTexFuncSGIS */
+ { 16870, -1 }, /* DetailTexFuncSGIS */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIS_fog_function)
static const struct gl_function_remap GL_SGIS_fog_function_functions[] = {
- { 27309, -1 }, /* FogFuncSGIS */
- { 28062, -1 }, /* GetFogFuncSGIS */
+ { 27668, -1 }, /* FogFuncSGIS */
+ { 28389, -1 }, /* GetFogFuncSGIS */
{ -1, -1 }
};
#endif
@@ -6237,112 +6338,112 @@ static const struct gl_function_remap GL_SGIS_point_parameters_functions[] = {
#if defined(need_GL_SGIS_sharpen_texture)
static const struct gl_function_remap GL_SGIS_sharpen_texture_functions[] = {
- { 6799, -1 }, /* GetSharpenTexFuncSGIS */
- { 22147, -1 }, /* SharpenTexFuncSGIS */
+ { 6897, -1 }, /* GetSharpenTexFuncSGIS */
+ { 22455, -1 }, /* SharpenTexFuncSGIS */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIS_texture4D)
static const struct gl_function_remap GL_SGIS_texture4D_functions[] = {
- { 1049, -1 }, /* TexImage4DSGIS */
- { 15838, -1 }, /* TexSubImage4DSGIS */
+ { 1010, -1 }, /* TexImage4DSGIS */
+ { 15980, -1 }, /* TexSubImage4DSGIS */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIS_texture_color_mask)
static const struct gl_function_remap GL_SGIS_texture_color_mask_functions[] = {
- { 15236, -1 }, /* TextureColorMaskSGIS */
+ { 15378, -1 }, /* TextureColorMaskSGIS */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIS_texture_filter4)
static const struct gl_function_remap GL_SGIS_texture_filter4_functions[] = {
- { 6976, -1 }, /* GetTexFilterFuncSGIS */
- { 16437, -1 }, /* TexFilterFuncSGIS */
+ { 7074, -1 }, /* GetTexFilterFuncSGIS */
+ { 16606, -1 }, /* TexFilterFuncSGIS */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_async)
static const struct gl_function_remap GL_SGIX_async_functions[] = {
- { 3426, -1 }, /* AsyncMarkerSGIX */
- { 4506, -1 }, /* FinishAsyncSGIX */
- { 5495, -1 }, /* PollAsyncSGIX */
- { 22328, -1 }, /* DeleteAsyncMarkersSGIX */
- { 22383, -1 }, /* IsAsyncMarkerSGIX */
- { 32593, -1 }, /* GenAsyncMarkersSGIX */
+ { 3387, -1 }, /* AsyncMarkerSGIX */
+ { 4540, -1 }, /* FinishAsyncSGIX */
+ { 5516, -1 }, /* PollAsyncSGIX */
+ { 22664, -1 }, /* DeleteAsyncMarkersSGIX */
+ { 22719, -1 }, /* IsAsyncMarkerSGIX */
+ { 32981, -1 }, /* GenAsyncMarkersSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_flush_raster)
static const struct gl_function_remap GL_SGIX_flush_raster_functions[] = {
- { 7353, -1 }, /* FlushRasterSGIX */
+ { 7451, -1 }, /* FlushRasterSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_fragment_lighting)
static const struct gl_function_remap GL_SGIX_fragment_lighting_functions[] = {
- { 2664, -1 }, /* FragmentMaterialfvSGIX */
- { 5399, -1 }, /* FragmentLightiSGIX */
- { 8073, -1 }, /* FragmentMaterialfSGIX */
- { 8234, -1 }, /* GetFragmentLightivSGIX */
- { 9107, -1 }, /* FragmentLightModeliSGIX */
- { 10712, -1 }, /* FragmentLightivSGIX */
- { 11019, -1 }, /* GetFragmentMaterialivSGIX */
- { 16231, -1 }, /* GetFragmentMaterialfvSGIX */
- { 19486, -1 }, /* FragmentLightModelfSGIX */
- { 19786, -1 }, /* FragmentColorMaterialSGIX */
- { 20203, -1 }, /* FragmentMaterialiSGIX */
- { 21463, -1 }, /* LightEnviSGIX */
- { 23074, -1 }, /* FragmentLightModelfvSGIX */
- { 23409, -1 }, /* FragmentLightfvSGIX */
- { 28446, -1 }, /* FragmentLightModelivSGIX */
- { 28595, -1 }, /* FragmentLightfSGIX */
- { 31431, -1 }, /* GetFragmentLightfvSGIX */
- { 33076, -1 }, /* FragmentMaterialivSGIX */
+ { 2625, -1 }, /* FragmentMaterialfvSGIX */
+ { 5420, -1 }, /* FragmentLightiSGIX */
+ { 8171, -1 }, /* FragmentMaterialfSGIX */
+ { 8308, -1 }, /* GetFragmentLightivSGIX */
+ { 9181, -1 }, /* FragmentLightModeliSGIX */
+ { 10786, -1 }, /* FragmentLightivSGIX */
+ { 11093, -1 }, /* GetFragmentMaterialivSGIX */
+ { 16373, -1 }, /* GetFragmentMaterialfvSGIX */
+ { 19776, -1 }, /* FragmentLightModelfSGIX */
+ { 20094, -1 }, /* FragmentColorMaterialSGIX */
+ { 20511, -1 }, /* FragmentMaterialiSGIX */
+ { 21771, -1 }, /* LightEnviSGIX */
+ { 23410, -1 }, /* FragmentLightModelfvSGIX */
+ { 23745, -1 }, /* FragmentLightfvSGIX */
+ { 28773, -1 }, /* FragmentLightModelivSGIX */
+ { 28922, -1 }, /* FragmentLightfSGIX */
+ { 31852, -1 }, /* GetFragmentLightfvSGIX */
+ { 33464, -1 }, /* FragmentMaterialivSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_framezoom)
static const struct gl_function_remap GL_SGIX_framezoom_functions[] = {
- { 22406, -1 }, /* FrameZoomSGIX */
+ { 22742, -1 }, /* FrameZoomSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_igloo_interface)
static const struct gl_function_remap GL_SGIX_igloo_interface_functions[] = {
- { 28903, -1 }, /* IglooInterfaceSGIX */
+ { 29230, -1 }, /* IglooInterfaceSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_instruments)
static const struct gl_function_remap GL_SGIX_instruments_functions[] = {
- { 2844, -1 }, /* ReadInstrumentsSGIX */
- { 6572, -1 }, /* PollInstrumentsSGIX */
- { 10570, -1 }, /* GetInstrumentsSGIX */
- { 13000, -1 }, /* StartInstrumentsSGIX */
- { 15956, -1 }, /* StopInstrumentsSGIX */
- { 17823, -1 }, /* InstrumentsBufferSGIX */
+ { 2805, -1 }, /* ReadInstrumentsSGIX */
+ { 6670, -1 }, /* PollInstrumentsSGIX */
+ { 10644, -1 }, /* GetInstrumentsSGIX */
+ { 13056, -1 }, /* StartInstrumentsSGIX */
+ { 16098, -1 }, /* StopInstrumentsSGIX */
+ { 18051, -1 }, /* InstrumentsBufferSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_list_priority)
static const struct gl_function_remap GL_SGIX_list_priority_functions[] = {
- { 1280, -1 }, /* ListParameterfSGIX */
- { 3128, -1 }, /* GetListParameterfvSGIX */
- { 17714, -1 }, /* ListParameteriSGIX */
- { 18728, -1 }, /* ListParameterfvSGIX */
- { 20869, -1 }, /* ListParameterivSGIX */
- { 32637, -1 }, /* GetListParameterivSGIX */
+ { 1241, -1 }, /* ListParameterfSGIX */
+ { 3089, -1 }, /* GetListParameterfvSGIX */
+ { 17942, -1 }, /* ListParameteriSGIX */
+ { 19008, -1 }, /* ListParameterfvSGIX */
+ { 21177, -1 }, /* ListParameterivSGIX */
+ { 33025, -1 }, /* GetListParameterivSGIX */
{ -1, -1 }
};
#endif
@@ -6356,134 +6457,134 @@ static const struct gl_function_remap GL_SGIX_pixel_texture_functions[] = {
#if defined(need_GL_SGIX_polynomial_ffd)
static const struct gl_function_remap GL_SGIX_polynomial_ffd_functions[] = {
- { 3724, -1 }, /* LoadIdentityDeformationMapSGIX */
- { 12208, -1 }, /* DeformationMap3dSGIX */
- { 16056, -1 }, /* DeformSGIX */
- { 24351, -1 }, /* DeformationMap3fSGIX */
+ { 3685, -1 }, /* LoadIdentityDeformationMapSGIX */
+ { 16198, -1 }, /* DeformSGIX */
+ { 24687, -1 }, /* DeformationMap3fSGIX */
+ { 31740, -1 }, /* DeformationMap3dSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_reference_plane)
static const struct gl_function_remap GL_SGIX_reference_plane_functions[] = {
- { 14787, -1 }, /* ReferencePlaneSGIX */
+ { 14929, -1 }, /* ReferencePlaneSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_sprite)
static const struct gl_function_remap GL_SGIX_sprite_functions[] = {
- { 9605, -1 }, /* SpriteParameterfvSGIX */
- { 20658, -1 }, /* SpriteParameteriSGIX */
- { 26681, -1 }, /* SpriteParameterfSGIX */
- { 29523, -1 }, /* SpriteParameterivSGIX */
+ { 9679, -1 }, /* SpriteParameterfvSGIX */
+ { 20966, -1 }, /* SpriteParameteriSGIX */
+ { 27072, -1 }, /* SpriteParameterfSGIX */
+ { 29900, -1 }, /* SpriteParameterivSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_tag_sample_buffer)
static const struct gl_function_remap GL_SGIX_tag_sample_buffer_functions[] = {
- { 20717, -1 }, /* TagSampleBufferSGIX */
+ { 21025, -1 }, /* TagSampleBufferSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGI_color_table)
static const struct gl_function_remap GL_SGI_color_table_functions[] = {
- { 7643, _gloffset_ColorTableParameteriv },
- { 8355, _gloffset_ColorTable },
- { 15283, _gloffset_GetColorTable },
- { 15393, _gloffset_CopyColorTable },
- { 19430, _gloffset_ColorTableParameterfv },
- { 22982, _gloffset_GetColorTableParameterfv },
- { 25109, _gloffset_GetColorTableParameteriv },
+ { 7741, _gloffset_ColorTableParameteriv },
+ { 8429, _gloffset_ColorTable },
+ { 15425, _gloffset_GetColorTable },
+ { 15535, _gloffset_CopyColorTable },
+ { 19720, _gloffset_ColorTableParameterfv },
+ { 23318, _gloffset_GetColorTableParameterfv },
+ { 25490, _gloffset_GetColorTableParameteriv },
{ -1, -1 }
};
#endif
#if defined(need_GL_SUNX_constant_data)
static const struct gl_function_remap GL_SUNX_constant_data_functions[] = {
- { 31409, -1 }, /* FinishTextureSUNX */
+ { 31830, -1 }, /* FinishTextureSUNX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SUN_global_alpha)
static const struct gl_function_remap GL_SUN_global_alpha_functions[] = {
- { 3447, -1 }, /* GlobalAlphaFactorubSUN */
- { 4805, -1 }, /* GlobalAlphaFactoriSUN */
- { 6597, -1 }, /* GlobalAlphaFactordSUN */
- { 9689, -1 }, /* GlobalAlphaFactoruiSUN */
- { 10161, -1 }, /* GlobalAlphaFactorbSUN */
- { 13315, -1 }, /* GlobalAlphaFactorfSUN */
- { 13479, -1 }, /* GlobalAlphaFactorusSUN */
- { 22669, -1 }, /* GlobalAlphaFactorsSUN */
+ { 3408, -1 }, /* GlobalAlphaFactorubSUN */
+ { 4868, -1 }, /* GlobalAlphaFactoriSUN */
+ { 6695, -1 }, /* GlobalAlphaFactordSUN */
+ { 9763, -1 }, /* GlobalAlphaFactoruiSUN */
+ { 10235, -1 }, /* GlobalAlphaFactorbSUN */
+ { 13371, -1 }, /* GlobalAlphaFactorfSUN */
+ { 13535, -1 }, /* GlobalAlphaFactorusSUN */
+ { 23005, -1 }, /* GlobalAlphaFactorsSUN */
{ -1, -1 }
};
#endif
#if defined(need_GL_SUN_mesh_array)
static const struct gl_function_remap GL_SUN_mesh_array_functions[] = {
- { 29314, -1 }, /* DrawMeshArraysSUN */
+ { 29691, -1 }, /* DrawMeshArraysSUN */
{ -1, -1 }
};
#endif
#if defined(need_GL_SUN_triangle_list)
static const struct gl_function_remap GL_SUN_triangle_list_functions[] = {
- { 4480, -1 }, /* ReplacementCodeubSUN */
- { 6356, -1 }, /* ReplacementCodeubvSUN */
- { 19151, -1 }, /* ReplacementCodeusvSUN */
- { 19339, -1 }, /* ReplacementCodePointerSUN */
- { 21527, -1 }, /* ReplacementCodeuiSUN */
- { 22357, -1 }, /* ReplacementCodeusSUN */
- { 29980, -1 }, /* ReplacementCodeuivSUN */
+ { 4514, -1 }, /* ReplacementCodeubSUN */
+ { 6454, -1 }, /* ReplacementCodeubvSUN */
+ { 19441, -1 }, /* ReplacementCodeusvSUN */
+ { 19629, -1 }, /* ReplacementCodePointerSUN */
+ { 21835, -1 }, /* ReplacementCodeuiSUN */
+ { 22693, -1 }, /* ReplacementCodeusSUN */
+ { 30357, -1 }, /* ReplacementCodeuivSUN */
{ -1, -1 }
};
#endif
#if defined(need_GL_SUN_vertex)
static const struct gl_function_remap GL_SUN_vertex_functions[] = {
- { 1154, -1 }, /* ReplacementCodeuiColor3fVertex3fvSUN */
- { 1352, -1 }, /* TexCoord4fColor4fNormal3fVertex4fvSUN */
- { 1578, -1 }, /* TexCoord2fColor4ubVertex3fvSUN */
- { 1908, -1 }, /* ReplacementCodeuiVertex3fvSUN */
- { 2042, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fvSUN */
- { 2600, -1 }, /* ReplacementCodeuiNormal3fVertex3fSUN */
- { 2913, -1 }, /* Color4ubVertex3fvSUN */
- { 4639, -1 }, /* Color4ubVertex3fSUN */
- { 4762, -1 }, /* TexCoord2fVertex3fSUN */
- { 5106, -1 }, /* TexCoord2fColor4fNormal3fVertex3fSUN */
- { 5599, -1 }, /* TexCoord2fNormal3fVertex3fvSUN */
- { 6251, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN */
- { 7031, -1 }, /* ReplacementCodeuiColor4ubVertex3fvSUN */
- { 7390, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fSUN */
- { 8102, -1 }, /* TexCoord2fNormal3fVertex3fSUN */
- { 8906, -1 }, /* Color3fVertex3fSUN */
- { 10097, -1 }, /* Color3fVertex3fvSUN */
- { 10535, -1 }, /* Color4fNormal3fVertex3fvSUN */
- { 11364, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN */
- { 12863, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fvSUN */
- { 14403, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN */
- { 14929, -1 }, /* TexCoord2fColor3fVertex3fSUN */
- { 15981, -1 }, /* TexCoord4fColor4fNormal3fVertex4fSUN */
- { 16396, -1 }, /* Color4ubVertex2fvSUN */
- { 16667, -1 }, /* Normal3fVertex3fSUN */
- { 17764, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fSUN */
- { 18125, -1 }, /* TexCoord2fColor4fNormal3fVertex3fvSUN */
- { 18980, -1 }, /* TexCoord2fVertex3fvSUN */
- { 19756, -1 }, /* Color4ubVertex2fSUN */
- { 19994, -1 }, /* ReplacementCodeuiColor4ubVertex3fSUN */
- { 21993, -1 }, /* TexCoord2fColor4ubVertex3fSUN */
- { 22425, -1 }, /* Normal3fVertex3fvSUN */
- { 22891, -1 }, /* Color4fNormal3fVertex3fSUN */
- { 23900, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN */
- { 26002, -1 }, /* ReplacementCodeuiColor3fVertex3fSUN */
- { 27425, -1 }, /* TexCoord4fVertex4fSUN */
- { 27851, -1 }, /* TexCoord2fColor3fVertex3fvSUN */
- { 28290, -1 }, /* ReplacementCodeuiNormal3fVertex3fvSUN */
- { 28417, -1 }, /* TexCoord4fVertex4fvSUN */
- { 29151, -1 }, /* ReplacementCodeuiVertex3fSUN */
+ { 1115, -1 }, /* ReplacementCodeuiColor3fVertex3fvSUN */
+ { 1313, -1 }, /* TexCoord4fColor4fNormal3fVertex4fvSUN */
+ { 1539, -1 }, /* TexCoord2fColor4ubVertex3fvSUN */
+ { 1869, -1 }, /* ReplacementCodeuiVertex3fvSUN */
+ { 2003, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fvSUN */
+ { 2561, -1 }, /* ReplacementCodeuiNormal3fVertex3fSUN */
+ { 2874, -1 }, /* Color4ubVertex3fvSUN */
+ { 4673, -1 }, /* Color4ubVertex3fSUN */
+ { 4796, -1 }, /* TexCoord2fVertex3fSUN */
+ { 5169, -1 }, /* TexCoord2fColor4fNormal3fVertex3fSUN */
+ { 5620, -1 }, /* TexCoord2fNormal3fVertex3fvSUN */
+ { 6349, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN */
+ { 7129, -1 }, /* ReplacementCodeuiColor4ubVertex3fvSUN */
+ { 7488, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fSUN */
+ { 8980, -1 }, /* Color3fVertex3fSUN */
+ { 10171, -1 }, /* Color3fVertex3fvSUN */
+ { 10609, -1 }, /* Color4fNormal3fVertex3fvSUN */
+ { 11438, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN */
+ { 12919, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fvSUN */
+ { 14545, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN */
+ { 15071, -1 }, /* TexCoord2fColor3fVertex3fSUN */
+ { 16123, -1 }, /* TexCoord4fColor4fNormal3fVertex4fSUN */
+ { 16565, -1 }, /* Color4ubVertex2fvSUN */
+ { 16895, -1 }, /* Normal3fVertex3fSUN */
+ { 17992, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fSUN */
+ { 18344, -1 }, /* TexCoord2fColor4fNormal3fVertex3fvSUN */
+ { 18651, -1 }, /* TexCoord2fNormal3fVertex3fSUN */
+ { 19260, -1 }, /* TexCoord2fVertex3fvSUN */
+ { 20064, -1 }, /* Color4ubVertex2fSUN */
+ { 20302, -1 }, /* ReplacementCodeuiColor4ubVertex3fSUN */
+ { 22301, -1 }, /* TexCoord2fColor4ubVertex3fSUN */
+ { 22761, -1 }, /* Normal3fVertex3fvSUN */
+ { 23227, -1 }, /* Color4fNormal3fVertex3fSUN */
+ { 24236, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN */
+ { 26393, -1 }, /* ReplacementCodeuiColor3fVertex3fSUN */
+ { 27784, -1 }, /* TexCoord4fVertex4fSUN */
+ { 28230, -1 }, /* TexCoord2fColor3fVertex3fvSUN */
+ { 28617, -1 }, /* ReplacementCodeuiNormal3fVertex3fvSUN */
+ { 28744, -1 }, /* TexCoord4fVertex4fvSUN */
+ { 29478, -1 }, /* ReplacementCodeuiVertex3fSUN */
{ -1, -1 }
};
#endif
@@ -6491,40 +6592,40 @@ static const struct gl_function_remap GL_SUN_vertex_functions[] = {
#if defined(need_GL_VERSION_1_3)
/* functions defined in MESA_remap_table_functions are excluded */
static const struct gl_function_remap GL_VERSION_1_3_functions[] = {
- { 464, _gloffset_MultiTexCoord3sARB },
- { 696, _gloffset_ActiveTextureARB },
- { 4234, _gloffset_MultiTexCoord1fvARB },
- { 6142, _gloffset_MultiTexCoord3dARB },
- { 6187, _gloffset_MultiTexCoord2iARB },
- { 6311, _gloffset_MultiTexCoord2svARB },
- { 8311, _gloffset_MultiTexCoord2fARB },
- { 10371, _gloffset_MultiTexCoord3fvARB },
- { 10973, _gloffset_MultiTexCoord4sARB },
- { 11654, _gloffset_MultiTexCoord2dvARB },
- { 12069, _gloffset_MultiTexCoord1svARB },
- { 12480, _gloffset_MultiTexCoord3svARB },
- { 12541, _gloffset_MultiTexCoord4iARB },
- { 13342, _gloffset_MultiTexCoord3iARB },
- { 14141, _gloffset_MultiTexCoord1dARB },
- { 14358, _gloffset_MultiTexCoord3dvARB },
- { 15637, _gloffset_MultiTexCoord3ivARB },
- { 15682, _gloffset_MultiTexCoord2sARB },
- { 17067, _gloffset_MultiTexCoord4ivARB },
- { 19080, _gloffset_ClientActiveTextureARB },
- { 21380, _gloffset_MultiTexCoord2dARB },
- { 21817, _gloffset_MultiTexCoord4dvARB },
- { 22173, _gloffset_MultiTexCoord4fvARB },
- { 23123, _gloffset_MultiTexCoord3fARB },
- { 25693, _gloffset_MultiTexCoord4dARB },
- { 25959, _gloffset_MultiTexCoord1sARB },
- { 26163, _gloffset_MultiTexCoord1dvARB },
- { 27171, _gloffset_MultiTexCoord1ivARB },
- { 27264, _gloffset_MultiTexCoord2ivARB },
- { 27603, _gloffset_MultiTexCoord1iARB },
- { 29019, _gloffset_MultiTexCoord4svARB },
- { 29593, _gloffset_MultiTexCoord1fARB },
- { 29856, _gloffset_MultiTexCoord4fARB },
- { 32314, _gloffset_MultiTexCoord2fvARB },
+ { 425, _gloffset_MultiTexCoord3sARB },
+ { 657, _gloffset_ActiveTextureARB },
+ { 4268, _gloffset_MultiTexCoord1fvARB },
+ { 6240, _gloffset_MultiTexCoord3dARB },
+ { 6285, _gloffset_MultiTexCoord2iARB },
+ { 6409, _gloffset_MultiTexCoord2svARB },
+ { 8385, _gloffset_MultiTexCoord2fARB },
+ { 10445, _gloffset_MultiTexCoord3fvARB },
+ { 11047, _gloffset_MultiTexCoord4sARB },
+ { 11728, _gloffset_MultiTexCoord2dvARB },
+ { 12135, _gloffset_MultiTexCoord1svARB },
+ { 12536, _gloffset_MultiTexCoord3svARB },
+ { 12597, _gloffset_MultiTexCoord4iARB },
+ { 13398, _gloffset_MultiTexCoord3iARB },
+ { 14268, _gloffset_MultiTexCoord1dARB },
+ { 14500, _gloffset_MultiTexCoord3dvARB },
+ { 15779, _gloffset_MultiTexCoord3ivARB },
+ { 15824, _gloffset_MultiTexCoord2sARB },
+ { 17295, _gloffset_MultiTexCoord4ivARB },
+ { 19360, _gloffset_ClientActiveTextureARB },
+ { 21688, _gloffset_MultiTexCoord2dARB },
+ { 22125, _gloffset_MultiTexCoord4dvARB },
+ { 22481, _gloffset_MultiTexCoord4fvARB },
+ { 23459, _gloffset_MultiTexCoord3fARB },
+ { 26084, _gloffset_MultiTexCoord4dARB },
+ { 26350, _gloffset_MultiTexCoord1sARB },
+ { 26554, _gloffset_MultiTexCoord1dvARB },
+ { 27530, _gloffset_MultiTexCoord1ivARB },
+ { 27623, _gloffset_MultiTexCoord2ivARB },
+ { 27962, _gloffset_MultiTexCoord1iARB },
+ { 29346, _gloffset_MultiTexCoord4svARB },
+ { 29970, _gloffset_MultiTexCoord1fARB },
+ { 30233, _gloffset_MultiTexCoord4fARB },
+ { 32702, _gloffset_MultiTexCoord2fvARB },
{ -1, -1 }
};
#endif
diff --git a/src/mesa/main/renderbuffer.c b/src/mesa/main/renderbuffer.c
index 67ee589d776..fa884c0de93 100644
--- a/src/mesa/main/renderbuffer.c
+++ b/src/mesa/main/renderbuffer.c
@@ -51,40 +51,187 @@
/*
* Routines for get/put values in common buffer formats follow.
- * Someday add support for arbitrary row stride to make them more
- * flexible.
*/
-/**********************************************************************
- * Functions for buffers of 1 X GLubyte values.
- * Typically stencil.
+/* Returns a bytes per pixel of the DataType in the get/put span
+ * functions for at least a subset of the available combinations a
+ * renderbuffer can have.
+ *
+ * It would be nice to see gl_renderbuffer start talking about a
+ * gl_format instead of a GLenum DataType.
*/
+static int
+get_datatype_bytes(struct gl_renderbuffer *rb)
+{
+ int component_size;
+ switch (rb->DataType) {
+ case GL_FLOAT:
+ case GL_UNSIGNED_INT:
+ case GL_UNSIGNED_INT_24_8_EXT:
+ component_size = 4;
+ break;
+ case GL_UNSIGNED_SHORT:
+ component_size = 2;
+ break;
+ case GL_UNSIGNED_BYTE:
+ component_size = 1;
+ break;
+ default:
+ component_size = 1;
+ assert(0);
+ }
+
+ switch (rb->_BaseFormat) {
+ case GL_DEPTH_COMPONENT:
+ case GL_DEPTH_STENCIL:
+ return component_size;
+ default:
+ return 4 * component_size;
+ }
+}
+
+/* This is commonly used by most of the accessors. */
static void *
-get_pointer_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb,
- GLint x, GLint y)
+get_pointer_generic(struct gl_context *ctx, struct gl_renderbuffer *rb,
+ GLint x, GLint y)
{
if (!rb->Data)
return NULL;
- ASSERT(rb->DataType == GL_UNSIGNED_BYTE);
- /* Can't assert rb->Format since these funcs may be used for serveral
- * different formats (GL_ALPHA8, GL_STENCIL_INDEX8, etc).
- */
- return (GLubyte *) rb->Data + y * rb->Width + x;
+
+ return ((char *) rb->Data +
+ (y * rb->RowStride + x) * _mesa_get_format_bytes(rb->Format));
}
+/* GetRow() implementation for formats where DataType matches the rb->Format.
+ */
+static void
+get_row_generic(struct gl_context *ctx, struct gl_renderbuffer *rb,
+ GLuint count, GLint x, GLint y, void *values)
+{
+ void *src = rb->GetPointer(ctx, rb, x, y);
+ memcpy(values, src, count * _mesa_get_format_bytes(rb->Format));
+}
+/* Only used for float textures currently, but might also be used for
+ * RGBA8888, RGBA16, etc.
+ */
static void
-get_row_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count,
- GLint x, GLint y, void *values)
+get_values_generic(struct gl_context *ctx, struct gl_renderbuffer *rb,
+ GLuint count, const GLint x[], const GLint y[], void *values)
{
- const GLubyte *src = (const GLubyte *) rb->Data + y * rb->Width + x;
- ASSERT(rb->DataType == GL_UNSIGNED_BYTE);
- memcpy(values, src, count * sizeof(GLubyte));
+ int format_bytes = _mesa_get_format_bytes(rb->Format) / sizeof(GLfloat);
+ GLuint i;
+
+ for (i = 0; i < count; i++) {
+ const void *src = rb->GetPointer(ctx, rb, x[i], y[i]);
+ char *dst = (char *) values + i * format_bytes;
+ memcpy(dst, src, format_bytes);
+ }
+}
+
+/* For the GL_RED/GL_RG/GL_RGB format/DataType combinations (and
+ * GL_LUMINANCE/GL_INTENSITY?), the Put functions are a matter of
+ * storing those initial components of the value per pixel into the
+ * destination.
+ */
+static void
+put_row_generic(struct gl_context *ctx, struct gl_renderbuffer *rb,
+ GLuint count, GLint x, GLint y,
+ const void *values, const GLubyte *mask)
+{
+ void *row = rb->GetPointer(ctx, rb, x, y);
+ int format_bytes = _mesa_get_format_bytes(rb->Format) / sizeof(GLfloat);
+ int datatype_bytes = get_datatype_bytes(rb);
+ unsigned int i;
+
+ if (mask) {
+ for (i = 0; i < count; i++) {
+ char *dst = (char *) row + i * format_bytes;
+ const char *src = (const char *) values + i * datatype_bytes;
+
+ if (mask[i]) {
+ memcpy(dst, src, format_bytes);
+ }
+ }
+ }
+ else {
+ for (i = 0; i < count; i++) {
+ char *dst = (char *) row + i * format_bytes;
+ const char *src = (const char *) values + i * datatype_bytes;
+ memcpy(dst, src, format_bytes);
+ }
+ }
+}
+
+static void
+put_mono_row_generic(struct gl_context *ctx, struct gl_renderbuffer *rb,
+ GLuint count, GLint x, GLint y,
+ const void *value, const GLubyte *mask)
+{
+ void *row = rb->GetPointer(ctx, rb, x, y);
+ int format_bytes = _mesa_get_format_bytes(rb->Format) / sizeof(GLfloat);
+ unsigned int i;
+
+ if (mask) {
+ for (i = 0; i < count; i++) {
+ char *dst = (char *) row + i * format_bytes;
+ if (mask[i]) {
+ memcpy(dst, value, format_bytes);
+ }
+ }
+ }
+ else {
+ for (i = 0; i < count; i++) {
+ char *dst = (char *) row + i * format_bytes;
+ memcpy(dst, value, format_bytes);
+ }
+ }
}
static void
+put_values_generic(struct gl_context *ctx, struct gl_renderbuffer *rb,
+ GLuint count, const GLint x[], const GLint y[],
+ const void *values, const GLubyte *mask)
+{
+ int format_bytes = _mesa_get_format_bytes(rb->Format) / sizeof(GLfloat);
+ int datatype_bytes = get_datatype_bytes(rb);
+ unsigned int i;
+
+ for (i = 0; i < count; i++) {
+ if (!mask || mask[i]) {
+ void *dst = rb->GetPointer(ctx, rb, x[i], y[i]);
+ const char *src = (const char *) values + i * datatype_bytes;
+ memcpy(dst, src, format_bytes);
+ }
+ }
+}
+
+
+static void
+put_mono_values_generic(struct gl_context *ctx,
+ struct gl_renderbuffer *rb,
+ GLuint count, const GLint x[], const GLint y[],
+ const void *value, const GLubyte *mask)
+{
+ int format_bytes = _mesa_get_format_bytes(rb->Format) / sizeof(GLfloat);
+ unsigned int i;
+
+ for (i = 0; i < count; i++) {
+ if (!mask || mask[i]) {
+ void *dst = rb->GetPointer(ctx, rb, x[i], y[i]);
+ memcpy(dst, value, format_bytes);
+ }
+ }
+}
+
+/**********************************************************************
+ * Functions for buffers of 1 X GLubyte values.
+ * Typically stencil.
+ */
+
+static void
get_values_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count,
const GLint x[], const GLint y[], void *values)
{
@@ -92,7 +239,7 @@ get_values_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint coun
GLuint i;
ASSERT(rb->DataType == GL_UNSIGNED_BYTE);
for (i = 0; i < count; i++) {
- const GLubyte *src = (GLubyte *) rb->Data + y[i] * rb->Width + x[i];
+ const GLubyte *src = (GLubyte *) rb->Data + y[i] * rb->RowStride + x[i];
dst[i] = *src;
}
}
@@ -103,7 +250,7 @@ put_row_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count,
GLint x, GLint y, const void *values, const GLubyte *mask)
{
const GLubyte *src = (const GLubyte *) values;
- GLubyte *dst = (GLubyte *) rb->Data + y * rb->Width + x;
+ GLubyte *dst = (GLubyte *) rb->Data + y * rb->RowStride + x;
ASSERT(rb->DataType == GL_UNSIGNED_BYTE);
if (mask) {
GLuint i;
@@ -124,7 +271,7 @@ put_mono_row_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint co
GLint x, GLint y, const void *value, const GLubyte *mask)
{
const GLubyte val = *((const GLubyte *) value);
- GLubyte *dst = (GLubyte *) rb->Data + y * rb->Width + x;
+ GLubyte *dst = (GLubyte *) rb->Data + y * rb->RowStride + x;
ASSERT(rb->DataType == GL_UNSIGNED_BYTE);
if (mask) {
GLuint i;
@@ -153,7 +300,7 @@ put_values_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint coun
ASSERT(rb->DataType == GL_UNSIGNED_BYTE);
for (i = 0; i < count; i++) {
if (!mask || mask[i]) {
- GLubyte *dst = (GLubyte *) rb->Data + y[i] * rb->Width + x[i];
+ GLubyte *dst = (GLubyte *) rb->Data + y[i] * rb->RowStride + x[i];
*dst = src[i];
}
}
@@ -170,7 +317,7 @@ put_mono_values_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint
ASSERT(rb->DataType == GL_UNSIGNED_BYTE);
for (i = 0; i < count; i++) {
if (!mask || mask[i]) {
- GLubyte *dst = (GLubyte *) rb->Data + y[i] * rb->Width + x[i];
+ GLubyte *dst = (GLubyte *) rb->Data + y[i] * rb->RowStride + x[i];
*dst = val;
}
}
@@ -182,28 +329,6 @@ put_mono_values_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint
* Typically depth/Z.
*/
-static void *
-get_pointer_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb,
- GLint x, GLint y)
-{
- if (!rb->Data)
- return NULL;
- ASSERT(rb->DataType == GL_UNSIGNED_SHORT);
- ASSERT(rb->Width > 0);
- return (GLushort *) rb->Data + y * rb->Width + x;
-}
-
-
-static void
-get_row_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count,
- GLint x, GLint y, void *values)
-{
- const void *src = rb->GetPointer(ctx, rb, x, y);
- ASSERT(rb->DataType == GL_UNSIGNED_SHORT);
- memcpy(values, src, count * sizeof(GLushort));
-}
-
-
static void
get_values_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count,
const GLint x[], const GLint y[], void *values)
@@ -212,7 +337,7 @@ get_values_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint cou
GLuint i;
ASSERT(rb->DataType == GL_UNSIGNED_SHORT);
for (i = 0; i < count; i++) {
- const GLushort *src = (GLushort *) rb->Data + y[i] * rb->Width + x[i];
+ const GLushort *src = (GLushort *) rb->Data + y[i] * rb->RowStride + x[i];
dst[i] = *src;
}
}
@@ -223,7 +348,7 @@ put_row_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count,
GLint x, GLint y, const void *values, const GLubyte *mask)
{
const GLushort *src = (const GLushort *) values;
- GLushort *dst = (GLushort *) rb->Data + y * rb->Width + x;
+ GLushort *dst = (GLushort *) rb->Data + y * rb->RowStride + x;
ASSERT(rb->DataType == GL_UNSIGNED_SHORT);
if (mask) {
GLuint i;
@@ -244,7 +369,7 @@ put_mono_row_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint c
GLint x, GLint y, const void *value, const GLubyte *mask)
{
const GLushort val = *((const GLushort *) value);
- GLushort *dst = (GLushort *) rb->Data + y * rb->Width + x;
+ GLushort *dst = (GLushort *) rb->Data + y * rb->RowStride + x;
ASSERT(rb->DataType == GL_UNSIGNED_SHORT);
if (mask) {
GLuint i;
@@ -273,7 +398,7 @@ put_values_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint cou
ASSERT(rb->DataType == GL_UNSIGNED_SHORT);
for (i = 0; i < count; i++) {
if (!mask || mask[i]) {
- GLushort *dst = (GLushort *) rb->Data + y[i] * rb->Width + x[i];
+ GLushort *dst = (GLushort *) rb->Data + y[i] * rb->RowStride + x[i];
*dst = src[i];
}
}
@@ -291,7 +416,7 @@ put_mono_values_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb,
GLuint i;
for (i = 0; i < count; i++) {
if (mask[i]) {
- GLushort *dst = (GLushort *) rb->Data + y[i] * rb->Width + x[i];
+ GLushort *dst = (GLushort *) rb->Data + y[i] * rb->RowStride + x[i];
*dst = val;
}
}
@@ -299,7 +424,7 @@ put_mono_values_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb,
else {
GLuint i;
for (i = 0; i < count; i++) {
- GLushort *dst = (GLushort *) rb->Data + y[i] * rb->Width + x[i];
+ GLushort *dst = (GLushort *) rb->Data + y[i] * rb->RowStride + x[i];
*dst = val;
}
}
@@ -311,29 +436,6 @@ put_mono_values_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb,
* Typically depth/Z or color index.
*/
-static void *
-get_pointer_uint(struct gl_context *ctx, struct gl_renderbuffer *rb,
- GLint x, GLint y)
-{
- if (!rb->Data)
- return NULL;
- ASSERT(rb->DataType == GL_UNSIGNED_INT ||
- rb->DataType == GL_UNSIGNED_INT_24_8_EXT);
- return (GLuint *) rb->Data + y * rb->Width + x;
-}
-
-
-static void
-get_row_uint(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count,
- GLint x, GLint y, void *values)
-{
- const void *src = rb->GetPointer(ctx, rb, x, y);
- ASSERT(rb->DataType == GL_UNSIGNED_INT ||
- rb->DataType == GL_UNSIGNED_INT_24_8_EXT);
- memcpy(values, src, count * sizeof(GLuint));
-}
-
-
static void
get_values_uint(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count,
const GLint x[], const GLint y[], void *values)
@@ -343,7 +445,7 @@ get_values_uint(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count
ASSERT(rb->DataType == GL_UNSIGNED_INT ||
rb->DataType == GL_UNSIGNED_INT_24_8_EXT);
for (i = 0; i < count; i++) {
- const GLuint *src = (GLuint *) rb->Data + y[i] * rb->Width + x[i];
+ const GLuint *src = (GLuint *) rb->Data + y[i] * rb->RowStride + x[i];
dst[i] = *src;
}
}
@@ -354,7 +456,7 @@ put_row_uint(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count,
GLint x, GLint y, const void *values, const GLubyte *mask)
{
const GLuint *src = (const GLuint *) values;
- GLuint *dst = (GLuint *) rb->Data + y * rb->Width + x;
+ GLuint *dst = (GLuint *) rb->Data + y * rb->RowStride + x;
ASSERT(rb->DataType == GL_UNSIGNED_INT ||
rb->DataType == GL_UNSIGNED_INT_24_8_EXT);
if (mask) {
@@ -376,7 +478,7 @@ put_mono_row_uint(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint cou
GLint x, GLint y, const void *value, const GLubyte *mask)
{
const GLuint val = *((const GLuint *) value);
- GLuint *dst = (GLuint *) rb->Data + y * rb->Width + x;
+ GLuint *dst = (GLuint *) rb->Data + y * rb->RowStride + x;
ASSERT(rb->DataType == GL_UNSIGNED_INT ||
rb->DataType == GL_UNSIGNED_INT_24_8_EXT);
if (mask) {
@@ -407,7 +509,7 @@ put_values_uint(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count
rb->DataType == GL_UNSIGNED_INT_24_8_EXT);
for (i = 0; i < count; i++) {
if (!mask || mask[i]) {
- GLuint *dst = (GLuint *) rb->Data + y[i] * rb->Width + x[i];
+ GLuint *dst = (GLuint *) rb->Data + y[i] * rb->RowStride + x[i];
*dst = src[i];
}
}
@@ -425,7 +527,7 @@ put_mono_values_uint(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint
rb->DataType == GL_UNSIGNED_INT_24_8_EXT);
for (i = 0; i < count; i++) {
if (!mask || mask[i]) {
- GLuint *dst = (GLuint *) rb->Data + y[i] * rb->Width + x[i];
+ GLuint *dst = (GLuint *) rb->Data + y[i] * rb->RowStride + x[i];
*dst = val;
}
}
@@ -455,7 +557,8 @@ static void
get_row_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count,
GLint x, GLint y, void *values)
{
- const GLubyte *src = (const GLubyte *) rb->Data + 3 * (y * rb->Width + x);
+ const GLubyte *src = ((const GLubyte *) rb->Data) +
+ 3 * (y * rb->RowStride + x);
GLubyte *dst = (GLubyte *) values;
GLuint i;
ASSERT(rb->Format == MESA_FORMAT_RGB888);
@@ -479,7 +582,7 @@ get_values_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint cou
ASSERT(rb->DataType == GL_UNSIGNED_BYTE);
for (i = 0; i < count; i++) {
const GLubyte *src
- = (GLubyte *) rb->Data + 3 * (y[i] * rb->Width + x[i]);
+ = (GLubyte *) rb->Data + 3 * (y[i] * rb->RowStride + x[i]);
dst[i * 4 + 0] = src[0];
dst[i * 4 + 1] = src[1];
dst[i * 4 + 2] = src[2];
@@ -494,7 +597,7 @@ put_row_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count,
{
/* note: incoming values are RGB+A! */
const GLubyte *src = (const GLubyte *) values;
- GLubyte *dst = (GLubyte *) rb->Data + 3 * (y * rb->Width + x);
+ GLubyte *dst = (GLubyte *) rb->Data + 3 * (y * rb->RowStride + x);
GLuint i;
ASSERT(rb->Format == MESA_FORMAT_RGB888);
ASSERT(rb->DataType == GL_UNSIGNED_BYTE);
@@ -514,7 +617,7 @@ put_row_rgb_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint co
{
/* note: incoming values are RGB+A! */
const GLubyte *src = (const GLubyte *) values;
- GLubyte *dst = (GLubyte *) rb->Data + 3 * (y * rb->Width + x);
+ GLubyte *dst = (GLubyte *) rb->Data + 3 * (y * rb->RowStride + x);
GLuint i;
ASSERT(rb->Format == MESA_FORMAT_RGB888);
ASSERT(rb->DataType == GL_UNSIGNED_BYTE);
@@ -536,7 +639,7 @@ put_mono_row_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint c
const GLubyte val0 = ((const GLubyte *) value)[0];
const GLubyte val1 = ((const GLubyte *) value)[1];
const GLubyte val2 = ((const GLubyte *) value)[2];
- GLubyte *dst = (GLubyte *) rb->Data + 3 * (y * rb->Width + x);
+ GLubyte *dst = (GLubyte *) rb->Data + 3 * (y * rb->RowStride + x);
ASSERT(rb->Format == MESA_FORMAT_RGB888);
ASSERT(rb->DataType == GL_UNSIGNED_BYTE);
if (!mask && val0 == val1 && val1 == val2) {
@@ -568,7 +671,7 @@ put_values_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint cou
ASSERT(rb->DataType == GL_UNSIGNED_BYTE);
for (i = 0; i < count; i++) {
if (!mask || mask[i]) {
- GLubyte *dst = (GLubyte *) rb->Data + 3 * (y[i] * rb->Width + x[i]);
+ GLubyte *dst = (GLubyte *) rb->Data + 3 * (y[i] * rb->RowStride + x[i]);
dst[0] = src[i * 4 + 0];
dst[1] = src[i * 4 + 1];
dst[2] = src[i * 4 + 2];
@@ -591,7 +694,8 @@ put_mono_values_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb,
ASSERT(rb->DataType == GL_UNSIGNED_BYTE);
for (i = 0; i < count; i++) {
if (!mask || mask[i]) {
- GLubyte *dst = (GLubyte *) rb->Data + 3 * (y[i] * rb->Width + x[i]);
+ GLubyte *dst = ((GLubyte *) rb->Data) +
+ 3 * (y[i] * rb->RowStride + x[i]);
dst[0] = val0;
dst[1] = val1;
dst[2] = val2;
@@ -605,29 +709,6 @@ put_mono_values_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb,
* Typically color buffers.
*/
-static void *
-get_pointer_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb,
- GLint x, GLint y)
-{
- if (!rb->Data)
- return NULL;
- ASSERT(rb->DataType == GL_UNSIGNED_BYTE);
- ASSERT(rb->Format == MESA_FORMAT_RGBA8888);
- return (GLubyte *) rb->Data + 4 * (y * rb->Width + x);
-}
-
-
-static void
-get_row_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count,
- GLint x, GLint y, void *values)
-{
- const GLubyte *src = (const GLubyte *) rb->Data + 4 * (y * rb->Width + x);
- ASSERT(rb->DataType == GL_UNSIGNED_BYTE);
- ASSERT(rb->Format == MESA_FORMAT_RGBA8888);
- memcpy(values, src, 4 * count * sizeof(GLubyte));
-}
-
-
static void
get_values_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count,
const GLint x[], const GLint y[], void *values)
@@ -638,7 +719,7 @@ get_values_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint cou
ASSERT(rb->DataType == GL_UNSIGNED_BYTE);
ASSERT(rb->Format == MESA_FORMAT_RGBA8888);
for (i = 0; i < count; i++) {
- const GLuint *src = (GLuint *) rb->Data + (y[i] * rb->Width + x[i]);
+ const GLuint *src = (GLuint *) rb->Data + (y[i] * rb->RowStride + x[i]);
dst[i] = *src;
}
}
@@ -650,7 +731,7 @@ put_row_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count,
{
/* treat 4*GLubyte as 1*GLuint */
const GLuint *src = (const GLuint *) values;
- GLuint *dst = (GLuint *) rb->Data + (y * rb->Width + x);
+ GLuint *dst = (GLuint *) rb->Data + (y * rb->RowStride + x);
ASSERT(rb->DataType == GL_UNSIGNED_BYTE);
ASSERT(rb->Format == MESA_FORMAT_RGBA8888);
if (mask) {
@@ -673,7 +754,7 @@ put_row_rgb_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint co
{
/* Store RGB values in RGBA buffer */
const GLubyte *src = (const GLubyte *) values;
- GLubyte *dst = (GLubyte *) rb->Data + 4 * (y * rb->Width + x);
+ GLubyte *dst = (GLubyte *) rb->Data + 4 * (y * rb->RowStride + x);
GLuint i;
ASSERT(rb->DataType == GL_UNSIGNED_BYTE);
ASSERT(rb->Format == MESA_FORMAT_RGBA8888);
@@ -694,7 +775,7 @@ put_mono_row_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint c
{
/* treat 4*GLubyte as 1*GLuint */
const GLuint val = *((const GLuint *) value);
- GLuint *dst = (GLuint *) rb->Data + (y * rb->Width + x);
+ GLuint *dst = (GLuint *) rb->Data + (y * rb->RowStride + x);
ASSERT(rb->DataType == GL_UNSIGNED_BYTE);
ASSERT(rb->Format == MESA_FORMAT_RGBA8888);
if (!mask && val == 0) {
@@ -733,7 +814,7 @@ put_values_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint cou
ASSERT(rb->Format == MESA_FORMAT_RGBA8888);
for (i = 0; i < count; i++) {
if (!mask || mask[i]) {
- GLuint *dst = (GLuint *) rb->Data + (y[i] * rb->Width + x[i]);
+ GLuint *dst = (GLuint *) rb->Data + (y[i] * rb->RowStride + x[i]);
*dst = src[i];
}
}
@@ -752,7 +833,7 @@ put_mono_values_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb,
ASSERT(rb->Format == MESA_FORMAT_RGBA8888);
for (i = 0; i < count; i++) {
if (!mask || mask[i]) {
- GLuint *dst = (GLuint *) rb->Data + (y[i] * rb->Width + x[i]);
+ GLuint *dst = (GLuint *) rb->Data + (y[i] * rb->RowStride + x[i]);
*dst = val;
}
}
@@ -764,27 +845,6 @@ put_mono_values_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb,
* Typically accum buffer.
*/
-static void *
-get_pointer_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb,
- GLint x, GLint y)
-{
- if (!rb->Data)
- return NULL;
- ASSERT(rb->DataType == GL_UNSIGNED_SHORT || rb->DataType == GL_SHORT);
- return (GLushort *) rb->Data + 4 * (y * rb->Width + x);
-}
-
-
-static void
-get_row_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count,
- GLint x, GLint y, void *values)
-{
- const GLshort *src = (const GLshort *) rb->Data + 4 * (y * rb->Width + x);
- ASSERT(rb->DataType == GL_UNSIGNED_SHORT || rb->DataType == GL_SHORT);
- memcpy(values, src, 4 * count * sizeof(GLshort));
-}
-
-
static void
get_values_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count,
const GLint x[], const GLint y[], void *values)
@@ -794,7 +854,7 @@ get_values_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint co
ASSERT(rb->DataType == GL_UNSIGNED_SHORT || rb->DataType == GL_SHORT);
for (i = 0; i < count; i++) {
const GLushort *src
- = (GLushort *) rb->Data + 4 * (y[i] * rb->Width + x[i]);
+ = (GLushort *) rb->Data + 4 * (y[i] * rb->RowStride + x[i]);
dst[i] = *src;
}
}
@@ -805,7 +865,7 @@ put_row_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count
GLint x, GLint y, const void *values, const GLubyte *mask)
{
const GLushort *src = (const GLushort *) values;
- GLushort *dst = (GLushort *) rb->Data + 4 * (y * rb->Width + x);
+ GLushort *dst = (GLushort *) rb->Data + 4 * (y * rb->RowStride + x);
ASSERT(rb->DataType == GL_UNSIGNED_SHORT || rb->DataType == GL_SHORT);
if (mask) {
GLuint i;
@@ -830,7 +890,7 @@ put_row_rgb_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint c
{
/* Put RGB values in RGBA buffer */
const GLushort *src = (const GLushort *) values;
- GLushort *dst = (GLushort *) rb->Data + 4 * (y * rb->Width + x);
+ GLushort *dst = (GLushort *) rb->Data + 4 * (y * rb->RowStride + x);
ASSERT(rb->DataType == GL_UNSIGNED_SHORT || rb->DataType == GL_SHORT);
if (mask) {
GLuint i;
@@ -857,7 +917,7 @@ put_mono_row_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint
const GLushort val1 = ((const GLushort *) value)[1];
const GLushort val2 = ((const GLushort *) value)[2];
const GLushort val3 = ((const GLushort *) value)[3];
- GLushort *dst = (GLushort *) rb->Data + 4 * (y * rb->Width + x);
+ GLushort *dst = (GLushort *) rb->Data + 4 * (y * rb->RowStride + x);
ASSERT(rb->DataType == GL_UNSIGNED_SHORT || rb->DataType == GL_SHORT);
if (!mask && val0 == 0 && val1 == 0 && val2 == 0 && val3 == 0) {
/* common case for clearing accum buffer */
@@ -887,7 +947,8 @@ put_values_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint co
ASSERT(rb->DataType == GL_UNSIGNED_SHORT || rb->DataType == GL_SHORT);
for (i = 0; i < count; i++) {
if (!mask || mask[i]) {
- GLushort *dst = (GLushort *) rb->Data + 4 * (y[i] * rb->Width + x[i]);
+ GLushort *dst =
+ ((GLushort *) rb->Data) + 4 * (y[i] * rb->RowStride + x[i]);
dst[0] = src[i * 4 + 0];
dst[1] = src[i * 4 + 1];
dst[2] = src[i * 4 + 2];
@@ -910,7 +971,8 @@ put_mono_values_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb,
ASSERT(rb->DataType == GL_UNSIGNED_SHORT || rb->DataType == GL_SHORT);
for (i = 0; i < count; i++) {
if (!mask || mask[i]) {
- GLushort *dst = (GLushort *) rb->Data + 4 * (y[i] * rb->Width + x[i]);
+ GLushort *dst = ((GLushort *) rb->Data) +
+ 4 * (y[i] * rb->RowStride + x[i]);
dst[0] = val0;
dst[1] = val1;
dst[2] = val2;
@@ -919,39 +981,410 @@ put_mono_values_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb,
}
}
+/**********************************************************************
+ * Functions for MESA_FORMAT_R8.
+ */
+static void
+get_row_r8(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count,
+ GLint x, GLint y, void *values)
+{
+ const GLubyte *src = rb->GetPointer(ctx, rb, x, y);
+ GLuint *dst = values;
+ GLuint i;
+
+ for (i = 0; i < count; i++) {
+ dst[i] = 0xff000000 | src[i];
+ }
+}
+
+static void
+get_values_r8(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count,
+ const GLint x[], const GLint y[], void *values)
+{
+ GLuint *dst = (GLuint *) values;
+ GLuint i;
+
+ for (i = 0; i < count; i++) {
+ const GLubyte *src = rb->GetPointer(ctx, rb, x[i], y[i]);
+ dst[i] = 0xff000000 | *src;
+ }
+}
+
+/**********************************************************************
+ * Functions for MESA_FORMAT_RG88.
+ */
+static void
+get_row_rg88(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count,
+ GLint x, GLint y, void *values)
+{
+ const GLushort *src = rb->GetPointer(ctx, rb, x, y);
+ GLuint *dst = values;
+ GLuint i;
+
+ for (i = 0; i < count; i++) {
+ dst[i] = 0xff000000 | src[i];
+ }
+}
+
+static void
+get_values_rg88(struct gl_context *ctx, struct gl_renderbuffer *rb,
+ GLuint count, const GLint x[], const GLint y[], void *values)
+{
+ GLuint *dst = (GLuint *) values;
+ GLuint i;
+
+ for (i = 0; i < count; i++) {
+ const GLshort *src = rb->GetPointer(ctx, rb, x[i], y[i]);
+ dst[i] = 0xff000000 | *src;
+ }
+}
+
+/**********************************************************************
+ * Functions for MESA_FORMAT_R16.
+ */
+static void
+get_row_r16(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count,
+ GLint x, GLint y, void *values)
+{
+ const GLushort *src = rb->GetPointer(ctx, rb, x, y);
+ GLushort *dst = values;
+ GLuint i;
+
+ for (i = 0; i < count; i++) {
+ dst[i * 4 + RCOMP] = src[i];
+ dst[i * 4 + GCOMP] = 0;
+ dst[i * 4 + BCOMP] = 0;
+ dst[i * 4 + ACOMP] = 0xffff;
+ }
+}
+
+static void
+get_values_r16(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count,
+ const GLint x[], const GLint y[], void *values)
+{
+ GLushort *dst = values;
+ GLuint i;
+
+ for (i = 0; i < count; i++) {
+ const GLushort *src = rb->GetPointer(ctx, rb, x[i], y[i]);
+ dst[i * 4 + RCOMP] = *src;
+ dst[i * 4 + GCOMP] = 0;
+ dst[i * 4 + BCOMP] = 0;
+ dst[i * 4 + ACOMP] = 0xffff;
+ }
+}
+
+/**********************************************************************
+ * Functions for MESA_FORMAT_RG1616.
+ */
+static void
+get_row_rg1616(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count,
+ GLint x, GLint y, void *values)
+{
+ const GLushort *src = rb->GetPointer(ctx, rb, x, y);
+ GLushort *dst = values;
+ GLuint i;
+
+ for (i = 0; i < count; i++) {
+ dst[i * 4 + RCOMP] = src[i * 2];
+ dst[i * 4 + GCOMP] = src[i * 2 + 1];
+ dst[i * 4 + BCOMP] = 0;
+ dst[i * 4 + ACOMP] = 0xffff;
+ }
+}
+
+static void
+get_values_rg1616(struct gl_context *ctx, struct gl_renderbuffer *rb,
+ GLuint count, const GLint x[], const GLint y[], void *values)
+{
+ GLushort *dst = values;
+ GLuint i;
+
+ for (i = 0; i < count; i++) {
+ const GLshort *src = rb->GetPointer(ctx, rb, x[i], y[i]);
+ dst[i * 4 + RCOMP] = src[0];
+ dst[i * 4 + GCOMP] = src[1];
+ dst[i * 4 + BCOMP] = 0;
+ dst[i * 4 + ACOMP] = 0xffff;
+ }
+}
+
+/**********************************************************************
+ * Functions for MESA_FORMAT_INTENSITY_FLOAT32.
+ */
+static void
+get_row_i_float32(struct gl_context *ctx, struct gl_renderbuffer *rb,
+ GLuint count, GLint x, GLint y, void *values)
+{
+ const GLfloat *src = rb->GetPointer(ctx, rb, x, y);
+ GLfloat *dst = values;
+ GLuint i;
+
+ for (i = 0; i < count; i++) {
+ dst[i * 4 + RCOMP] =
+ dst[i * 4 + GCOMP] =
+ dst[i * 4 + BCOMP] =
+ dst[i * 4 + ACOMP] = src[i];
+ }
+}
+
+static void
+get_values_i_float32(struct gl_context *ctx, struct gl_renderbuffer *rb,
+ GLuint count, const GLint x[], const GLint y[],
+ void *values)
+{
+ GLfloat *dst = values;
+ GLuint i;
+
+ for (i = 0; i < count; i++) {
+ const GLfloat *src = rb->GetPointer(ctx, rb, x[i], y[i]);
+ dst[i * 4 + RCOMP] =
+ dst[i * 4 + GCOMP] =
+ dst[i * 4 + BCOMP] =
+ dst[i * 4 + ACOMP] = src[0];
+ }
+}
+
+/**********************************************************************
+ * Functions for MESA_FORMAT_LUMINANCE_FLOAT32.
+ */
+static void
+get_row_l_float32(struct gl_context *ctx, struct gl_renderbuffer *rb,
+ GLuint count, GLint x, GLint y, void *values)
+{
+ const GLfloat *src = rb->GetPointer(ctx, rb, x, y);
+ GLfloat *dst = values;
+ GLuint i;
+
+ for (i = 0; i < count; i++) {
+ dst[i * 4 + RCOMP] =
+ dst[i * 4 + GCOMP] =
+ dst[i * 4 + BCOMP] = src[i];
+ dst[i * 4 + ACOMP] = 1.0;
+ }
+}
+
+static void
+get_values_l_float32(struct gl_context *ctx, struct gl_renderbuffer *rb,
+ GLuint count, const GLint x[], const GLint y[],
+ void *values)
+{
+ GLfloat *dst = values;
+ GLuint i;
+
+ for (i = 0; i < count; i++) {
+ const GLfloat *src = rb->GetPointer(ctx, rb, x[i], y[i]);
+ dst[i * 4 + RCOMP] =
+ dst[i * 4 + GCOMP] =
+ dst[i * 4 + BCOMP] = src[0];
+ dst[i * 4 + ACOMP] = 1.0;
+ }
+}
+
+/**********************************************************************
+ * Functions for MESA_FORMAT_ALPHA_FLOAT32.
+ */
+static void
+get_row_a_float32(struct gl_context *ctx, struct gl_renderbuffer *rb,
+ GLuint count, GLint x, GLint y, void *values)
+{
+ const GLfloat *src = rb->GetPointer(ctx, rb, x, y);
+ GLfloat *dst = values;
+ GLuint i;
+
+ for (i = 0; i < count; i++) {
+ dst[i * 4 + RCOMP] = 0.0;
+ dst[i * 4 + GCOMP] = 0.0;
+ dst[i * 4 + BCOMP] = 0.0;
+ dst[i * 4 + ACOMP] = src[i];
+ }
+}
+
+static void
+get_values_a_float32(struct gl_context *ctx, struct gl_renderbuffer *rb,
+ GLuint count, const GLint x[], const GLint y[],
+ void *values)
+{
+ GLfloat *dst = values;
+ GLuint i;
+
+ for (i = 0; i < count; i++) {
+ const GLfloat *src = rb->GetPointer(ctx, rb, x[i], y[i]);
+ dst[i * 4 + RCOMP] = 0.0;
+ dst[i * 4 + GCOMP] = 0.0;
+ dst[i * 4 + BCOMP] = 0.0;
+ dst[i * 4 + ACOMP] = src[0];
+ }
+}
+
+static void
+put_row_a_float32(struct gl_context *ctx, struct gl_renderbuffer *rb,
+ GLuint count, GLint x, GLint y,
+ const void *values, const GLubyte *mask)
+{
+ float *dst = rb->GetPointer(ctx, rb, x, y);
+ const float *src = values;
+ unsigned int i;
+
+ if (mask) {
+ for (i = 0; i < count; i++) {
+ if (mask[i]) {
+ dst[i] = src[i * 4 + ACOMP];
+ }
+ }
+ }
+ else {
+ for (i = 0; i < count; i++) {
+ dst[i] = src[i * 4 + ACOMP];
+ }
+ }
+}
+
+static void
+put_mono_row_a_float32(struct gl_context *ctx, struct gl_renderbuffer *rb,
+ GLuint count, GLint x, GLint y,
+ const void *value, const GLubyte *mask)
+{
+ float *dst = rb->GetPointer(ctx, rb, x, y);
+ const float *src = value;
+ unsigned int i;
+
+ if (mask) {
+ for (i = 0; i < count; i++) {
+ if (mask[i]) {
+ dst[i] = src[ACOMP];
+ }
+ }
+ }
+ else {
+ for (i = 0; i < count; i++) {
+ dst[i] = src[ACOMP];
+ }
+ }
+}
+
+static void
+put_values_a_float32(struct gl_context *ctx, struct gl_renderbuffer *rb,
+ GLuint count, const GLint x[], const GLint y[],
+ const void *values, const GLubyte *mask)
+{
+ const float *src = values;
+ unsigned int i;
+
+ for (i = 0; i < count; i++) {
+ if (!mask || mask[i]) {
+ float *dst = rb->GetPointer(ctx, rb, x[i], y[i]);
+
+ *dst = src[i * 4 + ACOMP];
+ }
+ }
+}
+
+static void
+put_mono_values_a_float32(struct gl_context *ctx,
+ struct gl_renderbuffer *rb,
+ GLuint count, const GLint x[], const GLint y[],
+ const void *value, const GLubyte *mask)
+{
+ const float *src = value;
+ unsigned int i;
+
+ for (i = 0; i < count; i++) {
+ if (!mask || mask[i]) {
+ float *dst = rb->GetPointer(ctx, rb, x[i], y[i]);
+ *dst = src[ACOMP];
+ }
+ }
+}
+
+/**********************************************************************
+ * Functions for MESA_FORMAT_R_FLOAT32.
+ */
+static void
+get_row_r_float32(struct gl_context *ctx, struct gl_renderbuffer *rb,
+ GLuint count, GLint x, GLint y, void *values)
+{
+ const GLfloat *src = rb->GetPointer(ctx, rb, x, y);
+ GLfloat *dst = values;
+ GLuint i;
+
+ for (i = 0; i < count; i++) {
+ dst[i * 4 + RCOMP] = src[i];
+ dst[i * 4 + GCOMP] = 0.0;
+ dst[i * 4 + BCOMP] = 0.0;
+ dst[i * 4 + ACOMP] = 1.0;
+ }
+}
+static void
+get_values_r_float32(struct gl_context *ctx, struct gl_renderbuffer *rb,
+ GLuint count, const GLint x[], const GLint y[],
+ void *values)
+{
+ GLfloat *dst = values;
+ GLuint i;
+
+ for (i = 0; i < count; i++) {
+ const GLfloat *src = rb->GetPointer(ctx, rb, x[i], y[i]);
+ dst[i * 4 + RCOMP] = src[0];
+ dst[i * 4 + GCOMP] = 0.0;
+ dst[i * 4 + BCOMP] = 0.0;
+ dst[i * 4 + ACOMP] = 1.0;
+ }
+}
+
+/**********************************************************************
+ * Functions for MESA_FORMAT_RG_FLOAT32.
+ */
+static void
+get_row_rg_float32(struct gl_context *ctx, struct gl_renderbuffer *rb,
+ GLuint count, GLint x, GLint y, void *values)
+{
+ const GLfloat *src = rb->GetPointer(ctx, rb, x, y);
+ GLfloat *dst = values;
+ GLuint i;
+
+ for (i = 0; i < count; i++) {
+ dst[i * 4 + RCOMP] = src[i * 2 + 0];
+ dst[i * 4 + GCOMP] = src[i * 2 + 1];
+ dst[i * 4 + BCOMP] = 0.0;
+ dst[i * 4 + ACOMP] = 1.0;
+ }
+}
+
+static void
+get_values_rg_float32(struct gl_context *ctx, struct gl_renderbuffer *rb,
+ GLuint count, const GLint x[], const GLint y[],
+ void *values)
+{
+ GLfloat *dst = values;
+ GLuint i;
+
+ for (i = 0; i < count; i++) {
+ const GLfloat *src = rb->GetPointer(ctx, rb, x[i], y[i]);
+ dst[i * 4 + RCOMP] = src[0];
+ dst[i * 4 + GCOMP] = src[1];
+ dst[i * 4 + BCOMP] = 0.0;
+ dst[i * 4 + ACOMP] = 1.0;
+ }
+}
/**
- * This is a software fallback for the gl_renderbuffer->AllocStorage
- * function.
- * Device drivers will typically override this function for the buffers
- * which it manages (typically color buffers, Z and stencil).
- * Other buffers (like software accumulation and aux buffers) which the driver
- * doesn't manage can be handled with this function.
- *
- * This one multi-purpose function can allocate stencil, depth, accum, color
- * or color-index buffers!
+ * This is the default software fallback for gl_renderbuffer's span
+ * access functions.
*
- * This function also plugs in the appropriate GetPointer, Get/PutRow and
- * Get/PutValues functions.
+ * The assumptions are that rb->Data will be a pointer to (0,0), that pixels
+ * are packed in the type of rb->Format, and that subsequent rows appear
+ * rb->RowStride pixels later.
*/
-GLboolean
-_mesa_soft_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer *rb,
- GLenum internalFormat,
- GLuint width, GLuint height)
+void
+_mesa_set_renderbuffer_accessors(struct gl_renderbuffer *rb)
{
- GLuint pixelSize;
+ rb->GetPointer = get_pointer_generic;
+ rb->GetRow = get_row_generic;
- switch (internalFormat) {
- case GL_RGB:
- case GL_R3_G3_B2:
- case GL_RGB4:
- case GL_RGB5:
- case GL_RGB8:
- case GL_RGB10:
- case GL_RGB12:
- case GL_RGB16:
- rb->Format = MESA_FORMAT_RGB888;
+ switch (rb->Format) {
+ case MESA_FORMAT_RGB888:
rb->DataType = GL_UNSIGNED_BYTE;
rb->GetPointer = get_pointer_ubyte3;
rb->GetRow = get_row_ubyte3;
@@ -961,135 +1394,271 @@ _mesa_soft_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer *
rb->PutMonoRow = put_mono_row_ubyte3;
rb->PutValues = put_values_ubyte3;
rb->PutMonoValues = put_mono_values_ubyte3;
- pixelSize = 3 * sizeof(GLubyte);
break;
- case GL_RGBA:
- case GL_RGBA2:
- case GL_RGBA4:
- case GL_RGB5_A1:
- case GL_RGBA8:
-#if 1
- case GL_RGB10_A2:
- case GL_RGBA12:
-#endif
- rb->Format = MESA_FORMAT_RGBA8888;
+
+ case MESA_FORMAT_RGBA8888:
rb->DataType = GL_UNSIGNED_BYTE;
- rb->GetPointer = get_pointer_ubyte4;
- rb->GetRow = get_row_ubyte4;
rb->GetValues = get_values_ubyte4;
rb->PutRow = put_row_ubyte4;
rb->PutRowRGB = put_row_rgb_ubyte4;
rb->PutMonoRow = put_mono_row_ubyte4;
rb->PutValues = put_values_ubyte4;
rb->PutMonoValues = put_mono_values_ubyte4;
- pixelSize = 4 * sizeof(GLubyte);
break;
- case GL_RGBA16:
- case GL_RGBA16_SNORM:
- /* for accum buffer */
- rb->Format = MESA_FORMAT_SIGNED_RGBA_16;
+
+ case MESA_FORMAT_R8:
+ rb->DataType = GL_UNSIGNED_BYTE;
+ rb->GetValues = get_values_r8;
+ rb->GetRow = get_row_r8;
+ rb->PutRow = put_row_generic;
+ rb->PutRowRGB = put_row_generic;
+ rb->PutMonoRow = put_mono_row_generic;
+ rb->PutValues = put_values_generic;
+ rb->PutMonoValues = put_mono_values_generic;
+ break;
+
+ case MESA_FORMAT_RG88:
+ rb->DataType = GL_UNSIGNED_BYTE;
+ rb->GetValues = get_values_rg88;
+ rb->GetRow = get_row_rg88;
+ rb->PutRow = put_row_generic;
+ rb->PutRowRGB = put_row_generic;
+ rb->PutMonoRow = put_mono_row_generic;
+ rb->PutValues = put_values_generic;
+ rb->PutMonoValues = put_mono_values_generic;
+ break;
+
+ case MESA_FORMAT_R16:
+ rb->DataType = GL_UNSIGNED_SHORT;
+ rb->GetValues = get_values_r16;
+ rb->GetRow = get_row_r16;
+ rb->PutRow = put_row_generic;
+ rb->PutRowRGB = put_row_generic;
+ rb->PutMonoRow = put_mono_row_generic;
+ rb->PutValues = put_values_generic;
+ rb->PutMonoValues = put_mono_values_generic;
+ break;
+
+ case MESA_FORMAT_RG1616:
+ rb->DataType = GL_UNSIGNED_SHORT;
+ rb->GetValues = get_values_rg1616;
+ rb->GetRow = get_row_rg1616;
+ rb->PutRow = put_row_generic;
+ rb->PutRowRGB = put_row_generic;
+ rb->PutMonoRow = put_mono_row_generic;
+ rb->PutValues = put_values_generic;
+ rb->PutMonoValues = put_mono_values_generic;
+ break;
+
+ case MESA_FORMAT_SIGNED_RGBA_16:
rb->DataType = GL_SHORT;
- rb->GetPointer = get_pointer_ushort4;
- rb->GetRow = get_row_ushort4;
rb->GetValues = get_values_ushort4;
rb->PutRow = put_row_ushort4;
rb->PutRowRGB = put_row_rgb_ushort4;
rb->PutMonoRow = put_mono_row_ushort4;
rb->PutValues = put_values_ushort4;
rb->PutMonoValues = put_mono_values_ushort4;
- pixelSize = 4 * sizeof(GLushort);
break;
+
#if 0
- case GL_ALPHA8:
- rb->Format = MESA_FORMAT_A8;
+ case MESA_FORMAT_A8:
rb->DataType = GL_UNSIGNED_BYTE;
- rb->GetPointer = get_pointer_alpha8;
- rb->GetRow = get_row_alpha8;
rb->GetValues = get_values_alpha8;
rb->PutRow = put_row_alpha8;
rb->PutRowRGB = NULL;
rb->PutMonoRow = put_mono_row_alpha8;
rb->PutValues = put_values_alpha8;
rb->PutMonoValues = put_mono_values_alpha8;
- pixelSize = sizeof(GLubyte);
break;
#endif
- case GL_STENCIL_INDEX:
- case GL_STENCIL_INDEX1_EXT:
- case GL_STENCIL_INDEX4_EXT:
- case GL_STENCIL_INDEX8_EXT:
- case GL_STENCIL_INDEX16_EXT:
- rb->Format = MESA_FORMAT_S8;
+
+ case MESA_FORMAT_S8:
rb->DataType = GL_UNSIGNED_BYTE;
- rb->GetPointer = get_pointer_ubyte;
- rb->GetRow = get_row_ubyte;
rb->GetValues = get_values_ubyte;
rb->PutRow = put_row_ubyte;
rb->PutRowRGB = NULL;
rb->PutMonoRow = put_mono_row_ubyte;
rb->PutValues = put_values_ubyte;
rb->PutMonoValues = put_mono_values_ubyte;
- pixelSize = sizeof(GLubyte);
break;
- case GL_DEPTH_COMPONENT:
- case GL_DEPTH_COMPONENT16:
- rb->Format = MESA_FORMAT_Z16;
+
+ case MESA_FORMAT_Z16:
rb->DataType = GL_UNSIGNED_SHORT;
- rb->GetPointer = get_pointer_ushort;
- rb->GetRow = get_row_ushort;
rb->GetValues = get_values_ushort;
rb->PutRow = put_row_ushort;
rb->PutRowRGB = NULL;
rb->PutMonoRow = put_mono_row_ushort;
rb->PutValues = put_values_ushort;
rb->PutMonoValues = put_mono_values_ushort;
- pixelSize = sizeof(GLushort);
break;
- case GL_DEPTH_COMPONENT24:
+
+ case MESA_FORMAT_Z32:
+ case MESA_FORMAT_X8_Z24:
+ case MESA_FORMAT_Z24_X8:
rb->DataType = GL_UNSIGNED_INT;
- rb->GetPointer = get_pointer_uint;
- rb->GetRow = get_row_uint;
rb->GetValues = get_values_uint;
rb->PutRow = put_row_uint;
rb->PutRowRGB = NULL;
rb->PutMonoRow = put_mono_row_uint;
rb->PutValues = put_values_uint;
rb->PutMonoValues = put_mono_values_uint;
- rb->Format = MESA_FORMAT_X8_Z24;
- pixelSize = sizeof(GLuint);
break;
- case GL_DEPTH_COMPONENT32:
- rb->DataType = GL_UNSIGNED_INT;
- rb->GetPointer = get_pointer_uint;
- rb->GetRow = get_row_uint;
+
+ case MESA_FORMAT_Z24_S8:
+ case MESA_FORMAT_S8_Z24:
+ rb->DataType = GL_UNSIGNED_INT_24_8_EXT;
rb->GetValues = get_values_uint;
rb->PutRow = put_row_uint;
rb->PutRowRGB = NULL;
rb->PutMonoRow = put_mono_row_uint;
rb->PutValues = put_values_uint;
rb->PutMonoValues = put_mono_values_uint;
+ break;
+
+ case MESA_FORMAT_RGBA_FLOAT32:
+ rb->GetRow = get_row_generic;
+ rb->GetValues = get_values_generic;
+ rb->PutRow = put_row_generic;
+ rb->PutRowRGB = NULL;
+ rb->PutMonoRow = put_mono_row_generic;
+ rb->PutValues = put_values_generic;
+ rb->PutMonoValues = put_mono_values_generic;
+ break;
+
+ case MESA_FORMAT_INTENSITY_FLOAT32:
+ rb->GetRow = get_row_i_float32;
+ rb->GetValues = get_values_i_float32;
+ rb->PutRow = put_row_generic;
+ rb->PutRowRGB = NULL;
+ rb->PutMonoRow = put_mono_row_generic;
+ rb->PutValues = put_values_generic;
+ rb->PutMonoValues = put_mono_values_generic;
+ break;
+
+ case MESA_FORMAT_LUMINANCE_FLOAT32:
+ rb->GetRow = get_row_l_float32;
+ rb->GetValues = get_values_l_float32;
+ rb->PutRow = put_row_generic;
+ rb->PutRowRGB = NULL;
+ rb->PutMonoRow = put_mono_row_generic;
+ rb->PutValues = put_values_generic;
+ rb->PutMonoValues = put_mono_values_generic;
+ break;
+
+ case MESA_FORMAT_ALPHA_FLOAT32:
+ rb->GetRow = get_row_a_float32;
+ rb->GetValues = get_values_a_float32;
+ rb->PutRow = put_row_a_float32;
+ rb->PutRowRGB = NULL;
+ rb->PutMonoRow = put_mono_row_a_float32;
+ rb->PutValues = put_values_a_float32;
+ rb->PutMonoValues = put_mono_values_a_float32;
+ break;
+
+ case MESA_FORMAT_RG_FLOAT32:
+ rb->GetRow = get_row_rg_float32;
+ rb->GetValues = get_values_rg_float32;
+ rb->PutRow = put_row_generic;
+ rb->PutRowRGB = NULL;
+ rb->PutMonoRow = put_mono_row_generic;
+ rb->PutValues = put_values_generic;
+ rb->PutMonoValues = put_mono_values_generic;
+ break;
+
+ case MESA_FORMAT_R_FLOAT32:
+ rb->GetRow = get_row_r_float32;
+ rb->GetValues = get_values_r_float32;
+ rb->PutRow = put_row_generic;
+ rb->PutRowRGB = NULL;
+ rb->PutMonoRow = put_mono_row_generic;
+ rb->PutValues = put_values_generic;
+ rb->PutMonoValues = put_mono_values_generic;
+ break;
+
+ default:
+ break;
+ }
+}
+
+/**
+ * This is a software fallback for the gl_renderbuffer->AllocStorage
+ * function.
+ * Device drivers will typically override this function for the buffers
+ * which it manages (typically color buffers, Z and stencil).
+ * Other buffers (like software accumulation and aux buffers) which the driver
+ * doesn't manage can be handled with this function.
+ *
+ * This one multi-purpose function can allocate stencil, depth, accum, color
+ * or color-index buffers!
+ *
+ * This function also plugs in the appropriate GetPointer, Get/PutRow and
+ * Get/PutValues functions.
+ */
+GLboolean
+_mesa_soft_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer *rb,
+ GLenum internalFormat,
+ GLuint width, GLuint height)
+{
+ switch (internalFormat) {
+ case GL_RGB:
+ case GL_R3_G3_B2:
+ case GL_RGB4:
+ case GL_RGB5:
+ case GL_RGB8:
+ case GL_RGB10:
+ case GL_RGB12:
+ case GL_RGB16:
+ rb->Format = MESA_FORMAT_RGB888;
+ break;
+ case GL_RGBA:
+ case GL_RGBA2:
+ case GL_RGBA4:
+ case GL_RGB5_A1:
+ case GL_RGBA8:
+#if 1
+ case GL_RGB10_A2:
+ case GL_RGBA12:
+#endif
+ rb->Format = MESA_FORMAT_RGBA8888;
+ break;
+ case GL_RGBA16:
+ case GL_RGBA16_SNORM:
+ /* for accum buffer */
+ rb->Format = MESA_FORMAT_SIGNED_RGBA_16;
+ break;
+#if 0
+ case GL_ALPHA8:
+ rb->Format = MESA_FORMAT_A8;
+ break;
+#endif
+ case GL_STENCIL_INDEX:
+ case GL_STENCIL_INDEX1_EXT:
+ case GL_STENCIL_INDEX4_EXT:
+ case GL_STENCIL_INDEX8_EXT:
+ case GL_STENCIL_INDEX16_EXT:
+ rb->Format = MESA_FORMAT_S8;
+ break;
+ case GL_DEPTH_COMPONENT:
+ case GL_DEPTH_COMPONENT16:
+ rb->Format = MESA_FORMAT_Z16;
+ break;
+ case GL_DEPTH_COMPONENT24:
+ rb->Format = MESA_FORMAT_X8_Z24;
+ break;
+ case GL_DEPTH_COMPONENT32:
rb->Format = MESA_FORMAT_Z32;
- pixelSize = sizeof(GLuint);
break;
case GL_DEPTH_STENCIL_EXT:
case GL_DEPTH24_STENCIL8_EXT:
rb->Format = MESA_FORMAT_Z24_S8;
- rb->DataType = GL_UNSIGNED_INT_24_8_EXT;
- rb->GetPointer = get_pointer_uint;
- rb->GetRow = get_row_uint;
- rb->GetValues = get_values_uint;
- rb->PutRow = put_row_uint;
- rb->PutRowRGB = NULL;
- rb->PutMonoRow = put_mono_row_uint;
- rb->PutValues = put_values_uint;
- rb->PutMonoValues = put_mono_values_uint;
- pixelSize = sizeof(GLuint);
break;
default:
/* unsupported format */
return GL_FALSE;
}
+ _mesa_set_renderbuffer_accessors(rb);
+
ASSERT(rb->DataType);
ASSERT(rb->GetPointer);
ASSERT(rb->GetRow);
@@ -1105,16 +1674,19 @@ _mesa_soft_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer *
rb->Data = NULL;
}
+ rb->RowStride = width;
+
if (width > 0 && height > 0) {
/* allocate new buffer storage */
- rb->Data = malloc(width * height * pixelSize);
+ rb->Data = malloc(width * height * _mesa_get_format_bytes(rb->Format));
if (rb->Data == NULL) {
rb->Width = 0;
rb->Height = 0;
+ rb->RowStride = 0;
_mesa_error(ctx, GL_OUT_OF_MEMORY,
"software renderbuffer allocation (%d x %d x %d)",
- width, height, pixelSize);
+ width, height, _mesa_get_format_bytes(rb->Format));
return GL_FALSE;
}
}
@@ -1122,7 +1694,20 @@ _mesa_soft_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer *
rb->Width = width;
rb->Height = height;
rb->_BaseFormat = _mesa_base_fbo_format(ctx, internalFormat);
- ASSERT(rb->_BaseFormat);
+
+ if (rb->Name == 0 &&
+ internalFormat == GL_RGBA16_SNORM &&
+ rb->_BaseFormat == 0) {
+ /* NOTE: This is a special case just for accumulation buffers.
+ * This is a very limited use case- there's no snorm texturing or
+ * rendering going on.
+ */
+ rb->_BaseFormat = GL_RGBA;
+ }
+ else {
+ /* the internalFormat should have been error checked long ago */
+ ASSERT(rb->_BaseFormat);
+ }
return GL_TRUE;
}
@@ -1172,6 +1757,7 @@ alloc_storage_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb,
arb->Width = width;
arb->Height = height;
+ arb->RowStride = width;
return GL_TRUE;
}
@@ -1207,7 +1793,7 @@ get_row_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, GLuint count
GLint x, GLint y, void *values)
{
/* NOTE: 'values' is RGBA format! */
- const GLubyte *src = (const GLubyte *) arb->Data + y * arb->Width + x;
+ const GLubyte *src = (const GLubyte *) arb->Data + y * arb->RowStride + x;
GLubyte *dst = (GLubyte *) values;
GLuint i;
ASSERT(arb != arb->Wrapped);
@@ -1233,7 +1819,7 @@ get_values_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, GLuint co
arb->Wrapped->GetValues(ctx, arb->Wrapped, count, x, y, values);
/* second, fill in alpha values from this buffer! */
for (i = 0; i < count; i++) {
- const GLubyte *src = (GLubyte *) arb->Data + y[i] * arb->Width + x[i];
+ const GLubyte *src = (GLubyte *) arb->Data + y[i] * arb->RowStride + x[i];
dst[i * 4 + 3] = *src;
}
}
@@ -1244,7 +1830,7 @@ put_row_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, GLuint count
GLint x, GLint y, const void *values, const GLubyte *mask)
{
const GLubyte *src = (const GLubyte *) values;
- GLubyte *dst = (GLubyte *) arb->Data + y * arb->Width + x;
+ GLubyte *dst = (GLubyte *) arb->Data + y * arb->RowStride + x;
GLuint i;
ASSERT(arb != arb->Wrapped);
ASSERT(arb->DataType == GL_UNSIGNED_BYTE);
@@ -1264,7 +1850,7 @@ put_row_rgb_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, GLuint c
GLint x, GLint y, const void *values, const GLubyte *mask)
{
const GLubyte *src = (const GLubyte *) values;
- GLubyte *dst = (GLubyte *) arb->Data + y * arb->Width + x;
+ GLubyte *dst = (GLubyte *) arb->Data + y * arb->RowStride + x;
GLuint i;
ASSERT(arb != arb->Wrapped);
ASSERT(arb->DataType == GL_UNSIGNED_BYTE);
@@ -1284,7 +1870,7 @@ put_mono_row_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, GLuint
GLint x, GLint y, const void *value, const GLubyte *mask)
{
const GLubyte val = ((const GLubyte *) value)[3];
- GLubyte *dst = (GLubyte *) arb->Data + y * arb->Width + x;
+ GLubyte *dst = (GLubyte *) arb->Data + y * arb->RowStride + x;
ASSERT(arb != arb->Wrapped);
ASSERT(arb->DataType == GL_UNSIGNED_BYTE);
/* first, pass the call to the wrapped RGB buffer */
@@ -1318,7 +1904,7 @@ put_values_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, GLuint co
/* second, store alpha in our buffer */
for (i = 0; i < count; i++) {
if (!mask || mask[i]) {
- GLubyte *dst = (GLubyte *) arb->Data + y[i] * arb->Width + x[i];
+ GLubyte *dst = (GLubyte *) arb->Data + y[i] * arb->RowStride + x[i];
*dst = src[i * 4 + 3];
}
}
@@ -1339,7 +1925,7 @@ put_mono_values_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb,
/* second, store alpha in our buffer */
for (i = 0; i < count; i++) {
if (!mask || mask[i]) {
- GLubyte *dst = (GLubyte *) arb->Data + y[i] * arb->Width + x[i];
+ GLubyte *dst = (GLubyte *) arb->Data + y[i] * arb->RowStride + x[i];
*dst = val;
}
}
@@ -1353,8 +1939,9 @@ copy_buffer_alpha8(struct gl_renderbuffer* dst, struct gl_renderbuffer* src)
ASSERT(src->Format == MESA_FORMAT_A8);
ASSERT(dst->Width == src->Width);
ASSERT(dst->Height == src->Height);
+ ASSERT(dst->RowStride == src->RowStride);
- memcpy(dst->Data, src->Data, dst->Width * dst->Height * sizeof(GLubyte));
+ memcpy(dst->Data, src->Data, dst->RowStride * dst->Height * sizeof(GLubyte));
}
@@ -1382,7 +1969,6 @@ _mesa_init_renderbuffer(struct gl_renderbuffer *rb, GLuint name)
{
_glthread_INIT_MUTEX(rb->Mutex);
- rb->Magic = RB_MAGIC;
rb->ClassID = 0;
rb->Name = name;
rb->RefCount = 0;
@@ -1957,9 +2543,7 @@ _mesa_reference_renderbuffer(struct gl_renderbuffer **ptr,
GLboolean deleteFlag = GL_FALSE;
struct gl_renderbuffer *oldRb = *ptr;
- assert(oldRb->Magic == RB_MAGIC);
_glthread_LOCK_MUTEX(oldRb->Mutex);
- assert(oldRb->Magic == RB_MAGIC);
ASSERT(oldRb->RefCount > 0);
oldRb->RefCount--;
/*printf("RB DECR %p (%d) to %d\n", (void*) oldRb, oldRb->Name, oldRb->RefCount);*/
@@ -1967,7 +2551,6 @@ _mesa_reference_renderbuffer(struct gl_renderbuffer **ptr,
_glthread_UNLOCK_MUTEX(oldRb->Mutex);
if (deleteFlag) {
- oldRb->Magic = 0; /* now invalid memory! */
oldRb->Delete(oldRb);
}
@@ -1976,7 +2559,6 @@ _mesa_reference_renderbuffer(struct gl_renderbuffer **ptr,
assert(!*ptr);
if (rb) {
- assert(rb->Magic == RB_MAGIC);
/* reference new renderbuffer */
_glthread_LOCK_MUTEX(rb->Mutex);
rb->RefCount++;
diff --git a/src/mesa/main/renderbuffer.h b/src/mesa/main/renderbuffer.h
index 4702a8e952a..39d9b3035e6 100644
--- a/src/mesa/main/renderbuffer.h
+++ b/src/mesa/main/renderbuffer.h
@@ -46,6 +46,8 @@ _mesa_delete_renderbuffer(struct gl_renderbuffer *rb);
extern struct gl_renderbuffer *
_mesa_new_soft_renderbuffer(struct gl_context *ctx, GLuint name);
+extern void
+_mesa_set_renderbuffer_accessors(struct gl_renderbuffer *rb);
extern GLboolean
_mesa_soft_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer *rb,
diff --git a/src/mesa/main/samplerobj.c b/src/mesa/main/samplerobj.c
new file mode 100644
index 00000000000..4a28c917cd7
--- /dev/null
+++ b/src/mesa/main/samplerobj.c
@@ -0,0 +1,1355 @@
+/*
+ * Mesa 3-D graphics library
+ *
+ * Copyright (C) 2011 VMware, Inc. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+
+/**
+ * \file samplerobj.c
+ * \brief Functions for the GL_ARB_sampler_objects extension.
+ * \author Brian Paul
+ */
+
+
+#include "main/glheader.h"
+#include "main/context.h"
+#include "main/dispatch.h"
+#include "main/enums.h"
+#include "main/hash.h"
+#include "main/macros.h"
+#include "main/mfeatures.h"
+#include "main/mtypes.h"
+#include "main/samplerobj.h"
+
+
+static struct gl_sampler_object *
+_mesa_lookup_samplerobj(struct gl_context *ctx, GLuint name)
+{
+ if (name == 0)
+ return NULL;
+ else
+ return (struct gl_sampler_object *)
+ _mesa_HashLookup(ctx->Shared->SamplerObjects, name);
+}
+
+
+/**
+ * Handle reference counting.
+ */
+void
+_mesa_reference_sampler_object(struct gl_context *ctx,
+ struct gl_sampler_object **ptr,
+ struct gl_sampler_object *samp)
+{
+ if (*ptr == samp)
+ return;
+
+ if (*ptr) {
+ /* Unreference the old sampler */
+ GLboolean deleteFlag = GL_FALSE;
+ struct gl_sampler_object *oldSamp = *ptr;
+
+ /*_glthread_LOCK_MUTEX(oldSamp->Mutex);*/
+ ASSERT(oldSamp->RefCount > 0);
+ oldSamp->RefCount--;
+#if 0
+ printf("SamplerObj %p %d DECR to %d\n",
+ (void *) oldSamp, oldSamp->Name, oldSamp->RefCount);
+#endif
+ deleteFlag = (oldSamp->RefCount == 0);
+ /*_glthread_UNLOCK_MUTEX(oldSamp->Mutex);*/
+
+ if (deleteFlag) {
+ ASSERT(ctx->Driver.DeleteSamplerObject);
+ ctx->Driver.DeleteSamplerObject(ctx, oldSamp);
+ }
+
+ *ptr = NULL;
+ }
+ ASSERT(!*ptr);
+
+ if (samp) {
+ /* reference new sampler */
+ /*_glthread_LOCK_MUTEX(samp->Mutex);*/
+ if (samp->RefCount == 0) {
+ /* this sampler's being deleted (look just above) */
+ /* Not sure this can every really happen. Warn if it does. */
+ _mesa_problem(NULL, "referencing deleted sampler object");
+ *ptr = NULL;
+ }
+ else {
+ samp->RefCount++;
+#if 0
+ printf("SamplerObj %p %d INCR to %d\n",
+ (void *) samp, samp->Name, samp->RefCount);
+#endif
+ *ptr = samp;
+ }
+ /*_glthread_UNLOCK_MUTEX(samp->Mutex);*/
+ }
+}
+
+
+/**
+ * Initialize the fields of the given sampler object.
+ */
+void
+_mesa_init_sampler_object(struct gl_sampler_object *sampObj, GLuint name)
+{
+ sampObj->Name = name;
+ sampObj->RefCount = 1;
+ sampObj->WrapS = GL_REPEAT;
+ sampObj->WrapT = GL_REPEAT;
+ sampObj->WrapR = GL_REPEAT;
+ sampObj->MinFilter = GL_NEAREST_MIPMAP_LINEAR;
+ sampObj->MagFilter = GL_LINEAR;
+ sampObj->BorderColor.f[0] = 0.0;
+ sampObj->BorderColor.f[1] = 0.0;
+ sampObj->BorderColor.f[2] = 0.0;
+ sampObj->BorderColor.f[3] = 0.0;
+ sampObj->MinLod = -1000.0F;
+ sampObj->MaxLod = 1000.0F;
+ sampObj->LodBias = 0.0F;
+ sampObj->MaxAnisotropy = 1.0F;
+ sampObj->CompareMode = GL_NONE;
+ sampObj->CompareFunc = GL_LEQUAL;
+ sampObj->CompareFailValue = 0.0;
+ sampObj->sRGBDecode = GL_FALSE;
+ sampObj->DepthMode = 0;
+}
+
+
+/**
+ * Fallback for ctx->Driver.NewSamplerObject();
+ */
+struct gl_sampler_object *
+_mesa_new_sampler_object(struct gl_context *ctx, GLuint name)
+{
+ struct gl_sampler_object *sampObj = CALLOC_STRUCT(gl_sampler_object);
+ if (sampObj) {
+ _mesa_init_sampler_object(sampObj, name);
+ }
+ return sampObj;
+}
+
+
+/**
+ * Fallback for ctx->Driver.DeleteSamplerObject();
+ */
+void
+_mesa_delete_sampler_object(struct gl_context *ctx,
+ struct gl_sampler_object *sampObj)
+{
+ FREE(sampObj);
+}
+
+
+static void GLAPIENTRY
+_mesa_GenSamplers(GLsizei count, GLuint *samplers)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLuint first;
+ GLint i;
+
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ if (MESA_VERBOSE & VERBOSE_API)
+ _mesa_debug(ctx, "glGenSamplers(%d)\n", count);
+
+ if (count < 0) {
+ _mesa_error(ctx, GL_INVALID_VALUE, "glGenSamplers");
+ return;
+ }
+
+ if (!samplers)
+ return;
+
+ first = _mesa_HashFindFreeKeyBlock(ctx->Shared->SamplerObjects, count);
+
+ /* Insert the ID and pointer to new sampler object into hash table */
+ for (i = 0; i < count; i++) {
+ struct gl_sampler_object *sampObj =
+ ctx->Driver.NewSamplerObject(ctx, first + i);
+ _mesa_HashInsert(ctx->Shared->SamplerObjects, first + i, sampObj);
+ samplers[i] = first + i;
+ }
+}
+
+
+static void GLAPIENTRY
+_mesa_DeleteSamplers(GLsizei count, const GLuint *samplers)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLsizei i;
+
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+ FLUSH_VERTICES(ctx, 0);
+
+ if (count < 0) {
+ _mesa_error(ctx, GL_INVALID_VALUE, "glDeleteSamplers(count)");
+ return;
+ }
+
+ _glthread_LOCK_MUTEX(ctx->Shared->Mutex);
+
+ for (i = 0; i < count; i++) {
+ if (samplers[i]) {
+ struct gl_sampler_object *sampObj =
+ _mesa_lookup_samplerobj(ctx, samplers[i]);
+ if (sampObj) {
+ /* The ID is immediately freed for re-use */
+ _mesa_HashRemove(ctx->Shared->SamplerObjects, samplers[i]);
+ /* But the object exists until its reference count goes to zero */
+ _mesa_reference_sampler_object(ctx, &sampObj, NULL);
+ }
+ }
+ }
+
+ _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
+}
+
+
+static GLboolean GLAPIENTRY
+_mesa_IsSampler(GLuint sampler)
+{
+ struct gl_sampler_object *sampObj;
+ GET_CURRENT_CONTEXT(ctx);
+
+ ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, GL_FALSE);
+
+ if (sampler == 0)
+ return GL_FALSE;
+
+ sampObj = _mesa_lookup_samplerobj(ctx, sampler);
+
+ return sampObj != NULL;
+}
+
+
+static void GLAPIENTRY
+_mesa_BindSampler(GLuint unit, GLuint sampler)
+{
+ struct gl_sampler_object *sampObj;
+ GET_CURRENT_CONTEXT(ctx);
+
+ if (unit >= ctx->Const.MaxTextureImageUnits) {
+ _mesa_error(ctx, GL_INVALID_VALUE, "glBindSampler(unit %u)", unit);
+ return;
+ }
+
+ if (sampler == 0) {
+ /* Use the default sampler object, the one contained in the texture
+ * object.
+ */
+ sampObj = NULL;
+ }
+ else {
+ /* user-defined sampler object */
+ sampObj = _mesa_lookup_samplerobj(ctx, sampler);
+ if (!sampObj) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glBindSampler(sampler)");
+ return;
+ }
+ }
+
+ if (ctx->Texture.Unit[unit].Sampler != sampObj) {
+ FLUSH_VERTICES(ctx, _NEW_TEXTURE);
+ }
+
+ /* bind new sampler */
+ _mesa_reference_sampler_object(ctx, &ctx->Texture.Unit[unit].Sampler,
+ sampObj);
+}
+
+
+/**
+ * Check if a coordinate wrap mode is legal.
+ * \return GL_TRUE if legal, GL_FALSE otherwise
+ */
+static GLboolean
+validate_texture_wrap_mode(struct gl_context *ctx, GLenum wrap)
+{
+ const struct gl_extensions * const e = &ctx->Extensions;
+
+ switch (wrap) {
+ case GL_CLAMP:
+ case GL_CLAMP_TO_EDGE:
+ case GL_REPEAT:
+ return GL_TRUE;
+ case GL_CLAMP_TO_BORDER:
+ return e->ARB_texture_border_clamp;
+ case GL_MIRRORED_REPEAT:
+ return e->ARB_texture_mirrored_repeat;
+ case GL_MIRROR_CLAMP_EXT:
+ return e->ATI_texture_mirror_once || e->EXT_texture_mirror_clamp;
+ case GL_MIRROR_CLAMP_TO_EDGE_EXT:
+ return e->ATI_texture_mirror_once || e->EXT_texture_mirror_clamp;
+ case GL_MIRROR_CLAMP_TO_BORDER_EXT:
+ return e->EXT_texture_mirror_clamp;
+ default:
+ return GL_FALSE;
+ }
+}
+
+
+/**
+ * This is called just prior to changing any sampler object state.
+ */
+static INLINE void
+flush(struct gl_context *ctx)
+{
+ FLUSH_VERTICES(ctx, _NEW_TEXTURE);
+}
+
+
+#define INVALID_PARAM 0x100
+#define INVALID_PNAME 0x101
+#define INVALID_VALUE 0x102
+
+static GLuint
+set_sampler_wrap_s(struct gl_context *ctx, struct gl_sampler_object *samp,
+ GLint param)
+{
+ if (samp->WrapS == param)
+ return GL_FALSE;
+ if (validate_texture_wrap_mode(ctx, param)) {
+ flush(ctx);
+ samp->WrapS = param;
+ return GL_TRUE;
+ }
+ return INVALID_PARAM;
+}
+
+
+static GLuint
+set_sampler_wrap_t(struct gl_context *ctx, struct gl_sampler_object *samp,
+ GLint param)
+{
+ if (samp->WrapT == param)
+ return GL_FALSE;
+ if (validate_texture_wrap_mode(ctx, param)) {
+ flush(ctx);
+ samp->WrapT = param;
+ return GL_TRUE;
+ }
+ return INVALID_PARAM;
+}
+
+
+static GLuint
+set_sampler_wrap_r(struct gl_context *ctx, struct gl_sampler_object *samp,
+ GLint param)
+{
+ if (samp->WrapR == param)
+ return GL_FALSE;
+ if (validate_texture_wrap_mode(ctx, param)) {
+ flush(ctx);
+ samp->WrapR = param;
+ return GL_TRUE;
+ }
+ return INVALID_PARAM;
+}
+
+
+static GLuint
+set_sampler_min_filter(struct gl_context *ctx, struct gl_sampler_object *samp,
+ GLint param)
+{
+ if (samp->MinFilter == param)
+ return GL_FALSE;
+
+ switch (param) {
+ case GL_NEAREST:
+ case GL_LINEAR:
+ case GL_NEAREST_MIPMAP_NEAREST:
+ case GL_LINEAR_MIPMAP_NEAREST:
+ case GL_NEAREST_MIPMAP_LINEAR:
+ case GL_LINEAR_MIPMAP_LINEAR:
+ flush(ctx);
+ samp->MinFilter = param;
+ return GL_TRUE;
+ default:
+ return INVALID_PARAM;
+ }
+}
+
+
+static GLuint
+set_sampler_mag_filter(struct gl_context *ctx, struct gl_sampler_object *samp,
+ GLint param)
+{
+ if (samp->MagFilter == param)
+ return GL_FALSE;
+
+ switch (param) {
+ case GL_NEAREST:
+ case GL_LINEAR:
+ flush(ctx);
+ samp->MagFilter = param;
+ return GL_TRUE;
+ default:
+ return INVALID_PARAM;
+ }
+}
+
+
+static GLuint
+set_sampler_lod_bias(struct gl_context *ctx, struct gl_sampler_object *samp,
+ GLfloat param)
+{
+ if (samp->LodBias == param)
+ return GL_FALSE;
+
+ flush(ctx);
+ samp->LodBias = param;
+ return GL_TRUE;
+}
+
+
+static GLuint
+set_sampler_border_colorf(struct gl_context *ctx,
+ struct gl_sampler_object *samp,
+ const GLfloat params[4])
+{
+ flush(ctx);
+ samp->BorderColor.f[RCOMP] = params[0];
+ samp->BorderColor.f[GCOMP] = params[1];
+ samp->BorderColor.f[BCOMP] = params[2];
+ samp->BorderColor.f[ACOMP] = params[3];
+ return GL_TRUE;
+}
+
+
+static GLuint
+set_sampler_border_colori(struct gl_context *ctx,
+ struct gl_sampler_object *samp,
+ const GLint params[4])
+{
+ flush(ctx);
+ samp->BorderColor.i[RCOMP] = params[0];
+ samp->BorderColor.i[GCOMP] = params[1];
+ samp->BorderColor.i[BCOMP] = params[2];
+ samp->BorderColor.i[ACOMP] = params[3];
+ return GL_TRUE;
+}
+
+
+static GLuint
+set_sampler_border_colorui(struct gl_context *ctx,
+ struct gl_sampler_object *samp,
+ const GLuint params[4])
+{
+ flush(ctx);
+ samp->BorderColor.ui[RCOMP] = params[0];
+ samp->BorderColor.ui[GCOMP] = params[1];
+ samp->BorderColor.ui[BCOMP] = params[2];
+ samp->BorderColor.ui[ACOMP] = params[3];
+ return GL_TRUE;
+}
+
+
+static GLuint
+set_sampler_min_lod(struct gl_context *ctx, struct gl_sampler_object *samp,
+ GLfloat param)
+{
+ if (samp->MinLod == param)
+ return GL_FALSE;
+
+ flush(ctx);
+ samp->MinLod = param;
+ return GL_TRUE;
+}
+
+
+static GLuint
+set_sampler_max_lod(struct gl_context *ctx, struct gl_sampler_object *samp,
+ GLfloat param)
+{
+ if (samp->MaxLod == param)
+ return GL_FALSE;
+
+ flush(ctx);
+ samp->MaxLod = param;
+ return GL_TRUE;
+}
+
+
+static GLuint
+set_sampler_compare_mode(struct gl_context *ctx,
+ struct gl_sampler_object *samp, GLint param)
+{
+ if (!ctx->Extensions.ARB_shadow)
+ return INVALID_PNAME;
+
+ if (samp->CompareMode == param)
+ return GL_FALSE;
+
+ if (param == GL_NONE ||
+ param == GL_COMPARE_R_TO_TEXTURE_ARB) {
+ flush(ctx);
+ samp->CompareMode = param;
+ return GL_TRUE;
+ }
+
+ return INVALID_PARAM;
+}
+
+
+static GLuint
+set_sampler_compare_func(struct gl_context *ctx,
+ struct gl_sampler_object *samp, GLint param)
+{
+ if (!ctx->Extensions.ARB_shadow)
+ return INVALID_PNAME;
+
+ if (samp->CompareFunc == param)
+ return GL_FALSE;
+
+ switch (param) {
+ case GL_LEQUAL:
+ case GL_GEQUAL:
+ flush(ctx);
+ samp->CompareFunc = param;
+ return GL_TRUE;
+ case GL_EQUAL:
+ case GL_NOTEQUAL:
+ case GL_LESS:
+ case GL_GREATER:
+ case GL_ALWAYS:
+ case GL_NEVER:
+ if (ctx->Extensions.EXT_shadow_funcs) {
+ flush(ctx);
+ samp->CompareFunc = param;
+ return GL_TRUE;
+ }
+ /* fall-through */
+ default:
+ return INVALID_PARAM;
+ }
+}
+
+
+static GLuint
+set_sampler_max_anisotropy(struct gl_context *ctx,
+ struct gl_sampler_object *samp, GLfloat param)
+{
+ if (!ctx->Extensions.EXT_texture_filter_anisotropic)
+ return INVALID_PNAME;
+
+ if (samp->MaxAnisotropy == param)
+ return GL_FALSE;
+
+ if (param < 1.0)
+ return INVALID_VALUE;
+
+ flush(ctx);
+ /* clamp to max, that's what NVIDIA does */
+ samp->MaxAnisotropy = MIN2(param, ctx->Const.MaxTextureMaxAnisotropy);
+ return GL_TRUE;
+}
+
+
+static void GLAPIENTRY
+_mesa_SamplerParameteri(GLuint sampler, GLenum pname, GLint param)
+{
+ struct gl_sampler_object *sampObj;
+ GLuint res;
+ GET_CURRENT_CONTEXT(ctx);
+
+ sampObj = _mesa_lookup_samplerobj(ctx, sampler);
+ if (!sampObj) {
+ _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameteri(sampler %u)",
+ sampler);
+ return;
+ }
+
+ switch (pname) {
+ case GL_TEXTURE_WRAP_S:
+ res = set_sampler_wrap_s(ctx, sampObj, param);
+ break;
+ case GL_TEXTURE_WRAP_T:
+ res = set_sampler_wrap_t(ctx, sampObj, param);
+ break;
+ case GL_TEXTURE_WRAP_R:
+ res = set_sampler_wrap_r(ctx, sampObj, param);
+ break;
+ case GL_TEXTURE_MIN_FILTER:
+ res = set_sampler_min_filter(ctx, sampObj, param);
+ break;
+ case GL_TEXTURE_MAG_FILTER:
+ res = set_sampler_mag_filter(ctx, sampObj, param);
+ break;
+ case GL_TEXTURE_MIN_LOD:
+ res = set_sampler_min_lod(ctx, sampObj, (GLfloat) param);
+ break;
+ case GL_TEXTURE_MAX_LOD:
+ res = set_sampler_max_lod(ctx, sampObj, (GLfloat) param);
+ break;
+ case GL_TEXTURE_LOD_BIAS:
+ res = set_sampler_lod_bias(ctx, sampObj, (GLfloat) param);
+ break;
+ case GL_TEXTURE_COMPARE_MODE:
+ res = set_sampler_compare_mode(ctx, sampObj, param);
+ break;
+ case GL_TEXTURE_COMPARE_FUNC:
+ res = set_sampler_compare_func(ctx, sampObj, param);
+ break;
+ case GL_TEXTURE_MAX_ANISOTROPY_EXT:
+ res = set_sampler_max_anisotropy(ctx, sampObj, (GLfloat) param);
+ break;
+ case GL_TEXTURE_BORDER_COLOR:
+ /* fall-through */
+ default:
+ res = INVALID_PNAME;
+ }
+
+ switch (res) {
+ case GL_FALSE:
+ /* no change */
+ break;
+ case GL_TRUE:
+ /* state change - we do nothing special at this time */
+ break;
+ case INVALID_PNAME:
+ _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameteri(pname=%s)\n",
+ _mesa_lookup_enum_by_nr(pname));
+ break;
+ case INVALID_PARAM:
+ _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameteri(param=%d)\n",
+ param);
+ break;
+ case INVALID_VALUE:
+ _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameteri(param=%d)\n",
+ param);
+ break;
+ default:
+ ;
+ }
+}
+
+
+static void GLAPIENTRY
+_mesa_SamplerParameterf(GLuint sampler, GLenum pname, GLfloat param)
+{
+ struct gl_sampler_object *sampObj;
+ GLuint res;
+ GET_CURRENT_CONTEXT(ctx);
+
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ sampObj = _mesa_lookup_samplerobj(ctx, sampler);
+ if (!sampObj) {
+ _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterf(sampler %u)",
+ sampler);
+ return;
+ }
+
+ switch (pname) {
+ case GL_TEXTURE_WRAP_S:
+ res = set_sampler_wrap_s(ctx, sampObj, (GLint) param);
+ break;
+ case GL_TEXTURE_WRAP_T:
+ res = set_sampler_wrap_t(ctx, sampObj, (GLint) param);
+ break;
+ case GL_TEXTURE_WRAP_R:
+ res = set_sampler_wrap_r(ctx, sampObj, (GLint) param);
+ break;
+ case GL_TEXTURE_MIN_FILTER:
+ res = set_sampler_min_filter(ctx, sampObj, (GLint) param);
+ break;
+ case GL_TEXTURE_MAG_FILTER:
+ res = set_sampler_mag_filter(ctx, sampObj, (GLint) param);
+ break;
+ case GL_TEXTURE_MIN_LOD:
+ res = set_sampler_min_lod(ctx, sampObj, param);
+ break;
+ case GL_TEXTURE_MAX_LOD:
+ res = set_sampler_max_lod(ctx, sampObj, param);
+ break;
+ case GL_TEXTURE_LOD_BIAS:
+ res = set_sampler_lod_bias(ctx, sampObj, param);
+ break;
+ case GL_TEXTURE_COMPARE_MODE:
+ res = set_sampler_compare_mode(ctx, sampObj, (GLint) param);
+ break;
+ case GL_TEXTURE_COMPARE_FUNC:
+ res = set_sampler_compare_func(ctx, sampObj, (GLint) param);
+ break;
+ case GL_TEXTURE_MAX_ANISOTROPY_EXT:
+ res = set_sampler_max_anisotropy(ctx, sampObj, param);
+ break;
+ case GL_TEXTURE_BORDER_COLOR:
+ /* fall-through */
+ default:
+ res = INVALID_PNAME;
+ }
+
+ switch (res) {
+ case GL_FALSE:
+ /* no change */
+ break;
+ case GL_TRUE:
+ /* state change - we do nothing special at this time */
+ break;
+ case INVALID_PNAME:
+ _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterf(pname=%s)\n",
+ _mesa_lookup_enum_by_nr(pname));
+ break;
+ case INVALID_PARAM:
+ _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterf(param=%f)\n",
+ param);
+ break;
+ case INVALID_VALUE:
+ _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterf(param=%f)\n",
+ param);
+ break;
+ default:
+ ;
+ }
+}
+
+static void GLAPIENTRY
+_mesa_SamplerParameteriv(GLuint sampler, GLenum pname, const GLint *params)
+{
+ struct gl_sampler_object *sampObj;
+ GLuint res;
+ GET_CURRENT_CONTEXT(ctx);
+
+ sampObj = _mesa_lookup_samplerobj(ctx, sampler);
+ if (!sampObj) {
+ _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameteriv(sampler %u)",
+ sampler);
+ return;
+ }
+
+ switch (pname) {
+ case GL_TEXTURE_WRAP_S:
+ res = set_sampler_wrap_s(ctx, sampObj, params[0]);
+ break;
+ case GL_TEXTURE_WRAP_T:
+ res = set_sampler_wrap_t(ctx, sampObj, params[0]);
+ break;
+ case GL_TEXTURE_WRAP_R:
+ res = set_sampler_wrap_r(ctx, sampObj, params[0]);
+ break;
+ case GL_TEXTURE_MIN_FILTER:
+ res = set_sampler_min_filter(ctx, sampObj, params[0]);
+ break;
+ case GL_TEXTURE_MAG_FILTER:
+ res = set_sampler_mag_filter(ctx, sampObj, params[0]);
+ break;
+ case GL_TEXTURE_MIN_LOD:
+ res = set_sampler_min_lod(ctx, sampObj, (GLfloat) params[0]);
+ break;
+ case GL_TEXTURE_MAX_LOD:
+ res = set_sampler_max_lod(ctx, sampObj, (GLfloat) params[0]);
+ break;
+ case GL_TEXTURE_LOD_BIAS:
+ res = set_sampler_lod_bias(ctx, sampObj, (GLfloat) params[0]);
+ break;
+ case GL_TEXTURE_COMPARE_MODE:
+ res = set_sampler_compare_mode(ctx, sampObj, params[0]);
+ break;
+ case GL_TEXTURE_COMPARE_FUNC:
+ res = set_sampler_compare_func(ctx, sampObj, params[0]);
+ break;
+ case GL_TEXTURE_MAX_ANISOTROPY_EXT:
+ res = set_sampler_max_anisotropy(ctx, sampObj, (GLfloat) params[0]);
+ break;
+ case GL_TEXTURE_BORDER_COLOR:
+ {
+ GLfloat c[4];
+ c[0] = INT_TO_FLOAT(params[0]);
+ c[1] = INT_TO_FLOAT(params[1]);
+ c[2] = INT_TO_FLOAT(params[2]);
+ c[3] = INT_TO_FLOAT(params[3]);
+ res = set_sampler_border_colorf(ctx, sampObj, c);
+ }
+ break;
+ default:
+ res = INVALID_PNAME;
+ }
+
+ switch (res) {
+ case GL_FALSE:
+ /* no change */
+ break;
+ case GL_TRUE:
+ /* state change - we do nothing special at this time */
+ break;
+ case INVALID_PNAME:
+ _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameteriv(pname=%s)\n",
+ _mesa_lookup_enum_by_nr(pname));
+ break;
+ case INVALID_PARAM:
+ _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameteriv(param=%d)\n",
+ params[0]);
+ break;
+ case INVALID_VALUE:
+ _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameteriv(param=%d)\n",
+ params[0]);
+ break;
+ default:
+ ;
+ }
+}
+
+static void GLAPIENTRY
+_mesa_SamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *params)
+{
+ struct gl_sampler_object *sampObj;
+ GLuint res;
+ GET_CURRENT_CONTEXT(ctx);
+
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ sampObj = _mesa_lookup_samplerobj(ctx, sampler);
+ if (!sampObj) {
+ _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterfv(sampler %u)",
+ sampler);
+ return;
+ }
+
+ switch (pname) {
+ case GL_TEXTURE_WRAP_S:
+ res = set_sampler_wrap_s(ctx, sampObj, (GLint) params[0]);
+ break;
+ case GL_TEXTURE_WRAP_T:
+ res = set_sampler_wrap_t(ctx, sampObj, (GLint) params[0]);
+ break;
+ case GL_TEXTURE_WRAP_R:
+ res = set_sampler_wrap_r(ctx, sampObj, (GLint) params[0]);
+ break;
+ case GL_TEXTURE_MIN_FILTER:
+ res = set_sampler_min_filter(ctx, sampObj, (GLint) params[0]);
+ break;
+ case GL_TEXTURE_MAG_FILTER:
+ res = set_sampler_mag_filter(ctx, sampObj, (GLint) params[0]);
+ break;
+ case GL_TEXTURE_MIN_LOD:
+ res = set_sampler_min_lod(ctx, sampObj, params[0]);
+ break;
+ case GL_TEXTURE_MAX_LOD:
+ res = set_sampler_max_lod(ctx, sampObj, params[0]);
+ break;
+ case GL_TEXTURE_LOD_BIAS:
+ res = set_sampler_lod_bias(ctx, sampObj, params[0]);
+ break;
+ case GL_TEXTURE_COMPARE_MODE:
+ res = set_sampler_compare_mode(ctx, sampObj, (GLint) params[0]);
+ break;
+ case GL_TEXTURE_COMPARE_FUNC:
+ res = set_sampler_compare_func(ctx, sampObj, (GLint) params[0]);
+ break;
+ case GL_TEXTURE_MAX_ANISOTROPY_EXT:
+ res = set_sampler_max_anisotropy(ctx, sampObj, params[0]);
+ break;
+ case GL_TEXTURE_BORDER_COLOR:
+ res = set_sampler_border_colorf(ctx, sampObj, params);
+ break;
+ default:
+ res = INVALID_PNAME;
+ }
+
+ switch (res) {
+ case GL_FALSE:
+ /* no change */
+ break;
+ case GL_TRUE:
+ /* state change - we do nothing special at this time */
+ break;
+ case INVALID_PNAME:
+ _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterfv(pname=%s)\n",
+ _mesa_lookup_enum_by_nr(pname));
+ break;
+ case INVALID_PARAM:
+ _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterfv(param=%f)\n",
+ params[0]);
+ break;
+ case INVALID_VALUE:
+ _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterfv(param=%f)\n",
+ params[0]);
+ break;
+ default:
+ ;
+ }
+}
+
+static void GLAPIENTRY
+_mesa_SamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *params)
+{
+ struct gl_sampler_object *sampObj;
+ GLuint res;
+ GET_CURRENT_CONTEXT(ctx);
+
+ sampObj = _mesa_lookup_samplerobj(ctx, sampler);
+ if (!sampObj) {
+ _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterIiv(sampler %u)",
+ sampler);
+ return;
+ }
+
+ switch (pname) {
+ case GL_TEXTURE_WRAP_S:
+ res = set_sampler_wrap_s(ctx, sampObj, params[0]);
+ break;
+ case GL_TEXTURE_WRAP_T:
+ res = set_sampler_wrap_t(ctx, sampObj, params[0]);
+ break;
+ case GL_TEXTURE_WRAP_R:
+ res = set_sampler_wrap_r(ctx, sampObj, params[0]);
+ break;
+ case GL_TEXTURE_MIN_FILTER:
+ res = set_sampler_min_filter(ctx, sampObj, params[0]);
+ break;
+ case GL_TEXTURE_MAG_FILTER:
+ res = set_sampler_mag_filter(ctx, sampObj, params[0]);
+ break;
+ case GL_TEXTURE_MIN_LOD:
+ res = set_sampler_min_lod(ctx, sampObj, (GLfloat) params[0]);
+ break;
+ case GL_TEXTURE_MAX_LOD:
+ res = set_sampler_max_lod(ctx, sampObj, (GLfloat) params[0]);
+ break;
+ case GL_TEXTURE_LOD_BIAS:
+ res = set_sampler_lod_bias(ctx, sampObj, (GLfloat) params[0]);
+ break;
+ case GL_TEXTURE_COMPARE_MODE:
+ res = set_sampler_compare_mode(ctx, sampObj, params[0]);
+ break;
+ case GL_TEXTURE_COMPARE_FUNC:
+ res = set_sampler_compare_func(ctx, sampObj, params[0]);
+ break;
+ case GL_TEXTURE_MAX_ANISOTROPY_EXT:
+ res = set_sampler_max_anisotropy(ctx, sampObj, (GLfloat) params[0]);
+ break;
+ case GL_TEXTURE_BORDER_COLOR:
+ res = set_sampler_border_colori(ctx, sampObj, params);
+ break;
+ default:
+ res = INVALID_PNAME;
+ }
+
+ switch (res) {
+ case GL_FALSE:
+ /* no change */
+ break;
+ case GL_TRUE:
+ /* state change - we do nothing special at this time */
+ break;
+ case INVALID_PNAME:
+ _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterIiv(pname=%s)\n",
+ _mesa_lookup_enum_by_nr(pname));
+ break;
+ case INVALID_PARAM:
+ _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterIiv(param=%d)\n",
+ params[0]);
+ break;
+ case INVALID_VALUE:
+ _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterIiv(param=%d)\n",
+ params[0]);
+ break;
+ default:
+ ;
+ }
+}
+
+
+static void GLAPIENTRY
+_mesa_SamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *params)
+{
+ struct gl_sampler_object *sampObj;
+ GLuint res;
+ GET_CURRENT_CONTEXT(ctx);
+
+ sampObj = _mesa_lookup_samplerobj(ctx, sampler);
+ if (!sampObj) {
+ _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterIuiv(sampler %u)",
+ sampler);
+ return;
+ }
+
+ switch (pname) {
+ case GL_TEXTURE_WRAP_S:
+ res = set_sampler_wrap_s(ctx, sampObj, params[0]);
+ break;
+ case GL_TEXTURE_WRAP_T:
+ res = set_sampler_wrap_t(ctx, sampObj, params[0]);
+ break;
+ case GL_TEXTURE_WRAP_R:
+ res = set_sampler_wrap_r(ctx, sampObj, params[0]);
+ break;
+ case GL_TEXTURE_MIN_FILTER:
+ res = set_sampler_min_filter(ctx, sampObj, params[0]);
+ break;
+ case GL_TEXTURE_MAG_FILTER:
+ res = set_sampler_mag_filter(ctx, sampObj, params[0]);
+ break;
+ case GL_TEXTURE_MIN_LOD:
+ res = set_sampler_min_lod(ctx, sampObj, (GLfloat) params[0]);
+ break;
+ case GL_TEXTURE_MAX_LOD:
+ res = set_sampler_max_lod(ctx, sampObj, (GLfloat) params[0]);
+ break;
+ case GL_TEXTURE_LOD_BIAS:
+ res = set_sampler_lod_bias(ctx, sampObj, (GLfloat) params[0]);
+ break;
+ case GL_TEXTURE_COMPARE_MODE:
+ res = set_sampler_compare_mode(ctx, sampObj, params[0]);
+ break;
+ case GL_TEXTURE_COMPARE_FUNC:
+ res = set_sampler_compare_func(ctx, sampObj, params[0]);
+ break;
+ case GL_TEXTURE_MAX_ANISOTROPY_EXT:
+ res = set_sampler_max_anisotropy(ctx, sampObj, (GLfloat) params[0]);
+ break;
+ case GL_TEXTURE_BORDER_COLOR:
+ res = set_sampler_border_colorui(ctx, sampObj, params);
+ break;
+ default:
+ res = INVALID_PNAME;
+ }
+
+ switch (res) {
+ case GL_FALSE:
+ /* no change */
+ break;
+ case GL_TRUE:
+ /* state change - we do nothing special at this time */
+ break;
+ case INVALID_PNAME:
+ _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterIuiv(pname=%s)\n",
+ _mesa_lookup_enum_by_nr(pname));
+ break;
+ case INVALID_PARAM:
+ _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterIuiv(param=%u)\n",
+ params[0]);
+ break;
+ case INVALID_VALUE:
+ _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterIuiv(param=%u)\n",
+ params[0]);
+ break;
+ default:
+ ;
+ }
+}
+
+
+static void GLAPIENTRY
+_mesa_GetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params)
+{
+ struct gl_sampler_object *sampObj;
+ GET_CURRENT_CONTEXT(ctx);
+
+ sampObj = _mesa_lookup_samplerobj(ctx, sampler);
+ if (!sampObj) {
+ _mesa_error(ctx, GL_INVALID_VALUE, "glGetSamplerParameteriv(sampler %u)",
+ sampler);
+ return;
+ }
+
+ switch (pname) {
+ case GL_TEXTURE_WRAP_S:
+ *params = sampObj->WrapS;
+ break;
+ case GL_TEXTURE_WRAP_T:
+ *params = sampObj->WrapT;
+ break;
+ case GL_TEXTURE_WRAP_R:
+ *params = sampObj->WrapR;
+ break;
+ case GL_TEXTURE_MIN_FILTER:
+ *params = sampObj->MinFilter;
+ break;
+ case GL_TEXTURE_MAG_FILTER:
+ *params = sampObj->MagFilter;
+ break;
+ case GL_TEXTURE_MIN_LOD:
+ *params = (GLint) sampObj->MinLod;
+ break;
+ case GL_TEXTURE_MAX_LOD:
+ *params = (GLint) sampObj->MaxLod;
+ break;
+ case GL_TEXTURE_LOD_BIAS:
+ *params = (GLint) sampObj->LodBias;
+ break;
+ case GL_TEXTURE_COMPARE_MODE:
+ if (!ctx->Extensions.ARB_shadow)
+ goto invalid_pname;
+ *params = sampObj->CompareMode;
+ break;
+ case GL_TEXTURE_COMPARE_FUNC:
+ if (!ctx->Extensions.ARB_shadow)
+ goto invalid_pname;
+ *params = sampObj->CompareFunc;
+ break;
+ case GL_TEXTURE_MAX_ANISOTROPY_EXT:
+ *params = (GLint) sampObj->MaxAnisotropy;
+ break;
+ case GL_TEXTURE_BORDER_COLOR:
+ params[0] = FLOAT_TO_INT(sampObj->BorderColor.f[0]);
+ params[1] = FLOAT_TO_INT(sampObj->BorderColor.f[1]);
+ params[2] = FLOAT_TO_INT(sampObj->BorderColor.f[2]);
+ params[3] = FLOAT_TO_INT(sampObj->BorderColor.f[3]);
+ break;
+ default:
+ goto invalid_pname;
+ }
+ return;
+
+invalid_pname:
+ _mesa_error(ctx, GL_INVALID_ENUM, "glGetSamplerParameteriv(pname=%s)",
+ _mesa_lookup_enum_by_nr(pname));
+}
+
+
+static void GLAPIENTRY
+_mesa_GetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params)
+{
+ struct gl_sampler_object *sampObj;
+ GET_CURRENT_CONTEXT(ctx);
+
+ sampObj = _mesa_lookup_samplerobj(ctx, sampler);
+ if (!sampObj) {
+ _mesa_error(ctx, GL_INVALID_VALUE, "glGetSamplerParameterfv(sampler %u)",
+ sampler);
+ return;
+ }
+
+ switch (pname) {
+ case GL_TEXTURE_WRAP_S:
+ *params = (GLfloat) sampObj->WrapS;
+ break;
+ case GL_TEXTURE_WRAP_T:
+ *params = (GLfloat) sampObj->WrapT;
+ break;
+ case GL_TEXTURE_WRAP_R:
+ *params = (GLfloat) sampObj->WrapR;
+ break;
+ case GL_TEXTURE_MIN_FILTER:
+ *params = (GLfloat) sampObj->MinFilter;
+ break;
+ case GL_TEXTURE_MAG_FILTER:
+ *params = (GLfloat) sampObj->MagFilter;
+ break;
+ case GL_TEXTURE_MIN_LOD:
+ *params = sampObj->MinLod;
+ break;
+ case GL_TEXTURE_MAX_LOD:
+ *params = sampObj->MaxLod;
+ break;
+ case GL_TEXTURE_LOD_BIAS:
+ *params = sampObj->LodBias;
+ break;
+ case GL_TEXTURE_COMPARE_MODE:
+ if (!ctx->Extensions.ARB_shadow)
+ goto invalid_pname;
+ *params = (GLfloat) sampObj->CompareMode;
+ break;
+ case GL_TEXTURE_COMPARE_FUNC:
+ if (!ctx->Extensions.ARB_shadow)
+ goto invalid_pname;
+ *params = (GLfloat) sampObj->CompareFunc;
+ break;
+ case GL_TEXTURE_MAX_ANISOTROPY_EXT:
+ *params = sampObj->MaxAnisotropy;
+ break;
+ case GL_TEXTURE_BORDER_COLOR:
+ params[0] = sampObj->BorderColor.f[0];
+ params[1] = sampObj->BorderColor.f[1];
+ params[2] = sampObj->BorderColor.f[2];
+ params[3] = sampObj->BorderColor.f[3];
+ break;
+ default:
+ goto invalid_pname;
+ }
+ return;
+
+invalid_pname:
+ _mesa_error(ctx, GL_INVALID_ENUM, "glGetSamplerParameterfv(pname=%s)",
+ _mesa_lookup_enum_by_nr(pname));
+}
+
+
+static void GLAPIENTRY
+_mesa_GetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params)
+{
+ struct gl_sampler_object *sampObj;
+ GET_CURRENT_CONTEXT(ctx);
+
+ sampObj = _mesa_lookup_samplerobj(ctx, sampler);
+ if (!sampObj) {
+ _mesa_error(ctx, GL_INVALID_VALUE,
+ "glGetSamplerParameterIiv(sampler %u)",
+ sampler);
+ return;
+ }
+
+ switch (pname) {
+ case GL_TEXTURE_WRAP_S:
+ *params = sampObj->WrapS;
+ break;
+ case GL_TEXTURE_WRAP_T:
+ *params = sampObj->WrapT;
+ break;
+ case GL_TEXTURE_WRAP_R:
+ *params = sampObj->WrapR;
+ break;
+ case GL_TEXTURE_MIN_FILTER:
+ *params = sampObj->MinFilter;
+ break;
+ case GL_TEXTURE_MAG_FILTER:
+ *params = sampObj->MagFilter;
+ break;
+ case GL_TEXTURE_MIN_LOD:
+ *params = (GLint) sampObj->MinLod;
+ break;
+ case GL_TEXTURE_MAX_LOD:
+ *params = (GLint) sampObj->MaxLod;
+ break;
+ case GL_TEXTURE_LOD_BIAS:
+ *params = (GLint) sampObj->LodBias;
+ break;
+ case GL_TEXTURE_COMPARE_MODE:
+ if (!ctx->Extensions.ARB_shadow)
+ goto invalid_pname;
+ *params = sampObj->CompareMode;
+ break;
+ case GL_TEXTURE_COMPARE_FUNC:
+ if (!ctx->Extensions.ARB_shadow)
+ goto invalid_pname;
+ *params = sampObj->CompareFunc;
+ break;
+ case GL_TEXTURE_MAX_ANISOTROPY_EXT:
+ *params = (GLint) sampObj->MaxAnisotropy;
+ break;
+ case GL_TEXTURE_BORDER_COLOR:
+ params[0] = sampObj->BorderColor.i[0];
+ params[1] = sampObj->BorderColor.i[1];
+ params[2] = sampObj->BorderColor.i[2];
+ params[3] = sampObj->BorderColor.i[3];
+ break;
+ default:
+ goto invalid_pname;
+ }
+ return;
+
+invalid_pname:
+ _mesa_error(ctx, GL_INVALID_ENUM, "glGetSamplerParameterIiv(pname=%s)",
+ _mesa_lookup_enum_by_nr(pname));
+}
+
+
+static void GLAPIENTRY
+_mesa_GetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params)
+{
+ struct gl_sampler_object *sampObj;
+ GET_CURRENT_CONTEXT(ctx);
+
+ sampObj = _mesa_lookup_samplerobj(ctx, sampler);
+ if (!sampObj) {
+ _mesa_error(ctx, GL_INVALID_VALUE,
+ "glGetSamplerParameterIuiv(sampler %u)",
+ sampler);
+ return;
+ }
+
+ switch (pname) {
+ case GL_TEXTURE_WRAP_S:
+ *params = sampObj->WrapS;
+ break;
+ case GL_TEXTURE_WRAP_T:
+ *params = sampObj->WrapT;
+ break;
+ case GL_TEXTURE_WRAP_R:
+ *params = sampObj->WrapR;
+ break;
+ case GL_TEXTURE_MIN_FILTER:
+ *params = sampObj->MinFilter;
+ break;
+ case GL_TEXTURE_MAG_FILTER:
+ *params = sampObj->MagFilter;
+ break;
+ case GL_TEXTURE_MIN_LOD:
+ *params = (GLuint) sampObj->MinLod;
+ break;
+ case GL_TEXTURE_MAX_LOD:
+ *params = (GLuint) sampObj->MaxLod;
+ break;
+ case GL_TEXTURE_LOD_BIAS:
+ *params = (GLuint) sampObj->LodBias;
+ break;
+ case GL_TEXTURE_COMPARE_MODE:
+ if (!ctx->Extensions.ARB_shadow)
+ goto invalid_pname;
+ *params = sampObj->CompareMode;
+ break;
+ case GL_TEXTURE_COMPARE_FUNC:
+ if (!ctx->Extensions.ARB_shadow)
+ goto invalid_pname;
+ *params = sampObj->CompareFunc;
+ break;
+ case GL_TEXTURE_MAX_ANISOTROPY_EXT:
+ *params = (GLuint) sampObj->MaxAnisotropy;
+ break;
+ case GL_TEXTURE_BORDER_COLOR:
+ params[0] = sampObj->BorderColor.ui[0];
+ params[1] = sampObj->BorderColor.ui[1];
+ params[2] = sampObj->BorderColor.ui[2];
+ params[3] = sampObj->BorderColor.ui[3];
+ break;
+ default:
+ goto invalid_pname;
+ }
+ return;
+
+invalid_pname:
+ _mesa_error(ctx, GL_INVALID_ENUM, "glGetSamplerParameterIuiv(pname=%s)",
+ _mesa_lookup_enum_by_nr(pname));
+}
+
+
+void
+_mesa_init_sampler_object_functions(struct dd_function_table *driver)
+{
+ driver->NewSamplerObject = _mesa_new_sampler_object;
+ driver->DeleteSamplerObject = _mesa_delete_sampler_object;
+}
+
+
+void
+_mesa_init_sampler_object_dispatch(struct _glapi_table *disp)
+{
+ SET_GenSamplers(disp, _mesa_GenSamplers);
+ SET_DeleteSamplers(disp, _mesa_DeleteSamplers);
+ SET_IsSampler(disp, _mesa_IsSampler);
+ SET_BindSampler(disp, _mesa_BindSampler);
+ SET_SamplerParameteri(disp, _mesa_SamplerParameteri);
+ SET_SamplerParameterf(disp, _mesa_SamplerParameterf);
+ SET_SamplerParameteriv(disp, _mesa_SamplerParameteriv);
+ SET_SamplerParameterfv(disp, _mesa_SamplerParameterfv);
+ SET_SamplerParameterIiv(disp, _mesa_SamplerParameterIiv);
+ SET_SamplerParameterIuiv(disp, _mesa_SamplerParameterIuiv);
+ SET_GetSamplerParameteriv(disp, _mesa_GetSamplerParameteriv);
+ SET_GetSamplerParameterfv(disp, _mesa_GetSamplerParameterfv);
+ SET_GetSamplerParameterIiv(disp, _mesa_GetSamplerParameterIiv);
+ SET_GetSamplerParameterIuiv(disp, _mesa_GetSamplerParameterIuiv);
+}
diff --git a/src/mesa/main/samplerobj.h b/src/mesa/main/samplerobj.h
new file mode 100644
index 00000000000..ed495c3760b
--- /dev/null
+++ b/src/mesa/main/samplerobj.h
@@ -0,0 +1,54 @@
+/*
+ * Mesa 3-D graphics library
+ *
+ * Copyright (C) 2011 VMware, Inc. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+
+
+#ifndef SAMPLEROBJ_H
+#define SAMPLEROBJ_H
+
+struct dd_function_table;
+
+
+extern void
+_mesa_reference_sampler_object(struct gl_context *ctx,
+ struct gl_sampler_object **ptr,
+ struct gl_sampler_object *samp);
+
+extern void
+_mesa_init_sampler_object(struct gl_sampler_object *sampObj, GLuint name);
+
+extern struct gl_sampler_object *
+_mesa_new_sampler_object(struct gl_context *ctx, GLuint name);
+
+extern void
+_mesa_delete_sampler_object(struct gl_context *ctx,
+ struct gl_sampler_object *sampObj);
+
+extern void
+_mesa_init_sampler_object_functions(struct dd_function_table *driver);
+
+extern void
+_mesa_init_sampler_object_dispatch(struct _glapi_table *disp);
+
+
+#endif /* SAMPLEROBJ_H */
diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c
index 2c5f2a147ce..451735faf76 100644
--- a/src/mesa/main/shaderapi.c
+++ b/src/mesa/main/shaderapi.c
@@ -1029,6 +1029,7 @@ static GLboolean
validate_samplers(const struct gl_program *prog, char *errMsg)
{
static const char *targetName[] = {
+ "TEXTURE_BUFFER",
"TEXTURE_2D_ARRAY",
"TEXTURE_1D_ARRAY",
"TEXTURE_CUBE",
diff --git a/src/mesa/main/shared.c b/src/mesa/main/shared.c
index ce9fc4de327..d84f59690c5 100644
--- a/src/mesa/main/shared.c
+++ b/src/mesa/main/shared.c
@@ -27,8 +27,6 @@
* Shared-context state
*/
-
-
#include "imports.h"
#include "mfeatures.h"
#include "mtypes.h"
@@ -40,9 +38,13 @@
#include "shared.h"
#include "program/program.h"
#include "dlist.h"
+#if FEATURE_ARB_sampler_objects
+#include "samplerobj.h"
+#endif
#include "shaderobj.h"
#include "syncobj.h"
+
/**
* Allocate and initialize a shared context state structure.
* Initializes the display list, texture objects and vertex programs hash
@@ -91,6 +93,11 @@ _mesa_alloc_shared_state(struct gl_context *ctx)
shared->BufferObjects = _mesa_NewHashTable();
#endif
+#if FEATURE_ARB_sampler_objects
+ /* GL_ARB_sampler_objects */
+ shared->SamplerObjects = _mesa_NewHashTable();
+#endif
+
/* Allocate the default buffer object */
shared->NullBufferObj = ctx->Driver.NewBufferObject(ctx, 0, 0);
@@ -98,6 +105,7 @@ _mesa_alloc_shared_state(struct gl_context *ctx)
for (i = 0; i < NUM_TEXTURE_TARGETS; i++) {
/* NOTE: the order of these enums matches the TEXTURE_x_INDEX values */
static const GLenum targets[NUM_TEXTURE_TARGETS] = {
+ GL_TEXTURE_BUFFER,
GL_TEXTURE_2D_ARRAY_EXT,
GL_TEXTURE_1D_ARRAY_EXT,
GL_TEXTURE_CUBE_MAP,
@@ -106,6 +114,7 @@ _mesa_alloc_shared_state(struct gl_context *ctx)
GL_TEXTURE_2D,
GL_TEXTURE_1D
};
+ assert(Elements(targets) == NUM_TEXTURE_TARGETS);
shared->DefaultTex[i] = ctx->Driver.NewTextureObject(ctx, 0, targets[i]);
}
@@ -268,6 +277,20 @@ delete_renderbuffer_cb(GLuint id, void *data, void *userData)
}
+#if FEATURE_ARB_sampler_objects
+/**
+ * Callback for deleting a sampler object. Called by _mesa_HashDeleteAll()
+ */
+static void
+delete_sampler_object_cb(GLuint id, void *data, void *userData)
+{
+ struct gl_context *ctx = (struct gl_context *) userData;
+ struct gl_sampler_object *sampObj = (struct gl_sampler_object *) data;
+ _mesa_reference_sampler_object(ctx, &sampObj, NULL);
+}
+#endif
+
+
/**
* Deallocate a shared state object and all children structures.
*
@@ -343,6 +366,11 @@ free_shared_state(struct gl_context *ctx, struct gl_shared_state *shared)
}
}
+#if FEATURE_ARB_sampler_objects
+ _mesa_HashDeleteAll(shared->SamplerObjects, delete_sampler_object_cb, ctx);
+ _mesa_DeleteHashTable(shared->SamplerObjects);
+#endif
+
/*
* Free texture objects (after FBOs since some textures might have
* been bound to FBOs).
@@ -374,7 +402,8 @@ free_shared_state(struct gl_context *ctx, struct gl_shared_state *shared)
* \sa free_shared_state().
*/
void
-_mesa_release_shared_state(struct gl_context *ctx, struct gl_shared_state *shared)
+_mesa_release_shared_state(struct gl_context *ctx,
+ struct gl_shared_state *shared)
{
GLint RefCount;
diff --git a/src/mesa/main/shared.h b/src/mesa/main/shared.h
index 768d69f6942..55516a8c37c 100644
--- a/src/mesa/main/shared.h
+++ b/src/mesa/main/shared.h
@@ -32,7 +32,8 @@ _mesa_alloc_shared_state(struct gl_context *ctx);
void
-_mesa_release_shared_state(struct gl_context *ctx, struct gl_shared_state *shared);
+_mesa_release_shared_state(struct gl_context *ctx,
+ struct gl_shared_state *shared);
#endif
diff --git a/src/mesa/main/state.c b/src/mesa/main/state.c
index 19c9bbabda2..4696dbb526f 100644
--- a/src/mesa/main/state.c
+++ b/src/mesa/main/state.c
@@ -48,6 +48,7 @@
#include "texenvprogram.h"
#include "texobj.h"
#include "texstate.h"
+#include "varray.h"
static void
@@ -61,43 +62,13 @@ update_separate_specular(struct gl_context *ctx)
/**
- * Compute the index of the last array element that can be safely accessed
- * in a vertex array. We can really only do this when the array lives in
- * a VBO.
- * The array->_MaxElement field will be updated.
- * Later in glDrawArrays/Elements/etc we can do some bounds checking.
- */
-static void
-compute_max_element(struct gl_client_array *array)
-{
- assert(array->Enabled);
- if (array->BufferObj->Name) {
- GLsizeiptrARB offset = (GLsizeiptrARB) array->Ptr;
- GLsizeiptrARB obj_size = (GLsizeiptrARB) array->BufferObj->Size;
-
- if (offset < obj_size) {
- array->_MaxElement = (obj_size - offset +
- array->StrideB -
- array->_ElementSize) / array->StrideB;
- } else {
- array->_MaxElement = 0;
- }
- }
- else {
- /* user-space array, no idea how big it is */
- array->_MaxElement = 2 * 1000 * 1000 * 1000; /* just a big number */
- }
-}
-
-
-/**
* Helper for update_arrays().
* \return min(current min, array->_MaxElement).
*/
static GLuint
update_min(GLuint min, struct gl_client_array *array)
{
- compute_max_element(array);
+ _mesa_update_array_max_element(array);
return MIN2(min, array->_MaxElement);
}
@@ -445,6 +416,35 @@ update_color(struct gl_context *ctx)
ctx->Color._LogicOpEnabled = _mesa_rgba_logicop_enabled(ctx);
}
+static void
+update_clamp_fragment_color(struct gl_context *ctx)
+{
+ if(ctx->Color.ClampFragmentColor == GL_FIXED_ONLY_ARB)
+ ctx->Color._ClampFragmentColor = !ctx->DrawBuffer || !ctx->DrawBuffer->Visual.floatMode;
+ else
+ ctx->Color._ClampFragmentColor = ctx->Color.ClampFragmentColor;
+}
+
+static void
+update_clamp_vertex_color(struct gl_context *ctx)
+{
+ if(ctx->Light.ClampVertexColor == GL_FIXED_ONLY_ARB)
+ ctx->Light._ClampVertexColor = !ctx->DrawBuffer || !ctx->DrawBuffer->Visual.floatMode;
+ else
+ ctx->Light._ClampVertexColor = ctx->Light.ClampVertexColor;
+}
+
+static void
+update_clamp_read_color(struct gl_context *ctx)
+{
+ if(ctx->Color.ClampReadColor == GL_FIXED_ONLY_ARB)
+ ctx->Color._ClampReadColor = !ctx->ReadBuffer || !ctx->ReadBuffer->Visual.floatMode;
+ else
+ ctx->Color._ClampReadColor = ctx->Color.ClampReadColor;
+}
+
+
+
/*
* Check polygon state and set DD_TRI_CULL_FRONT_BACK and/or DD_TRI_OFFSET
@@ -565,7 +565,7 @@ _mesa_update_state_locked( struct gl_context *ctx )
if (ctx->FragmentProgram._MaintainTexEnvProgram) {
prog_flags |= (_NEW_BUFFERS | _NEW_TEXTURE | _NEW_FOG |
_NEW_ARRAY | _NEW_LIGHT | _NEW_POINT | _NEW_RENDERMODE |
- _NEW_PROGRAM);
+ _NEW_PROGRAM | _NEW_FRAG_CLAMP);
}
if (ctx->VertexProgram._MaintainTnlProgram) {
prog_flags |= (_NEW_ARRAY | _NEW_TEXTURE | _NEW_TEXTURE_MATRIX |
@@ -599,10 +599,13 @@ _mesa_update_state_locked( struct gl_context *ctx )
if (new_state & _NEW_LIGHT)
_mesa_update_lighting( ctx );
+ if (new_state & (_NEW_LIGHT | _NEW_BUFFERS))
+ update_clamp_vertex_color(ctx);
+
if (new_state & (_NEW_STENCIL | _NEW_BUFFERS))
_mesa_update_stencil( ctx );
- if (new_state & _MESA_NEW_TRANSFER_STATE)
+ if (new_state & _NEW_PIXEL)
_mesa_update_pixel( ctx, new_state );
if (new_state & _DD_NEW_SEPARATE_SPECULAR)
@@ -617,6 +620,12 @@ _mesa_update_state_locked( struct gl_context *ctx )
if (new_state & _NEW_COLOR)
update_color( ctx );
+ if (new_state & (_NEW_COLOR | _NEW_BUFFERS))
+ update_clamp_read_color(ctx);
+
+ if(new_state & (_NEW_FRAG_CLAMP | _NEW_BUFFERS))
+ update_clamp_fragment_color(ctx);
+
#if 0
if (new_state & (_NEW_POINT | _NEW_LINE | _NEW_POLYGON | _NEW_LIGHT
| _NEW_STENCIL | _DD_NEW_SEPARATE_SPECULAR))
diff --git a/src/mesa/main/texcompress_rgtc.c b/src/mesa/main/texcompress_rgtc.c
index c50df19c5d8..d9de9bec3d1 100644
--- a/src/mesa/main/texcompress_rgtc.c
+++ b/src/mesa/main/texcompress_rgtc.c
@@ -121,7 +121,7 @@ _mesa_texstore_red_rgtc1(TEXSTORE_PARAMS)
texWidth, (GLubyte *) dstAddr);
blkaddr = dst;
- dstRowDiff = dstRowStride >= (srcWidth * 4) ? dstRowStride - (((srcWidth + 3) & ~3) * 4) : 0;
+ dstRowDiff = dstRowStride >= (srcWidth * 2) ? dstRowStride - (((srcWidth + 3) & ~3) * 2) : 0;
for (j = 0; j < srcHeight; j+=4) {
if (srcHeight > j + 3) numypixels = 4;
else numypixels = srcHeight - j;
@@ -176,7 +176,7 @@ _mesa_texstore_signed_red_rgtc1(TEXSTORE_PARAMS)
texWidth, (GLubyte *) dstAddr);
blkaddr = dst;
- dstRowDiff = dstRowStride >= (srcWidth * 4) ? dstRowStride - (((srcWidth + 3) & ~3) * 4) : 0;
+ dstRowDiff = dstRowStride >= (srcWidth * 2) ? dstRowStride - (((srcWidth + 3) & ~3) * 2) : 0;
for (j = 0; j < srcHeight; j+=4) {
if (srcHeight > j + 3) numypixels = 4;
else numypixels = srcHeight - j;
@@ -232,7 +232,7 @@ _mesa_texstore_rg_rgtc2(TEXSTORE_PARAMS)
texWidth, (GLubyte *) dstAddr);
blkaddr = dst;
- dstRowDiff = dstRowStride >= (srcWidth * 8) ? dstRowStride - (((srcWidth + 7) & ~7) * 8) : 0;
+ dstRowDiff = dstRowStride >= (srcWidth * 4) ? dstRowStride - (((srcWidth + 3) & ~3) * 4) : 0;
for (j = 0; j < srcHeight; j+=4) {
if (srcHeight > j + 3) numypixels = 4;
else numypixels = srcHeight - j;
@@ -294,7 +294,7 @@ _mesa_texstore_signed_rg_rgtc2(TEXSTORE_PARAMS)
texWidth, (GLubyte *) dstAddr);
blkaddr = dst;
- dstRowDiff = dstRowStride >= (srcWidth * 8) ? dstRowStride - (((srcWidth + 7) & ~7) * 8) : 0;
+ dstRowDiff = dstRowStride >= (srcWidth * 4) ? dstRowStride - (((srcWidth + 3) & ~3) * 4) : 0;
for (j = 0; j < srcHeight; j += 4) {
if (srcHeight > j + 3) numypixels = 4;
else numypixels = srcHeight - j;
diff --git a/src/mesa/main/texenv.c b/src/mesa/main/texenv.c
index 45a2e195e98..9228e354a4d 100644
--- a/src/mesa/main/texenv.c
+++ b/src/mesa/main/texenv.c
@@ -35,6 +35,7 @@
#include "main/enums.h"
#include "main/macros.h"
#include "main/mtypes.h"
+#include "main/state.h"
#include "main/texenv.h"
#include "main/texstate.h"
@@ -94,15 +95,14 @@ set_env_color(struct gl_context *ctx,
struct gl_texture_unit *texUnit,
const GLfloat *color)
{
- GLfloat tmp[4];
- tmp[0] = CLAMP(color[0], 0.0F, 1.0F);
- tmp[1] = CLAMP(color[1], 0.0F, 1.0F);
- tmp[2] = CLAMP(color[2], 0.0F, 1.0F);
- tmp[3] = CLAMP(color[3], 0.0F, 1.0F);
- if (TEST_EQ_4V(tmp, texUnit->EnvColor))
+ if (TEST_EQ_4V(color, texUnit->EnvColorUnclamped))
return;
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
- COPY_4FV(texUnit->EnvColor, tmp);
+ COPY_4FV(texUnit->EnvColorUnclamped, color);
+ texUnit->EnvColor[0] = CLAMP(color[0], 0.0F, 1.0F);
+ texUnit->EnvColor[1] = CLAMP(color[1], 0.0F, 1.0F);
+ texUnit->EnvColor[2] = CLAMP(color[2], 0.0F, 1.0F);
+ texUnit->EnvColor[3] = CLAMP(color[3], 0.0F, 1.0F);
}
@@ -758,7 +758,12 @@ _mesa_GetTexEnvfv( GLenum target, GLenum pname, GLfloat *params )
if (target == GL_TEXTURE_ENV) {
if (pname == GL_TEXTURE_ENV_COLOR) {
- COPY_4FV( params, texUnit->EnvColor );
+ if(ctx->NewState & (_NEW_BUFFERS | _NEW_FRAG_CLAMP))
+ _mesa_update_state(ctx);
+ if(ctx->Color._ClampFragmentColor)
+ COPY_4FV( params, texUnit->EnvColor );
+ else
+ COPY_4FV( params, texUnit->EnvColorUnclamped );
}
else {
GLint val = get_texenvi(ctx, texUnit, pname);
diff --git a/src/mesa/main/texfetch.c b/src/mesa/main/texfetch.c
index 988a7e05468..d091789ff16 100644
--- a/src/mesa/main/texfetch.c
+++ b/src/mesa/main/texfetch.c
@@ -631,6 +631,34 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
fetch_texel_3d_f_intensity_f16,
store_texel_intensity_f16
},
+ {
+ MESA_FORMAT_R_FLOAT32,
+ fetch_texel_1d_f_r_f32,
+ fetch_texel_2d_f_r_f32,
+ fetch_texel_3d_f_r_f32,
+ store_texel_r_f32
+ },
+ {
+ MESA_FORMAT_R_FLOAT16,
+ fetch_texel_1d_f_r_f16,
+ fetch_texel_2d_f_r_f16,
+ fetch_texel_3d_f_r_f16,
+ store_texel_r_f16
+ },
+ {
+ MESA_FORMAT_RG_FLOAT32,
+ fetch_texel_1d_f_rg_f32,
+ fetch_texel_2d_f_rg_f32,
+ fetch_texel_3d_f_rg_f32,
+ store_texel_rg_f32
+ },
+ {
+ MESA_FORMAT_RG_FLOAT16,
+ fetch_texel_1d_f_rg_f16,
+ fetch_texel_2d_f_rg_f16,
+ fetch_texel_3d_f_rg_f16,
+ store_texel_rg_f16
+ },
/* non-normalized, signed int */
{
@@ -696,11 +724,11 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
store_texel_signed_r8
},
{
- MESA_FORMAT_SIGNED_RG88,
- fetch_texel_1d_signed_rg88,
- fetch_texel_2d_signed_rg88,
- fetch_texel_3d_signed_rg88,
- store_texel_signed_rg88
+ MESA_FORMAT_SIGNED_RG88_REV,
+ fetch_texel_1d_signed_rg88_rev,
+ fetch_texel_2d_signed_rg88_rev,
+ fetch_texel_3d_signed_rg88_rev,
+ store_texel_signed_rg88_rev
},
{
MESA_FORMAT_SIGNED_RGBX8888,
@@ -724,18 +752,18 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
store_texel_signed_rgba8888_rev
},
{
- MESA_FORMAT_SIGNED_R_16,
- fetch_texel_1d_signed_r_16,
- fetch_texel_2d_signed_r_16,
- fetch_texel_3d_signed_r_16,
- store_texel_signed_r_16
+ MESA_FORMAT_SIGNED_R16,
+ fetch_texel_1d_signed_r16,
+ fetch_texel_2d_signed_r16,
+ fetch_texel_3d_signed_r16,
+ store_texel_signed_r16
},
{
- MESA_FORMAT_SIGNED_RG_16,
- fetch_texel_1d_signed_rg_16,
- fetch_texel_2d_signed_rg_16,
- fetch_texel_3d_signed_rg_16,
- store_texel_signed_rg_16
+ MESA_FORMAT_SIGNED_GR1616,
+ fetch_texel_1d_signed_rg1616,
+ fetch_texel_2d_signed_rg1616,
+ fetch_texel_3d_signed_rg1616,
+ store_texel_signed_rg1616
},
{
MESA_FORMAT_SIGNED_RGB_16,
@@ -814,6 +842,62 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
NULL,
NULL
},
+ {
+ MESA_FORMAT_SIGNED_A8,
+ fetch_texel_1d_signed_a8,
+ fetch_texel_2d_signed_a8,
+ fetch_texel_3d_signed_a8,
+ store_texel_signed_a8
+ },
+ {
+ MESA_FORMAT_SIGNED_L8,
+ fetch_texel_1d_signed_l8,
+ fetch_texel_2d_signed_l8,
+ fetch_texel_3d_signed_l8,
+ store_texel_signed_l8
+ },
+ {
+ MESA_FORMAT_SIGNED_AL88,
+ fetch_texel_1d_signed_al88,
+ fetch_texel_2d_signed_al88,
+ fetch_texel_3d_signed_al88,
+ store_texel_signed_al88
+ },
+ {
+ MESA_FORMAT_SIGNED_I8,
+ fetch_texel_1d_signed_i8,
+ fetch_texel_2d_signed_i8,
+ fetch_texel_3d_signed_i8,
+ store_texel_signed_i8
+ },
+ {
+ MESA_FORMAT_SIGNED_A16,
+ fetch_texel_1d_signed_a16,
+ fetch_texel_2d_signed_a16,
+ fetch_texel_3d_signed_a16,
+ store_texel_signed_a16
+ },
+ {
+ MESA_FORMAT_SIGNED_L16,
+ fetch_texel_1d_signed_l16,
+ fetch_texel_2d_signed_l16,
+ fetch_texel_3d_signed_l16,
+ store_texel_signed_l16
+ },
+ {
+ MESA_FORMAT_SIGNED_AL1616,
+ fetch_texel_1d_signed_al1616,
+ fetch_texel_2d_signed_al1616,
+ fetch_texel_3d_signed_al1616,
+ store_texel_signed_al1616
+ },
+ {
+ MESA_FORMAT_SIGNED_I16,
+ fetch_texel_1d_signed_i16,
+ fetch_texel_2d_signed_i16,
+ fetch_texel_3d_signed_i16,
+ store_texel_signed_i16
+ },
};
@@ -919,7 +1003,7 @@ _mesa_set_fetch_functions(struct gl_texture_image *texImage, GLuint dims)
ASSERT(dims == 1 || dims == 2 || dims == 3);
- if (texImage->TexObject->sRGBDecode == GL_SKIP_DECODE_EXT &&
+ if (texImage->TexObject->Sampler.sRGBDecode == GL_SKIP_DECODE_EXT &&
_mesa_get_format_color_encoding(format) == GL_SRGB) {
format = _mesa_get_srgb_format_linear(format);
}
diff --git a/src/mesa/main/texfetch_tmp.h b/src/mesa/main/texfetch_tmp.h
index 36dede57f00..0b9d5da07e8 100644
--- a/src/mesa/main/texfetch_tmp.h
+++ b/src/mesa/main/texfetch_tmp.h
@@ -438,6 +438,110 @@ static void store_texel_intensity_f16(struct gl_texture_image *texImage,
#endif
+/* MESA_FORMAT_R_FLOAT32 *****************************************************/
+
+/* Fetch texel from 1D, 2D or 3D R_FLOAT32 texture,
+ * returning 4 GLfloats.
+ */
+static void FETCH(f_r_f32)( const struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, GLfloat *texel )
+{
+ const GLfloat *src = TEXEL_ADDR(GLfloat, texImage, i, j, k, 1);
+ texel[RCOMP] = src[0];
+ texel[GCOMP] = 0.0F;
+ texel[BCOMP] = 0.0F;
+ texel[ACOMP] = 1.0F;
+}
+
+#if DIM == 3
+static void store_texel_r_f32(struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, const void *texel)
+{
+ const GLfloat *rgba = (const GLfloat *) texel;
+ GLfloat *dst = TEXEL_ADDR(GLfloat, texImage, i, j, k, 1);
+ dst[0] = rgba[RCOMP];
+}
+#endif
+
+
+/* MESA_FORMAT_R_FLOAT16 *****************************************************/
+
+/* Fetch texel from 1D, 2D or 3D R_FLOAT16 texture,
+ * returning 4 GLfloats.
+ */
+static void FETCH(f_r_f16)( const struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, GLfloat *texel )
+{
+ const GLhalfARB *src = TEXEL_ADDR(GLhalfARB, texImage, i, j, k, 1);
+ texel[RCOMP] = _mesa_half_to_float(src[0]);
+ texel[GCOMP] = 0.0F;
+ texel[BCOMP] = 0.0F;
+ texel[ACOMP] = 1.0F;
+}
+
+#if DIM == 3
+static void store_texel_r_f16(struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, const void *texel)
+{
+ const GLfloat *rgba = (const GLfloat *) texel;
+ GLhalfARB *dst = TEXEL_ADDR(GLhalfARB, texImage, i, j, k, 1);
+ dst[0] = _mesa_float_to_half(rgba[RCOMP]);
+}
+#endif
+
+
+/* MESA_FORMAT_RG_FLOAT32 ****************************************************/
+
+/* Fetch texel from 1D, 2D or 3D RG_FLOAT32 texture,
+ * returning 4 GLfloats.
+ */
+static void FETCH(f_rg_f32)( const struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, GLfloat *texel )
+{
+ const GLfloat *src = TEXEL_ADDR(GLfloat, texImage, i, j, k, 2);
+ texel[RCOMP] = src[0];
+ texel[GCOMP] = src[1];
+ texel[BCOMP] = 0.0F;
+ texel[ACOMP] = 1.0F;
+}
+
+#if DIM == 3
+static void store_texel_rg_f32(struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, const void *texel)
+{
+ const GLfloat *rgba = (const GLfloat *) texel;
+ GLfloat *dst = TEXEL_ADDR(GLfloat, texImage, i, j, k, 2);
+ dst[0] = rgba[RCOMP];
+ dst[1] = rgba[GCOMP];
+}
+#endif
+
+
+/* MESA_FORMAT_RG_FLOAT16 ****************************************************/
+
+/* Fetch texel from 1D, 2D or 3D RG_FLOAT16 texture,
+ * returning 4 GLfloats.
+ */
+static void FETCH(f_rg_f16)( const struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, GLfloat *texel )
+{
+ const GLhalfARB *src = TEXEL_ADDR(GLhalfARB, texImage, i, j, k, 2);
+ texel[RCOMP] = _mesa_half_to_float(src[0]);
+ texel[GCOMP] = _mesa_half_to_float(src[1]);
+ texel[BCOMP] = 0.0F;
+ texel[ACOMP] = 1.0F;
+}
+
+#if DIM == 3
+static void store_texel_rg_f16(struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, const void *texel)
+{
+ const GLfloat *rgba = (const GLfloat *) texel;
+ GLhalfARB *dst = TEXEL_ADDR(GLhalfARB, texImage, i, j, k, 2);
+ dst[0] = _mesa_float_to_half(rgba[RCOMP]);
+ dst[1] = _mesa_float_to_half(rgba[GCOMP]);
+}
+#endif
/*
@@ -1673,25 +1777,117 @@ static void store_texel_signed_r8(struct gl_texture_image *texImage,
#endif
-/* MESA_FORMAT_SIGNED_RG88 ***********************************************/
+/* MESA_FORMAT_SIGNED_A8 ***********************************************/
-static void FETCH(signed_rg88)( const struct gl_texture_image *texImage,
- GLint i, GLint j, GLint k, GLfloat *texel )
+static void FETCH(signed_a8)( const struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, GLfloat *texel )
+{
+ const GLbyte s = *TEXEL_ADDR(GLbyte, texImage, i, j, k, 1);
+ texel[RCOMP] = 0.0F;
+ texel[GCOMP] = 0.0F;
+ texel[BCOMP] = 0.0F;
+ texel[ACOMP] = BYTE_TO_FLOAT_TEX( s );
+}
+
+#if DIM == 3
+static void store_texel_signed_a8(struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, const void *texel)
+{
+ const GLbyte *rgba = (const GLbyte *) texel;
+ GLbyte *dst = TEXEL_ADDR(GLbyte, texImage, i, j, k, 1);
+ *dst = rgba[ACOMP];
+}
+#endif
+
+
+/* MESA_FORMAT_SIGNED_L8 ***********************************************/
+
+static void FETCH(signed_l8)( const struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, GLfloat *texel )
+{
+ const GLbyte s = *TEXEL_ADDR(GLbyte, texImage, i, j, k, 1);
+ texel[RCOMP] =
+ texel[GCOMP] =
+ texel[BCOMP] = BYTE_TO_FLOAT_TEX( s );
+ texel[ACOMP] = 1.0F;
+}
+
+#if DIM == 3
+static void store_texel_signed_l8(struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, const void *texel)
+{
+ const GLbyte *rgba = (const GLbyte *) texel;
+ GLbyte *dst = TEXEL_ADDR(GLbyte, texImage, i, j, k, 1);
+ *dst = rgba[RCOMP];
+}
+#endif
+
+
+/* MESA_FORMAT_SIGNED_I8 ***********************************************/
+
+static void FETCH(signed_i8)( const struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, GLfloat *texel )
+{
+ const GLbyte s = *TEXEL_ADDR(GLbyte, texImage, i, j, k, 1);
+ texel[RCOMP] =
+ texel[GCOMP] =
+ texel[BCOMP] =
+ texel[ACOMP] = BYTE_TO_FLOAT_TEX( s );
+}
+
+#if DIM == 3
+static void store_texel_signed_i8(struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, const void *texel)
+{
+ const GLbyte *rgba = (const GLbyte *) texel;
+ GLbyte *dst = TEXEL_ADDR(GLbyte, texImage, i, j, k, 1);
+ *dst = rgba[RCOMP];
+}
+#endif
+
+
+/* MESA_FORMAT_SIGNED_RG88_REV ***********************************************/
+
+static void FETCH(signed_rg88_rev)( const struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, GLfloat *texel )
{
const GLushort s = *TEXEL_ADDR(GLshort, texImage, i, j, k, 1);
- texel[RCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s >> 8) );
- texel[GCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s & 0xff) );
+ texel[RCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s & 0xff) );
+ texel[GCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s >> 8) );
texel[BCOMP] = 0.0F;
texel[ACOMP] = 1.0F;
}
#if DIM == 3
-static void store_texel_signed_rg88(struct gl_texture_image *texImage,
+static void store_texel_signed_rg88_rev(struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, const void *texel)
+{
+ const GLbyte *rg = (const GLbyte *) texel;
+ GLushort *dst = TEXEL_ADDR(GLushort, texImage, i, j, k, 1);
+ dst[0] = PACK_COLOR_88(rg[GCOMP], rg[RCOMP]);
+}
+#endif
+
+
+/* MESA_FORMAT_SIGNED_AL88 ***********************************************/
+
+static void FETCH(signed_al88)( const struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, GLfloat *texel )
+{
+ const GLushort s = *TEXEL_ADDR(GLshort, texImage, i, j, k, 1);
+ texel[RCOMP] =
+ texel[GCOMP] =
+ texel[BCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s & 0xff) );
+ texel[ACOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s >> 8) );
+}
+
+#if DIM == 3
+static void store_texel_signed_al88(struct gl_texture_image *texImage,
GLint i, GLint j, GLint k, const void *texel)
{
const GLbyte *rg = (const GLbyte *) texel;
- GLushort *dst = TEXEL_ADDR(GLushort, texImage, i, j, k, 2);
- *dst = PACK_COLOR_88(rg[RCOMP], rg[GCOMP]);
+ GLushort *dst = TEXEL_ADDR(GLushort, texImage, i, j, k, 1);
+ dst[0] = PACK_COLOR_88(rg[ACOMP], rg[RCOMP]);
}
#endif
@@ -1763,11 +1959,11 @@ static void store_texel_signed_rgba8888_rev(struct gl_texture_image *texImage,
-/* MESA_FORMAT_SIGNED_R_16 ***********************************************/
+/* MESA_FORMAT_SIGNED_R16 ***********************************************/
static void
-FETCH(signed_r_16)(const struct gl_texture_image *texImage,
- GLint i, GLint j, GLint k, GLfloat *texel)
+FETCH(signed_r16)(const struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, GLfloat *texel)
{
const GLshort s = *TEXEL_ADDR(GLshort, texImage, i, j, k, 1);
texel[RCOMP] = SHORT_TO_FLOAT_TEX( s );
@@ -1778,8 +1974,8 @@ FETCH(signed_r_16)(const struct gl_texture_image *texImage,
#if DIM == 3
static void
-store_texel_signed_r_16(struct gl_texture_image *texImage,
- GLint i, GLint j, GLint k, const void *texel)
+store_texel_signed_r16(struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, const void *texel)
{
const GLshort *rgba = (const GLshort *) texel;
GLshort *dst = TEXEL_ADDR(GLshort, texImage, i, j, k, 1);
@@ -1788,10 +1984,85 @@ store_texel_signed_r_16(struct gl_texture_image *texImage,
#endif
-/* MESA_FORMAT_SIGNED_RG_16 ***********************************************/
+/* MESA_FORMAT_SIGNED_A16 ***********************************************/
+
+static void
+FETCH(signed_a16)(const struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, GLfloat *texel)
+{
+ const GLshort s = *TEXEL_ADDR(GLshort, texImage, i, j, k, 1);
+ texel[RCOMP] = 0.0F;
+ texel[GCOMP] = 0.0F;
+ texel[BCOMP] = 0.0F;
+ texel[ACOMP] = SHORT_TO_FLOAT_TEX( s );
+}
+
+#if DIM == 3
+static void
+store_texel_signed_a16(struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, const void *texel)
+{
+ const GLshort *rgba = (const GLshort *) texel;
+ GLshort *dst = TEXEL_ADDR(GLshort, texImage, i, j, k, 1);
+ *dst = rgba[ACOMP];
+}
+#endif
+
+
+/* MESA_FORMAT_SIGNED_L16 ***********************************************/
+
+static void
+FETCH(signed_l16)(const struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, GLfloat *texel)
+{
+ const GLshort s = *TEXEL_ADDR(GLshort, texImage, i, j, k, 1);
+ texel[RCOMP] =
+ texel[GCOMP] =
+ texel[BCOMP] = SHORT_TO_FLOAT_TEX( s );
+ texel[ACOMP] = 1.0F;
+}
+
+#if DIM == 3
+static void
+store_texel_signed_l16(struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, const void *texel)
+{
+ const GLshort *rgba = (const GLshort *) texel;
+ GLshort *dst = TEXEL_ADDR(GLshort, texImage, i, j, k, 1);
+ *dst = rgba[RCOMP];
+}
+#endif
+
+
+/* MESA_FORMAT_SIGNED_I16 ***********************************************/
static void
-FETCH(signed_rg_16)(const struct gl_texture_image *texImage,
+FETCH(signed_i16)(const struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, GLfloat *texel)
+{
+ const GLshort s = *TEXEL_ADDR(GLshort, texImage, i, j, k, 1);
+ texel[RCOMP] =
+ texel[GCOMP] =
+ texel[BCOMP] =
+ texel[ACOMP] = SHORT_TO_FLOAT_TEX( s );
+}
+
+#if DIM == 3
+static void
+store_texel_signed_i16(struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, const void *texel)
+{
+ const GLshort *rgba = (const GLshort *) texel;
+ GLshort *dst = TEXEL_ADDR(GLshort, texImage, i, j, k, 1);
+ *dst = rgba[RCOMP];
+}
+#endif
+
+
+/* MESA_FORMAT_SIGNED_RG1616 ***********************************************/
+
+static void
+FETCH(signed_rg1616)(const struct gl_texture_image *texImage,
GLint i, GLint j, GLint k, GLfloat *texel)
{
const GLshort *s = TEXEL_ADDR(GLshort, texImage, i, j, k, 2);
@@ -1803,7 +2074,7 @@ FETCH(signed_rg_16)(const struct gl_texture_image *texImage,
#if DIM == 3
static void
-store_texel_signed_rg_16(struct gl_texture_image *texImage,
+store_texel_signed_rg1616(struct gl_texture_image *texImage,
GLint i, GLint j, GLint k, const void *texel)
{
const GLshort *rgba = (const GLshort *) texel;
@@ -1814,7 +2085,33 @@ store_texel_signed_rg_16(struct gl_texture_image *texImage,
#endif
-/* MESA_FORMAT_SIGNED_RGBA_16 ***********************************************/
+/* MESA_FORMAT_SIGNED_AL1616 ***********************************************/
+
+static void
+FETCH(signed_al1616)(const struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, GLfloat *texel)
+{
+ const GLshort *s = TEXEL_ADDR(GLshort, texImage, i, j, k, 2);
+ texel[RCOMP] =
+ texel[GCOMP] =
+ texel[BCOMP] = SHORT_TO_FLOAT_TEX( s[0] );
+ texel[ACOMP] = SHORT_TO_FLOAT_TEX( s[1] );
+}
+
+#if DIM == 3
+static void
+store_texel_signed_al1616(struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, const void *texel)
+{
+ const GLshort *rgba = (const GLshort *) texel;
+ GLshort *dst = TEXEL_ADDR(GLshort, texImage, i, j, k, 2);
+ dst[0] = rgba[RCOMP];
+ dst[1] = rgba[ACOMP];
+}
+#endif
+
+
+/* MESA_FORMAT_SIGNED_RGB_16 ***********************************************/
static void
FETCH(signed_rgb_16)(const struct gl_texture_image *texImage,
diff --git a/src/mesa/main/texformat.c b/src/mesa/main/texformat.c
index 5eabf2aa527..c85a7c05030 100644
--- a/src/mesa/main/texformat.c
+++ b/src/mesa/main/texformat.c
@@ -327,36 +327,52 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
switch (internalFormat) {
case GL_ALPHA16F_ARB:
RETURN_IF_SUPPORTED(MESA_FORMAT_ALPHA_FLOAT16);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_ALPHA_FLOAT32);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32);
break;
case GL_ALPHA32F_ARB:
RETURN_IF_SUPPORTED(MESA_FORMAT_ALPHA_FLOAT32);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32);
break;
case GL_LUMINANCE16F_ARB:
RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_FLOAT16);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_FLOAT32);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32);
break;
case GL_LUMINANCE32F_ARB:
RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_FLOAT32);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32);
break;
case GL_LUMINANCE_ALPHA16F_ARB:
RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32);
break;
case GL_LUMINANCE_ALPHA32F_ARB:
RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32);
break;
case GL_INTENSITY16F_ARB:
RETURN_IF_SUPPORTED(MESA_FORMAT_INTENSITY_FLOAT16);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_INTENSITY_FLOAT32);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32);
break;
case GL_INTENSITY32F_ARB:
RETURN_IF_SUPPORTED(MESA_FORMAT_INTENSITY_FLOAT32);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32);
break;
case GL_RGB16F_ARB:
RETURN_IF_SUPPORTED(MESA_FORMAT_RGB_FLOAT16);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_RGB_FLOAT32);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32);
break;
case GL_RGB32F_ARB:
RETURN_IF_SUPPORTED(MESA_FORMAT_RGB_FLOAT32);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32);
break;
case GL_RGBA16F_ARB:
RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32);
break;
case GL_RGBA32F_ARB:
RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32);
@@ -389,19 +405,7 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
}
}
- if (ctx->Extensions.MESA_texture_signed_rgba) {
- switch (internalFormat) {
- case GL_RGBA_SNORM:
- case GL_RGBA8_SNORM:
- RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888);
- RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV);
- break;
- default:
- ; /* fallthrough */
- }
- }
-
- if (ctx->VersionMajor * 10 + ctx->VersionMinor >= 31) {
+ if (ctx->Extensions.EXT_texture_snorm) {
switch (internalFormat) {
case GL_RED_SNORM:
case GL_R8_SNORM:
@@ -409,28 +413,77 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
break;
case GL_RG_SNORM:
case GL_RG8_SNORM:
- RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RG88);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RG88_REV);
break;
case GL_RGB_SNORM:
case GL_RGB8_SNORM:
RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBX8888);
- break;
+ /* FALLTHROUGH */
case GL_RGBA_SNORM:
case GL_RGBA8_SNORM:
RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV);
break;
+ case GL_ALPHA_SNORM:
+ case GL_ALPHA8_SNORM:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_A8);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV);
+ break;
+ case GL_LUMINANCE_SNORM:
+ case GL_LUMINANCE8_SNORM:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_L8);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBX8888);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV);
+ break;
+ case GL_LUMINANCE_ALPHA_SNORM:
+ case GL_LUMINANCE8_ALPHA8_SNORM:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_AL88);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV);
+ break;
+ case GL_INTENSITY_SNORM:
+ case GL_INTENSITY8_SNORM:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_I8);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV);
+ break;
case GL_R16_SNORM:
- RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_R_16);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_R16);
break;
case GL_RG16_SNORM:
- RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RG_16);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_GR1616);
break;
case GL_RGB16_SNORM:
RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGB_16);
- break;
+ /* FALLTHROUGH */
case GL_RGBA16_SNORM:
RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA_16);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV);
break;
+ case GL_ALPHA16_SNORM:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_A16);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA_16);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV);
+ break;
+ case GL_LUMINANCE16_SNORM:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_L16);
+ /* FALLTHROUGH */
+ case GL_LUMINANCE16_ALPHA16_SNORM:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_AL1616);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA_16);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV);
+ break;
+ case GL_INTENSITY16_SNORM:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_I16);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA_16);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV);
+ break;
default:
; /* fall-through */
}
@@ -591,6 +644,32 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
}
}
+ if (ctx->Extensions.ARB_texture_rg && ctx->Extensions.ARB_texture_float) {
+ switch (internalFormat) {
+ case GL_R16F:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_R_FLOAT16);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_R_FLOAT32);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32);
+ break;
+ case GL_R32F:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_R_FLOAT32);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32);
+ break;
+ case GL_RG16F:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_RG_FLOAT16);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_RG_FLOAT32);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32);
+ break;
+ case GL_RG32F:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_RG_FLOAT32);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32);
+ break;
+
+ default:
+ ; /* fallthrough */
+ }
+ }
+
if (ctx->Extensions.EXT_texture_format_BGRA8888) {
switch (internalFormat) {
case GL_BGRA:
diff --git a/src/mesa/main/texgetimage.c b/src/mesa/main/texgetimage.c
index 21d9140c550..7070a29fb9d 100644
--- a/src/mesa/main/texgetimage.c
+++ b/src/mesa/main/texgetimage.c
@@ -74,6 +74,7 @@ get_tex_color_index(struct gl_context *ctx, GLuint dimensions,
const GLint width = texImage->Width;
const GLint height = texImage->Height;
const GLint depth = texImage->Depth;
+ const GLint rowstride = texImage->RowStride;
const GLuint indexBits =
_mesa_get_format_bits(texImage->TexFormat, GL_TEXTURE_INDEX_SIZE_EXT);
const GLbitfield transferOps = 0x0;
@@ -89,14 +90,14 @@ get_tex_color_index(struct gl_context *ctx, GLuint dimensions,
if (indexBits == 8) {
const GLubyte *src = (const GLubyte *) texImage->Data;
- src += width * (img * texImage->Height + row);
+ src += rowstride * (img * height + row);
for (col = 0; col < width; col++) {
indexRow[col] = src[col];
}
}
else if (indexBits == 16) {
const GLushort *src = (const GLushort *) texImage->Data;
- src += width * (img * texImage->Height + row);
+ src += rowstride * (img * height + row);
for (col = 0; col < width; col++) {
indexRow[col] = src[col];
}
@@ -159,6 +160,7 @@ get_tex_depth_stencil(struct gl_context *ctx, GLuint dimensions,
const GLint width = texImage->Width;
const GLint height = texImage->Height;
const GLint depth = texImage->Depth;
+ const GLint rowstride = texImage->RowStride;
const GLuint *src = (const GLuint *) texImage->Data;
GLint img, row;
@@ -172,7 +174,7 @@ get_tex_depth_stencil(struct gl_context *ctx, GLuint dimensions,
_mesa_swap4((GLuint *) dest, width);
}
- src += width * row + width * height * img;
+ src += rowstride;
}
}
}
diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index 2a3037f6189..8fb54c693e0 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -55,9 +55,7 @@
* In particular, we care about pixel transfer state and buffer state
* (such as glReadBuffer to make sure we read from the right renderbuffer).
*/
-#define NEW_COPY_TEX_STATE (_MESA_NEW_TRANSFER_STATE | \
- _NEW_BUFFERS | \
- _NEW_PIXEL)
+#define NEW_COPY_TEX_STATE (_NEW_BUFFERS | _NEW_PIXEL)
@@ -313,11 +311,40 @@ _mesa_base_tex_format( struct gl_context *ctx, GLint internalFormat )
}
}
- if (ctx->Extensions.MESA_texture_signed_rgba) {
+ if (ctx->Extensions.EXT_texture_snorm) {
switch (internalFormat) {
+ case GL_RED_SNORM:
+ case GL_R8_SNORM:
+ case GL_R16_SNORM:
+ return GL_RED;
+ case GL_RG_SNORM:
+ case GL_RG8_SNORM:
+ case GL_RG16_SNORM:
+ return GL_RG;
+ case GL_RGB_SNORM:
+ case GL_RGB8_SNORM:
+ case GL_RGB16_SNORM:
+ return GL_RGB;
case GL_RGBA_SNORM:
case GL_RGBA8_SNORM:
+ case GL_RGBA16_SNORM:
return GL_RGBA;
+ case GL_ALPHA_SNORM:
+ case GL_ALPHA8_SNORM:
+ case GL_ALPHA16_SNORM:
+ return GL_ALPHA;
+ case GL_LUMINANCE_SNORM:
+ case GL_LUMINANCE8_SNORM:
+ case GL_LUMINANCE16_SNORM:
+ return GL_LUMINANCE;
+ case GL_LUMINANCE_ALPHA_SNORM:
+ case GL_LUMINANCE8_ALPHA8_SNORM:
+ case GL_LUMINANCE16_ALPHA16_SNORM:
+ return GL_LUMINANCE_ALPHA;
+ case GL_INTENSITY_SNORM:
+ case GL_INTENSITY8_SNORM:
+ case GL_INTENSITY16_SNORM:
+ return GL_INTENSITY;
default:
; /* fallthrough */
}
@@ -654,8 +681,10 @@ _mesa_delete_texture_image(struct gl_context *ctx,
GLboolean
_mesa_is_proxy_texture(GLenum target)
{
- /* NUM_TEXTURE_TARGETS should match number of terms below */
- assert(NUM_TEXTURE_TARGETS == 7);
+ /* NUM_TEXTURE_TARGETS should match number of terms below,
+ * except there's no proxy for GL_TEXTURE_BUFFER.
+ */
+ assert(NUM_TEXTURE_TARGETS == 8);
return (target == GL_PROXY_TEXTURE_1D ||
target == GL_PROXY_TEXTURE_2D ||
@@ -767,6 +796,9 @@ _mesa_select_tex_object(struct gl_context *ctx,
return arrayTex ? texUnit->CurrentTex[TEXTURE_2D_ARRAY_INDEX] : NULL;
case GL_PROXY_TEXTURE_2D_ARRAY_EXT:
return arrayTex ? ctx->Texture.ProxyTex[TEXTURE_2D_ARRAY_INDEX] : NULL;
+ case GL_TEXTURE_BUFFER:
+ return ctx->Extensions.ARB_texture_buffer_object
+ ? texUnit->CurrentTex[TEXTURE_BUFFER_INDEX] : NULL;
default:
_mesa_problem(NULL, "bad target in _mesa_select_tex_object()");
return NULL;
@@ -954,6 +986,8 @@ _mesa_max_texture_levels(struct gl_context *ctx, GLenum target)
return (ctx->Extensions.MESA_texture_array ||
ctx->Extensions.EXT_texture_array)
? ctx->Const.MaxTextureLevels : 0;
+ case GL_TEXTURE_BUFFER:
+ /* fall-through */
default:
return 0; /* bad target */
}
@@ -990,6 +1024,8 @@ _mesa_get_texture_dimensions(GLenum target)
case GL_TEXTURE_2D_ARRAY:
case GL_PROXY_TEXTURE_2D_ARRAY:
return 3;
+ case GL_TEXTURE_BUFFER:
+ /* fall-through */
default:
_mesa_problem(NULL, "invalid target 0x%x in get_texture_dimensions()",
target);
@@ -2224,7 +2260,7 @@ check_rtt_cb(GLuint key, void *data, void *userData)
att->Texture == texObj &&
att->TextureLevel == level &&
att->CubeMapFace == face) {
- ASSERT(att->Texture->Image[att->CubeMapFace][att->TextureLevel]);
+ ASSERT(_mesa_get_attachment_teximage(att));
/* Tell driver about the new renderbuffer texture */
ctx->Driver.RenderTexture(ctx, ctx->DrawBuffer, att);
/* Mark fb status as indeterminate to force re-validation */
@@ -2434,7 +2470,7 @@ teximage(struct gl_context *ctx, GLuint dims,
return; /* error was recorded */
}
- if (ctx->NewState & _MESA_NEW_TRANSFER_STATE)
+ if (ctx->NewState & _NEW_PIXEL)
_mesa_update_state(ctx);
texObj = _mesa_get_current_tex_object(ctx, target);
@@ -2580,7 +2616,7 @@ _mesa_EGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image)
return;
}
- if (ctx->NewState & _MESA_NEW_TRANSFER_STATE)
+ if (ctx->NewState & _NEW_PIXEL)
_mesa_update_state(ctx);
texObj = _mesa_get_current_tex_object(ctx, target);
@@ -2637,7 +2673,7 @@ texsubimage(struct gl_context *ctx, GLuint dims, GLenum target, GLint level,
return;
}
- if (ctx->NewState & _MESA_NEW_TRANSFER_STATE)
+ if (ctx->NewState & _NEW_PIXEL)
_mesa_update_state(ctx);
if (subtexture_error_check(ctx, dims, target, level, xoffset, yoffset, zoffset,
@@ -2997,6 +3033,7 @@ get_compressed_block_size(GLenum glformat, GLuint *bw, GLuint *bh)
/**
* Error checking for glCompressedTexImage[123]D().
+ * \param reason returns reason for error, if any
* \return error code or GL_NO_ERROR.
*/
static GLenum
@@ -3004,36 +3041,49 @@ compressed_texture_error_check(struct gl_context *ctx, GLint dimensions,
GLenum target, GLint level,
GLenum internalFormat, GLsizei width,
GLsizei height, GLsizei depth, GLint border,
- GLsizei imageSize)
+ GLsizei imageSize, char **reason)
{
const GLenum proxyTarget = get_proxy_target(target);
const GLint maxLevels = _mesa_max_texture_levels(ctx, target);
GLint expectedSize;
+ *reason = ""; /* no error */
+
/* check level */
- if (level < 0 || level >= maxLevels)
+ if (level < 0 || level >= maxLevels) {
+ *reason = "level";
return GL_INVALID_VALUE;
+ }
if (!target_can_be_compressed(ctx, target, internalFormat)) {
+ *reason = "target";
return GL_INVALID_ENUM;
}
/* This will detect any invalid internalFormat value */
- if (!_mesa_is_compressed_format(ctx, internalFormat))
+ if (!_mesa_is_compressed_format(ctx, internalFormat)) {
+ *reason = "internalFormat";
return GL_INVALID_ENUM;
+ }
/* This should really never fail */
- if (_mesa_base_tex_format(ctx, internalFormat) < 0)
+ if (_mesa_base_tex_format(ctx, internalFormat) < 0) {
+ *reason = "internalFormat";
return GL_INVALID_ENUM;
+ }
/* No compressed formats support borders at this time */
- if (border != 0)
+ if (border != 0) {
+ *reason = "border != 0";
return GL_INVALID_VALUE;
+ }
/* For cube map, width must equal height */
if (target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB &&
- target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB && width != height)
+ target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB && width != height) {
+ *reason = "width != height";
return GL_INVALID_VALUE;
+ }
/* check image size against compression block size */
{
@@ -3050,6 +3100,7 @@ compressed_texture_error_check(struct gl_context *ctx, GLint dimensions,
* generated [...] if any parameter combinations are not
* supported by the specific compressed internal format.
*/
+ *reason = "invalid width or height for compression format";
return GL_INVALID_OPERATION;
}
}
@@ -3059,6 +3110,7 @@ compressed_texture_error_check(struct gl_context *ctx, GLint dimensions,
internalFormat, GL_NONE, GL_NONE,
width, height, depth, border)) {
/* See error comment above */
+ *reason = "invalid width, height or format";
return GL_INVALID_OPERATION;
}
@@ -3069,6 +3121,7 @@ compressed_texture_error_check(struct gl_context *ctx, GLint dimensions,
* if <imageSize> is not consistent with the format, dimensions, and
* contents of the specified image.
*/
+ *reason = "imageSize inconsistant with width/height/format";
return GL_INVALID_VALUE;
}
@@ -3223,6 +3276,7 @@ compressedteximage(struct gl_context *ctx, GLuint dims,
GLsizei imageSize, const GLvoid *data)
{
GLenum error;
+ char *reason = "";
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
@@ -3243,15 +3297,15 @@ compressedteximage(struct gl_context *ctx, GLuint dims,
error = compressed_texture_error_check(ctx, dims, target, level,
internalFormat, width, height, depth,
- border, imageSize);
+ border, imageSize, &reason);
-#if FEATURE_ES
- /* XXX this is kind of a hack */
if (error) {
- _mesa_error(ctx, error, "glTexImage2D");
+ _mesa_error(ctx, error, "glTexImage2D(%s)", reason);
return;
}
+#if FEATURE_ES
+ /* XXX this is kind of a hack */
if (dims == 2) {
switch (internalFormat) {
case GL_PALETTE4_RGB8_OES:
@@ -3524,3 +3578,272 @@ _mesa_CompressedTexSubImage3DARB(GLenum target, GLint level, GLint xoffset,
compressed_tex_sub_image(3, target, level, xoffset, yoffset, zoffset,
width, height, depth, format, imageSize, data);
}
+
+
+/**
+ * Helper for glTexBuffer(). Check if internalFormat is legal. If so,
+ * return the basic data type and number of components for the format.
+ * \param return GL_TRUE if internalFormat is legal, GL_FALSE otherwise
+ */
+static GLboolean
+get_sized_format_info(const struct gl_context *ctx, GLenum internalFormat,
+ GLenum *datatype, GLuint *components)
+{
+ switch (internalFormat) {
+ case GL_ALPHA8:
+ *datatype = GL_UNSIGNED_BYTE;
+ *components = 1;
+ break;
+ case GL_ALPHA16:
+ *datatype = GL_UNSIGNED_SHORT;
+ *components = 1;
+ break;
+ case GL_ALPHA16F_ARB:
+ *datatype = GL_HALF_FLOAT;
+ *components = 1;
+ break;
+ case GL_ALPHA32F_ARB:
+ *datatype = GL_FLOAT;
+ *components = 1;
+ break;
+ case GL_ALPHA8I_EXT:
+ *datatype = GL_BYTE;
+ *components = 1;
+ break;
+ case GL_ALPHA16I_EXT:
+ *datatype = GL_SHORT;
+ *components = 1;
+ break;
+ case GL_ALPHA32I_EXT:
+ *datatype = GL_INT;
+ *components = 1;
+ break;
+ case GL_ALPHA8UI_EXT:
+ *datatype = GL_UNSIGNED_BYTE;
+ *components = 1;
+ break;
+ case GL_ALPHA16UI_EXT:
+ *datatype = GL_UNSIGNED_SHORT;
+ *components = 1;
+ break;
+ case GL_ALPHA32UI_EXT:
+ *datatype = GL_UNSIGNED_INT;
+ *components = 1;
+ break;
+ case GL_LUMINANCE8:
+ *datatype = GL_UNSIGNED_BYTE;
+ *components = 1;
+ break;
+ case GL_LUMINANCE16:
+ *datatype = GL_UNSIGNED_SHORT;
+ *components = 1;
+ break;
+ case GL_LUMINANCE16F_ARB:
+ *datatype = GL_HALF_FLOAT;
+ *components = 1;
+ break;
+ case GL_LUMINANCE32F_ARB:
+ *datatype = GL_FLOAT;
+ *components = 1;
+ break;
+ case GL_LUMINANCE8I_EXT:
+ *datatype = GL_BYTE;
+ *components = 1;
+ break;
+ case GL_LUMINANCE16I_EXT:
+ *datatype = GL_SHORT;
+ *components = 1;
+ break;
+ case GL_LUMINANCE32I_EXT:
+ *datatype = GL_INT;
+ *components = 1;
+ break;
+ case GL_LUMINANCE8UI_EXT:
+ *datatype = GL_UNSIGNED_BYTE;
+ *components = 1;
+ break;
+ case GL_LUMINANCE16UI_EXT:
+ *datatype = GL_UNSIGNED_SHORT;
+ *components = 1;
+ break;
+ case GL_LUMINANCE32UI_EXT:
+ *datatype = GL_UNSIGNED_INT;
+ *components = 1;
+ break;
+ case GL_LUMINANCE8_ALPHA8:
+ *datatype = GL_UNSIGNED_BYTE;
+ *components = 2;
+ break;
+ case GL_LUMINANCE16_ALPHA16:
+ *datatype = GL_UNSIGNED_SHORT;
+ *components = 2;
+ break;
+ case GL_LUMINANCE_ALPHA16F_ARB:
+ *datatype = GL_HALF_FLOAT;
+ *components = 2;
+ break;
+ case GL_LUMINANCE_ALPHA32F_ARB:
+ *datatype = GL_FLOAT;
+ *components = 2;
+ break;
+ case GL_LUMINANCE_ALPHA8I_EXT:
+ *datatype = GL_BYTE;
+ *components = 2;
+ break;
+ case GL_LUMINANCE_ALPHA16I_EXT:
+ *datatype = GL_SHORT;
+ *components = 2;
+ break;
+ case GL_LUMINANCE_ALPHA32I_EXT:
+ *datatype = GL_INT;
+ *components = 2;
+ break;
+ case GL_LUMINANCE_ALPHA8UI_EXT:
+ *datatype = GL_UNSIGNED_BYTE;
+ *components = 2;
+ break;
+ case GL_LUMINANCE_ALPHA16UI_EXT:
+ *datatype = GL_UNSIGNED_SHORT;
+ *components = 2;
+ break;
+ case GL_LUMINANCE_ALPHA32UI_EXT:
+ *datatype = GL_UNSIGNED_INT;
+ *components = 2;
+ break;
+ case GL_INTENSITY8:
+ *datatype = GL_UNSIGNED_BYTE;
+ *components = 1;
+ break;
+ case GL_INTENSITY16:
+ *datatype = GL_UNSIGNED_SHORT;
+ *components = 1;
+ break;
+ case GL_INTENSITY16F_ARB:
+ *datatype = GL_HALF_FLOAT;
+ *components = 1;
+ break;
+ case GL_INTENSITY32F_ARB:
+ *datatype = GL_FLOAT;
+ *components = 1;
+ break;
+ case GL_INTENSITY8I_EXT:
+ *datatype = GL_BYTE;
+ *components = 1;
+ break;
+ case GL_INTENSITY16I_EXT:
+ *datatype = GL_SHORT;
+ *components = 1;
+ break;
+ case GL_INTENSITY32I_EXT:
+ *datatype = GL_INT;
+ *components = 1;
+ break;
+ case GL_INTENSITY8UI_EXT:
+ *datatype = GL_UNSIGNED_BYTE;
+ *components = 1;
+ break;
+ case GL_INTENSITY16UI_EXT:
+ *datatype = GL_UNSIGNED_SHORT;
+ *components = 1;
+ break;
+ case GL_INTENSITY32UI_EXT:
+ *datatype = GL_UNSIGNED_INT;
+ *components = 1;
+ break;
+ case GL_RGBA8:
+ *datatype = GL_UNSIGNED_BYTE;
+ *components = 4;
+ break;
+ case GL_RGBA16:
+ *datatype = GL_UNSIGNED_SHORT;
+ *components = 4;
+ break;
+ case GL_RGBA16F_ARB:
+ *datatype = GL_HALF_FLOAT;
+ *components = 4;
+ break;
+ case GL_RGBA32F_ARB:
+ *datatype = GL_FLOAT;
+ *components = 4;
+ break;
+ case GL_RGBA8I_EXT:
+ *datatype = GL_BYTE;
+ *components = 4;
+ break;
+ case GL_RGBA16I_EXT:
+ *datatype = GL_SHORT;
+ *components = 4;
+ break;
+ case GL_RGBA32I_EXT:
+ *datatype = GL_INT;
+ *components = 4;
+ break;
+ case GL_RGBA8UI_EXT:
+ *datatype = GL_UNSIGNED_BYTE;
+ *components = 4;
+ break;
+ case GL_RGBA16UI_EXT:
+ *datatype = GL_UNSIGNED_SHORT;
+ *components = 4;
+ break;
+ case GL_RGBA32UI_EXT:
+ *datatype = GL_UNSIGNED_INT;
+ *components = 4;
+ break;
+ default:
+ return GL_FALSE;
+ }
+
+ if (*datatype == GL_FLOAT && !ctx->Extensions.ARB_texture_float)
+ return GL_FALSE;
+
+ if (*datatype == GL_HALF_FLOAT && !ctx->Extensions.ARB_half_float_pixel)
+ return GL_FALSE;
+
+ return GL_TRUE;
+}
+
+
+/** GL_ARB_texture_buffer_object */
+void GLAPIENTRY
+_mesa_TexBuffer(GLenum target, GLenum internalFormat, GLuint buffer)
+{
+ struct gl_texture_object *texObj;
+ struct gl_buffer_object *bufObj;
+ GLenum dataType;
+ GLuint comps;
+
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
+
+ if (!ctx->Extensions.ARB_texture_buffer_object) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glTexBuffer");
+ return;
+ }
+
+ if (target != GL_TEXTURE_BUFFER_ARB) {
+ _mesa_error(ctx, GL_INVALID_ENUM, "glTexBuffer(target)");
+ return;
+ }
+
+ if (!get_sized_format_info(ctx, internalFormat, &dataType, &comps)) {
+ _mesa_error(ctx, GL_INVALID_ENUM, "glTexBuffer(internalFormat 0x%x)",
+ internalFormat);
+ return;
+ }
+
+ bufObj = _mesa_lookup_bufferobj(ctx, buffer);
+ if (buffer && !bufObj) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glTexBuffer(buffer %u)", buffer);
+ return;
+ }
+
+ texObj = _mesa_get_current_tex_object(ctx, target);
+
+ _mesa_lock_texture(ctx, texObj);
+ {
+ _mesa_reference_buffer_object(ctx, &texObj->BufferObject, bufObj);
+ texObj->BufferObjectFormat = internalFormat;
+ }
+ _mesa_unlock_texture(ctx, texObj);
+}
diff --git a/src/mesa/main/teximage.h b/src/mesa/main/teximage.h
index bb5509e5be6..19abc649898 100644
--- a/src/mesa/main/teximage.h
+++ b/src/mesa/main/teximage.h
@@ -59,7 +59,8 @@ _mesa_new_texture_image( struct gl_context *ctx );
extern void
-_mesa_delete_texture_image( struct gl_context *ctx, struct gl_texture_image *teximage );
+_mesa_delete_texture_image( struct gl_context *ctx,
+ struct gl_texture_image *teximage );
extern void
_mesa_free_texture_image_data( struct gl_context *ctx,
@@ -82,7 +83,8 @@ _mesa_choose_texture_format(struct gl_context *ctx,
extern void
-_mesa_clear_texture_image(struct gl_context *ctx, struct gl_texture_image *texImage);
+_mesa_clear_texture_image(struct gl_context *ctx,
+ struct gl_texture_image *texImage);
extern void
@@ -92,7 +94,8 @@ _mesa_set_tex_image(struct gl_texture_object *tObj,
extern struct gl_texture_object *
-_mesa_select_tex_object(struct gl_context *ctx, const struct gl_texture_unit *texUnit,
+_mesa_select_tex_object(struct gl_context *ctx,
+ const struct gl_texture_unit *texUnit,
GLenum target);
extern struct gl_texture_object *
@@ -100,7 +103,8 @@ _mesa_get_current_tex_object(struct gl_context *ctx, GLenum target);
extern struct gl_texture_image *
-_mesa_select_tex_image(struct gl_context *ctx, const struct gl_texture_object *texObj,
+_mesa_select_tex_image(struct gl_context *ctx,
+ const struct gl_texture_object *texObj,
GLenum target, GLint level);
@@ -271,6 +275,11 @@ _mesa_CompressedTexSubImage3DARB(GLenum target, GLint level, GLint xoffset,
GLsizei height, GLsizei depth, GLenum format,
GLsizei imageSize, const GLvoid *data);
+
+extern void GLAPIENTRY
+_mesa_TexBuffer(GLenum target, GLenum internalFormat, GLuint buffer);
+
+
/*@}*/
#endif
diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c
index c1e3e4dec79..43d6e52dfe9 100644
--- a/src/mesa/main/texobj.c
+++ b/src/mesa/main/texobj.c
@@ -29,6 +29,7 @@
#include "mfeatures.h"
+#include "bufferobj.h"
#include "colortab.h"
#include "context.h"
#include "enums.h"
@@ -105,7 +106,8 @@ _mesa_initialize_texture_object( struct gl_texture_object *obj,
target == GL_TEXTURE_CUBE_MAP_ARB ||
target == GL_TEXTURE_RECTANGLE_NV ||
target == GL_TEXTURE_1D_ARRAY_EXT ||
- target == GL_TEXTURE_2D_ARRAY_EXT);
+ target == GL_TEXTURE_2D_ARRAY_EXT ||
+ target == GL_TEXTURE_BUFFER);
memset(obj, 0, sizeof(*obj));
/* init the non-zero fields */
@@ -114,35 +116,37 @@ _mesa_initialize_texture_object( struct gl_texture_object *obj,
obj->Name = name;
obj->Target = target;
obj->Priority = 1.0F;
+ obj->BaseLevel = 0;
+ obj->MaxLevel = 1000;
+
+ /* sampler state */
if (target == GL_TEXTURE_RECTANGLE_NV) {
- obj->WrapS = GL_CLAMP_TO_EDGE;
- obj->WrapT = GL_CLAMP_TO_EDGE;
- obj->WrapR = GL_CLAMP_TO_EDGE;
- obj->MinFilter = GL_LINEAR;
+ obj->Sampler.WrapS = GL_CLAMP_TO_EDGE;
+ obj->Sampler.WrapT = GL_CLAMP_TO_EDGE;
+ obj->Sampler.WrapR = GL_CLAMP_TO_EDGE;
+ obj->Sampler.MinFilter = GL_LINEAR;
}
else {
- obj->WrapS = GL_REPEAT;
- obj->WrapT = GL_REPEAT;
- obj->WrapR = GL_REPEAT;
- obj->MinFilter = GL_NEAREST_MIPMAP_LINEAR;
+ obj->Sampler.WrapS = GL_REPEAT;
+ obj->Sampler.WrapT = GL_REPEAT;
+ obj->Sampler.WrapR = GL_REPEAT;
+ obj->Sampler.MinFilter = GL_NEAREST_MIPMAP_LINEAR;
}
- obj->MagFilter = GL_LINEAR;
- obj->MinLod = -1000.0;
- obj->MaxLod = 1000.0;
- obj->LodBias = 0.0;
- obj->BaseLevel = 0;
- obj->MaxLevel = 1000;
- obj->MaxAnisotropy = 1.0;
- obj->CompareMode = GL_NONE; /* ARB_shadow */
- obj->CompareFunc = GL_LEQUAL; /* ARB_shadow */
- obj->CompareFailValue = 0.0F; /* ARB_shadow_ambient */
- obj->DepthMode = GL_LUMINANCE; /* ARB_depth_texture */
+ obj->Sampler.MagFilter = GL_LINEAR;
+ obj->Sampler.MinLod = -1000.0;
+ obj->Sampler.MaxLod = 1000.0;
+ obj->Sampler.LodBias = 0.0;
+ obj->Sampler.MaxAnisotropy = 1.0;
+ obj->Sampler.CompareMode = GL_NONE; /* ARB_shadow */
+ obj->Sampler.CompareFunc = GL_LEQUAL; /* ARB_shadow */
+ obj->Sampler.CompareFailValue = 0.0F; /* ARB_shadow_ambient */
+ obj->Sampler.DepthMode = GL_LUMINANCE; /* ARB_depth_texture */
obj->Swizzle[0] = GL_RED;
obj->Swizzle[1] = GL_GREEN;
obj->Swizzle[2] = GL_BLUE;
obj->Swizzle[3] = GL_ALPHA;
obj->_Swizzle = SWIZZLE_NOOP;
- obj->sRGBDecode = GL_DECODE_EXT;
+ obj->Sampler.sRGBDecode = GL_DECODE_EXT;
}
@@ -158,10 +162,10 @@ finish_texture_init(struct gl_context *ctx, GLenum target,
if (target == GL_TEXTURE_RECTANGLE_NV) {
/* have to init wrap and filter state here - kind of klunky */
- obj->WrapS = GL_CLAMP_TO_EDGE;
- obj->WrapT = GL_CLAMP_TO_EDGE;
- obj->WrapR = GL_CLAMP_TO_EDGE;
- obj->MinFilter = GL_LINEAR;
+ obj->Sampler.WrapS = GL_CLAMP_TO_EDGE;
+ obj->Sampler.WrapT = GL_CLAMP_TO_EDGE;
+ obj->Sampler.WrapR = GL_CLAMP_TO_EDGE;
+ obj->Sampler.MinFilter = GL_LINEAR;
if (ctx->Driver.TexParameter) {
static const GLfloat fparam_wrap[1] = {(GLfloat) GL_CLAMP_TO_EDGE};
static const GLfloat fparam_filter[1] = {(GLfloat) GL_LINEAR};
@@ -204,6 +208,8 @@ _mesa_delete_texture_object(struct gl_context *ctx,
}
}
+ _mesa_reference_buffer_object(ctx, &texObj->BufferObject, NULL);
+
/* destroy the mutex -- it may have allocated memory (eg on bsd) */
_glthread_DESTROY_MUTEX(texObj->Mutex);
@@ -227,25 +233,25 @@ _mesa_copy_texture_object( struct gl_texture_object *dest,
dest->Target = src->Target;
dest->Name = src->Name;
dest->Priority = src->Priority;
- dest->BorderColor.f[0] = src->BorderColor.f[0];
- dest->BorderColor.f[1] = src->BorderColor.f[1];
- dest->BorderColor.f[2] = src->BorderColor.f[2];
- dest->BorderColor.f[3] = src->BorderColor.f[3];
- dest->WrapS = src->WrapS;
- dest->WrapT = src->WrapT;
- dest->WrapR = src->WrapR;
- dest->MinFilter = src->MinFilter;
- dest->MagFilter = src->MagFilter;
- dest->MinLod = src->MinLod;
- dest->MaxLod = src->MaxLod;
- dest->LodBias = src->LodBias;
+ dest->Sampler.BorderColor.f[0] = src->Sampler.BorderColor.f[0];
+ dest->Sampler.BorderColor.f[1] = src->Sampler.BorderColor.f[1];
+ dest->Sampler.BorderColor.f[2] = src->Sampler.BorderColor.f[2];
+ dest->Sampler.BorderColor.f[3] = src->Sampler.BorderColor.f[3];
+ dest->Sampler.WrapS = src->Sampler.WrapS;
+ dest->Sampler.WrapT = src->Sampler.WrapT;
+ dest->Sampler.WrapR = src->Sampler.WrapR;
+ dest->Sampler.MinFilter = src->Sampler.MinFilter;
+ dest->Sampler.MagFilter = src->Sampler.MagFilter;
+ dest->Sampler.MinLod = src->Sampler.MinLod;
+ dest->Sampler.MaxLod = src->Sampler.MaxLod;
+ dest->Sampler.LodBias = src->Sampler.LodBias;
dest->BaseLevel = src->BaseLevel;
dest->MaxLevel = src->MaxLevel;
- dest->MaxAnisotropy = src->MaxAnisotropy;
- dest->CompareMode = src->CompareMode;
- dest->CompareFunc = src->CompareFunc;
- dest->CompareFailValue = src->CompareFailValue;
- dest->DepthMode = src->DepthMode;
+ dest->Sampler.MaxAnisotropy = src->Sampler.MaxAnisotropy;
+ dest->Sampler.CompareMode = src->Sampler.CompareMode;
+ dest->Sampler.CompareFunc = src->Sampler.CompareFunc;
+ dest->Sampler.CompareFailValue = src->Sampler.CompareFailValue;
+ dest->Sampler.DepthMode = src->Sampler.DepthMode;
dest->_MaxLevel = src->_MaxLevel;
dest->_MaxLambda = src->_MaxLambda;
dest->GenerateMipmap = src->GenerateMipmap;
@@ -299,6 +305,7 @@ valid_texture_object(const struct gl_texture_object *tex)
case GL_TEXTURE_RECTANGLE_NV:
case GL_TEXTURE_1D_ARRAY_EXT:
case GL_TEXTURE_2D_ARRAY_EXT:
+ case GL_TEXTURE_BUFFER:
return GL_TRUE;
case 0x99:
_mesa_problem(NULL, "invalid reference to a deleted texture object");
@@ -501,7 +508,7 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx,
}
/* extra checking for mipmaps */
- if (t->MinFilter != GL_NEAREST && t->MinFilter != GL_LINEAR) {
+ if (t->Sampler.MinFilter != GL_NEAREST && t->Sampler.MinFilter != GL_LINEAR) {
/*
* Mipmapping: determine if we have a complete set of mipmaps
*/
@@ -756,8 +763,8 @@ _mesa_get_fallback_texture(struct gl_context *ctx)
/* create texture object */
texObj = ctx->Driver.NewTextureObject(ctx, 0, GL_TEXTURE_2D);
assert(texObj->RefCount == 1);
- texObj->MinFilter = GL_NEAREST;
- texObj->MagFilter = GL_NEAREST;
+ texObj->Sampler.MinFilter = GL_NEAREST;
+ texObj->Sampler.MagFilter = GL_NEAREST;
/* create level[0] texture image */
texImage = _mesa_get_tex_image(ctx, texObj, GL_TEXTURE_2D, 0);
@@ -989,6 +996,8 @@ target_enum_to_index(GLenum target)
return TEXTURE_1D_ARRAY_INDEX;
case GL_TEXTURE_2D_ARRAY_EXT:
return TEXTURE_2D_ARRAY_INDEX;
+ case GL_TEXTURE_BUFFER_ARB:
+ return TEXTURE_BUFFER_INDEX;
default:
return -1;
}
diff --git a/src/mesa/main/texobj.h b/src/mesa/main/texobj.h
index 2461b063efd..476a17537a3 100644
--- a/src/mesa/main/texobj.h
+++ b/src/mesa/main/texobj.h
@@ -52,14 +52,16 @@ _mesa_initialize_texture_object( struct gl_texture_object *obj,
GLuint name, GLenum target );
extern void
-_mesa_delete_texture_object( struct gl_context *ctx, struct gl_texture_object *obj );
+_mesa_delete_texture_object( struct gl_context *ctx,
+ struct gl_texture_object *obj );
extern void
_mesa_copy_texture_object( struct gl_texture_object *dest,
const struct gl_texture_object *src );
extern void
-_mesa_clear_texture_object(struct gl_context *ctx, struct gl_texture_object *obj);
+_mesa_clear_texture_object(struct gl_context *ctx,
+ struct gl_texture_object *obj);
extern void
_mesa_reference_texobj(struct gl_texture_object **ptr,
diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c
index 6e14face4dd..3d56dac3f91 100644
--- a/src/mesa/main/texparam.c
+++ b/src/mesa/main/texparam.c
@@ -38,6 +38,7 @@
#include "main/macros.h"
#include "main/mfeatures.h"
#include "main/mtypes.h"
+#include "main/state.h"
#include "main/texcompress.h"
#include "main/texparam.h"
#include "main/teximage.h"
@@ -215,13 +216,13 @@ set_tex_parameteri(struct gl_context *ctx,
{
switch (pname) {
case GL_TEXTURE_MIN_FILTER:
- if (texObj->MinFilter == params[0])
+ if (texObj->Sampler.MinFilter == params[0])
return GL_FALSE;
switch (params[0]) {
case GL_NEAREST:
case GL_LINEAR:
incomplete(ctx, texObj);
- texObj->MinFilter = params[0];
+ texObj->Sampler.MinFilter = params[0];
return GL_TRUE;
case GL_NEAREST_MIPMAP_NEAREST:
case GL_LINEAR_MIPMAP_NEAREST:
@@ -229,7 +230,7 @@ set_tex_parameteri(struct gl_context *ctx,
case GL_LINEAR_MIPMAP_LINEAR:
if (texObj->Target != GL_TEXTURE_RECTANGLE_NV) {
incomplete(ctx, texObj);
- texObj->MinFilter = params[0];
+ texObj->Sampler.MinFilter = params[0];
return GL_TRUE;
}
/* fall-through */
@@ -239,13 +240,13 @@ set_tex_parameteri(struct gl_context *ctx,
return GL_FALSE;
case GL_TEXTURE_MAG_FILTER:
- if (texObj->MagFilter == params[0])
+ if (texObj->Sampler.MagFilter == params[0])
return GL_FALSE;
switch (params[0]) {
case GL_NEAREST:
case GL_LINEAR:
flush(ctx); /* does not effect completeness */
- texObj->MagFilter = params[0];
+ texObj->Sampler.MagFilter = params[0];
return GL_TRUE;
default:
goto invalid_param;
@@ -253,31 +254,31 @@ set_tex_parameteri(struct gl_context *ctx,
return GL_FALSE;
case GL_TEXTURE_WRAP_S:
- if (texObj->WrapS == params[0])
+ if (texObj->Sampler.WrapS == params[0])
return GL_FALSE;
if (validate_texture_wrap_mode(ctx, texObj->Target, params[0])) {
flush(ctx);
- texObj->WrapS = params[0];
+ texObj->Sampler.WrapS = params[0];
return GL_TRUE;
}
return GL_FALSE;
case GL_TEXTURE_WRAP_T:
- if (texObj->WrapT == params[0])
+ if (texObj->Sampler.WrapT == params[0])
return GL_FALSE;
if (validate_texture_wrap_mode(ctx, texObj->Target, params[0])) {
flush(ctx);
- texObj->WrapT = params[0];
+ texObj->Sampler.WrapT = params[0];
return GL_TRUE;
}
return GL_FALSE;
case GL_TEXTURE_WRAP_R:
- if (texObj->WrapR == params[0])
+ if (texObj->Sampler.WrapR == params[0])
return GL_FALSE;
if (validate_texture_wrap_mode(ctx, texObj->Target, params[0])) {
flush(ctx);
- texObj->WrapR = params[0];
+ texObj->Sampler.WrapR = params[0];
return GL_TRUE;
}
return GL_FALSE;
@@ -317,12 +318,12 @@ set_tex_parameteri(struct gl_context *ctx,
case GL_TEXTURE_COMPARE_MODE_ARB:
if (ctx->Extensions.ARB_shadow) {
- if (texObj->CompareMode == params[0])
+ if (texObj->Sampler.CompareMode == params[0])
return GL_FALSE;
if (params[0] == GL_NONE ||
params[0] == GL_COMPARE_R_TO_TEXTURE_ARB) {
flush(ctx);
- texObj->CompareMode = params[0];
+ texObj->Sampler.CompareMode = params[0];
return GL_TRUE;
}
goto invalid_param;
@@ -331,13 +332,13 @@ set_tex_parameteri(struct gl_context *ctx,
case GL_TEXTURE_COMPARE_FUNC_ARB:
if (ctx->Extensions.ARB_shadow) {
- if (texObj->CompareFunc == params[0])
+ if (texObj->Sampler.CompareFunc == params[0])
return GL_FALSE;
switch (params[0]) {
case GL_LEQUAL:
case GL_GEQUAL:
flush(ctx);
- texObj->CompareFunc = params[0];
+ texObj->Sampler.CompareFunc = params[0];
return GL_TRUE;
case GL_EQUAL:
case GL_NOTEQUAL:
@@ -347,7 +348,7 @@ set_tex_parameteri(struct gl_context *ctx,
case GL_NEVER:
if (ctx->Extensions.EXT_shadow_funcs) {
flush(ctx);
- texObj->CompareFunc = params[0];
+ texObj->Sampler.CompareFunc = params[0];
return GL_TRUE;
}
/* fall-through */
@@ -359,14 +360,14 @@ set_tex_parameteri(struct gl_context *ctx,
case GL_DEPTH_TEXTURE_MODE_ARB:
if (ctx->Extensions.ARB_depth_texture) {
- if (texObj->DepthMode == params[0])
+ if (texObj->Sampler.DepthMode == params[0])
return GL_FALSE;
if (params[0] == GL_LUMINANCE ||
params[0] == GL_INTENSITY ||
params[0] == GL_ALPHA ||
(ctx->Extensions.ARB_texture_rg && params[0] == GL_RED)) {
flush(ctx);
- texObj->DepthMode = params[0];
+ texObj->Sampler.DepthMode = params[0];
return GL_TRUE;
}
goto invalid_param;
@@ -428,9 +429,9 @@ set_tex_parameteri(struct gl_context *ctx,
if (ctx->Extensions.EXT_texture_sRGB_decode) {
GLenum decode = params[0];
if (decode == GL_DECODE_EXT || decode == GL_SKIP_DECODE_EXT) {
- if (texObj->sRGBDecode != decode) {
+ if (texObj->Sampler.sRGBDecode != decode) {
flush(ctx);
- texObj->sRGBDecode = decode;
+ texObj->Sampler.sRGBDecode = decode;
_mesa_update_fetch_functions(texObj);
}
return GL_TRUE;
@@ -465,17 +466,17 @@ set_tex_parameterf(struct gl_context *ctx,
{
switch (pname) {
case GL_TEXTURE_MIN_LOD:
- if (texObj->MinLod == params[0])
+ if (texObj->Sampler.MinLod == params[0])
return GL_FALSE;
flush(ctx);
- texObj->MinLod = params[0];
+ texObj->Sampler.MinLod = params[0];
return GL_TRUE;
case GL_TEXTURE_MAX_LOD:
- if (texObj->MaxLod == params[0])
+ if (texObj->Sampler.MaxLod == params[0])
return GL_FALSE;
flush(ctx);
- texObj->MaxLod = params[0];
+ texObj->Sampler.MaxLod = params[0];
return GL_TRUE;
case GL_TEXTURE_PRIORITY:
@@ -485,7 +486,7 @@ set_tex_parameterf(struct gl_context *ctx,
case GL_TEXTURE_MAX_ANISOTROPY_EXT:
if (ctx->Extensions.EXT_texture_filter_anisotropic) {
- if (texObj->MaxAnisotropy == params[0])
+ if (texObj->Sampler.MaxAnisotropy == params[0])
return GL_FALSE;
if (params[0] < 1.0) {
_mesa_error(ctx, GL_INVALID_VALUE, "glTexParameter(param)" );
@@ -493,7 +494,7 @@ set_tex_parameterf(struct gl_context *ctx,
}
flush(ctx);
/* clamp to max, that's what NVIDIA does */
- texObj->MaxAnisotropy = MIN2(params[0],
+ texObj->Sampler.MaxAnisotropy = MIN2(params[0],
ctx->Const.MaxTextureMaxAnisotropy);
return GL_TRUE;
}
@@ -507,9 +508,9 @@ set_tex_parameterf(struct gl_context *ctx,
case GL_TEXTURE_COMPARE_FAIL_VALUE_ARB:
if (ctx->Extensions.ARB_shadow_ambient) {
- if (texObj->CompareFailValue != params[0]) {
+ if (texObj->Sampler.CompareFailValue != params[0]) {
flush(ctx);
- texObj->CompareFailValue = CLAMP(params[0], 0.0F, 1.0F);
+ texObj->Sampler.CompareFailValue = CLAMP(params[0], 0.0F, 1.0F);
return GL_TRUE;
}
}
@@ -522,9 +523,9 @@ set_tex_parameterf(struct gl_context *ctx,
case GL_TEXTURE_LOD_BIAS:
/* NOTE: this is really part of OpenGL 1.4, not EXT_texture_lod_bias */
if (ctx->Extensions.EXT_texture_lod_bias) {
- if (texObj->LodBias != params[0]) {
+ if (texObj->Sampler.LodBias != params[0]) {
flush(ctx);
- texObj->LodBias = params[0];
+ texObj->Sampler.LodBias = params[0];
return GL_TRUE;
}
return GL_FALSE;
@@ -533,10 +534,18 @@ set_tex_parameterf(struct gl_context *ctx,
case GL_TEXTURE_BORDER_COLOR:
flush(ctx);
- texObj->BorderColor.f[RCOMP] = params[0];
- texObj->BorderColor.f[GCOMP] = params[1];
- texObj->BorderColor.f[BCOMP] = params[2];
- texObj->BorderColor.f[ACOMP] = params[3];
+ /* ARB_texture_float disables clamping */
+ if (ctx->Extensions.ARB_texture_float) {
+ texObj->Sampler.BorderColor.f[RCOMP] = params[0];
+ texObj->Sampler.BorderColor.f[GCOMP] = params[1];
+ texObj->Sampler.BorderColor.f[BCOMP] = params[2];
+ texObj->Sampler.BorderColor.f[ACOMP] = params[3];
+ } else {
+ texObj->Sampler.BorderColor.f[RCOMP] = CLAMP(params[0], 0.0F, 1.0F);
+ texObj->Sampler.BorderColor.f[GCOMP] = CLAMP(params[1], 0.0F, 1.0F);
+ texObj->Sampler.BorderColor.f[BCOMP] = CLAMP(params[2], 0.0F, 1.0F);
+ texObj->Sampler.BorderColor.f[ACOMP] = CLAMP(params[3], 0.0F, 1.0F);
+ }
return GL_TRUE;
default:
@@ -775,7 +784,7 @@ _mesa_TexParameterIiv(GLenum target, GLenum pname, const GLint *params)
case GL_TEXTURE_BORDER_COLOR:
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
/* set the integer-valued border color */
- COPY_4V(texObj->BorderColor.i, params);
+ COPY_4V(texObj->Sampler.BorderColor.i, params);
break;
default:
_mesa_TexParameteriv(target, pname, params);
@@ -805,7 +814,7 @@ _mesa_TexParameterIuiv(GLenum target, GLenum pname, const GLuint *params)
case GL_TEXTURE_BORDER_COLOR:
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
/* set the unsigned integer-valued border color */
- COPY_4V(texObj->BorderColor.ui, params);
+ COPY_4V(texObj->Sampler.BorderColor.ui, params);
break;
default:
_mesa_TexParameteriv(target, pname, (const GLint *) params);
@@ -1092,25 +1101,37 @@ _mesa_GetTexParameterfv( GLenum target, GLenum pname, GLfloat *params )
_mesa_lock_texture(ctx, obj);
switch (pname) {
case GL_TEXTURE_MAG_FILTER:
- *params = ENUM_TO_FLOAT(obj->MagFilter);
+ *params = ENUM_TO_FLOAT(obj->Sampler.MagFilter);
break;
case GL_TEXTURE_MIN_FILTER:
- *params = ENUM_TO_FLOAT(obj->MinFilter);
+ *params = ENUM_TO_FLOAT(obj->Sampler.MinFilter);
break;
case GL_TEXTURE_WRAP_S:
- *params = ENUM_TO_FLOAT(obj->WrapS);
+ *params = ENUM_TO_FLOAT(obj->Sampler.WrapS);
break;
case GL_TEXTURE_WRAP_T:
- *params = ENUM_TO_FLOAT(obj->WrapT);
+ *params = ENUM_TO_FLOAT(obj->Sampler.WrapT);
break;
case GL_TEXTURE_WRAP_R:
- *params = ENUM_TO_FLOAT(obj->WrapR);
+ *params = ENUM_TO_FLOAT(obj->Sampler.WrapR);
break;
case GL_TEXTURE_BORDER_COLOR:
- params[0] = CLAMP(obj->BorderColor.f[0], 0.0F, 1.0F);
- params[1] = CLAMP(obj->BorderColor.f[1], 0.0F, 1.0F);
- params[2] = CLAMP(obj->BorderColor.f[2], 0.0F, 1.0F);
- params[3] = CLAMP(obj->BorderColor.f[3], 0.0F, 1.0F);
+ if(ctx->NewState & (_NEW_BUFFERS | _NEW_FRAG_CLAMP))
+ _mesa_update_state_locked(ctx);
+ if(ctx->Color._ClampFragmentColor)
+ {
+ params[0] = CLAMP(obj->Sampler.BorderColor.f[0], 0.0F, 1.0F);
+ params[1] = CLAMP(obj->Sampler.BorderColor.f[1], 0.0F, 1.0F);
+ params[2] = CLAMP(obj->Sampler.BorderColor.f[2], 0.0F, 1.0F);
+ params[3] = CLAMP(obj->Sampler.BorderColor.f[3], 0.0F, 1.0F);
+ }
+ else
+ {
+ params[0] = obj->Sampler.BorderColor.f[0];
+ params[1] = obj->Sampler.BorderColor.f[1];
+ params[2] = obj->Sampler.BorderColor.f[2];
+ params[3] = obj->Sampler.BorderColor.f[3];
+ }
break;
case GL_TEXTURE_RESIDENT:
{
@@ -1126,10 +1147,10 @@ _mesa_GetTexParameterfv( GLenum target, GLenum pname, GLfloat *params )
*params = obj->Priority;
break;
case GL_TEXTURE_MIN_LOD:
- *params = obj->MinLod;
+ *params = obj->Sampler.MinLod;
break;
case GL_TEXTURE_MAX_LOD:
- *params = obj->MaxLod;
+ *params = obj->Sampler.MaxLod;
break;
case GL_TEXTURE_BASE_LEVEL:
*params = (GLfloat) obj->BaseLevel;
@@ -1139,14 +1160,14 @@ _mesa_GetTexParameterfv( GLenum target, GLenum pname, GLfloat *params )
break;
case GL_TEXTURE_MAX_ANISOTROPY_EXT:
if (ctx->Extensions.EXT_texture_filter_anisotropic) {
- *params = obj->MaxAnisotropy;
+ *params = obj->Sampler.MaxAnisotropy;
}
else
error = GL_TRUE;
break;
case GL_TEXTURE_COMPARE_FAIL_VALUE_ARB:
if (ctx->Extensions.ARB_shadow_ambient) {
- *params = obj->CompareFailValue;
+ *params = obj->Sampler.CompareFailValue;
}
else
error = GL_TRUE;
@@ -1156,28 +1177,28 @@ _mesa_GetTexParameterfv( GLenum target, GLenum pname, GLfloat *params )
break;
case GL_TEXTURE_COMPARE_MODE_ARB:
if (ctx->Extensions.ARB_shadow) {
- *params = (GLfloat) obj->CompareMode;
+ *params = (GLfloat) obj->Sampler.CompareMode;
}
else
error = GL_TRUE;
break;
case GL_TEXTURE_COMPARE_FUNC_ARB:
if (ctx->Extensions.ARB_shadow) {
- *params = (GLfloat) obj->CompareFunc;
+ *params = (GLfloat) obj->Sampler.CompareFunc;
}
else
error = GL_TRUE;
break;
case GL_DEPTH_TEXTURE_MODE_ARB:
if (ctx->Extensions.ARB_depth_texture) {
- *params = (GLfloat) obj->DepthMode;
+ *params = (GLfloat) obj->Sampler.DepthMode;
}
else
error = GL_TRUE;
break;
case GL_TEXTURE_LOD_BIAS:
if (ctx->Extensions.EXT_texture_lod_bias) {
- *params = obj->LodBias;
+ *params = obj->Sampler.LodBias;
}
else
error = GL_TRUE;
@@ -1244,27 +1265,27 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params )
_mesa_lock_texture(ctx, obj);
switch (pname) {
case GL_TEXTURE_MAG_FILTER:
- *params = (GLint) obj->MagFilter;
+ *params = (GLint) obj->Sampler.MagFilter;
break;;
case GL_TEXTURE_MIN_FILTER:
- *params = (GLint) obj->MinFilter;
+ *params = (GLint) obj->Sampler.MinFilter;
break;;
case GL_TEXTURE_WRAP_S:
- *params = (GLint) obj->WrapS;
+ *params = (GLint) obj->Sampler.WrapS;
break;;
case GL_TEXTURE_WRAP_T:
- *params = (GLint) obj->WrapT;
+ *params = (GLint) obj->Sampler.WrapT;
break;;
case GL_TEXTURE_WRAP_R:
- *params = (GLint) obj->WrapR;
+ *params = (GLint) obj->Sampler.WrapR;
break;;
case GL_TEXTURE_BORDER_COLOR:
{
GLfloat b[4];
- b[0] = CLAMP(obj->BorderColor.f[0], 0.0F, 1.0F);
- b[1] = CLAMP(obj->BorderColor.f[1], 0.0F, 1.0F);
- b[2] = CLAMP(obj->BorderColor.f[2], 0.0F, 1.0F);
- b[3] = CLAMP(obj->BorderColor.f[3], 0.0F, 1.0F);
+ b[0] = CLAMP(obj->Sampler.BorderColor.f[0], 0.0F, 1.0F);
+ b[1] = CLAMP(obj->Sampler.BorderColor.f[1], 0.0F, 1.0F);
+ b[2] = CLAMP(obj->Sampler.BorderColor.f[2], 0.0F, 1.0F);
+ b[3] = CLAMP(obj->Sampler.BorderColor.f[3], 0.0F, 1.0F);
params[0] = FLOAT_TO_INT(b[0]);
params[1] = FLOAT_TO_INT(b[1]);
params[2] = FLOAT_TO_INT(b[2]);
@@ -1285,10 +1306,10 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params )
*params = FLOAT_TO_INT(obj->Priority);
break;;
case GL_TEXTURE_MIN_LOD:
- *params = (GLint) obj->MinLod;
+ *params = (GLint) obj->Sampler.MinLod;
break;;
case GL_TEXTURE_MAX_LOD:
- *params = (GLint) obj->MaxLod;
+ *params = (GLint) obj->Sampler.MaxLod;
break;;
case GL_TEXTURE_BASE_LEVEL:
*params = obj->BaseLevel;
@@ -1298,7 +1319,7 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params )
break;;
case GL_TEXTURE_MAX_ANISOTROPY_EXT:
if (ctx->Extensions.EXT_texture_filter_anisotropic) {
- *params = (GLint) obj->MaxAnisotropy;
+ *params = (GLint) obj->Sampler.MaxAnisotropy;
}
else {
error = GL_TRUE;
@@ -1306,7 +1327,7 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params )
break;
case GL_TEXTURE_COMPARE_FAIL_VALUE_ARB:
if (ctx->Extensions.ARB_shadow_ambient) {
- *params = (GLint) FLOAT_TO_INT(obj->CompareFailValue);
+ *params = (GLint) FLOAT_TO_INT(obj->Sampler.CompareFailValue);
}
else {
error = GL_TRUE;
@@ -1317,7 +1338,7 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params )
break;
case GL_TEXTURE_COMPARE_MODE_ARB:
if (ctx->Extensions.ARB_shadow) {
- *params = (GLint) obj->CompareMode;
+ *params = (GLint) obj->Sampler.CompareMode;
}
else {
error = GL_TRUE;
@@ -1325,7 +1346,7 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params )
break;
case GL_TEXTURE_COMPARE_FUNC_ARB:
if (ctx->Extensions.ARB_shadow) {
- *params = (GLint) obj->CompareFunc;
+ *params = (GLint) obj->Sampler.CompareFunc;
}
else {
error = GL_TRUE;
@@ -1333,7 +1354,7 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params )
break;
case GL_DEPTH_TEXTURE_MODE_ARB:
if (ctx->Extensions.ARB_depth_texture) {
- *params = (GLint) obj->DepthMode;
+ *params = (GLint) obj->Sampler.DepthMode;
}
else {
error = GL_TRUE;
@@ -1341,7 +1362,7 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params )
break;
case GL_TEXTURE_LOD_BIAS:
if (ctx->Extensions.EXT_texture_lod_bias) {
- *params = (GLint) obj->LodBias;
+ *params = (GLint) obj->Sampler.LodBias;
}
else {
error = GL_TRUE;
@@ -1401,7 +1422,7 @@ _mesa_GetTexParameterIiv(GLenum target, GLenum pname, GLint *params)
switch (pname) {
case GL_TEXTURE_BORDER_COLOR:
- COPY_4V(params, texObj->BorderColor.i);
+ COPY_4V(params, texObj->Sampler.BorderColor.i);
break;
default:
_mesa_GetTexParameteriv(target, pname, params);
@@ -1421,7 +1442,7 @@ _mesa_GetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params)
switch (pname) {
case GL_TEXTURE_BORDER_COLOR:
- COPY_4V(params, texObj->BorderColor.i);
+ COPY_4V(params, texObj->Sampler.BorderColor.i);
break;
default:
{
diff --git a/src/mesa/main/texrender.c b/src/mesa/main/texrender.c
index 8cec24c3e24..a7641a5f9a4 100644
--- a/src/mesa/main/texrender.c
+++ b/src/mesa/main/texrender.c
@@ -1,6 +1,7 @@
#include "context.h"
#include "colormac.h"
+#include "fbobject.h"
#include "macros.h"
#include "texfetch.h"
#include "teximage.h"
@@ -525,7 +526,7 @@ wrap_texture(struct gl_context *ctx, struct gl_renderbuffer_attachment *att)
* update the internal format info, etc.
*/
static void
-update_wrapper(struct gl_context *ctx, const struct gl_renderbuffer_attachment *att)
+update_wrapper(struct gl_context *ctx, struct gl_renderbuffer_attachment *att)
{
struct texture_renderbuffer *trb
= (struct texture_renderbuffer *) att->Renderbuffer;
@@ -533,7 +534,7 @@ update_wrapper(struct gl_context *ctx, const struct gl_renderbuffer_attachment *
(void) ctx;
ASSERT(trb);
- trb->TexImage = att->Texture->Image[att->CubeMapFace][att->TextureLevel];
+ trb->TexImage = _mesa_get_attachment_teximage(att);
ASSERT(trb->TexImage);
trb->Store = _mesa_get_texel_store_func(trb->TexImage->TexFormat);
diff --git a/src/mesa/main/texstate.c b/src/mesa/main/texstate.c
index 41d531f5976..1810b88b2bf 100644
--- a/src/mesa/main/texstate.c
+++ b/src/mesa/main/texstate.c
@@ -30,6 +30,7 @@
#include "glheader.h"
#include "mfeatures.h"
+#include "bufferobj.h"
#include "colormac.h"
#include "colortab.h"
#include "context.h"
@@ -406,7 +407,7 @@ update_tex_combine(struct gl_context *ctx, struct gl_texture_unit *texUnit)
}
else if (format == GL_DEPTH_COMPONENT ||
format == GL_DEPTH_STENCIL_EXT) {
- format = texObj->DepthMode;
+ format = texObj->Sampler.DepthMode;
}
calculate_derived_texenv(&texUnit->_EnvMode, texUnit->EnvMode, format);
texUnit->_CurrentCombine = & texUnit->_EnvMode;
@@ -692,7 +693,8 @@ alloc_proxy_textures( struct gl_context *ctx )
GL_TEXTURE_CUBE_MAP_ARB,
GL_TEXTURE_RECTANGLE_NV,
GL_TEXTURE_1D_ARRAY_EXT,
- GL_TEXTURE_2D_ARRAY_EXT
+ GL_TEXTURE_2D_ARRAY_EXT,
+ GL_TEXTURE_BUFFER
};
GLint tgt;
@@ -793,6 +795,10 @@ _mesa_init_texture(struct gl_context *ctx)
if (!alloc_proxy_textures( ctx ))
return GL_FALSE;
+ /* GL_ARB_texture_buffer_object */
+ _mesa_reference_buffer_object(ctx, &ctx->Texture.BufferObject,
+ ctx->Shared->NullBufferObj);
+
return GL_TRUE;
}
@@ -818,6 +824,15 @@ _mesa_free_texture_data(struct gl_context *ctx)
/* Free proxy texture objects */
for (tgt = 0; tgt < NUM_TEXTURE_TARGETS; tgt++)
ctx->Driver.DeleteTexture(ctx, ctx->Texture.ProxyTex[tgt]);
+
+ /* GL_ARB_texture_buffer_object */
+ _mesa_reference_buffer_object(ctx, &ctx->Texture.BufferObject, NULL);
+
+#if FEATURE_sampler_objects
+ for (u = 0; u < Elements(ctx->Texture.Unit); u++) {
+ _mesa_reference_sampler_object(ctx, &ctx->Texture.Unit[u].Sampler, NULL);
+ }
+#endif
}
diff --git a/src/mesa/main/texstore.c b/src/mesa/main/texstore.c
index 591759149ad..9a690529a83 100644
--- a/src/mesa/main/texstore.c
+++ b/src/mesa/main/texstore.c
@@ -2186,8 +2186,11 @@ _mesa_texstore_unorm88(TEXSTORE_PARAMS)
if (!ctx->_ImageTransferState &&
!srcPacking->SwapBytes &&
- (dstFormat == MESA_FORMAT_AL88 || dstFormat == MESA_FORMAT_RG88) &&
- baseInternalFormat == srcFormat &&
+ ((dstFormat == MESA_FORMAT_AL88 &&
+ baseInternalFormat == GL_LUMINANCE_ALPHA &&
+ srcFormat == GL_LUMINANCE_ALPHA) ||
+ (dstFormat == MESA_FORMAT_RG88 &&
+ baseInternalFormat == srcFormat)) &&
srcType == GL_UNSIGNED_BYTE &&
littleEndian) {
/* simple memcpy path */
@@ -2305,8 +2308,11 @@ _mesa_texstore_unorm1616(TEXSTORE_PARAMS)
if (!ctx->_ImageTransferState &&
!srcPacking->SwapBytes &&
- (dstFormat == MESA_FORMAT_AL1616 || dstFormat == MESA_FORMAT_RG1616) &&
- baseInternalFormat == srcFormat &&
+ ((dstFormat == MESA_FORMAT_AL1616 &&
+ baseInternalFormat == GL_LUMINANCE_ALPHA &&
+ srcFormat == GL_LUMINANCE_ALPHA) ||
+ (dstFormat == MESA_FORMAT_RG1616 &&
+ baseInternalFormat == srcFormat)) &&
srcType == GL_UNSIGNED_SHORT &&
littleEndian) {
/* simple memcpy path */
@@ -2500,9 +2506,7 @@ _mesa_texstore_signed_rgba_16(TEXSTORE_PARAMS)
const GLuint texelBytes = _mesa_get_format_bytes(dstFormat);
const GLenum baseFormat = _mesa_get_format_base_format(dstFormat);
- ASSERT(dstFormat == MESA_FORMAT_SIGNED_R_16 ||
- dstFormat == MESA_FORMAT_SIGNED_RG_16 ||
- dstFormat == MESA_FORMAT_SIGNED_RGB_16 ||
+ ASSERT(dstFormat == MESA_FORMAT_SIGNED_RGB_16 ||
dstFormat == MESA_FORMAT_SIGNED_RGBA_16);
if (!ctx->_ImageTransferState &&
@@ -2545,16 +2549,29 @@ _mesa_texstore_signed_rgba_16(TEXSTORE_PARAMS)
+ dstXoffset * texelBytes;
for (row = 0; row < srcHeight; row++) {
GLshort *dstRowS = (GLshort *) dstRow;
- for (col = 0; col < srcWidth; col++) {
- GLuint c;
- for (c = 0; c < comps; c++) {
- GLshort p;
- UNCLAMPED_FLOAT_TO_SHORT(p, src[col * 4 + c]);
- dstRowS[col * comps + c] = p;
+ if (dstFormat == MESA_FORMAT_SIGNED_RGBA_16) {
+ for (col = 0; col < srcWidth; col++) {
+ GLuint c;
+ for (c = 0; c < comps; c++) {
+ GLshort p;
+ UNCLAMPED_FLOAT_TO_SHORT(p, src[col * 4 + c]);
+ dstRowS[col * comps + c] = p;
+ }
+ }
+ dstRow += dstRowStride;
+ src += 4 * srcWidth;
+ } else {
+ for (col = 0; col < srcWidth; col++) {
+ GLuint c;
+ for (c = 0; c < comps; c++) {
+ GLshort p;
+ UNCLAMPED_FLOAT_TO_SHORT(p, src[col * 3 + c]);
+ dstRowS[col * comps + c] = p;
+ }
}
+ dstRow += dstRowStride;
+ src += 3 * srcWidth;
}
- dstRow += dstRowStride;
- src += 4 * srcWidth;
}
}
free((void *) tempImage);
@@ -2889,19 +2906,33 @@ _mesa_texstore_dudv8(TEXSTORE_PARAMS)
/**
- * Store a texture in MESA_FORMAT_SIGNED_R8 format.
+ * Store a texture in a signed normalized 8-bit format.
*/
static GLboolean
-_mesa_texstore_signed_r8(TEXSTORE_PARAMS)
+_mesa_texstore_snorm8(TEXSTORE_PARAMS)
{
const GLuint texelBytes = _mesa_get_format_bytes(dstFormat);
const GLenum baseFormat = _mesa_get_format_base_format(dstFormat);
- ASSERT(dstFormat == MESA_FORMAT_SIGNED_R8);
+ ASSERT(dstFormat == MESA_FORMAT_SIGNED_A8 ||
+ dstFormat == MESA_FORMAT_SIGNED_L8 ||
+ dstFormat == MESA_FORMAT_SIGNED_I8 ||
+ dstFormat == MESA_FORMAT_SIGNED_R8);
ASSERT(texelBytes == 1);
- /* XXX look at adding optimized paths */
- {
+ if (!ctx->_ImageTransferState &&
+ !srcPacking->SwapBytes &&
+ baseInternalFormat == srcFormat &&
+ srcType == GL_BYTE) {
+ /* simple memcpy path */
+ memcpy_texture(ctx, dims,
+ dstFormat, dstAddr, dstXoffset, dstYoffset, dstZoffset,
+ dstRowStride,
+ dstImageOffsets,
+ srcWidth, srcHeight, srcDepth, srcFormat, srcType,
+ srcAddr, srcPacking);
+ }
+ else {
/* general path */
const GLfloat *tempImage = _mesa_make_temp_float_image(ctx, dims,
baseInternalFormat,
@@ -2910,21 +2941,21 @@ _mesa_texstore_signed_r8(TEXSTORE_PARAMS)
srcFormat, srcType, srcAddr,
srcPacking,
ctx->_ImageTransferState);
- const GLfloat *srcRow = tempImage;
+ const GLfloat *src = tempImage;
GLint img, row, col;
if (!tempImage)
return GL_FALSE;
for (img = 0; img < srcDepth; img++) {
- GLubyte *dstRow = (GLubyte *) dstAddr
+ GLbyte *dstRow = (GLbyte *) dstAddr
+ dstImageOffsets[dstZoffset + img] * texelBytes
+ dstYoffset * dstRowStride
+ dstXoffset * texelBytes;
for (row = 0; row < srcHeight; row++) {
- GLubyte *dstB = (GLubyte *) dstRow;
for (col = 0; col < srcWidth; col++) {
- dstB[col] = FLOAT_TO_BYTE_TEX(srcRow[RCOMP]);
+ dstRow[col] = FLOAT_TO_BYTE_TEX(src[col]);
}
dstRow += dstRowStride;
+ src += srcWidth;
}
}
free((void *) tempImage);
@@ -2934,19 +2965,33 @@ _mesa_texstore_signed_r8(TEXSTORE_PARAMS)
/**
- * Store a texture in MESA_FORMAT_SIGNED_RG88 format.
+ * Store a texture in a signed normalized two-channel 16-bit format.
*/
static GLboolean
-_mesa_texstore_signed_rg88(TEXSTORE_PARAMS)
+_mesa_texstore_snorm88(TEXSTORE_PARAMS)
{
+ const GLboolean littleEndian = _mesa_little_endian();
const GLuint texelBytes = _mesa_get_format_bytes(dstFormat);
const GLenum baseFormat = _mesa_get_format_base_format(dstFormat);
- ASSERT(dstFormat == MESA_FORMAT_SIGNED_RG88);
- ASSERT(texelBytes == 1);
+ ASSERT(dstFormat == MESA_FORMAT_SIGNED_AL88 ||
+ dstFormat == MESA_FORMAT_SIGNED_RG88_REV);
+ ASSERT(texelBytes == 2);
- /* XXX look at adding optimized paths */
- {
+ if (!ctx->_ImageTransferState &&
+ !srcPacking->SwapBytes &&
+ baseInternalFormat == srcFormat &&
+ srcType == GL_BYTE &&
+ littleEndian) {
+ /* simple memcpy path */
+ memcpy_texture(ctx, dims,
+ dstFormat, dstAddr, dstXoffset, dstYoffset, dstZoffset,
+ dstRowStride,
+ dstImageOffsets,
+ srcWidth, srcHeight, srcDepth, srcFormat, srcType,
+ srcAddr, srcPacking);
+ }
+ else {
/* general path */
const GLfloat *tempImage = _mesa_make_temp_float_image(ctx, dims,
baseInternalFormat,
@@ -2955,20 +3000,22 @@ _mesa_texstore_signed_rg88(TEXSTORE_PARAMS)
srcFormat, srcType, srcAddr,
srcPacking,
ctx->_ImageTransferState);
- const GLfloat *srcRow = tempImage;
+ const GLfloat *src = tempImage;
GLint img, row, col;
if (!tempImage)
return GL_FALSE;
for (img = 0; img < srcDepth; img++) {
- GLubyte *dstRow = (GLubyte *) dstAddr
+ GLbyte *dstRow = (GLbyte *) dstAddr
+ dstImageOffsets[dstZoffset + img] * texelBytes
+ dstYoffset * dstRowStride
+ dstXoffset * texelBytes;
for (row = 0; row < srcHeight; row++) {
- GLushort *dstUS = (GLushort *) dstRow;
+ GLbyte *dst = dstRow;
for (col = 0; col < srcWidth; col++) {
- dstUS[col] = PACK_COLOR_88(FLOAT_TO_BYTE_TEX(srcRow[RCOMP]),
- FLOAT_TO_BYTE_TEX(srcRow[GCOMP]));
+ dst[0] = FLOAT_TO_BYTE_TEX(src[0]);
+ dst[1] = FLOAT_TO_BYTE_TEX(src[1]);
+ src += 2;
+ dst += 2;
}
dstRow += dstRowStride;
}
@@ -2978,6 +3025,132 @@ _mesa_texstore_signed_rg88(TEXSTORE_PARAMS)
return GL_TRUE;
}
+/* Texstore for signed R16, A16, L16, I16. */
+static GLboolean
+_mesa_texstore_snorm16(TEXSTORE_PARAMS)
+{
+ const GLboolean littleEndian = _mesa_little_endian();
+ const GLuint texelBytes = _mesa_get_format_bytes(dstFormat);
+ const GLenum baseFormat = _mesa_get_format_base_format(dstFormat);
+
+ ASSERT(dstFormat == MESA_FORMAT_SIGNED_R16 ||
+ dstFormat == MESA_FORMAT_SIGNED_A16 ||
+ dstFormat == MESA_FORMAT_SIGNED_L16 ||
+ dstFormat == MESA_FORMAT_SIGNED_I16);
+ ASSERT(texelBytes == 2);
+
+ if (!ctx->_ImageTransferState &&
+ !srcPacking->SwapBytes &&
+ baseInternalFormat == srcFormat &&
+ srcType == GL_SHORT &&
+ littleEndian) {
+ /* simple memcpy path */
+ memcpy_texture(ctx, dims,
+ dstFormat, dstAddr, dstXoffset, dstYoffset, dstZoffset,
+ dstRowStride,
+ dstImageOffsets,
+ srcWidth, srcHeight, srcDepth, srcFormat, srcType,
+ srcAddr, srcPacking);
+ }
+ else {
+ /* general path */
+ const GLfloat *tempImage = _mesa_make_temp_float_image(ctx, dims,
+ baseInternalFormat,
+ baseFormat,
+ srcWidth, srcHeight, srcDepth,
+ srcFormat, srcType, srcAddr,
+ srcPacking,
+ ctx->_ImageTransferState);
+ const GLfloat *src = tempImage;
+ GLint img, row, col;
+ if (!tempImage)
+ return GL_FALSE;
+ for (img = 0; img < srcDepth; img++) {
+ GLubyte *dstRow = (GLubyte *) dstAddr
+ + dstImageOffsets[dstZoffset + img] * texelBytes
+ + dstYoffset * dstRowStride
+ + dstXoffset * texelBytes;
+ for (row = 0; row < srcHeight; row++) {
+ GLshort *dstUS = (GLshort *) dstRow;
+ for (col = 0; col < srcWidth; col++) {
+ GLushort r;
+
+ UNCLAMPED_FLOAT_TO_SHORT(r, src[0]);
+ dstUS[col] = r;
+ src += 1;
+ }
+ dstRow += dstRowStride;
+ }
+ }
+ free((void *) tempImage);
+ }
+ return GL_TRUE;
+}
+
+/**
+ * Do texstore for 2-channel, 16-bit/channel, signed normalized formats.
+ */
+static GLboolean
+_mesa_texstore_snorm1616(TEXSTORE_PARAMS)
+{
+ const GLboolean littleEndian = _mesa_little_endian();
+ const GLuint texelBytes = _mesa_get_format_bytes(dstFormat);
+ const GLenum baseFormat = _mesa_get_format_base_format(dstFormat);
+
+ ASSERT(dstFormat == MESA_FORMAT_SIGNED_AL1616 ||
+ dstFormat == MESA_FORMAT_SIGNED_GR1616);
+ ASSERT(texelBytes == 4);
+
+ if (!ctx->_ImageTransferState &&
+ !srcPacking->SwapBytes &&
+ baseInternalFormat == srcFormat &&
+ srcType == GL_SHORT &&
+ littleEndian) {
+ /* simple memcpy path */
+ memcpy_texture(ctx, dims,
+ dstFormat, dstAddr, dstXoffset, dstYoffset, dstZoffset,
+ dstRowStride,
+ dstImageOffsets,
+ srcWidth, srcHeight, srcDepth, srcFormat, srcType,
+ srcAddr, srcPacking);
+ }
+ else {
+ /* general path */
+ const GLfloat *tempImage = _mesa_make_temp_float_image(ctx, dims,
+ baseInternalFormat,
+ baseFormat,
+ srcWidth, srcHeight, srcDepth,
+ srcFormat, srcType, srcAddr,
+ srcPacking,
+ ctx->_ImageTransferState);
+ const GLfloat *src = tempImage;
+ GLint img, row, col;
+ if (!tempImage)
+ return GL_FALSE;
+ for (img = 0; img < srcDepth; img++) {
+ GLubyte *dstRow = (GLubyte *) dstAddr
+ + dstImageOffsets[dstZoffset + img] * texelBytes
+ + dstYoffset * dstRowStride
+ + dstXoffset * texelBytes;
+ for (row = 0; row < srcHeight; row++) {
+ GLshort *dst = (GLshort *) dstRow;
+ for (col = 0; col < srcWidth; col++) {
+ GLushort l, a;
+
+ UNCLAMPED_FLOAT_TO_SHORT(l, src[0]);
+ UNCLAMPED_FLOAT_TO_SHORT(a, src[1]);
+ dst[0] = l;
+ dst[1] = a;
+ src += 2;
+ dst += 2;
+ }
+ dstRow += dstRowStride;
+ }
+ }
+ free((void *) tempImage);
+ }
+ return GL_TRUE;
+}
/**
* Store a texture in MESA_FORMAT_SIGNED_RGBX8888.
@@ -3005,18 +3178,19 @@ _mesa_texstore_signed_rgbx8888(TEXSTORE_PARAMS)
if (!tempImage)
return GL_FALSE;
for (img = 0; img < srcDepth; img++) {
- GLubyte *dstRow = (GLubyte *) dstAddr
+ GLbyte *dstRow = (GLbyte *) dstAddr
+ dstImageOffsets[dstZoffset + img] * texelBytes
+ dstYoffset * dstRowStride
+ dstXoffset * texelBytes;
for (row = 0; row < srcHeight; row++) {
- GLuint *dstUI = (GLuint *) dstRow;
+ GLbyte *dst = dstRow;
for (col = 0; col < srcWidth; col++) {
- dstUI[col] = PACK_COLOR_8888( FLOAT_TO_BYTE_TEX(srcRow[RCOMP]),
- FLOAT_TO_BYTE_TEX(srcRow[GCOMP]),
- FLOAT_TO_BYTE_TEX(srcRow[BCOMP]),
- 0xff );
- srcRow += 4;
+ dst[3] = FLOAT_TO_BYTE_TEX(srcRow[RCOMP]);
+ dst[2] = FLOAT_TO_BYTE_TEX(srcRow[GCOMP]);
+ dst[1] = FLOAT_TO_BYTE_TEX(srcRow[BCOMP]);
+ dst[0] = 127;
+ srcRow += 3;
+ dst += 4;
}
dstRow += dstRowStride;
}
@@ -3071,39 +3245,6 @@ _mesa_texstore_signed_rgba8888(TEXSTORE_PARAMS)
srcWidth, srcHeight, srcDepth, srcFormat, srcType,
srcAddr, srcPacking);
}
- else if (!ctx->_ImageTransferState &&
- (srcType == GL_BYTE) &&
- can_swizzle(baseInternalFormat) &&
- can_swizzle(srcFormat)) {
-
- GLubyte dstmap[4];
-
- /* dstmap - how to swizzle from RGBA to dst format:
- */
- if ((littleEndian && dstFormat == MESA_FORMAT_SIGNED_RGBA8888) ||
- (!littleEndian && dstFormat == MESA_FORMAT_SIGNED_RGBA8888_REV)) {
- dstmap[3] = 0;
- dstmap[2] = 1;
- dstmap[1] = 2;
- dstmap[0] = 3;
- }
- else {
- dstmap[3] = 3;
- dstmap[2] = 2;
- dstmap[1] = 1;
- dstmap[0] = 0;
- }
-
- _mesa_swizzle_ubyte_image(ctx, dims,
- srcFormat,
- srcType,
- baseInternalFormat,
- dstmap, 4,
- dstAddr, dstXoffset, dstYoffset, dstZoffset,
- dstRowStride, dstImageOffsets,
- srcWidth, srcHeight, srcDepth, srcAddr,
- srcPacking);
- }
else {
/* general path */
const GLfloat *tempImage = _mesa_make_temp_float_image(ctx, dims,
@@ -3118,28 +3259,30 @@ _mesa_texstore_signed_rgba8888(TEXSTORE_PARAMS)
if (!tempImage)
return GL_FALSE;
for (img = 0; img < srcDepth; img++) {
- GLubyte *dstRow = (GLubyte *) dstAddr
+ GLbyte *dstRow = (GLbyte *) dstAddr
+ dstImageOffsets[dstZoffset + img] * texelBytes
+ dstYoffset * dstRowStride
+ dstXoffset * texelBytes;
for (row = 0; row < srcHeight; row++) {
- GLuint *dstUI = (GLuint *) dstRow;
+ GLbyte *dst = dstRow;
if (dstFormat == MESA_FORMAT_SIGNED_RGBA8888) {
for (col = 0; col < srcWidth; col++) {
- dstUI[col] = PACK_COLOR_8888( FLOAT_TO_BYTE_TEX(srcRow[RCOMP]),
- FLOAT_TO_BYTE_TEX(srcRow[GCOMP]),
- FLOAT_TO_BYTE_TEX(srcRow[BCOMP]),
- FLOAT_TO_BYTE_TEX(srcRow[ACOMP]) );
+ dst[3] = FLOAT_TO_BYTE_TEX(srcRow[RCOMP]);
+ dst[2] = FLOAT_TO_BYTE_TEX(srcRow[GCOMP]);
+ dst[1] = FLOAT_TO_BYTE_TEX(srcRow[BCOMP]);
+ dst[0] = FLOAT_TO_BYTE_TEX(srcRow[ACOMP]);
srcRow += 4;
+ dst += 4;
}
}
else {
for (col = 0; col < srcWidth; col++) {
- dstUI[col] = PACK_COLOR_8888_REV( FLOAT_TO_BYTE_TEX(srcRow[RCOMP]),
- FLOAT_TO_BYTE_TEX(srcRow[GCOMP]),
- FLOAT_TO_BYTE_TEX(srcRow[BCOMP]),
- FLOAT_TO_BYTE_TEX(srcRow[ACOMP]) );
+ dst[0] = FLOAT_TO_BYTE_TEX(srcRow[RCOMP]);
+ dst[1] = FLOAT_TO_BYTE_TEX(srcRow[GCOMP]);
+ dst[2] = FLOAT_TO_BYTE_TEX(srcRow[BCOMP]);
+ dst[3] = FLOAT_TO_BYTE_TEX(srcRow[ACOMP]);
srcRow += 4;
+ dst += 4;
}
}
dstRow += dstRowStride;
@@ -3392,13 +3535,17 @@ _mesa_texstore_rgba_float32(TEXSTORE_PARAMS)
dstFormat == MESA_FORMAT_ALPHA_FLOAT32 ||
dstFormat == MESA_FORMAT_LUMINANCE_FLOAT32 ||
dstFormat == MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32 ||
- dstFormat == MESA_FORMAT_INTENSITY_FLOAT32);
+ dstFormat == MESA_FORMAT_INTENSITY_FLOAT32 ||
+ dstFormat == MESA_FORMAT_R_FLOAT32 ||
+ dstFormat == MESA_FORMAT_RG_FLOAT32);
ASSERT(baseInternalFormat == GL_RGBA ||
baseInternalFormat == GL_RGB ||
baseInternalFormat == GL_ALPHA ||
baseInternalFormat == GL_LUMINANCE ||
baseInternalFormat == GL_LUMINANCE_ALPHA ||
- baseInternalFormat == GL_INTENSITY);
+ baseInternalFormat == GL_INTENSITY ||
+ baseInternalFormat == GL_RED ||
+ baseInternalFormat == GL_RG);
ASSERT(texelBytes == components * sizeof(GLfloat));
if (!ctx->_ImageTransferState &&
@@ -3462,13 +3609,17 @@ _mesa_texstore_rgba_float16(TEXSTORE_PARAMS)
dstFormat == MESA_FORMAT_ALPHA_FLOAT16 ||
dstFormat == MESA_FORMAT_LUMINANCE_FLOAT16 ||
dstFormat == MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16 ||
- dstFormat == MESA_FORMAT_INTENSITY_FLOAT16);
+ dstFormat == MESA_FORMAT_INTENSITY_FLOAT16 ||
+ dstFormat == MESA_FORMAT_R_FLOAT16 ||
+ dstFormat == MESA_FORMAT_RG_FLOAT16);
ASSERT(baseInternalFormat == GL_RGBA ||
baseInternalFormat == GL_RGB ||
baseInternalFormat == GL_ALPHA ||
baseInternalFormat == GL_LUMINANCE ||
baseInternalFormat == GL_LUMINANCE_ALPHA ||
- baseInternalFormat == GL_INTENSITY);
+ baseInternalFormat == GL_INTENSITY ||
+ baseInternalFormat == GL_RED ||
+ baseInternalFormat == GL_RG);
ASSERT(texelBytes == components * sizeof(GLhalfARB));
if (!ctx->_ImageTransferState &&
@@ -4109,6 +4260,10 @@ texstore_funcs[MESA_FORMAT_COUNT] =
{ MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16, _mesa_texstore_rgba_float16 },
{ MESA_FORMAT_INTENSITY_FLOAT32, _mesa_texstore_rgba_float32 },
{ MESA_FORMAT_INTENSITY_FLOAT16, _mesa_texstore_rgba_float16 },
+ { MESA_FORMAT_R_FLOAT32, _mesa_texstore_rgba_float32 },
+ { MESA_FORMAT_R_FLOAT16, _mesa_texstore_rgba_float16 },
+ { MESA_FORMAT_RG_FLOAT32, _mesa_texstore_rgba_float32 },
+ { MESA_FORMAT_RG_FLOAT16, _mesa_texstore_rgba_float16 },
{ MESA_FORMAT_RGBA_INT8, _mesa_texstore_rgba_int8 },
{ MESA_FORMAT_RGBA_INT16, _mesa_texstore_rgba_int16 },
@@ -4119,15 +4274,15 @@ texstore_funcs[MESA_FORMAT_COUNT] =
{ MESA_FORMAT_DUDV8, _mesa_texstore_dudv8 },
- { MESA_FORMAT_SIGNED_R8, _mesa_texstore_signed_r8 },
- { MESA_FORMAT_SIGNED_RG88, _mesa_texstore_signed_rg88 },
+ { MESA_FORMAT_SIGNED_R8, _mesa_texstore_snorm8 },
+ { MESA_FORMAT_SIGNED_RG88_REV, _mesa_texstore_snorm88 },
{ MESA_FORMAT_SIGNED_RGBX8888, _mesa_texstore_signed_rgbx8888 },
{ MESA_FORMAT_SIGNED_RGBA8888, _mesa_texstore_signed_rgba8888 },
{ MESA_FORMAT_SIGNED_RGBA8888_REV, _mesa_texstore_signed_rgba8888 },
- { MESA_FORMAT_SIGNED_R_16, _mesa_texstore_signed_rgba_16 },
- { MESA_FORMAT_SIGNED_RG_16, _mesa_texstore_signed_rgba_16 },
+ { MESA_FORMAT_SIGNED_R16, _mesa_texstore_snorm16 },
+ { MESA_FORMAT_SIGNED_GR1616, _mesa_texstore_snorm1616 },
{ MESA_FORMAT_SIGNED_RGB_16, _mesa_texstore_signed_rgba_16 },
{ MESA_FORMAT_SIGNED_RGBA_16, _mesa_texstore_signed_rgba_16 },
{ MESA_FORMAT_RGBA_16, _mesa_texstore_rgba_16 },
@@ -4142,7 +4297,17 @@ texstore_funcs[MESA_FORMAT_COUNT] =
{ MESA_FORMAT_L_LATC1, _mesa_texstore_red_rgtc1 },
{ MESA_FORMAT_SIGNED_L_LATC1, _mesa_texstore_signed_red_rgtc1 },
{ MESA_FORMAT_LA_LATC2, _mesa_texstore_rg_rgtc2 },
- { MESA_FORMAT_SIGNED_LA_LATC2, _mesa_texstore_signed_rg_rgtc2 }
+ { MESA_FORMAT_SIGNED_LA_LATC2, _mesa_texstore_signed_rg_rgtc2 },
+
+ { MESA_FORMAT_SIGNED_A8, _mesa_texstore_snorm8 },
+ { MESA_FORMAT_SIGNED_L8, _mesa_texstore_snorm8 },
+ { MESA_FORMAT_SIGNED_AL88, _mesa_texstore_snorm88 },
+ { MESA_FORMAT_SIGNED_I8, _mesa_texstore_snorm8 },
+
+ { MESA_FORMAT_SIGNED_A16, _mesa_texstore_snorm16 },
+ { MESA_FORMAT_SIGNED_L16, _mesa_texstore_snorm16 },
+ { MESA_FORMAT_SIGNED_AL1616, _mesa_texstore_snorm1616 },
+ { MESA_FORMAT_SIGNED_I16, _mesa_texstore_snorm16 },
};
diff --git a/src/mesa/main/uniforms.c b/src/mesa/main/uniforms.c
index 1d74efafdf7..f984ce3bc56 100644
--- a/src/mesa/main/uniforms.c
+++ b/src/mesa/main/uniforms.c
@@ -82,254 +82,6 @@ base_uniform_type(GLenum type)
}
}
-static struct gl_builtin_uniform_element gl_DepthRange_elements[] = {
- {"near", {STATE_DEPTH_RANGE, 0, 0}, SWIZZLE_XXXX},
- {"far", {STATE_DEPTH_RANGE, 0, 0}, SWIZZLE_YYYY},
- {"diff", {STATE_DEPTH_RANGE, 0, 0}, SWIZZLE_ZZZZ},
-};
-
-static struct gl_builtin_uniform_element gl_ClipPlane_elements[] = {
- {NULL, {STATE_CLIPPLANE, 0, 0}, SWIZZLE_XYZW}
-};
-
-static struct gl_builtin_uniform_element gl_Point_elements[] = {
- {"size", {STATE_POINT_SIZE}, SWIZZLE_XXXX},
- {"sizeMin", {STATE_POINT_SIZE}, SWIZZLE_YYYY},
- {"sizeMax", {STATE_POINT_SIZE}, SWIZZLE_ZZZZ},
- {"fadeThresholdSize", {STATE_POINT_SIZE}, SWIZZLE_WWWW},
- {"distanceConstantAttenuation", {STATE_POINT_ATTENUATION}, SWIZZLE_XXXX},
- {"distanceLinearAttenuation", {STATE_POINT_ATTENUATION}, SWIZZLE_YYYY},
- {"distanceQuadraticAttenuation", {STATE_POINT_ATTENUATION}, SWIZZLE_ZZZZ},
-};
-
-static struct gl_builtin_uniform_element gl_FrontMaterial_elements[] = {
- {"emission", {STATE_MATERIAL, 0, STATE_EMISSION}, SWIZZLE_XYZW},
- {"ambient", {STATE_MATERIAL, 0, STATE_AMBIENT}, SWIZZLE_XYZW},
- {"diffuse", {STATE_MATERIAL, 0, STATE_DIFFUSE}, SWIZZLE_XYZW},
- {"specular", {STATE_MATERIAL, 0, STATE_SPECULAR}, SWIZZLE_XYZW},
- {"shininess", {STATE_MATERIAL, 0, STATE_SHININESS}, SWIZZLE_XXXX},
-};
-
-static struct gl_builtin_uniform_element gl_BackMaterial_elements[] = {
- {"emission", {STATE_MATERIAL, 1, STATE_EMISSION}, SWIZZLE_XYZW},
- {"ambient", {STATE_MATERIAL, 1, STATE_AMBIENT}, SWIZZLE_XYZW},
- {"diffuse", {STATE_MATERIAL, 1, STATE_DIFFUSE}, SWIZZLE_XYZW},
- {"specular", {STATE_MATERIAL, 1, STATE_SPECULAR}, SWIZZLE_XYZW},
- {"shininess", {STATE_MATERIAL, 1, STATE_SHININESS}, SWIZZLE_XXXX},
-};
-
-static struct gl_builtin_uniform_element gl_LightSource_elements[] = {
- {"ambient", {STATE_LIGHT, 0, STATE_AMBIENT}, SWIZZLE_XYZW},
- {"diffuse", {STATE_LIGHT, 0, STATE_DIFFUSE}, SWIZZLE_XYZW},
- {"specular", {STATE_LIGHT, 0, STATE_SPECULAR}, SWIZZLE_XYZW},
- {"position", {STATE_LIGHT, 0, STATE_POSITION}, SWIZZLE_XYZW},
- {"halfVector", {STATE_LIGHT, 0, STATE_HALF_VECTOR}, SWIZZLE_XYZW},
- {"spotDirection", {STATE_LIGHT, 0, STATE_SPOT_DIRECTION},
- MAKE_SWIZZLE4(SWIZZLE_X,
- SWIZZLE_Y,
- SWIZZLE_Z,
- SWIZZLE_Z)},
- {"spotCosCutoff", {STATE_LIGHT, 0, STATE_SPOT_DIRECTION}, SWIZZLE_WWWW},
- {"spotCutoff", {STATE_LIGHT, 0, STATE_SPOT_CUTOFF}, SWIZZLE_XXXX},
- {"spotExponent", {STATE_LIGHT, 0, STATE_ATTENUATION}, SWIZZLE_WWWW},
- {"constantAttenuation", {STATE_LIGHT, 0, STATE_ATTENUATION}, SWIZZLE_XXXX},
- {"linearAttenuation", {STATE_LIGHT, 0, STATE_ATTENUATION}, SWIZZLE_YYYY},
- {"quadraticAttenuation", {STATE_LIGHT, 0, STATE_ATTENUATION}, SWIZZLE_ZZZZ},
-};
-
-static struct gl_builtin_uniform_element gl_LightModel_elements[] = {
- {"ambient", {STATE_LIGHTMODEL_AMBIENT, 0}, SWIZZLE_XYZW},
-};
-
-static struct gl_builtin_uniform_element gl_FrontLightModelProduct_elements[] = {
- {"sceneColor", {STATE_LIGHTMODEL_SCENECOLOR, 0}, SWIZZLE_XYZW},
-};
-
-static struct gl_builtin_uniform_element gl_BackLightModelProduct_elements[] = {
- {"sceneColor", {STATE_LIGHTMODEL_SCENECOLOR, 1}, SWIZZLE_XYZW},
-};
-
-static struct gl_builtin_uniform_element gl_FrontLightProduct_elements[] = {
- {"ambient", {STATE_LIGHTPROD, 0, 0, STATE_AMBIENT}, SWIZZLE_XYZW},
- {"diffuse", {STATE_LIGHTPROD, 0, 0, STATE_DIFFUSE}, SWIZZLE_XYZW},
- {"specular", {STATE_LIGHTPROD, 0, 0, STATE_SPECULAR}, SWIZZLE_XYZW},
-};
-
-static struct gl_builtin_uniform_element gl_BackLightProduct_elements[] = {
- {"ambient", {STATE_LIGHTPROD, 0, 1, STATE_AMBIENT}, SWIZZLE_XYZW},
- {"diffuse", {STATE_LIGHTPROD, 0, 1, STATE_DIFFUSE}, SWIZZLE_XYZW},
- {"specular", {STATE_LIGHTPROD, 0, 1, STATE_SPECULAR}, SWIZZLE_XYZW},
-};
-
-static struct gl_builtin_uniform_element gl_TextureEnvColor_elements[] = {
- {NULL, {STATE_TEXENV_COLOR, 0}, SWIZZLE_XYZW},
-};
-
-static struct gl_builtin_uniform_element gl_EyePlaneS_elements[] = {
- {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_EYE_S}, SWIZZLE_XYZW},
-};
-
-static struct gl_builtin_uniform_element gl_EyePlaneT_elements[] = {
- {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_EYE_T}, SWIZZLE_XYZW},
-};
-
-static struct gl_builtin_uniform_element gl_EyePlaneR_elements[] = {
- {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_EYE_R}, SWIZZLE_XYZW},
-};
-
-static struct gl_builtin_uniform_element gl_EyePlaneQ_elements[] = {
- {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_EYE_Q}, SWIZZLE_XYZW},
-};
-
-static struct gl_builtin_uniform_element gl_ObjectPlaneS_elements[] = {
- {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_OBJECT_S}, SWIZZLE_XYZW},
-};
-
-static struct gl_builtin_uniform_element gl_ObjectPlaneT_elements[] = {
- {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_OBJECT_T}, SWIZZLE_XYZW},
-};
-
-static struct gl_builtin_uniform_element gl_ObjectPlaneR_elements[] = {
- {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_OBJECT_R}, SWIZZLE_XYZW},
-};
-
-static struct gl_builtin_uniform_element gl_ObjectPlaneQ_elements[] = {
- {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_OBJECT_Q}, SWIZZLE_XYZW},
-};
-
-static struct gl_builtin_uniform_element gl_Fog_elements[] = {
- {"color", {STATE_FOG_COLOR}, SWIZZLE_XYZW},
- {"density", {STATE_FOG_PARAMS}, SWIZZLE_XXXX},
- {"start", {STATE_FOG_PARAMS}, SWIZZLE_YYYY},
- {"end", {STATE_FOG_PARAMS}, SWIZZLE_ZZZZ},
- {"scale", {STATE_FOG_PARAMS}, SWIZZLE_WWWW},
-};
-
-static struct gl_builtin_uniform_element gl_NormalScale_elements[] = {
- {NULL, {STATE_NORMAL_SCALE}, SWIZZLE_XXXX},
-};
-
-static struct gl_builtin_uniform_element gl_MESABumpRotMatrix0_elements[] = {
- {NULL, {STATE_INTERNAL, STATE_ROT_MATRIX_0}, SWIZZLE_XYZW},
-};
-
-static struct gl_builtin_uniform_element gl_MESABumpRotMatrix1_elements[] = {
- {NULL, {STATE_INTERNAL, STATE_ROT_MATRIX_1}, SWIZZLE_XYZW},
-};
-
-static struct gl_builtin_uniform_element gl_MESAFogParamsOptimized_elements[] = {
- {NULL, {STATE_INTERNAL, STATE_FOG_PARAMS_OPTIMIZED}, SWIZZLE_XYZW},
-};
-
-#define MATRIX(name, statevar, modifier) \
- static struct gl_builtin_uniform_element name ## _elements[] = { \
- { NULL, { statevar, 0, 0, 0, modifier}, SWIZZLE_XYZW }, \
- { NULL, { statevar, 0, 1, 1, modifier}, SWIZZLE_XYZW }, \
- { NULL, { statevar, 0, 2, 2, modifier}, SWIZZLE_XYZW }, \
- { NULL, { statevar, 0, 3, 3, modifier}, SWIZZLE_XYZW }, \
- }
-
-MATRIX(gl_ModelViewMatrix,
- STATE_MODELVIEW_MATRIX, STATE_MATRIX_TRANSPOSE);
-MATRIX(gl_ModelViewMatrixInverse,
- STATE_MODELVIEW_MATRIX, STATE_MATRIX_INVTRANS);
-MATRIX(gl_ModelViewMatrixTranspose,
- STATE_MODELVIEW_MATRIX, 0);
-MATRIX(gl_ModelViewMatrixInverseTranspose,
- STATE_MODELVIEW_MATRIX, STATE_MATRIX_INVERSE);
-
-MATRIX(gl_ProjectionMatrix,
- STATE_PROJECTION_MATRIX, STATE_MATRIX_TRANSPOSE);
-MATRIX(gl_ProjectionMatrixInverse,
- STATE_PROJECTION_MATRIX, STATE_MATRIX_INVTRANS);
-MATRIX(gl_ProjectionMatrixTranspose,
- STATE_PROJECTION_MATRIX, 0);
-MATRIX(gl_ProjectionMatrixInverseTranspose,
- STATE_PROJECTION_MATRIX, STATE_MATRIX_INVERSE);
-
-MATRIX(gl_ModelViewProjectionMatrix,
- STATE_MVP_MATRIX, STATE_MATRIX_TRANSPOSE);
-MATRIX(gl_ModelViewProjectionMatrixInverse,
- STATE_MVP_MATRIX, STATE_MATRIX_INVTRANS);
-MATRIX(gl_ModelViewProjectionMatrixTranspose,
- STATE_MVP_MATRIX, 0);
-MATRIX(gl_ModelViewProjectionMatrixInverseTranspose,
- STATE_MVP_MATRIX, STATE_MATRIX_INVERSE);
-
-MATRIX(gl_TextureMatrix,
- STATE_TEXTURE_MATRIX, STATE_MATRIX_TRANSPOSE);
-MATRIX(gl_TextureMatrixInverse,
- STATE_TEXTURE_MATRIX, STATE_MATRIX_INVTRANS);
-MATRIX(gl_TextureMatrixTranspose,
- STATE_TEXTURE_MATRIX, 0);
-MATRIX(gl_TextureMatrixInverseTranspose,
- STATE_TEXTURE_MATRIX, STATE_MATRIX_INVERSE);
-
-static struct gl_builtin_uniform_element gl_NormalMatrix_elements[] = {
- { NULL, { STATE_MODELVIEW_MATRIX, 0, 0, 0, STATE_MATRIX_INVERSE},
- SWIZZLE_XYZW },
- { NULL, { STATE_MODELVIEW_MATRIX, 0, 1, 1, STATE_MATRIX_INVERSE},
- SWIZZLE_XYZW },
- { NULL, { STATE_MODELVIEW_MATRIX, 0, 2, 2, STATE_MATRIX_INVERSE},
- SWIZZLE_XYZW },
-};
-
-#undef MATRIX
-
-#define STATEVAR(name) {#name, name ## _elements, Elements(name ## _elements)}
-
-const struct gl_builtin_uniform_desc _mesa_builtin_uniform_desc[] = {
- STATEVAR(gl_DepthRange),
- STATEVAR(gl_ClipPlane),
- STATEVAR(gl_Point),
- STATEVAR(gl_FrontMaterial),
- STATEVAR(gl_BackMaterial),
- STATEVAR(gl_LightSource),
- STATEVAR(gl_LightModel),
- STATEVAR(gl_FrontLightModelProduct),
- STATEVAR(gl_BackLightModelProduct),
- STATEVAR(gl_FrontLightProduct),
- STATEVAR(gl_BackLightProduct),
- STATEVAR(gl_TextureEnvColor),
- STATEVAR(gl_EyePlaneS),
- STATEVAR(gl_EyePlaneT),
- STATEVAR(gl_EyePlaneR),
- STATEVAR(gl_EyePlaneQ),
- STATEVAR(gl_ObjectPlaneS),
- STATEVAR(gl_ObjectPlaneT),
- STATEVAR(gl_ObjectPlaneR),
- STATEVAR(gl_ObjectPlaneQ),
- STATEVAR(gl_Fog),
-
- STATEVAR(gl_ModelViewMatrix),
- STATEVAR(gl_ModelViewMatrixInverse),
- STATEVAR(gl_ModelViewMatrixTranspose),
- STATEVAR(gl_ModelViewMatrixInverseTranspose),
-
- STATEVAR(gl_ProjectionMatrix),
- STATEVAR(gl_ProjectionMatrixInverse),
- STATEVAR(gl_ProjectionMatrixTranspose),
- STATEVAR(gl_ProjectionMatrixInverseTranspose),
-
- STATEVAR(gl_ModelViewProjectionMatrix),
- STATEVAR(gl_ModelViewProjectionMatrixInverse),
- STATEVAR(gl_ModelViewProjectionMatrixTranspose),
- STATEVAR(gl_ModelViewProjectionMatrixInverseTranspose),
-
- STATEVAR(gl_TextureMatrix),
- STATEVAR(gl_TextureMatrixInverse),
- STATEVAR(gl_TextureMatrixTranspose),
- STATEVAR(gl_TextureMatrixInverseTranspose),
-
- STATEVAR(gl_NormalMatrix),
- STATEVAR(gl_NormalScale),
-
- STATEVAR(gl_MESABumpRotMatrix0),
- STATEVAR(gl_MESABumpRotMatrix1),
- STATEVAR(gl_MESAFogParamsOptimized),
-
- {NULL, NULL, 0}
-};
static GLboolean
is_boolean_type(GLenum type)
diff --git a/src/mesa/main/varray.c b/src/mesa/main/varray.c
index cfed4b506a5..d20e2c7193e 100644
--- a/src/mesa/main/varray.c
+++ b/src/mesa/main/varray.c
@@ -484,7 +484,7 @@ _mesa_DisableVertexAttribArrayARB(GLuint index)
if (index >= ctx->Const.VertexProgram.MaxAttribs) {
_mesa_error(ctx, GL_INVALID_VALUE,
- "glEnableVertexAttribArrayARB(index)");
+ "glDisableVertexAttribArrayARB(index)");
return;
}
diff --git a/src/mesa/main/varray.h b/src/mesa/main/varray.h
index 53e68c89667..1c423200ffd 100644
--- a/src/mesa/main/varray.h
+++ b/src/mesa/main/varray.h
@@ -34,6 +34,37 @@
struct gl_client_array;
struct gl_context;
+
+/**
+ * Compute the index of the last array element that can be safely accessed in
+ * a vertex array. We can really only do this when the array lives in a VBO.
+ * The array->_MaxElement field will be updated.
+ * Later in glDrawArrays/Elements/etc we can do some bounds checking.
+ */
+static INLINE void
+_mesa_update_array_max_element(struct gl_client_array *array)
+{
+ assert(array->Enabled);
+
+ if (array->BufferObj->Name) {
+ GLsizeiptrARB offset = (GLsizeiptrARB) array->Ptr;
+ GLsizeiptrARB bufSize = (GLsizeiptrARB) array->BufferObj->Size;
+
+ if (offset < bufSize) {
+ array->_MaxElement = (bufSize - offset + array->StrideB
+ - array->_ElementSize) / array->StrideB;
+ }
+ else {
+ array->_MaxElement = 0;
+ }
+ }
+ else {
+ /* user-space array, no idea how big it is */
+ array->_MaxElement = 2 * 1000 * 1000 * 1000; /* just a big number */
+ }
+}
+
+
#if _HAVE_FULL_GL
extern void GLAPIENTRY
diff --git a/src/mesa/main/version.c b/src/mesa/main/version.c
index a10b86e761e..80fa0c244eb 100644
--- a/src/mesa/main/version.c
+++ b/src/mesa/main/version.c
@@ -25,6 +25,7 @@
#include "imports.h"
#include "mtypes.h"
#include "version.h"
+#include "git_sha1.h"
@@ -89,6 +90,8 @@ compute_version(struct gl_context *ctx)
ctx->Extensions.EXT_pixel_buffer_object &&
ctx->Extensions.EXT_texture_sRGB);
const GLboolean ver_3_0 = (ver_2_1 &&
+ ctx->Extensions.ARB_color_buffer_float &&
+ ctx->Extensions.ARB_depth_buffer_float &&
ctx->Extensions.ARB_half_float_pixel &&
ctx->Extensions.ARB_map_buffer_range &&
ctx->Extensions.ARB_texture_float &&
@@ -112,6 +115,7 @@ compute_version(struct gl_context *ctx)
ctx->Extensions.ARB_draw_instanced &&
ctx->Extensions.ARB_texture_buffer_object &&
ctx->Extensions.ARB_uniform_buffer_object &&
+ ctx->Extensions.EXT_texture_snorm &&
ctx->Extensions.NV_primitive_restart &&
ctx->Extensions.NV_texture_rectangle &&
ctx->Const.MaxVertexTextureImageUnits >= 16);
@@ -182,7 +186,11 @@ compute_version(struct gl_context *ctx)
ctx->VersionString = (char *) malloc(max);
if (ctx->VersionString) {
_mesa_snprintf(ctx->VersionString, max,
- "%u.%u Mesa " MESA_VERSION_STRING,
+ "%u.%u Mesa " MESA_VERSION_STRING
+#ifdef MESA_GIT_SHA1
+ " (" MESA_GIT_SHA1 ")"
+#endif
+ ,
ctx->VersionMajor, ctx->VersionMinor);
}
}
diff --git a/src/mesa/program/arbprogparse.c b/src/mesa/program/arbprogparse.c
index ca63e72c085..dffc8abf735 100644
--- a/src/mesa/program/arbprogparse.c
+++ b/src/mesa/program/arbprogparse.c
@@ -116,20 +116,11 @@ _mesa_parse_arb_fragment_program(struct gl_context* ctx, GLenum target,
program->Base.SamplersUsed |= (1 << i);
}
program->Base.ShadowSamplers = prog.ShadowSamplers;
- switch (state.option.Fog) {
- case OPTION_FOG_EXP: program->FogOption = GL_EXP; break;
- case OPTION_FOG_EXP2: program->FogOption = GL_EXP2; break;
- case OPTION_FOG_LINEAR: program->FogOption = GL_LINEAR; break;
- default: program->FogOption = GL_NONE; break;
- }
program->OriginUpperLeft = state.option.OriginUpperLeft;
program->PixelCenterInteger = state.option.PixelCenterInteger;
program->UsesKill = state.fragment.UsesKill;
- if (program->FogOption)
- program->Base.InputsRead |= FRAG_BIT_FOGC;
-
if (program->Base.Instructions)
free(program->Base.Instructions);
program->Base.Instructions = prog.Instructions;
@@ -143,9 +134,15 @@ _mesa_parse_arb_fragment_program(struct gl_context* ctx, GLenum target,
* there's no hardware that wants to do fog in a discrete stage separate
* from the fragment shader.
*/
- if (program->FogOption != GL_NONE) {
- _mesa_append_fog_code(ctx, program);
- program->FogOption = GL_NONE;
+ if (state.option.Fog != OPTION_NONE) {
+ static const GLenum fog_modes[4] = {
+ GL_NONE, GL_EXP, GL_EXP2, GL_LINEAR
+ };
+
+ /* XXX: we should somehow recompile this to remove clamping if disabled
+ * On the ATI driver, this is unclampled if fragment clamping is disabled
+ */
+ _mesa_append_fog_code(ctx, program, fog_modes[state.option.Fog], GL_TRUE);
}
#if DEBUG_FP
diff --git a/src/mesa/program/ir_to_mesa.cpp b/src/mesa/program/ir_to_mesa.cpp
index 17e0f9953f9..3c9b9733832 100644
--- a/src/mesa/program/ir_to_mesa.cpp
+++ b/src/mesa/program/ir_to_mesa.cpp
@@ -56,16 +56,20 @@ extern "C" {
#include "program/sampler.h"
}
+class src_reg;
+class dst_reg;
+
static int swizzle_for_size(int size);
/**
* This struct is a corresponding struct to Mesa prog_src_register, with
* wider fields.
*/
-typedef struct ir_to_mesa_src_reg {
- ir_to_mesa_src_reg(int file, int index, const glsl_type *type)
+class src_reg {
+public:
+ src_reg(gl_register_file file, int index, const glsl_type *type)
{
- this->file = (gl_register_file) file;
+ this->file = file;
this->index = index;
if (type && (type->is_scalar() || type->is_vector() || type->is_matrix()))
this->swizzle = swizzle_for_size(type->vector_elements);
@@ -75,7 +79,7 @@ typedef struct ir_to_mesa_src_reg {
this->reladdr = NULL;
}
- ir_to_mesa_src_reg()
+ src_reg()
{
this->file = PROGRAM_UNDEFINED;
this->index = 0;
@@ -84,24 +88,63 @@ typedef struct ir_to_mesa_src_reg {
this->reladdr = NULL;
}
+ explicit src_reg(dst_reg reg);
+
gl_register_file file; /**< PROGRAM_* from Mesa */
int index; /**< temporary index, VERT_ATTRIB_*, FRAG_ATTRIB_*, etc. */
GLuint swizzle; /**< SWIZZLE_XYZWONEZERO swizzles from Mesa. */
int negate; /**< NEGATE_XYZW mask from mesa */
/** Register index should be offset by the integer in this reg. */
- ir_to_mesa_src_reg *reladdr;
-} ir_to_mesa_src_reg;
+ src_reg *reladdr;
+};
+
+class dst_reg {
+public:
+ dst_reg(gl_register_file file, int writemask)
+ {
+ this->file = file;
+ this->index = 0;
+ this->writemask = writemask;
+ this->cond_mask = COND_TR;
+ this->reladdr = NULL;
+ }
-typedef struct ir_to_mesa_dst_reg {
- int file; /**< PROGRAM_* from Mesa */
+ dst_reg()
+ {
+ this->file = PROGRAM_UNDEFINED;
+ this->index = 0;
+ this->writemask = 0;
+ this->cond_mask = COND_TR;
+ this->reladdr = NULL;
+ }
+
+ explicit dst_reg(src_reg reg);
+
+ gl_register_file file; /**< PROGRAM_* from Mesa */
int index; /**< temporary index, VERT_ATTRIB_*, FRAG_ATTRIB_*, etc. */
int writemask; /**< Bitfield of WRITEMASK_[XYZW] */
GLuint cond_mask:4;
/** Register index should be offset by the integer in this reg. */
- ir_to_mesa_src_reg *reladdr;
-} ir_to_mesa_dst_reg;
+ src_reg *reladdr;
+};
-extern ir_to_mesa_src_reg ir_to_mesa_undef;
+src_reg::src_reg(dst_reg reg)
+{
+ this->file = reg.file;
+ this->index = reg.index;
+ this->swizzle = SWIZZLE_XYZW;
+ this->negate = 0;
+ this->reladdr = NULL;
+}
+
+dst_reg::dst_reg(src_reg reg)
+{
+ this->file = reg.file;
+ this->index = reg.index;
+ this->writemask = WRITEMASK_XYZW;
+ this->cond_mask = COND_TR;
+ this->reladdr = reg.reladdr;
+}
class ir_to_mesa_instruction : public exec_node {
public:
@@ -118,8 +161,8 @@ public:
}
enum prog_opcode op;
- ir_to_mesa_dst_reg dst_reg;
- ir_to_mesa_src_reg src_reg[3];
+ dst_reg dst;
+ src_reg src[3];
/** Pointer to the ir source this tree came from for debugging */
ir_instruction *ir;
GLboolean cond_update;
@@ -174,7 +217,7 @@ public:
int inst;
/** Storage for the return value. */
- ir_to_mesa_src_reg return_reg;
+ src_reg return_reg;
};
class ir_to_mesa_visitor : public ir_visitor {
@@ -195,11 +238,10 @@ public:
function_entry *get_function_signature(ir_function_signature *sig);
- ir_to_mesa_src_reg get_temp(const glsl_type *type);
- void reladdr_to_temp(ir_instruction *ir,
- ir_to_mesa_src_reg *reg, int *num_reladdr);
+ src_reg get_temp(const glsl_type *type);
+ void reladdr_to_temp(ir_instruction *ir, src_reg *reg, int *num_reladdr);
- struct ir_to_mesa_src_reg src_reg_for_float(float val);
+ src_reg src_reg_for_float(float val);
/**
* \name Visit methods
@@ -228,7 +270,7 @@ public:
virtual void visit(ir_if *);
/*@}*/
- struct ir_to_mesa_src_reg result;
+ src_reg result;
/** List of variable_storage */
exec_list variables;
@@ -240,52 +282,35 @@ public:
/** List of ir_to_mesa_instruction */
exec_list instructions;
- ir_to_mesa_instruction *ir_to_mesa_emit_op0(ir_instruction *ir,
- enum prog_opcode op);
+ ir_to_mesa_instruction *emit(ir_instruction *ir, enum prog_opcode op);
- ir_to_mesa_instruction *ir_to_mesa_emit_op1(ir_instruction *ir,
- enum prog_opcode op,
- ir_to_mesa_dst_reg dst,
- ir_to_mesa_src_reg src0);
+ ir_to_mesa_instruction *emit(ir_instruction *ir, enum prog_opcode op,
+ dst_reg dst, src_reg src0);
- ir_to_mesa_instruction *ir_to_mesa_emit_op2(ir_instruction *ir,
- enum prog_opcode op,
- ir_to_mesa_dst_reg dst,
- ir_to_mesa_src_reg src0,
- ir_to_mesa_src_reg src1);
+ ir_to_mesa_instruction *emit(ir_instruction *ir, enum prog_opcode op,
+ dst_reg dst, src_reg src0, src_reg src1);
- ir_to_mesa_instruction *ir_to_mesa_emit_op3(ir_instruction *ir,
- enum prog_opcode op,
- ir_to_mesa_dst_reg dst,
- ir_to_mesa_src_reg src0,
- ir_to_mesa_src_reg src1,
- ir_to_mesa_src_reg src2);
+ ir_to_mesa_instruction *emit(ir_instruction *ir, enum prog_opcode op,
+ dst_reg dst,
+ src_reg src0, src_reg src1, src_reg src2);
/**
* Emit the correct dot-product instruction for the type of arguments
- *
- * \sa ir_to_mesa_emit_op2
*/
- void ir_to_mesa_emit_dp(ir_instruction *ir,
- ir_to_mesa_dst_reg dst,
- ir_to_mesa_src_reg src0,
- ir_to_mesa_src_reg src1,
- unsigned elements);
-
- void ir_to_mesa_emit_scalar_op1(ir_instruction *ir,
- enum prog_opcode op,
- ir_to_mesa_dst_reg dst,
- ir_to_mesa_src_reg src0);
-
- void ir_to_mesa_emit_scalar_op2(ir_instruction *ir,
- enum prog_opcode op,
- ir_to_mesa_dst_reg dst,
- ir_to_mesa_src_reg src0,
- ir_to_mesa_src_reg src1);
+ void emit_dp(ir_instruction *ir,
+ dst_reg dst,
+ src_reg src0,
+ src_reg src1,
+ unsigned elements);
+
+ void emit_scalar(ir_instruction *ir, enum prog_opcode op,
+ dst_reg dst, src_reg src0);
+
+ void emit_scalar(ir_instruction *ir, enum prog_opcode op,
+ dst_reg dst, src_reg src0, src_reg src1);
void emit_scs(ir_instruction *ir, enum prog_opcode op,
- ir_to_mesa_dst_reg dst,
- const ir_to_mesa_src_reg &src);
+ dst_reg dst, const src_reg &src);
GLboolean try_emit_mad(ir_expression *ir,
int mul_operand);
@@ -300,15 +325,11 @@ public:
void *mem_ctx;
};
-ir_to_mesa_src_reg ir_to_mesa_undef = ir_to_mesa_src_reg(PROGRAM_UNDEFINED, 0, NULL);
+src_reg undef_src = src_reg(PROGRAM_UNDEFINED, 0, NULL);
-ir_to_mesa_dst_reg ir_to_mesa_undef_dst = {
- PROGRAM_UNDEFINED, 0, SWIZZLE_NOOP, COND_TR, NULL,
-};
+dst_reg undef_dst = dst_reg(PROGRAM_UNDEFINED, SWIZZLE_NOOP);
-ir_to_mesa_dst_reg ir_to_mesa_address_reg = {
- PROGRAM_ADDRESS, 0, WRITEMASK_X, COND_TR, NULL
-};
+dst_reg address_reg = dst_reg(PROGRAM_ADDRESS, WRITEMASK_X);
static void
fail_link(struct gl_shader_program *prog, const char *fmt, ...) PRINTFLIKE(2, 3);
@@ -339,12 +360,9 @@ swizzle_for_size(int size)
}
ir_to_mesa_instruction *
-ir_to_mesa_visitor::ir_to_mesa_emit_op3(ir_instruction *ir,
- enum prog_opcode op,
- ir_to_mesa_dst_reg dst,
- ir_to_mesa_src_reg src0,
- ir_to_mesa_src_reg src1,
- ir_to_mesa_src_reg src2)
+ir_to_mesa_visitor::emit(ir_instruction *ir, enum prog_opcode op,
+ dst_reg dst,
+ src_reg src0, src_reg src1, src_reg src2)
{
ir_to_mesa_instruction *inst = new(mem_ctx) ir_to_mesa_instruction();
int num_reladdr = 0;
@@ -363,18 +381,16 @@ ir_to_mesa_visitor::ir_to_mesa_emit_op3(ir_instruction *ir,
reladdr_to_temp(ir, &src0, &num_reladdr);
if (dst.reladdr) {
- ir_to_mesa_emit_op1(ir, OPCODE_ARL, ir_to_mesa_address_reg,
- *dst.reladdr);
-
+ emit(ir, OPCODE_ARL, address_reg, *dst.reladdr);
num_reladdr--;
}
assert(num_reladdr == 0);
inst->op = op;
- inst->dst_reg = dst;
- inst->src_reg[0] = src0;
- inst->src_reg[1] = src1;
- inst->src_reg[2] = src2;
+ inst->dst = dst;
+ inst->src[0] = src0;
+ inst->src[1] = src1;
+ inst->src[2] = src2;
inst->ir = ir;
inst->function = NULL;
@@ -386,69 +402,36 @@ ir_to_mesa_visitor::ir_to_mesa_emit_op3(ir_instruction *ir,
ir_to_mesa_instruction *
-ir_to_mesa_visitor::ir_to_mesa_emit_op2(ir_instruction *ir,
- enum prog_opcode op,
- ir_to_mesa_dst_reg dst,
- ir_to_mesa_src_reg src0,
- ir_to_mesa_src_reg src1)
+ir_to_mesa_visitor::emit(ir_instruction *ir, enum prog_opcode op,
+ dst_reg dst, src_reg src0, src_reg src1)
{
- return ir_to_mesa_emit_op3(ir, op, dst, src0, src1, ir_to_mesa_undef);
+ return emit(ir, op, dst, src0, src1, undef_src);
}
ir_to_mesa_instruction *
-ir_to_mesa_visitor::ir_to_mesa_emit_op1(ir_instruction *ir,
- enum prog_opcode op,
- ir_to_mesa_dst_reg dst,
- ir_to_mesa_src_reg src0)
+ir_to_mesa_visitor::emit(ir_instruction *ir, enum prog_opcode op,
+ dst_reg dst, src_reg src0)
{
assert(dst.writemask != 0);
- return ir_to_mesa_emit_op3(ir, op, dst,
- src0, ir_to_mesa_undef, ir_to_mesa_undef);
+ return emit(ir, op, dst, src0, undef_src, undef_src);
}
ir_to_mesa_instruction *
-ir_to_mesa_visitor::ir_to_mesa_emit_op0(ir_instruction *ir,
- enum prog_opcode op)
+ir_to_mesa_visitor::emit(ir_instruction *ir, enum prog_opcode op)
{
- return ir_to_mesa_emit_op3(ir, op, ir_to_mesa_undef_dst,
- ir_to_mesa_undef,
- ir_to_mesa_undef,
- ir_to_mesa_undef);
+ return emit(ir, op, undef_dst, undef_src, undef_src, undef_src);
}
void
-ir_to_mesa_visitor::ir_to_mesa_emit_dp(ir_instruction *ir,
- ir_to_mesa_dst_reg dst,
- ir_to_mesa_src_reg src0,
- ir_to_mesa_src_reg src1,
- unsigned elements)
+ir_to_mesa_visitor::emit_dp(ir_instruction *ir,
+ dst_reg dst, src_reg src0, src_reg src1,
+ unsigned elements)
{
static const gl_inst_opcode dot_opcodes[] = {
OPCODE_DP2, OPCODE_DP3, OPCODE_DP4
};
- ir_to_mesa_emit_op3(ir, dot_opcodes[elements - 2],
- dst, src0, src1, ir_to_mesa_undef);
-}
-
-inline ir_to_mesa_dst_reg
-ir_to_mesa_dst_reg_from_src(ir_to_mesa_src_reg reg)
-{
- ir_to_mesa_dst_reg dst_reg;
-
- dst_reg.file = reg.file;
- dst_reg.index = reg.index;
- dst_reg.writemask = WRITEMASK_XYZW;
- dst_reg.cond_mask = COND_TR;
- dst_reg.reladdr = reg.reladdr;
-
- return dst_reg;
-}
-
-inline ir_to_mesa_src_reg
-ir_to_mesa_src_reg_from_dst(ir_to_mesa_dst_reg reg)
-{
- return ir_to_mesa_src_reg(reg.file, reg.index, NULL);
+ emit(ir, dot_opcodes[elements - 2], dst, src0, src1);
}
/**
@@ -460,11 +443,9 @@ ir_to_mesa_src_reg_from_dst(ir_to_mesa_dst_reg reg)
* to produce dest channels.
*/
void
-ir_to_mesa_visitor::ir_to_mesa_emit_scalar_op2(ir_instruction *ir,
- enum prog_opcode op,
- ir_to_mesa_dst_reg dst,
- ir_to_mesa_src_reg orig_src0,
- ir_to_mesa_src_reg orig_src1)
+ir_to_mesa_visitor::emit_scalar(ir_instruction *ir, enum prog_opcode op,
+ dst_reg dst,
+ src_reg orig_src0, src_reg orig_src1)
{
int i, j;
int done_mask = ~dst.writemask;
@@ -476,8 +457,8 @@ ir_to_mesa_visitor::ir_to_mesa_emit_scalar_op2(ir_instruction *ir,
for (i = 0; i < 4; i++) {
GLuint this_mask = (1 << i);
ir_to_mesa_instruction *inst;
- ir_to_mesa_src_reg src0 = orig_src0;
- ir_to_mesa_src_reg src1 = orig_src1;
+ src_reg src0 = orig_src0;
+ src_reg src1 = orig_src1;
if (done_mask & this_mask)
continue;
@@ -500,26 +481,21 @@ ir_to_mesa_visitor::ir_to_mesa_emit_scalar_op2(ir_instruction *ir,
src1.swizzle = MAKE_SWIZZLE4(src1_swiz, src1_swiz,
src1_swiz, src1_swiz);
- inst = ir_to_mesa_emit_op2(ir, op,
- dst,
- src0,
- src1);
- inst->dst_reg.writemask = this_mask;
+ inst = emit(ir, op, dst, src0, src1);
+ inst->dst.writemask = this_mask;
done_mask |= this_mask;
}
}
void
-ir_to_mesa_visitor::ir_to_mesa_emit_scalar_op1(ir_instruction *ir,
- enum prog_opcode op,
- ir_to_mesa_dst_reg dst,
- ir_to_mesa_src_reg src0)
+ir_to_mesa_visitor::emit_scalar(ir_instruction *ir, enum prog_opcode op,
+ dst_reg dst, src_reg src0)
{
- ir_to_mesa_src_reg undef = ir_to_mesa_undef;
+ src_reg undef = undef_src;
undef.swizzle = SWIZZLE_XXXX;
- ir_to_mesa_emit_scalar_op2(ir, op, dst, src0, undef);
+ emit_scalar(ir, op, dst, src0, undef);
}
/**
@@ -538,20 +514,20 @@ ir_to_mesa_visitor::ir_to_mesa_emit_scalar_op1(ir_instruction *ir,
*/
void
ir_to_mesa_visitor::emit_scs(ir_instruction *ir, enum prog_opcode op,
- ir_to_mesa_dst_reg dst,
- const ir_to_mesa_src_reg &src)
+ dst_reg dst,
+ const src_reg &src)
{
/* Vertex programs cannot use the SCS opcode.
*/
if (this->prog->Target == GL_VERTEX_PROGRAM_ARB) {
- ir_to_mesa_emit_scalar_op1(ir, op, dst, src);
+ emit_scalar(ir, op, dst, src);
return;
}
const unsigned component = (op == OPCODE_SIN) ? 0 : 1;
const unsigned scs_mask = (1U << component);
int done_mask = ~dst.writemask;
- ir_to_mesa_src_reg tmp;
+ src_reg tmp;
assert(op == OPCODE_SIN || op == OPCODE_COS);
@@ -564,7 +540,7 @@ ir_to_mesa_visitor::emit_scs(ir_instruction *ir, enum prog_opcode op,
for (unsigned i = 0; i < 4; i++) {
unsigned this_mask = (1U << i);
- ir_to_mesa_src_reg src0 = src;
+ src_reg src0 = src;
if ((done_mask & this_mask) != 0)
continue;
@@ -592,41 +568,40 @@ ir_to_mesa_visitor::emit_scs(ir_instruction *ir, enum prog_opcode op,
if (this_mask != scs_mask) {
ir_to_mesa_instruction *inst;
- ir_to_mesa_dst_reg tmp_dst = ir_to_mesa_dst_reg_from_src(tmp);
+ dst_reg tmp_dst = dst_reg(tmp);
/* Emit the SCS instruction.
*/
- inst = ir_to_mesa_emit_op1(ir, OPCODE_SCS, tmp_dst, src0);
- inst->dst_reg.writemask = scs_mask;
+ inst = emit(ir, OPCODE_SCS, tmp_dst, src0);
+ inst->dst.writemask = scs_mask;
/* Move the result of the SCS instruction to the desired location in
* the destination.
*/
tmp.swizzle = MAKE_SWIZZLE4(component, component,
component, component);
- inst = ir_to_mesa_emit_op1(ir, OPCODE_SCS, dst, tmp);
- inst->dst_reg.writemask = this_mask;
+ inst = emit(ir, OPCODE_SCS, dst, tmp);
+ inst->dst.writemask = this_mask;
} else {
/* Emit the SCS instruction to write directly to the destination.
*/
- ir_to_mesa_instruction *inst =
- ir_to_mesa_emit_op1(ir, OPCODE_SCS, dst, src0);
- inst->dst_reg.writemask = scs_mask;
+ ir_to_mesa_instruction *inst = emit(ir, OPCODE_SCS, dst, src0);
+ inst->dst.writemask = scs_mask;
}
done_mask |= this_mask;
}
}
-struct ir_to_mesa_src_reg
+struct src_reg
ir_to_mesa_visitor::src_reg_for_float(float val)
{
- ir_to_mesa_src_reg src_reg(PROGRAM_CONSTANT, -1, NULL);
+ src_reg src(PROGRAM_CONSTANT, -1, NULL);
- src_reg.index = _mesa_add_unnamed_constant(this->prog->Parameters,
- &val, 1, &src_reg.swizzle);
+ src.index = _mesa_add_unnamed_constant(this->prog->Parameters,
+ &val, 1, &src.swizzle);
- return src_reg;
+ return src;
}
static int
@@ -676,31 +651,31 @@ type_size(const struct glsl_type *type)
* storage). Actual register allocation for the Mesa VM occurs in a
* pass over the Mesa IR later.
*/
-ir_to_mesa_src_reg
+src_reg
ir_to_mesa_visitor::get_temp(const glsl_type *type)
{
- ir_to_mesa_src_reg src_reg;
+ src_reg src;
int swizzle[4];
int i;
- src_reg.file = PROGRAM_TEMPORARY;
- src_reg.index = next_temp;
- src_reg.reladdr = NULL;
+ src.file = PROGRAM_TEMPORARY;
+ src.index = next_temp;
+ src.reladdr = NULL;
next_temp += type_size(type);
if (type->is_array() || type->is_record()) {
- src_reg.swizzle = SWIZZLE_NOOP;
+ src.swizzle = SWIZZLE_NOOP;
} else {
for (i = 0; i < type->vector_elements; i++)
swizzle[i] = i;
for (; i < 4; i++)
swizzle[i] = type->vector_elements - 1;
- src_reg.swizzle = MAKE_SWIZZLE4(swizzle[0], swizzle[1],
- swizzle[2], swizzle[3]);
+ src.swizzle = MAKE_SWIZZLE4(swizzle[0], swizzle[1],
+ swizzle[2], swizzle[3]);
}
- src_reg.negate = 0;
+ src.negate = 0;
- return src_reg;
+ return src;
}
variable_storage *
@@ -754,27 +729,8 @@ ir_to_mesa_visitor::visit(ir_variable *ir)
if (ir->mode == ir_var_uniform && strncmp(ir->name, "gl_", 3) == 0) {
unsigned int i;
- const struct gl_builtin_uniform_desc *statevar;
-
- for (i = 0; _mesa_builtin_uniform_desc[i].name; i++) {
- if (strcmp(ir->name, _mesa_builtin_uniform_desc[i].name) == 0)
- break;
- }
-
- if (!_mesa_builtin_uniform_desc[i].name) {
- fail_link(this->shader_program,
- "Failed to find builtin uniform `%s'\n", ir->name);
- return;
- }
-
- statevar = &_mesa_builtin_uniform_desc[i];
-
- int array_count;
- if (ir->type->is_array()) {
- array_count = ir->type->length;
- } else {
- array_count = 1;
- }
+ const ir_state_slot *const slots = ir->state_slots;
+ assert(ir->state_slots != NULL);
/* Check if this statevar's setup in the STATE file exactly
* matches how we'll want to reference it as a
@@ -782,63 +738,57 @@ ir_to_mesa_visitor::visit(ir_variable *ir)
* temporary storage and hope that it'll get copy-propagated
* out.
*/
- for (i = 0; i < statevar->num_elements; i++) {
- if (statevar->elements[i].swizzle != SWIZZLE_XYZW) {
+ for (i = 0; i < ir->num_state_slots; i++) {
+ if (slots[i].swizzle != SWIZZLE_XYZW) {
break;
}
}
struct variable_storage *storage;
- ir_to_mesa_dst_reg dst;
- if (i == statevar->num_elements) {
+ dst_reg dst;
+ if (i == ir->num_state_slots) {
/* We'll set the index later. */
storage = new(mem_ctx) variable_storage(ir, PROGRAM_STATE_VAR, -1);
this->variables.push_tail(storage);
- dst = ir_to_mesa_undef_dst;
+ dst = undef_dst;
} else {
+ /* The variable_storage constructor allocates slots based on the size
+ * of the type. However, this had better match the number of state
+ * elements that we're going to copy into the new temporary.
+ */
+ assert((int) ir->num_state_slots == type_size(ir->type));
+
storage = new(mem_ctx) variable_storage(ir, PROGRAM_TEMPORARY,
this->next_temp);
this->variables.push_tail(storage);
this->next_temp += type_size(ir->type);
- dst = ir_to_mesa_dst_reg_from_src(ir_to_mesa_src_reg(PROGRAM_TEMPORARY,
- storage->index,
- NULL));
+ dst = dst_reg(src_reg(PROGRAM_TEMPORARY, storage->index, NULL));
}
- for (int a = 0; a < array_count; a++) {
- for (unsigned int i = 0; i < statevar->num_elements; i++) {
- struct gl_builtin_uniform_element *element = &statevar->elements[i];
- int tokens[STATE_LENGTH];
-
- memcpy(tokens, element->tokens, sizeof(element->tokens));
- if (ir->type->is_array()) {
- tokens[1] = a;
- }
-
- int index = _mesa_add_state_reference(this->prog->Parameters,
- (gl_state_index *)tokens);
+ for (unsigned int i = 0; i < ir->num_state_slots; i++) {
+ int index = _mesa_add_state_reference(this->prog->Parameters,
+ (gl_state_index *)slots[i].tokens);
- if (storage->file == PROGRAM_STATE_VAR) {
- if (storage->index == -1) {
- storage->index = index;
- } else {
- assert(index ==
- (int)(storage->index + a * statevar->num_elements + i));
- }
+ if (storage->file == PROGRAM_STATE_VAR) {
+ if (storage->index == -1) {
+ storage->index = index;
} else {
- ir_to_mesa_src_reg src(PROGRAM_STATE_VAR, index, NULL);
- src.swizzle = element->swizzle;
- ir_to_mesa_emit_op1(ir, OPCODE_MOV, dst, src);
- /* even a float takes up a whole vec4 reg in a struct/array. */
- dst.index++;
+ assert(index == storage->index + (int)i);
}
+ } else {
+ src_reg src(PROGRAM_STATE_VAR, index, NULL);
+ src.swizzle = slots[i].swizzle;
+ emit(ir, OPCODE_MOV, dst, src);
+ /* even a float takes up a whole vec4 reg in a struct/array. */
+ dst.index++;
}
}
+
if (storage->file == PROGRAM_TEMPORARY &&
- dst.index != storage->index + type_size(ir->type)) {
+ dst.index != storage->index + (int) ir->num_state_slots) {
fail_link(this->shader_program,
"failed to load builtin uniform `%s' (%d/%d regs loaded)\n",
ir->name, dst.index - storage->index,
@@ -864,7 +814,7 @@ ir_to_mesa_visitor::visit(ir_loop *ir)
delete a;
}
- ir_to_mesa_emit_op0(NULL, OPCODE_BGNLOOP);
+ emit(NULL, OPCODE_BGNLOOP);
if (ir->to) {
ir_expression *e =
@@ -897,7 +847,7 @@ ir_to_mesa_visitor::visit(ir_loop *ir)
delete e;
}
- ir_to_mesa_emit_op0(NULL, OPCODE_ENDLOOP);
+ emit(NULL, OPCODE_ENDLOOP);
}
void
@@ -905,10 +855,10 @@ ir_to_mesa_visitor::visit(ir_loop_jump *ir)
{
switch (ir->mode) {
case ir_loop_jump::jump_break:
- ir_to_mesa_emit_op0(NULL, OPCODE_BRK);
+ emit(NULL, OPCODE_BRK);
break;
case ir_loop_jump::jump_continue:
- ir_to_mesa_emit_op0(NULL, OPCODE_CONT);
+ emit(NULL, OPCODE_CONT);
break;
}
}
@@ -947,7 +897,7 @@ GLboolean
ir_to_mesa_visitor::try_emit_mad(ir_expression *ir, int mul_operand)
{
int nonmul_operand = 1 - mul_operand;
- ir_to_mesa_src_reg a, b, c;
+ src_reg a, b, c;
ir_expression *expr = ir->operands[mul_operand]->as_expression();
if (!expr || expr->operation != ir_binop_mul)
@@ -961,8 +911,7 @@ ir_to_mesa_visitor::try_emit_mad(ir_expression *ir, int mul_operand)
c = this->result;
this->result = get_temp(ir->type);
- ir_to_mesa_emit_op3(ir, OPCODE_MAD,
- ir_to_mesa_dst_reg_from_src(this->result), a, b, c);
+ emit(ir, OPCODE_MAD, dst_reg(this->result), a, b, c);
return true;
}
@@ -981,13 +930,11 @@ ir_to_mesa_visitor::try_emit_sat(ir_expression *ir)
return false;
sat_src->accept(this);
- ir_to_mesa_src_reg src = this->result;
+ src_reg src = this->result;
this->result = get_temp(ir->type);
ir_to_mesa_instruction *inst;
- inst = ir_to_mesa_emit_op1(ir, OPCODE_MOV,
- ir_to_mesa_dst_reg_from_src(this->result),
- src);
+ inst = emit(ir, OPCODE_MOV, dst_reg(this->result), src);
inst->saturate = true;
return true;
@@ -995,18 +942,17 @@ ir_to_mesa_visitor::try_emit_sat(ir_expression *ir)
void
ir_to_mesa_visitor::reladdr_to_temp(ir_instruction *ir,
- ir_to_mesa_src_reg *reg, int *num_reladdr)
+ src_reg *reg, int *num_reladdr)
{
if (!reg->reladdr)
return;
- ir_to_mesa_emit_op1(ir, OPCODE_ARL, ir_to_mesa_address_reg, *reg->reladdr);
+ emit(ir, OPCODE_ARL, address_reg, *reg->reladdr);
if (*num_reladdr != 1) {
- ir_to_mesa_src_reg temp = get_temp(glsl_type::vec4_type);
+ src_reg temp = get_temp(glsl_type::vec4_type);
- ir_to_mesa_emit_op1(ir, OPCODE_MOV,
- ir_to_mesa_dst_reg_from_src(temp), *reg);
+ emit(ir, OPCODE_MOV, dst_reg(temp), *reg);
*reg = temp;
}
@@ -1102,7 +1048,7 @@ ir_to_mesa_visitor::emit_swz(ir_expression *ir)
exit(1);
}
- ir_to_mesa_src_reg src;
+ src_reg src;
src = this->result;
src.swizzle = MAKE_SWIZZLE4(components[0],
@@ -1117,8 +1063,8 @@ ir_to_mesa_visitor::emit_swz(ir_expression *ir)
/* Storage for our result. Ideally for an assignment we'd be using the
* actual storage for the result here, instead.
*/
- const ir_to_mesa_src_reg result_src = get_temp(ir->type);
- ir_to_mesa_dst_reg result_dst = ir_to_mesa_dst_reg_from_src(result_src);
+ const src_reg result_src = get_temp(ir->type);
+ dst_reg result_dst = dst_reg(result_src);
/* Limit writes to the channels that will be used by result_src later.
* This does limit this temp's use as a temporary for multi-instruction
@@ -1126,7 +1072,7 @@ ir_to_mesa_visitor::emit_swz(ir_expression *ir)
*/
result_dst.writemask = (1 << ir->type->vector_elements) - 1;
- ir_to_mesa_emit_op1(ir, OPCODE_SWZ, result_dst, src);
+ emit(ir, OPCODE_SWZ, result_dst, src);
this->result = result_src;
}
@@ -1134,9 +1080,9 @@ void
ir_to_mesa_visitor::visit(ir_expression *ir)
{
unsigned int operand;
- struct ir_to_mesa_src_reg op[Elements(ir->operands)];
- struct ir_to_mesa_src_reg result_src;
- struct ir_to_mesa_dst_reg result_dst;
+ src_reg op[Elements(ir->operands)];
+ src_reg result_src;
+ dst_reg result_dst;
/* Quick peephole: Emit OPCODE_MAD(a, b, c) instead of ADD(MUL(a, b), c)
*/
@@ -1184,7 +1130,7 @@ ir_to_mesa_visitor::visit(ir_expression *ir)
*/
result_src = get_temp(ir->type);
/* convenience for the emit functions below. */
- result_dst = ir_to_mesa_dst_reg_from_src(result_src);
+ result_dst = dst_reg(result_src);
/* Limit writes to the channels that will be used by result_src later.
* This does limit this temp's use as a temporary for multi-instruction
* sequences.
@@ -1193,38 +1139,37 @@ ir_to_mesa_visitor::visit(ir_expression *ir)
switch (ir->operation) {
case ir_unop_logic_not:
- ir_to_mesa_emit_op2(ir, OPCODE_SEQ, result_dst,
- op[0], src_reg_for_float(0.0));
+ emit(ir, OPCODE_SEQ, result_dst, op[0], src_reg_for_float(0.0));
break;
case ir_unop_neg:
op[0].negate = ~op[0].negate;
result_src = op[0];
break;
case ir_unop_abs:
- ir_to_mesa_emit_op1(ir, OPCODE_ABS, result_dst, op[0]);
+ emit(ir, OPCODE_ABS, result_dst, op[0]);
break;
case ir_unop_sign:
- ir_to_mesa_emit_op1(ir, OPCODE_SSG, result_dst, op[0]);
+ emit(ir, OPCODE_SSG, result_dst, op[0]);
break;
case ir_unop_rcp:
- ir_to_mesa_emit_scalar_op1(ir, OPCODE_RCP, result_dst, op[0]);
+ emit_scalar(ir, OPCODE_RCP, result_dst, op[0]);
break;
case ir_unop_exp2:
- ir_to_mesa_emit_scalar_op1(ir, OPCODE_EX2, result_dst, op[0]);
+ emit_scalar(ir, OPCODE_EX2, result_dst, op[0]);
break;
case ir_unop_exp:
case ir_unop_log:
assert(!"not reached: should be handled by ir_explog_to_explog2");
break;
case ir_unop_log2:
- ir_to_mesa_emit_scalar_op1(ir, OPCODE_LG2, result_dst, op[0]);
+ emit_scalar(ir, OPCODE_LG2, result_dst, op[0]);
break;
case ir_unop_sin:
- ir_to_mesa_emit_scalar_op1(ir, OPCODE_SIN, result_dst, op[0]);
+ emit_scalar(ir, OPCODE_SIN, result_dst, op[0]);
break;
case ir_unop_cos:
- ir_to_mesa_emit_scalar_op1(ir, OPCODE_COS, result_dst, op[0]);
+ emit_scalar(ir, OPCODE_COS, result_dst, op[0]);
break;
case ir_unop_sin_reduced:
emit_scs(ir, OPCODE_SIN, result_dst, op[0]);
@@ -1234,10 +1179,10 @@ ir_to_mesa_visitor::visit(ir_expression *ir)
break;
case ir_unop_dFdx:
- ir_to_mesa_emit_op1(ir, OPCODE_DDX, result_dst, op[0]);
+ emit(ir, OPCODE_DDX, result_dst, op[0]);
break;
case ir_unop_dFdy:
- ir_to_mesa_emit_op1(ir, OPCODE_DDY, result_dst, op[0]);
+ emit(ir, OPCODE_DDY, result_dst, op[0]);
break;
case ir_unop_noise: {
@@ -1246,19 +1191,19 @@ ir_to_mesa_visitor::visit(ir_expression *ir)
+ (ir->operands[0]->type->vector_elements) - 1);
assert((opcode >= OPCODE_NOISE1) && (opcode <= OPCODE_NOISE4));
- ir_to_mesa_emit_op1(ir, opcode, result_dst, op[0]);
+ emit(ir, opcode, result_dst, op[0]);
break;
}
case ir_binop_add:
- ir_to_mesa_emit_op2(ir, OPCODE_ADD, result_dst, op[0], op[1]);
+ emit(ir, OPCODE_ADD, result_dst, op[0], op[1]);
break;
case ir_binop_sub:
- ir_to_mesa_emit_op2(ir, OPCODE_SUB, result_dst, op[0], op[1]);
+ emit(ir, OPCODE_SUB, result_dst, op[0], op[1]);
break;
case ir_binop_mul:
- ir_to_mesa_emit_op2(ir, OPCODE_MUL, result_dst, op[0], op[1]);
+ emit(ir, OPCODE_MUL, result_dst, op[0], op[1]);
break;
case ir_binop_div:
assert(!"not reached: should be handled by ir_div_to_mul_rcp");
@@ -1267,100 +1212,88 @@ ir_to_mesa_visitor::visit(ir_expression *ir)
break;
case ir_binop_less:
- ir_to_mesa_emit_op2(ir, OPCODE_SLT, result_dst, op[0], op[1]);
+ emit(ir, OPCODE_SLT, result_dst, op[0], op[1]);
break;
case ir_binop_greater:
- ir_to_mesa_emit_op2(ir, OPCODE_SGT, result_dst, op[0], op[1]);
+ emit(ir, OPCODE_SGT, result_dst, op[0], op[1]);
break;
case ir_binop_lequal:
- ir_to_mesa_emit_op2(ir, OPCODE_SLE, result_dst, op[0], op[1]);
+ emit(ir, OPCODE_SLE, result_dst, op[0], op[1]);
break;
case ir_binop_gequal:
- ir_to_mesa_emit_op2(ir, OPCODE_SGE, result_dst, op[0], op[1]);
+ emit(ir, OPCODE_SGE, result_dst, op[0], op[1]);
break;
case ir_binop_equal:
- ir_to_mesa_emit_op2(ir, OPCODE_SEQ, result_dst, op[0], op[1]);
+ emit(ir, OPCODE_SEQ, result_dst, op[0], op[1]);
break;
case ir_binop_nequal:
- ir_to_mesa_emit_op2(ir, OPCODE_SNE, result_dst, op[0], op[1]);
+ emit(ir, OPCODE_SNE, result_dst, op[0], op[1]);
break;
case ir_binop_all_equal:
/* "==" operator producing a scalar boolean. */
if (ir->operands[0]->type->is_vector() ||
ir->operands[1]->type->is_vector()) {
- ir_to_mesa_src_reg temp = get_temp(glsl_type::vec4_type);
- ir_to_mesa_emit_op2(ir, OPCODE_SNE,
- ir_to_mesa_dst_reg_from_src(temp), op[0], op[1]);
- ir_to_mesa_emit_dp(ir, result_dst, temp, temp, vector_elements);
- ir_to_mesa_emit_op2(ir, OPCODE_SEQ,
- result_dst, result_src, src_reg_for_float(0.0));
+ src_reg temp = get_temp(glsl_type::vec4_type);
+ emit(ir, OPCODE_SNE, dst_reg(temp), op[0], op[1]);
+ emit_dp(ir, result_dst, temp, temp, vector_elements);
+ emit(ir, OPCODE_SEQ, result_dst, result_src, src_reg_for_float(0.0));
} else {
- ir_to_mesa_emit_op2(ir, OPCODE_SEQ, result_dst, op[0], op[1]);
+ emit(ir, OPCODE_SEQ, result_dst, op[0], op[1]);
}
break;
case ir_binop_any_nequal:
/* "!=" operator producing a scalar boolean. */
if (ir->operands[0]->type->is_vector() ||
ir->operands[1]->type->is_vector()) {
- ir_to_mesa_src_reg temp = get_temp(glsl_type::vec4_type);
- ir_to_mesa_emit_op2(ir, OPCODE_SNE,
- ir_to_mesa_dst_reg_from_src(temp), op[0], op[1]);
- ir_to_mesa_emit_dp(ir, result_dst, temp, temp, vector_elements);
- ir_to_mesa_emit_op2(ir, OPCODE_SNE,
- result_dst, result_src, src_reg_for_float(0.0));
+ src_reg temp = get_temp(glsl_type::vec4_type);
+ emit(ir, OPCODE_SNE, dst_reg(temp), op[0], op[1]);
+ emit_dp(ir, result_dst, temp, temp, vector_elements);
+ emit(ir, OPCODE_SNE, result_dst, result_src, src_reg_for_float(0.0));
} else {
- ir_to_mesa_emit_op2(ir, OPCODE_SNE, result_dst, op[0], op[1]);
+ emit(ir, OPCODE_SNE, result_dst, op[0], op[1]);
}
break;
case ir_unop_any:
assert(ir->operands[0]->type->is_vector());
- ir_to_mesa_emit_dp(ir, result_dst, op[0], op[0],
- ir->operands[0]->type->vector_elements);
- ir_to_mesa_emit_op2(ir, OPCODE_SNE,
- result_dst, result_src, src_reg_for_float(0.0));
+ emit_dp(ir, result_dst, op[0], op[0],
+ ir->operands[0]->type->vector_elements);
+ emit(ir, OPCODE_SNE, result_dst, result_src, src_reg_for_float(0.0));
break;
case ir_binop_logic_xor:
- ir_to_mesa_emit_op2(ir, OPCODE_SNE, result_dst, op[0], op[1]);
+ emit(ir, OPCODE_SNE, result_dst, op[0], op[1]);
break;
case ir_binop_logic_or:
/* This could be a saturated add and skip the SNE. */
- ir_to_mesa_emit_op2(ir, OPCODE_ADD,
- result_dst,
- op[0], op[1]);
-
- ir_to_mesa_emit_op2(ir, OPCODE_SNE,
- result_dst,
- result_src, src_reg_for_float(0.0));
+ emit(ir, OPCODE_ADD, result_dst, op[0], op[1]);
+ emit(ir, OPCODE_SNE, result_dst, result_src, src_reg_for_float(0.0));
break;
case ir_binop_logic_and:
/* the bool args are stored as float 0.0 or 1.0, so "mul" gives us "and". */
- ir_to_mesa_emit_op2(ir, OPCODE_MUL,
- result_dst,
- op[0], op[1]);
+ emit(ir, OPCODE_MUL, result_dst, op[0], op[1]);
break;
case ir_binop_dot:
assert(ir->operands[0]->type->is_vector());
assert(ir->operands[0]->type == ir->operands[1]->type);
- ir_to_mesa_emit_dp(ir, result_dst, op[0], op[1],
- ir->operands[0]->type->vector_elements);
+ emit_dp(ir, result_dst, op[0], op[1],
+ ir->operands[0]->type->vector_elements);
break;
case ir_unop_sqrt:
/* sqrt(x) = x * rsq(x). */
- ir_to_mesa_emit_scalar_op1(ir, OPCODE_RSQ, result_dst, op[0]);
- ir_to_mesa_emit_op2(ir, OPCODE_MUL, result_dst, result_src, op[0]);
+ emit_scalar(ir, OPCODE_RSQ, result_dst, op[0]);
+ emit(ir, OPCODE_MUL, result_dst, result_src, op[0]);
/* For incoming channels <= 0, set the result to 0. */
op[0].negate = ~op[0].negate;
- ir_to_mesa_emit_op3(ir, OPCODE_CMP, result_dst,
+ emit(ir, OPCODE_CMP, result_dst,
op[0], result_src, src_reg_for_float(0.0));
break;
case ir_unop_rsq:
- ir_to_mesa_emit_scalar_op1(ir, OPCODE_RSQ, result_dst, op[0]);
+ emit_scalar(ir, OPCODE_RSQ, result_dst, op[0]);
break;
case ir_unop_i2f:
case ir_unop_b2f:
@@ -1369,36 +1302,36 @@ ir_to_mesa_visitor::visit(ir_expression *ir)
result_src = op[0];
break;
case ir_unop_f2i:
- ir_to_mesa_emit_op1(ir, OPCODE_TRUNC, result_dst, op[0]);
+ emit(ir, OPCODE_TRUNC, result_dst, op[0]);
break;
case ir_unop_f2b:
case ir_unop_i2b:
- ir_to_mesa_emit_op2(ir, OPCODE_SNE, result_dst,
+ emit(ir, OPCODE_SNE, result_dst,
op[0], src_reg_for_float(0.0));
break;
case ir_unop_trunc:
- ir_to_mesa_emit_op1(ir, OPCODE_TRUNC, result_dst, op[0]);
+ emit(ir, OPCODE_TRUNC, result_dst, op[0]);
break;
case ir_unop_ceil:
op[0].negate = ~op[0].negate;
- ir_to_mesa_emit_op1(ir, OPCODE_FLR, result_dst, op[0]);
+ emit(ir, OPCODE_FLR, result_dst, op[0]);
result_src.negate = ~result_src.negate;
break;
case ir_unop_floor:
- ir_to_mesa_emit_op1(ir, OPCODE_FLR, result_dst, op[0]);
+ emit(ir, OPCODE_FLR, result_dst, op[0]);
break;
case ir_unop_fract:
- ir_to_mesa_emit_op1(ir, OPCODE_FRC, result_dst, op[0]);
+ emit(ir, OPCODE_FRC, result_dst, op[0]);
break;
case ir_binop_min:
- ir_to_mesa_emit_op2(ir, OPCODE_MIN, result_dst, op[0], op[1]);
+ emit(ir, OPCODE_MIN, result_dst, op[0], op[1]);
break;
case ir_binop_max:
- ir_to_mesa_emit_op2(ir, OPCODE_MAX, result_dst, op[0], op[1]);
+ emit(ir, OPCODE_MAX, result_dst, op[0], op[1]);
break;
case ir_binop_pow:
- ir_to_mesa_emit_scalar_op2(ir, OPCODE_POW, result_dst, op[0], op[1]);
+ emit_scalar(ir, OPCODE_POW, result_dst, op[0], op[1]);
break;
case ir_unop_bit_not:
@@ -1426,7 +1359,7 @@ ir_to_mesa_visitor::visit(ir_expression *ir)
void
ir_to_mesa_visitor::visit(ir_swizzle *ir)
{
- ir_to_mesa_src_reg src_reg;
+ src_reg src;
int i;
int swizzle[4];
@@ -1436,23 +1369,23 @@ ir_to_mesa_visitor::visit(ir_swizzle *ir)
*/
ir->val->accept(this);
- src_reg = this->result;
- assert(src_reg.file != PROGRAM_UNDEFINED);
+ src = this->result;
+ assert(src.file != PROGRAM_UNDEFINED);
for (i = 0; i < 4; i++) {
if (i < ir->type->vector_elements) {
switch (i) {
case 0:
- swizzle[i] = GET_SWZ(src_reg.swizzle, ir->mask.x);
+ swizzle[i] = GET_SWZ(src.swizzle, ir->mask.x);
break;
case 1:
- swizzle[i] = GET_SWZ(src_reg.swizzle, ir->mask.y);
+ swizzle[i] = GET_SWZ(src.swizzle, ir->mask.y);
break;
case 2:
- swizzle[i] = GET_SWZ(src_reg.swizzle, ir->mask.z);
+ swizzle[i] = GET_SWZ(src.swizzle, ir->mask.z);
break;
case 3:
- swizzle[i] = GET_SWZ(src_reg.swizzle, ir->mask.w);
+ swizzle[i] = GET_SWZ(src.swizzle, ir->mask.w);
break;
}
} else {
@@ -1463,12 +1396,9 @@ ir_to_mesa_visitor::visit(ir_swizzle *ir)
}
}
- src_reg.swizzle = MAKE_SWIZZLE4(swizzle[0],
- swizzle[1],
- swizzle[2],
- swizzle[3]);
+ src.swizzle = MAKE_SWIZZLE4(swizzle[0], swizzle[1], swizzle[2], swizzle[3]);
- this->result = src_reg;
+ this->result = src;
}
void
@@ -1533,54 +1463,53 @@ ir_to_mesa_visitor::visit(ir_dereference_variable *ir)
}
}
- this->result = ir_to_mesa_src_reg(entry->file, entry->index, var->type);
+ this->result = src_reg(entry->file, entry->index, var->type);
}
void
ir_to_mesa_visitor::visit(ir_dereference_array *ir)
{
ir_constant *index;
- ir_to_mesa_src_reg src_reg;
+ src_reg src;
int element_size = type_size(ir->type);
index = ir->array_index->constant_expression_value();
ir->array->accept(this);
- src_reg = this->result;
+ src = this->result;
if (index) {
- src_reg.index += index->value.i[0] * element_size;
+ src.index += index->value.i[0] * element_size;
} else {
- ir_to_mesa_src_reg array_base = this->result;
+ src_reg array_base = this->result;
/* Variable index array dereference. It eats the "vec4" of the
* base of the array and an index that offsets the Mesa register
* index.
*/
ir->array_index->accept(this);
- ir_to_mesa_src_reg index_reg;
+ src_reg index_reg;
if (element_size == 1) {
index_reg = this->result;
} else {
index_reg = get_temp(glsl_type::float_type);
- ir_to_mesa_emit_op2(ir, OPCODE_MUL,
- ir_to_mesa_dst_reg_from_src(index_reg),
- this->result, src_reg_for_float(element_size));
+ emit(ir, OPCODE_MUL, dst_reg(index_reg),
+ this->result, src_reg_for_float(element_size));
}
- src_reg.reladdr = ralloc(mem_ctx, ir_to_mesa_src_reg);
- memcpy(src_reg.reladdr, &index_reg, sizeof(index_reg));
+ src.reladdr = ralloc(mem_ctx, src_reg);
+ memcpy(src.reladdr, &index_reg, sizeof(index_reg));
}
/* If the type is smaller than a vec4, replicate the last channel out. */
if (ir->type->is_scalar() || ir->type->is_vector())
- src_reg.swizzle = swizzle_for_size(ir->type->vector_elements);
+ src.swizzle = swizzle_for_size(ir->type->vector_elements);
else
- src_reg.swizzle = SWIZZLE_NOOP;
+ src.swizzle = SWIZZLE_NOOP;
- this->result = src_reg;
+ this->result = src;
}
void
@@ -1612,7 +1541,7 @@ ir_to_mesa_visitor::visit(ir_dereference_record *ir)
* instead of potentially using a temporary like we might with the
* ir_dereference handler.
*/
-static struct ir_to_mesa_dst_reg
+static dst_reg
get_assignment_lhs(ir_dereference *ir, ir_to_mesa_visitor *v)
{
/* The LHS must be a dereference. If the LHS is a variable indexed array
@@ -1629,7 +1558,7 @@ get_assignment_lhs(ir_dereference *ir, ir_to_mesa_visitor *v)
* swizzles in it and write swizzles using writemask, though.
*/
ir->accept(v);
- return ir_to_mesa_dst_reg_from_src(v->result);
+ return dst_reg(v->result);
}
/**
@@ -1722,8 +1651,8 @@ ir_to_mesa_visitor::process_move_condition(ir_rvalue *ir)
void
ir_to_mesa_visitor::visit(ir_assignment *ir)
{
- struct ir_to_mesa_dst_reg l;
- struct ir_to_mesa_src_reg r;
+ dst_reg l;
+ src_reg r;
int i;
ir->rhs->accept(this);
@@ -1779,15 +1708,13 @@ ir_to_mesa_visitor::visit(ir_assignment *ir)
if (ir->condition) {
const bool switch_order = this->process_move_condition(ir->condition);
- ir_to_mesa_src_reg condition = this->result;
+ src_reg condition = this->result;
for (i = 0; i < type_size(ir->lhs->type); i++) {
if (switch_order) {
- ir_to_mesa_emit_op3(ir, OPCODE_CMP, l,
- condition, ir_to_mesa_src_reg_from_dst(l), r);
+ emit(ir, OPCODE_CMP, l, condition, src_reg(l), r);
} else {
- ir_to_mesa_emit_op3(ir, OPCODE_CMP, l,
- condition, r, ir_to_mesa_src_reg_from_dst(l));
+ emit(ir, OPCODE_CMP, l, condition, r, src_reg(l));
}
l.index++;
@@ -1795,7 +1722,7 @@ ir_to_mesa_visitor::visit(ir_assignment *ir)
}
} else {
for (i = 0; i < type_size(ir->lhs->type); i++) {
- ir_to_mesa_emit_op1(ir, OPCODE_MOV, l, r);
+ emit(ir, OPCODE_MOV, l, r);
l.index++;
r.index++;
}
@@ -1806,7 +1733,7 @@ ir_to_mesa_visitor::visit(ir_assignment *ir)
void
ir_to_mesa_visitor::visit(ir_constant *ir)
{
- ir_to_mesa_src_reg src_reg;
+ src_reg src;
GLfloat stack_vals[4] = { 0 };
GLfloat *values = stack_vals;
unsigned int i;
@@ -1818,8 +1745,8 @@ ir_to_mesa_visitor::visit(ir_constant *ir)
*/
if (ir->type->base_type == GLSL_TYPE_STRUCT) {
- ir_to_mesa_src_reg temp_base = get_temp(ir->type);
- ir_to_mesa_dst_reg temp = ir_to_mesa_dst_reg_from_src(temp_base);
+ src_reg temp_base = get_temp(ir->type);
+ dst_reg temp = dst_reg(temp_base);
foreach_iter(exec_list_iterator, iter, ir->components) {
ir_constant *field_value = (ir_constant *)iter.get();
@@ -1828,12 +1755,12 @@ ir_to_mesa_visitor::visit(ir_constant *ir)
assert(size > 0);
field_value->accept(this);
- src_reg = this->result;
+ src = this->result;
for (i = 0; i < (unsigned int)size; i++) {
- ir_to_mesa_emit_op1(ir, OPCODE_MOV, temp, src_reg);
+ emit(ir, OPCODE_MOV, temp, src);
- src_reg.index++;
+ src.index++;
temp.index++;
}
}
@@ -1842,19 +1769,19 @@ ir_to_mesa_visitor::visit(ir_constant *ir)
}
if (ir->type->is_array()) {
- ir_to_mesa_src_reg temp_base = get_temp(ir->type);
- ir_to_mesa_dst_reg temp = ir_to_mesa_dst_reg_from_src(temp_base);
+ src_reg temp_base = get_temp(ir->type);
+ dst_reg temp = dst_reg(temp_base);
int size = type_size(ir->type->fields.array);
assert(size > 0);
for (i = 0; i < ir->type->length; i++) {
ir->array_elements[i]->accept(this);
- src_reg = this->result;
+ src = this->result;
for (int j = 0; j < size; j++) {
- ir_to_mesa_emit_op1(ir, OPCODE_MOV, temp, src_reg);
+ emit(ir, OPCODE_MOV, temp, src);
- src_reg.index++;
+ src.index++;
temp.index++;
}
}
@@ -1863,19 +1790,19 @@ ir_to_mesa_visitor::visit(ir_constant *ir)
}
if (ir->type->is_matrix()) {
- ir_to_mesa_src_reg mat = get_temp(ir->type);
- ir_to_mesa_dst_reg mat_column = ir_to_mesa_dst_reg_from_src(mat);
+ src_reg mat = get_temp(ir->type);
+ dst_reg mat_column = dst_reg(mat);
for (i = 0; i < ir->type->matrix_columns; i++) {
assert(ir->type->base_type == GLSL_TYPE_FLOAT);
values = &ir->value.f[i * ir->type->vector_elements];
- src_reg = ir_to_mesa_src_reg(PROGRAM_CONSTANT, -1, NULL);
- src_reg.index = _mesa_add_unnamed_constant(this->prog->Parameters,
+ src = src_reg(PROGRAM_CONSTANT, -1, NULL);
+ src.index = _mesa_add_unnamed_constant(this->prog->Parameters,
values,
ir->type->vector_elements,
- &src_reg.swizzle);
- ir_to_mesa_emit_op1(ir, OPCODE_MOV, mat_column, src_reg);
+ &src.swizzle);
+ emit(ir, OPCODE_MOV, mat_column, src);
mat_column.index++;
}
@@ -1884,7 +1811,7 @@ ir_to_mesa_visitor::visit(ir_constant *ir)
return;
}
- src_reg.file = PROGRAM_CONSTANT;
+ src.file = PROGRAM_CONSTANT;
switch (ir->type->base_type) {
case GLSL_TYPE_FLOAT:
values = &ir->value.f[0];
@@ -1908,7 +1835,7 @@ ir_to_mesa_visitor::visit(ir_constant *ir)
assert(!"Non-float/uint/int/bool constant");
}
- this->result = ir_to_mesa_src_reg(PROGRAM_CONSTANT, -1, ir->type);
+ this->result = src_reg(PROGRAM_CONSTANT, -1, ir->type);
this->result.index = _mesa_add_unnamed_constant(this->prog->Parameters,
values,
ir->type->vector_elements,
@@ -1950,7 +1877,7 @@ ir_to_mesa_visitor::get_function_signature(ir_function_signature *sig)
if (!sig->return_type->is_void()) {
entry->return_reg = get_temp(sig->return_type);
} else {
- entry->return_reg = ir_to_mesa_undef;
+ entry->return_reg = undef_src;
}
this->function_signatures.push_tail(entry);
@@ -1977,9 +1904,9 @@ ir_to_mesa_visitor::visit(ir_call *ir)
assert(storage);
param_rval->accept(this);
- ir_to_mesa_src_reg r = this->result;
+ src_reg r = this->result;
- ir_to_mesa_dst_reg l;
+ dst_reg l;
l.file = storage->file;
l.index = storage->index;
l.reladdr = NULL;
@@ -1987,7 +1914,7 @@ ir_to_mesa_visitor::visit(ir_call *ir)
l.cond_mask = COND_TR;
for (i = 0; i < type_size(param->type); i++) {
- ir_to_mesa_emit_op1(ir, OPCODE_MOV, l, r);
+ emit(ir, OPCODE_MOV, l, r);
l.index++;
r.index++;
}
@@ -1998,8 +1925,7 @@ ir_to_mesa_visitor::visit(ir_call *ir)
assert(!sig_iter.has_next());
/* Emit call instruction */
- call_inst = ir_to_mesa_emit_op1(ir, OPCODE_CAL,
- ir_to_mesa_undef_dst, ir_to_mesa_undef);
+ call_inst = emit(ir, OPCODE_CAL);
call_inst->function = entry;
/* Process out parameters. */
@@ -2013,7 +1939,7 @@ ir_to_mesa_visitor::visit(ir_call *ir)
variable_storage *storage = find_variable_storage(param);
assert(storage);
- ir_to_mesa_src_reg r;
+ src_reg r;
r.file = storage->file;
r.index = storage->index;
r.reladdr = NULL;
@@ -2021,10 +1947,10 @@ ir_to_mesa_visitor::visit(ir_call *ir)
r.negate = 0;
param_rval->accept(this);
- ir_to_mesa_dst_reg l = ir_to_mesa_dst_reg_from_src(this->result);
+ dst_reg l = dst_reg(this->result);
for (i = 0; i < type_size(param->type); i++) {
- ir_to_mesa_emit_op1(ir, OPCODE_MOV, l, r);
+ emit(ir, OPCODE_MOV, l, r);
l.index++;
r.index++;
}
@@ -2041,8 +1967,8 @@ ir_to_mesa_visitor::visit(ir_call *ir)
void
ir_to_mesa_visitor::visit(ir_texture *ir)
{
- ir_to_mesa_src_reg result_src, coord, lod_info, projector;
- ir_to_mesa_dst_reg result_dst, coord_dst;
+ src_reg result_src, coord, lod_info, projector;
+ dst_reg result_dst, coord_dst;
ir_to_mesa_instruction *inst = NULL;
prog_opcode opcode = OPCODE_NOP;
@@ -2054,9 +1980,8 @@ ir_to_mesa_visitor::visit(ir_texture *ir)
* handle cleaning up our mess in that case.
*/
coord = get_temp(glsl_type::vec4_type);
- coord_dst = ir_to_mesa_dst_reg_from_src(coord);
- ir_to_mesa_emit_op1(ir, OPCODE_MOV, coord_dst,
- this->result);
+ coord_dst = dst_reg(coord);
+ emit(ir, OPCODE_MOV, coord_dst, this->result);
if (ir->projector) {
ir->projector->accept(this);
@@ -2067,7 +1992,7 @@ ir_to_mesa_visitor::visit(ir_texture *ir)
* the actual storage for the result here, instead.
*/
result_src = get_temp(glsl_type::vec4_type);
- result_dst = ir_to_mesa_dst_reg_from_src(result_src);
+ result_dst = dst_reg(result_src);
switch (ir->op) {
case ir_tex:
@@ -2093,11 +2018,11 @@ ir_to_mesa_visitor::visit(ir_texture *ir)
if (opcode == OPCODE_TEX) {
/* Slot the projector in as the last component of the coord. */
coord_dst.writemask = WRITEMASK_W;
- ir_to_mesa_emit_op1(ir, OPCODE_MOV, coord_dst, projector);
+ emit(ir, OPCODE_MOV, coord_dst, projector);
coord_dst.writemask = WRITEMASK_XYZW;
opcode = OPCODE_TXP;
} else {
- ir_to_mesa_src_reg coord_w = coord;
+ src_reg coord_w = coord;
coord_w.swizzle = SWIZZLE_WWWW;
/* For the other TEX opcodes there's no projective version
@@ -2105,34 +2030,58 @@ ir_to_mesa_visitor::visit(ir_texture *ir)
* projective divide now.
*/
coord_dst.writemask = WRITEMASK_W;
- ir_to_mesa_emit_op1(ir, OPCODE_RCP, coord_dst, projector);
+ emit(ir, OPCODE_RCP, coord_dst, projector);
+
+ /* In the case where we have to project the coordinates "by hand,"
+ * the shadow comparitor value must also be projected.
+ */
+ src_reg tmp_src = coord;
+ if (ir->shadow_comparitor) {
+ /* Slot the shadow value in as the second to last component of the
+ * coord.
+ */
+ ir->shadow_comparitor->accept(this);
+
+ tmp_src = get_temp(glsl_type::vec4_type);
+ dst_reg tmp_dst = dst_reg(tmp_src);
+
+ tmp_dst.writemask = WRITEMASK_Z;
+ emit(ir, OPCODE_MOV, tmp_dst, this->result);
+
+ tmp_dst.writemask = WRITEMASK_XY;
+ emit(ir, OPCODE_MOV, tmp_dst, coord);
+ }
coord_dst.writemask = WRITEMASK_XYZ;
- ir_to_mesa_emit_op2(ir, OPCODE_MUL, coord_dst, coord, coord_w);
+ emit(ir, OPCODE_MUL, coord_dst, tmp_src, coord_w);
coord_dst.writemask = WRITEMASK_XYZW;
coord.swizzle = SWIZZLE_XYZW;
}
}
- if (ir->shadow_comparitor) {
+ /* If projection is done and the opcode is not OPCODE_TXP, then the shadow
+ * comparitor was put in the correct place (and projected) by the code,
+ * above, that handles by-hand projection.
+ */
+ if (ir->shadow_comparitor && (!ir->projector || opcode == OPCODE_TXP)) {
/* Slot the shadow value in as the second to last component of the
* coord.
*/
ir->shadow_comparitor->accept(this);
coord_dst.writemask = WRITEMASK_Z;
- ir_to_mesa_emit_op1(ir, OPCODE_MOV, coord_dst, this->result);
+ emit(ir, OPCODE_MOV, coord_dst, this->result);
coord_dst.writemask = WRITEMASK_XYZW;
}
if (opcode == OPCODE_TXL || opcode == OPCODE_TXB) {
/* Mesa IR stores lod or lod bias in the last channel of the coords. */
coord_dst.writemask = WRITEMASK_W;
- ir_to_mesa_emit_op1(ir, OPCODE_MOV, coord_dst, lod_info);
+ emit(ir, OPCODE_MOV, coord_dst, lod_info);
coord_dst.writemask = WRITEMASK_XYZW;
}
- inst = ir_to_mesa_emit_op1(ir, opcode, result_dst, coord);
+ inst = emit(ir, opcode, result_dst, coord);
if (ir->shadow_comparitor)
inst->tex_shadow = GL_TRUE;
@@ -2175,24 +2124,24 @@ void
ir_to_mesa_visitor::visit(ir_return *ir)
{
if (ir->get_value()) {
- ir_to_mesa_dst_reg l;
+ dst_reg l;
int i;
assert(current_function);
ir->get_value()->accept(this);
- ir_to_mesa_src_reg r = this->result;
+ src_reg r = this->result;
- l = ir_to_mesa_dst_reg_from_src(current_function->return_reg);
+ l = dst_reg(current_function->return_reg);
for (i = 0; i < type_size(current_function->sig->return_type); i++) {
- ir_to_mesa_emit_op1(ir, OPCODE_MOV, l, r);
+ emit(ir, OPCODE_MOV, l, r);
l.index++;
r.index++;
}
}
- ir_to_mesa_emit_op0(ir, OPCODE_RET);
+ emit(ir, OPCODE_RET);
}
void
@@ -2203,9 +2152,9 @@ ir_to_mesa_visitor::visit(ir_discard *ir)
if (ir->condition) {
ir->condition->accept(this);
this->result.negate = ~this->result.negate;
- ir_to_mesa_emit_op1(ir, OPCODE_KIL, ir_to_mesa_undef_dst, this->result);
+ emit(ir, OPCODE_KIL, undef_dst, this->result);
} else {
- ir_to_mesa_emit_op0(ir, OPCODE_KIL_NV);
+ emit(ir, OPCODE_KIL_NV);
}
fp->UsesKill = GL_TRUE;
@@ -2230,19 +2179,15 @@ ir_to_mesa_visitor::visit(ir_if *ir)
* have something to set cond_update on.
*/
if (cond_inst == prev_inst) {
- ir_to_mesa_src_reg temp = get_temp(glsl_type::bool_type);
- cond_inst = ir_to_mesa_emit_op1(ir->condition, OPCODE_MOV,
- ir_to_mesa_dst_reg_from_src(temp),
- result);
+ src_reg temp = get_temp(glsl_type::bool_type);
+ cond_inst = emit(ir->condition, OPCODE_MOV, dst_reg(temp), result);
}
cond_inst->cond_update = GL_TRUE;
- if_inst = ir_to_mesa_emit_op0(ir->condition, OPCODE_IF);
- if_inst->dst_reg.cond_mask = COND_NE;
+ if_inst = emit(ir->condition, OPCODE_IF);
+ if_inst->dst.cond_mask = COND_NE;
} else {
- if_inst = ir_to_mesa_emit_op1(ir->condition,
- OPCODE_IF, ir_to_mesa_undef_dst,
- this->result);
+ if_inst = emit(ir->condition, OPCODE_IF, undef_dst, this->result);
}
this->instructions.push_tail(if_inst);
@@ -2250,12 +2195,11 @@ ir_to_mesa_visitor::visit(ir_if *ir)
visit_exec_list(&ir->then_instructions, this);
if (!ir->else_instructions.is_empty()) {
- else_inst = ir_to_mesa_emit_op0(ir->condition, OPCODE_ELSE);
+ else_inst = emit(ir->condition, OPCODE_ELSE);
visit_exec_list(&ir->else_instructions, this);
}
- if_inst = ir_to_mesa_emit_op1(ir->condition, OPCODE_ENDIF,
- ir_to_mesa_undef_dst, ir_to_mesa_undef);
+ if_inst = emit(ir->condition, OPCODE_ENDIF);
}
ir_to_mesa_visitor::ir_to_mesa_visitor()
@@ -2273,7 +2217,7 @@ ir_to_mesa_visitor::~ir_to_mesa_visitor()
}
static struct prog_src_register
-mesa_src_reg_from_ir_src_reg(ir_to_mesa_src_reg reg)
+mesa_src_reg_from_ir_src_reg(src_reg reg)
{
struct prog_src_register mesa_reg;
@@ -2730,17 +2674,17 @@ ir_to_mesa_visitor::copy_propagate(void)
foreach_iter(exec_list_iterator, iter, this->instructions) {
ir_to_mesa_instruction *inst = (ir_to_mesa_instruction *)iter.get();
- assert(inst->dst_reg.file != PROGRAM_TEMPORARY
- || inst->dst_reg.index < this->next_temp);
+ assert(inst->dst.file != PROGRAM_TEMPORARY
+ || inst->dst.index < this->next_temp);
/* First, do any copy propagation possible into the src regs. */
for (int r = 0; r < 3; r++) {
ir_to_mesa_instruction *first = NULL;
bool good = true;
- int acp_base = inst->src_reg[r].index * 4;
+ int acp_base = inst->src[r].index * 4;
- if (inst->src_reg[r].file != PROGRAM_TEMPORARY ||
- inst->src_reg[r].reladdr)
+ if (inst->src[r].file != PROGRAM_TEMPORARY ||
+ inst->src[r].reladdr)
continue;
/* See if we can find entries in the ACP consisting of MOVs
@@ -2748,7 +2692,7 @@ ir_to_mesa_visitor::copy_propagate(void)
* of this src register reference.
*/
for (int i = 0; i < 4; i++) {
- int src_chan = GET_SWZ(inst->src_reg[r].swizzle, i);
+ int src_chan = GET_SWZ(inst->src[r].swizzle, i);
ir_to_mesa_instruction *copy_chan = acp[acp_base + src_chan];
if (!copy_chan) {
@@ -2761,8 +2705,8 @@ ir_to_mesa_visitor::copy_propagate(void)
if (!first) {
first = copy_chan;
} else {
- if (first->src_reg[0].file != copy_chan->src_reg[0].file ||
- first->src_reg[0].index != copy_chan->src_reg[0].index) {
+ if (first->src[0].file != copy_chan->src[0].file ||
+ first->src[0].index != copy_chan->src[0].index) {
good = false;
break;
}
@@ -2773,17 +2717,17 @@ ir_to_mesa_visitor::copy_propagate(void)
/* We've now validated that we can copy-propagate to
* replace this src register reference. Do it.
*/
- inst->src_reg[r].file = first->src_reg[0].file;
- inst->src_reg[r].index = first->src_reg[0].index;
+ inst->src[r].file = first->src[0].file;
+ inst->src[r].index = first->src[0].index;
int swizzle = 0;
for (int i = 0; i < 4; i++) {
- int src_chan = GET_SWZ(inst->src_reg[r].swizzle, i);
+ int src_chan = GET_SWZ(inst->src[r].swizzle, i);
ir_to_mesa_instruction *copy_inst = acp[acp_base + src_chan];
- swizzle |= (GET_SWZ(copy_inst->src_reg[0].swizzle, src_chan) <<
+ swizzle |= (GET_SWZ(copy_inst->src[0].swizzle, src_chan) <<
(3 * i));
}
- inst->src_reg[r].swizzle = swizzle;
+ inst->src[r].swizzle = swizzle;
}
}
@@ -2820,13 +2764,13 @@ ir_to_mesa_visitor::copy_propagate(void)
/* Continuing the block, clear any written channels from
* the ACP.
*/
- if (inst->dst_reg.file == PROGRAM_TEMPORARY && inst->dst_reg.reladdr) {
+ if (inst->dst.file == PROGRAM_TEMPORARY && inst->dst.reladdr) {
/* Any temporary might be written, so no copy propagation
* across this instruction.
*/
memset(acp, 0, sizeof(*acp) * this->next_temp * 4);
- } else if (inst->dst_reg.file == PROGRAM_OUTPUT &&
- inst->dst_reg.reladdr) {
+ } else if (inst->dst.file == PROGRAM_OUTPUT &&
+ inst->dst.reladdr) {
/* Any output might be written, so no copy propagation
* from outputs across this instruction.
*/
@@ -2835,17 +2779,17 @@ ir_to_mesa_visitor::copy_propagate(void)
if (!acp[4 * r + c])
continue;
- if (acp[4 * r + c]->src_reg[0].file == PROGRAM_OUTPUT)
+ if (acp[4 * r + c]->src[0].file == PROGRAM_OUTPUT)
acp[4 * r + c] = NULL;
}
}
- } else if (inst->dst_reg.file == PROGRAM_TEMPORARY ||
- inst->dst_reg.file == PROGRAM_OUTPUT) {
+ } else if (inst->dst.file == PROGRAM_TEMPORARY ||
+ inst->dst.file == PROGRAM_OUTPUT) {
/* Clear where it's used as dst. */
- if (inst->dst_reg.file == PROGRAM_TEMPORARY) {
+ if (inst->dst.file == PROGRAM_TEMPORARY) {
for (int c = 0; c < 4; c++) {
- if (inst->dst_reg.writemask & (1 << c)) {
- acp[4 * inst->dst_reg.index + c] = NULL;
+ if (inst->dst.writemask & (1 << c)) {
+ acp[4 * inst->dst.index + c] = NULL;
}
}
}
@@ -2856,11 +2800,11 @@ ir_to_mesa_visitor::copy_propagate(void)
if (!acp[4 * r + c])
continue;
- int src_chan = GET_SWZ(acp[4 * r + c]->src_reg[0].swizzle, c);
+ int src_chan = GET_SWZ(acp[4 * r + c]->src[0].swizzle, c);
- if (acp[4 * r + c]->src_reg[0].file == inst->dst_reg.file &&
- acp[4 * r + c]->src_reg[0].index == inst->dst_reg.index &&
- inst->dst_reg.writemask & (1 << src_chan))
+ if (acp[4 * r + c]->src[0].file == inst->dst.file &&
+ acp[4 * r + c]->src[0].index == inst->dst.index &&
+ inst->dst.writemask & (1 << src_chan))
{
acp[4 * r + c] = NULL;
}
@@ -2872,15 +2816,15 @@ ir_to_mesa_visitor::copy_propagate(void)
/* If this is a copy, add it to the ACP. */
if (inst->op == OPCODE_MOV &&
- inst->dst_reg.file == PROGRAM_TEMPORARY &&
- !inst->dst_reg.reladdr &&
+ inst->dst.file == PROGRAM_TEMPORARY &&
+ !inst->dst.reladdr &&
!inst->saturate &&
- !inst->src_reg[0].reladdr &&
- !inst->src_reg[0].negate) {
+ !inst->src[0].reladdr &&
+ !inst->src[0].negate) {
for (int i = 0; i < 4; i++) {
- if (inst->dst_reg.writemask & (1 << i)) {
- acp[4 * inst->dst_reg.index + i] = inst;
- acp_level[4 * inst->dst_reg.index + i] = level;
+ if (inst->dst.writemask & (1 << i)) {
+ acp[4 * inst->dst.index + i] = inst;
+ acp_level[4 * inst->dst.index + i] = level;
}
}
}
@@ -2945,7 +2889,7 @@ get_mesa_program(struct gl_context *ctx,
/* Emit Mesa IR for main(). */
visit_exec_list(shader->ir, &v);
- v.ir_to_mesa_emit_op0(NULL, OPCODE_END);
+ v.emit(NULL, OPCODE_END);
/* Now emit bodies for any functions that were used. */
do {
@@ -2957,7 +2901,7 @@ get_mesa_program(struct gl_context *ctx,
if (!entry->bgn_inst) {
v.current_function = entry;
- entry->bgn_inst = v.ir_to_mesa_emit_op0(NULL, OPCODE_BGNSUB);
+ entry->bgn_inst = v.emit(NULL, OPCODE_BGNSUB);
entry->bgn_inst->function = entry;
visit_exec_list(&entry->sig->body, &v);
@@ -2965,10 +2909,10 @@ get_mesa_program(struct gl_context *ctx,
ir_to_mesa_instruction *last;
last = (ir_to_mesa_instruction *)v.instructions.get_tail();
if (last->op != OPCODE_RET)
- v.ir_to_mesa_emit_op0(NULL, OPCODE_RET);
+ v.emit(NULL, OPCODE_RET);
ir_to_mesa_instruction *end;
- end = v.ir_to_mesa_emit_op0(NULL, OPCODE_ENDSUB);
+ end = v.emit(NULL, OPCODE_ENDSUB);
end->function = entry;
progress = GL_TRUE;
@@ -3002,14 +2946,14 @@ get_mesa_program(struct gl_context *ctx,
mesa_inst->CondUpdate = inst->cond_update;
if (inst->saturate)
mesa_inst->SaturateMode = SATURATE_ZERO_ONE;
- mesa_inst->DstReg.File = inst->dst_reg.file;
- mesa_inst->DstReg.Index = inst->dst_reg.index;
- mesa_inst->DstReg.CondMask = inst->dst_reg.cond_mask;
- mesa_inst->DstReg.WriteMask = inst->dst_reg.writemask;
- mesa_inst->DstReg.RelAddr = inst->dst_reg.reladdr != NULL;
- mesa_inst->SrcReg[0] = mesa_src_reg_from_ir_src_reg(inst->src_reg[0]);
- mesa_inst->SrcReg[1] = mesa_src_reg_from_ir_src_reg(inst->src_reg[1]);
- mesa_inst->SrcReg[2] = mesa_src_reg_from_ir_src_reg(inst->src_reg[2]);
+ mesa_inst->DstReg.File = inst->dst.file;
+ mesa_inst->DstReg.Index = inst->dst.index;
+ mesa_inst->DstReg.CondMask = inst->dst.cond_mask;
+ mesa_inst->DstReg.WriteMask = inst->dst.writemask;
+ mesa_inst->DstReg.RelAddr = inst->dst.reladdr != NULL;
+ mesa_inst->SrcReg[0] = mesa_src_reg_from_ir_src_reg(inst->src[0]);
+ mesa_inst->SrcReg[1] = mesa_src_reg_from_ir_src_reg(inst->src[1]);
+ mesa_inst->SrcReg[2] = mesa_src_reg_from_ir_src_reg(inst->src[2]);
mesa_inst->TexSrcUnit = inst->sampler;
mesa_inst->TexSrcTarget = inst->tex_target;
mesa_inst->TexShadow = inst->tex_shadow;
diff --git a/src/mesa/program/prog_optimize.c b/src/mesa/program/prog_optimize.c
index 96971f2eda4..11debc485eb 100644
--- a/src/mesa/program/prog_optimize.c
+++ b/src/mesa/program/prog_optimize.c
@@ -74,6 +74,17 @@ get_src_arg_mask(const struct prog_instruction *inst,
case OPCODE_MAD:
case OPCODE_MUL:
case OPCODE_SUB:
+ case OPCODE_CMP:
+ case OPCODE_FLR:
+ case OPCODE_FRC:
+ case OPCODE_LRP:
+ case OPCODE_SEQ:
+ case OPCODE_SGE:
+ case OPCODE_SGT:
+ case OPCODE_SLE:
+ case OPCODE_SLT:
+ case OPCODE_SNE:
+ case OPCODE_SSG:
channel_mask = inst->DstReg.WriteMask & dst_mask;
break;
case OPCODE_RCP:
@@ -937,24 +948,35 @@ update_interval(GLint intBegin[], GLint intEnd[],
GLuint index, GLuint ic)
{
int i;
+ GLuint begin = ic;
+ GLuint end = ic;
/* If the register is used in a loop, extend its lifetime through the end
* of the outermost loop that doesn't contain its definition.
*/
for (i = 0; i < loopStackDepth; i++) {
if (intBegin[index] < loopStack[i].Start) {
- ic = loopStack[i].End;
+ end = loopStack[i].End;
break;
}
}
+ /* Variables that are live at the end of a loop will also be live at the
+ * beginning, so an instruction inside of a loop should have its live
+ * interval begin at the start of the outermost loop.
+ */
+ if (loopStackDepth > 0 && ic > loopStack[0].Start && ic < loopStack[0].End) {
+ begin = loopStack[0].Start;
+ }
+
ASSERT(index < REG_ALLOCATE_MAX_PROGRAM_TEMPS);
if (intBegin[index] == -1) {
ASSERT(intEnd[index] == -1);
- intBegin[index] = intEnd[index] = ic;
+ intBegin[index] = begin;
+ intEnd[index] = end;
}
else {
- intEnd[index] = ic;
+ intEnd[index] = end;
}
}
@@ -1224,6 +1246,83 @@ print_it(struct gl_context *ctx, struct gl_program *program, const char *txt) {
}
#endif
+/**
+ * This pass replaces CMP T0, T1 T2 T0 with MOV T0, T2 when the CMP
+ * instruction is the first instruction to write to register T0. The are
+ * several lowering passes done in GLSL IR (e.g. branches and
+ * relative addressing) that create a large number of conditional assignments
+ * that ir_to_mesa converts to CMP instructions like the one mentioned above.
+ *
+ * Here is why this conversion is safe:
+ * CMP T0, T1 T2 T0 can be expanded to:
+ * if (T1 < 0.0)
+ * MOV T0, T2;
+ * else
+ * MOV T0, T0;
+ *
+ * If (T1 < 0.0) evaluates to true then our replacement MOV T0, T2 is the same
+ * as the original program. If (T1 < 0.0) evaluates to false, executing
+ * MOV T0, T0 will store a garbage value in T0 since T0 is uninitialized.
+ * Therefore, it doesn't matter that we are replacing MOV T0, T0 with MOV T0, T2
+ * because any instruction that was going to read from T0 after this was going
+ * to read a garbage value anyway.
+ */
+static void
+_mesa_simplify_cmp(struct gl_program * program)
+{
+ GLuint tempWrites[REG_ALLOCATE_MAX_PROGRAM_TEMPS];
+ GLuint outputWrites[MAX_PROGRAM_OUTPUTS];
+ GLuint i;
+
+ if (dbg) {
+ printf("Optimize: Begin reads without writes\n");
+ _mesa_print_program(program);
+ }
+
+ for (i = 0; i < REG_ALLOCATE_MAX_PROGRAM_TEMPS; i++) {
+ tempWrites[i] = 0;
+ }
+
+ for (i = 0; i < MAX_PROGRAM_OUTPUTS; i++) {
+ outputWrites[i] = 0;
+ }
+
+ for (i = 0; i < program->NumInstructions; i++) {
+ struct prog_instruction *inst = program->Instructions + i;
+ GLuint prevWriteMask;
+
+ /* Give up if we encounter relative addressing or flow control. */
+ if (_mesa_is_flow_control_opcode(inst->Opcode) || inst->DstReg.RelAddr) {
+ return;
+ }
+
+ if (inst->DstReg.File == PROGRAM_OUTPUT) {
+ assert(inst->DstReg.Index < MAX_PROGRAM_OUTPUTS);
+ prevWriteMask = outputWrites[inst->DstReg.Index];
+ outputWrites[inst->DstReg.Index] |= inst->DstReg.WriteMask;
+ } else if (inst->DstReg.File == PROGRAM_TEMPORARY) {
+ assert(inst->DstReg.Index < REG_ALLOCATE_MAX_PROGRAM_TEMPS);
+ prevWriteMask = tempWrites[inst->DstReg.Index];
+ tempWrites[inst->DstReg.Index] |= inst->DstReg.WriteMask;
+ }
+
+ /* For a CMP to be considered a conditional write, the destination
+ * register and source register two must be the same. */
+ if (inst->Opcode == OPCODE_CMP
+ && !(inst->DstReg.WriteMask & prevWriteMask)
+ && inst->SrcReg[2].File == inst->DstReg.File
+ && inst->SrcReg[2].Index == inst->DstReg.Index
+ && inst->DstReg.WriteMask == get_src_arg_mask(inst, 2, NO_MASK)) {
+
+ inst->Opcode = OPCODE_MOV;
+ inst->SrcReg[0] = inst->SrcReg[1];
+ }
+ }
+ if (dbg) {
+ printf("Optimize: End reads without writes\n");
+ _mesa_print_program(program);
+ }
+}
/**
* Apply optimizations to the given program to eliminate unnecessary
@@ -1234,6 +1333,7 @@ _mesa_optimize_program(struct gl_context *ctx, struct gl_program *program)
{
GLboolean any_change;
+ _mesa_simplify_cmp(program);
/* Stop when no modifications were output */
do {
any_change = GL_FALSE;
diff --git a/src/mesa/program/prog_statevars.c b/src/mesa/program/prog_statevars.c
index c310acb01d4..1fd26f44d56 100644
--- a/src/mesa/program/prog_statevars.c
+++ b/src/mesa/program/prog_statevars.c
@@ -237,11 +237,17 @@ _mesa_fetch_state(struct gl_context *ctx, const gl_state_index state[],
{
/* state[1] is the texture unit */
const GLuint unit = (GLuint) state[1];
- COPY_4V(value, ctx->Texture.Unit[unit].EnvColor);
+ if(ctx->Color._ClampFragmentColor)
+ COPY_4V(value, ctx->Texture.Unit[unit].EnvColor);
+ else
+ COPY_4V(value, ctx->Texture.Unit[unit].EnvColorUnclamped);
}
return;
case STATE_FOG_COLOR:
- COPY_4V(value, ctx->Fog.Color);
+ if(ctx->Color._ClampFragmentColor)
+ COPY_4V(value, ctx->Fog.Color);
+ else
+ COPY_4V(value, ctx->Fog.ColorUnclamped);
return;
case STATE_FOG_PARAMS:
value[0] = ctx->Fog.Density;
@@ -399,6 +405,22 @@ _mesa_fetch_state(struct gl_context *ctx, const gl_state_index state[],
}
return;
+ case STATE_CURRENT_ATTRIB_MAYBE_VP_CLAMPED:
+ {
+ const GLuint idx = (GLuint) state[2];
+ if(ctx->Light._ClampVertexColor &&
+ (idx == VERT_ATTRIB_COLOR0 ||
+ idx == VERT_ATTRIB_COLOR1)) {
+ value[0] = CLAMP(ctx->Current.Attrib[idx][0], 0.0f, 1.0f);
+ value[1] = CLAMP(ctx->Current.Attrib[idx][1], 0.0f, 1.0f);
+ value[2] = CLAMP(ctx->Current.Attrib[idx][2], 0.0f, 1.0f);
+ value[3] = CLAMP(ctx->Current.Attrib[idx][3], 0.0f, 1.0f);
+ }
+ else
+ COPY_4V(value, ctx->Current.Attrib[idx]);
+ }
+ return;
+
case STATE_NORMAL_SCALE:
ASSIGN_4V(value,
ctx->_ModelViewInvScale,
@@ -560,7 +582,7 @@ _mesa_fetch_state(struct gl_context *ctx, const gl_state_index state[],
value[0] =
value[1] =
value[2] =
- value[3] = texObj->CompareFailValue;
+ value[3] = texObj->Sampler.CompareFailValue;
}
}
return;
@@ -649,10 +671,12 @@ _mesa_program_state_flags(const gl_state_index state[STATE_LENGTH])
return _NEW_LIGHT;
case STATE_TEXGEN:
- case STATE_TEXENV_COLOR:
return _NEW_TEXTURE;
+ case STATE_TEXENV_COLOR:
+ return _NEW_TEXTURE | _NEW_BUFFERS | _NEW_FRAG_CLAMP;
case STATE_FOG_COLOR:
+ return _NEW_FOG | _NEW_BUFFERS | _NEW_FRAG_CLAMP;
case STATE_FOG_PARAMS:
return _NEW_FOG;
@@ -688,6 +712,8 @@ _mesa_program_state_flags(const gl_state_index state[STATE_LENGTH])
switch (state[1]) {
case STATE_CURRENT_ATTRIB:
return _NEW_CURRENT_ATTRIB;
+ case STATE_CURRENT_ATTRIB_MAYBE_VP_CLAMPED:
+ return _NEW_CURRENT_ATTRIB | _NEW_LIGHT | _NEW_BUFFERS;
case STATE_NORMAL_SCALE:
return _NEW_MODELVIEW;
diff --git a/src/mesa/program/prog_statevars.h b/src/mesa/program/prog_statevars.h
index f2407af9c87..9fe8d81b3dd 100644
--- a/src/mesa/program/prog_statevars.h
+++ b/src/mesa/program/prog_statevars.h
@@ -106,6 +106,7 @@ typedef enum gl_state_index_ {
STATE_INTERNAL, /* Mesa additions */
STATE_CURRENT_ATTRIB, /* ctx->Current vertex attrib value */
+ STATE_CURRENT_ATTRIB_MAYBE_VP_CLAMPED, /* ctx->Current vertex attrib value after passthrough vertex processing */
STATE_NORMAL_SCALE,
STATE_TEXRECT_SCALE,
STATE_FOG_PARAMS_OPTIMIZED, /* for faster fog calc */
diff --git a/src/mesa/program/program.c b/src/mesa/program/program.c
index 79034ab26f2..78efca9f122 100644
--- a/src/mesa/program/program.c
+++ b/src/mesa/program/program.c
@@ -75,10 +75,10 @@ _mesa_init_program(struct gl_context *ctx)
ASSERT(ctx->Const.FragmentProgram.MaxAddressOffset <= (1 << INST_INDEX_BITS));
/* If this fails, increase prog_instruction::TexSrcUnit size */
- ASSERT(MAX_TEXTURE_UNITS < (1 << 5));
+ ASSERT(MAX_TEXTURE_UNITS <= (1 << 5));
/* If this fails, increase prog_instruction::TexSrcTarget size */
- ASSERT(NUM_TEXTURE_TARGETS < (1 << 3));
+ ASSERT(NUM_TEXTURE_TARGETS <= (1 << 3));
ctx->Program.ErrorPos = -1;
ctx->Program.ErrorString = _mesa_strdup("");
@@ -557,7 +557,6 @@ _mesa_clone_program(struct gl_context *ctx, const struct gl_program *prog)
const struct gl_fragment_program *fp
= (const struct gl_fragment_program *) prog;
struct gl_fragment_program *fpc = (struct gl_fragment_program *) clone;
- fpc->FogOption = fp->FogOption;
fpc->UsesKill = fp->UsesKill;
fpc->OriginUpperLeft = fp->OriginUpperLeft;
fpc->PixelCenterInteger = fp->PixelCenterInteger;
diff --git a/src/mesa/program/program_parse.y b/src/mesa/program/program_parse.y
index 19aa8ccdb53..b35bc5a7cae 100644
--- a/src/mesa/program/program_parse.y
+++ b/src/mesa/program/program_parse.y
@@ -2064,6 +2064,34 @@ optResultFaceType:
? VERT_RESULT_COL0
: FRAG_RESULT_COLOR;
}
+ | '[' INTEGER ']'
+ {
+ if (state->mode == ARB_vertex) {
+ yyerror(& @1, state, "invalid program result name");
+ YYERROR;
+ } else {
+ if (!state->option.DrawBuffers) {
+ /* From the ARB_draw_buffers spec (same text exists
+ * for ATI_draw_buffers):
+ *
+ * If this option is not specified, a fragment
+ * program that attempts to bind
+ * "result.color[n]" will fail to load, and only
+ * "result.color" will be allowed.
+ */
+ yyerror(& @1, state,
+ "result.color[] used without "
+ "`OPTION ARB_draw_buffers' or "
+ "`OPTION ATI_draw_buffers'");
+ YYERROR;
+ } else if ($2 >= state->MaxDrawBuffers) {
+ yyerror(& @1, state,
+ "result.color[] exceeds MAX_DRAW_BUFFERS_ARB");
+ YYERROR;
+ }
+ $$ = FRAG_RESULT_DATA0 + $2;
+ }
+ }
| FRONT
{
if (state->mode == ARB_vertex) {
@@ -2681,6 +2709,7 @@ _mesa_parse_arb_program(struct gl_context *ctx, GLenum target, const GLubyte *st
state->MaxClipPlanes = ctx->Const.MaxClipPlanes;
state->MaxLights = ctx->Const.MaxLights;
state->MaxProgramMatrices = ctx->Const.MaxProgramMatrices;
+ state->MaxDrawBuffers = ctx->Const.MaxDrawBuffers;
state->state_param_enum = (target == GL_VERTEX_PROGRAM_ARB)
? STATE_VERTEX_PROGRAM : STATE_FRAGMENT_PROGRAM;
diff --git a/src/mesa/program/program_parse_extra.c b/src/mesa/program/program_parse_extra.c
index ae98b782b70..4d928483e16 100644
--- a/src/mesa/program/program_parse_extra.c
+++ b/src/mesa/program/program_parse_extra.c
@@ -229,6 +229,16 @@ _mesa_ARBfp_parse_option(struct asm_parser_state *state, const char *option)
}
}
}
+ } else if (strncmp(option, "ATI_", 4) == 0) {
+ option += 4;
+
+ if (strcmp(option, "draw_buffers") == 0) {
+ /* Don't need to check extension availability because all Mesa-based
+ * drivers support GL_ATI_draw_buffers.
+ */
+ state->option.DrawBuffers = 1;
+ return 1;
+ }
} else if (strncmp(option, "NV_fragment_program", 19) == 0) {
option += 19;
diff --git a/src/mesa/program/program_parser.h b/src/mesa/program/program_parser.h
index d689eef7958..8e5aaee95e5 100644
--- a/src/mesa/program/program_parser.h
+++ b/src/mesa/program/program_parser.h
@@ -173,6 +173,7 @@ struct asm_parser_state {
unsigned MaxClipPlanes;
unsigned MaxLights;
unsigned MaxProgramMatrices;
+ unsigned MaxDrawBuffers;
/*@}*/
/**
diff --git a/src/mesa/program/programopt.c b/src/mesa/program/programopt.c
index f92881f8337..a239da2c609 100644
--- a/src/mesa/program/programopt.c
+++ b/src/mesa/program/programopt.c
@@ -230,15 +230,25 @@ _mesa_insert_mvp_code(struct gl_context *ctx, struct gl_vertex_program *vprog)
/**
- * Append extra instructions onto the given fragment program to implement
- * the fog mode specified by fprog->FogOption.
- * The fragment.fogcoord input is used to compute the fog blend factor.
+ * Append instructions to implement fog
*
- * XXX with a little work, this function could be adapted to add fog code
+ * The \c fragment.fogcoord input is used to compute the fog blend factor.
+ *
+ * \param ctx The GL context
+ * \param fprog Fragment program that fog instructions will be appended to.
+ * \param fog_mode Fog mode. One of \c GL_EXP, \c GL_EXP2, or \c GL_LINEAR.
+ * \param saturate True if writes to color outputs should be clamped to [0, 1]
+ *
+ * \note
+ * This function sets \c FRAG_BIT_FOGC in \c fprog->Base.InputsRead.
+ *
+ * \todo With a little work, this function could be adapted to add fog code
* to vertex programs too.
*/
void
-_mesa_append_fog_code(struct gl_context *ctx, struct gl_fragment_program *fprog)
+_mesa_append_fog_code(struct gl_context *ctx,
+ struct gl_fragment_program *fprog, GLenum fog_mode,
+ GLboolean saturate)
{
static const gl_state_index fogPStateOpt[STATE_LENGTH]
= { STATE_INTERNAL, STATE_FOG_PARAMS_OPTIMIZED, 0, 0, 0 };
@@ -251,9 +261,9 @@ _mesa_append_fog_code(struct gl_context *ctx, struct gl_fragment_program *fprog)
GLint fogPRefOpt, fogColorRef; /* state references */
GLuint colorTemp, fogFactorTemp; /* temporary registerss */
- if (fprog->FogOption == GL_NONE) {
+ if (fog_mode == GL_NONE) {
_mesa_problem(ctx, "_mesa_append_fog_code() called for fragment program"
- " with FogOption == GL_NONE");
+ " with fog_mode == GL_NONE");
return;
}
@@ -290,7 +300,7 @@ _mesa_append_fog_code(struct gl_context *ctx, struct gl_fragment_program *fprog)
/* change the instruction to write to colorTemp w/ clamping */
inst->DstReg.File = PROGRAM_TEMPORARY;
inst->DstReg.Index = colorTemp;
- inst->SaturateMode = SATURATE_ZERO_ONE;
+ inst->SaturateMode = saturate;
/* don't break (may be several writes to result.color) */
}
inst++;
@@ -300,7 +310,8 @@ _mesa_append_fog_code(struct gl_context *ctx, struct gl_fragment_program *fprog)
_mesa_init_instructions(inst, 5);
/* emit instructions to compute fog blending factor */
- if (fprog->FogOption == GL_LINEAR) {
+ /* this is always clamped to [0, 1] regardless of fragment clamping */
+ if (fog_mode == GL_LINEAR) {
/* MAD fogFactorTemp.x, fragment.fogcoord.x, fogPRefOpt.x, fogPRefOpt.y; */
inst->Opcode = OPCODE_MAD;
inst->DstReg.File = PROGRAM_TEMPORARY;
@@ -319,7 +330,7 @@ _mesa_append_fog_code(struct gl_context *ctx, struct gl_fragment_program *fprog)
inst++;
}
else {
- ASSERT(fprog->FogOption == GL_EXP || fprog->FogOption == GL_EXP2);
+ ASSERT(fog_mode == GL_EXP || fog_mode == GL_EXP2);
/* fogPRefOpt.z = d/ln(2), fogPRefOpt.w = d/sqrt(ln(2) */
/* EXP: MUL fogFactorTemp.x, fogPRefOpt.z, fragment.fogcoord.x; */
/* EXP2: MUL fogFactorTemp.x, fogPRefOpt.w, fragment.fogcoord.x; */
@@ -330,12 +341,12 @@ _mesa_append_fog_code(struct gl_context *ctx, struct gl_fragment_program *fprog)
inst->SrcReg[0].File = PROGRAM_STATE_VAR;
inst->SrcReg[0].Index = fogPRefOpt;
inst->SrcReg[0].Swizzle
- = (fprog->FogOption == GL_EXP) ? SWIZZLE_ZZZZ : SWIZZLE_WWWW;
+ = (fog_mode == GL_EXP) ? SWIZZLE_ZZZZ : SWIZZLE_WWWW;
inst->SrcReg[1].File = PROGRAM_INPUT;
inst->SrcReg[1].Index = FRAG_ATTRIB_FOGC;
inst->SrcReg[1].Swizzle = SWIZZLE_XXXX;
inst++;
- if (fprog->FogOption == GL_EXP2) {
+ if (fog_mode == GL_EXP2) {
/* MUL fogFactorTemp.x, fogFactorTemp.x, fogFactorTemp.x; */
inst->Opcode = OPCODE_MUL;
inst->DstReg.File = PROGRAM_TEMPORARY;
@@ -396,7 +407,6 @@ _mesa_append_fog_code(struct gl_context *ctx, struct gl_fragment_program *fprog)
fprog->Base.Instructions = newInst;
fprog->Base.NumInstructions = inst - newInst;
fprog->Base.InputsRead |= FRAG_BIT_FOGC;
- /* XXX do this? fprog->FogOption = GL_NONE; */
}
diff --git a/src/mesa/program/programopt.h b/src/mesa/program/programopt.h
index ef6f1bd0794..b9205823c29 100644
--- a/src/mesa/program/programopt.h
+++ b/src/mesa/program/programopt.h
@@ -32,7 +32,9 @@ extern void
_mesa_insert_mvp_code(struct gl_context *ctx, struct gl_vertex_program *vprog);
extern void
-_mesa_append_fog_code(struct gl_context *ctx, struct gl_fragment_program *fprog);
+_mesa_append_fog_code(struct gl_context *ctx,
+ struct gl_fragment_program *fprog, GLenum fog_mode,
+ GLboolean saturate);
extern void
_mesa_count_texture_indirections(struct gl_program *prog);
diff --git a/src/mesa/sources.mak b/src/mesa/sources.mak
index fcf8ab2e794..9b2cb1a3c14 100644
--- a/src/mesa/sources.mak
+++ b/src/mesa/sources.mak
@@ -71,6 +71,7 @@ MAIN_SOURCES = \
main/readpix.c \
main/remap.c \
main/renderbuffer.c \
+ main/samplerobj.c \
main/scissor.c \
main/shaderapi.c \
main/shaderobj.c \
diff --git a/src/mesa/state_tracker/st_atom_blend.c b/src/mesa/state_tracker/st_atom_blend.c
index fb1c7a4efee..d1844e1066f 100644
--- a/src/mesa/state_tracker/st_atom_blend.c
+++ b/src/mesa/state_tracker/st_atom_blend.c
@@ -286,7 +286,7 @@ update_blend( struct st_context *st )
{
struct pipe_blend_color bc;
- COPY_4FV(bc.color, st->ctx->Color.BlendColor);
+ COPY_4FV(bc.color, st->ctx->Color.BlendColorUnclamped);
cso_set_blend_color(st->cso_context, &bc);
}
}
diff --git a/src/mesa/state_tracker/st_atom_depth.c b/src/mesa/state_tracker/st_atom_depth.c
index aaee432a216..6c51b1ac1a2 100644
--- a/src/mesa/state_tracker/st_atom_depth.c
+++ b/src/mesa/state_tracker/st_atom_depth.c
@@ -142,7 +142,7 @@ update_depth_stencil_alpha(struct st_context *st)
if (ctx->Color.AlphaEnabled) {
dsa->alpha.enabled = 1;
dsa->alpha.func = st_compare_func_to_pipe(ctx->Color.AlphaFunc);
- dsa->alpha.ref_value = ctx->Color.AlphaRef;
+ dsa->alpha.ref_value = ctx->Color.AlphaRefUnclamped;
}
cso_set_depth_stencil_alpha(st->cso_context, dsa);
diff --git a/src/mesa/state_tracker/st_atom_rasterizer.c b/src/mesa/state_tracker/st_atom_rasterizer.c
index 8bccceeec53..250cbb2260c 100644
--- a/src/mesa/state_tracker/st_atom_rasterizer.c
+++ b/src/mesa/state_tracker/st_atom_rasterizer.c
@@ -112,6 +112,8 @@ static void update_raster_state( struct st_context *st )
raster->light_twoside = 1;
}
+ raster->clamp_vertex_color = ctx->Light._ClampVertexColor;
+
/* _NEW_POLYGON
*/
if (ctx->Polygon.CullFlag) {
@@ -252,6 +254,9 @@ static void update_raster_state( struct st_context *st )
if (ctx->Scissor.Enabled)
raster->scissor = 1;
+ /* _NEW_FRAG_CLAMP */
+ raster->clamp_fragment_color = ctx->Color._ClampFragmentColor;
+
raster->gl_rasterization_rules = 1;
cso_set_rasterizer(st->cso_context, raster);
@@ -267,7 +272,8 @@ const struct st_tracked_state st_update_rasterizer = {
_NEW_POINT |
_NEW_POLYGON |
_NEW_PROGRAM |
- _NEW_SCISSOR), /* mesa state dependencies*/
+ _NEW_SCISSOR |
+ _NEW_FRAG_CLAMP), /* mesa state dependencies*/
ST_NEW_VERTEX_PROGRAM, /* state tracker dependencies */
},
update_raster_state /* update function */
diff --git a/src/mesa/state_tracker/st_atom_sampler.c b/src/mesa/state_tracker/st_atom_sampler.c
index 474cbd5897d..808aa73a083 100644
--- a/src/mesa/state_tracker/st_atom_sampler.c
+++ b/src/mesa/state_tracker/st_atom_sampler.c
@@ -38,6 +38,7 @@
#include "st_cb_texture.h"
#include "st_format.h"
#include "st_atom.h"
+#include "st_texture.h"
#include "pipe/p_context.h"
#include "pipe/p_defines.h"
@@ -138,6 +139,7 @@ update_samplers(struct st_context *st)
if (samplersUsed & (1 << su)) {
struct gl_texture_object *texobj;
struct gl_texture_image *teximg;
+ struct gl_sampler_object *msamp;
GLuint texUnit;
if (fprog->Base.SamplersUsed & (1 << su))
@@ -152,25 +154,27 @@ update_samplers(struct st_context *st)
teximg = texobj->Image[0][texobj->BaseLevel];
- sampler->wrap_s = gl_wrap_xlate(texobj->WrapS);
- sampler->wrap_t = gl_wrap_xlate(texobj->WrapT);
- sampler->wrap_r = gl_wrap_xlate(texobj->WrapR);
+ msamp = st_get_mesa_sampler(st->ctx, texUnit);
- sampler->min_img_filter = gl_filter_to_img_filter(texobj->MinFilter);
- sampler->min_mip_filter = gl_filter_to_mip_filter(texobj->MinFilter);
- sampler->mag_img_filter = gl_filter_to_img_filter(texobj->MagFilter);
+ sampler->wrap_s = gl_wrap_xlate(msamp->WrapS);
+ sampler->wrap_t = gl_wrap_xlate(msamp->WrapT);
+ sampler->wrap_r = gl_wrap_xlate(msamp->WrapR);
+
+ sampler->min_img_filter = gl_filter_to_img_filter(msamp->MinFilter);
+ sampler->min_mip_filter = gl_filter_to_mip_filter(msamp->MinFilter);
+ sampler->mag_img_filter = gl_filter_to_img_filter(msamp->MagFilter);
if (texobj->Target != GL_TEXTURE_RECTANGLE_ARB)
sampler->normalized_coords = 1;
- sampler->lod_bias = st->ctx->Texture.Unit[su].LodBias;
-
- sampler->min_lod = texobj->BaseLevel + texobj->MinLod;
- if (sampler->min_lod < texobj->BaseLevel)
- sampler->min_lod = texobj->BaseLevel;
+ sampler->lod_bias = st->ctx->Texture.Unit[texUnit].LodBias +
+ msamp->LodBias;
- sampler->max_lod = MIN2((GLfloat) texobj->MaxLevel,
- (texobj->MaxLod + texobj->BaseLevel));
+ sampler->min_lod = CLAMP(msamp->MinLod,
+ 0.0f,
+ (GLfloat) texobj->MaxLevel - texobj->BaseLevel);
+ sampler->max_lod = MIN2((GLfloat) texobj->MaxLevel - texobj->BaseLevel,
+ msamp->MaxLod);
if (sampler->max_lod < sampler->min_lod) {
/* The GL spec doesn't seem to specify what to do in this case.
* Swap the values.
@@ -181,17 +185,18 @@ update_samplers(struct st_context *st)
assert(sampler->min_lod <= sampler->max_lod);
}
- st_translate_color(texobj->BorderColor.f,
+ st_translate_color(msamp->BorderColor.f,
teximg ? teximg->_BaseFormat : GL_RGBA,
sampler->border_color);
- sampler->max_anisotropy = (texobj->MaxAnisotropy == 1.0 ? 0 : (GLuint)texobj->MaxAnisotropy);
+ sampler->max_anisotropy = (msamp->MaxAnisotropy == 1.0 ?
+ 0 : (GLuint) msamp->MaxAnisotropy);
/* only care about ARB_shadow, not SGI shadow */
- if (texobj->CompareMode == GL_COMPARE_R_TO_TEXTURE) {
+ if (msamp->CompareMode == GL_COMPARE_R_TO_TEXTURE) {
sampler->compare_mode = PIPE_TEX_COMPARE_R_TO_TEXTURE;
sampler->compare_func
- = st_compare_func_to_pipe(texobj->CompareFunc);
+ = st_compare_func_to_pipe(msamp->CompareFunc);
}
st->state.num_samplers = su + 1;
diff --git a/src/mesa/state_tracker/st_atom_texture.c b/src/mesa/state_tracker/st_atom_texture.c
index fd03669e660..19ad2e8cc4a 100644
--- a/src/mesa/state_tracker/st_atom_texture.c
+++ b/src/mesa/state_tracker/st_atom_texture.c
@@ -138,16 +138,18 @@ check_sampler_swizzle(struct pipe_sampler_view *sv,
static INLINE struct pipe_sampler_view *
st_create_texture_sampler_view_from_stobj(struct pipe_context *pipe,
struct st_texture_object *stObj,
+ const struct gl_sampler_object *samp,
enum pipe_format format)
{
struct pipe_sampler_view templ;
GLuint swizzle = apply_depthmode(stObj->pt->format,
stObj->base._Swizzle,
- stObj->base.DepthMode);
+ samp->DepthMode);
u_sampler_view_default_template(&templ,
stObj->pt,
format);
+ templ.u.tex.first_level = stObj->base.BaseLevel;
if (swizzle != SWIZZLE_NOOP) {
templ.swizzle_r = GET_SWZ(swizzle, 0);
@@ -163,6 +165,7 @@ st_create_texture_sampler_view_from_stobj(struct pipe_context *pipe,
static INLINE struct pipe_sampler_view *
st_get_texture_sampler_view_from_stobj(struct st_texture_object *stObj,
struct pipe_context *pipe,
+ const struct gl_sampler_object *samp,
enum pipe_format format)
{
if (!stObj || !stObj->pt) {
@@ -171,7 +174,7 @@ st_get_texture_sampler_view_from_stobj(struct st_texture_object *stObj,
if (!stObj->sampler_view) {
stObj->sampler_view =
- st_create_texture_sampler_view_from_stobj(pipe, stObj, format);
+ st_create_texture_sampler_view_from_stobj(pipe, stObj, samp, format);
}
return stObj->sampler_view;
@@ -199,16 +202,20 @@ update_textures(struct st_context *st)
struct st_texture_object *stObj;
GLboolean retval;
GLuint texUnit;
+ const struct gl_sampler_object *samp;
if (fprog->Base.SamplersUsed & (1 << su))
texUnit = fprog->Base.SamplerUnits[su];
else
texUnit = vprog->Base.SamplerUnits[su];
+ samp = st_get_mesa_sampler(st->ctx, texUnit);
+
texObj = st->ctx->Texture.Unit[texUnit]._Current;
if (!texObj) {
texObj = st_get_default_texture(st);
+ samp = &texObj->Sampler;
}
stObj = st_texture_object(texObj);
@@ -227,7 +234,7 @@ update_textures(struct st_context *st)
enum pipe_format firstImageFormat =
st_mesa_format_to_pipe_format(texFormat);
- if ((stObj->base.sRGBDecode == GL_SKIP_DECODE_EXT) &&
+ if ((samp->sRGBDecode == GL_SKIP_DECODE_EXT) &&
(_mesa_get_format_color_encoding(texFormat) == GL_SRGB)) {
/* don't do sRGB->RGB conversion. Interpret the texture
* texture data as linear values.
@@ -244,14 +251,19 @@ update_textures(struct st_context *st)
st->state.num_textures = su + 1;
/* if sampler view has changed dereference it */
- if (stObj->sampler_view)
+ if (stObj->sampler_view) {
if (check_sampler_swizzle(stObj->sampler_view,
stObj->base._Swizzle,
- stObj->base.DepthMode) ||
- (st_view_format != stObj->sampler_view->format))
+ samp->DepthMode) ||
+ (st_view_format != stObj->sampler_view->format) ||
+ stObj->base.BaseLevel != stObj->sampler_view->u.tex.first_level) {
pipe_sampler_view_reference(&stObj->sampler_view, NULL);
+ }
+ }
- sampler_view = st_get_texture_sampler_view_from_stobj(stObj, pipe, st_view_format);
+ sampler_view = st_get_texture_sampler_view_from_stobj(stObj, pipe,
+ samp,
+ st_view_format);
}
pipe_sampler_view_reference(&st->state.sampler_views[su], sampler_view);
}
@@ -259,10 +271,12 @@ update_textures(struct st_context *st)
cso_set_fragment_sampler_views(st->cso_context,
st->state.num_textures,
st->state.sampler_views);
+
if (st->ctx->Const.MaxVertexTextureImageUnits > 0) {
+ GLuint numUnits = MIN2(st->state.num_textures,
+ st->ctx->Const.MaxVertexTextureImageUnits);
cso_set_vertex_sampler_views(st->cso_context,
- MIN2(st->state.num_textures,
- st->ctx->Const.MaxVertexTextureImageUnits),
+ numUnits,
st->state.sampler_views);
}
}
diff --git a/src/mesa/state_tracker/st_cb_blit.c b/src/mesa/state_tracker/st_cb_blit.c
index 6d02a7dccd4..25c95c7b9dc 100644
--- a/src/mesa/state_tracker/st_cb_blit.c
+++ b/src/mesa/state_tracker/st_cb_blit.c
@@ -39,6 +39,7 @@
#include "st_texture.h"
#include "st_cb_blit.h"
#include "st_cb_fbo.h"
+#include "st_atom.h"
#include "util/u_blit.h"
@@ -75,6 +76,8 @@ st_BlitFramebuffer(struct gl_context *ctx,
struct gl_framebuffer *readFB = ctx->ReadBuffer;
struct gl_framebuffer *drawFB = ctx->DrawBuffer;
+ st_validate_state(st);
+
if (!_mesa_clip_blit(ctx, &srcX0, &srcY0, &srcX1, &srcY1,
&dstX0, &dstY0, &dstX1, &dstY1)) {
return; /* nothing to draw/blit */
diff --git a/src/mesa/state_tracker/st_cb_bufferobjects.c b/src/mesa/state_tracker/st_cb_bufferobjects.c
index b9b606d539c..1e489b29d93 100644
--- a/src/mesa/state_tracker/st_cb_bufferobjects.c
+++ b/src/mesa/state_tracker/st_cb_bufferobjects.c
@@ -408,9 +408,7 @@ st_copy_buffer_subdata(struct gl_context *ctx,
struct pipe_context *pipe = st_context(ctx)->pipe;
struct st_buffer_object *srcObj = st_buffer_object(src);
struct st_buffer_object *dstObj = st_buffer_object(dst);
- struct pipe_transfer *src_transfer;
- struct pipe_transfer *dst_transfer;
- ubyte *srcPtr, *dstPtr;
+ struct pipe_box box;
if(!size)
return;
@@ -419,23 +417,10 @@ st_copy_buffer_subdata(struct gl_context *ctx,
assert(!src->Pointer);
assert(!dst->Pointer);
- srcPtr = (ubyte *) pipe_buffer_map_range(pipe,
- srcObj->buffer,
- readOffset, size,
- PIPE_TRANSFER_READ,
- &src_transfer);
+ u_box_1d(readOffset, size, &box);
- dstPtr = (ubyte *) pipe_buffer_map_range(pipe,
- dstObj->buffer,
- writeOffset, size,
- PIPE_TRANSFER_WRITE,
- &dst_transfer);
-
- if (srcPtr && dstPtr)
- memcpy(dstPtr + writeOffset, srcPtr + readOffset, size);
-
- pipe_buffer_unmap(pipe, src_transfer);
- pipe_buffer_unmap(pipe, dst_transfer);
+ pipe->resource_copy_region(pipe, dstObj->buffer, 0, writeOffset, 0, 0,
+ srcObj->buffer, 0, &box);
}
diff --git a/src/mesa/state_tracker/st_cb_clear.c b/src/mesa/state_tracker/st_cb_clear.c
index 1eb748e0d5d..181fedd2b99 100644
--- a/src/mesa/state_tracker/st_cb_clear.c
+++ b/src/mesa/state_tracker/st_cb_clear.c
@@ -323,7 +323,7 @@ clear_with_quad(struct gl_context *ctx,
set_vertex_shader(st);
if (ctx->DrawBuffer->_ColorDrawBuffers[0]) {
- st_translate_color(ctx->Color.ClearColor,
+ st_translate_color(ctx->Color.ClearColorUnclamped,
ctx->DrawBuffer->_ColorDrawBuffers[0]->_BaseFormat,
clearColor);
}
@@ -585,7 +585,7 @@ st_Clear(struct gl_context *ctx, GLbitfield mask)
clearColor);
}
- st->pipe->clear(st->pipe, clear_buffers, ctx->Color.ClearColor,
+ st->pipe->clear(st->pipe, clear_buffers, ctx->Color.ClearColorUnclamped,
ctx->Depth.Clear, ctx->Stencil.Clear);
}
if (mask & BUFFER_BIT_ACCUM)
diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c
index eccc207579b..1707f827cc8 100644
--- a/src/mesa/state_tracker/st_cb_drawpixels.c
+++ b/src/mesa/state_tracker/st_cb_drawpixels.c
@@ -296,7 +296,7 @@ base_format(GLenum format)
* of the given format and type.
*/
static GLenum
-internal_format(GLenum format, GLenum type)
+internal_format(struct gl_context *ctx, GLenum format, GLenum type)
{
switch (format) {
case GL_DEPTH_COMPONENT:
@@ -326,7 +326,53 @@ internal_format(GLenum format, GLenum type)
}
}
else {
- return GL_RGBA;
+ switch (type) {
+ case GL_UNSIGNED_BYTE:
+ case GL_UNSIGNED_INT_8_8_8_8:
+ case GL_UNSIGNED_INT_8_8_8_8_REV:
+ default:
+ return GL_RGBA8;
+
+ case GL_UNSIGNED_BYTE_3_3_2:
+ case GL_UNSIGNED_BYTE_2_3_3_REV:
+ case GL_UNSIGNED_SHORT_4_4_4_4:
+ case GL_UNSIGNED_SHORT_4_4_4_4_REV:
+ return GL_RGBA4;
+
+ case GL_UNSIGNED_SHORT_5_6_5:
+ case GL_UNSIGNED_SHORT_5_6_5_REV:
+ case GL_UNSIGNED_SHORT_5_5_5_1:
+ case GL_UNSIGNED_SHORT_1_5_5_5_REV:
+ return GL_RGB5_A1;
+
+ case GL_UNSIGNED_INT_10_10_10_2:
+ case GL_UNSIGNED_INT_2_10_10_10_REV:
+ return GL_RGB10_A2;
+
+ case GL_UNSIGNED_SHORT:
+ case GL_UNSIGNED_INT:
+ return GL_RGBA16;
+
+ case GL_BYTE:
+ return
+ ctx->Extensions.EXT_texture_snorm ? GL_RGBA8_SNORM : GL_RGBA8;
+
+ case GL_SHORT:
+ case GL_INT:
+ return
+ ctx->Extensions.EXT_texture_snorm ? GL_RGBA16_SNORM : GL_RGBA16;
+
+ case GL_HALF_FLOAT_ARB:
+ return
+ ctx->Extensions.ARB_texture_float ? GL_RGBA16F :
+ ctx->Extensions.EXT_texture_snorm ? GL_RGBA16_SNORM : GL_RGBA16;
+
+ case GL_FLOAT:
+ case GL_DOUBLE:
+ return
+ ctx->Extensions.ARB_texture_float ? GL_RGBA32F :
+ ctx->Extensions.EXT_texture_snorm ? GL_RGBA16_SNORM : GL_RGBA16;
+ }
}
}
}
@@ -369,7 +415,7 @@ make_texture(struct st_context *st,
GLenum baseFormat, intFormat;
baseFormat = base_format(format);
- intFormat = internal_format(format, type);
+ intFormat = internal_format(ctx, format, type);
mformat = st_ChooseTextureFormat_renderable(ctx, intFormat,
format, type, GL_FALSE);
@@ -582,6 +628,7 @@ draw_textured_quad(struct gl_context *ctx, GLint x, GLint y, GLfloat z,
{
struct pipe_rasterizer_state rasterizer;
memset(&rasterizer, 0, sizeof(rasterizer));
+ rasterizer.clamp_fragment_color = ctx->Color._ClampFragmentColor;
rasterizer.gl_rasterization_rules = 1;
rasterizer.scissor = ctx->Scissor.Enabled;
cso_set_rasterizer(cso, &rasterizer);
diff --git a/src/mesa/state_tracker/st_cb_fbo.c b/src/mesa/state_tracker/st_cb_fbo.c
index 0df04287ae6..e632d816542 100644
--- a/src/mesa/state_tracker/st_cb_fbo.c
+++ b/src/mesa/state_tracker/st_cb_fbo.c
@@ -353,7 +353,7 @@ st_render_texture(struct gl_context *ctx,
return;
/* get pointer to texture image we're rendeing to */
- texImage = att->Texture->Image[att->CubeMapFace][att->TextureLevel];
+ texImage = _mesa_get_attachment_teximage(att);
/* create new renderbuffer which wraps the texture image */
rb = st_new_renderbuffer(ctx, 0);
@@ -471,8 +471,7 @@ st_validate_attachment(struct gl_context *ctx,
return GL_FALSE;
format = stObj->pt->format;
- texFormat =
- stObj->base.Image[att->CubeMapFace][att->TextureLevel]->TexFormat;
+ texFormat = _mesa_get_attachment_teximage_const(att)->TexFormat;
/* If the encoding is sRGB and sRGB rendering cannot be enabled,
* check for linear format support instead.
@@ -529,6 +528,9 @@ st_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb)
const struct gl_renderbuffer_attachment *stencil =
&fb->Attachment[BUFFER_STENCIL];
GLuint i;
+ enum pipe_format first_format = PIPE_FORMAT_NONE;
+ boolean mixed_formats =
+ screen->get_param(screen, PIPE_CAP_MIXED_COLORBUFFER_FORMATS) != 0;
if (depth->Type && stencil->Type && depth->Type != stencil->Type) {
fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT;
@@ -562,13 +564,33 @@ st_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb)
return;
}
for (i = 0; i < ctx->Const.MaxColorAttachments; i++) {
+ struct gl_renderbuffer_attachment *att =
+ &fb->Attachment[BUFFER_COLOR0 + i];
+ enum pipe_format format;
+
if (!st_validate_attachment(ctx,
screen,
- &fb->Attachment[BUFFER_COLOR0 + i],
+ att,
PIPE_BIND_RENDER_TARGET)) {
fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT;
return;
}
+
+ if (!mixed_formats) {
+ /* Disallow mixed formats. */
+ if (att->Type != GL_NONE) {
+ format = st_renderbuffer(att->Renderbuffer)->surface->format;
+ } else {
+ continue;
+ }
+
+ if (first_format == PIPE_FORMAT_NONE) {
+ first_format = format;
+ } else if (format != first_format) {
+ fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT;
+ return;
+ }
+ }
}
}
diff --git a/src/mesa/state_tracker/st_cb_readpixels.c b/src/mesa/state_tracker/st_cb_readpixels.c
index f8da2a4d158..2a63799bdbc 100644
--- a/src/mesa/state_tracker/st_cb_readpixels.c
+++ b/src/mesa/state_tracker/st_cb_readpixels.c
@@ -198,27 +198,39 @@ st_fast_readpixels(struct gl_context *ctx, struct st_renderbuffer *strb,
const struct gl_pixelstore_attrib *pack,
GLvoid *dest)
{
+ GLubyte alphaORoperand;
enum combination {
A8R8G8B8_UNORM_TO_RGBA_UBYTE,
A8R8G8B8_UNORM_TO_RGB_UBYTE,
- A8R8G8B8_UNORM_TO_BGRA_UINT
+ A8R8G8B8_UNORM_TO_BGRA_UINT,
+ A8R8G8B8_UNORM_TO_RGBA_UINT
} combo;
if (ctx->_ImageTransferState)
return GL_FALSE;
- if (strb->format == PIPE_FORMAT_B8G8R8A8_UNORM &&
- format == GL_RGBA && type == GL_UNSIGNED_BYTE) {
+ if (strb->format == PIPE_FORMAT_B8G8R8A8_UNORM) {
+ alphaORoperand = 0;
+ }
+ else if (strb->format == PIPE_FORMAT_B8G8R8X8_UNORM ) {
+ alphaORoperand = 0xff;
+ }
+ else {
+ return GL_FALSE;
+ }
+
+ if (format == GL_RGBA && type == GL_UNSIGNED_BYTE) {
combo = A8R8G8B8_UNORM_TO_RGBA_UBYTE;
}
- else if (strb->format == PIPE_FORMAT_B8G8R8A8_UNORM &&
- format == GL_RGB && type == GL_UNSIGNED_BYTE) {
+ else if (format == GL_RGB && type == GL_UNSIGNED_BYTE) {
combo = A8R8G8B8_UNORM_TO_RGB_UBYTE;
}
- else if (strb->format == PIPE_FORMAT_B8G8R8A8_UNORM &&
- format == GL_BGRA && type == GL_UNSIGNED_INT_8_8_8_8_REV) {
+ else if (format == GL_BGRA && type == GL_UNSIGNED_INT_8_8_8_8_REV) {
combo = A8R8G8B8_UNORM_TO_BGRA_UINT;
}
+ else if (format == GL_RGBA && type == GL_UNSIGNED_INT_8_8_8_8) {
+ combo = A8R8G8B8_UNORM_TO_RGBA_UINT;
+ }
else {
return GL_FALSE;
}
@@ -278,7 +290,7 @@ st_fast_readpixels(struct gl_context *ctx, struct st_renderbuffer *strb,
dst[col*4+0] = (pixel >> 16) & 0xff;
dst[col*4+1] = (pixel >> 8) & 0xff;
dst[col*4+2] = (pixel >> 0) & 0xff;
- dst[col*4+3] = (pixel >> 24) & 0xff;
+ dst[col*4+3] = ((pixel >> 24) & 0xff) | alphaORoperand;
}
dst += dstStride;
y += dy;
@@ -301,6 +313,26 @@ st_fast_readpixels(struct gl_context *ctx, struct st_renderbuffer *strb,
for (row = 0; row < height; row++) {
const GLubyte *src = map + y * trans->stride;
memcpy(dst, src, 4 * width);
+ if (alphaORoperand) {
+ assert(alphaORoperand == 0xff);
+ for (col = 0; col < width; col++) {
+ dst[col*4+3] = 0xff;
+ }
+ }
+ dst += dstStride;
+ y += dy;
+ }
+ break;
+ case A8R8G8B8_UNORM_TO_RGBA_UINT:
+ for (row = 0; row < height; row++) {
+ const GLubyte *src = map + y * trans->stride;
+ for (col = 0; col < width; col++) {
+ GLuint pixel = ((GLuint *) src)[col];
+ dst[col*4+0] = ((pixel >> 24) & 0xff) | alphaORoperand;
+ dst[col*4+1] = (pixel >> 0) & 0xff;
+ dst[col*4+2] = (pixel >> 8) & 0xff;
+ dst[col*4+3] = (pixel >> 16) & 0xff;
+ }
dst += dstStride;
y += dy;
}
@@ -331,7 +363,7 @@ st_readpixels(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei h
struct st_context *st = st_context(ctx);
struct pipe_context *pipe = st->pipe;
GLfloat (*temp)[4];
- const GLbitfield transferOps = ctx->_ImageTransferState;
+ GLbitfield transferOps = ctx->_ImageTransferState;
GLsizei i, j;
GLint yStep, dfStride;
GLfloat *df;
@@ -391,7 +423,10 @@ st_readpixels(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei h
return;
}
- if (format == GL_RGBA && type == GL_FLOAT) {
+ if(ctx->Color._ClampReadColor)
+ transferOps |= IMAGE_CLAMP_BIT;
+
+ if (format == GL_RGBA && type == GL_FLOAT && !transferOps) {
/* write tile(row) directly into user's buffer */
df = (GLfloat *) _mesa_image_address2d(&clippedPacking, dest, width,
height, format, type, 0, 0);
diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c
index 9d5eb113ff7..ab7f6a51684 100644
--- a/src/mesa/state_tracker/st_cb_texture.c
+++ b/src/mesa/state_tracker/st_cb_texture.c
@@ -87,6 +87,8 @@ gl_target_to_pipe(GLenum target)
return PIPE_TEXTURE_1D_ARRAY;
case GL_TEXTURE_2D_ARRAY_EXT:
return PIPE_TEXTURE_2D_ARRAY;
+ case GL_TEXTURE_BUFFER:
+ return PIPE_BUFFER;
default:
assert(0);
return 0;
@@ -245,6 +247,7 @@ get_texture_dims(GLenum target)
switch (target) {
case GL_TEXTURE_1D:
case GL_TEXTURE_1D_ARRAY_EXT:
+ case GL_TEXTURE_BUFFER:
return 1;
case GL_TEXTURE_2D:
case GL_TEXTURE_CUBE_MAP_ARB:
@@ -359,8 +362,8 @@ guess_and_alloc_texture(struct st_context *st,
* to re-allocating a texture buffer with space for more (or fewer)
* mipmap levels later.
*/
- if ((stObj->base.MinFilter == GL_NEAREST ||
- stObj->base.MinFilter == GL_LINEAR ||
+ if ((stObj->base.Sampler.MinFilter == GL_NEAREST ||
+ stObj->base.Sampler.MinFilter == GL_LINEAR ||
stImage->base._BaseFormat == GL_DEPTH_COMPONENT ||
stImage->base._BaseFormat == GL_DEPTH_STENCIL_EXT) &&
!stObj->base.GenerateMipmap &&
@@ -597,7 +600,12 @@ st_TexImage(struct gl_context * ctx,
* memory or malloc space for it.
*/
if (stImage->pt) {
- /* Store the image in the gallium texture memory buffer */
+ if (!pixels) {
+ /* We've allocated texture resource, but have no pixel data - all done. */
+ goto done;
+ }
+
+ /* Store the image in the gallium transfer object */
if (format == GL_DEPTH_COMPONENT &&
util_format_is_depth_and_stencil(stImage->pt->format))
transfer_usage = PIPE_TRANSFER_READ_WRITE;
@@ -1678,7 +1686,7 @@ copy_image_data_to_texture(struct st_context *st,
/* debug checks */
{
const struct gl_texture_image *dstImage =
- stObj->base.Image[stImage->face][stImage->level];
+ stObj->base.Image[stImage->face][dstLevel];
assert(dstImage);
assert(dstImage->Width == stImage->base.Width);
assert(dstImage->Height == stImage->base.Height);
@@ -1739,8 +1747,8 @@ st_finalize_texture(struct gl_context *ctx,
* incomplete. In that case, we'll have set stObj->lastLevel before
* we get here.
*/
- if (stObj->base.MinFilter == GL_LINEAR ||
- stObj->base.MinFilter == GL_NEAREST)
+ if (stObj->base.Sampler.MinFilter == GL_LINEAR ||
+ stObj->base.Sampler.MinFilter == GL_NEAREST)
stObj->lastLevel = stObj->base.BaseLevel;
else
stObj->lastLevel = stObj->base._MaxLevel;
@@ -1835,7 +1843,12 @@ st_finalize_texture(struct gl_context *ctx,
/* Need to import images in main memory or held in other textures.
*/
if (stImage && stObj->pt != stImage->pt) {
- copy_image_data_to_texture(st, stObj, level, stImage);
+ if (stImage->base.Width == u_minify(stObj->width0, level) &&
+ stImage->base.Height == u_minify(stObj->height0, level) &&
+ stImage->base.Depth == u_minify(stObj->depth0, level)) {
+ /* src image fits expected dest mipmap level size */
+ copy_image_data_to_texture(st, stObj, level, stImage);
+ }
}
}
}
@@ -1887,8 +1900,8 @@ st_get_default_texture(struct st_context *st)
texObj, texImg,
0, 0);
- texObj->MinFilter = GL_NEAREST;
- texObj->MagFilter = GL_NEAREST;
+ texObj->Sampler.MinFilter = GL_NEAREST;
+ texObj->Sampler.MagFilter = GL_NEAREST;
texObj->_Complete = GL_TRUE;
st->default_texture = texObj;
diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c
index 5a39ab0a110..ce78956e359 100644
--- a/src/mesa/state_tracker/st_context.c
+++ b/src/mesa/state_tracker/st_context.c
@@ -27,6 +27,7 @@
#include "main/imports.h"
#include "main/context.h"
+#include "main/samplerobj.h"
#include "main/shaderobj.h"
#include "program/prog_cache.h"
#include "vbo/vbo.h"
@@ -206,8 +207,8 @@ static void st_destroy_context_priv( struct st_context *st )
st_destroy_drawtex(st);
/* Unreference any user vertex buffers. */
- for (i = 0; i < st->num_user_vbs; i++) {
- pipe_resource_reference(&st->user_vb[i], NULL);
+ for (i = 0; i < st->num_user_attribs; i++) {
+ pipe_resource_reference(&st->user_attrib[i].buffer, NULL);
}
for (i = 0; i < Elements(st->state.sampler_views); i++) {
@@ -269,6 +270,7 @@ void st_destroy_context( struct st_context *st )
void st_init_driver_functions(struct dd_function_table *functions)
{
_mesa_init_shader_object_functions(functions);
+ _mesa_init_sampler_object_functions(functions);
st_init_accum_functions(functions);
st_init_blit_functions(functions);
diff --git a/src/mesa/state_tracker/st_context.h b/src/mesa/state_tracker/st_context.h
index 77765f02379..1fc9c1051a0 100644
--- a/src/mesa/state_tracker/st_context.h
+++ b/src/mesa/state_tracker/st_context.h
@@ -187,9 +187,16 @@ struct st_context
void *winsys_drawable_handle;
/* User vertex buffers. */
- struct pipe_resource *user_vb[PIPE_MAX_ATTRIBS];
- unsigned user_vb_stride[PIPE_MAX_ATTRIBS];
- unsigned num_user_vbs;
+ struct {
+ struct pipe_resource *buffer;
+
+ /** Element size */
+ GLuint element_size;
+
+ /** Attribute stride */
+ GLsizei stride;
+ } user_attrib[PIPE_MAX_ATTRIBS];
+ unsigned num_user_attribs;
};
diff --git a/src/mesa/state_tracker/st_draw.c b/src/mesa/state_tracker/st_draw.c
index 40afa436292..d27043ec296 100644
--- a/src/mesa/state_tracker/st_draw.c
+++ b/src/mesa/state_tracker/st_draw.c
@@ -181,7 +181,7 @@ static GLuint fixed_types[4] = {
/**
* Return a PIPE_FORMAT_x for the given GL datatype and size.
*/
-GLuint
+enum pipe_format
st_pipe_vertex_format(GLenum type, GLuint size, GLenum format,
GLboolean normalized)
{
@@ -211,7 +211,7 @@ st_pipe_vertex_format(GLenum type, GLuint size, GLenum format,
case GL_UNSIGNED_BYTE: return ubyte_types_norm[size-1];
case GL_FIXED: return fixed_types[size-1];
default: assert(0); return 0;
- }
+ }
}
else {
switch (type) {
@@ -226,15 +226,13 @@ st_pipe_vertex_format(GLenum type, GLuint size, GLenum format,
case GL_UNSIGNED_BYTE: return ubyte_types_scale[size-1];
case GL_FIXED: return fixed_types[size-1];
default: assert(0); return 0;
- }
+ }
}
- return 0; /* silence compiler warning */
+ return PIPE_FORMAT_NONE; /* silence compiler warning */
}
-
-
/**
* Examine the active arrays to determine if we have interleaved
* vertex arrays all living in one VBO, or all living in user space.
@@ -253,8 +251,9 @@ is_interleaved_arrays(const struct st_vertex_program *vp,
for (attr = 0; attr < vpv->num_inputs; attr++) {
const GLuint mesaAttr = vp->index_to_input[attr];
- const struct gl_buffer_object *bufObj = arrays[mesaAttr]->BufferObj;
- const GLsizei stride = arrays[mesaAttr]->StrideB; /* in bytes */
+ const struct gl_client_array *array = arrays[mesaAttr];
+ const struct gl_buffer_object *bufObj = array->BufferObj;
+ const GLsizei stride = array->StrideB; /* in bytes */
if (firstStride < 0) {
firstStride = stride;
@@ -272,9 +271,9 @@ is_interleaved_arrays(const struct st_vertex_program *vp,
return GL_FALSE;
}
if (!client_addr) {
- client_addr = arrays[mesaAttr]->Ptr;
+ client_addr = array->Ptr;
}
- else if (abs(arrays[mesaAttr]->Ptr - client_addr) > firstStride) {
+ else if (abs(array->Ptr - client_addr) > firstStride) {
/* arrays start too far apart */
return GL_FALSE;
}
@@ -315,8 +314,8 @@ setup_interleaved_attribs(struct gl_context *ctx,
GLuint attr;
const GLubyte *low_addr = NULL;
- /* Find the lowest address. */
- if(vpv->num_inputs) {
+ /* Find the lowest address of the arrays we're drawing */
+ if (vpv->num_inputs) {
low_addr = arrays[vp->index_to_input[0]]->Ptr;
for (attr = 1; attr < vpv->num_inputs; attr++) {
@@ -327,41 +326,48 @@ setup_interleaved_attribs(struct gl_context *ctx,
for (attr = 0; attr < vpv->num_inputs; attr++) {
const GLuint mesaAttr = vp->index_to_input[attr];
- struct gl_buffer_object *bufobj = arrays[mesaAttr]->BufferObj;
+ const struct gl_client_array *array = arrays[mesaAttr];
+ struct gl_buffer_object *bufobj = array->BufferObj;
struct st_buffer_object *stobj = st_buffer_object(bufobj);
- GLsizei stride = arrays[mesaAttr]->StrideB;
+ unsigned src_offset = (unsigned) (array->Ptr - low_addr);
+ GLuint element_size = array->_ElementSize;
+ GLsizei stride = array->StrideB;
+
+ assert(element_size == array->Size * _mesa_sizeof_type(array->Type));
if (attr == 0) {
if (bufobj && bufobj->Name) {
vbuffer->buffer = NULL;
pipe_resource_reference(&vbuffer->buffer, stobj->buffer);
vbuffer->buffer_offset = pointer_to_offset(low_addr);
- } else {
- uint divisor = arrays[mesaAttr]->InstanceDivisor;
- uint length = (divisor ? num_instances / divisor : max_index) + 1;
- vbuffer->buffer =
- pipe_user_buffer_create(pipe->screen, (void*)low_addr,
- stride * length,
- PIPE_BIND_VERTEX_BUFFER);
+ }
+ else {
+ uint divisor = array->InstanceDivisor;
+ uint last_index = divisor ? num_instances / divisor : max_index;
+ uint bytes = src_offset + stride * last_index + element_size;
+
+ vbuffer->buffer = pipe_user_buffer_create(pipe->screen,
+ (void*) low_addr,
+ bytes,
+ PIPE_BIND_VERTEX_BUFFER);
vbuffer->buffer_offset = 0;
/* Track user vertex buffers. */
- pipe_resource_reference(&st->user_vb[0], vbuffer->buffer);
- st->user_vb_stride[0] = stride;
- st->num_user_vbs = 1;
+ pipe_resource_reference(&st->user_attrib[0].buffer, vbuffer->buffer);
+ st->user_attrib[0].element_size = element_size;
+ st->user_attrib[0].stride = stride;
+ st->num_user_attribs = 1;
}
vbuffer->stride = stride; /* in bytes */
}
- velements[attr].src_offset =
- (unsigned) (arrays[mesaAttr]->Ptr - low_addr);
- velements[attr].instance_divisor = arrays[mesaAttr]->InstanceDivisor;
+ velements[attr].src_offset = src_offset;
+ velements[attr].instance_divisor = array->InstanceDivisor;
velements[attr].vertex_buffer_index = 0;
- velements[attr].src_format =
- st_pipe_vertex_format(arrays[mesaAttr]->Type,
- arrays[mesaAttr]->Size,
- arrays[mesaAttr]->Format,
- arrays[mesaAttr]->Normalized);
+ velements[attr].src_format = st_pipe_vertex_format(array->Type,
+ array->Size,
+ array->Format,
+ array->Normalized);
assert(velements[attr].src_format);
}
}
@@ -389,8 +395,12 @@ setup_non_interleaved_attribs(struct gl_context *ctx,
for (attr = 0; attr < vpv->num_inputs; attr++) {
const GLuint mesaAttr = vp->index_to_input[attr];
- struct gl_buffer_object *bufobj = arrays[mesaAttr]->BufferObj;
- GLsizei stride = arrays[mesaAttr]->StrideB;
+ const struct gl_client_array *array = arrays[mesaAttr];
+ struct gl_buffer_object *bufobj = array->BufferObj;
+ GLuint element_size = array->_ElementSize;
+ GLsizei stride = array->StrideB;
+
+ assert(element_size == array->Size * _mesa_sizeof_type(array->Type));
if (bufobj && bufobj->Name) {
/* Attribute data is in a VBO.
@@ -402,49 +412,54 @@ setup_non_interleaved_attribs(struct gl_context *ctx,
vbuffer[attr].buffer = NULL;
pipe_resource_reference(&vbuffer[attr].buffer, stobj->buffer);
- vbuffer[attr].buffer_offset = pointer_to_offset(arrays[mesaAttr]->Ptr);
+ vbuffer[attr].buffer_offset = pointer_to_offset(array->Ptr);
}
else {
/* wrap user data */
- if (arrays[mesaAttr]->Ptr) {
- uint divisor = arrays[mesaAttr]->InstanceDivisor;
- uint length = (divisor ? num_instances / divisor : max_index) + 1;
- vbuffer[attr].buffer =
- pipe_user_buffer_create(pipe->screen,
- (void *) arrays[mesaAttr]->Ptr,
- stride * length,
- PIPE_BIND_VERTEX_BUFFER);
+ uint bytes;
+ void *ptr;
+
+ if (array->Ptr) {
+ uint divisor = array->InstanceDivisor;
+ uint last_index = divisor ? num_instances / divisor : max_index;
+
+ bytes = stride * last_index + element_size;
+
+ ptr = (void *) array->Ptr;
}
else {
/* no array, use ctx->Current.Attrib[] value */
- uint bytes = sizeof(ctx->Current.Attrib[0]);
- vbuffer[attr].buffer =
- pipe_user_buffer_create(pipe->screen,
- (void *) ctx->Current.Attrib[mesaAttr],
- bytes,
- PIPE_BIND_VERTEX_BUFFER);
+ bytes = element_size = sizeof(ctx->Current.Attrib[0]);
+ ptr = (void *) ctx->Current.Attrib[mesaAttr];
stride = 0;
}
+ assert(ptr);
+ assert(bytes);
+
+ vbuffer[attr].buffer =
+ pipe_user_buffer_create(pipe->screen, ptr, bytes,
+ PIPE_BIND_VERTEX_BUFFER);
+
vbuffer[attr].buffer_offset = 0;
/* Track user vertex buffers. */
- pipe_resource_reference(&st->user_vb[attr], vbuffer[attr].buffer);
- st->user_vb_stride[attr] = stride;
- st->num_user_vbs = MAX2(st->num_user_vbs, attr+1);
+ pipe_resource_reference(&st->user_attrib[attr].buffer, vbuffer[attr].buffer);
+ st->user_attrib[attr].element_size = element_size;
+ st->user_attrib[attr].stride = stride;
+ st->num_user_attribs = MAX2(st->num_user_attribs, attr + 1);
}
/* common-case setup */
vbuffer[attr].stride = stride; /* in bytes */
velements[attr].src_offset = 0;
- velements[attr].instance_divisor = arrays[mesaAttr]->InstanceDivisor;
+ velements[attr].instance_divisor = array->InstanceDivisor;
velements[attr].vertex_buffer_index = attr;
- velements[attr].src_format
- = st_pipe_vertex_format(arrays[mesaAttr]->Type,
- arrays[mesaAttr]->Size,
- arrays[mesaAttr]->Format,
- arrays[mesaAttr]->Normalized);
+ velements[attr].src_format = st_pipe_vertex_format(array->Type,
+ array->Size,
+ array->Format,
+ array->Normalized);
assert(velements[attr].src_format);
}
}
@@ -575,10 +590,10 @@ st_validate_varrays(struct gl_context *ctx,
memset(velements, 0, sizeof(struct pipe_vertex_element) * vpv->num_inputs);
/* Unreference any user vertex buffers. */
- for (i = 0; i < st->num_user_vbs; i++) {
- pipe_resource_reference(&st->user_vb[i], NULL);
+ for (i = 0; i < st->num_user_attribs; i++) {
+ pipe_resource_reference(&st->user_attrib[i].buffer, NULL);
}
- st->num_user_vbs = 0;
+ st->num_user_attribs = 0;
/*
* Setup the vbuffer[] and velements[] arrays.
@@ -594,7 +609,8 @@ st_validate_varrays(struct gl_context *ctx,
}
else {
setup_non_interleaved_attribs(ctx, vp, vpv, arrays,
- vbuffer, velements, max_index, num_instances);
+ vbuffer, velements, max_index,
+ num_instances);
num_vbuffers = vpv->num_inputs;
num_velements = vpv->num_inputs;
}
@@ -647,7 +663,8 @@ st_draw_vbo(struct gl_context *ctx,
for (i = 0; i < nr_prims; i++) {
num_instances = MAX2(num_instances, prims[i].num_instances);
}
- } else {
+ }
+ else {
/* Get min/max index for non-indexed drawing. */
min_index = ~0;
max_index = 0;
@@ -690,20 +707,20 @@ st_draw_vbo(struct gl_context *ctx,
/* Notify the driver that the content of user buffers may have been
* changed. */
- if (!new_array && st->num_user_vbs) {
- for (i = 0; i < st->num_user_vbs; i++) {
- if (st->user_vb[i]) {
- unsigned stride = st->user_vb_stride[i];
-
- if (stride) {
- pipe->redefine_user_buffer(pipe, st->user_vb[i],
- min_index * stride,
- (max_index + 1 - min_index) * stride);
- } else {
- /* stride == 0 */
- pipe->redefine_user_buffer(pipe, st->user_vb[i],
- 0, st->user_vb[i]->width0);
- }
+ assert(max_index >= min_index);
+ if (!new_array && st->num_user_attribs) {
+ for (i = 0; i < st->num_user_attribs; i++) {
+ if (st->user_attrib[i].buffer) {
+ unsigned element_size = st->user_attrib[i].element_size;
+ unsigned stride = st->user_attrib[i].stride;
+ unsigned min_offset = min_index * stride;
+ unsigned max_offset = max_index * stride + element_size;
+
+ assert(max_offset > min_offset);
+
+ pipe->redefine_user_buffer(pipe, st->user_attrib[i].buffer,
+ min_offset,
+ max_offset - min_offset);
}
}
}
@@ -743,7 +760,8 @@ st_draw_vbo(struct gl_context *ctx,
}
-void st_init_draw( struct st_context *st )
+void
+st_init_draw(struct st_context *st)
{
struct gl_context *ctx = st->ctx;
@@ -763,11 +781,10 @@ void st_init_draw( struct st_context *st )
}
-void st_destroy_draw( struct st_context *st )
+void
+st_destroy_draw(struct st_context *st)
{
#if FEATURE_feedback || FEATURE_rastpos
draw_destroy(st->draw);
#endif
}
-
-
diff --git a/src/mesa/state_tracker/st_draw.h b/src/mesa/state_tracker/st_draw.h
index 5d3c278228f..a7b50ce977a 100644
--- a/src/mesa/state_tracker/st_draw.h
+++ b/src/mesa/state_tracker/st_draw.h
@@ -69,7 +69,7 @@ st_feedback_draw_vbo(struct gl_context *ctx,
/* Internal function:
*/
-extern GLuint
+extern enum pipe_format
st_pipe_vertex_format(GLenum type, GLuint size, GLenum format,
GLboolean normalized);
diff --git a/src/mesa/state_tracker/st_draw_feedback.c b/src/mesa/state_tracker/st_draw_feedback.c
index 1e1220bfe52..96a08b39100 100644
--- a/src/mesa/state_tracker/st_draw_feedback.c
+++ b/src/mesa/state_tracker/st_draw_feedback.c
@@ -111,6 +111,7 @@ st_feedback_draw_vbo(struct gl_context *ctx,
struct pipe_transfer *vb_transfer[PIPE_MAX_ATTRIBS];
struct pipe_transfer *ib_transfer = NULL;
GLuint attr, i;
+ const GLubyte *low_addr = NULL;
const void *mapped_indices = NULL;
assert(draw);
@@ -141,6 +142,16 @@ st_feedback_draw_vbo(struct gl_context *ctx,
draw_bind_vertex_shader(draw, st->vp_variant->draw_shader);
set_feedback_vertex_format(ctx);
+ /* Find the lowest address of the arrays we're drawing */
+ if (vp->num_inputs) {
+ low_addr = arrays[vp->index_to_input[0]]->Ptr;
+
+ for (attr = 1; attr < vp->num_inputs; attr++) {
+ const GLubyte *start = arrays[vp->index_to_input[attr]]->Ptr;
+ low_addr = MIN2(low_addr, start);
+ }
+ }
+
/* loop over TGSI shader inputs to determine vertex buffer
* and attribute info
*/
@@ -159,8 +170,8 @@ st_feedback_draw_vbo(struct gl_context *ctx,
vbuffers[attr].buffer = NULL;
pipe_resource_reference(&vbuffers[attr].buffer, stobj->buffer);
- vbuffers[attr].buffer_offset = pointer_to_offset(arrays[0]->Ptr);
- velements[attr].src_offset = arrays[mesaAttr]->Ptr - arrays[0]->Ptr;
+ vbuffers[attr].buffer_offset = pointer_to_offset(low_addr);
+ velements[attr].src_offset = arrays[mesaAttr]->Ptr - low_addr;
}
else {
/* attribute data is in user-space memory, not a VBO */
diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
index bbcae3b02e9..bdc08949dd4 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -228,6 +228,7 @@ void st_init_extensions(struct st_context *st)
ctx->Extensions.ARB_half_float_pixel = GL_TRUE;
ctx->Extensions.ARB_map_buffer_range = GL_TRUE;
ctx->Extensions.ARB_multisample = GL_TRUE;
+ ctx->Extensions.ARB_sampler_objects = GL_TRUE;
ctx->Extensions.ARB_texture_border_clamp = GL_TRUE; /* XXX temp */
ctx->Extensions.ARB_texture_compression = GL_TRUE;
ctx->Extensions.ARB_texture_cube_map = GL_TRUE;
@@ -381,6 +382,18 @@ void st_init_extensions(struct st_context *st)
ctx->Extensions.EXT_packed_depth_stencil = GL_TRUE;
}
+ /* float support - assume nothing exclusively supports 64-bit floats */
+ if (screen->is_format_supported(screen, PIPE_FORMAT_R32G32B32A32_FLOAT,
+ PIPE_TEXTURE_2D, 0,
+ PIPE_BIND_SAMPLER_VIEW |
+ PIPE_BIND_RENDER_TARGET) &&
+ screen->is_format_supported(screen, PIPE_FORMAT_R16G16B16A16_FLOAT,
+ PIPE_TEXTURE_2D, 0,
+ PIPE_BIND_SAMPLER_VIEW |
+ PIPE_BIND_RENDER_TARGET)) {
+ ctx->Extensions.ARB_texture_float = GL_TRUE;
+ }
+
/* sRGB support */
if (screen->is_format_supported(screen, PIPE_FORMAT_A8B8G8R8_SRGB,
PIPE_TEXTURE_2D, 0,
@@ -453,6 +466,12 @@ void st_init_extensions(struct st_context *st)
ctx->Extensions.ATI_texture_compression_3dc = GL_TRUE;
}
+ if (screen->is_format_supported(screen, PIPE_FORMAT_R8G8B8A8_SNORM,
+ PIPE_TEXTURE_2D, 0,
+ PIPE_BIND_SAMPLER_VIEW)) {
+ ctx->Extensions.EXT_texture_snorm = GL_TRUE;
+ }
+
/* ycbcr support */
if (screen->is_format_supported(screen, PIPE_FORMAT_UYVY,
PIPE_TEXTURE_2D, 0,
@@ -508,6 +527,35 @@ void st_init_extensions(struct st_context *st)
ctx->Extensions.ARB_depth_clamp = GL_TRUE;
}
+ /* This extension does not actually require support of floating point
+ * render targets, just clamping controls.
+ * Advertise this extension if either fragment color clamping is supported
+ * or no render targets having color values outside of the range [0, 1]
+ * are supported, in which case the fragment color clamping has no effect
+ * on rendering.
+ */
+ if (screen->get_param(screen, PIPE_CAP_FRAGMENT_COLOR_CLAMP_CONTROL) ||
+ (!screen->is_format_supported(screen, PIPE_FORMAT_R8G8B8A8_SNORM,
+ PIPE_TEXTURE_2D, 0,
+ PIPE_BIND_RENDER_TARGET) &&
+ !screen->is_format_supported(screen, PIPE_FORMAT_R16G16B16A16_SNORM,
+ PIPE_TEXTURE_2D, 0,
+ PIPE_BIND_RENDER_TARGET) &&
+ !screen->is_format_supported(screen, PIPE_FORMAT_R16G16B16A16_FLOAT,
+ PIPE_TEXTURE_2D, 0,
+ PIPE_BIND_RENDER_TARGET) &&
+ !screen->is_format_supported(screen, PIPE_FORMAT_R32G32B32A32_FLOAT,
+ PIPE_TEXTURE_2D, 0,
+ PIPE_BIND_RENDER_TARGET) &&
+ !screen->is_format_supported(screen, PIPE_FORMAT_R11G11B10_FLOAT,
+ PIPE_TEXTURE_2D, 0,
+ PIPE_BIND_RENDER_TARGET) &&
+ !screen->is_format_supported(screen, PIPE_FORMAT_R9G9B9E5_FLOAT,
+ PIPE_TEXTURE_2D, 0,
+ PIPE_BIND_RENDER_TARGET))) {
+ ctx->Extensions.ARB_color_buffer_float = GL_TRUE;
+ }
+
if (screen->get_param(screen, PIPE_CAP_SHADER_STENCIL_EXPORT)) {
ctx->Extensions.ARB_shader_stencil_export = GL_TRUE;
}
diff --git a/src/mesa/state_tracker/st_format.c b/src/mesa/state_tracker/st_format.c
index 3d8637ab37e..bbaa84d7fdf 100644
--- a/src/mesa/state_tracker/st_format.c
+++ b/src/mesa/state_tracker/st_format.c
@@ -214,6 +214,39 @@ st_mesa_format_to_pipe_format(gl_format mesaFormat)
case MESA_FORMAT_SARGB8:
return PIPE_FORMAT_B8G8R8A8_SRGB;
#endif
+ case MESA_FORMAT_RGBA_FLOAT32:
+ return PIPE_FORMAT_R32G32B32A32_FLOAT;
+ case MESA_FORMAT_RGBA_FLOAT16:
+ return PIPE_FORMAT_R16G16B16A16_FLOAT;
+ case MESA_FORMAT_RGB_FLOAT32:
+ return PIPE_FORMAT_R32G32B32_FLOAT;
+ case MESA_FORMAT_RGB_FLOAT16:
+ return PIPE_FORMAT_R16G16B16_FLOAT;
+ case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32:
+ return PIPE_FORMAT_L32A32_FLOAT;
+ case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16:
+ return PIPE_FORMAT_L16A16_FLOAT;
+ case MESA_FORMAT_LUMINANCE_FLOAT32:
+ return PIPE_FORMAT_L32_FLOAT;
+ case MESA_FORMAT_LUMINANCE_FLOAT16:
+ return PIPE_FORMAT_L16_FLOAT;
+ case MESA_FORMAT_ALPHA_FLOAT32:
+ return PIPE_FORMAT_A32_FLOAT;
+ case MESA_FORMAT_ALPHA_FLOAT16:
+ return PIPE_FORMAT_A16_FLOAT;
+ case MESA_FORMAT_INTENSITY_FLOAT32:
+ return PIPE_FORMAT_I32_FLOAT;
+ case MESA_FORMAT_INTENSITY_FLOAT16:
+ return PIPE_FORMAT_I16_FLOAT;
+ case MESA_FORMAT_R_FLOAT32:
+ return PIPE_FORMAT_R32_FLOAT;
+ case MESA_FORMAT_R_FLOAT16:
+ return PIPE_FORMAT_R16_FLOAT;
+ case MESA_FORMAT_RG_FLOAT32:
+ return PIPE_FORMAT_R32G32_FLOAT;
+ case MESA_FORMAT_RG_FLOAT16:
+ return PIPE_FORMAT_R16G16_FLOAT;
+
case MESA_FORMAT_R8:
return PIPE_FORMAT_R8_UNORM;
case MESA_FORMAT_R16:
@@ -259,6 +292,39 @@ st_mesa_format_to_pipe_format(gl_format mesaFormat)
case MESA_FORMAT_SIGNED_LA_LATC2:
return PIPE_FORMAT_LATC2_SNORM;
+ /* signed normalized formats */
+ case MESA_FORMAT_SIGNED_R8:
+ return PIPE_FORMAT_R8_SNORM;
+ case MESA_FORMAT_SIGNED_RG88_REV:
+ return PIPE_FORMAT_R8G8_SNORM;
+ case MESA_FORMAT_SIGNED_RGBA8888_REV:
+ return PIPE_FORMAT_R8G8B8A8_SNORM;
+
+ case MESA_FORMAT_SIGNED_A8:
+ return PIPE_FORMAT_A8_SNORM;
+ case MESA_FORMAT_SIGNED_L8:
+ return PIPE_FORMAT_L8_SNORM;
+ case MESA_FORMAT_SIGNED_AL88:
+ return PIPE_FORMAT_L8A8_SNORM;
+ case MESA_FORMAT_SIGNED_I8:
+ return PIPE_FORMAT_I8_SNORM;
+
+ case MESA_FORMAT_SIGNED_R16:
+ return PIPE_FORMAT_R16_SNORM;
+ case MESA_FORMAT_SIGNED_GR1616:
+ return PIPE_FORMAT_R16G16_SNORM;
+ case MESA_FORMAT_SIGNED_RGBA_16:
+ return PIPE_FORMAT_R16G16B16A16_SNORM;
+
+ case MESA_FORMAT_SIGNED_A16:
+ return PIPE_FORMAT_A16_SNORM;
+ case MESA_FORMAT_SIGNED_L16:
+ return PIPE_FORMAT_L16_SNORM;
+ case MESA_FORMAT_SIGNED_AL1616:
+ return PIPE_FORMAT_L16A16_SNORM;
+ case MESA_FORMAT_SIGNED_I16:
+ return PIPE_FORMAT_I16_SNORM;
+
default:
assert(0);
return PIPE_FORMAT_NONE;
@@ -318,8 +384,6 @@ st_pipe_format_to_mesa_format(enum pipe_format format)
case PIPE_FORMAT_R16G16B16A16_UNORM:
return MESA_FORMAT_RGBA_16;
- case PIPE_FORMAT_R16G16B16A16_SNORM:
- return MESA_FORMAT_SIGNED_RGBA_16;
case PIPE_FORMAT_Z16_UNORM:
return MESA_FORMAT_Z16;
@@ -372,6 +436,38 @@ st_pipe_format_to_mesa_format(enum pipe_format format)
case PIPE_FORMAT_B8G8R8A8_SRGB:
return MESA_FORMAT_SARGB8;
#endif
+ case PIPE_FORMAT_R32G32B32A32_FLOAT:
+ return MESA_FORMAT_RGBA_FLOAT32;
+ case PIPE_FORMAT_R16G16B16A16_FLOAT:
+ return MESA_FORMAT_RGBA_FLOAT16;
+ case PIPE_FORMAT_R32G32B32_FLOAT:
+ return MESA_FORMAT_RGB_FLOAT32;
+ case PIPE_FORMAT_R16G16B16_FLOAT:
+ return MESA_FORMAT_RGB_FLOAT16;
+ case PIPE_FORMAT_L32A32_FLOAT:
+ return MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32;
+ case PIPE_FORMAT_L16A16_FLOAT:
+ return MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16;
+ case PIPE_FORMAT_L32_FLOAT:
+ return MESA_FORMAT_LUMINANCE_FLOAT32;
+ case PIPE_FORMAT_L16_FLOAT:
+ return MESA_FORMAT_LUMINANCE_FLOAT16;
+ case PIPE_FORMAT_A32_FLOAT:
+ return MESA_FORMAT_ALPHA_FLOAT32;
+ case PIPE_FORMAT_A16_FLOAT:
+ return MESA_FORMAT_ALPHA_FLOAT16;
+ case PIPE_FORMAT_I32_FLOAT:
+ return MESA_FORMAT_INTENSITY_FLOAT32;
+ case PIPE_FORMAT_I16_FLOAT:
+ return MESA_FORMAT_INTENSITY_FLOAT16;
+ case PIPE_FORMAT_R32_FLOAT:
+ return MESA_FORMAT_R_FLOAT32;
+ case PIPE_FORMAT_R16_FLOAT:
+ return MESA_FORMAT_R_FLOAT16;
+ case PIPE_FORMAT_R32G32_FLOAT:
+ return MESA_FORMAT_RG_FLOAT32;
+ case PIPE_FORMAT_R16G16_FLOAT:
+ return MESA_FORMAT_RG_FLOAT16;
case PIPE_FORMAT_R8_UNORM:
return MESA_FORMAT_R8;
@@ -416,6 +512,39 @@ st_pipe_format_to_mesa_format(enum pipe_format format)
//case PIPE_FORMAT_LATC2_SNORM:
// return MESA_FORMAT_SIGNED_LA_LATC2;
+ /* signed normalized formats */
+ case PIPE_FORMAT_R8_SNORM:
+ return MESA_FORMAT_SIGNED_R8;
+ case PIPE_FORMAT_R8G8_SNORM:
+ return MESA_FORMAT_SIGNED_RG88_REV;
+ case PIPE_FORMAT_R8G8B8A8_SNORM:
+ return MESA_FORMAT_SIGNED_RGBA8888_REV;
+
+ case PIPE_FORMAT_A8_SNORM:
+ return MESA_FORMAT_SIGNED_A8;
+ case PIPE_FORMAT_L8_SNORM:
+ return MESA_FORMAT_SIGNED_L8;
+ case PIPE_FORMAT_L8A8_SNORM:
+ return MESA_FORMAT_SIGNED_AL88;
+ case PIPE_FORMAT_I8_SNORM:
+ return MESA_FORMAT_SIGNED_I8;
+
+ case PIPE_FORMAT_R16_SNORM:
+ return MESA_FORMAT_SIGNED_R16;
+ case PIPE_FORMAT_R16G16_SNORM:
+ return MESA_FORMAT_SIGNED_GR1616;
+ case PIPE_FORMAT_R16G16B16A16_SNORM:
+ return MESA_FORMAT_SIGNED_RGBA_16;
+
+ case PIPE_FORMAT_A16_SNORM:
+ return MESA_FORMAT_SIGNED_A16;
+ case PIPE_FORMAT_L16_SNORM:
+ return MESA_FORMAT_SIGNED_L16;
+ case PIPE_FORMAT_L16A16_SNORM:
+ return MESA_FORMAT_SIGNED_AL1616;
+ case PIPE_FORMAT_I16_SNORM:
+ return MESA_FORMAT_SIGNED_I16;
+
default:
assert(0);
return MESA_FORMAT_NONE;
@@ -823,6 +952,178 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
return PIPE_FORMAT_L8_SRGB;
return default_srgba_format( screen, target, sample_count, bindings);
+ /* prefer formats in order of data size, choosing 16-bit ones if equal sized */
+ case GL_RGBA16F_ARB:
+ case GL_RGB16F_ARB:
+ {
+ static const enum pipe_format formats[] = {
+ PIPE_FORMAT_R16G16B16A16_FLOAT,
+ PIPE_FORMAT_R32G32B32A32_FLOAT
+ };
+ return find_supported_format(screen, formats, Elements(formats),
+ target, sample_count, bindings);
+ }
+ case GL_LUMINANCE_ALPHA16F_ARB:
+ {
+ static const enum pipe_format formats[] = {
+ PIPE_FORMAT_L16A16_FLOAT,
+ PIPE_FORMAT_R16G16B16A16_FLOAT,
+ PIPE_FORMAT_L32A32_FLOAT,
+ PIPE_FORMAT_R32G32B32A32_FLOAT
+ };
+ return find_supported_format(screen, formats, Elements(formats),
+ target, sample_count, bindings);
+ }
+ case GL_ALPHA16F_ARB:
+ {
+ static const enum pipe_format formats[] = {
+ PIPE_FORMAT_A16_FLOAT,
+ PIPE_FORMAT_L16A16_FLOAT,
+ PIPE_FORMAT_A32_FLOAT,
+ PIPE_FORMAT_R16G16B16A16_FLOAT,
+ PIPE_FORMAT_L32A32_FLOAT,
+ PIPE_FORMAT_R32G32B32A32_FLOAT
+ };
+ return find_supported_format(screen, formats, Elements(formats),
+ target, sample_count, bindings);
+ }
+ case GL_INTENSITY16F_ARB:
+ {
+ static const enum pipe_format formats[] = {
+ PIPE_FORMAT_I16_FLOAT,
+ PIPE_FORMAT_L16A16_FLOAT,
+ PIPE_FORMAT_I32_FLOAT,
+ PIPE_FORMAT_R16G16B16A16_FLOAT,
+ PIPE_FORMAT_L32A32_FLOAT,
+ PIPE_FORMAT_R32G32B32A32_FLOAT
+ };
+ return find_supported_format(screen, formats, Elements(formats),
+ target, sample_count, bindings);
+ }
+ case GL_LUMINANCE16F_ARB:
+ {
+ static const enum pipe_format formats[] = {
+ PIPE_FORMAT_L16_FLOAT,
+ PIPE_FORMAT_L16A16_FLOAT,
+ PIPE_FORMAT_L32_FLOAT,
+ PIPE_FORMAT_R16G16B16A16_FLOAT,
+ PIPE_FORMAT_L32A32_FLOAT,
+ PIPE_FORMAT_R32G32B32A32_FLOAT
+ };
+ return find_supported_format(screen, formats, Elements(formats),
+ target, sample_count, bindings);
+ }
+ case GL_R16F:
+ {
+ static const enum pipe_format formats[] = {
+ PIPE_FORMAT_R16_FLOAT,
+ PIPE_FORMAT_R16G16_FLOAT,
+ PIPE_FORMAT_R32_FLOAT,
+ PIPE_FORMAT_R16G16B16A16_FLOAT,
+ PIPE_FORMAT_R32G32_FLOAT,
+ PIPE_FORMAT_R32G32B32A32_FLOAT
+ };
+ return find_supported_format(screen, formats, Elements(formats),
+ target, sample_count, bindings);
+ }
+ case GL_RG16F:
+ {
+ static const enum pipe_format formats[] = {
+ PIPE_FORMAT_R16G16_FLOAT,
+ PIPE_FORMAT_R16G16B16A16_FLOAT,
+ PIPE_FORMAT_R32G32_FLOAT,
+ PIPE_FORMAT_R32G32B32A32_FLOAT
+ };
+ return find_supported_format(screen, formats, Elements(formats),
+ target, sample_count, bindings);
+ }
+
+ /* try a 32-bit format if available, otherwise fallback to a 16-bit one */
+ case GL_RGBA32F_ARB:
+ case GL_RGB32F_ARB:
+ {
+ static const enum pipe_format formats[] = {
+ PIPE_FORMAT_R32G32B32A32_FLOAT,
+ PIPE_FORMAT_R16G16B16A16_FLOAT
+ };
+ return find_supported_format(screen, formats, Elements(formats),
+ target, sample_count, bindings);
+ }
+ case GL_LUMINANCE_ALPHA32F_ARB:
+ {
+ static const enum pipe_format formats[] = {
+ PIPE_FORMAT_L32A32_FLOAT,
+ PIPE_FORMAT_R32G32B32A32_FLOAT,
+ PIPE_FORMAT_L16A16_FLOAT,
+ PIPE_FORMAT_R16G16B16A16_FLOAT
+ };
+ return find_supported_format(screen, formats, Elements(formats),
+ target, sample_count, bindings);
+ }
+ case GL_ALPHA32F_ARB:
+ {
+ static const enum pipe_format formats[] = {
+ PIPE_FORMAT_A32_FLOAT,
+ PIPE_FORMAT_L32A32_FLOAT,
+ PIPE_FORMAT_R32G32B32A32_FLOAT,
+ PIPE_FORMAT_A16_FLOAT,
+ PIPE_FORMAT_L16A16_FLOAT,
+ PIPE_FORMAT_R16G16B16A16_FLOAT
+ };
+ return find_supported_format(screen, formats, Elements(formats),
+ target, sample_count, bindings);
+ }
+ case GL_INTENSITY32F_ARB:
+ {
+ static const enum pipe_format formats[] = {
+ PIPE_FORMAT_I32_FLOAT,
+ PIPE_FORMAT_L32A32_FLOAT,
+ PIPE_FORMAT_R32G32B32A32_FLOAT,
+ PIPE_FORMAT_I16_FLOAT,
+ PIPE_FORMAT_L16A16_FLOAT,
+ PIPE_FORMAT_R16G16B16A16_FLOAT
+ };
+ return find_supported_format(screen, formats, Elements(formats),
+ target, sample_count, bindings);
+ }
+ case GL_LUMINANCE32F_ARB:
+ {
+ static const enum pipe_format formats[] = {
+ PIPE_FORMAT_L32_FLOAT,
+ PIPE_FORMAT_L32A32_FLOAT,
+ PIPE_FORMAT_R32G32B32A32_FLOAT,
+ PIPE_FORMAT_L16_FLOAT,
+ PIPE_FORMAT_L16A16_FLOAT,
+ PIPE_FORMAT_R16G16B16A16_FLOAT
+ };
+ return find_supported_format(screen, formats, Elements(formats),
+ target, sample_count, bindings);
+ }
+ case GL_R32F:
+ {
+ static const enum pipe_format formats[] = {
+ PIPE_FORMAT_R32_FLOAT,
+ PIPE_FORMAT_R32G32_FLOAT,
+ PIPE_FORMAT_R32G32B32A32_FLOAT,
+ PIPE_FORMAT_R16_FLOAT,
+ PIPE_FORMAT_R16G16_FLOAT,
+ PIPE_FORMAT_R16G16B16A16_FLOAT
+ };
+ return find_supported_format(screen, formats, Elements(formats),
+ target, sample_count, bindings);
+ }
+ case GL_RG32F:
+ {
+ static const enum pipe_format formats[] = {
+ PIPE_FORMAT_R32G32_FLOAT,
+ PIPE_FORMAT_R32G32B32A32_FLOAT,
+ PIPE_FORMAT_R16G16_FLOAT,
+ PIPE_FORMAT_R16G16B16A16_FLOAT
+ };
+ return find_supported_format(screen, formats, Elements(formats),
+ target, sample_count, bindings);
+ }
+
case GL_RED:
case GL_R8:
if (screen->is_format_supported(screen, PIPE_FORMAT_R8_UNORM, target,
@@ -999,6 +1300,170 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
return PIPE_FORMAT_R32G32B32A32_USCALED;
return PIPE_FORMAT_NONE;
+ /* signed normalized formats */
+ case GL_RED_SNORM:
+ case GL_R8_SNORM:
+ {
+ static const enum pipe_format formats[] = {
+ PIPE_FORMAT_R8_SNORM,
+ PIPE_FORMAT_R8G8_SNORM,
+ PIPE_FORMAT_R8G8B8A8_SNORM,
+ };
+ return find_supported_format(screen, formats, Elements(formats),
+ target, sample_count, bindings);
+ }
+
+ case GL_R16_SNORM:
+ {
+ static const enum pipe_format formats[] = {
+ PIPE_FORMAT_R16_SNORM,
+ PIPE_FORMAT_R16G16_SNORM,
+ PIPE_FORMAT_R16G16B16A16_SNORM,
+ PIPE_FORMAT_R8_SNORM,
+ PIPE_FORMAT_R8G8_SNORM,
+ PIPE_FORMAT_R8G8B8A8_SNORM,
+ };
+ return find_supported_format(screen, formats, Elements(formats),
+ target, sample_count, bindings);
+ }
+
+ case GL_RG_SNORM:
+ case GL_RG8_SNORM:
+ {
+ static const enum pipe_format formats[] = {
+ PIPE_FORMAT_R8G8_SNORM,
+ PIPE_FORMAT_R8G8B8A8_SNORM,
+ };
+ return find_supported_format(screen, formats, Elements(formats),
+ target, sample_count, bindings);
+ }
+
+ case GL_RG16_SNORM:
+ {
+ static const enum pipe_format formats[] = {
+ PIPE_FORMAT_R16G16_SNORM,
+ PIPE_FORMAT_R16G16B16A16_SNORM,
+ PIPE_FORMAT_R8G8_SNORM,
+ PIPE_FORMAT_R8G8B8A8_SNORM,
+ };
+ return find_supported_format(screen, formats, Elements(formats),
+ target, sample_count, bindings);
+ }
+
+ case GL_RGB_SNORM:
+ case GL_RGB8_SNORM:
+ case GL_RGBA_SNORM:
+ case GL_RGBA8_SNORM:
+ if (screen->is_format_supported(screen, PIPE_FORMAT_R8G8B8A8_SNORM,
+ target,
+ sample_count, bindings))
+ return PIPE_FORMAT_R8G8B8A8_SNORM;
+ return PIPE_FORMAT_NONE;
+
+ case GL_RGB16_SNORM:
+ case GL_RGBA16_SNORM:
+ {
+ static const enum pipe_format formats[] = {
+ PIPE_FORMAT_R16G16B16A16_SNORM,
+ PIPE_FORMAT_R8G8B8A8_SNORM,
+ };
+ return find_supported_format(screen, formats, Elements(formats),
+ target, sample_count, bindings);
+ }
+
+
+ case GL_ALPHA_SNORM:
+ case GL_ALPHA8_SNORM:
+ {
+ static const enum pipe_format formats[] = {
+ PIPE_FORMAT_A8_SNORM,
+ PIPE_FORMAT_R8G8B8A8_SNORM,
+ };
+ return find_supported_format(screen, formats, Elements(formats),
+ target, sample_count, bindings);
+ }
+
+ case GL_ALPHA16_SNORM:
+ {
+ static const enum pipe_format formats[] = {
+ PIPE_FORMAT_A16_SNORM,
+ PIPE_FORMAT_R16G16B16A16_SNORM,
+ PIPE_FORMAT_A8_SNORM,
+ PIPE_FORMAT_R8G8B8A8_SNORM,
+ };
+ return find_supported_format(screen, formats, Elements(formats),
+ target, sample_count, bindings);
+ }
+
+ case GL_LUMINANCE_SNORM:
+ case GL_LUMINANCE8_SNORM:
+ {
+ static const enum pipe_format formats[] = {
+ PIPE_FORMAT_L8_SNORM,
+ PIPE_FORMAT_R8G8B8A8_SNORM,
+ };
+ return find_supported_format(screen, formats, Elements(formats),
+ target, sample_count, bindings);
+ }
+
+ case GL_LUMINANCE16_SNORM:
+ {
+ static const enum pipe_format formats[] = {
+ PIPE_FORMAT_L16_SNORM,
+ PIPE_FORMAT_R16G16B16A16_SNORM,
+ PIPE_FORMAT_L8_SNORM,
+ PIPE_FORMAT_R8G8B8A8_SNORM,
+ };
+ return find_supported_format(screen, formats, Elements(formats),
+ target, sample_count, bindings);
+ }
+
+ case GL_LUMINANCE_ALPHA_SNORM:
+ case GL_LUMINANCE8_ALPHA8_SNORM:
+ {
+ static const enum pipe_format formats[] = {
+ PIPE_FORMAT_L8A8_SNORM,
+ PIPE_FORMAT_R8G8B8A8_SNORM,
+ };
+ return find_supported_format(screen, formats, Elements(formats),
+ target, sample_count, bindings);
+ }
+
+ case GL_LUMINANCE16_ALPHA16_SNORM:
+ {
+ static const enum pipe_format formats[] = {
+ PIPE_FORMAT_L16A16_SNORM,
+ PIPE_FORMAT_R16G16B16A16_SNORM,
+ PIPE_FORMAT_L8A8_SNORM,
+ PIPE_FORMAT_R8G8B8A8_SNORM,
+ };
+ return find_supported_format(screen, formats, Elements(formats),
+ target, sample_count, bindings);
+ }
+
+ case GL_INTENSITY_SNORM:
+ case GL_INTENSITY8_SNORM:
+ {
+ static const enum pipe_format formats[] = {
+ PIPE_FORMAT_I8_SNORM,
+ PIPE_FORMAT_R8G8B8A8_SNORM,
+ };
+ return find_supported_format(screen, formats, Elements(formats),
+ target, sample_count, bindings);
+ }
+
+ case GL_INTENSITY16_SNORM:
+ {
+ static const enum pipe_format formats[] = {
+ PIPE_FORMAT_I16_SNORM,
+ PIPE_FORMAT_R16G16B16A16_SNORM,
+ PIPE_FORMAT_I8_SNORM,
+ PIPE_FORMAT_R8G8B8A8_SNORM,
+ };
+ return find_supported_format(screen, formats, Elements(formats),
+ target, sample_count, bindings);
+ }
+
default:
return PIPE_FORMAT_NONE;
}
diff --git a/src/mesa/state_tracker/st_texture.h b/src/mesa/state_tracker/st_texture.h
index d50c3c9af79..903e30df52f 100644
--- a/src/mesa/state_tracker/st_texture.h
+++ b/src/mesa/state_tracker/st_texture.h
@@ -163,6 +163,21 @@ st_get_texture_sampler_view(struct st_texture_object *stObj,
}
+/**
+ * Get pointer to the active sampler object for the given texture unit.
+ * This will either be a user-defined sampler object or the texture
+ * object's own sampler state.
+ */
+static INLINE struct gl_sampler_object *
+st_get_mesa_sampler(const struct gl_context *ctx, GLuint unit)
+{
+ if (ctx->Texture.Unit[unit].Sampler)
+ return ctx->Texture.Unit[unit].Sampler;
+ else
+ return &ctx->Texture.Unit[unit]._Current->Sampler;
+}
+
+
extern struct pipe_resource *
st_texture_create(struct st_context *st,
enum pipe_texture_target target,
diff --git a/src/mesa/swrast/s_aatriangle.c b/src/mesa/swrast/s_aatriangle.c
index 2c02a01327f..2e8767a33d9 100644
--- a/src/mesa/swrast/s_aatriangle.c
+++ b/src/mesa/swrast/s_aatriangle.c
@@ -215,12 +215,7 @@ compute_coveragef(const GLfloat v0[3], const GLfloat v1[3],
GLint stop = 4, i;
GLfloat insideCount = 16.0F;
-#ifdef DEBUG
- {
- const GLfloat area = dx0 * dy1 - dx1 * dy0;
- ASSERT(area >= 0.0);
- }
-#endif
+ ASSERT(dx0 * dy1 - dx1 * dy0 >= 0.0); /* area >= 0.0 */
for (i = 0; i < stop; i++) {
const GLfloat sx = x + samples[i][0];
diff --git a/src/mesa/swrast/s_context.c b/src/mesa/swrast/s_context.c
index 491fcfcdbbf..b3e39689cfa 100644
--- a/src/mesa/swrast/s_context.c
+++ b/src/mesa/swrast/s_context.c
@@ -248,18 +248,11 @@ _swrast_update_fog_state( struct gl_context *ctx )
SWcontext *swrast = SWRAST_CONTEXT(ctx);
const struct gl_fragment_program *fp = ctx->FragmentProgram._Current;
+ assert((fp == NULL) || (fp->Base.Target == GL_FRAGMENT_PROGRAM_ARB));
+
/* determine if fog is needed, and if so, which fog mode */
- swrast->_FogEnabled = GL_FALSE;
- if (fp && fp->Base.Target == GL_FRAGMENT_PROGRAM_ARB) {
- if (fp->FogOption != GL_NONE) {
- swrast->_FogEnabled = GL_TRUE;
- swrast->_FogMode = fp->FogOption;
- }
- }
- else if (ctx->Fog.Enabled) {
- swrast->_FogEnabled = GL_TRUE;
- swrast->_FogMode = ctx->Fog.Mode;
- }
+ swrast->_FogEnabled = (fp == NULL && ctx->Fog.Enabled);
+ swrast->_FogMode = ctx->Fog.Mode;
}
diff --git a/src/mesa/swrast/s_fragprog.c b/src/mesa/swrast/s_fragprog.c
index e391043f4d9..b6bfeaed4a9 100644
--- a/src/mesa/swrast/s_fragprog.c
+++ b/src/mesa/swrast/s_fragprog.c
@@ -71,7 +71,7 @@ fetch_texel_lod( struct gl_context *ctx, const GLfloat texcoord[4], GLfloat lamb
SWcontext *swrast = SWRAST_CONTEXT(ctx);
GLfloat rgba[4];
- lambda = CLAMP(lambda, texObj->MinLod, texObj->MaxLod);
+ lambda = CLAMP(lambda, texObj->Sampler.MinLod, texObj->Sampler.MaxLod);
swrast->TextureSample[unit](ctx, texObj, 1,
(const GLfloat (*)[4]) texcoord,
@@ -115,9 +115,9 @@ fetch_texel_deriv( struct gl_context *ctx, const GLfloat texcoord[4],
texcoord[0], texcoord[1], texcoord[3],
1.0F / texcoord[3]);
- lambda += lodBias + texUnit->LodBias + texObj->LodBias;
+ lambda += lodBias + texUnit->LodBias + texObj->Sampler.LodBias;
- lambda = CLAMP(lambda, texObj->MinLod, texObj->MaxLod);
+ lambda = CLAMP(lambda, texObj->Sampler.MinLod, texObj->Sampler.MaxLod);
swrast->TextureSample[unit](ctx, texObj, 1,
(const GLfloat (*)[4]) texcoord,
diff --git a/src/mesa/swrast/s_readpix.c b/src/mesa/swrast/s_readpix.c
index 5c8d7e9c5cf..214f2ea1aaa 100644
--- a/src/mesa/swrast/s_readpix.c
+++ b/src/mesa/swrast/s_readpix.c
@@ -191,7 +191,13 @@ fast_read_rgba_pixels( struct gl_context *ctx,
if (!rb)
return GL_FALSE;
- ASSERT(rb->_BaseFormat == GL_RGBA || rb->_BaseFormat == GL_RGB ||
+ ASSERT(rb->_BaseFormat == GL_RGBA ||
+ rb->_BaseFormat == GL_RGB ||
+ rb->_BaseFormat == GL_RG ||
+ rb->_BaseFormat == GL_RED ||
+ rb->_BaseFormat == GL_LUMINANCE ||
+ rb->_BaseFormat == GL_INTENSITY ||
+ rb->_BaseFormat == GL_LUMINANCE_ALPHA ||
rb->_BaseFormat == GL_ALPHA);
/* clipping should have already been done */
@@ -312,12 +318,12 @@ read_rgba_pixels( struct gl_context *ctx,
if (!rb)
return;
- if (type == GL_FLOAT && ((ctx->Color.ClampReadColor == GL_TRUE) ||
- (ctx->Color.ClampReadColor == GL_FIXED_ONLY_ARB &&
- rb->DataType != GL_FLOAT)))
+ if ((ctx->Color._ClampReadColor == GL_TRUE || type != GL_FLOAT) &&
+ !_mesa_is_integer_format(format)) {
transferOps |= IMAGE_CLAMP_BIT;
+ }
- /* Try optimized path first */
+ /* Try the optimized path first. */
if (fast_read_rgba_pixels(ctx, x, y, width, height,
format, type, pixels, packing, transferOps)) {
return; /* done! */
@@ -341,9 +347,9 @@ read_rgba_pixels( struct gl_context *ctx,
_swrast_read_rgba_span(ctx, rb, width, x, y, GL_FLOAT, rgba);
/* apply fudge factor for shallow color buffers */
- if (fb->Visual.redBits < 8 ||
- fb->Visual.greenBits < 8 ||
- fb->Visual.blueBits < 8) {
+ if ((fb->Visual.redBits < 8 && fb->Visual.redBits != 0) ||
+ (fb->Visual.greenBits < 8 && fb->Visual.greenBits != 0) ||
+ (fb->Visual.blueBits < 8 && fb->Visual.blueBits != 0)) {
adjust_colors(fb, width, rgba);
}
diff --git a/src/mesa/swrast/s_span.c b/src/mesa/swrast/s_span.c
index ef38a6b22b8..f0524e0610e 100644
--- a/src/mesa/swrast/s_span.c
+++ b/src/mesa/swrast/s_span.c
@@ -490,7 +490,7 @@ interpolate_texcoords(struct gl_context *ctx, SWspan *span)
if (obj) {
const struct gl_texture_image *img = obj->Image[0][obj->BaseLevel];
- needLambda = (obj->MinFilter != obj->MagFilter)
+ needLambda = (obj->Sampler.MinFilter != obj->Sampler.MagFilter)
|| ctx->FragmentProgram._Current;
texW = img->WidthScale;
texH = img->HeightScale;
@@ -1348,7 +1348,13 @@ _swrast_read_rgba_span( struct gl_context *ctx, struct gl_renderbuffer *rb,
ASSERT(rb);
ASSERT(rb->GetRow);
- ASSERT(rb->_BaseFormat == GL_RGB || rb->_BaseFormat == GL_RGBA ||
+ ASSERT(rb->_BaseFormat == GL_RGBA ||
+ rb->_BaseFormat == GL_RGB ||
+ rb->_BaseFormat == GL_RG ||
+ rb->_BaseFormat == GL_RED ||
+ rb->_BaseFormat == GL_LUMINANCE ||
+ rb->_BaseFormat == GL_INTENSITY ||
+ rb->_BaseFormat == GL_LUMINANCE_ALPHA ||
rb->_BaseFormat == GL_ALPHA);
if (rb->DataType == dstType) {
diff --git a/src/mesa/swrast/s_texcombine.c b/src/mesa/swrast/s_texcombine.c
index 0c8cc9ff37b..7f49b6ffa50 100644
--- a/src/mesa/swrast/s_texcombine.c
+++ b/src/mesa/swrast/s_texcombine.c
@@ -631,9 +631,9 @@ _swrast_texture_span( struct gl_context *ctx, SWspan *span )
/* adjust texture lod (lambda) */
if (span->arrayMask & SPAN_LAMBDA) {
- if (texUnit->LodBias + curObj->LodBias != 0.0F) {
+ if (texUnit->LodBias + curObj->Sampler.LodBias != 0.0F) {
/* apply LOD bias, but don't clamp yet */
- const GLfloat bias = CLAMP(texUnit->LodBias + curObj->LodBias,
+ const GLfloat bias = CLAMP(texUnit->LodBias + curObj->Sampler.LodBias,
-ctx->Const.MaxTextureLodBias,
ctx->Const.MaxTextureLodBias);
GLuint i;
@@ -642,10 +642,11 @@ _swrast_texture_span( struct gl_context *ctx, SWspan *span )
}
}
- if (curObj->MinLod != -1000.0 || curObj->MaxLod != 1000.0) {
+ if (curObj->Sampler.MinLod != -1000.0 ||
+ curObj->Sampler.MaxLod != 1000.0) {
/* apply LOD clamping to lambda */
- const GLfloat min = curObj->MinLod;
- const GLfloat max = curObj->MaxLod;
+ const GLfloat min = curObj->Sampler.MinLod;
+ const GLfloat max = curObj->Sampler.MaxLod;
GLuint i;
for (i = 0; i < span->end; i++) {
GLfloat l = lambda[i];
@@ -686,9 +687,9 @@ _swrast_texture_span( struct gl_context *ctx, SWspan *span )
/* adjust texture lod (lambda) */
if (span->arrayMask & SPAN_LAMBDA) {
- if (texUnit->LodBias + curObj->LodBias != 0.0F) {
+ if (texUnit->LodBias + curObj->Sampler.LodBias != 0.0F) {
/* apply LOD bias, but don't clamp yet */
- const GLfloat bias = CLAMP(texUnit->LodBias + curObj->LodBias,
+ const GLfloat bias = CLAMP(texUnit->LodBias + curObj->Sampler.LodBias,
-ctx->Const.MaxTextureLodBias,
ctx->Const.MaxTextureLodBias);
GLuint i;
@@ -697,10 +698,11 @@ _swrast_texture_span( struct gl_context *ctx, SWspan *span )
}
}
- if (curObj->MinLod != -1000.0 || curObj->MaxLod != 1000.0) {
+ if (curObj->Sampler.MinLod != -1000.0 ||
+ curObj->Sampler.MaxLod != 1000.0) {
/* apply LOD clamping to lambda */
- const GLfloat min = curObj->MinLod;
- const GLfloat max = curObj->MaxLod;
+ const GLfloat min = curObj->Sampler.MinLod;
+ const GLfloat max = curObj->Sampler.MaxLod;
GLuint i;
for (i = 0; i < span->end; i++) {
GLfloat l = lambda[i];
diff --git a/src/mesa/swrast/s_texfilter.c b/src/mesa/swrast/s_texfilter.c
index 42785400c0e..106f8b75f9e 100644
--- a/src/mesa/swrast/s_texfilter.c
+++ b/src/mesa/swrast/s_texfilter.c
@@ -505,28 +505,28 @@ nearest_texcoord(const struct gl_texture_object *texObj,
switch (texObj->Target) {
case GL_TEXTURE_RECTANGLE_ARB:
- *i = clamp_rect_coord_nearest(texObj->WrapS, texcoord[0], width);
- *j = clamp_rect_coord_nearest(texObj->WrapT, texcoord[1], height);
+ *i = clamp_rect_coord_nearest(texObj->Sampler.WrapS, texcoord[0], width);
+ *j = clamp_rect_coord_nearest(texObj->Sampler.WrapT, texcoord[1], height);
*k = 0;
break;
case GL_TEXTURE_1D:
- *i = nearest_texel_location(texObj->WrapS, img, width, texcoord[0]);
+ *i = nearest_texel_location(texObj->Sampler.WrapS, img, width, texcoord[0]);
*j = 0;
*k = 0;
break;
case GL_TEXTURE_2D:
- *i = nearest_texel_location(texObj->WrapS, img, width, texcoord[0]);
- *j = nearest_texel_location(texObj->WrapT, img, height, texcoord[1]);
+ *i = nearest_texel_location(texObj->Sampler.WrapS, img, width, texcoord[0]);
+ *j = nearest_texel_location(texObj->Sampler.WrapT, img, height, texcoord[1]);
*k = 0;
break;
case GL_TEXTURE_1D_ARRAY_EXT:
- *i = nearest_texel_location(texObj->WrapS, img, width, texcoord[0]);
+ *i = nearest_texel_location(texObj->Sampler.WrapS, img, width, texcoord[0]);
*j = tex_array_slice(texcoord[1], height);
*k = 0;
break;
case GL_TEXTURE_2D_ARRAY_EXT:
- *i = nearest_texel_location(texObj->WrapS, img, width, texcoord[0]);
- *j = nearest_texel_location(texObj->WrapT, img, height, texcoord[1]);
+ *i = nearest_texel_location(texObj->Sampler.WrapS, img, width, texcoord[0]);
+ *j = nearest_texel_location(texObj->Sampler.WrapT, img, height, texcoord[1]);
*k = tex_array_slice(texcoord[2], depth);
break;
default:
@@ -553,24 +553,24 @@ linear_texcoord(const struct gl_texture_object *texObj,
switch (texObj->Target) {
case GL_TEXTURE_RECTANGLE_ARB:
- clamp_rect_coord_linear(texObj->WrapS, texcoord[0],
+ clamp_rect_coord_linear(texObj->Sampler.WrapS, texcoord[0],
width, i0, i1, wi);
- clamp_rect_coord_linear(texObj->WrapT, texcoord[1],
+ clamp_rect_coord_linear(texObj->Sampler.WrapT, texcoord[1],
height, j0, j1, wj);
*slice = 0;
break;
case GL_TEXTURE_1D:
case GL_TEXTURE_2D:
- linear_texel_locations(texObj->WrapS, img, width,
+ linear_texel_locations(texObj->Sampler.WrapS, img, width,
texcoord[0], i0, i1, wi);
- linear_texel_locations(texObj->WrapT, img, height,
+ linear_texel_locations(texObj->Sampler.WrapT, img, height,
texcoord[1], j0, j1, wj);
*slice = 0;
break;
case GL_TEXTURE_1D_ARRAY_EXT:
- linear_texel_locations(texObj->WrapS, img, width,
+ linear_texel_locations(texObj->Sampler.WrapS, img, width,
texcoord[0], i0, i1, wi);
*j0 = tex_array_slice(texcoord[1], height);
*j1 = *j0;
@@ -578,9 +578,9 @@ linear_texcoord(const struct gl_texture_object *texObj,
break;
case GL_TEXTURE_2D_ARRAY_EXT:
- linear_texel_locations(texObj->WrapS, img, width,
+ linear_texel_locations(texObj->Sampler.WrapS, img, width,
texcoord[0], i0, i1, wi);
- linear_texel_locations(texObj->WrapT, img, height,
+ linear_texel_locations(texObj->Sampler.WrapT, img, height,
texcoord[1], j0, j1, wj);
*slice = tex_array_slice(texcoord[2], depth);
break;
@@ -656,12 +656,12 @@ compute_min_mag_ranges(const struct gl_texture_object *tObj,
GLfloat minMagThresh;
/* we shouldn't be here if minfilter == magfilter */
- ASSERT(tObj->MinFilter != tObj->MagFilter);
+ ASSERT(tObj->Sampler.MinFilter != tObj->Sampler.MagFilter);
/* This bit comes from the OpenGL spec: */
- if (tObj->MagFilter == GL_LINEAR
- && (tObj->MinFilter == GL_NEAREST_MIPMAP_NEAREST ||
- tObj->MinFilter == GL_NEAREST_MIPMAP_LINEAR)) {
+ if (tObj->Sampler.MagFilter == GL_LINEAR
+ && (tObj->Sampler.MinFilter == GL_NEAREST_MIPMAP_NEAREST ||
+ tObj->Sampler.MinFilter == GL_NEAREST_MIPMAP_LINEAR)) {
minMagThresh = 0.5F;
}
else {
@@ -763,28 +763,28 @@ get_border_color(const struct gl_texture_object *tObj,
{
switch (img->_BaseFormat) {
case GL_RGB:
- rgba[0] = tObj->BorderColor.f[0];
- rgba[1] = tObj->BorderColor.f[1];
- rgba[2] = tObj->BorderColor.f[2];
+ rgba[0] = tObj->Sampler.BorderColor.f[0];
+ rgba[1] = tObj->Sampler.BorderColor.f[1];
+ rgba[2] = tObj->Sampler.BorderColor.f[2];
rgba[3] = 1.0F;
break;
case GL_ALPHA:
rgba[0] = rgba[1] = rgba[2] = 0.0;
- rgba[3] = tObj->BorderColor.f[3];
+ rgba[3] = tObj->Sampler.BorderColor.f[3];
break;
case GL_LUMINANCE:
- rgba[0] = rgba[1] = rgba[2] = tObj->BorderColor.f[0];
+ rgba[0] = rgba[1] = rgba[2] = tObj->Sampler.BorderColor.f[0];
rgba[3] = 1.0;
break;
case GL_LUMINANCE_ALPHA:
- rgba[0] = rgba[1] = rgba[2] = tObj->BorderColor.f[0];
- rgba[3] = tObj->BorderColor.f[3];
+ rgba[0] = rgba[1] = rgba[2] = tObj->Sampler.BorderColor.f[0];
+ rgba[3] = tObj->Sampler.BorderColor.f[3];
break;
case GL_INTENSITY:
- rgba[0] = rgba[1] = rgba[2] = rgba[3] = tObj->BorderColor.f[0];
+ rgba[0] = rgba[1] = rgba[2] = rgba[3] = tObj->Sampler.BorderColor.f[0];
break;
default:
- COPY_4V(rgba, tObj->BorderColor.f);
+ COPY_4V(rgba, tObj->Sampler.BorderColor.f);
}
}
@@ -804,7 +804,7 @@ sample_1d_nearest(struct gl_context *ctx,
{
const GLint width = img->Width2; /* without border, power of two */
GLint i;
- i = nearest_texel_location(tObj->WrapS, img, width, texcoord[0]);
+ i = nearest_texel_location(tObj->Sampler.WrapS, img, width, texcoord[0]);
/* skip over the border, if any */
i += img->Border;
if (i < 0 || i >= (GLint) img->Width) {
@@ -832,7 +832,7 @@ sample_1d_linear(struct gl_context *ctx,
GLfloat a;
GLfloat t0[4], t1[4]; /* texels */
- linear_texel_locations(tObj->WrapS, img, width, texcoord[0], &i0, &i1, &a);
+ linear_texel_locations(tObj->Sampler.WrapS, img, width, texcoord[0], &i0, &i1, &a);
if (img->Border) {
i0 += img->Border;
@@ -991,7 +991,7 @@ sample_lambda_1d( struct gl_context *ctx,
if (minStart < minEnd) {
/* do the minified texels */
const GLuint m = minEnd - minStart;
- switch (tObj->MinFilter) {
+ switch (tObj->Sampler.MinFilter) {
case GL_NEAREST:
for (i = minStart; i < minEnd; i++)
sample_1d_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel],
@@ -1026,7 +1026,7 @@ sample_lambda_1d( struct gl_context *ctx,
if (magStart < magEnd) {
/* do the magnified texels */
- switch (tObj->MagFilter) {
+ switch (tObj->Sampler.MagFilter) {
case GL_NEAREST:
for (i = magStart; i < magEnd; i++)
sample_1d_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel],
@@ -1065,8 +1065,8 @@ sample_2d_nearest(struct gl_context *ctx,
GLint i, j;
(void) ctx;
- i = nearest_texel_location(tObj->WrapS, img, width, texcoord[0]);
- j = nearest_texel_location(tObj->WrapT, img, height, texcoord[1]);
+ i = nearest_texel_location(tObj->Sampler.WrapS, img, width, texcoord[0]);
+ j = nearest_texel_location(tObj->Sampler.WrapT, img, height, texcoord[1]);
/* skip over the border, if any */
i += img->Border;
@@ -1100,8 +1100,8 @@ sample_2d_linear(struct gl_context *ctx,
GLfloat a, b;
GLfloat t00[4], t10[4], t01[4], t11[4]; /* sampled texel colors */
- linear_texel_locations(tObj->WrapS, img, width, texcoord[0], &i0, &i1, &a);
- linear_texel_locations(tObj->WrapT, img, height, texcoord[1], &j0, &j1, &b);
+ linear_texel_locations(tObj->Sampler.WrapS, img, width, texcoord[0], &i0, &i1, &a);
+ linear_texel_locations(tObj->Sampler.WrapT, img, height, texcoord[1], &j0, &j1, &b);
if (img->Border) {
i0 += img->Border;
@@ -1165,8 +1165,8 @@ sample_2d_linear_repeat(struct gl_context *ctx,
(void) ctx;
- ASSERT(tObj->WrapS == GL_REPEAT);
- ASSERT(tObj->WrapT == GL_REPEAT);
+ ASSERT(tObj->Sampler.WrapS == GL_REPEAT);
+ ASSERT(tObj->Sampler.WrapT == GL_REPEAT);
ASSERT(img->Border == 0);
ASSERT(img->_BaseFormat != GL_COLOR_INDEX);
ASSERT(img->_IsPowerOfTwo);
@@ -1270,8 +1270,8 @@ sample_2d_linear_mipmap_linear_repeat(struct gl_context *ctx,
{
GLuint i;
ASSERT(lambda != NULL);
- ASSERT(tObj->WrapS == GL_REPEAT);
- ASSERT(tObj->WrapT == GL_REPEAT);
+ ASSERT(tObj->Sampler.WrapS == GL_REPEAT);
+ ASSERT(tObj->Sampler.WrapT == GL_REPEAT);
for (i = 0; i < n; i++) {
GLint level = linear_mipmap_level(tObj, lambda[i]);
if (level >= tObj->_MaxLevel) {
@@ -1317,8 +1317,8 @@ sample_linear_2d(struct gl_context *ctx,
GLuint i;
struct gl_texture_image *image = tObj->Image[0][tObj->BaseLevel];
(void) lambda;
- if (tObj->WrapS == GL_REPEAT &&
- tObj->WrapT == GL_REPEAT &&
+ if (tObj->Sampler.WrapS == GL_REPEAT &&
+ tObj->Sampler.WrapT == GL_REPEAT &&
image->_IsPowerOfTwo &&
image->Border == 0) {
for (i = 0; i < n; i++) {
@@ -1356,8 +1356,8 @@ opt_sample_rgb_2d(struct gl_context *ctx,
GLuint k;
(void) ctx;
(void) lambda;
- ASSERT(tObj->WrapS==GL_REPEAT);
- ASSERT(tObj->WrapT==GL_REPEAT);
+ ASSERT(tObj->Sampler.WrapS==GL_REPEAT);
+ ASSERT(tObj->Sampler.WrapT==GL_REPEAT);
ASSERT(img->Border==0);
ASSERT(img->TexFormat == MESA_FORMAT_RGB888);
ASSERT(img->_IsPowerOfTwo);
@@ -1398,8 +1398,8 @@ opt_sample_rgba_2d(struct gl_context *ctx,
GLuint i;
(void) ctx;
(void) lambda;
- ASSERT(tObj->WrapS==GL_REPEAT);
- ASSERT(tObj->WrapT==GL_REPEAT);
+ ASSERT(tObj->Sampler.WrapS==GL_REPEAT);
+ ASSERT(tObj->Sampler.WrapT==GL_REPEAT);
ASSERT(img->Border==0);
ASSERT(img->TexFormat == MESA_FORMAT_RGBA8888);
ASSERT(img->_IsPowerOfTwo);
@@ -1428,8 +1428,8 @@ sample_lambda_2d(struct gl_context *ctx,
GLuint minStart, minEnd; /* texels with minification */
GLuint magStart, magEnd; /* texels with magnification */
- const GLboolean repeatNoBorderPOT = (tObj->WrapS == GL_REPEAT)
- && (tObj->WrapT == GL_REPEAT)
+ const GLboolean repeatNoBorderPOT = (tObj->Sampler.WrapS == GL_REPEAT)
+ && (tObj->Sampler.WrapT == GL_REPEAT)
&& (tImg->Border == 0 && (tImg->Width == tImg->RowStride))
&& (tImg->_BaseFormat != GL_COLOR_INDEX)
&& tImg->_IsPowerOfTwo;
@@ -1441,7 +1441,7 @@ sample_lambda_2d(struct gl_context *ctx,
if (minStart < minEnd) {
/* do the minified texels */
const GLuint m = minEnd - minStart;
- switch (tObj->MinFilter) {
+ switch (tObj->Sampler.MinFilter) {
case GL_NEAREST:
if (repeatNoBorderPOT) {
switch (tImg->TexFormat) {
@@ -1498,7 +1498,7 @@ sample_lambda_2d(struct gl_context *ctx,
/* do the magnified texels */
const GLuint m = magEnd - magStart;
- switch (tObj->MagFilter) {
+ switch (tObj->Sampler.MagFilter) {
case GL_NEAREST:
if (repeatNoBorderPOT) {
switch (tImg->TexFormat) {
@@ -1552,9 +1552,9 @@ sample_3d_nearest(struct gl_context *ctx,
GLint i, j, k;
(void) ctx;
- i = nearest_texel_location(tObj->WrapS, img, width, texcoord[0]);
- j = nearest_texel_location(tObj->WrapT, img, height, texcoord[1]);
- k = nearest_texel_location(tObj->WrapR, img, depth, texcoord[2]);
+ i = nearest_texel_location(tObj->Sampler.WrapS, img, width, texcoord[0]);
+ j = nearest_texel_location(tObj->Sampler.WrapT, img, height, texcoord[1]);
+ k = nearest_texel_location(tObj->Sampler.WrapR, img, depth, texcoord[2]);
if (i < 0 || i >= (GLint) img->Width ||
j < 0 || j >= (GLint) img->Height ||
@@ -1587,9 +1587,9 @@ sample_3d_linear(struct gl_context *ctx,
GLfloat t000[4], t010[4], t001[4], t011[4];
GLfloat t100[4], t110[4], t101[4], t111[4];
- linear_texel_locations(tObj->WrapS, img, width, texcoord[0], &i0, &i1, &a);
- linear_texel_locations(tObj->WrapT, img, height, texcoord[1], &j0, &j1, &b);
- linear_texel_locations(tObj->WrapR, img, depth, texcoord[2], &k0, &k1, &c);
+ linear_texel_locations(tObj->Sampler.WrapS, img, width, texcoord[0], &i0, &i1, &a);
+ linear_texel_locations(tObj->Sampler.WrapT, img, height, texcoord[1], &j0, &j1, &b);
+ linear_texel_locations(tObj->Sampler.WrapR, img, depth, texcoord[2], &k0, &k1, &c);
if (img->Border) {
i0 += img->Border;
@@ -1794,7 +1794,7 @@ sample_lambda_3d(struct gl_context *ctx,
if (minStart < minEnd) {
/* do the minified texels */
GLuint m = minEnd - minStart;
- switch (tObj->MinFilter) {
+ switch (tObj->Sampler.MinFilter) {
case GL_NEAREST:
for (i = minStart; i < minEnd; i++)
sample_3d_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel],
@@ -1829,7 +1829,7 @@ sample_lambda_3d(struct gl_context *ctx,
if (magStart < magEnd) {
/* do the magnified texels */
- switch (tObj->MagFilter) {
+ switch (tObj->Sampler.MagFilter) {
case GL_NEAREST:
for (i = magStart; i < magEnd; i++)
sample_3d_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel],
@@ -2091,7 +2091,7 @@ sample_lambda_cube(struct gl_context *ctx,
if (minStart < minEnd) {
/* do the minified texels */
const GLuint m = minEnd - minStart;
- switch (tObj->MinFilter) {
+ switch (tObj->Sampler.MinFilter) {
case GL_NEAREST:
sample_nearest_cube(ctx, tObj, m, texcoords + minStart,
lambda + minStart, rgba + minStart);
@@ -2128,7 +2128,7 @@ sample_lambda_cube(struct gl_context *ctx,
if (magStart < magEnd) {
/* do the magnified texels */
const GLuint m = magEnd - magStart;
- switch (tObj->MagFilter) {
+ switch (tObj->Sampler.MagFilter) {
case GL_NEAREST:
sample_nearest_cube(ctx, tObj, m, texcoords + magStart,
lambda + magStart, rgba + magStart);
@@ -2163,18 +2163,18 @@ sample_nearest_rect(struct gl_context *ctx,
(void) ctx;
(void) lambda;
- ASSERT(tObj->WrapS == GL_CLAMP ||
- tObj->WrapS == GL_CLAMP_TO_EDGE ||
- tObj->WrapS == GL_CLAMP_TO_BORDER);
- ASSERT(tObj->WrapT == GL_CLAMP ||
- tObj->WrapT == GL_CLAMP_TO_EDGE ||
- tObj->WrapT == GL_CLAMP_TO_BORDER);
+ ASSERT(tObj->Sampler.WrapS == GL_CLAMP ||
+ tObj->Sampler.WrapS == GL_CLAMP_TO_EDGE ||
+ tObj->Sampler.WrapS == GL_CLAMP_TO_BORDER);
+ ASSERT(tObj->Sampler.WrapT == GL_CLAMP ||
+ tObj->Sampler.WrapT == GL_CLAMP_TO_EDGE ||
+ tObj->Sampler.WrapT == GL_CLAMP_TO_BORDER);
ASSERT(img->_BaseFormat != GL_COLOR_INDEX);
for (i = 0; i < n; i++) {
GLint row, col;
- col = clamp_rect_coord_nearest(tObj->WrapS, texcoords[i][0], width);
- row = clamp_rect_coord_nearest(tObj->WrapT, texcoords[i][1], height);
+ col = clamp_rect_coord_nearest(tObj->Sampler.WrapS, texcoords[i][0], width);
+ row = clamp_rect_coord_nearest(tObj->Sampler.WrapT, texcoords[i][1], height);
if (col < 0 || col >= width || row < 0 || row >= height)
get_border_color(tObj, img, rgba[i]);
else
@@ -2197,12 +2197,12 @@ sample_linear_rect(struct gl_context *ctx,
(void) ctx;
(void) lambda;
- ASSERT(tObj->WrapS == GL_CLAMP ||
- tObj->WrapS == GL_CLAMP_TO_EDGE ||
- tObj->WrapS == GL_CLAMP_TO_BORDER);
- ASSERT(tObj->WrapT == GL_CLAMP ||
- tObj->WrapT == GL_CLAMP_TO_EDGE ||
- tObj->WrapT == GL_CLAMP_TO_BORDER);
+ ASSERT(tObj->Sampler.WrapS == GL_CLAMP ||
+ tObj->Sampler.WrapS == GL_CLAMP_TO_EDGE ||
+ tObj->Sampler.WrapS == GL_CLAMP_TO_BORDER);
+ ASSERT(tObj->Sampler.WrapT == GL_CLAMP ||
+ tObj->Sampler.WrapT == GL_CLAMP_TO_EDGE ||
+ tObj->Sampler.WrapT == GL_CLAMP_TO_BORDER);
ASSERT(img->_BaseFormat != GL_COLOR_INDEX);
for (i = 0; i < n; i++) {
@@ -2211,9 +2211,9 @@ sample_linear_rect(struct gl_context *ctx,
GLfloat a, b;
GLbitfield useBorderColor = 0x0;
- clamp_rect_coord_linear(tObj->WrapS, texcoords[i][0], width,
+ clamp_rect_coord_linear(tObj->Sampler.WrapS, texcoords[i][0], width,
&i0, &i1, &a);
- clamp_rect_coord_linear(tObj->WrapT, texcoords[i][1], height,
+ clamp_rect_coord_linear(tObj->Sampler.WrapT, texcoords[i][1], height,
&j0, &j1, &b);
/* compute integer rows/columns */
@@ -2264,7 +2264,7 @@ sample_lambda_rect(struct gl_context *ctx,
&minStart, &minEnd, &magStart, &magEnd);
if (minStart < minEnd) {
- if (tObj->MinFilter == GL_NEAREST) {
+ if (tObj->Sampler.MinFilter == GL_NEAREST) {
sample_nearest_rect(ctx, tObj, minEnd - minStart,
texcoords + minStart, NULL, rgba + minStart);
}
@@ -2274,7 +2274,7 @@ sample_lambda_rect(struct gl_context *ctx,
}
}
if (magStart < magEnd) {
- if (tObj->MagFilter == GL_NEAREST) {
+ if (tObj->Sampler.MagFilter == GL_NEAREST) {
sample_nearest_rect(ctx, tObj, magEnd - magStart,
texcoords + magStart, NULL, rgba + magStart);
}
@@ -2307,8 +2307,8 @@ sample_2d_array_nearest(struct gl_context *ctx,
GLint array;
(void) ctx;
- i = nearest_texel_location(tObj->WrapS, img, width, texcoord[0]);
- j = nearest_texel_location(tObj->WrapT, img, height, texcoord[1]);
+ i = nearest_texel_location(tObj->Sampler.WrapS, img, width, texcoord[0]);
+ j = nearest_texel_location(tObj->Sampler.WrapT, img, height, texcoord[1]);
array = tex_array_slice(texcoord[2], depth);
if (i < 0 || i >= (GLint) img->Width ||
@@ -2342,12 +2342,12 @@ sample_2d_array_linear(struct gl_context *ctx,
GLfloat a, b;
GLfloat t00[4], t01[4], t10[4], t11[4];
- linear_texel_locations(tObj->WrapS, img, width, texcoord[0], &i0, &i1, &a);
- linear_texel_locations(tObj->WrapT, img, height, texcoord[1], &j0, &j1, &b);
+ linear_texel_locations(tObj->Sampler.WrapS, img, width, texcoord[0], &i0, &i1, &a);
+ linear_texel_locations(tObj->Sampler.WrapT, img, height, texcoord[1], &j0, &j1, &b);
array = tex_array_slice(texcoord[2], depth);
if (array < 0 || array >= depth) {
- COPY_4V(rgba, tObj->BorderColor.f);
+ COPY_4V(rgba, tObj->Sampler.BorderColor.f);
}
else {
if (img->Border) {
@@ -2532,7 +2532,7 @@ sample_lambda_2d_array(struct gl_context *ctx,
if (minStart < minEnd) {
/* do the minified texels */
GLuint m = minEnd - minStart;
- switch (tObj->MinFilter) {
+ switch (tObj->Sampler.MinFilter) {
case GL_NEAREST:
for (i = minStart; i < minEnd; i++)
sample_2d_array_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel],
@@ -2575,7 +2575,7 @@ sample_lambda_2d_array(struct gl_context *ctx,
if (magStart < magEnd) {
/* do the magnified texels */
- switch (tObj->MagFilter) {
+ switch (tObj->Sampler.MagFilter) {
case GL_NEAREST:
for (i = magStart; i < magEnd; i++)
sample_2d_array_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel],
@@ -2616,7 +2616,7 @@ sample_1d_array_nearest(struct gl_context *ctx,
GLint array;
(void) ctx;
- i = nearest_texel_location(tObj->WrapS, img, width, texcoord[0]);
+ i = nearest_texel_location(tObj->Sampler.WrapS, img, width, texcoord[0]);
array = tex_array_slice(texcoord[1], height);
if (i < 0 || i >= (GLint) img->Width ||
@@ -2648,7 +2648,7 @@ sample_1d_array_linear(struct gl_context *ctx,
GLfloat a;
GLfloat t0[4], t1[4];
- linear_texel_locations(tObj->WrapS, img, width, texcoord[0], &i0, &i1, &a);
+ linear_texel_locations(tObj->Sampler.WrapS, img, width, texcoord[0], &i0, &i1, &a);
array = tex_array_slice(texcoord[1], height);
if (img->Border) {
@@ -2813,7 +2813,7 @@ sample_lambda_1d_array(struct gl_context *ctx,
if (minStart < minEnd) {
/* do the minified texels */
GLuint m = minEnd - minStart;
- switch (tObj->MinFilter) {
+ switch (tObj->Sampler.MinFilter) {
case GL_NEAREST:
for (i = minStart; i < minEnd; i++)
sample_1d_array_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel],
@@ -2852,7 +2852,7 @@ sample_lambda_1d_array(struct gl_context *ctx,
if (magStart < magEnd) {
/* do the magnified texels */
- switch (tObj->MagFilter) {
+ switch (tObj->Sampler.MagFilter) {
case GL_NEAREST:
for (i = magStart; i < magEnd; i++)
sample_1d_array_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel],
@@ -2975,13 +2975,13 @@ choose_depth_texture_level(const struct gl_texture_object *tObj, GLfloat lambda)
{
GLint level;
- if (tObj->MinFilter == GL_NEAREST || tObj->MinFilter == GL_LINEAR) {
+ if (tObj->Sampler.MinFilter == GL_NEAREST || tObj->Sampler.MinFilter == GL_LINEAR) {
/* no mipmapping - use base level */
level = tObj->BaseLevel;
}
else {
/* choose mipmap level */
- lambda = CLAMP(lambda, tObj->MinLod, tObj->MaxLod);
+ lambda = CLAMP(lambda, tObj->Sampler.MinLod, tObj->Sampler.MaxLod);
level = (GLint) lambda;
level = CLAMP(level, tObj->BaseLevel, tObj->_MaxLevel);
}
@@ -3020,14 +3020,14 @@ sample_depth_texture( struct gl_context *ctx,
tObj->Target == GL_TEXTURE_1D_ARRAY_EXT ||
tObj->Target == GL_TEXTURE_2D_ARRAY_EXT);
- ambient = tObj->CompareFailValue;
+ ambient = tObj->Sampler.CompareFailValue;
- /* XXXX if tObj->MinFilter != tObj->MagFilter, we're ignoring lambda */
+ /* XXXX if tObj->Sampler.MinFilter != tObj->Sampler.MagFilter, we're ignoring lambda */
- function = (tObj->CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB) ?
- tObj->CompareFunc : GL_NONE;
+ function = (tObj->Sampler.CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB) ?
+ tObj->Sampler.CompareFunc : GL_NONE;
- if (tObj->MagFilter == GL_NEAREST) {
+ if (tObj->Sampler.MagFilter == GL_NEAREST) {
GLuint i;
for (i = 0; i < n; i++) {
GLfloat depthSample, depthRef;
@@ -3040,14 +3040,14 @@ sample_depth_texture( struct gl_context *ctx,
img->FetchTexelf(img, col, row, slice, &depthSample);
}
else {
- depthSample = tObj->BorderColor.f[0];
+ depthSample = tObj->Sampler.BorderColor.f[0];
}
depthRef = CLAMP(texcoords[i][compare_coord], 0.0F, 1.0F);
result = shadow_compare(function, depthRef, depthSample, ambient);
- switch (tObj->DepthMode) {
+ switch (tObj->Sampler.DepthMode) {
case GL_LUMINANCE:
ASSIGN_4V(texel[i], result, result, result, 1.0F);
break;
@@ -3067,7 +3067,7 @@ sample_depth_texture( struct gl_context *ctx,
}
else {
GLuint i;
- ASSERT(tObj->MagFilter == GL_LINEAR);
+ ASSERT(tObj->Sampler.MagFilter == GL_LINEAR);
for (i = 0; i < n; i++) {
GLfloat depth00, depth01, depth10, depth11, depthRef;
GLint i0, i1, j0, j1;
@@ -3095,21 +3095,21 @@ sample_depth_texture( struct gl_context *ctx,
}
if (slice < 0 || slice >= (GLint) depth) {
- depth00 = tObj->BorderColor.f[0];
- depth01 = tObj->BorderColor.f[0];
- depth10 = tObj->BorderColor.f[0];
- depth11 = tObj->BorderColor.f[0];
+ depth00 = tObj->Sampler.BorderColor.f[0];
+ depth01 = tObj->Sampler.BorderColor.f[0];
+ depth10 = tObj->Sampler.BorderColor.f[0];
+ depth11 = tObj->Sampler.BorderColor.f[0];
}
else {
/* get four depth samples from the texture */
if (useBorderTexel & (I0BIT | J0BIT)) {
- depth00 = tObj->BorderColor.f[0];
+ depth00 = tObj->Sampler.BorderColor.f[0];
}
else {
img->FetchTexelf(img, i0, j0, slice, &depth00);
}
if (useBorderTexel & (I1BIT | J0BIT)) {
- depth10 = tObj->BorderColor.f[0];
+ depth10 = tObj->Sampler.BorderColor.f[0];
}
else {
img->FetchTexelf(img, i1, j0, slice, &depth10);
@@ -3117,13 +3117,13 @@ sample_depth_texture( struct gl_context *ctx,
if (tObj->Target != GL_TEXTURE_1D_ARRAY_EXT) {
if (useBorderTexel & (I0BIT | J1BIT)) {
- depth01 = tObj->BorderColor.f[0];
+ depth01 = tObj->Sampler.BorderColor.f[0];
}
else {
img->FetchTexelf(img, i0, j1, slice, &depth01);
}
if (useBorderTexel & (I1BIT | J1BIT)) {
- depth11 = tObj->BorderColor.f[0];
+ depth11 = tObj->Sampler.BorderColor.f[0];
}
else {
img->FetchTexelf(img, i1, j1, slice, &depth11);
@@ -3141,7 +3141,7 @@ sample_depth_texture( struct gl_context *ctx,
depth00, depth01, depth10, depth11,
ambient, wi, wj);
- switch (tObj->DepthMode) {
+ switch (tObj->Sampler.DepthMode) {
case GL_LUMINANCE:
ASSIGN_4V(texel[i], result, result, result, 1.0F);
break;
@@ -3197,7 +3197,8 @@ _swrast_choose_texture_sample_func( struct gl_context *ctx,
return &null_sample_func;
}
else {
- const GLboolean needLambda = (GLboolean) (t->MinFilter != t->MagFilter);
+ const GLboolean needLambda =
+ (GLboolean) (t->Sampler.MinFilter != t->Sampler.MagFilter);
const GLenum format = t->Image[0][t->BaseLevel]->_BaseFormat;
switch (t->Target) {
@@ -3208,11 +3209,11 @@ _swrast_choose_texture_sample_func( struct gl_context *ctx,
else if (needLambda) {
return &sample_lambda_1d;
}
- else if (t->MinFilter == GL_LINEAR) {
+ else if (t->Sampler.MinFilter == GL_LINEAR) {
return &sample_linear_1d;
}
else {
- ASSERT(t->MinFilter == GL_NEAREST);
+ ASSERT(t->Sampler.MinFilter == GL_NEAREST);
return &sample_nearest_1d;
}
case GL_TEXTURE_2D:
@@ -3222,22 +3223,22 @@ _swrast_choose_texture_sample_func( struct gl_context *ctx,
else if (needLambda) {
return &sample_lambda_2d;
}
- else if (t->MinFilter == GL_LINEAR) {
+ else if (t->Sampler.MinFilter == GL_LINEAR) {
return &sample_linear_2d;
}
else {
/* check for a few optimized cases */
const struct gl_texture_image *img = t->Image[0][t->BaseLevel];
- ASSERT(t->MinFilter == GL_NEAREST);
- if (t->WrapS == GL_REPEAT &&
- t->WrapT == GL_REPEAT &&
+ ASSERT(t->Sampler.MinFilter == GL_NEAREST);
+ if (t->Sampler.WrapS == GL_REPEAT &&
+ t->Sampler.WrapT == GL_REPEAT &&
img->_IsPowerOfTwo &&
img->Border == 0 &&
img->TexFormat == MESA_FORMAT_RGB888) {
return &opt_sample_rgb_2d;
}
- else if (t->WrapS == GL_REPEAT &&
- t->WrapT == GL_REPEAT &&
+ else if (t->Sampler.WrapS == GL_REPEAT &&
+ t->Sampler.WrapT == GL_REPEAT &&
img->_IsPowerOfTwo &&
img->Border == 0 &&
img->TexFormat == MESA_FORMAT_RGBA8888) {
@@ -3251,22 +3252,22 @@ _swrast_choose_texture_sample_func( struct gl_context *ctx,
if (needLambda) {
return &sample_lambda_3d;
}
- else if (t->MinFilter == GL_LINEAR) {
+ else if (t->Sampler.MinFilter == GL_LINEAR) {
return &sample_linear_3d;
}
else {
- ASSERT(t->MinFilter == GL_NEAREST);
+ ASSERT(t->Sampler.MinFilter == GL_NEAREST);
return &sample_nearest_3d;
}
case GL_TEXTURE_CUBE_MAP:
if (needLambda) {
return &sample_lambda_cube;
}
- else if (t->MinFilter == GL_LINEAR) {
+ else if (t->Sampler.MinFilter == GL_LINEAR) {
return &sample_linear_cube;
}
else {
- ASSERT(t->MinFilter == GL_NEAREST);
+ ASSERT(t->Sampler.MinFilter == GL_NEAREST);
return &sample_nearest_cube;
}
case GL_TEXTURE_RECTANGLE_NV:
@@ -3276,33 +3277,33 @@ _swrast_choose_texture_sample_func( struct gl_context *ctx,
else if (needLambda) {
return &sample_lambda_rect;
}
- else if (t->MinFilter == GL_LINEAR) {
+ else if (t->Sampler.MinFilter == GL_LINEAR) {
return &sample_linear_rect;
}
else {
- ASSERT(t->MinFilter == GL_NEAREST);
+ ASSERT(t->Sampler.MinFilter == GL_NEAREST);
return &sample_nearest_rect;
}
case GL_TEXTURE_1D_ARRAY_EXT:
if (needLambda) {
return &sample_lambda_1d_array;
}
- else if (t->MinFilter == GL_LINEAR) {
+ else if (t->Sampler.MinFilter == GL_LINEAR) {
return &sample_linear_1d_array;
}
else {
- ASSERT(t->MinFilter == GL_NEAREST);
+ ASSERT(t->Sampler.MinFilter == GL_NEAREST);
return &sample_nearest_1d_array;
}
case GL_TEXTURE_2D_ARRAY_EXT:
if (needLambda) {
return &sample_lambda_2d_array;
}
- else if (t->MinFilter == GL_LINEAR) {
+ else if (t->Sampler.MinFilter == GL_LINEAR) {
return &sample_linear_2d_array;
}
else {
- ASSERT(t->MinFilter == GL_NEAREST);
+ ASSERT(t->Sampler.MinFilter == GL_NEAREST);
return &sample_nearest_2d_array;
}
default:
diff --git a/src/mesa/swrast/s_triangle.c b/src/mesa/swrast/s_triangle.c
index d07a4ef7513..8a9671aa08a 100644
--- a/src/mesa/swrast/s_triangle.c
+++ b/src/mesa/swrast/s_triangle.c
@@ -540,7 +540,7 @@ affine_span(struct gl_context *ctx, SWspan *span,
info.smask = texImg->Width - 1; \
info.tmask = texImg->Height - 1; \
info.format = texImg->TexFormat; \
- info.filter = obj->MinFilter; \
+ info.filter = obj->Sampler.MinFilter; \
info.envmode = unit->EnvMode; \
info.er = 0; \
info.eg = 0; \
@@ -805,7 +805,7 @@ fast_persp_span(struct gl_context *ctx, SWspan *span,
info.smask = texImg->Width - 1; \
info.tmask = texImg->Height - 1; \
info.format = texImg->TexFormat; \
- info.filter = obj->MinFilter; \
+ info.filter = obj->Sampler.MinFilter; \
info.envmode = unit->EnvMode; \
info.er = 0; \
info.eg = 0; \
@@ -1044,8 +1044,8 @@ _swrast_choose_triangle( struct gl_context *ctx )
texImg = texObj2D ? texObj2D->Image[0][texObj2D->BaseLevel] : NULL;
format = texImg ? texImg->TexFormat : MESA_FORMAT_NONE;
- minFilter = texObj2D ? texObj2D->MinFilter : GL_NONE;
- magFilter = texObj2D ? texObj2D->MagFilter : GL_NONE;
+ minFilter = texObj2D ? texObj2D->Sampler.MinFilter : GL_NONE;
+ magFilter = texObj2D ? texObj2D->Sampler.MagFilter : GL_NONE;
envMode = ctx->Texture.Unit[0].EnvMode;
/* First see if we can use an optimized 2-D texture function */
@@ -1054,8 +1054,8 @@ _swrast_choose_triangle( struct gl_context *ctx )
&& !ctx->ATIFragmentShader._Enabled
&& ctx->Texture._EnabledUnits == 0x1
&& ctx->Texture.Unit[0]._ReallyEnabled == TEXTURE_2D_BIT
- && texObj2D->WrapS == GL_REPEAT
- && texObj2D->WrapT == GL_REPEAT
+ && texObj2D->Sampler.WrapS == GL_REPEAT
+ && texObj2D->Sampler.WrapT == GL_REPEAT
&& texObj2D->_Swizzle == SWIZZLE_NOOP
&& texImg->_IsPowerOfTwo
&& texImg->Border == 0
diff --git a/src/mesa/tnl/t_context.c b/src/mesa/tnl/t_context.c
index 5f5e2663b5f..a6da8cafe5a 100644
--- a/src/mesa/tnl/t_context.c
+++ b/src/mesa/tnl/t_context.c
@@ -138,16 +138,12 @@ _tnl_InvalidateState( struct gl_context *ctx, GLuint new_state )
}
}
- if (ctx->Fog.Enabled) {
- /* fixed-function fog */
+ if (ctx->Fog.Enabled
+ || (fp != NULL && (fp->Base.InputsRead & FRAG_BIT_FOGC) != 0)) {
+ /* Either fixed-function fog or a fragment program needs fog coord.
+ */
RENDERINPUTS_SET( tnl->render_inputs_bitset, _TNL_ATTRIB_FOG );
}
- else if (fp) {
- if (fp->FogOption != GL_NONE || (fp->Base.InputsRead & FRAG_BIT_FOGC)) {
- /* fragment program needs fog coord */
- RENDERINPUTS_SET( tnl->render_inputs_bitset, _TNL_ATTRIB_FOG );
- }
- }
if (ctx->Polygon.FrontMode != GL_FILL ||
ctx->Polygon.BackMode != GL_FILL)
diff --git a/src/mesa/vbo/vbo_context.c b/src/mesa/vbo/vbo_context.c
index 6656ed89816..9de770d0bcf 100644
--- a/src/mesa/vbo/vbo_context.c
+++ b/src/mesa/vbo/vbo_context.c
@@ -72,6 +72,7 @@ static void init_legacy_currval(struct gl_context *ctx)
cl->Type = GL_FLOAT;
cl->Format = GL_RGBA;
cl->Ptr = (const void *)ctx->Current.Attrib[i];
+ cl->_ElementSize = cl->Size * sizeof(GLfloat);
_mesa_reference_buffer_object(ctx, &cl->BufferObj,
ctx->Shared->NullBufferObj);
}
@@ -98,6 +99,7 @@ static void init_generic_currval(struct gl_context *ctx)
cl->Stride = 0;
cl->StrideB = 0;
cl->Enabled = 1;
+ cl->_ElementSize = cl->Size * sizeof(GLfloat);
_mesa_reference_buffer_object(ctx, &cl->BufferObj,
ctx->Shared->NullBufferObj);
}
@@ -143,6 +145,7 @@ static void init_mat_currval(struct gl_context *ctx)
cl->Stride = 0;
cl->StrideB = 0;
cl->Enabled = 1;
+ cl->_ElementSize = cl->Size * sizeof(GLfloat);
_mesa_reference_buffer_object(ctx, &cl->BufferObj,
ctx->Shared->NullBufferObj);
}
diff --git a/src/mesa/vbo/vbo_exec_api.c b/src/mesa/vbo/vbo_exec_api.c
index fcd544de763..3c7c439b64c 100644
--- a/src/mesa/vbo/vbo_exec_api.c
+++ b/src/mesa/vbo/vbo_exec_api.c
@@ -168,6 +168,8 @@ static void vbo_exec_copy_to_current( struct vbo_exec_context *exec )
* directly.
*/
vbo->currval[i].Size = exec->vtx.attrsz[i];
+ assert(vbo->currval[i].Type == GL_FLOAT);
+ vbo->currval[i]._ElementSize = vbo->currval[i].Size * sizeof(GLfloat);
/* This triggers rather too much recalculation of Mesa state
* that doesn't get used (eg light positions).
diff --git a/src/mesa/vbo/vbo_exec_array.c b/src/mesa/vbo/vbo_exec_array.c
index 98d6badc47a..a49cd5017a3 100644
--- a/src/mesa/vbo/vbo_exec_array.c
+++ b/src/mesa/vbo/vbo_exec_array.c
@@ -585,15 +585,11 @@ vbo_draw_arrays(struct gl_context *ctx, GLenum mode, GLint start,
if (ctx->NewState)
_mesa_update_state(ctx);
+ /* init most fields to zero */
+ memset(prim, 0, sizeof(prim));
prim[0].begin = 1;
prim[0].end = 1;
- prim[0].weak = 0;
- prim[0].pad = 0;
prim[0].mode = mode;
- prim[0].start = 0; /* filled in below */
- prim[0].count = 0; /* filled in below */
- prim[0].indexed = 0;
- prim[0].basevertex = 0;
prim[0].num_instances = numInstances;
/* Implement the primitive restart index */
@@ -943,8 +939,13 @@ vbo_exec_DrawRangeElementsBaseVertex(GLenum mode,
/* Set 'end' to the max possible legal value */
assert(ctx->Array.ArrayObj->_MaxElement >= 1);
end = ctx->Array.ArrayObj->_MaxElement - 1;
+
+ if (end < start) {
+ return;
+ }
}
- else if (0) {
+
+ if (0) {
printf("glDraw[Range]Elements{,BaseVertex}"
"(start %u, end %u, type 0x%x, count %d) ElemBuf %u, "
"base %d\n",
diff --git a/src/mesa/vbo/vbo_exec_draw.c b/src/mesa/vbo/vbo_exec_draw.c
index 539658021e3..7e8d8602093 100644
--- a/src/mesa/vbo/vbo_exec_draw.c
+++ b/src/mesa/vbo/vbo_exec_draw.c
@@ -239,6 +239,7 @@ vbo_exec_bind_arrays( struct gl_context *ctx )
arrays[attr].Type = GL_FLOAT;
arrays[attr].Format = GL_RGBA;
arrays[attr].Enabled = 1;
+ arrays[attr]._ElementSize = arrays[attr].Size * sizeof(GLfloat);
_mesa_reference_buffer_object(ctx,
&arrays[attr].BufferObj,
exec->vtx.bufferobj);
diff --git a/src/mesa/vbo/vbo_save_draw.c b/src/mesa/vbo/vbo_save_draw.c
index 634a6d3f84b..ca4cff38a89 100644
--- a/src/mesa/vbo/vbo_save_draw.c
+++ b/src/mesa/vbo/vbo_save_draw.c
@@ -90,6 +90,8 @@ _playback_copy_to_current(struct gl_context *ctx,
memcpy(current, tmp, 4 * sizeof(GLfloat));
vbo->currval[i].Size = node->attrsz[i];
+ assert(vbo->currval[i].Type == GL_FLOAT);
+ vbo->currval[i]._ElementSize = vbo->currval[i].Size * sizeof(GLfloat);
if (i >= VBO_ATTRIB_FIRST_MATERIAL &&
i <= VBO_ATTRIB_LAST_MATERIAL)
@@ -193,6 +195,7 @@ static void vbo_bind_vertex_list(struct gl_context *ctx,
arrays[attr].Type = GL_FLOAT;
arrays[attr].Format = GL_RGBA;
arrays[attr].Enabled = 1;
+ arrays[attr]._ElementSize = arrays[attr].Size * sizeof(GLfloat);
_mesa_reference_buffer_object(ctx,
&arrays[attr].BufferObj,
node->vertex_store->bufferobj);
diff --git a/src/mesa/vbo/vbo_split_copy.c b/src/mesa/vbo/vbo_split_copy.c
index 8c981f93e5c..ecca1171673 100644
--- a/src/mesa/vbo/vbo_split_copy.c
+++ b/src/mesa/vbo/vbo_split_copy.c
@@ -519,6 +519,7 @@ replay_init( struct copy_context *copy )
dst->Enabled = GL_TRUE;
dst->Normalized = src->Normalized;
dst->BufferObj = ctx->Shared->NullBufferObj;
+ dst->_ElementSize = src->_ElementSize;
dst->_MaxElement = copy->dstbuf_size; /* may be less! */
offset += copy->varying[i].size;
diff --git a/src/mesa/vf/vf.c b/src/mesa/vf/vf.c
deleted file mode 100644
index defb7cbe2c6..00000000000
--- a/src/mesa/vf/vf.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/*
- * Copyright 2003 Tungsten Graphics, inc.
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * on the rights to use, copy, modify, merge, publish, distribute, sub
- * license, and/or sell copies of the Software, and to permit persons to whom
- * the Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * TUNGSTEN GRAPHICS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- * USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Keith Whitwell <[email protected]>
- */
-
-#include "main/glheader.h"
-#include "main/context.h"
-#include "main/colormac.h"
-
-#include "vf.h"
-
-#define DBG 0
-
-
-
-static GLboolean match_fastpath( struct vertex_fetch *vf,
- const struct vf_fastpath *fp)
-{
- GLuint j;
-
- if (vf->attr_count != fp->attr_count)
- return GL_FALSE;
-
- for (j = 0; j < vf->attr_count; j++)
- if (vf->attr[j].format != fp->attr[j].format ||
- vf->attr[j].inputsize != fp->attr[j].size ||
- vf->attr[j].vertoffset != fp->attr[j].offset)
- return GL_FALSE;
-
- if (fp->match_strides) {
- if (vf->vertex_stride != fp->vertex_stride)
- return GL_FALSE;
-
- for (j = 0; j < vf->attr_count; j++)
- if (vf->attr[j].inputstride != fp->attr[j].stride)
- return GL_FALSE;
- }
-
- return GL_TRUE;
-}
-
-static GLboolean search_fastpath_emit( struct vertex_fetch *vf )
-{
- struct vf_fastpath *fp = vf->fastpath;
-
- for ( ; fp ; fp = fp->next) {
- if (match_fastpath(vf, fp)) {
- vf->emit = fp->func;
- return GL_TRUE;
- }
- }
-
- return GL_FALSE;
-}
-
-void vf_register_fastpath( struct vertex_fetch *vf,
- GLboolean match_strides )
-{
- struct vf_fastpath *fastpath = CALLOC_STRUCT(vf_fastpath);
- GLuint i;
-
- fastpath->vertex_stride = vf->vertex_stride;
- fastpath->attr_count = vf->attr_count;
- fastpath->match_strides = match_strides;
- fastpath->func = vf->emit;
- fastpath->attr = (struct vf_attr_type *)
- malloc(vf->attr_count * sizeof(fastpath->attr[0]));
-
- for (i = 0; i < vf->attr_count; i++) {
- fastpath->attr[i].format = vf->attr[i].format;
- fastpath->attr[i].stride = vf->attr[i].inputstride;
- fastpath->attr[i].size = vf->attr[i].inputsize;
- fastpath->attr[i].offset = vf->attr[i].vertoffset;
- }
-
- fastpath->next = vf->fastpath;
- vf->fastpath = fastpath;
-}
-
-
-
-
-/***********************************************************************
- * Build codegen functions or return generic ones:
- */
-static void choose_emit_func( struct vertex_fetch *vf,
- GLuint count,
- GLubyte *dest)
-{
- vf->emit = NULL;
-
- /* Does this match an existing (hardwired, codegen or known-bad)
- * fastpath?
- */
- if (search_fastpath_emit(vf)) {
- /* Use this result. If it is null, then it is already known
- * that the current state will fail for codegen and there is no
- * point trying again.
- */
- }
- else if (vf->codegen_emit) {
- vf->codegen_emit( vf );
- }
-
- if (!vf->emit) {
- vf_generate_hardwired_emit(vf);
- }
-
- /* Otherwise use the generic version:
- */
- if (!vf->emit)
- vf->emit = vf_generic_emit;
-
- vf->emit( vf, count, dest );
-}
-
-
-
-
-
-/***********************************************************************
- * Public entrypoints, mostly dispatch to the above:
- */
-
-
-
-GLuint vf_set_vertex_attributes( struct vertex_fetch *vf,
- const struct vf_attr_map *map,
- GLuint nr,
- GLuint vertex_stride )
-{
- GLuint offset = 0;
- GLuint i, j;
-
- assert(nr < VF_ATTRIB_MAX);
-
- memset(vf->lookup, 0, sizeof(vf->lookup));
-
- for (j = 0, i = 0; i < nr; i++) {
- const GLuint format = map[i].format;
- if (format == EMIT_PAD) {
- if (DBG)
- printf("%d: pad %d, offset %d\n", i,
- map[i].offset, offset);
-
- offset += map[i].offset;
-
- }
- else {
- assert(vf->lookup[map[i].attrib] == 0);
- vf->lookup[map[i].attrib] = &vf->attr[j];
-
- vf->attr[j].attrib = map[i].attrib;
- vf->attr[j].format = format;
- vf->attr[j].insert = vf_format_info[format].insert;
- vf->attr[j].extract = vf_format_info[format].extract;
- vf->attr[j].vertattrsize = vf_format_info[format].attrsize;
- vf->attr[j].vertoffset = offset;
-
- if (DBG)
- printf("%d: %s, offset %d\n", i,
- vf_format_info[format].name,
- vf->attr[j].vertoffset);
-
- offset += vf_format_info[format].attrsize;
- j++;
- }
- }
-
- vf->attr_count = j;
- vf->vertex_stride = vertex_stride ? vertex_stride : offset;
- vf->emit = choose_emit_func;
-
- assert(vf->vertex_stride >= offset);
- return vf->vertex_stride;
-}
-
-
-
-void vf_set_vp_matrix( struct vertex_fetch *vf,
- const GLfloat *viewport )
-{
- assert(vf->allow_viewport_emits);
-
- /* scale */
- vf->vp[0] = viewport[MAT_SX];
- vf->vp[1] = viewport[MAT_SY];
- vf->vp[2] = viewport[MAT_SZ];
- vf->vp[3] = 1.0;
-
- /* translate */
- vf->vp[4] = viewport[MAT_TX];
- vf->vp[5] = viewport[MAT_TY];
- vf->vp[6] = viewport[MAT_TZ];
- vf->vp[7] = 0.0;
-}
-
-void vf_set_vp_scale_translate( struct vertex_fetch *vf,
- const GLfloat *scale,
- const GLfloat *translate )
-{
- assert(vf->allow_viewport_emits);
-
- vf->vp[0] = scale[0];
- vf->vp[1] = scale[1];
- vf->vp[2] = scale[2];
- vf->vp[3] = scale[3];
-
- vf->vp[4] = translate[0];
- vf->vp[5] = translate[1];
- vf->vp[6] = translate[2];
- vf->vp[7] = translate[3];
-}
-
-
-/* Set attribute pointers, adjusted for start position:
- */
-void vf_set_sources( struct vertex_fetch *vf,
- GLvector4f * const sources[],
- GLuint start )
-{
- struct vf_attr *a = vf->attr;
- GLuint j;
-
- for (j = 0; j < vf->attr_count; j++) {
- const GLvector4f *vptr = sources[a[j].attrib];
-
- if ((a[j].inputstride != vptr->stride) ||
- (a[j].inputsize != vptr->size))
- vf->emit = choose_emit_func;
-
- a[j].inputstride = vptr->stride;
- a[j].inputsize = vptr->size;
- a[j].do_insert = a[j].insert[vptr->size - 1];
- a[j].inputptr = ((GLubyte *)vptr->data) + start * vptr->stride;
- }
-}
-
-
-
-/* Emit count VB vertices to dest.
- */
-void vf_emit_vertices( struct vertex_fetch *vf,
- GLuint count,
- void *dest )
-{
- vf->emit( vf, count, (GLubyte*) dest );
-}
-
-
-/* Extract a named attribute from a hardware vertex. Will have to
- * reverse any viewport transformation, swizzling or other conversions
- * which may have been applied.
- *
- * This is mainly required for on-the-fly vertex translations to
- * swrast format.
- */
-void vf_get_attr( struct vertex_fetch *vf,
- const void *vertex,
- GLenum attr,
- const GLfloat *dflt,
- GLfloat *dest )
-{
- const struct vf_attr *a = vf->attr;
- const GLuint attr_count = vf->attr_count;
- GLuint j;
-
- for (j = 0; j < attr_count; j++) {
- if (a[j].attrib == attr) {
- a[j].extract( &a[j], dest, (GLubyte *)vertex + a[j].vertoffset );
- return;
- }
- }
-
- /* Else return the value from ctx->Current.
- */
- memcpy( dest, dflt, 4*sizeof(GLfloat));
-}
-
-
-
-
-struct vertex_fetch *vf_create( GLboolean allow_viewport_emits )
-{
- struct vertex_fetch *vf = CALLOC_STRUCT(vertex_fetch);
- GLuint i;
-
- for (i = 0; i < VF_ATTRIB_MAX; i++)
- vf->attr[i].vf = vf;
-
- vf->allow_viewport_emits = allow_viewport_emits;
-
- switch(CHAN_TYPE) {
- case GL_UNSIGNED_BYTE:
- vf->chan_scale[0] = 255.0;
- vf->chan_scale[1] = 255.0;
- vf->chan_scale[2] = 255.0;
- vf->chan_scale[3] = 255.0;
- break;
- case GL_UNSIGNED_SHORT:
- vf->chan_scale[0] = 65535.0;
- vf->chan_scale[1] = 65535.0;
- vf->chan_scale[2] = 65535.0;
- vf->chan_scale[3] = 65535.0;
- break;
- default:
- vf->chan_scale[0] = 1.0;
- vf->chan_scale[1] = 1.0;
- vf->chan_scale[2] = 1.0;
- vf->chan_scale[3] = 1.0;
- break;
- }
-
- vf->identity[0] = 0.0;
- vf->identity[1] = 0.0;
- vf->identity[2] = 0.0;
- vf->identity[3] = 1.0;
-
- vf->codegen_emit = NULL;
-
-#ifdef USE_SSE_ASM
- if (!_mesa_getenv("MESA_NO_CODEGEN"))
- vf->codegen_emit = vf_generate_sse_emit;
-#endif
-
- return vf;
-}
-
-
-void vf_destroy( struct vertex_fetch *vf )
-{
- struct vf_fastpath *fp, *tmp;
-
- for (fp = vf->fastpath ; fp ; fp = tmp) {
- tmp = fp->next;
- FREE(fp->attr);
-
- /* KW: At the moment, fp->func is constrained to be allocated by
- * _mesa_exec_alloc(), as the hardwired fastpaths in
- * t_vertex_generic.c are handled specially. It would be nice
- * to unify them, but this probably won't change until this
- * module gets another overhaul.
- */
- _mesa_exec_free((void *) fp->func);
- FREE(fp);
- }
-
- vf->fastpath = NULL;
- FREE(vf);
-}
diff --git a/src/mesa/vf/vf.h b/src/mesa/vf/vf.h
deleted file mode 100644
index 5fe392bbe51..00000000000
--- a/src/mesa/vf/vf.h
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- * Copyright 2003 Tungsten Graphics, inc.
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * on the rights to use, copy, modify, merge, publish, distribute, sub
- * license, and/or sell copies of the Software, and to permit persons to whom
- * the Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * TUNGSTEN GRAPHICS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- * USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Keith Whitwell <[email protected]>
- */
-
-#ifndef VF_VERTEX_H
-#define VF_VERTEX_H
-
-#include "main/glheader.h"
-#include "math/m_vector.h"
-
-enum {
- VF_ATTRIB_POS = 0,
- VF_ATTRIB_WEIGHT = 1,
- VF_ATTRIB_NORMAL = 2,
- VF_ATTRIB_COLOR0 = 3,
- VF_ATTRIB_COLOR1 = 4,
- VF_ATTRIB_FOG = 5,
- VF_ATTRIB_COLOR_INDEX = 6,
- VF_ATTRIB_EDGEFLAG = 7,
- VF_ATTRIB_TEX0 = 8,
- VF_ATTRIB_TEX1 = 9,
- VF_ATTRIB_TEX2 = 10,
- VF_ATTRIB_TEX3 = 11,
- VF_ATTRIB_TEX4 = 12,
- VF_ATTRIB_TEX5 = 13,
- VF_ATTRIB_TEX6 = 14,
- VF_ATTRIB_TEX7 = 15,
- VF_ATTRIB_VAR0 = 16,
- VF_ATTRIB_VAR1 = 17,
- VF_ATTRIB_VAR2 = 18,
- VF_ATTRIB_VAR3 = 19,
- VF_ATTRIB_VAR4 = 20,
- VF_ATTRIB_VAR5 = 21,
- VF_ATTRIB_VAR6 = 22,
- VF_ATTRIB_VAR7 = 23,
- VF_ATTRIB_POINTSIZE = 24,
- VF_ATTRIB_BFC0 = 25,
- VF_ATTRIB_BFC1 = 26,
- VF_ATTRIB_CLIP_POS = 27,
- VF_ATTRIB_VERTEX_HEADER = 28,
- VF_ATTRIB_MAX = 29
-};
-
-
-enum vf_attr_format {
- EMIT_1F,
- EMIT_2F,
- EMIT_3F,
- EMIT_4F,
- EMIT_2F_VIEWPORT, /* do viewport transform and emit */
- EMIT_3F_VIEWPORT, /* do viewport transform and emit */
- EMIT_4F_VIEWPORT, /* do viewport transform and emit */
- EMIT_3F_XYW, /* for projective texture */
- EMIT_1UB_1F, /* for fog coordinate */
- EMIT_3UB_3F_RGB, /* for specular color */
- EMIT_3UB_3F_BGR, /* for specular color */
- EMIT_4UB_4F_RGBA, /* for color */
- EMIT_4UB_4F_BGRA, /* for color */
- EMIT_4UB_4F_ARGB, /* for color */
- EMIT_4UB_4F_ABGR, /* for color */
- EMIT_4CHAN_4F_RGBA, /* for swrast color */
- EMIT_PAD, /* leave a hole of 'offset' bytes */
- EMIT_MAX
-};
-
-struct vf_attr_map {
- GLuint attrib;
- enum vf_attr_format format;
- GLuint offset;
-};
-
-struct vertex_fetch;
-
-void vf_set_vp_matrix( struct vertex_fetch *vf,
- const GLfloat *viewport );
-
-void vf_set_vp_scale_translate( struct vertex_fetch *vf,
- const GLfloat *scale,
- const GLfloat *translate );
-
-GLuint vf_set_vertex_attributes( struct vertex_fetch *vf,
- const struct vf_attr_map *map,
- GLuint nr,
- GLuint vertex_stride );
-
-void vf_set_sources( struct vertex_fetch *vf,
- GLvector4f * const attrib[],
- GLuint start );
-
-void vf_emit_vertices( struct vertex_fetch *vf,
- GLuint count,
- void *dest );
-
-void vf_get_attr( struct vertex_fetch *vf,
- const void *vertex,
- GLenum attr,
- const GLfloat *dflt,
- GLfloat *dest );
-
-struct vertex_fetch *vf_create( GLboolean allow_viewport_emits );
-
-void vf_destroy( struct vertex_fetch *vf );
-
-
-
-/***********************************************************************
- * Internal functions and structs:
- */
-
-struct vf_attr;
-
-typedef void (*vf_extract_func)( const struct vf_attr *a,
- GLfloat *out,
- const GLubyte *v );
-
-typedef void (*vf_insert_func)( const struct vf_attr *a,
- GLubyte *v,
- const GLfloat *in );
-
-typedef void (*vf_emit_func)( struct vertex_fetch *vf,
- GLuint count,
- GLubyte *dest );
-
-
-
-/* Describes how to convert/move a vertex attribute from a vertex
- * array to a vertex structure.
- */
-struct vf_attr
-{
- struct vertex_fetch *vf;
-
- GLuint format;
- GLuint inputsize;
- GLuint inputstride;
- GLuint vertoffset; /* position of the attrib in the vertex struct */
-
- GLuint attrib; /* which vertex attrib (0=position, etc) */
- GLuint vertattrsize; /* size of the attribute in bytes */
-
- GLubyte *inputptr;
- const vf_insert_func *insert;
- vf_insert_func do_insert;
- vf_extract_func extract;
-};
-
-struct vertex_fetch
-{
- struct vf_attr attr[VF_ATTRIB_MAX];
- GLuint attr_count;
- GLuint vertex_stride;
-
- struct vf_attr *lookup[VF_ATTRIB_MAX];
-
- vf_emit_func emit;
-
- /* Parameters and constants for codegen:
- */
- GLboolean allow_viewport_emits;
- GLfloat vp[8];
- GLfloat chan_scale[4];
- GLfloat identity[4];
-
- struct vf_fastpath *fastpath;
-
- void (*codegen_emit)( struct vertex_fetch *vf );
-};
-
-
-struct vf_attr_type {
- GLuint format;
- GLuint size;
- GLuint stride;
- GLuint offset;
-};
-
-struct vf_fastpath {
- GLuint vertex_stride;
- GLuint attr_count;
- GLboolean match_strides;
-
- struct vf_attr_type *attr;
-
- vf_emit_func func;
- struct vf_fastpath *next;
-};
-
-
-void vf_register_fastpath( struct vertex_fetch *vtx,
- GLboolean match_strides );
-
-void vf_generic_emit( struct vertex_fetch *vf,
- GLuint count,
- GLubyte *v );
-
-void vf_generate_hardwired_emit( struct vertex_fetch *vf );
-
-void vf_generate_sse_emit( struct vertex_fetch *vf );
-
-
-struct vf_format_info {
- const char *name;
- vf_extract_func extract;
- vf_insert_func insert[4];
- const GLuint attrsize;
-};
-
-const struct vf_format_info vf_format_info[EMIT_MAX];
-
-
-#endif
diff --git a/src/mesa/vf/vf_generic.c b/src/mesa/vf/vf_generic.c
deleted file mode 100644
index 95a317e99db..00000000000
--- a/src/mesa/vf/vf_generic.c
+++ /dev/null
@@ -1,982 +0,0 @@
-
-/*
- * Copyright 2003 Tungsten Graphics, inc.
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * on the rights to use, copy, modify, merge, publish, distribute, sub
- * license, and/or sell copies of the Software, and to permit persons to whom
- * the Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * TUNGSTEN GRAPHICS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- * USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Keith Whitwell <[email protected]>
- */
-
-#include "main/glheader.h"
-#include "main/context.h"
-#include "main/colormac.h"
-#include "main/macros.h"
-#include "main/simple_list.h"
-
-#include "vf/vf.h"
-
-
-/*
- * These functions take the NDC coordinates pointed to by 'in', apply the
- * NDC->Viewport mapping and store the results at 'v'.
- */
-
-static INLINE void insert_4f_viewport_4( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- GLfloat *out = (GLfloat *)v;
- const GLfloat *scale = a->vf->vp;
- const GLfloat *trans = a->vf->vp + 4;
-
- out[0] = scale[0] * in[0] + trans[0];
- out[1] = scale[1] * in[1] + trans[1];
- out[2] = scale[2] * in[2] + trans[2];
- out[3] = in[3];
-}
-
-static INLINE void insert_4f_viewport_3( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- GLfloat *out = (GLfloat *)v;
- const GLfloat *scale = a->vf->vp;
- const GLfloat *trans = a->vf->vp + 4;
-
- out[0] = scale[0] * in[0] + trans[0];
- out[1] = scale[1] * in[1] + trans[1];
- out[2] = scale[2] * in[2] + trans[2];
- out[3] = 1;
-}
-
-static INLINE void insert_4f_viewport_2( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- GLfloat *out = (GLfloat *)v;
- const GLfloat *scale = a->vf->vp;
- const GLfloat *trans = a->vf->vp + 4;
-
- out[0] = scale[0] * in[0] + trans[0];
- out[1] = scale[1] * in[1] + trans[1];
- out[2] = trans[2];
- out[3] = 1;
-}
-
-static INLINE void insert_4f_viewport_1( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- GLfloat *out = (GLfloat *)v;
- const GLfloat *scale = a->vf->vp;
- const GLfloat *trans = a->vf->vp + 4;
-
- out[0] = scale[0] * in[0] + trans[0];
- out[1] = trans[1];
- out[2] = trans[2];
- out[3] = 1;
-}
-
-static INLINE void insert_3f_viewport_3( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- GLfloat *out = (GLfloat *)v;
- const GLfloat *scale = a->vf->vp;
- const GLfloat *trans = a->vf->vp + 4;
-
- out[0] = scale[0] * in[0] + trans[0];
- out[1] = scale[1] * in[1] + trans[1];
- out[2] = scale[2] * in[2] + trans[2];
-}
-
-static INLINE void insert_3f_viewport_2( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- GLfloat *out = (GLfloat *)v;
- const GLfloat *scale = a->vf->vp;
- const GLfloat *trans = a->vf->vp + 4;
-
- out[0] = scale[0] * in[0] + trans[0];
- out[1] = scale[1] * in[1] + trans[1];
- out[2] = scale[2] * in[2] + trans[2];
-}
-
-static INLINE void insert_3f_viewport_1( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- GLfloat *out = (GLfloat *)v;
- const GLfloat *scale = a->vf->vp;
- const GLfloat *trans = a->vf->vp + 4;
-
- out[0] = scale[0] * in[0] + trans[0];
- out[1] = trans[1];
- out[2] = trans[2];
-}
-
-static INLINE void insert_2f_viewport_2( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- GLfloat *out = (GLfloat *)v;
- const GLfloat *scale = a->vf->vp;
- const GLfloat *trans = a->vf->vp + 4;
-
- out[0] = scale[0] * in[0] + trans[0];
- out[1] = scale[1] * in[1] + trans[1];
-}
-
-static INLINE void insert_2f_viewport_1( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- GLfloat *out = (GLfloat *)v;
- const GLfloat *scale = a->vf->vp;
- const GLfloat *trans = a->vf->vp + 4;
-
- out[0] = scale[0] * in[0] + trans[0];
- out[1] = trans[1];
-}
-
-
-/*
- * These functions do the same as above, except for the viewport mapping.
- */
-
-static INLINE void insert_4f_4( const struct vf_attr *a, GLubyte *v, const GLfloat *in )
-{
- GLfloat *out = (GLfloat *)(v);
- (void) a;
-
- out[0] = in[0];
- out[1] = in[1];
- out[2] = in[2];
- out[3] = in[3];
-}
-
-static INLINE void insert_4f_3( const struct vf_attr *a, GLubyte *v, const GLfloat *in )
-{
- GLfloat *out = (GLfloat *)(v);
- (void) a;
-
- out[0] = in[0];
- out[1] = in[1];
- out[2] = in[2];
- out[3] = 1;
-}
-
-static INLINE void insert_4f_2( const struct vf_attr *a, GLubyte *v, const GLfloat *in )
-{
- GLfloat *out = (GLfloat *)(v);
- (void) a;
-
- out[0] = in[0];
- out[1] = in[1];
- out[2] = 0;
- out[3] = 1;
-}
-
-static INLINE void insert_4f_1( const struct vf_attr *a, GLubyte *v, const GLfloat *in )
-{
- GLfloat *out = (GLfloat *)(v);
- (void) a;
-
- out[0] = in[0];
- out[1] = 0;
- out[2] = 0;
- out[3] = 1;
-}
-
-static INLINE void insert_3f_xyw_4( const struct vf_attr *a, GLubyte *v, const GLfloat *in )
-{
- GLfloat *out = (GLfloat *)(v);
- (void) a;
-
- out[0] = in[0];
- out[1] = in[1];
- out[2] = in[3];
-}
-
-static INLINE void insert_3f_xyw_err( const struct vf_attr *a, GLubyte *v, const GLfloat *in )
-{
- (void) a; (void) v; (void) in;
- exit(1);
-}
-
-static INLINE void insert_3f_3( const struct vf_attr *a, GLubyte *v, const GLfloat *in )
-{
- GLfloat *out = (GLfloat *)(v);
- (void) a;
-
- out[0] = in[0];
- out[1] = in[1];
- out[2] = in[2];
-}
-
-static INLINE void insert_3f_2( const struct vf_attr *a, GLubyte *v, const GLfloat *in )
-{
- GLfloat *out = (GLfloat *)(v);
- (void) a;
-
- out[0] = in[0];
- out[1] = in[1];
- out[2] = 0;
-}
-
-static INLINE void insert_3f_1( const struct vf_attr *a, GLubyte *v, const GLfloat *in )
-{
- GLfloat *out = (GLfloat *)(v);
- (void) a;
-
- out[0] = in[0];
- out[1] = 0;
- out[2] = 0;
-}
-
-
-static INLINE void insert_2f_2( const struct vf_attr *a, GLubyte *v, const GLfloat *in )
-{
- GLfloat *out = (GLfloat *)(v);
- (void) a;
-
- out[0] = in[0];
- out[1] = in[1];
-}
-
-static INLINE void insert_2f_1( const struct vf_attr *a, GLubyte *v, const GLfloat *in )
-{
- GLfloat *out = (GLfloat *)(v);
- (void) a;
-
- out[0] = in[0];
- out[1] = 0;
-}
-
-static INLINE void insert_1f_1( const struct vf_attr *a, GLubyte *v, const GLfloat *in )
-{
- GLfloat *out = (GLfloat *)(v);
- (void) a;
-
- out[0] = in[0];
-}
-
-static INLINE void insert_null( const struct vf_attr *a, GLubyte *v, const GLfloat *in )
-{
- (void) a; (void) v; (void) in;
-}
-
-static INLINE void insert_4chan_4f_rgba_4( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- GLchan *c = (GLchan *)v;
- (void) a;
- UNCLAMPED_FLOAT_TO_CHAN(c[0], in[0]);
- UNCLAMPED_FLOAT_TO_CHAN(c[1], in[1]);
- UNCLAMPED_FLOAT_TO_CHAN(c[2], in[2]);
- UNCLAMPED_FLOAT_TO_CHAN(c[3], in[3]);
-}
-
-static INLINE void insert_4chan_4f_rgba_3( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- GLchan *c = (GLchan *)v;
- (void) a;
- UNCLAMPED_FLOAT_TO_CHAN(c[0], in[0]);
- UNCLAMPED_FLOAT_TO_CHAN(c[1], in[1]);
- UNCLAMPED_FLOAT_TO_CHAN(c[2], in[2]);
- c[3] = CHAN_MAX;
-}
-
-static INLINE void insert_4chan_4f_rgba_2( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- GLchan *c = (GLchan *)v;
- (void) a;
- UNCLAMPED_FLOAT_TO_CHAN(c[0], in[0]);
- UNCLAMPED_FLOAT_TO_CHAN(c[1], in[1]);
- c[2] = 0;
- c[3] = CHAN_MAX;
-}
-
-static INLINE void insert_4chan_4f_rgba_1( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- GLchan *c = (GLchan *)v;
- (void) a;
- UNCLAMPED_FLOAT_TO_CHAN(c[0], in[0]);
- c[1] = 0;
- c[2] = 0;
- c[3] = CHAN_MAX;
-}
-
-static INLINE void insert_4ub_4f_rgba_4( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- (void) a;
- UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]);
- UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]);
- UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[2]);
- UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[3]);
-}
-
-static INLINE void insert_4ub_4f_rgba_3( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- (void) a;
- UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]);
- UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]);
- UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[2]);
- v[3] = 0xff;
-}
-
-static INLINE void insert_4ub_4f_rgba_2( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- (void) a;
- UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]);
- UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]);
- v[2] = 0;
- v[3] = 0xff;
-}
-
-static INLINE void insert_4ub_4f_rgba_1( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- (void) a;
- UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]);
- v[1] = 0;
- v[2] = 0;
- v[3] = 0xff;
-}
-
-static INLINE void insert_4ub_4f_bgra_4( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- (void) a;
- UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[0]);
- UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]);
- UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[2]);
- UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[3]);
-}
-
-static INLINE void insert_4ub_4f_bgra_3( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- (void) a;
- UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[0]);
- UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]);
- UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[2]);
- v[3] = 0xff;
-}
-
-static INLINE void insert_4ub_4f_bgra_2( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- (void) a;
- UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[0]);
- UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]);
- v[0] = 0;
- v[3] = 0xff;
-}
-
-static INLINE void insert_4ub_4f_bgra_1( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- (void) a;
- UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[0]);
- v[1] = 0;
- v[0] = 0;
- v[3] = 0xff;
-}
-
-static INLINE void insert_4ub_4f_argb_4( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- (void) a;
- UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[0]);
- UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[1]);
- UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[2]);
- UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[3]);
-}
-
-static INLINE void insert_4ub_4f_argb_3( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- (void) a;
- UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[0]);
- UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[1]);
- UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[2]);
- v[0] = 0xff;
-}
-
-static INLINE void insert_4ub_4f_argb_2( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- (void) a;
- UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[0]);
- UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[1]);
- v[3] = 0x00;
- v[0] = 0xff;
-}
-
-static INLINE void insert_4ub_4f_argb_1( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- (void) a;
- UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[0]);
- v[2] = 0x00;
- v[3] = 0x00;
- v[0] = 0xff;
-}
-
-static INLINE void insert_4ub_4f_abgr_4( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- (void) a;
- UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[0]);
- UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[1]);
- UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[2]);
- UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[3]);
-}
-
-static INLINE void insert_4ub_4f_abgr_3( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- (void) a;
- UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[0]);
- UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[1]);
- UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[2]);
- v[0] = 0xff;
-}
-
-static INLINE void insert_4ub_4f_abgr_2( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- (void) a;
- UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[0]);
- UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[1]);
- v[1] = 0x00;
- v[0] = 0xff;
-}
-
-static INLINE void insert_4ub_4f_abgr_1( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- (void) a;
- UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[0]);
- v[2] = 0x00;
- v[1] = 0x00;
- v[0] = 0xff;
-}
-
-static INLINE void insert_3ub_3f_rgb_3( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- (void) a;
- UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]);
- UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]);
- UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[2]);
-}
-
-static INLINE void insert_3ub_3f_rgb_2( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- (void) a;
- UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]);
- UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]);
- v[2] = 0;
-}
-
-static INLINE void insert_3ub_3f_rgb_1( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- (void) a;
- UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]);
- v[1] = 0;
- v[2] = 0;
-}
-
-static INLINE void insert_3ub_3f_bgr_3( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- (void) a;
- UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[0]);
- UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]);
- UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[2]);
-}
-
-static INLINE void insert_3ub_3f_bgr_2( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- (void) a;
- UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[0]);
- UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]);
- v[0] = 0;
-}
-
-static INLINE void insert_3ub_3f_bgr_1( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- (void) a;
- UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[0]);
- v[1] = 0;
- v[0] = 0;
-}
-
-
-static INLINE void insert_1ub_1f_1( const struct vf_attr *a, GLubyte *v,
- const GLfloat *in )
-{
- (void) a;
- UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]);
-}
-
-
-/***********************************************************************
- * Functions to perform the reverse operations to the above, for
- * swrast translation and clip-interpolation.
- *
- * Currently always extracts a full 4 floats.
- */
-
-static void extract_4f_viewport( const struct vf_attr *a, GLfloat *out,
- const GLubyte *v )
-{
- const GLfloat *in = (const GLfloat *)v;
- const GLfloat *scale = a->vf->vp;
- const GLfloat *trans = a->vf->vp + 4;
-
- /* Although included for completeness, the position coordinate is
- * usually handled differently during clipping.
- */
- out[0] = (in[0] - trans[0]) / scale[0];
- out[1] = (in[1] - trans[1]) / scale[1];
- out[2] = (in[2] - trans[2]) / scale[2];
- out[3] = in[3];
-}
-
-static void extract_3f_viewport( const struct vf_attr *a, GLfloat *out,
- const GLubyte *v )
-{
- const GLfloat *in = (const GLfloat *)v;
- const GLfloat *scale = a->vf->vp;
- const GLfloat *trans = a->vf->vp + 4;
-
- out[0] = (in[0] - trans[0]) / scale[0];
- out[1] = (in[1] - trans[1]) / scale[1];
- out[2] = (in[2] - trans[2]) / scale[2];
- out[3] = 1;
-}
-
-
-static void extract_2f_viewport( const struct vf_attr *a, GLfloat *out,
- const GLubyte *v )
-{
- const GLfloat *in = (const GLfloat *)v;
- const GLfloat *scale = a->vf->vp;
- const GLfloat *trans = a->vf->vp + 4;
-
- out[0] = (in[0] - trans[0]) / scale[0];
- out[1] = (in[1] - trans[1]) / scale[1];
- out[2] = 0;
- out[3] = 1;
-}
-
-
-static void extract_4f( const struct vf_attr *a, GLfloat *out, const GLubyte *v )
-{
- const GLfloat *in = (const GLfloat *)v;
- (void) a;
-
- out[0] = in[0];
- out[1] = in[1];
- out[2] = in[2];
- out[3] = in[3];
-}
-
-static void extract_3f_xyw( const struct vf_attr *a, GLfloat *out, const GLubyte *v )
-{
- const GLfloat *in = (const GLfloat *)v;
- (void) a;
-
- out[0] = in[0];
- out[1] = in[1];
- out[2] = 0;
- out[3] = in[2];
-}
-
-
-static void extract_3f( const struct vf_attr *a, GLfloat *out, const GLubyte *v )
-{
- const GLfloat *in = (const GLfloat *)v;
- (void) a;
-
- out[0] = in[0];
- out[1] = in[1];
- out[2] = in[2];
- out[3] = 1;
-}
-
-
-static void extract_2f( const struct vf_attr *a, GLfloat *out, const GLubyte *v )
-{
- const GLfloat *in = (const GLfloat *)v;
- (void) a;
-
- out[0] = in[0];
- out[1] = in[1];
- out[2] = 0;
- out[3] = 1;
-}
-
-static void extract_1f( const struct vf_attr *a, GLfloat *out, const GLubyte *v )
-{
- const GLfloat *in = (const GLfloat *)v;
- (void) a;
-
- out[0] = in[0];
- out[1] = 0;
- out[2] = 0;
- out[3] = 1;
-}
-
-static void extract_4chan_4f_rgba( const struct vf_attr *a, GLfloat *out,
- const GLubyte *v )
-{
- GLchan *c = (GLchan *)v;
- (void) a;
-
- out[0] = CHAN_TO_FLOAT(c[0]);
- out[1] = CHAN_TO_FLOAT(c[1]);
- out[2] = CHAN_TO_FLOAT(c[2]);
- out[3] = CHAN_TO_FLOAT(c[3]);
-}
-
-static void extract_4ub_4f_rgba( const struct vf_attr *a, GLfloat *out,
- const GLubyte *v )
-{
- (void) a;
- out[0] = UBYTE_TO_FLOAT(v[0]);
- out[1] = UBYTE_TO_FLOAT(v[1]);
- out[2] = UBYTE_TO_FLOAT(v[2]);
- out[3] = UBYTE_TO_FLOAT(v[3]);
-}
-
-static void extract_4ub_4f_bgra( const struct vf_attr *a, GLfloat *out,
- const GLubyte *v )
-{
- (void) a;
- out[2] = UBYTE_TO_FLOAT(v[0]);
- out[1] = UBYTE_TO_FLOAT(v[1]);
- out[0] = UBYTE_TO_FLOAT(v[2]);
- out[3] = UBYTE_TO_FLOAT(v[3]);
-}
-
-static void extract_4ub_4f_argb( const struct vf_attr *a, GLfloat *out,
- const GLubyte *v )
-{
- (void) a;
- out[3] = UBYTE_TO_FLOAT(v[0]);
- out[0] = UBYTE_TO_FLOAT(v[1]);
- out[1] = UBYTE_TO_FLOAT(v[2]);
- out[2] = UBYTE_TO_FLOAT(v[3]);
-}
-
-static void extract_4ub_4f_abgr( const struct vf_attr *a, GLfloat *out,
- const GLubyte *v )
-{
- (void) a;
- out[3] = UBYTE_TO_FLOAT(v[0]);
- out[2] = UBYTE_TO_FLOAT(v[1]);
- out[1] = UBYTE_TO_FLOAT(v[2]);
- out[0] = UBYTE_TO_FLOAT(v[3]);
-}
-
-static void extract_3ub_3f_rgb( const struct vf_attr *a, GLfloat *out,
- const GLubyte *v )
-{
- (void) a;
- out[0] = UBYTE_TO_FLOAT(v[0]);
- out[1] = UBYTE_TO_FLOAT(v[1]);
- out[2] = UBYTE_TO_FLOAT(v[2]);
- out[3] = 1;
-}
-
-static void extract_3ub_3f_bgr( const struct vf_attr *a, GLfloat *out,
- const GLubyte *v )
-{
- (void) a;
- out[2] = UBYTE_TO_FLOAT(v[0]);
- out[1] = UBYTE_TO_FLOAT(v[1]);
- out[0] = UBYTE_TO_FLOAT(v[2]);
- out[3] = 1;
-}
-
-static void extract_1ub_1f( const struct vf_attr *a, GLfloat *out, const GLubyte *v )
-{
- (void) a;
- out[0] = UBYTE_TO_FLOAT(v[0]);
- out[1] = 0;
- out[2] = 0;
- out[3] = 1;
-}
-
-
-const struct vf_format_info vf_format_info[EMIT_MAX] =
-{
- { "1f",
- extract_1f,
- { insert_1f_1, insert_1f_1, insert_1f_1, insert_1f_1 },
- sizeof(GLfloat) },
-
- { "2f",
- extract_2f,
- { insert_2f_1, insert_2f_2, insert_2f_2, insert_2f_2 },
- 2 * sizeof(GLfloat) },
-
- { "3f",
- extract_3f,
- { insert_3f_1, insert_3f_2, insert_3f_3, insert_3f_3 },
- 3 * sizeof(GLfloat) },
-
- { "4f",
- extract_4f,
- { insert_4f_1, insert_4f_2, insert_4f_3, insert_4f_4 },
- 4 * sizeof(GLfloat) },
-
- { "2f_viewport",
- extract_2f_viewport,
- { insert_2f_viewport_1, insert_2f_viewport_2, insert_2f_viewport_2,
- insert_2f_viewport_2 },
- 2 * sizeof(GLfloat) },
-
- { "3f_viewport",
- extract_3f_viewport,
- { insert_3f_viewport_1, insert_3f_viewport_2, insert_3f_viewport_3,
- insert_3f_viewport_3 },
- 3 * sizeof(GLfloat) },
-
- { "4f_viewport",
- extract_4f_viewport,
- { insert_4f_viewport_1, insert_4f_viewport_2, insert_4f_viewport_3,
- insert_4f_viewport_4 },
- 4 * sizeof(GLfloat) },
-
- { "3f_xyw",
- extract_3f_xyw,
- { insert_3f_xyw_err, insert_3f_xyw_err, insert_3f_xyw_err,
- insert_3f_xyw_4 },
- 3 * sizeof(GLfloat) },
-
- { "1ub_1f",
- extract_1ub_1f,
- { insert_1ub_1f_1, insert_1ub_1f_1, insert_1ub_1f_1, insert_1ub_1f_1 },
- sizeof(GLubyte) },
-
- { "3ub_3f_rgb",
- extract_3ub_3f_rgb,
- { insert_3ub_3f_rgb_1, insert_3ub_3f_rgb_2, insert_3ub_3f_rgb_3,
- insert_3ub_3f_rgb_3 },
- 3 * sizeof(GLubyte) },
-
- { "3ub_3f_bgr",
- extract_3ub_3f_bgr,
- { insert_3ub_3f_bgr_1, insert_3ub_3f_bgr_2, insert_3ub_3f_bgr_3,
- insert_3ub_3f_bgr_3 },
- 3 * sizeof(GLubyte) },
-
- { "4ub_4f_rgba",
- extract_4ub_4f_rgba,
- { insert_4ub_4f_rgba_1, insert_4ub_4f_rgba_2, insert_4ub_4f_rgba_3,
- insert_4ub_4f_rgba_4 },
- 4 * sizeof(GLubyte) },
-
- { "4ub_4f_bgra",
- extract_4ub_4f_bgra,
- { insert_4ub_4f_bgra_1, insert_4ub_4f_bgra_2, insert_4ub_4f_bgra_3,
- insert_4ub_4f_bgra_4 },
- 4 * sizeof(GLubyte) },
-
- { "4ub_4f_argb",
- extract_4ub_4f_argb,
- { insert_4ub_4f_argb_1, insert_4ub_4f_argb_2, insert_4ub_4f_argb_3,
- insert_4ub_4f_argb_4 },
- 4 * sizeof(GLubyte) },
-
- { "4ub_4f_abgr",
- extract_4ub_4f_abgr,
- { insert_4ub_4f_abgr_1, insert_4ub_4f_abgr_2, insert_4ub_4f_abgr_3,
- insert_4ub_4f_abgr_4 },
- 4 * sizeof(GLubyte) },
-
- { "4chan_4f_rgba",
- extract_4chan_4f_rgba,
- { insert_4chan_4f_rgba_1, insert_4chan_4f_rgba_2, insert_4chan_4f_rgba_3,
- insert_4chan_4f_rgba_4 },
- 4 * sizeof(GLchan) },
-
- { "pad",
- NULL,
- { NULL, NULL, NULL, NULL },
- 0 }
-
-};
-
-
-
-
-/***********************************************************************
- * Hardwired fastpaths for emitting whole vertices or groups of
- * vertices
- */
-#define EMIT5(NR, F0, F1, F2, F3, F4, NAME) \
-static void NAME( struct vertex_fetch *vf, \
- GLuint count, \
- GLubyte *v ) \
-{ \
- struct vf_attr *a = vf->attr; \
- GLuint i; \
- \
- for (i = 0 ; i < count ; i++, v += vf->vertex_stride) { \
- if (NR > 0) { \
- F0( &a[0], v + a[0].vertoffset, (GLfloat *)a[0].inputptr ); \
- a[0].inputptr += a[0].inputstride; \
- } \
- \
- if (NR > 1) { \
- F1( &a[1], v + a[1].vertoffset, (GLfloat *)a[1].inputptr ); \
- a[1].inputptr += a[1].inputstride; \
- } \
- \
- if (NR > 2) { \
- F2( &a[2], v + a[2].vertoffset, (GLfloat *)a[2].inputptr ); \
- a[2].inputptr += a[2].inputstride; \
- } \
- \
- if (NR > 3) { \
- F3( &a[3], v + a[3].vertoffset, (GLfloat *)a[3].inputptr ); \
- a[3].inputptr += a[3].inputstride; \
- } \
- \
- if (NR > 4) { \
- F4( &a[4], v + a[4].vertoffset, (GLfloat *)a[4].inputptr ); \
- a[4].inputptr += a[4].inputstride; \
- } \
- } \
-}
-
-
-#define EMIT2(F0, F1, NAME) EMIT5(2, F0, F1, insert_null, \
- insert_null, insert_null, NAME)
-
-#define EMIT3(F0, F1, F2, NAME) EMIT5(3, F0, F1, F2, insert_null, \
- insert_null, NAME)
-
-#define EMIT4(F0, F1, F2, F3, NAME) EMIT5(4, F0, F1, F2, F3, \
- insert_null, NAME)
-
-
-EMIT2(insert_3f_viewport_3, insert_4ub_4f_rgba_4, emit_viewport3_rgba4)
-EMIT2(insert_3f_viewport_3, insert_4ub_4f_bgra_4, emit_viewport3_bgra4)
-EMIT2(insert_3f_3, insert_4ub_4f_rgba_4, emit_xyz3_rgba4)
-
-EMIT3(insert_4f_viewport_4, insert_4ub_4f_rgba_4, insert_2f_2, emit_viewport4_rgba4_st2)
-EMIT3(insert_4f_viewport_4, insert_4ub_4f_bgra_4, insert_2f_2, emit_viewport4_bgra4_st2)
-EMIT3(insert_4f_4, insert_4ub_4f_rgba_4, insert_2f_2, emit_xyzw4_rgba4_st2)
-
-EMIT4(insert_4f_viewport_4, insert_4ub_4f_rgba_4, insert_2f_2, insert_2f_2, emit_viewport4_rgba4_st2_st2)
-EMIT4(insert_4f_viewport_4, insert_4ub_4f_bgra_4, insert_2f_2, insert_2f_2, emit_viewport4_bgra4_st2_st2)
-EMIT4(insert_4f_4, insert_4ub_4f_rgba_4, insert_2f_2, insert_2f_2, emit_xyzw4_rgba4_st2_st2)
-
-
-/* Use the codegen paths to select one of a number of hardwired
- * fastpaths.
- */
-void vf_generate_hardwired_emit( struct vertex_fetch *vf )
-{
- vf_emit_func func = NULL;
-
- /* Does it fit a hardwired fastpath? Help! this is growing out of
- * control!
- */
- switch (vf->attr_count) {
- case 2:
- if (vf->attr[0].do_insert == insert_3f_viewport_3) {
- if (vf->attr[1].do_insert == insert_4ub_4f_bgra_4)
- func = emit_viewport3_bgra4;
- else if (vf->attr[1].do_insert == insert_4ub_4f_rgba_4)
- func = emit_viewport3_rgba4;
- }
- else if (vf->attr[0].do_insert == insert_3f_3 &&
- vf->attr[1].do_insert == insert_4ub_4f_rgba_4) {
- func = emit_xyz3_rgba4;
- }
- break;
- case 3:
- if (vf->attr[2].do_insert == insert_2f_2) {
- if (vf->attr[1].do_insert == insert_4ub_4f_rgba_4) {
- if (vf->attr[0].do_insert == insert_4f_viewport_4)
- func = emit_viewport4_rgba4_st2;
- else if (vf->attr[0].do_insert == insert_4f_4)
- func = emit_xyzw4_rgba4_st2;
- }
- else if (vf->attr[1].do_insert == insert_4ub_4f_bgra_4 &&
- vf->attr[0].do_insert == insert_4f_viewport_4)
- func = emit_viewport4_bgra4_st2;
- }
- break;
- case 4:
- if (vf->attr[2].do_insert == insert_2f_2 &&
- vf->attr[3].do_insert == insert_2f_2) {
- if (vf->attr[1].do_insert == insert_4ub_4f_rgba_4) {
- if (vf->attr[0].do_insert == insert_4f_viewport_4)
- func = emit_viewport4_rgba4_st2_st2;
- else if (vf->attr[0].do_insert == insert_4f_4)
- func = emit_xyzw4_rgba4_st2_st2;
- }
- else if (vf->attr[1].do_insert == insert_4ub_4f_bgra_4 &&
- vf->attr[0].do_insert == insert_4f_viewport_4)
- func = emit_viewport4_bgra4_st2_st2;
- }
- break;
- }
-
- vf->emit = func;
-}
-
-/***********************************************************************
- * Generic (non-codegen) functions for whole vertices or groups of
- * vertices
- */
-
-void vf_generic_emit( struct vertex_fetch *vf,
- GLuint count,
- GLubyte *v )
-{
- struct vf_attr *a = vf->attr;
- const GLuint attr_count = vf->attr_count;
- const GLuint stride = vf->vertex_stride;
- GLuint i, j;
-
- for (i = 0 ; i < count ; i++, v += stride) {
- for (j = 0; j < attr_count; j++) {
- GLfloat *in = (GLfloat *)a[j].inputptr;
- a[j].inputptr += a[j].inputstride;
- a[j].do_insert( &a[j], v + a[j].vertoffset, in );
- }
- }
-}
-
-
diff --git a/src/mesa/vf/vf_sse.c b/src/mesa/vf/vf_sse.c
deleted file mode 100644
index 7b947b74a65..00000000000
--- a/src/mesa/vf/vf_sse.c
+++ /dev/null
@@ -1,662 +0,0 @@
-/*
- * Copyright 2003 Tungsten Graphics, inc.
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * on the rights to use, copy, modify, merge, publish, distribute, sub
- * license, and/or sell copies of the Software, and to permit persons to whom
- * the Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * TUNGSTEN GRAPHICS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- * USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Keith Whitwell <[email protected]>
- */
-
-#include "main/glheader.h"
-#include "main/colormac.h"
-#include "main/simple_list.h"
-#include "main/enums.h"
-
-#include "vf/vf.h"
-
-#if defined(USE_SSE_ASM)
-
-#include "x86/rtasm/x86sse.h"
-#include "x86/common_x86_asm.h"
-
-
-#define X 0
-#define Y 1
-#define Z 2
-#define W 3
-
-
-struct x86_program {
- struct x86_function func;
-
- struct vertex_fetch *vf;
- GLboolean inputs_safe;
- GLboolean outputs_safe;
- GLboolean have_sse2;
-
- struct x86_reg identity;
- struct x86_reg chan0;
-};
-
-
-static struct x86_reg get_identity( struct x86_program *p )
-{
- return p->identity;
-}
-
-static void emit_load4f_4( struct x86_program *p,
- struct x86_reg dest,
- struct x86_reg arg0 )
-{
- sse_movups(&p->func, dest, arg0);
-}
-
-static void emit_load4f_3( struct x86_program *p,
- struct x86_reg dest,
- struct x86_reg arg0 )
-{
- /* Have to jump through some hoops:
- *
- * c 0 0 0
- * c 0 0 1
- * 0 0 c 1
- * a b c 1
- */
- sse_movss(&p->func, dest, x86_make_disp(arg0, 8));
- sse_shufps(&p->func, dest, get_identity(p), SHUF(X,Y,Z,W) );
- sse_shufps(&p->func, dest, dest, SHUF(Y,Z,X,W) );
- sse_movlps(&p->func, dest, arg0);
-}
-
-static void emit_load4f_2( struct x86_program *p,
- struct x86_reg dest,
- struct x86_reg arg0 )
-{
- /* Initialize from identity, then pull in low two words:
- */
- sse_movups(&p->func, dest, get_identity(p));
- sse_movlps(&p->func, dest, arg0);
-}
-
-static void emit_load4f_1( struct x86_program *p,
- struct x86_reg dest,
- struct x86_reg arg0 )
-{
- /* Pull in low word, then swizzle in identity */
- sse_movss(&p->func, dest, arg0);
- sse_shufps(&p->func, dest, get_identity(p), SHUF(X,Y,Z,W) );
-}
-
-
-
-static void emit_load3f_3( struct x86_program *p,
- struct x86_reg dest,
- struct x86_reg arg0 )
-{
- /* Over-reads by 1 dword - potential SEGV if input is a vertex
- * array.
- */
- if (p->inputs_safe) {
- sse_movups(&p->func, dest, arg0);
- }
- else {
- /* c 0 0 0
- * c c c c
- * a b c c
- */
- sse_movss(&p->func, dest, x86_make_disp(arg0, 8));
- sse_shufps(&p->func, dest, dest, SHUF(X,X,X,X));
- sse_movlps(&p->func, dest, arg0);
- }
-}
-
-static void emit_load3f_2( struct x86_program *p,
- struct x86_reg dest,
- struct x86_reg arg0 )
-{
- emit_load4f_2(p, dest, arg0);
-}
-
-static void emit_load3f_1( struct x86_program *p,
- struct x86_reg dest,
- struct x86_reg arg0 )
-{
- emit_load4f_1(p, dest, arg0);
-}
-
-static void emit_load2f_2( struct x86_program *p,
- struct x86_reg dest,
- struct x86_reg arg0 )
-{
- sse_movlps(&p->func, dest, arg0);
-}
-
-static void emit_load2f_1( struct x86_program *p,
- struct x86_reg dest,
- struct x86_reg arg0 )
-{
- emit_load4f_1(p, dest, arg0);
-}
-
-static void emit_load1f_1( struct x86_program *p,
- struct x86_reg dest,
- struct x86_reg arg0 )
-{
- sse_movss(&p->func, dest, arg0);
-}
-
-static void (*load[4][4])( struct x86_program *p,
- struct x86_reg dest,
- struct x86_reg arg0 ) = {
- { emit_load1f_1,
- emit_load1f_1,
- emit_load1f_1,
- emit_load1f_1 },
-
- { emit_load2f_1,
- emit_load2f_2,
- emit_load2f_2,
- emit_load2f_2 },
-
- { emit_load3f_1,
- emit_load3f_2,
- emit_load3f_3,
- emit_load3f_3 },
-
- { emit_load4f_1,
- emit_load4f_2,
- emit_load4f_3,
- emit_load4f_4 }
-};
-
-static void emit_load( struct x86_program *p,
- struct x86_reg dest,
- GLuint sz,
- struct x86_reg src,
- GLuint src_sz)
-{
- load[sz-1][src_sz-1](p, dest, src);
-}
-
-static void emit_store4f( struct x86_program *p,
- struct x86_reg dest,
- struct x86_reg arg0 )
-{
- sse_movups(&p->func, dest, arg0);
-}
-
-static void emit_store3f( struct x86_program *p,
- struct x86_reg dest,
- struct x86_reg arg0 )
-{
- if (p->outputs_safe) {
- /* Emit the extra dword anyway. This may hurt writecombining,
- * may cause other problems.
- */
- sse_movups(&p->func, dest, arg0);
- }
- else {
- /* Alternate strategy - emit two, shuffle, emit one.
- */
- sse_movlps(&p->func, dest, arg0);
- sse_shufps(&p->func, arg0, arg0, SHUF(Z,Z,Z,Z) ); /* NOTE! destructive */
- sse_movss(&p->func, x86_make_disp(dest,8), arg0);
- }
-}
-
-static void emit_store2f( struct x86_program *p,
- struct x86_reg dest,
- struct x86_reg arg0 )
-{
- sse_movlps(&p->func, dest, arg0);
-}
-
-static void emit_store1f( struct x86_program *p,
- struct x86_reg dest,
- struct x86_reg arg0 )
-{
- sse_movss(&p->func, dest, arg0);
-}
-
-
-static void (*store[4])( struct x86_program *p,
- struct x86_reg dest,
- struct x86_reg arg0 ) =
-{
- emit_store1f,
- emit_store2f,
- emit_store3f,
- emit_store4f
-};
-
-static void emit_store( struct x86_program *p,
- struct x86_reg dest,
- GLuint sz,
- struct x86_reg temp )
-
-{
- store[sz-1](p, dest, temp);
-}
-
-static void emit_pack_store_4ub( struct x86_program *p,
- struct x86_reg dest,
- struct x86_reg temp )
-{
- /* Scale by 255.0
- */
- sse_mulps(&p->func, temp, p->chan0);
-
- if (p->have_sse2) {
- sse2_cvtps2dq(&p->func, temp, temp);
- sse2_packssdw(&p->func, temp, temp);
- sse2_packuswb(&p->func, temp, temp);
- sse_movss(&p->func, dest, temp);
- }
- else {
- struct x86_reg mmx0 = x86_make_reg(file_MMX, 0);
- struct x86_reg mmx1 = x86_make_reg(file_MMX, 1);
- sse_cvtps2pi(&p->func, mmx0, temp);
- sse_movhlps(&p->func, temp, temp);
- sse_cvtps2pi(&p->func, mmx1, temp);
- mmx_packssdw(&p->func, mmx0, mmx1);
- mmx_packuswb(&p->func, mmx0, mmx0);
- mmx_movd(&p->func, dest, mmx0);
- }
-}
-
-static GLint get_offset( const void *a, const void *b )
-{
- return (const char *)b - (const char *)a;
-}
-
-/* Not much happens here. Eventually use this function to try and
- * avoid saving/reloading the source pointers each vertex (if some of
- * them can fit in registers).
- */
-static void get_src_ptr( struct x86_program *p,
- struct x86_reg srcREG,
- struct x86_reg vfREG,
- struct vf_attr *a )
-{
- struct vertex_fetch *vf = p->vf;
- struct x86_reg ptr_to_src = x86_make_disp(vfREG, get_offset(vf, &a->inputptr));
-
- /* Load current a[j].inputptr
- */
- x86_mov(&p->func, srcREG, ptr_to_src);
-}
-
-static void update_src_ptr( struct x86_program *p,
- struct x86_reg srcREG,
- struct x86_reg vfREG,
- struct vf_attr *a )
-{
- if (a->inputstride) {
- struct vertex_fetch *vf = p->vf;
- struct x86_reg ptr_to_src = x86_make_disp(vfREG, get_offset(vf, &a->inputptr));
-
- /* add a[j].inputstride (hardcoded value - could just as easily
- * pull the stride value from memory each time).
- */
- x86_lea(&p->func, srcREG, x86_make_disp(srcREG, a->inputstride));
-
- /* save new value of a[j].inputptr
- */
- x86_mov(&p->func, ptr_to_src, srcREG);
- }
-}
-
-
-/* Lots of hardcoding
- *
- * EAX -- pointer to current output vertex
- * ECX -- pointer to current attribute
- *
- */
-static GLboolean build_vertex_emit( struct x86_program *p )
-{
- struct vertex_fetch *vf = p->vf;
- GLuint j = 0;
-
- struct x86_reg vertexEAX = x86_make_reg(file_REG32, reg_AX);
- struct x86_reg srcECX = x86_make_reg(file_REG32, reg_CX);
- struct x86_reg countEBP = x86_make_reg(file_REG32, reg_BP);
- struct x86_reg vfESI = x86_make_reg(file_REG32, reg_SI);
- struct x86_reg temp = x86_make_reg(file_XMM, 0);
- struct x86_reg vp0 = x86_make_reg(file_XMM, 1);
- struct x86_reg vp1 = x86_make_reg(file_XMM, 2);
- GLubyte *fixup, *label;
-
- /* Push a few regs?
- */
- x86_push(&p->func, countEBP);
- x86_push(&p->func, vfESI);
-
-
- /* Get vertex count, compare to zero
- */
- x86_xor(&p->func, srcECX, srcECX);
- x86_mov(&p->func, countEBP, x86_fn_arg(&p->func, 2));
- x86_cmp(&p->func, countEBP, srcECX);
- fixup = x86_jcc_forward(&p->func, cc_E);
-
- /* Initialize destination register.
- */
- x86_mov(&p->func, vertexEAX, x86_fn_arg(&p->func, 3));
-
- /* Move argument 1 (vf) into a reg:
- */
- x86_mov(&p->func, vfESI, x86_fn_arg(&p->func, 1));
-
-
- /* Possibly load vp0, vp1 for viewport calcs:
- */
- if (vf->allow_viewport_emits) {
- sse_movups(&p->func, vp0, x86_make_disp(vfESI, get_offset(vf, &vf->vp[0])));
- sse_movups(&p->func, vp1, x86_make_disp(vfESI, get_offset(vf, &vf->vp[4])));
- }
-
- /* always load, needed or not:
- */
- sse_movups(&p->func, p->chan0, x86_make_disp(vfESI, get_offset(vf, &vf->chan_scale[0])));
- sse_movups(&p->func, p->identity, x86_make_disp(vfESI, get_offset(vf, &vf->identity[0])));
-
- /* Note address for loop jump */
- label = x86_get_label(&p->func);
-
- /* Emit code for each of the attributes. Currently routes
- * everything through SSE registers, even when it might be more
- * efficient to stick with regular old x86. No optimization or
- * other tricks - enough new ground to cover here just getting
- * things working.
- */
- while (j < vf->attr_count) {
- struct vf_attr *a = &vf->attr[j];
- struct x86_reg dest = x86_make_disp(vertexEAX, a->vertoffset);
-
- /* Now, load an XMM reg from src, perhaps transform, then save.
- * Could be shortcircuited in specific cases:
- */
- switch (a->format) {
- case EMIT_1F:
- get_src_ptr(p, srcECX, vfESI, a);
- emit_load(p, temp, 1, x86_deref(srcECX), a->inputsize);
- emit_store(p, dest, 1, temp);
- update_src_ptr(p, srcECX, vfESI, a);
- break;
- case EMIT_2F:
- get_src_ptr(p, srcECX, vfESI, a);
- emit_load(p, temp, 2, x86_deref(srcECX), a->inputsize);
- emit_store(p, dest, 2, temp);
- update_src_ptr(p, srcECX, vfESI, a);
- break;
- case EMIT_3F:
- /* Potentially the worst case - hardcode 2+1 copying:
- */
- if (0) {
- get_src_ptr(p, srcECX, vfESI, a);
- emit_load(p, temp, 3, x86_deref(srcECX), a->inputsize);
- emit_store(p, dest, 3, temp);
- update_src_ptr(p, srcECX, vfESI, a);
- }
- else {
- get_src_ptr(p, srcECX, vfESI, a);
- emit_load(p, temp, 2, x86_deref(srcECX), a->inputsize);
- emit_store(p, dest, 2, temp);
- if (a->inputsize > 2) {
- emit_load(p, temp, 1, x86_make_disp(srcECX, 8), 1);
- emit_store(p, x86_make_disp(dest,8), 1, temp);
- }
- else {
- sse_movss(&p->func, x86_make_disp(dest,8), get_identity(p));
- }
- update_src_ptr(p, srcECX, vfESI, a);
- }
- break;
- case EMIT_4F:
- get_src_ptr(p, srcECX, vfESI, a);
- emit_load(p, temp, 4, x86_deref(srcECX), a->inputsize);
- emit_store(p, dest, 4, temp);
- update_src_ptr(p, srcECX, vfESI, a);
- break;
- case EMIT_2F_VIEWPORT:
- get_src_ptr(p, srcECX, vfESI, a);
- emit_load(p, temp, 2, x86_deref(srcECX), a->inputsize);
- sse_mulps(&p->func, temp, vp0);
- sse_addps(&p->func, temp, vp1);
- emit_store(p, dest, 2, temp);
- update_src_ptr(p, srcECX, vfESI, a);
- break;
- case EMIT_3F_VIEWPORT:
- get_src_ptr(p, srcECX, vfESI, a);
- emit_load(p, temp, 3, x86_deref(srcECX), a->inputsize);
- sse_mulps(&p->func, temp, vp0);
- sse_addps(&p->func, temp, vp1);
- emit_store(p, dest, 3, temp);
- update_src_ptr(p, srcECX, vfESI, a);
- break;
- case EMIT_4F_VIEWPORT:
- get_src_ptr(p, srcECX, vfESI, a);
- emit_load(p, temp, 4, x86_deref(srcECX), a->inputsize);
- sse_mulps(&p->func, temp, vp0);
- sse_addps(&p->func, temp, vp1);
- emit_store(p, dest, 4, temp);
- update_src_ptr(p, srcECX, vfESI, a);
- break;
- case EMIT_3F_XYW:
- get_src_ptr(p, srcECX, vfESI, a);
- emit_load(p, temp, 4, x86_deref(srcECX), a->inputsize);
- sse_shufps(&p->func, temp, temp, SHUF(X,Y,W,Z));
- emit_store(p, dest, 3, temp);
- update_src_ptr(p, srcECX, vfESI, a);
- break;
-
- case EMIT_1UB_1F:
- /* Test for PAD3 + 1UB:
- */
- if (j > 0 &&
- a[-1].vertoffset + a[-1].vertattrsize <= a->vertoffset - 3)
- {
- get_src_ptr(p, srcECX, vfESI, a);
- emit_load(p, temp, 1, x86_deref(srcECX), a->inputsize);
- sse_shufps(&p->func, temp, temp, SHUF(X,X,X,X));
- emit_pack_store_4ub(p, x86_make_disp(dest, -3), temp); /* overkill! */
- update_src_ptr(p, srcECX, vfESI, a);
- }
- else {
- printf("Can't emit 1ub %x %x %d\n", a->vertoffset, a[-1].vertoffset, a[-1].vertattrsize );
- return GL_FALSE;
- }
- break;
- case EMIT_3UB_3F_RGB:
- case EMIT_3UB_3F_BGR:
- /* Test for 3UB + PAD1:
- */
- if (j == vf->attr_count - 1 ||
- a[1].vertoffset >= a->vertoffset + 4) {
- get_src_ptr(p, srcECX, vfESI, a);
- emit_load(p, temp, 3, x86_deref(srcECX), a->inputsize);
- if (a->format == EMIT_3UB_3F_BGR)
- sse_shufps(&p->func, temp, temp, SHUF(Z,Y,X,W));
- emit_pack_store_4ub(p, dest, temp);
- update_src_ptr(p, srcECX, vfESI, a);
- }
- /* Test for 3UB + 1UB:
- */
- else if (j < vf->attr_count - 1 &&
- a[1].format == EMIT_1UB_1F &&
- a[1].vertoffset == a->vertoffset + 3) {
- get_src_ptr(p, srcECX, vfESI, a);
- emit_load(p, temp, 3, x86_deref(srcECX), a->inputsize);
- update_src_ptr(p, srcECX, vfESI, a);
-
- /* Make room for incoming value:
- */
- sse_shufps(&p->func, temp, temp, SHUF(W,X,Y,Z));
-
- get_src_ptr(p, srcECX, vfESI, &a[1]);
- emit_load(p, temp, 1, x86_deref(srcECX), a[1].inputsize);
- update_src_ptr(p, srcECX, vfESI, &a[1]);
-
- /* Rearrange and possibly do BGR conversion:
- */
- if (a->format == EMIT_3UB_3F_BGR)
- sse_shufps(&p->func, temp, temp, SHUF(W,Z,Y,X));
- else
- sse_shufps(&p->func, temp, temp, SHUF(Y,Z,W,X));
-
- emit_pack_store_4ub(p, dest, temp);
- j++; /* NOTE: two attrs consumed */
- }
- else {
- printf("Can't emit 3ub\n");
- }
- return GL_FALSE; /* add this later */
- break;
-
- case EMIT_4UB_4F_RGBA:
- get_src_ptr(p, srcECX, vfESI, a);
- emit_load(p, temp, 4, x86_deref(srcECX), a->inputsize);
- emit_pack_store_4ub(p, dest, temp);
- update_src_ptr(p, srcECX, vfESI, a);
- break;
- case EMIT_4UB_4F_BGRA:
- get_src_ptr(p, srcECX, vfESI, a);
- emit_load(p, temp, 4, x86_deref(srcECX), a->inputsize);
- sse_shufps(&p->func, temp, temp, SHUF(Z,Y,X,W));
- emit_pack_store_4ub(p, dest, temp);
- update_src_ptr(p, srcECX, vfESI, a);
- break;
- case EMIT_4UB_4F_ARGB:
- get_src_ptr(p, srcECX, vfESI, a);
- emit_load(p, temp, 4, x86_deref(srcECX), a->inputsize);
- sse_shufps(&p->func, temp, temp, SHUF(W,X,Y,Z));
- emit_pack_store_4ub(p, dest, temp);
- update_src_ptr(p, srcECX, vfESI, a);
- break;
- case EMIT_4UB_4F_ABGR:
- get_src_ptr(p, srcECX, vfESI, a);
- emit_load(p, temp, 4, x86_deref(srcECX), a->inputsize);
- sse_shufps(&p->func, temp, temp, SHUF(W,Z,Y,X));
- emit_pack_store_4ub(p, dest, temp);
- update_src_ptr(p, srcECX, vfESI, a);
- break;
- case EMIT_4CHAN_4F_RGBA:
- switch (CHAN_TYPE) {
- case GL_UNSIGNED_BYTE:
- get_src_ptr(p, srcECX, vfESI, a);
- emit_load(p, temp, 4, x86_deref(srcECX), a->inputsize);
- emit_pack_store_4ub(p, dest, temp);
- update_src_ptr(p, srcECX, vfESI, a);
- break;
- case GL_FLOAT:
- get_src_ptr(p, srcECX, vfESI, a);
- emit_load(p, temp, 4, x86_deref(srcECX), a->inputsize);
- emit_store(p, dest, 4, temp);
- update_src_ptr(p, srcECX, vfESI, a);
- break;
- case GL_UNSIGNED_SHORT:
- default:
- printf("unknown CHAN_TYPE %s\n", _mesa_lookup_enum_by_nr(CHAN_TYPE));
- return GL_FALSE;
- }
- break;
- default:
- printf("unknown a[%d].format %d\n", j, a->format);
- return GL_FALSE; /* catch any new opcodes */
- }
-
- /* Increment j by at least 1 - may have been incremented above also:
- */
- j++;
- }
-
- /* Next vertex:
- */
- x86_lea(&p->func, vertexEAX, x86_make_disp(vertexEAX, vf->vertex_stride));
-
- /* decr count, loop if not zero
- */
- x86_dec(&p->func, countEBP);
- x86_test(&p->func, countEBP, countEBP);
- x86_jcc(&p->func, cc_NZ, label);
-
- /* Exit mmx state?
- */
- if (p->func.need_emms)
- mmx_emms(&p->func);
-
- /* Land forward jump here:
- */
- x86_fixup_fwd_jump(&p->func, fixup);
-
- /* Pop regs and return
- */
- x86_pop(&p->func, x86_get_base_reg(vfESI));
- x86_pop(&p->func, countEBP);
- x86_ret(&p->func);
-
- vf->emit = (vf_emit_func)x86_get_func(&p->func);
- return GL_TRUE;
-}
-
-
-
-void vf_generate_sse_emit( struct vertex_fetch *vf )
-{
- struct x86_program p;
-
- if (!cpu_has_xmm) {
- vf->codegen_emit = NULL;
- return;
- }
-
- memset(&p, 0, sizeof(p));
-
- p.vf = vf;
- p.inputs_safe = 0; /* for now */
- p.outputs_safe = 0; /* for now */
- p.have_sse2 = cpu_has_xmm2;
- p.identity = x86_make_reg(file_XMM, 6);
- p.chan0 = x86_make_reg(file_XMM, 7);
-
- x86_init_func(&p.func);
-
- if (build_vertex_emit(&p)) {
- vf_register_fastpath( vf, GL_TRUE );
- }
- else {
- /* Note the failure so that we don't keep trying to codegen an
- * impossible state:
- */
- vf_register_fastpath( vf, GL_FALSE );
- x86_release_func(&p.func);
- }
-}
-
-#else
-
-void vf_generate_sse_emit( struct vertex_fetch *vf )
-{
- /* Dummy version for when USE_SSE_ASM not defined */
-}
-
-#endif