summaryrefslogtreecommitdiff
path: root/xc/extras
diff options
context:
space:
mode:
authoralanh <alanh>2003-03-24 23:54:15 +0000
committeralanh <alanh>2003-03-24 23:54:15 +0000
commitd5935687c69a0c1c3455dc34e5027637fc745fac (patch)
tree5a0cfacd60fc5128a3b8a5ed08c4aba2bf36c94b /xc/extras
parent2ff36509093f39110af8b57f08e9d6e6a57321c5 (diff)
XFree86 4.3.0 mergeX_4_3_0-20030324-merge
Diffstat (limited to 'xc/extras')
-rw-r--r--xc/extras/FreeType/contrib/ftos2/ifi/32ifimet.h9
-rw-r--r--xc/extras/FreeType/contrib/ftos2/ifi/ftifi.c57
-rw-r--r--xc/extras/FreeType/contrib/ftos2/ifi/test.c17
-rw-r--r--xc/extras/FreeType/contrib/ftos2/lib/ttmemory.c63
-rw-r--r--xc/extras/FreeType/contrib/win32/res/testw32.rc23
-rw-r--r--xc/extras/FreeType/contrib/win32/testw32.h3
-rw-r--r--xc/extras/FreeType/test/ftdump.c3
-rw-r--r--xc/extras/Mesa/docs/RELNOTES-4.01
-rw-r--r--xc/extras/Mesa/docs/RELNOTES-4.0.11
-rw-r--r--xc/extras/Mesa/docs/RELNOTES-4.0.22
-rw-r--r--xc/extras/Mesa/docs/RELNOTES-4.0.32
-rw-r--r--xc/extras/Mesa/docs/RELNOTES-4.0.473
-rw-r--r--xc/extras/Mesa/docs/VERSIONS224
-rw-r--r--xc/extras/Mesa/include/GL/gl.h50
-rw-r--r--xc/extras/Mesa/include/GL/glxext.h11
-rw-r--r--xc/extras/Mesa/include/GL/xmesa.h1
-rw-r--r--xc/extras/Mesa/src/SPARC/clip.S1
-rw-r--r--xc/extras/Mesa/src/SPARC/norm.S1
-rw-r--r--xc/extras/Mesa/src/SPARC/sparc.c1
-rw-r--r--xc/extras/Mesa/src/SPARC/sparc.h1
-rw-r--r--xc/extras/Mesa/src/SPARC/sparc_matrix.h1
-rw-r--r--xc/extras/Mesa/src/SPARC/xform.S1
-rw-r--r--xc/extras/Mesa/src/Trace/tr_attrib.c0
-rw-r--r--xc/extras/Mesa/src/Trace/tr_commands.h644
-rw-r--r--xc/extras/Mesa/src/Trace/tr_context.c118
-rw-r--r--xc/extras/Mesa/src/Trace/tr_context.h80
-rw-r--r--xc/extras/Mesa/src/Trace/tr_control.c147
-rw-r--r--xc/extras/Mesa/src/Trace/tr_error.c40
-rw-r--r--xc/extras/Mesa/src/Trace/tr_error.h7
-rw-r--r--xc/extras/Mesa/src/Trace/tr_support.c584
-rw-r--r--xc/extras/Mesa/src/Trace/tr_support.h16
-rw-r--r--xc/extras/Mesa/src/Trace/tr_wrapper.c9311
-rw-r--r--xc/extras/Mesa/src/Trace/tr_wrapper.h8
-rw-r--r--xc/extras/Mesa/src/Trace/tr_write.c238
-rw-r--r--xc/extras/Mesa/src/Trace/tr_write.h68
-rw-r--r--xc/extras/Mesa/src/X/fakeglx.c35
-rw-r--r--xc/extras/Mesa/src/X/glxapi.c51
-rw-r--r--xc/extras/Mesa/src/X/glxapi.h13
-rw-r--r--xc/extras/Mesa/src/X/realglx.c12
-rw-r--r--xc/extras/Mesa/src/X/realglx.h18
-rw-r--r--xc/extras/Mesa/src/X/xm_api.c3
-rw-r--r--xc/extras/Mesa/src/X/xm_dd.c14
-rw-r--r--xc/extras/Mesa/src/X/xm_line.c1
-rw-r--r--xc/extras/Mesa/src/X/xm_span.c3
-rw-r--r--xc/extras/Mesa/src/X/xm_tri.c1
-rw-r--r--xc/extras/Mesa/src/X86/3dnow_normal.S36
-rw-r--r--xc/extras/Mesa/src/X86/3dnow_xform1.S1
-rw-r--r--xc/extras/Mesa/src/X86/3dnow_xform2.S1
-rw-r--r--xc/extras/Mesa/src/X86/3dnow_xform3.S1
-rw-r--r--xc/extras/Mesa/src/X86/3dnow_xform4.S1
-rw-r--r--xc/extras/Mesa/src/X86/common_x86.c2
-rw-r--r--xc/extras/Mesa/src/X86/common_x86_asm.S9
-rw-r--r--xc/extras/Mesa/src/X86/common_x86_asm.h2
-rw-r--r--xc/extras/Mesa/src/X86/common_x86_macros.h1
-rw-r--r--xc/extras/Mesa/src/X86/gen_matypes.c1
-rw-r--r--xc/extras/Mesa/src/X86/mmx.h2
-rw-r--r--xc/extras/Mesa/src/X86/norm_args.h1
-rw-r--r--xc/extras/Mesa/src/X86/sse.c1
-rw-r--r--xc/extras/Mesa/src/X86/sse.h1
-rw-r--r--xc/extras/Mesa/src/X86/sse_normal.S1
-rw-r--r--xc/extras/Mesa/src/X86/sse_xform1.S1
-rw-r--r--xc/extras/Mesa/src/X86/sse_xform2.S1
-rw-r--r--xc/extras/Mesa/src/X86/sse_xform3.S1
-rw-r--r--xc/extras/Mesa/src/X86/sse_xform4.S1
-rw-r--r--xc/extras/Mesa/src/X86/x86_xform2.S3
-rw-r--r--xc/extras/Mesa/src/X86/x86_xform3.S3
-rw-r--r--xc/extras/Mesa/src/X86/x86_xform4.S3
-rw-r--r--xc/extras/Mesa/src/api_arrayelt.c1
-rw-r--r--xc/extras/Mesa/src/api_arrayelt.h1
-rw-r--r--xc/extras/Mesa/src/api_eval.c1
-rw-r--r--xc/extras/Mesa/src/api_eval.h1
-rw-r--r--xc/extras/Mesa/src/api_loopback.c1
-rw-r--r--xc/extras/Mesa/src/api_loopback.h1
-rw-r--r--xc/extras/Mesa/src/api_noop.c1
-rw-r--r--xc/extras/Mesa/src/api_noop.h1
-rw-r--r--xc/extras/Mesa/src/api_validate.c1
-rw-r--r--xc/extras/Mesa/src/api_validate.h1
-rw-r--r--xc/extras/Mesa/src/array_cache/ac_context.c1
-rw-r--r--xc/extras/Mesa/src/array_cache/ac_context.h1
-rw-r--r--xc/extras/Mesa/src/array_cache/ac_import.c1
-rw-r--r--xc/extras/Mesa/src/array_cache/acache.h1
-rw-r--r--xc/extras/Mesa/src/attrib.c16
-rw-r--r--xc/extras/Mesa/src/colormac.h1
-rw-r--r--xc/extras/Mesa/src/context.c32
-rw-r--r--xc/extras/Mesa/src/convolve.h1
-rw-r--r--xc/extras/Mesa/src/debug.c1
-rw-r--r--xc/extras/Mesa/src/debug.h1
-rw-r--r--xc/extras/Mesa/src/dlist.c20
-rw-r--r--xc/extras/Mesa/src/enable.c50
-rw-r--r--xc/extras/Mesa/src/extensions.c10
-rw-r--r--xc/extras/Mesa/src/get.c68
-rw-r--r--xc/extras/Mesa/src/glapi.c7
-rw-r--r--xc/extras/Mesa/src/glheader.h2
-rw-r--r--xc/extras/Mesa/src/histogram.c1
-rw-r--r--xc/extras/Mesa/src/histogram.h1
-rw-r--r--xc/extras/Mesa/src/image.c50
-rw-r--r--xc/extras/Mesa/src/imports.c1
-rw-r--r--xc/extras/Mesa/src/imports.h1
-rw-r--r--xc/extras/Mesa/src/math/m_clip_tmp.h1
-rw-r--r--xc/extras/Mesa/src/math/m_copy_tmp.h1
-rw-r--r--xc/extras/Mesa/src/math/m_debug.h1
-rw-r--r--xc/extras/Mesa/src/math/m_debug_clip.c1
-rw-r--r--xc/extras/Mesa/src/math/m_debug_norm.c1
-rw-r--r--xc/extras/Mesa/src/math/m_debug_util.h1
-rw-r--r--xc/extras/Mesa/src/math/m_debug_vertex.c1
-rw-r--r--xc/extras/Mesa/src/math/m_debug_xform.c1
-rw-r--r--xc/extras/Mesa/src/math/m_dotprod_tmp.h1
-rw-r--r--xc/extras/Mesa/src/math/m_eval.c1
-rw-r--r--xc/extras/Mesa/src/math/m_eval.h1
-rw-r--r--xc/extras/Mesa/src/math/m_matrix.c3
-rw-r--r--xc/extras/Mesa/src/math/m_matrix.h1
-rw-r--r--xc/extras/Mesa/src/math/m_norm_tmp.h1
-rw-r--r--xc/extras/Mesa/src/math/m_trans_tmp.h1
-rw-r--r--xc/extras/Mesa/src/math/m_translate.c1
-rw-r--r--xc/extras/Mesa/src/math/m_translate.h1
-rw-r--r--xc/extras/Mesa/src/math/m_vector.c1
-rw-r--r--xc/extras/Mesa/src/math/m_vector.h1
-rw-r--r--xc/extras/Mesa/src/math/m_vertices.c1
-rw-r--r--xc/extras/Mesa/src/math/m_vertices.h1
-rw-r--r--xc/extras/Mesa/src/math/m_xform.c3
-rw-r--r--xc/extras/Mesa/src/math/m_xform.h1
-rw-r--r--xc/extras/Mesa/src/math/m_xform_tmp.h1
-rw-r--r--xc/extras/Mesa/src/math/mathmod.h1
-rw-r--r--xc/extras/Mesa/src/mem.h4
-rw-r--r--xc/extras/Mesa/src/mmath.h2
-rw-r--r--xc/extras/Mesa/src/mtypes.h13
-rw-r--r--xc/extras/Mesa/src/pixel.c20
-rw-r--r--xc/extras/Mesa/src/state.c20
-rw-r--r--xc/extras/Mesa/src/swrast/s_aaline.c1
-rw-r--r--xc/extras/Mesa/src/swrast/s_aaline.h1
-rw-r--r--xc/extras/Mesa/src/swrast/s_aalinetemp.h1
-rw-r--r--xc/extras/Mesa/src/swrast/s_aatriangle.c1
-rw-r--r--xc/extras/Mesa/src/swrast/s_aatriangle.h1
-rw-r--r--xc/extras/Mesa/src/swrast/s_aatritemp.h1
-rw-r--r--xc/extras/Mesa/src/swrast/s_accum.c1
-rw-r--r--xc/extras/Mesa/src/swrast/s_accum.h1
-rw-r--r--xc/extras/Mesa/src/swrast/s_alpha.c1
-rw-r--r--xc/extras/Mesa/src/swrast/s_alpha.h1
-rw-r--r--xc/extras/Mesa/src/swrast/s_alphabuf.c1
-rw-r--r--xc/extras/Mesa/src/swrast/s_alphabuf.h1
-rw-r--r--xc/extras/Mesa/src/swrast/s_bitmap.c1
-rw-r--r--xc/extras/Mesa/src/swrast/s_blend.c1
-rw-r--r--xc/extras/Mesa/src/swrast/s_blend.h1
-rw-r--r--xc/extras/Mesa/src/swrast/s_buffers.c1
-rw-r--r--xc/extras/Mesa/src/swrast/s_context.c24
-rw-r--r--xc/extras/Mesa/src/swrast/s_context.h1
-rw-r--r--xc/extras/Mesa/src/swrast/s_copypix.c1
-rw-r--r--xc/extras/Mesa/src/swrast/s_depth.c1
-rw-r--r--xc/extras/Mesa/src/swrast/s_depth.h1
-rw-r--r--xc/extras/Mesa/src/swrast/s_drawpix.c1
-rw-r--r--xc/extras/Mesa/src/swrast/s_drawpix.h1
-rw-r--r--xc/extras/Mesa/src/swrast/s_feedback.c1
-rw-r--r--xc/extras/Mesa/src/swrast/s_feedback.h1
-rw-r--r--xc/extras/Mesa/src/swrast/s_fog.c1
-rw-r--r--xc/extras/Mesa/src/swrast/s_fog.h1
-rw-r--r--xc/extras/Mesa/src/swrast/s_histogram.c1
-rw-r--r--xc/extras/Mesa/src/swrast/s_histogram.h1
-rw-r--r--xc/extras/Mesa/src/swrast/s_imaging.c1
-rw-r--r--xc/extras/Mesa/src/swrast/s_lines.c1
-rw-r--r--xc/extras/Mesa/src/swrast/s_lines.h1
-rw-r--r--xc/extras/Mesa/src/swrast/s_linetemp.h7
-rw-r--r--xc/extras/Mesa/src/swrast/s_logic.c1
-rw-r--r--xc/extras/Mesa/src/swrast/s_logic.h1
-rw-r--r--xc/extras/Mesa/src/swrast/s_masking.c1
-rw-r--r--xc/extras/Mesa/src/swrast/s_masking.h1
-rw-r--r--xc/extras/Mesa/src/swrast/s_pb.c1
-rw-r--r--xc/extras/Mesa/src/swrast/s_pb.h1
-rw-r--r--xc/extras/Mesa/src/swrast/s_pixeltex.c1
-rw-r--r--xc/extras/Mesa/src/swrast/s_pixeltex.h1
-rw-r--r--xc/extras/Mesa/src/swrast/s_points.c24
-rw-r--r--xc/extras/Mesa/src/swrast/s_points.h1
-rw-r--r--xc/extras/Mesa/src/swrast/s_pointtemp.h65
-rw-r--r--xc/extras/Mesa/src/swrast/s_readpix.c10
-rw-r--r--xc/extras/Mesa/src/swrast/s_scissor.c1
-rw-r--r--xc/extras/Mesa/src/swrast/s_scissor.h1
-rw-r--r--xc/extras/Mesa/src/swrast/s_span.c1
-rw-r--r--xc/extras/Mesa/src/swrast/s_span.h1
-rw-r--r--xc/extras/Mesa/src/swrast/s_stencil.c1
-rw-r--r--xc/extras/Mesa/src/swrast/s_stencil.h1
-rw-r--r--xc/extras/Mesa/src/swrast/s_texstore.c15
-rw-r--r--xc/extras/Mesa/src/swrast/s_texture.c33
-rw-r--r--xc/extras/Mesa/src/swrast/s_texture.h1
-rw-r--r--xc/extras/Mesa/src/swrast/s_triangle.c2
-rw-r--r--xc/extras/Mesa/src/swrast/s_triangle.h1
-rw-r--r--xc/extras/Mesa/src/swrast/s_trispan.h1
-rw-r--r--xc/extras/Mesa/src/swrast/s_tritemp.h5
-rw-r--r--xc/extras/Mesa/src/swrast/s_zoom.c1
-rw-r--r--xc/extras/Mesa/src/swrast/s_zoom.h1
-rw-r--r--xc/extras/Mesa/src/swrast/swrast.h6
-rw-r--r--xc/extras/Mesa/src/swrast_setup/ss_context.c12
-rw-r--r--xc/extras/Mesa/src/swrast_setup/ss_context.h7
-rw-r--r--xc/extras/Mesa/src/swrast_setup/ss_triangle.c1
-rw-r--r--xc/extras/Mesa/src/swrast_setup/ss_triangle.h1
-rw-r--r--xc/extras/Mesa/src/swrast_setup/ss_tritmp.h1
-rw-r--r--xc/extras/Mesa/src/swrast_setup/ss_vb.c1
-rw-r--r--xc/extras/Mesa/src/swrast_setup/ss_vb.h1
-rw-r--r--xc/extras/Mesa/src/swrast_setup/ss_vbtmp.h1
-rw-r--r--xc/extras/Mesa/src/swrast_setup/swrast_setup.h1
-rw-r--r--xc/extras/Mesa/src/texformat.c52
-rw-r--r--xc/extras/Mesa/src/texformat.h20
-rw-r--r--xc/extras/Mesa/src/texformat_tmp.h96
-rw-r--r--xc/extras/Mesa/src/teximage.c164
-rw-r--r--xc/extras/Mesa/src/texobj.c11
-rw-r--r--xc/extras/Mesa/src/texstate.c4
-rw-r--r--xc/extras/Mesa/src/texstore.c181
-rw-r--r--xc/extras/Mesa/src/texstore.h7
-rw-r--r--xc/extras/Mesa/src/texutil.c184
-rw-r--r--xc/extras/Mesa/src/texutil_tmp.h38
-rw-r--r--xc/extras/Mesa/src/tnl/t_array_api.c5
-rw-r--r--xc/extras/Mesa/src/tnl/t_array_api.h1
-rw-r--r--xc/extras/Mesa/src/tnl/t_array_import.c1
-rw-r--r--xc/extras/Mesa/src/tnl/t_array_import.h1
-rw-r--r--xc/extras/Mesa/src/tnl/t_context.c4
-rw-r--r--xc/extras/Mesa/src/tnl/t_context.h1
-rw-r--r--xc/extras/Mesa/src/tnl/t_eval_api.c1
-rw-r--r--xc/extras/Mesa/src/tnl/t_eval_api.h1
-rw-r--r--xc/extras/Mesa/src/tnl/t_imm_alloc.c1
-rw-r--r--xc/extras/Mesa/src/tnl/t_imm_alloc.h1
-rw-r--r--xc/extras/Mesa/src/tnl/t_imm_api.c24
-rw-r--r--xc/extras/Mesa/src/tnl/t_imm_api.h1
-rw-r--r--xc/extras/Mesa/src/tnl/t_imm_debug.c1
-rw-r--r--xc/extras/Mesa/src/tnl/t_imm_debug.h1
-rw-r--r--xc/extras/Mesa/src/tnl/t_imm_dlist.c1
-rw-r--r--xc/extras/Mesa/src/tnl/t_imm_dlist.h1
-rw-r--r--xc/extras/Mesa/src/tnl/t_imm_elt.c1
-rw-r--r--xc/extras/Mesa/src/tnl/t_imm_elt.h1
-rw-r--r--xc/extras/Mesa/src/tnl/t_imm_eval.c1
-rw-r--r--xc/extras/Mesa/src/tnl/t_imm_eval.h1
-rw-r--r--xc/extras/Mesa/src/tnl/t_imm_exec.c1
-rw-r--r--xc/extras/Mesa/src/tnl/t_imm_exec.h1
-rw-r--r--xc/extras/Mesa/src/tnl/t_imm_fixup.c1
-rw-r--r--xc/extras/Mesa/src/tnl/t_imm_fixup.h1
-rw-r--r--xc/extras/Mesa/src/tnl/t_pipeline.c1
-rw-r--r--xc/extras/Mesa/src/tnl/t_pipeline.h1
-rw-r--r--xc/extras/Mesa/src/tnl/t_vb_cliptmp.h1
-rw-r--r--xc/extras/Mesa/src/tnl/t_vb_fog.c1
-rw-r--r--xc/extras/Mesa/src/tnl/t_vb_light.c1
-rw-r--r--xc/extras/Mesa/src/tnl/t_vb_lighttmp.h1
-rw-r--r--xc/extras/Mesa/src/tnl/t_vb_normals.c1
-rw-r--r--xc/extras/Mesa/src/tnl/t_vb_points.c1
-rw-r--r--xc/extras/Mesa/src/tnl/t_vb_render.c1
-rw-r--r--xc/extras/Mesa/src/tnl/t_vb_rendertmp.h1
-rw-r--r--xc/extras/Mesa/src/tnl/t_vb_texgen.c1
-rw-r--r--xc/extras/Mesa/src/tnl/t_vb_texmat.c1
-rw-r--r--xc/extras/Mesa/src/tnl/t_vb_vertex.c1
-rw-r--r--xc/extras/Mesa/src/tnl/tnl.h1
-rw-r--r--xc/extras/Mesa/src/tnl_dd/t_dd.c1
-rw-r--r--xc/extras/Mesa/src/tnl_dd/t_dd_dmatmp.h23
-rw-r--r--xc/extras/Mesa/src/tnl_dd/t_dd_dmatmp2.h22
-rw-r--r--xc/extras/Mesa/src/tnl_dd/t_dd_rendertmp.h1
-rw-r--r--xc/extras/Mesa/src/tnl_dd/t_dd_triemit.h158
-rw-r--r--xc/extras/Mesa/src/tnl_dd/t_dd_tritmp.h1
-rw-r--r--xc/extras/Mesa/src/tnl_dd/t_dd_unfilled.h1
-rw-r--r--xc/extras/Mesa/src/tnl_dd/t_dd_vb.c75
-rw-r--r--xc/extras/Mesa/src/tnl_dd/t_dd_vbtmp.h5
-rw-r--r--xc/extras/Mesa/src/tnl_dd/t_dd_vertex.h1
-rw-r--r--xc/extras/Mesa/src/vtxfmt.c1
-rw-r--r--xc/extras/Mesa/src/vtxfmt.h1
-rw-r--r--xc/extras/Mesa/src/vtxfmt_tmp.h1
-rw-r--r--xc/extras/X-TrueType/xttcconv.c44
-rw-r--r--xc/extras/X-TrueType/xttfuncs.c209
-rw-r--r--xc/extras/X-TrueType/xttversion.h2
-rw-r--r--xc/extras/freetype2/include/freetype/internal/ftexcept.h3
-rw-r--r--xc/extras/freetype2/src/autohint/ahloader.h27
-rw-r--r--xc/extras/freetype2/src/base/ftmac.c4
-rw-r--r--xc/extras/freetype2/src/pcf/pcfutil.c10
-rw-r--r--xc/extras/freetype2/src/pcf/pcfutil.h8
-rw-r--r--xc/extras/freetype2/src/sfnt/ttcmap.c.save372
-rw-r--r--xc/extras/freetype2/src/truetype/ttdriver.c.save50
-rw-r--r--xc/extras/freetype2/src/type1/t1driver.c.save101
-rw-r--r--xc/extras/freetype2/src/winfonts/winfnt.c.save24
-rw-r--r--xc/extras/x86emu/src/x86emu/sys.c16
272 files changed, 13142 insertions, 1489 deletions
diff --git a/xc/extras/FreeType/contrib/ftos2/ifi/32ifimet.h b/xc/extras/FreeType/contrib/ftos2/ifi/32ifimet.h
index d965ce0e9..3b6c5648f 100644
--- a/xc/extras/FreeType/contrib/ftos2/ifi/32ifimet.h
+++ b/xc/extras/FreeType/contrib/ftos2/ifi/32ifimet.h
@@ -10,6 +10,7 @@
* This file is included by FDSTRUCS.H
*
\*********************************************************************/
+/* $XFree86: xc/extras/FreeType/contrib/ftos2/ifi/32ifimet.h,v 1.2 2003/01/12 03:55:43 tsi Exp $ */
#ifndef __32IFIMET_H__
#define __32IFIMET_H__
@@ -52,9 +53,9 @@
#define IFIMETRICS_HOLLOW 0x0800 /*Outline (hollow) */
#if defined(__IBMCPP__) || defined(__IBMC__)
- #pragma pack(1)
+# pragma pack(1)
#else
- #pragma Align_members(1)
+# pragma Align_members(1)
#endif
typedef struct _IFIMETRICS /* ifim */
@@ -110,9 +111,9 @@ typedef struct _IFIMETRICS /* ifim */
} IFIMETRICS;
typedef IFIMETRICS FAR *PIFIMETRICS;
#if defined(__IBMCPP__) || defined(__IBMC__)
- #pragma pack()
+# pragma pack()
#else
- #pragma Align_members()
+# pragma Align_members()
#endif
#endif
diff --git a/xc/extras/FreeType/contrib/ftos2/ifi/ftifi.c b/xc/extras/FreeType/contrib/ftos2/ifi/ftifi.c
index 9cb672137..856352539 100644
--- a/xc/extras/FreeType/contrib/ftos2/ifi/ftifi.c
+++ b/xc/extras/FreeType/contrib/ftos2/ifi/ftifi.c
@@ -51,11 +51,12 @@
/* number can be set via entry in OS2.INI. */
/* */
/* For Intelligent Font Interface (IFI) specification please see IFI32.TXT */
+/* $XFree86: xc/extras/FreeType/contrib/ftos2/ifi/ftifi.c,v 1.2 2003/01/12 03:55:43 tsi Exp $ */
#ifndef __IBMC__
- #ifndef __WATCOMC__
- #error "This source requires IBM VisualAge C++ or Watcom C/C++"
- #endif
+# ifndef __WATCOMC__
+# error "This source requires IBM VisualAge C++ or Watcom C/C++"
+# endif
#endif
/* Defining the following uses UCONV.DLL instead of the built-in */
@@ -193,19 +194,19 @@ char* itoa10( int i, char* buffer ) {
return buffer;
}
- #define COPY(s) strcpy(log, s)
- #define CAT(s) strcat(log, s)
- #define CATI(v) strcat(log, itoa10( (int)v, buf ))
- #define WRITE DosWrite(LogHandle, log, strlen(log), &Written)
+# define COPY(s) strcpy(log, s)
+# define CAT(s) strcat(log, s)
+# define CATI(v) strcat(log, itoa10( (int)v, buf ))
+# define WRITE DosWrite(LogHandle, log, strlen(log), &Written)
- #define ERET1(label) { COPY("Error at "); \
+# define ERET1(label) { COPY("Error at "); \
CATI(__LINE__); \
CAT("\r\n"); \
WRITE; \
goto label; \
}
- #define ERRRET(e) { COPY("Error at "); \
+# define ERRRET(e) { COPY("Error at "); \
CATI(__LINE__); \
CAT("\r\n"); \
WRITE; \
@@ -215,14 +216,14 @@ char* itoa10( int i, char* buffer ) {
#else
- #define COPY(s)
- #define CAT(s)
- #define CATI(v)
- #define WRITE
+# define COPY(s)
+# define CAT(s)
+# define CATI(v)
+# define WRITE
- #define ERET1(label) goto label;
+# define ERET1(label) goto label;
- #define ERRRET(e) return(e);
+# define ERRRET(e) return(e);
#endif /* DEBUG */
@@ -1561,7 +1562,7 @@ LONG _System QueryFaces( HFF hff,
ERRRET(-1) /* error, invalid handle */
if (cMetricLen == 0) { /* only number of faces is requested */
- #ifdef FAKE_TNR
+# ifdef FAKE_TNR
/* create an alias for Times New Roman */
pface = &(file->faces[0]);
name = LookupName(pface->face, TT_NAME_ID_FONT_FAMILY);
@@ -1569,7 +1570,7 @@ LONG _System QueryFaces( HFF hff,
file->flags |= FL_FLAG_FAKE_ROMAN;
return 2;
}
- #endif
+# endif
if (file->flags & FL_FLAG_DBCS_FILE)
return file->numFaces * 2;
else
@@ -1779,7 +1780,7 @@ LONG _System QueryFaces( HFF hff,
pifi2->szFacename[0] = '@';
ifiCount += cMetricLen;
}
- #ifdef FAKE_TNR
+# ifdef FAKE_TNR
if ((file->flags & FL_FLAG_FAKE_ROMAN) && (index + 1 >= cStart) &&
(index + 1 < (cStart + cFontCount))) {
pifi2 = (PIFIMETRICS) (((PBYTE) pifiMetrics) + ifiCount);
@@ -1802,7 +1803,7 @@ LONG _System QueryFaces( HFF hff,
}
ifiCount += cMetricLen;
}
- #endif
+# endif
}
Exit:
@@ -1839,11 +1840,11 @@ HFC _System OpenFontContext( HFF hff,
/* calculate real face index in font file */
faceIndex = file->flags & FL_FLAG_DBCS_FILE ? ulFont / 2 : ulFont;
- #ifdef FAKE_TNR
+# ifdef FAKE_TNR
if (file->flags & FL_FLAG_FAKE_ROMAN)
/* This font isn't real! */
faceIndex = 0;
- #endif
+# endif
if (faceIndex > file->numFaces)
ERRRET((HFC)-1)
@@ -2575,10 +2576,8 @@ ULONG FirstInit(void) {
LONG lReqCount;
ULONG ulCurMaxFH;
- #ifdef DEBUG
+# ifdef DEBUG
ULONG Action;
- #endif /* DEBUG */
- #ifdef DEBUG
DosOpen("C:\\FTIFI.LOG", &LogHandle, &Action, 0, FILE_NORMAL,
OPEN_ACTION_CREATE_IF_NEW | OPEN_ACTION_REPLACE_IF_EXISTS,
OPEN_FLAGS_NO_CACHE | OPEN_FLAGS_WRITE_THROUGH |
@@ -2586,7 +2585,7 @@ ULONG FirstInit(void) {
NULL);
COPY("FreeType/2 loaded.\r\n");
WRITE;
- #endif /* DEBUG */
+# endif /* DEBUG */
/* increase # of file handles by five to be on the safe side */
lReqCount = 5;
@@ -2636,11 +2635,11 @@ ULONG FinalTerm(void) {
/* turn off engine */
TT_Done_FreeType(engine);
- #ifdef DEBUG
+# ifdef DEBUG
COPY("FreeType/2 terminated.\r\n");
WRITE;
DosClose(LogHandle);
- #endif
+# endif
return 1;
}
/****************************************************************************/
@@ -2661,9 +2660,9 @@ ULONG _System _DLL_InitTerm(ULONG hModule, ULONG ulFlag) {
case 1: { /* terminating */
int i;
/* clean UCONV cache */
- #ifdef USE_UCONV
+# ifdef USE_UCONV
CleanUCONVCache();
- #endif
+# endif
if(--ulProcessCount == 0)
return FinalTerm();
else
diff --git a/xc/extras/FreeType/contrib/ftos2/ifi/test.c b/xc/extras/FreeType/contrib/ftos2/ifi/test.c
index b79301272..5fc8a7769 100644
--- a/xc/extras/FreeType/contrib/ftos2/ifi/test.c
+++ b/xc/extras/FreeType/contrib/ftos2/ifi/test.c
@@ -1,3 +1,4 @@
+/* $XFree86: xc/extras/FreeType/contrib/ftos2/ifi/test.c,v 1.2 2003/01/12 03:55:43 tsi Exp $ */
#include <os2.h>
@@ -8,13 +9,13 @@
//#define USE_ORIG
#ifdef USE_ORIG
- #pragma import (fdhdr, "FONT_DRIVER_DISPATCH_TABLE", "TRUETYPE", 0)
+# pragma import (fdhdr, "FONT_DRIVER_DISPATCH_TABLE", "TRUETYPE", 0)
#else
- #if defined USE_ATM
- #pragma import (fdhdr, "FONT_DRIVER_DISPATCH_TABLE", "PMATM", 0)
- #else
- #pragma import (fdhdr, "FONT_DRIVER_DISPATCH_TABLE", "FREETYPE", 0)
- #endif
+# if defined USE_ATM
+# pragma import (fdhdr, "FONT_DRIVER_DISPATCH_TABLE", "PMATM", 0)
+# else
+# pragma import (fdhdr, "FONT_DRIVER_DISPATCH_TABLE", "FREETYPE", 0)
+# endif
#endif
extern FDHEADER fdhdr;
@@ -42,9 +43,9 @@ char *fontnames[20] = {
#define FNTNAME1 "\\PSFONTS\\TIMES.TTF"
#ifdef USE_ATM
- #define FNTNAME2 "\\PSFONTS\\helv.ofm"
+# define FNTNAME2 "\\PSFONTS\\helv.ofm"
#else
- #define FNTNAME2 "\\PSFONTS\\symbol.tTf"
+# define FNTNAME2 "\\PSFONTS\\symbol.tTf"
#endif
#define BUFSIZE 32768
diff --git a/xc/extras/FreeType/contrib/ftos2/lib/ttmemory.c b/xc/extras/FreeType/contrib/ftos2/lib/ttmemory.c
index 38fd97948..fd75ac8fe 100644
--- a/xc/extras/FreeType/contrib/ftos2/lib/ttmemory.c
+++ b/xc/extras/FreeType/contrib/ftos2/lib/ttmemory.c
@@ -30,6 +30,7 @@
* Font Driver (FreeType/2).
*
******************************************************************/
+/* $XFree86: xc/extras/FreeType/contrib/ftos2/lib/ttmemory.c,v 1.2 2003/01/12 03:55:44 tsi Exp $ */
#include "ttdebug.h"
#include "ttmemory.h"
@@ -111,13 +112,13 @@ char* itohex4( long i, char* buffer )
return buffer;
}
- #define COPY(s) strcpy(log, s)
- #define CAT(s) strcat(log, s)
- #define CATI(v) strcat(log, itoa10( (int)v, buf ))
- #define CATH(v) strcat(log, itohex4( (long)v, buf ))
- #define CATW(v) strcat(log, itohex2( (short)v, buf ))
- #define WRITE DosWrite(MemLogHandle, log, strlen(log), &Written)
- #define ERRRET(e) { COPY("Error at "); \
+# define COPY(s) strcpy(log, s)
+# define CAT(s) strcat(log, s)
+# define CATI(v) strcat(log, itoa10( (int)v, buf ))
+# define CATH(v) strcat(log, itohex4( (long)v, buf ))
+# define CATW(v) strcat(log, itohex2( (short)v, buf ))
+# define WRITE DosWrite(MemLogHandle, log, strlen(log), &Written)
+# define ERRRET(e) { COPY("Error at "); \
CATI(__LINE__); \
CAT("\r\n"); \
WRITE; \
@@ -126,13 +127,13 @@ char* itohex4( long i, char* buffer )
#else
- #define COPY(s)
- #define CAT(s)
- #define CATI(v)
- #define CATH(v)
- #define CATW(v)
- #define WRITE
- #define ERRRET(e) return(e);
+# define COPY(s)
+# define CAT(s)
+# define CATI(v)
+# define CATH(v)
+# define CATW(v)
+# define WRITE
+# define ERRRET(e) return(e);
#endif /* DEBUG_MEM */
@@ -143,7 +144,7 @@ char* itohex4( long i, char* buffer )
#ifdef TRACK_MEM
/* name of shared memory used for memory usage reporting */
- #define MEM_NAME "\\sharemem\\freetype"
+# define MEM_NAME "\\sharemem\\freetype"
/* structure containing memory usage information */
typedef struct _INFOSTRUCT {
@@ -199,11 +200,11 @@ char* itohex4( long i, char* buffer )
}
*head = size;
base = (void*)(head + 1);
- #ifdef TRACK_MEM
+# ifdef TRACK_MEM
meminfo->used += size;
if (meminfo->used > meminfo->maxused)
meminfo->maxused = meminfo->used;
- #endif
+# endif
return base;
}
@@ -238,9 +239,9 @@ char* itohex4( long i, char* buffer )
CAT ( "\r\n" );
WRITE;
}
- #ifdef TRACK_MEM
+# ifdef TRACK_MEM
meminfo->used -= size;
- #endif
+# endif
return rc;
}
@@ -267,9 +268,9 @@ char* itohex4( long i, char* buffer )
{
*P = ft2_malloc( Size );
if (!*P) {
- #ifdef TRACK_MEM
+# ifdef TRACK_MEM
meminfo->num_err++;
- #endif
+# endif
return TT_Err_Out_Of_Memory;
}
@@ -302,9 +303,9 @@ char* itohex4( long i, char* buffer )
return TT_Err_Ok;
if (ft2_free( *P )) {
- #ifdef TRACK_MEM
+# ifdef TRACK_MEM
meminfo->num_err++;
- #endif
+# endif
}
*P = NULL;
return TT_Err_Ok;
@@ -325,7 +326,7 @@ char* itohex4( long i, char* buffer )
{
int rc;
- #ifdef DEBUG_MEM
+# ifdef DEBUG_MEM
ULONG Action;
DosOpen("C:\\FTMEM.LOG", &MemLogHandle, &Action, 0, FILE_NORMAL,
@@ -337,9 +338,9 @@ char* itohex4( long i, char* buffer )
COPY("FTMEM Init.\r\n");
WRITE;
- #endif /* DEBUG */
+# endif /* DEBUG */
- #ifdef TRACK_MEM
+# ifdef TRACK_MEM
/* allocate named shared memory and global shared memory */
SSAllocMem(&meminfo, 4096, 0);
@@ -348,7 +349,7 @@ char* itohex4( long i, char* buffer )
meminfo->signature = 0x46524545; /* 'FREE' */
meminfo->maxused = 0;
meminfo->used = 0;
- #endif /* TRACK */
+# endif /* TRACK */
return TT_Err_Ok;
}
@@ -369,15 +370,15 @@ char* itohex4( long i, char* buffer )
/* Never called by the font driver (beats me why). We do not
release the heaps */
- #ifdef TRACK_MEM
+# ifdef TRACK_MEM
DosFreeMem(memptr); /* free shared memory */
SSFreeMem(meminfo);
- #endif
- #ifdef DEBUG_MEM
+# endif
+# ifdef DEBUG_MEM
COPY("FTMEM Done.\r\n");
WRITE;
DosClose(MemLogHandle);
- #endif
+# endif
return TT_Err_Ok;
}
diff --git a/xc/extras/FreeType/contrib/win32/res/testw32.rc2 b/xc/extras/FreeType/contrib/win32/res/testw32.rc2
index c81f59438..890c815f0 100644
--- a/xc/extras/FreeType/contrib/win32/res/testw32.rc2
+++ b/xc/extras/FreeType/contrib/win32/res/testw32.rc2
@@ -1,9 +1,10 @@
//
// TESTW32.RC2 - resources Microsoft Visual C++ does not edit directly
//
+// $XFree86: xc/extras/FreeType/contrib/win32/res/testw32.rc2,v 1.2 2003/01/12 03:55:44 tsi Exp $
#ifdef APSTUDIO_INVOKED
- #error this file is not editable by Microsoft Visual C++
+# error this file is not editable by Microsoft Visual C++
#endif //APSTUDIO_INVOKED
diff --git a/xc/extras/FreeType/contrib/win32/testw32.h b/xc/extras/FreeType/contrib/win32/testw32.h
index 727b11f93..4ddde6aa8 100644
--- a/xc/extras/FreeType/contrib/win32/testw32.h
+++ b/xc/extras/FreeType/contrib/win32/testw32.h
@@ -1,5 +1,6 @@
// testw32.h : main header file for the TESTW32 application
//
+// $XFree86: xc/extras/FreeType/contrib/win32/testw32.h,v 1.2 2003/01/12 03:55:44 tsi Exp $
#if !defined(AFX_TESTW32_H__70F52CA9_06A4_11D2_9AC4_0060978849F3__INCLUDED_)
#define AFX_TESTW32_H__70F52CA9_06A4_11D2_9AC4_0060978849F3__INCLUDED_
@@ -9,7 +10,7 @@
#endif // _MSC_VER >= 1000
#ifndef __AFXWIN_H__
- #error include 'stdafx.h' before including this file for PCH
+# error include 'stdafx.h' before including this file for PCH
#endif
#include "resource.h" // main symbols
diff --git a/xc/extras/FreeType/test/ftdump.c b/xc/extras/FreeType/test/ftdump.c
index 655aab403..9f8dc6ba8 100644
--- a/xc/extras/FreeType/test/ftdump.c
+++ b/xc/extras/FreeType/test/ftdump.c
@@ -15,6 +15,7 @@
/* debug the current engine. */
/* */
/****************************************************************************/
+/* $XFree86: xc/extras/FreeType/test/ftdump.c,v 1.2 2003/01/12 03:55:44 tsi Exp $ */
#include <stdio.h>
#include <stdlib.h>
@@ -89,7 +90,7 @@
/* */
/* We thus avoid the external reference on these compilers. */
- #define TTMemory_Allocated 0L
+# define TTMemory_Allocated 0L
#else
extern long TTMemory_Allocated;
diff --git a/xc/extras/Mesa/docs/RELNOTES-4.0 b/xc/extras/Mesa/docs/RELNOTES-4.0
index 6a532a90c..2f729db15 100644
--- a/xc/extras/Mesa/docs/RELNOTES-4.0
+++ b/xc/extras/Mesa/docs/RELNOTES-4.0
@@ -160,4 +160,3 @@ See the VERSIONS file for more details about bug fixes, etc. in Mesa 4.0.
----------------------------------------------------------------------
-$Id: RELNOTES-4.0,v 1.1.1.1 2002/10/22 13:07:03 alanh Exp $
diff --git a/xc/extras/Mesa/docs/RELNOTES-4.0.1 b/xc/extras/Mesa/docs/RELNOTES-4.0.1
index 7a1c351ff..e84df6bf8 100644
--- a/xc/extras/Mesa/docs/RELNOTES-4.0.1
+++ b/xc/extras/Mesa/docs/RELNOTES-4.0.1
@@ -19,4 +19,3 @@ Mesa 4.0.1 only contains bug fixes since version 4.0.
See the docs/VERSIONS file for the list of bug fixes.
----------------------------------------------------------------------
-$Id: RELNOTES-4.0.1,v 1.1.1.1 2002/10/22 13:07:03 alanh Exp $
diff --git a/xc/extras/Mesa/docs/RELNOTES-4.0.2 b/xc/extras/Mesa/docs/RELNOTES-4.0.2
index e981da535..583ea9865 100644
--- a/xc/extras/Mesa/docs/RELNOTES-4.0.2
+++ b/xc/extras/Mesa/docs/RELNOTES-4.0.2
@@ -47,4 +47,4 @@ D3D needs updating
----------------------------------------------------------------------
-$Id: RELNOTES-4.0.2,v 1.1.1.1 2002/10/22 13:07:03 alanh Exp $
+$Id: RELNOTES-4.0.2,v 1.1.1.2 2003/03/25 00:01:12 alanh Exp $
diff --git a/xc/extras/Mesa/docs/RELNOTES-4.0.3 b/xc/extras/Mesa/docs/RELNOTES-4.0.3
index 28baba9e8..aad4a8d9c 100644
--- a/xc/extras/Mesa/docs/RELNOTES-4.0.3
+++ b/xc/extras/Mesa/docs/RELNOTES-4.0.3
@@ -49,4 +49,4 @@ D3D needs updating
----------------------------------------------------------------------
-$Id: RELNOTES-4.0.3,v 1.1.1.1 2002/10/22 13:07:03 alanh Exp $
+$Id: RELNOTES-4.0.3,v 1.1.1.2 2003/03/25 00:01:12 alanh Exp $
diff --git a/xc/extras/Mesa/docs/RELNOTES-4.0.4 b/xc/extras/Mesa/docs/RELNOTES-4.0.4
new file mode 100644
index 000000000..719a92739
--- /dev/null
+++ b/xc/extras/Mesa/docs/RELNOTES-4.0.4
@@ -0,0 +1,73 @@
+
+ Mesa 4.0.4 release notes
+
+ October 3, 2002
+
+ PLEASE READ!!!!
+
+
+
+Introduction
+------------
+
+Mesa uses an even/odd version number scheme like the Linux kernel.
+Odd numbered versions (such as 3.3) designate new developmental releases.
+Even numbered versions (such as 3.4) designate stable releases.
+
+Mesa 4.0.4 contains bug fixes since version 4.0.3 and a few new extensions
+needed for DRI drivers.
+
+See the docs/VERSIONS file for the list of bug fixes.
+
+
+
+New Extensions
+--------------
+
+GL_NV_texture_rectangle was back-ported from the Mesa 4.1 branch so
+that it could be incorporated into the DRI R200 driver.
+
+GL_MESA_ycbcr_texture supports texture images in the YCbCr video format.
+
+GL_APPLE_client_storage extension (for some DRI drivers only) allows the
+caller to say that copying the texture image is not needed.
+
+GL_MESA_pack_invert allows glReadPixels and glGetTexImage() to store images
+in upside-down order, which better matches conventional image file formats.
+
+
+
+Device Drivers
+--------------
+
+Mesa advertises itself as either OpenGL 1.2 or OpenGL 1.3 depending on the
+device driver. If the driver enables all the ARB extensions which are part
+of OpenGL 1.3 then glGetString(GL_VERSION) will return "1.3". Otherwise,
+it'll return "1.2".
+
+A number of Mesa's software drivers haven't been actively maintained for
+some time. We rely on volunteers to maintain many of the drivers.
+Here's the current status of all included drivers:
+
+Driver Status
+---------------------- ---------------------
+XMesa (Xlib) implements OpenGL 1.3
+OSMesa (off-screen) implements OpenGL 1.3
+FX (3dfx Voodoo1/2) implements OpenGL 1.3
+SVGA implements OpenGL 1.3
+Wind River UGL implements OpenGL 1.3
+Windows/Win32 implements OpenGL 1.3
+DOS/DJGPP implements OpenGL 1.3 (new in Mesa 4.0.2)
+GGI implements OpenGL 1.3
+BeOS needs updating
+Allegro needs updating
+D3D needs updating
+
+
+The DOS driver has been updated by Daniel Borca for Mesa 4.0.4.
+
+
+
+
+----------------------------------------------------------------------
+$Id: RELNOTES-4.0.4,v 1.1.1.1 2003/03/25 00:01:12 alanh Exp $
diff --git a/xc/extras/Mesa/docs/VERSIONS b/xc/extras/Mesa/docs/VERSIONS
index c503de8a6..f8e904140 100644
--- a/xc/extras/Mesa/docs/VERSIONS
+++ b/xc/extras/Mesa/docs/VERSIONS
@@ -1,4 +1,3 @@
-$Id: VERSIONS,v 1.1.1.2 2000/12/05 16:38:42 dawes Exp $
Mesa Version History
@@ -776,10 +775,11 @@ Mesa Version History
- finished internal support for compressed textures for DRI
-3.4.1 December ??, 2000
+3.4.1 February 14, 2001
New:
- fixed some Linux build problems
- fixed some Windows build problems
+ - GL_EXT_texture_env_dot3 extension (Gareth Hughes)
Bug fixes:
- added RENDER_START/RENDER_FINISH macros for glCopyTexImage in DRI
- various state-update code changes needed for DRI bugs
@@ -789,3 +789,223 @@ Mesa Version History
- GLX_PBUFFER enum value was wrong in glx.h
- fixed a glColorMaterial lighting bug
- fixed bad args to Read/WriteStencilSpan in h/w stencil clear function
+ - glXCopySubBufferMESA() Y position was off by one
+ - Error checking of glTexSubImage3D() was broken (bug 128775)
+ - glPopAttrib() didn't restore all derived Mesa state correctly
+ - Better glReadPixels accuracy for 16bpp color - fixes lots of OpenGL
+ conformance problems at 16bpp.
+ - clearing depth buffer with scissoring was broken, would segfault
+ - OSMesaGetDepthBuffer() returned bad bytesPerValue value
+ - fixed a line clipping bug (reported by Craig McDaniel)
+ - fixed RGB color over/underflow bug for very tiny triangles
+ Known problems:
+ - NURBS or evaluator surfaces inside display lists don't always work
+
+
+3.4.2 May 17, 2001
+ Bug fixes:
+ - deleting the currently bound texture could cause bad problems
+ - using fog could result in random vertex alpha values
+ - AA triangle rendering could touch pixels outside right window bound
+ - fixed byteswapping problem in clear_32bit_ximage() function
+ - fixed bugs in wglUseFontBitmapsA(), by Frank Warmerdam
+ - fixed memory leak in glXUseXFont()
+ - fragment sampling in AA triangle function was off by 1/2 pixel
+ - Windows: reading pixels from framebuffer didn't always work
+ - glConvolutionFilter2D could segfault or cause FP exception
+ - fixed segfaults in FX and X drivers when using tex unit 1 but not 0
+ - GL_NAND logicop didn't work right in RGBA mode
+ - fixed a memory corruption bug in vertex buffer reset code
+ - clearing the softwara alpha buffer with scissoring was broken
+ - fixed a few color index mode fog bugs
+ - fixed some bad assertions in color index mode
+ - fixed FX line 'stipple' bug #420091
+ - fixed stencil buffer clear width/height typo
+ - fixed GL error glitches in gl[Client]ActiveTextureARB()
+ - fixed Windows compilation problem in texutil.c
+ - fixed 1/8-pixel AA triangle sampling error
+ Changes:
+ - optimized writing mono-colored pixel spans to X pixmaps
+ - increased max viewport size to 2048 x 2048
+
+
+3.5 June 21, 2001
+ New:
+ - internals of Mesa divided into modular pieces (Keith Whitwell)
+ - 100% OpenGL 1.2 conformance (passes all conformance tests)
+ - new AA line algorithm
+ - GL_EXT_convolution extension
+ - GL_ARB_imaging subset
+ - OSMesaCreateContextExt() function
+ - GL_ARB_texture_env_add extension (same as GL_EXT_texture_env_add)
+ - GL_MAX_TEXTURE_UNITS_ARB now defaults to eight
+ - GL_EXT_fog_coord extension (Keith Whitwell)
+ - GL_EXT_secondary_color extension (Keith Whitwell)
+ - GL_ARB_texture_env_add extension (same as GL_EXT_texture_env_add)
+ - GL_SGIX_depth_texture extension
+ - GL_SGIX_shadow and GL_SGIX_shadow_ambient extensions
+ - demos/shadowtex.c demo of GL_SGIX_depth_texture and GL_SGIX_shadow
+ - GL_ARB_texture_env_combine extension
+ - GL_ARB_texture_env_dot3 extension
+ - GL_ARB_texture_border_clamp (aka GL_SGIS_texture_border_clamp)
+ - OSMesaCreateContextExt() function
+ - libOSMesa.so library, contains the OSMesa driver interface
+ - GL/glxext.h header file for GLX extensions
+ - somewhat faster software texturing, fogging, depth testing
+ - all color-index conformance tests now pass (only 8bpp tested)
+ - SPARC assembly language TCL optimizations (David Miller)
+ - GL_SGIS_generate_mipmap extension
+ Bug Fixes:
+ - fbiRev and tmuRev were unitialized when using Glide3
+ - fixed a few color index mode conformance failures; all pass now
+ - now appling antialiasing coverage to alpha after texturing
+ - colors weren't getting clamped to [0,1] before color table lookup
+ - fixed RISC alignment errors caused by COPY_4UBV macro
+ - drawing wide, flat-shaded lines could cause a segfault
+ - vertices now snapped to 1/16 pixel to fix rendering of tiny triangles
+ Changes:
+ - SGI's Sample Implementation (SI) 1.3 GLU library replaces Mesa GLU
+ - new libOSMesa.so library, contains the OSMesa driver interface
+
+
+4.0 October 22, 2001
+ New:
+ - Mesa 4.0 implements the OpenGL 1.3 specification
+ - GL_IBM_rasterpos_clip extension
+ - GL_EXT_texture_edge_clamp extension (aka GL_SGIS_texture_edge_clamp)
+ - GL_ARB_texture_mirrored_repeat extension
+ - WindML UGL driver (Stephane Raimbault)
+ - added OSMESA_MAX_WIDTH/HEIGHT queries
+ - attempted compiliation fixes for Solaris 5, 7 and 8
+ - updated glext.h and glxext.h files
+ - updated Windows driver (Karl Schultz)
+ Bug fixes:
+ - added some missing GLX 1.3 tokens to include/GL/glx.h
+ - GL_COLOR_MATRIX changes weren't recognized by teximage functions
+ - glCopyPixels with scale and bias was broken
+ - glRasterPos with lighting could segfault
+ - glDeleteTextures could leave a dangling pointer
+ - Proxy textures for cube maps didn't work
+ - fixed a number of 16-bit color channel bugs
+ - fixed a few minor memory leaks
+ - GLX context sharing was broken in 3.5
+ - fixed state-update bugs in glPopClientAttrib()
+ - fixed glDrawRangeElements() bug
+ - fixed a glPush/PopAttrib() bug related to texture binding
+ - flat-shaded, textured lines were broken
+ - fixed a dangling pointer problem in the XMesa code (Chris Burghart)
+ - lighting didn't always produce the correct alpha value
+ - fixed 3DNow! code to not read past end of arrays (Andrew Lewycky)
+
+
+4.0.1 December 17, 2001
+ New:
+ - better sub-pixel sample positions for AA triangles (Ray Tice)
+ - slightly faster blending for (GL_ZERO, GL_ONE) and (GL_ONE, GL_ZERO)
+ Bug fixes:
+ - added missing break statements in glGet*() for multisample cases
+ - fixed uninitialized hash table mutex bug (display lists / texobjs)
+ - fixed bad teximage error check conditional (bug 476846)
+ - fixed demos readtex.c compilation problem on Windows (Karl Schultz)
+ - added missing glGet() query for GL_MAX_TEXTURE_LOD_BIAS_EXT
+ - silence some compiler warnings (gcc 2.96)
+ - enable the #define GL_VERSION_1_3 in GL/gl.h
+ - added GL 1.3 and GLX 1.4 entries to gl_mangle.h and glx_mangle.h
+ - fixed glu.h typedef problem found with MSDev 6.0
+ - build libGL.so with -Bsymbolic (fixes bug found with Chromium)
+ - added missing 'const' to glXGetContextIDEXT() in glxext.h
+ - fixed a few glXGetProcAddress() errors (texture compression, etc)
+ - fixed start index bug in compiled vertex arrays (Keith)
+ - fixed compilation problems in src/SPARC/glapi_sparc.S
+ - fixed triangle strip "parity" bug found in VTK medical1 demo (Keith)
+ - use glXGetProcAddressARB in GLUT to avoid extension linking problems
+ - provoking vertex of flat-shaded, color-index triangles was wrong
+ - fixed a few display list bugs (GLUT walker, molecule, etc) (Keith)
+ - glTexParameter didn't flush the vertex buffer (Ray Tice)
+ - feedback attributes for glDraw/CopyPixels and glBitmap were wrong
+ - fixed bug in normal length caching (ParaView lighting bug)
+ - fixed separate_specular color bug found in Chimera (18 Dec 2001)
+
+
+4.0.2 April 2, 2002
+ New:
+ - New DOS (DJGPP) driver written by Daniel Borca
+ - New driver interface functions for TCL drivers (such as Radeon DRI)
+ - GL_RENDERER string returns "Mesa Offscreen16" or "Mesa Offscreen32"
+ if using deep color channels
+ - latest GL/glext.h and GL/glxext.h headers from SGI
+ Bug fixes:
+ - GL_BLEND with non-black texture env color wasn't always correct
+ - GL_REPLACE with GL_RGB texture format wasn't always correct (alpha)
+ - glTexEnviv( pname != GL_TEXTURE_ENV_COLOR ) was broken
+ - glReadPixels was sometimes mistakenly clipped by the scissor box
+ - glDraw/ReadPixels didn't catch all the errors that they should have
+ - Fixed 24bpp rendering problem in Windows driver (Karl Schultz)
+ - 16-bit GLchan mode fixes (m_trans_tmp.h, s_triangle.c)
+ - Fixed 1-bit float->int conversion bug in glDrawPixels(GL_DEPTH_COMP)
+ - glColorMask as sometimes effecting glXSwapBuffers()
+ - fixed a potential bug in XMesaGarbageCollect()
+ - N threads rendering into one window didn't work reliably
+ - glCopyPixels didn't work for deep color channels
+ - improved 8 -> 16bit/channel texture image conversion (Gerk Huisma)
+ - glPopAttrib() didn't correctly restore user clip planes
+ - user clip planes failed for some perspective projections (Chromium)
+ Known bugs:
+ - mipmap LOD computation
+
+
+4.0.3 June 25, 2002
+ New:
+ - updated GL/glext.h file (version 15)
+ - corrected MMX blend code (Jose Fonseca)
+ - support for software-based alpha planes in Windows driver
+ - updated GGI driver (Filip Spacek)
+ Bug fixes:
+ - glext.h had wrong values for GL_DOT3_RGB[A]_EXT tokens
+ - OSMesaMakeCurrent() didn't recognize buffer size changes
+ - assorted conformance fixes for 16-bit/channel rendering
+ - texcombine alpha subtraction mode was broken
+ - fixed lighting bug with non-uniform scaling and display lists
+ - fixed bug when deleting shared display lists
+ - disabled SPARC cliptest assembly code (Mesa bug 544665)
+ - fixed a couple Solaris compilation/link problems
+ - blending clipped glDrawPixels didn't always work
+ - glGetTexImage() didn't accept packed pixel types
+ - glPixelMapu[is]v() could explode given too large of pixelmap
+ - glGetTexParameter[if]v() didn't accept GL_TEXTURE_MAX_ANISOTROPY_EXT
+ - glXCopyContext() could lead to segfaults
+ - glCullFace(GL_FRONT_AND_BACK) didn't work (bug 572665)
+ Changes:
+ - lots of C++ (g++) code clean-ups
+ - lots of T&L updates for the Radeon DRI driver
+ Known bugs:
+ - mipmap LOD computation (fixed for Mesa 4.1)
+
+
+4.0.4 October 3, 2002
+ New:
+ - GL_NV_texture_rectangle extension
+ - updated glext.h header (version 17)
+ - updated DOS driver (Daniel Borca)
+ - updated BeOS R5 driver (Philippe Houdoin)
+ - added GL_IBM_texture_mirror_repeat
+ - glxinfo now takes -l option to print interesting OpenGL limits info
+ - GL_MESA_ycbcr_texture extension
+ - GL_APPLE_client_storage extension (for some DRI drivers only)
+ - GL_MESA_pack_invert extension
+ Bug fixes:
+ - fixed GL_LINEAR fog bug by adding clamping
+ - fixed FP exceptions found using Alpha CPU
+ - 3dfx MESA_GLX_FX=window (render to window) didn't work
+ - fixed memory leak in wglCreateContest (Karl Schultz)
+ - define GLAPIENTRY and GLAPI if undefined in glu.h
+ - wglGetProcAddress didn't handle all API functions
+ - when testing for OpenGL 1.2 vs 1.3, check for GL_ARB_texture_cube_map
+ - removed GL_MAX_CONVOLUTION_WIDTH/HEIGHT from glGetInteger/Float/etc()
+ - error checking in compressed tex image functions had some glitches
+ - fixed AIX compile problem in src/config.c
+ - glGetTexImage was using pixel unpacking instead of packing params
+ - auto-mipmap generation for cube maps was incorrect
+ Changes:
+ - max texture units reduced to six to accomodate texture rectangles
+ - removed unfinished GL_MESA_sprite_point extension code
diff --git a/xc/extras/Mesa/include/GL/gl.h b/xc/extras/Mesa/include/GL/gl.h
index c226fdc42..c3ff48c48 100644
--- a/xc/extras/Mesa/include/GL/gl.h
+++ b/xc/extras/Mesa/include/GL/gl.h
@@ -1,3 +1,4 @@
+/* $Id: gl.h,v 1.1.1.12 2003/03/25 00:01:16 alanh Exp $ */
/*
* Mesa 3-D graphics library
@@ -62,6 +63,10 @@
# define GLAPIENTRY
#endif /* WIN32 / CYGWIN bracket */
+#if (defined(__BEOS__) && defined(__POWERPC__)) || defined(__QUICKDRAW__)
+# define PRAGMA_EXPORT_SUPPORTED 1
+#endif
+
#if defined(_WIN32) && !defined(_WINGDI_) && !defined(_GNU_H_WINDOWS32_DEFINES) && !defined(OPENSTEP) && !defined(__CYGWIN__)
#include <gl/mesa_wgl.h>
#endif
@@ -2517,21 +2522,50 @@ GLAPI void GLAPIENTRY glTracePointerRangeMESA( const GLvoid* first, const GLvoid
#endif /* GL_MESA_packed_depth_stencil */
-/*
- * ??. GL_MESA_sprite_point
- */
-#ifndef GL_MESA_sprite_point
-#define GL_MESA_sprite_point 1
-#define GL_SPRITE_POINT_MESA 0x8757 /* XXX not finalized! */
+#ifndef GL_MESA_ycbcr_texture
+#define GL_MESA_ycbcr_texture 1
-#endif
+#define GL_YCBCR_MESA 0x8757
+#define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA /* same as Apple */
+#define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB /* same as Apple */
+
+#endif /* GL_MESA_texture_ycbcr */
+
+
+
+#ifndef GL_MESA_pack_invert
+#define GL_MESA_pack_invert 1
+
+#define GL_PACK_INVERT_MESA 0x8758
+
+#endif /* GL_MESA_pack_invert */
+
+
+
+#ifndef GL_APPLE_client_storage
+#define GL_APPLE_client_storage 1
+
+#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2
+
+#endif /* GL_APPLE_client_storage */
+
+
+
+#ifndef GL_APPLE_ycbcr_422
+#define GL_APPLE_ycbcr_422 1
+
+#define GL_YCBCR_422_APPLE 0x85B9
+#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA
+#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB
+
+#endif /* GL_APPLE_ycbcr_422 */
/**********************************************************************
* Begin system-specific stuff
*/
-#if defined(__BEOS__) || defined(__QUICKDRAW__)
+#if defined(PRAGMA_EXPORT_SUPPORTED)
#pragma export off
#endif
diff --git a/xc/extras/Mesa/include/GL/glxext.h b/xc/extras/Mesa/include/GL/glxext.h
index 54620bd4e..aa899546a 100644
--- a/xc/extras/Mesa/include/GL/glxext.h
+++ b/xc/extras/Mesa/include/GL/glxext.h
@@ -260,6 +260,9 @@ extern "C" {
#ifndef GLX_MESA_release_buffers
#endif
+#ifndef GLX_MESA_agp_offset
+#endif
+
#ifndef GLX_MESA_set_3dfx_mode
#define GLX_3DFX_WINDOW_MODE_MESA 0x1
#define GLX_3DFX_FULLSCREEN_MODE_MESA 0x2
@@ -568,6 +571,14 @@ extern Bool glXSet3DfxModeMESA (int);
typedef Bool ( * PFNGLXSET3DFXMODEMESAPROC) (int mode);
#endif
+#ifndef GLX_MESA_agp_offset
+#define GLX_MESA_agp_offset 1
+#ifdef GLX_GLXEXT_PROTOTYPES
+extern GLuint glXGetAGPOffsetMESA (const GLvoid *);
+#endif /* GLX_GLXEXT_PROTOTYPES */
+typedef GLuint ( * PFNGLXGETAGPOFFSETMESAPROC) (const GLvoid *);
+#endif
+
#ifndef GLX_SGIX_visual_select_group
#define GLX_SGIX_visual_select_group 1
#endif
diff --git a/xc/extras/Mesa/include/GL/xmesa.h b/xc/extras/Mesa/include/GL/xmesa.h
index 056f717bb..67b26ee2c 100644
--- a/xc/extras/Mesa/include/GL/xmesa.h
+++ b/xc/extras/Mesa/include/GL/xmesa.h
@@ -1,3 +1,4 @@
+
/*
* Mesa 3-D graphics library
* Version: 4.0.3
diff --git a/xc/extras/Mesa/src/SPARC/clip.S b/xc/extras/Mesa/src/SPARC/clip.S
index 32c1d8a32..8b12f0956 100644
--- a/xc/extras/Mesa/src/SPARC/clip.S
+++ b/xc/extras/Mesa/src/SPARC/clip.S
@@ -1,4 +1,3 @@
-/* $Id: clip.S,v 1.1.1.1 2002/10/22 13:06:32 alanh Exp $ */
#ifdef __sparc_v9__
#define LDPTR ldx
diff --git a/xc/extras/Mesa/src/SPARC/norm.S b/xc/extras/Mesa/src/SPARC/norm.S
index 65ba2a6fb..85328d9ae 100644
--- a/xc/extras/Mesa/src/SPARC/norm.S
+++ b/xc/extras/Mesa/src/SPARC/norm.S
@@ -1,4 +1,3 @@
-/* $Id: norm.S,v 1.1.1.1 2002/10/22 13:06:33 alanh Exp $ */
#include "sparc_matrix.h"
diff --git a/xc/extras/Mesa/src/SPARC/sparc.c b/xc/extras/Mesa/src/SPARC/sparc.c
index 666f6e918..9fd1c5692 100644
--- a/xc/extras/Mesa/src/SPARC/sparc.c
+++ b/xc/extras/Mesa/src/SPARC/sparc.c
@@ -1,4 +1,3 @@
-/* $Id: sparc.c,v 1.1.1.1 2002/10/22 13:06:32 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/SPARC/sparc.h b/xc/extras/Mesa/src/SPARC/sparc.h
index 624f998fc..a98e4d0e4 100644
--- a/xc/extras/Mesa/src/SPARC/sparc.h
+++ b/xc/extras/Mesa/src/SPARC/sparc.h
@@ -1,4 +1,3 @@
-/* $Id: sparc.h,v 1.1.1.1 2002/10/22 13:06:32 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/SPARC/sparc_matrix.h b/xc/extras/Mesa/src/SPARC/sparc_matrix.h
index bfbab4e32..2d3f067fb 100644
--- a/xc/extras/Mesa/src/SPARC/sparc_matrix.h
+++ b/xc/extras/Mesa/src/SPARC/sparc_matrix.h
@@ -1,4 +1,3 @@
-/* $Id: sparc_matrix.h,v 1.1.1.1 2002/10/22 13:06:33 alanh Exp $ */
#ifndef _SPARC_MATRIX_H
#define _SPARC_MATRIX_H
diff --git a/xc/extras/Mesa/src/SPARC/xform.S b/xc/extras/Mesa/src/SPARC/xform.S
index 1297e9ddd..524bcbd7b 100644
--- a/xc/extras/Mesa/src/SPARC/xform.S
+++ b/xc/extras/Mesa/src/SPARC/xform.S
@@ -1,4 +1,3 @@
-/* $Id: xform.S,v 1.1.1.1 2002/10/22 13:06:36 alanh Exp $ */
/* TODO
*
diff --git a/xc/extras/Mesa/src/Trace/tr_attrib.c b/xc/extras/Mesa/src/Trace/tr_attrib.c
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/xc/extras/Mesa/src/Trace/tr_attrib.c
diff --git a/xc/extras/Mesa/src/Trace/tr_commands.h b/xc/extras/Mesa/src/Trace/tr_commands.h
new file mode 100644
index 000000000..a393f3847
--- /dev/null
+++ b/xc/extras/Mesa/src/Trace/tr_commands.h
@@ -0,0 +1,644 @@
+/* This may look like C code, but it is really -*- C++ -*- */
+/* $Id: tr_commands.h,v 1.1.1.1 2003/03/25 00:02:19 alanh Exp $ */
+
+/*
+ * DebugGL
+ * Version: 1.0
+ *
+ * Copyright (C) 1999-2000 Bernd Kreimeier, Loki Entertainment
+ * 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 TR_COMMANDS_H
+#define TR_COMMANDS_H
+
+
+/**
+ * Enumeration of GL commands, for metafile format
+ * and networking protocol. Has to be re-indexed
+ * if (ever) used as GLX stream. This uses the
+ * Mesa internal values.
+ */
+
+#define CMD_NEWLIST 0
+#define CMD_ENDLIST 1
+#define CMD_CALLLIST 2
+#define CMD_CALLLISTS 3
+#define CMD_DELETELISTS 4
+#define CMD_GENLISTS 5
+#define CMD_LISTBASE 6
+#define CMD_BEGIN 7
+#define CMD_BITMAP 8
+#define CMD_COLOR3B 9
+#define CMD_COLOR3BV 10
+#define CMD_COLOR3D 11
+#define CMD_COLOR3DV 12
+#define CMD_COLOR3F 13
+#define CMD_COLOR3FV 14
+#define CMD_COLOR3I 15
+#define CMD_COLOR3IV 16
+#define CMD_COLOR3S 17
+#define CMD_COLOR3SV 18
+#define CMD_COLOR3UB 19
+#define CMD_COLOR3UBV 20
+#define CMD_COLOR3UI 21
+#define CMD_COLOR3UIV 22
+#define CMD_COLOR3US 23
+#define CMD_COLOR3USV 24
+#define CMD_COLOR4B 25
+#define CMD_COLOR4BV 26
+#define CMD_COLOR4D 27
+#define CMD_COLOR4DV 28
+#define CMD_COLOR4F 29
+#define CMD_COLOR4FV 30
+#define CMD_COLOR4I 31
+#define CMD_COLOR4IV 32
+#define CMD_COLOR4S 33
+#define CMD_COLOR4SV 34
+#define CMD_COLOR4UB 35
+#define CMD_COLOR4UBV 36
+#define CMD_COLOR4UI 37
+#define CMD_COLOR4UIV 38
+#define CMD_COLOR4US 39
+#define CMD_COLOR4USV 40
+#define CMD_EDGEFLAG 41
+#define CMD_EDGEFLAGV 42
+#define CMD_END 43
+#define CMD_INDEXD 44
+#define CMD_INDEXDV 45
+#define CMD_INDEXF 46
+#define CMD_INDEXFV 47
+#define CMD_INDEXI 48
+#define CMD_INDEXIV 49
+#define CMD_INDEXS 50
+#define CMD_INDEXSV 51
+#define CMD_NORMAL3B 52
+#define CMD_NORMAL3BV 53
+#define CMD_NORMAL3D 54
+#define CMD_NORMAL3DV 55
+#define CMD_NORMAL3F 56
+#define CMD_NORMAL3FV 57
+#define CMD_NORMAL3I 58
+#define CMD_NORMAL3IV 59
+#define CMD_NORMAL3S 60
+#define CMD_NORMAL3SV 61
+#define CMD_RASTERPOS2D 62
+#define CMD_RASTERPOS2DV 63
+#define CMD_RASTERPOS2F 64
+#define CMD_RASTERPOS2FV 65
+#define CMD_RASTERPOS2I 66
+#define CMD_RASTERPOS2IV 67
+#define CMD_RASTERPOS2S 68
+#define CMD_RASTERPOS2SV 69
+#define CMD_RASTERPOS3D 70
+#define CMD_RASTERPOS3DV 71
+#define CMD_RASTERPOS3F 72
+#define CMD_RASTERPOS3FV 73
+#define CMD_RASTERPOS3I 74
+#define CMD_RASTERPOS3IV 75
+#define CMD_RASTERPOS3S 76
+#define CMD_RASTERPOS3SV 77
+#define CMD_RASTERPOS4D 78
+#define CMD_RASTERPOS4DV 79
+#define CMD_RASTERPOS4F 80
+#define CMD_RASTERPOS4FV 81
+#define CMD_RASTERPOS4I 82
+#define CMD_RASTERPOS4IV 83
+#define CMD_RASTERPOS4S 84
+#define CMD_RASTERPOS4SV 85
+#define CMD_RECTD 86
+#define CMD_RECTDV 87
+#define CMD_RECTF 88
+#define CMD_RECTFV 89
+#define CMD_RECTI 90
+#define CMD_RECTIV 91
+#define CMD_RECTS 92
+#define CMD_RECTSV 93
+#define CMD_TEXCOORD1D 94
+#define CMD_TEXCOORD1DV 95
+#define CMD_TEXCOORD1F 96
+#define CMD_TEXCOORD1FV 97
+#define CMD_TEXCOORD1I 98
+#define CMD_TEXCOORD1IV 99
+#define CMD_TEXCOORD1S 100
+#define CMD_TEXCOORD1SV 101
+#define CMD_TEXCOORD2D 102
+#define CMD_TEXCOORD2DV 103
+#define CMD_TEXCOORD2F 104
+#define CMD_TEXCOORD2FV 105
+#define CMD_TEXCOORD2I 106
+#define CMD_TEXCOORD2IV 107
+#define CMD_TEXCOORD2S 108
+#define CMD_TEXCOORD2SV 109
+#define CMD_TEXCOORD3D 110
+#define CMD_TEXCOORD3DV 111
+#define CMD_TEXCOORD3F 112
+#define CMD_TEXCOORD3FV 113
+#define CMD_TEXCOORD3I 114
+#define CMD_TEXCOORD3IV 115
+#define CMD_TEXCOORD3S 116
+#define CMD_TEXCOORD3SV 117
+#define CMD_TEXCOORD4D 118
+#define CMD_TEXCOORD4DV 119
+#define CMD_TEXCOORD4F 120
+#define CMD_TEXCOORD4FV 121
+#define CMD_TEXCOORD4I 122
+#define CMD_TEXCOORD4IV 123
+#define CMD_TEXCOORD4S 124
+#define CMD_TEXCOORD4SV 125
+#define CMD_VERTEX2D 126
+#define CMD_VERTEX2DV 127
+#define CMD_VERTEX2F 128
+#define CMD_VERTEX2FV 129
+#define CMD_VERTEX2I 130
+#define CMD_VERTEX2IV 131
+#define CMD_VERTEX2S 132
+#define CMD_VERTEX2SV 133
+#define CMD_VERTEX3D 134
+#define CMD_VERTEX3DV 135
+#define CMD_VERTEX3F 136
+#define CMD_VERTEX3FV 137
+#define CMD_VERTEX3I 138
+#define CMD_VERTEX3IV 139
+#define CMD_VERTEX3S 140
+#define CMD_VERTEX3SV 141
+#define CMD_VERTEX4D 142
+#define CMD_VERTEX4DV 143
+#define CMD_VERTEX4F 144
+#define CMD_VERTEX4FV 145
+#define CMD_VERTEX4I 146
+#define CMD_VERTEX4IV 147
+#define CMD_VERTEX4S 148
+#define CMD_VERTEX4SV 149
+#define CMD_CLIPPLANE 150
+#define CMD_COLORMATERIAL 151
+#define CMD_CULLFACE 152
+#define CMD_FOGF 153
+#define CMD_FOGFV 154
+#define CMD_FOGI 155
+#define CMD_FOGIV 156
+#define CMD_FRONTFACE 157
+#define CMD_HINT 158
+#define CMD_LIGHTF 159
+#define CMD_LIGHTFV 160
+#define CMD_LIGHTI 161
+#define CMD_LIGHTIV 162
+#define CMD_LIGHTMODELF 163
+#define CMD_LIGHTMODELFV 164
+#define CMD_LIGHTMODELI 165
+#define CMD_LIGHTMODELIV 166
+#define CMD_LINESTIPPLE 167
+#define CMD_LINEWIDTH 168
+#define CMD_MATERIALF 169
+#define CMD_MATERIALFV 170
+#define CMD_MATERIALI 171
+#define CMD_MATERIALIV 172
+#define CMD_POINTSIZE 173
+#define CMD_POLYGONMODE 174
+#define CMD_POLYGONSTIPPLE 175
+#define CMD_SCISSOR 176
+#define CMD_SHADEMODEL 177
+#define CMD_TEXPARAMETERF 178
+#define CMD_TEXPARAMETERFV 179
+#define CMD_TEXPARAMETERI 180
+#define CMD_TEXPARAMETERIV 181
+#define CMD_TEXIMAGE1D 182
+#define CMD_TEXIMAGE2D 183
+#define CMD_TEXENVF 184
+#define CMD_TEXENVFV 185
+#define CMD_TEXENVI 186
+#define CMD_TEXENVIV 187
+#define CMD_TEXGEND 188
+#define CMD_TEXGENDV 189
+#define CMD_TEXGENF 190
+#define CMD_TEXGENFV 191
+#define CMD_TEXGENI 192
+#define CMD_TEXGENIV 193
+#define CMD_FEEDBACKBUFFER 194
+#define CMD_SELECTBUFFER 195
+#define CMD_RENDERMODE 196
+#define CMD_INITNAMES 197
+#define CMD_LOADNAME 198
+#define CMD_PASSTHROUGH 199
+#define CMD_POPNAME 200
+#define CMD_PUSHNAME 201
+#define CMD_DRAWBUFFER 202
+#define CMD_CLEAR 203
+#define CMD_CLEARACCUM 204
+#define CMD_CLEARINDEX 205
+#define CMD_CLEARCOLOR 206
+#define CMD_CLEARSTENCIL 207
+#define CMD_CLEARDEPTH 208
+#define CMD_STENCILMASK 209
+#define CMD_COLORMASK 210
+#define CMD_DEPTHMASK 211
+#define CMD_INDEXMASK 212
+#define CMD_ACCUM 213
+#define CMD_DISABLE 214
+#define CMD_ENABLE 215
+#define CMD_FINISH 216
+#define CMD_FLUSH 217
+#define CMD_POPATTRIB 218
+#define CMD_PUSHATTRIB 219
+#define CMD_MAP1D 220
+#define CMD_MAP1F 221
+#define CMD_MAP2D 222
+#define CMD_MAP2F 223
+#define CMD_MAPGRID1D 224
+#define CMD_MAPGRID1F 225
+#define CMD_MAPGRID2D 226
+#define CMD_MAPGRID2F 227
+#define CMD_EVALCOORD1D 228
+#define CMD_EVALCOORD1DV 229
+#define CMD_EVALCOORD1F 230
+#define CMD_EVALCOORD1FV 231
+#define CMD_EVALCOORD2D 232
+#define CMD_EVALCOORD2DV 233
+#define CMD_EVALCOORD2F 234
+#define CMD_EVALCOORD2FV 235
+#define CMD_EVALMESH1 236
+#define CMD_EVALPOINT1 237
+#define CMD_EVALMESH2 238
+#define CMD_EVALPOINT2 239
+#define CMD_ALPHAFUNC 240
+#define CMD_BLENDFUNC 241
+#define CMD_LOGICOP 242
+#define CMD_STENCILFUNC 243
+#define CMD_STENCILOP 244
+#define CMD_DEPTHFUNC 245
+#define CMD_PIXELZOOM 246
+#define CMD_PIXELTRANSFERF 247
+#define CMD_PIXELTRANSFERI 248
+#define CMD_PIXELSTOREF 249
+#define CMD_PIXELSTOREI 250
+#define CMD_PIXELMAPFV 251
+#define CMD_PIXELMAPUIV 252
+#define CMD_PIXELMAPUSV 253
+#define CMD_READBUFFER 254
+#define CMD_COPYPIXELS 255
+#define CMD_READPIXELS 256
+#define CMD_DRAWPIXELS 257
+#define CMD_GETBOOLEANV 258
+#define CMD_GETCLIPPLANE 259
+#define CMD_GETDOUBLEV 260
+#define CMD_GETERROR 261
+#define CMD_GETFLOATV 262
+#define CMD_GETINTEGERV 263
+#define CMD_GETLIGHTFV 264
+#define CMD_GETLIGHTIV 265
+#define CMD_GETMAPDV 266
+#define CMD_GETMAPFV 267
+#define CMD_GETMAPIV 268
+#define CMD_GETMATERIALFV 269
+#define CMD_GETMATERIALIV 270
+#define CMD_GETPIXELMAPFV 271
+#define CMD_GETPIXELMAPUIV 272
+#define CMD_GETPIXELMAPUSV 273
+#define CMD_GETPOLYGONSTIPPLE 274
+#define CMD_GETSTRING 275
+#define CMD_GETTEXENVFV 276
+#define CMD_GETTEXENVIV 277
+#define CMD_GETTEXGENDV 278
+#define CMD_GETTEXGENFV 279
+#define CMD_GETTEXGENIV 280
+#define CMD_GETTEXIMAGE 281
+#define CMD_GETTEXPARAMETERFV 282
+#define CMD_GETTEXPARAMETERIV 283
+#define CMD_GETTEXLEVELPARAMETERFV 284
+#define CMD_GETTEXLEVELPARAMETERIV 285
+#define CMD_ISENABLED 286
+#define CMD_ISLIST 287
+#define CMD_DEPTHRANGE 288
+#define CMD_FRUSTUM 289
+#define CMD_LOADIDENTITY 290
+#define CMD_LOADMATRIXF 291
+#define CMD_LOADMATRIXD 292
+#define CMD_MATRIXMODE 293
+#define CMD_MULTMATRIXF 294
+#define CMD_MULTMATRIXD 295
+#define CMD_ORTHO 296
+#define CMD_POPMATRIX 297
+#define CMD_PUSHMATRIX 298
+#define CMD_ROTATED 299
+#define CMD_ROTATEF 300
+#define CMD_SCALED 301
+#define CMD_SCALEF 302
+#define CMD_TRANSLATED 303
+#define CMD_TRANSLATEF 304
+#define CMD_VIEWPORT 305
+#define CMD_ARRAYELEMENT 306
+#define CMD_BINDTEXTURE 307
+#define CMD_COLORPOINTER 308
+#define CMD_DISABLECLIENTSTATE 309
+#define CMD_DRAWARRAYS 310
+#define CMD_DRAWELEMENTS 311
+#define CMD_EDGEFLAGPOINTER 312
+#define CMD_ENABLECLIENTSTATE 313
+#define CMD_INDEXPOINTER 314
+#define CMD_INDEXUB 315
+#define CMD_INDEXUBV 316
+#define CMD_INTERLEAVEDARRAYS 317
+#define CMD_NORMALPOINTER 318
+#define CMD_POLYGONOFFSET 319
+#define CMD_TEXCOORDPOINTER 320
+#define CMD_VERTEXPOINTER 321
+#define CMD_ARETEXTURESRESIDENT 322
+#define CMD_COPYTEXIMAGE1D 323
+#define CMD_COPYTEXIMAGE2D 324
+#define CMD_COPYTEXSUBIMAGE1D 325
+#define CMD_COPYTEXSUBIMAGE2D 326
+#define CMD_DELETETEXTURES 327
+#define CMD_GENTEXTURES 328
+#define CMD_GETPOINTERV 329
+#define CMD_ISTEXTURE 330
+#define CMD_PRIORITIZETEXTURES 331
+#define CMD_TEXSUBIMAGE1D 332
+#define CMD_TEXSUBIMAGE2D 333
+#define CMD_POPCLIENTATTRIB 334
+#define CMD_PUSHCLIENTATTRIB 335
+#define CMD_BLENDCOLOR 336
+#define CMD_BLENDEQUATION 337
+#define CMD_DRAWRANGEELEMENTS 338
+#define CMD_COLORTABLE 339
+#define CMD_COLORTABLEPARAMETERFV 340
+#define CMD_COLORTABLEPARAMETERIV 341
+#define CMD_COPYCOLORTABLE 342
+#define CMD_GETCOLORTABLE 343
+#define CMD_GETCOLORTABLEPARAMETERFV 344
+#define CMD_GETCOLORTABLEPARAMETERIV 345
+#define CMD_COLORSUBTABLE 346
+#define CMD_COPYCOLORSUBTABLE 347
+#define CMD_CONVOLUTIONFILTER1D 348
+#define CMD_CONVOLUTIONFILTER2D 349
+#define CMD_CONVOLUTIONPARAMETERF 350
+#define CMD_CONVOLUTIONPARAMETERFV 351
+#define CMD_CONVOLUTIONPARAMETERI 352
+#define CMD_CONVOLUTIONPARAMETERIV 353
+#define CMD_COPYCONVOLUTIONFILTER1D 354
+#define CMD_COPYCONVOLUTIONFILTER2D 355
+#define CMD_GETCONVOLUTIONFILTER 356
+#define CMD_GETCONVOLUTIONPARAMETERFV 357
+#define CMD_GETCONVOLUTIONPARAMETERIV 358
+#define CMD_GETSEPARABLEFILTER 359
+#define CMD_SEPARABLEFILTER2D 360
+#define CMD_GETHISTOGRAM 361
+#define CMD_GETHISTOGRAMPARAMETERFV 362
+#define CMD_GETHISTOGRAMPARAMETERIV 363
+#define CMD_GETMINMAX 364
+#define CMD_GETMINMAXPARAMETERFV 365
+#define CMD_GETMINMAXPARAMETERIV 366
+#define CMD_HISTOGRAM 367
+#define CMD_MINMAX 368
+#define CMD_RESETHISTOGRAM 369
+#define CMD_RESETMINMAX 370
+#define CMD_TEXIMAGE3D 371
+#define CMD_TEXSUBIMAGE3D 372
+#define CMD_COPYTEXSUBIMAGE3D 373
+#define CMD_ACTIVETEXTUREARB 374
+#define CMD_CLIENTACTIVETEXTUREARB 375
+#define CMD_MULTITEXCOORD1DARB 376
+#define CMD_MULTITEXCOORD1DVARB 377
+#define CMD_MULTITEXCOORD1FARB 378
+#define CMD_MULTITEXCOORD1FVARB 379
+#define CMD_MULTITEXCOORD1IARB 380
+#define CMD_MULTITEXCOORD1IVARB 381
+#define CMD_MULTITEXCOORD1SARB 382
+#define CMD_MULTITEXCOORD1SVARB 383
+#define CMD_MULTITEXCOORD2DARB 384
+#define CMD_MULTITEXCOORD2DVARB 385
+#define CMD_MULTITEXCOORD2FARB 386
+#define CMD_MULTITEXCOORD2FVARB 387
+#define CMD_MULTITEXCOORD2IARB 388
+#define CMD_MULTITEXCOORD2IVARB 389
+#define CMD_MULTITEXCOORD2SARB 390
+#define CMD_MULTITEXCOORD2SVARB 391
+#define CMD_MULTITEXCOORD3DARB 392
+#define CMD_MULTITEXCOORD3DVARB 393
+#define CMD_MULTITEXCOORD3FARB 394
+#define CMD_MULTITEXCOORD3FVARB 395
+#define CMD_MULTITEXCOORD3IARB 396
+#define CMD_MULTITEXCOORD3IVARB 397
+#define CMD_MULTITEXCOORD3SARB 398
+#define CMD_MULTITEXCOORD3SVARB 399
+#define CMD_MULTITEXCOORD4DARB 400
+#define CMD_MULTITEXCOORD4DVARB 401
+#define CMD_MULTITEXCOORD4FARB 402
+#define CMD_MULTITEXCOORD4FVARB 403
+#define CMD_MULTITEXCOORD4IARB 404
+#define CMD_MULTITEXCOORD4IVARB 405
+#define CMD_MULTITEXCOORD4SARB 406
+#define CMD_MULTITEXCOORD4SVARB 407
+#define CMD_LOADTRANSPOSEMATRIXFARB 408
+#define CMD_LOADTRANSPOSEMATRIXDARB 409
+#define CMD_MULTTRANSPOSEMATRIXFARB 410
+#define CMD_MULTTRANSPOSEMATRIXDARB 411
+#define CMD_SAMPLECOVERAGEARB 412
+#define CMD_SAMPLEPASSARB 413
+#define CMD_POLYGONOFFSETEXT 414
+#define CMD_GETTEXFILTERFUNCSGIS 415
+#define CMD_TEXFILTERFUNCSGIS 416
+#define CMD_GETHISTOGRAMEXT 417
+#define CMD_GETHISTOGRAMPARAMETERFVEXT 418
+#define CMD_GETHISTOGRAMPARAMETERIVEXT 419
+#define CMD_GETMINMAXEXT 420
+#define CMD_GETMINMAXPARAMETERFVEXT 421
+#define CMD_GETMINMAXPARAMETERIVEXT 422
+#define CMD_GETCONVOLUTIONFILTEREXT 423
+#define CMD_GETCONVOLUTIONPARAMETERFVEXT 424
+#define CMD_GETCONVOLUTIONPARAMETERIVEXT 425
+#define CMD_GETSEPARABLEFILTEREXT 426
+#define CMD_GETCOLORTABLESGI 427
+#define CMD_GETCOLORTABLEPARAMETERFVSGI 428
+#define CMD_GETCOLORTABLEPARAMETERIVSGI 429
+#define CMD_PIXELTEXGENSGIX 430
+#define CMD_PIXELTEXGENPARAMETERISGIS 431
+#define CMD_PIXELTEXGENPARAMETERIVSGIS 432
+#define CMD_PIXELTEXGENPARAMETERFSGIS 433
+#define CMD_PIXELTEXGENPARAMETERFVSGIS 434
+#define CMD_GETPIXELTexGenPARAMETERIVSGIS 435
+#define CMD_GETPIXELTexGenPARAMETERFVSGIS 436
+#define CMD_TEXIMAGE4DSGIS 437
+#define CMD_TEXSUBIMAGE4DSGIS 438
+#define CMD_ARETEXTURESRESIDENTEXT 439
+#define CMD_GENTEXTURESEXT 440
+#define CMD_ISTEXTUREEXT 441
+#define CMD_DETAILTEXFUNCSGIS 442
+#define CMD_GETDETAILTEXFUNCSGIS 443
+#define CMD_SHARPENTEXFUNCSGIS 444
+#define CMD_GETSHARPENTEXFUNCSGIS 445
+#define CMD_SAMPLEMASKSGIS 446
+#define CMD_SAMPLEPATTERNSGIS 447
+#define CMD_COLORPOINTEREXT 448
+#define CMD_EDGEFLAGPOINTEREXT 449
+#define CMD_INDEXPOINTEREXT 450
+#define CMD_NORMALPOINTEREXT 451
+#define CMD_TEXCOORDPOINTEREXT 452
+#define CMD_VERTEXPOINTEREXT 453
+#define CMD_SPRITEPARAMETERFSGIX 454
+#define CMD_SPRITEPARAMETERFVSGIX 455
+#define CMD_SPRITEPARAMETERISGIX 456
+#define CMD_SPRITEPARAMETERIVSGIX 457
+#define CMD_POINTPARAMETERFEXT 458
+#define CMD_POINTPARAMETERFVEXT 459
+#define CMD_GETINSTRUMENTSSGIX 460
+#define CMD_INSTRUMENTSBUFFERSGIX 461
+#define CMD_POLLINSTRUMENTSSGIX 462
+#define CMD_READINSTRUMENTSSGIX 463
+#define CMD_STARTINSTRUMENTSSGIX 464
+#define CMD_STOPINSTRUMENTSSGIX 465
+#define CMD_FRAMEZOOMSGIX 466
+#define CMD_TAGSAMPLEBUFFERSGIX 467
+#define CMD_REFERENCEPLANESGIX 468
+#define CMD_FLUSHRASTERSGIX 469
+#define CMD_GETLISTPARAMETERFVSGIX 470
+#define CMD_GETLISTPARAMETERIVSGIX 471
+#define CMD_LISTPARAMETERFSGIX 472
+#define CMD_LISTPARAMETERFVSGIX 473
+#define CMD_LISTPARAMETERISGIX 474
+#define CMD_LISTPARAMETERIVSGIX 475
+#define CMD_FRAGMENTCOLORMATERIALSGIX 476
+#define CMD_FRAGMENTLIGHTFSGIX 477
+#define CMD_FRAGMENTLIGHTFVSGIX 478
+#define CMD_FRAGMENTLIGHTISGIX 479
+#define CMD_FRAGMENTLIGHTIVSGIX 480
+#define CMD_FRAGMENTLIGHTMODELFSGIX 481
+#define CMD_FRAGMENTLIGHTMODELFVSGIX 482
+#define CMD_FRAGMENTLIGHTMODELISGIX 483
+#define CMD_FRAGMENTLIGHTMODELIVSGIX 484
+#define CMD_FRAGMENTMATERIALFSGIX 485
+#define CMD_FRAGMENTMATERIALFVSGIX 486
+#define CMD_FRAGMENTMATERIALISGIX 487
+#define CMD_FRAGMENTMATERIALIVSGIX 488
+#define CMD_GETFRAGMENTLIGHTFVSGIX 489
+#define CMD_GETFRAGMENTLIGHTIVSGIX 490
+#define CMD_GETFRAGMENTMATERIALFVSGIX 491
+#define CMD_GETFRAGMENTMATERIALIVSGIX 492
+#define CMD_LIGHTENVISGIX 493
+#define CMD_VERTEXWEIGHTFEXT 494
+#define CMD_VERTEXWEIGHTFVEXT 495
+#define CMD_VERTEXWEIGHTPOINTEREXT 496
+#define CMD_FLUSHVERTEXARRAYRANGENV 497
+#define CMD_VERTEXARRAYRANGENV 498
+#define CMD_COMBINERPARAMETERFVNV 499
+#define CMD_COMBINERPARAMETERFNV 500
+#define CMD_COMBINERPARAMETERIVNV 501
+#define CMD_COMBINERPARAMETERINV 502
+#define CMD_COMBINERINPUTNV 503
+#define CMD_COMBINEROUTPUTNV 504
+#define CMD_FINALCOMBINERINPUTNV 505
+#define CMD_GETCOMBINERINPUTPARAMETERFVNV 506
+#define CMD_GETCOMBINERINPUTPARAMETERIVNV 507
+#define CMD_GETCOMBINEROUTPUTPARAMETERFVNV 508
+#define CMD_GETCOMBINEROUTPUTPARAMETERIVNV 509
+#define CMD_GETFINALCOMBINERINPUTPARAMETERFVNV 510
+#define CMD_GETFINALCOMBINERINPUTPARAMETERIVNV 511
+#define CMD_RESIZEBUFFERSMESA 512
+#define CMD_WINDOWPOS2DMESA 513
+#define CMD_WINDOWPOS2DVMESA 514
+#define CMD_WINDOWPOS2FMESA 515
+#define CMD_WINDOWPOS2FVMESA 516
+#define CMD_WINDOWPOS2IMESA 517
+#define CMD_WINDOWPOS2IVMESA 518
+#define CMD_WINDOWPOS2SMESA 519
+#define CMD_WINDOWPOS2SVMESA 520
+#define CMD_WINDOWPOS3DMESA 521
+#define CMD_WINDOWPOS3DVMESA 522
+#define CMD_WINDOWPOS3FMESA 523
+#define CMD_WINDOWPOS3FVMESA 524
+#define CMD_WINDOWPOS3IMESA 525
+#define CMD_WINDOWPOS3IVMESA 526
+#define CMD_WINDOWPOS3SMESA 527
+#define CMD_WINDOWPOS3SVMESA 528
+#define CMD_WINDOWPOS4DMESA 529
+#define CMD_WINDOWPOS4DVMESA 530
+#define CMD_WINDOWPOS4FMESA 531
+#define CMD_WINDOWPOS4FVMESA 532
+#define CMD_WINDOWPOS4IMESA 533
+#define CMD_WINDOWPOS4IVMESA 534
+#define CMD_WINDOWPOS4SMESA 535
+#define CMD_WINDOWPOS4SVMESA 536
+#define CMD_BLENDFUNCSEPARATEEXT 537
+#define CMD_INDEXMATERIALEXT 538
+#define CMD_INDEXFUNCEXT 539
+#define CMD_LOCKARRAYSEXT 540
+#define CMD_UNLOCKARRAYSEXT 541
+#define CMD_CULLPARAMETERDVEXT 542
+#define CMD_CULLPARAMETERFVEXT 543
+#define CMD_HINTPGI 544
+#define CMD_FOGCOORDFEXT 545
+#define CMD_FOGCOORDFVEXT 546
+#define CMD_FOGCOORDDEXT 547
+#define CMD_FOGCOORDDVEXT 548
+#define CMD_FOGCOORDPOINTEREXT 549
+#define CMD_GETCOLORTABLEEXT 550
+#define CMD_GETCOLORTABLEPARAMETERIVEXT 551
+#define CMD_GETCOLORTABLEPARAMETERFVEXT 552
+
+
+/* FIXME: Trace Extension itself - not yet defined. */
+#define CMD_NEWTRACEMESA 666
+#define CMD_ENDTRACEMESA 667
+#define CMD_TRACECOMMENTMESA 668
+
+
+
+/**
+ * Enumeration of non-GL entries in trace stream.
+ * This is (static) variable and "various" data,
+ * some of which optional. All these values are
+ * negative.
+ */
+#define VAR_VERSION -1 /* Metafile version. Mandatory. */
+#define VAR_CYCLES -2 /* Profiling, CPU cycles. Optional. */
+#define VAR_CONTEXT -3 /* Context ID. Optional. */
+#define VAR_THREAD -4 /* Thread ID. Optional. */
+#define VAR_STRING -5 /* Internally generated. Optional. */
+
+#define VAR_COLORELEMENT -6
+#define VAR_EDGEFLAGELEMENT -7
+#define VAR_INDEXELEMENT -8
+#define VAR_NORMALELEMENT -9
+#define VAR_TEXCOORDELEMENT -10
+#define VAR_VERTEXELEMENT -11 /* Dereferenced Vertex Array Data. */
+
+
+/* FIXME: more VAR_ as needed. */
+/*
+ * Mindbender - The following two vars are needed to surround the queries
+ * performed when the trace context is in a half initialized
+ * state.
+ */
+#define VAR_OOBBEGIN -14
+#define VAR_OOBEND -15
+
+/*
+ * Mindbender - These are needed when the pointer changes through one of the
+ * XXXPointer calls. Change these as needed.
+ */
+#define VAR_COLORPOINTER -8
+#define VAR_EDGEFLAGPOINTER -9
+#define VAR_INDEXPOINTER -10
+#define VAR_NORMALPOINTER -11
+#define VAR_TEXCOORDPOINTER -12
+#define VAR_VERTEXPOINTER -13
+
+
+#endif
diff --git a/xc/extras/Mesa/src/Trace/tr_context.c b/xc/extras/Mesa/src/Trace/tr_context.c
new file mode 100644
index 000000000..df60240a1
--- /dev/null
+++ b/xc/extras/Mesa/src/Trace/tr_context.c
@@ -0,0 +1,118 @@
+#ifdef MESA_TRACE
+
+#include "glheader.h"
+#include "glapi.h"
+#include "glapitable.h"
+#include "context.h"
+#include "tr_context.h"
+
+
+/* Full precision on floats/double, else human readable. */
+#define TR_FULL_PRECISION 0x000000001
+
+
+void trInitContext( trace_context_t * tr_context )
+{
+ int i;
+
+ if (!tr_context)
+ return;
+
+ tr_context->traceEnabled = GL_FALSE;
+ tr_context->logFP = stdout;
+ tr_context->traceName = NULL;
+
+ tr_context->traceAttribLogBits = GL_ALL_ATTRIB_BITS;
+ tr_context->traceEnableLogBits = GL_TRACE_ALL_BITS_MESA;
+
+ tr_context->betweenBeginEnd = GL_FALSE;
+
+ tr_context->framecounter = 0;
+
+ tr_context->trDoPrint = GL_TRUE;
+ tr_context->doExec = GL_TRUE;
+ tr_context->check_errors = GL_TRUE;
+
+ tr_context->head_errors = 0;
+ tr_context->tail_errors = 0;
+
+ for( i = 0; i < TR_MAX_QUEUED_ERRORS; i++ ) {
+ tr_context->cached_errors[i] = GL_NO_ERROR;
+ }
+
+#if 0
+ tr_context->doAsserts = GL_TRUE;
+ tr_context->clientStateValid = GL_FALSE;
+#endif
+}
+
+
+/**
+ * Get the current context.
+ */
+trace_context_t* trCtx() {
+ GLcontext * ctx;
+ ctx = (GLcontext *)_glapi_get_context();
+
+ assert(ctx);
+ assert(ctx->TraceCtx);
+ if( (!ctx) || !(ctx->TraceCtx) ) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, __FUNCTION__ );
+ return NULL;
+ }
+
+ return ctx->TraceCtx;
+}
+
+
+/**
+ * Get the current, real dispatch table pointer.
+ */
+struct _glapi_table* trGetDispatch() {
+ return _glapi_get_dispatch();
+}
+
+
+void trSetTraceDispatch( void ) {
+ GLcontext * ctx;
+ ctx = (GLcontext *)_glapi_get_context();
+
+ assert( ctx );
+ assert( ctx->TraceCtx );
+ assert( ctx->TraceDispatch );
+
+ ctx->TraceCtx->traceEnabled = GL_TRUE;
+
+ /* XXX save returned value */
+ (void) _glapi_begin_dispatch_override(ctx->TraceDispatch);
+}
+
+
+void trSetOriginalDispatch( void ) {
+ GLcontext * ctx;
+ ctx = (GLcontext *)_glapi_get_context();
+
+ assert( ctx );
+ assert( ctx->TraceCtx );
+ assert( ctx->TraceDispatch );
+
+ ctx->TraceCtx->traceEnabled = GL_FALSE;
+
+ /* XXX pass value we got from _glapi_begin_dispatch_override() */
+ _glapi_end_dispatch_override(1);
+}
+
+
+/**
+ * Is error checking enabled?
+ */
+GLboolean trDoErrorCheck() {
+ return trCtx()->check_errors;
+}
+
+#else
+extern void tr_context_dummy_func(void);
+void tr_context_dummy_func(void)
+{
+}
+#endif
diff --git a/xc/extras/Mesa/src/Trace/tr_context.h b/xc/extras/Mesa/src/Trace/tr_context.h
new file mode 100644
index 000000000..68e78734d
--- /dev/null
+++ b/xc/extras/Mesa/src/Trace/tr_context.h
@@ -0,0 +1,80 @@
+#ifndef TR_CONTEXT_H
+#define TR_CONTEXT_H
+
+#include "glheader.h"
+#include "glapitable.h"
+
+#define TR_MAX_QUEUED_ERRORS 8
+
+
+/**
+ * State Variables.
+ * To make this thread-safe we'd maintain such
+ * a set per thread/context.
+ */
+typedef struct t_t{
+
+ GLboolean traceEnabled;
+
+ /* The current log file pointer. */
+ FILE * logFP;
+
+ char * traceName;
+
+ /* What frame we're currently on. */
+ GLint framecounter;
+
+ /* Not yet used. This field will control which attributes should be logged. */
+ GLbitfield traceAttribLogBits;
+
+ GLbitfield traceEnableLogBits;
+
+ /* Used to short-circuit writing to the file, if the disk is full */
+ GLboolean trDoPrint;
+
+ /* Used to toggle whether the gl command should
+ * actually be executed. For now this will always be true.
+ */
+ GLboolean doExec;
+
+ /* Verify GL_NO_ERROR wherever possible. */
+ GLboolean check_errors;
+
+ /* Loop over all GL errors.
+ * TODO: We have to make sure the application gets
+ * the exact same errors despite our checking.
+ * That basically means we have to queue all
+ * errors from our internal checks.
+ */
+ GLint head_errors;
+ GLint tail_errors;
+
+ GLenum cached_errors[TR_MAX_QUEUED_ERRORS];
+
+ /* Not yet used. The 1st of many state flags used to
+ * track the current state of the GL state machine.
+ */
+ GLboolean betweenBeginEnd;
+
+#if 0
+ GLboolean doAsserts;
+ GLboolean clientStateValid;
+#endif
+
+} trace_context_t;
+
+
+extern void trInitContext( trace_context_t * tr_context );
+
+extern trace_context_t* trCtx( void );
+
+extern struct _glapi_table* trGetDispatch( void );
+
+extern void trSetTraceDispatch( void );
+
+extern void trSetOriginalDispatch( void );
+
+extern GLboolean trDoErrorCheck( void );
+
+
+#endif
diff --git a/xc/extras/Mesa/src/Trace/tr_control.c b/xc/extras/Mesa/src/Trace/tr_control.c
new file mode 100644
index 000000000..ff67b15c3
--- /dev/null
+++ b/xc/extras/Mesa/src/Trace/tr_control.c
@@ -0,0 +1,147 @@
+#ifdef MESA_TRACE
+#include "glheader.h"
+#include "glapi.h"
+#include "context.h" /* for _mesa_error */
+#include "mtypes.h"
+#include "tr_context.h"
+#include "tr_write.h"
+
+
+void glEnableTraceMESA( GLbitfield mask )
+{
+ trace_context_t * tctx = trCtx();
+
+ tctx->traceEnableLogBits = mask;
+ tctx->traceEnabled = GL_TRUE;
+}
+
+
+void glDisableTraceMESA( GLbitfield mask )
+{
+ /* Reset traceEnableLogBits ? */
+ trCtx()->traceEnabled = GL_FALSE;
+}
+
+
+void glNewTraceMESA( GLbitfield logbits, const GLubyte * traceName )
+{
+ char * newname;
+ GLint length;
+ GLcontext * ctx;
+ const char * defaultName = "traceGL";
+
+ ctx = (GLcontext *)_glapi_get_context();
+
+ assert(ctx);
+ assert(ctx->TraceCtx);
+ assert(ctx->TraceDispatch);
+ if( !ctx || /* Do we even have a context ? */
+ (ctx->TraceCtx->betweenBeginEnd == GL_TRUE) || /* Are we currently between glBegin and glEnd ? */
+ (ctx->TraceDispatch == _glapi_get_override_dispatch(1)) ) { /* Has a trace already started ? */
+ _mesa_error(ctx, GL_INVALID_OPERATION, __FUNCTION__ );
+ return;
+ }
+
+ /* FIXME!!! When do we free tracename after the app is finished? */
+ if( ctx->TraceCtx->traceName ) {
+ free( ctx->TraceCtx->traceName );
+ }
+
+ length = strlen((char *)traceName) + 1;
+ if( length != 1 ) {
+ newname = (char *)malloc( length );
+ strncpy( (char *)newname, (char *)traceName, length );
+ } else {
+ length = strlen( defaultName );
+ newname = (char *)malloc( length );
+ strncpy( (char *)newname, defaultName, length );
+ }
+ ctx->TraceCtx->traceName = newname;
+ ctx->TraceCtx->traceAttribLogBits = logbits;
+
+ trOpenLogFile();
+ trSetTraceDispatch();
+}
+
+
+void glEndTraceMESA(void)
+{
+ GLcontext * ctx;
+
+ ctx = (GLcontext *)_glapi_get_context();
+ assert(ctx);
+ assert(ctx->TraceCtx);
+ assert(ctx->TraceDispatch);
+
+ /* Do we even have a context ? */
+ /* Are we currently between glBegin and glEnd ? */
+ /* Are we sure the current dispatch _is_ the TraceDispatch ? */
+ if (!ctx ||
+ (ctx->TraceCtx->betweenBeginEnd == GL_TRUE) ||
+ (ctx->TraceDispatch != _glapi_get_override_dispatch(1)) ) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, __FUNCTION__ );
+ return;
+ }
+
+#if 0
+ /* Always dump the max indices */
+// But not yet...
+ trWriteCMD( VAR_COLORPOINTER );
+ trWritei( ctx->TraceCtx->trColorPtrState.maxIndex );
+ trWriteCMD( VAR_EDGEFLAGPOINTER );
+ trWritei( ctx->TraceCtx->trEdgeFlagPtrState.maxIndex );
+ trWriteCMD( VAR_INDEXPOINTER );
+ trWritei( ctx->TraceCtx->trIndexPtrState.maxIndex );
+ trWriteCMD( VAR_NORMALPOINTER );
+ trWritei( ctx->TraceCtx->trNormalPtrState.maxIndex );
+ trWriteCMD( VAR_TEXCOORDPOINTER );
+ trWritei( ctx->TraceCtx->trTexCoordPtrState.maxIndex );
+ trWriteCMD( VAR_VERTEXPOINTER );
+ trWritei( ctx->TraceCtx->trVertexPtrState.maxIndex );
+#endif
+
+ trCloseLogFile();
+ trSetOriginalDispatch();
+}
+
+
+void glTraceAssertAttribMESA( GLbitfield attribMask )
+{
+#warning TraceAssertAttrib not implemented
+}
+
+
+void glTraceCommentMESA( const GLubyte * comment )
+{
+ trWriteString( (char *)comment );
+}
+
+
+void glTraceTextureMESA( GLuint name, const GLubyte* comment )
+{
+#warning TraceTexture not implemented
+}
+
+void glTraceListMESA( GLuint name, const GLubyte* comment )
+{
+#warning TraceList not implemented
+}
+
+
+void glTracePointerMESA( GLvoid* pointer, const GLubyte* comment )
+{
+#warning TracePointer not implemented
+}
+
+
+void glTracePointerRangeMESA( const GLvoid* first, const GLvoid* last, const GLubyte* comment )
+{
+#warning TracePointerRange not implemented
+}
+
+#else
+extern void tr_control_dummy_func(void);
+void tr_control_dummy_func(void)
+{
+}
+#endif
diff --git a/xc/extras/Mesa/src/Trace/tr_error.c b/xc/extras/Mesa/src/Trace/tr_error.c
new file mode 100644
index 000000000..24f439179
--- /dev/null
+++ b/xc/extras/Mesa/src/Trace/tr_error.c
@@ -0,0 +1,40 @@
+#ifdef MESA_TRACE
+
+#include "tr_context.h"
+#include "tr_error.h"
+#include "tr_write.h"
+
+
+/* Have a Begin/End flag, skip checks if in-between. */
+
+
+/**
+ * Some GL implementations cache errors internally,
+ * thus we have to loop until we do not get
+ * any errors.
+ */
+void trError( void ) {
+ int sanity = 0; /* Bail out on endless loops. */
+ GLenum err;
+
+ if( !(trCtx()->check_errors) )
+ return;
+
+ while ( (err=trGetDispatch()->GetError())!=GL_NO_ERROR ) {
+ trWriteEnum(err);
+ sanity++;
+
+ if (sanity > TR_MAX_QUEUED_ERRORS ) {
+ /* Too many errors */
+ return;
+ }
+ }
+}
+
+
+#else
+extern void tr_error_dummy_func(void);
+void tr_error_dummy_func(void)
+{
+}
+#endif
diff --git a/xc/extras/Mesa/src/Trace/tr_error.h b/xc/extras/Mesa/src/Trace/tr_error.h
new file mode 100644
index 000000000..cf445bc88
--- /dev/null
+++ b/xc/extras/Mesa/src/Trace/tr_error.h
@@ -0,0 +1,7 @@
+#ifndef TR_ERROR_H
+#define TR_ERROR_H
+
+extern void trError( void );
+
+#endif
+
diff --git a/xc/extras/Mesa/src/Trace/tr_support.c b/xc/extras/Mesa/src/Trace/tr_support.c
new file mode 100644
index 000000000..8428f108d
--- /dev/null
+++ b/xc/extras/Mesa/src/Trace/tr_support.c
@@ -0,0 +1,584 @@
+#ifdef MESA_TRACE
+
+#include "GL/gl.h"
+#include "tr_context.h"
+#include "tr_support.h"
+#include "tr_write.h"
+
+
+#if 0
+static void trQueryConvolutionState( void ) {
+
+ if( trCtx()->trConvolutionWidth == -1 ) {
+ /* Query it */
+ trWriteCMD( VAR_OOBBEGIN );
+ trGetDispatch()->GetConvolutionParameteriv( GL_SEPARABLE_2D, GL_CONVOLUTION_WIDTH,
+ &(trCtx()->trConvolutionWidth) );
+ trWriteCMD( VAR_OOBEND );
+ }
+
+ if( trCtx()->trConvolutionHeight == -1 ) {
+ /* Query it */
+ trWriteCMD( VAR_OOBBEGIN );
+ trGetDispatch()->GetConvolutionParameteriv( GL_SEPARABLE_2D, GL_CONVOLUTION_HEIGHT,
+ &(trCtx()->trConvolutionHeight) );
+ trWriteCMD( VAR_OOBEND );
+ }
+}
+#endif
+
+
+void trZeroGetterData( GLenum pname, GLsizei typesize, GLvoid * params ) {
+
+ switch( pname ) {
+ case GL_COLOR_MATRIX:
+ case GL_MODELVIEW_MATRIX:
+ case GL_PROJECTION_MATRIX:
+ case GL_TEXTURE_MATRIX:
+ memset( params, 0, typesize * 16 );
+ break;
+
+ case GL_ACCUM_CLEAR_VALUE:
+ case GL_BLEND_COLOR:
+ case GL_COLOR_CLEAR_VALUE:
+ case GL_COLOR_WRITEMASK:
+ case GL_CURRENT_COLOR:
+ case GL_CURRENT_RASTER_COLOR:
+ case GL_CURRENT_RASTER_POSITION:
+ case GL_CURRENT_RASTER_TEXTURE_COORDS:
+ case GL_CURRENT_TEXTURE_COORDS:
+ case GL_LIGHT_MODEL_AMBIENT:
+ case GL_MAP2_GRID_DOMAIN:
+ case GL_SCISSOR_BOX:
+ case GL_VIEWPORT:
+ memset( params, 0, typesize * 4 );
+ break;
+
+ case GL_CURRENT_NORMAL:
+ memset( params, 0, typesize * 3 );
+ break;
+
+ case GL_ALIASED_POINT_SIZE_RANGE:
+ case GL_ALIASED_LINE_WIDTH_RANGE:
+ case GL_DEPTH_RANGE:
+ case GL_MAP1_GRID_DOMAIN:
+ case GL_MAP2_GRID_SEGMENTS:
+ case GL_MAX_VIEWPORT_DIMS:
+ case GL_POLYGON_MODE:
+ case GL_SMOOTH_LINE_WIDTH_RANGE:
+ case GL_SMOOTH_POINT_SIZE_RANGE:
+ memset( params, 0, typesize * 2 );
+ break;
+
+ case GL_ACCUM_ALPHA_BITS:
+ case GL_ACCUM_BLUE_BITS:
+ case GL_ACCUM_GREEN_BITS:
+ case GL_ACCUM_RED_BITS:
+ case GL_ACTIVE_TEXTURE_ARB:
+ case GL_ALPHA_BIAS:
+ case GL_ALPHA_BITS:
+ case GL_ALPHA_SCALE:
+ case GL_ALPHA_TEST:
+ case GL_ALPHA_TEST_FUNC:
+ case GL_ALPHA_TEST_REF:
+ case GL_ATTRIB_STACK_DEPTH:
+ case GL_AUTO_NORMAL:
+ case GL_AUX_BUFFERS:
+ case GL_BLEND:
+ case GL_BLEND_SRC:
+ case GL_BLUE_BIAS:
+ case GL_BLUE_BITS:
+ case GL_BLUE_SCALE:
+ case GL_CLIENT_ACTIVE_TEXTURE_ARB:
+ case GL_CLIENT_ATTRIB_STACK_DEPTH:
+ case GL_CLIP_PLANE0:
+ case GL_CLIP_PLANE1:
+ case GL_CLIP_PLANE2:
+ case GL_CLIP_PLANE3:
+ case GL_CLIP_PLANE4:
+ case GL_CLIP_PLANE5:
+ case GL_COLOR_ARRAY:
+ case GL_COLOR_ARRAY_SIZE:
+ case GL_COLOR_ARRAY_STRIDE:
+ case GL_COLOR_ARRAY_TYPE:
+ case GL_COLOR_LOGIC_OP:
+ case GL_COLOR_MATERIAL:
+ case GL_COLOR_MATERIAL_FACE:
+ case GL_COLOR_MATERIAL_PARAMETER:
+ case GL_COLOR_MATRIX_STACK_DEPTH:
+ case GL_COLOR_TABLE:
+ case GL_CONVOLUTION_1D:
+ case GL_CONVOLUTION_2D:
+ case GL_CULL_FACE:
+ case GL_CULL_FACE_MODE:
+ case GL_CURRENT_INDEX:
+ case GL_CURRENT_RASTER_DISTANCE:
+ case GL_CURRENT_RASTER_INDEX:
+ case GL_CURRENT_RASTER_POSITION_VALID:
+ case GL_DEPTH_BIAS:
+ case GL_DEPTH_CLEAR_VALUE:
+ case GL_DEPTH_FUNC:
+ case GL_DEPTH_SCALE:
+ case GL_DEPTH_TEST:
+ case GL_DEPTH_WRITEMASK:
+ case GL_DITHER:
+ case GL_DOUBLEBUFFER:
+ case GL_DRAW_BUFFER:
+ case GL_EDGE_FLAG:
+ case GL_EDGE_FLAG_ARRAY:
+ case GL_EDGE_FLAG_ARRAY_STRIDE:
+ case GL_FEEDBACK_BUFFER_SIZE:
+ case GL_FEEDBACK_BUFFER_TYPE:
+ case GL_FOG:
+ case GL_FOG_DENSITY:
+ case GL_FOG_END:
+ case GL_FOG_HINT:
+ case GL_FOG_INDEX:
+ case GL_FOG_MODE:
+ case GL_FOG_START:
+ case GL_FRONT_FACE:
+ case GL_GREEN_BIAS:
+ case GL_GREEN_BITS:
+ case GL_GREEN_SCALE:
+ case GL_HISTOGRAM:
+ case GL_INDEX_ARRAY:
+ case GL_INDEX_ARRAY_STRIDE:
+ case GL_INDEX_ARRAY_TYPE:
+ case GL_INDEX_BITS:
+ case GL_INDEX_CLEAR_VALUE:
+ case GL_INDEX_LOGIC_OP:
+ case GL_INDEX_MODE:
+ case GL_INDEX_OFFSET:
+ case GL_INDEX_SHIFT:
+ case GL_INDEX_WRITEMASK:
+ case GL_LIGHT0:
+ case GL_LIGHT1:
+ case GL_LIGHT2:
+ case GL_LIGHT3:
+ case GL_LIGHT4:
+ case GL_LIGHT5:
+ case GL_LIGHT6:
+ case GL_LIGHT7:
+ case GL_LIGHTING:
+ case GL_LIGHT_MODEL_COLOR_CONTROL:
+ case GL_LIGHT_MODEL_LOCAL_VIEWER:
+ case GL_LIGHT_MODEL_TWO_SIDE:
+ case GL_LINE_SMOOTH:
+ case GL_LINE_SMOOTH_HINT:
+ case GL_LINE_STIPPLE:
+ case GL_LINE_STIPPLE_PATTERN:
+ case GL_LINE_STIPPLE_REPEAT:
+ case GL_LINE_WIDTH:
+ case GL_LIST_BASE:
+ case GL_LIST_INDEX:
+ case GL_LIST_MODE:
+ case GL_LOGIC_OP_MODE:
+ case GL_MAP1_COLOR_4:
+ case GL_MAP1_GRID_SEGMENTS:
+ case GL_MAP1_INDEX:
+ case GL_MAP1_NORMAL:
+ case GL_MAP1_TEXTURE_COORD_1:
+ case GL_MAP1_TEXTURE_COORD_2:
+ case GL_MAP1_TEXTURE_COORD_3:
+ case GL_MAP1_TEXTURE_COORD_4:
+ case GL_MAP1_VERTEX_3:
+ case GL_MAP1_VERTEX_4:
+ case GL_MAP2_COLOR_4:
+ case GL_MAP2_INDEX:
+ case GL_MAP2_NORMAL:
+ case GL_MAP2_TEXTURE_COORD_1:
+ case GL_MAP2_TEXTURE_COORD_2:
+ case GL_MAP2_TEXTURE_COORD_3:
+ case GL_MAP2_TEXTURE_COORD_4:
+ case GL_MAP2_VERTEX_3:
+ case GL_MAP2_VERTEX_4:
+ case GL_MAP_COLOR:
+ case GL_MAP_STENCIL:
+ case GL_MATRIX_MODE:
+ case GL_MAX_3D_TEXTURE_SIZE:
+ case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
+ case GL_MAX_ATTRIB_STACK_DEPTH:
+ case GL_MAX_CLIP_PLANES:
+ case GL_MAX_COLOR_MATRIX_STACK_DEPTH:
+ case GL_MAX_ELEMENTS_VERTICES:
+ case GL_MAX_EVAL_ORDER:
+ case GL_MAX_LIGHTS:
+ case GL_MAX_LIST_NESTING:
+ case GL_MAX_MODELVIEW_STACK_DEPTH:
+ case GL_MAX_NAME_STACK_DEPTH:
+ case GL_MAX_PIXEL_MAP_TABLE:
+ case GL_MAX_PROJECTION_STACK_DEPTH:
+ case GL_MAX_TEXTURE_SIZE:
+ case GL_MAX_TEXTURE_STACK_DEPTH:
+ case GL_MAX_TEXTURE_UNITS_ARB:
+ case GL_MINMAX:
+ case GL_MODELVIEW_STACK_DEPTH:
+ case GL_NAME_STACK_DEPTH:
+ case GL_NORMAL_ARRAY:
+ case GL_NORMAL_ARRAY_STRIDE:
+ case GL_NORMAL_ARRAY_TYPE:
+ case GL_NORMALIZE:
+ case GL_PACK_ALIGNMENT:
+ case GL_PACK_IMAGE_HEIGHT:
+ case GL_PACK_LSB_FIRST:
+ case GL_PACK_ROW_LENGTH:
+ case GL_PACK_SKIP_IMAGES:
+ case GL_PACK_SKIP_PIXELS:
+ case GL_PACK_SKIP_ROWS:
+ case GL_PACK_SWAP_BYTES:
+ case GL_PERSPECTIVE_CORRECTION_HINT:
+ case GL_PIXEL_MAP_A_TO_A_SIZE:
+ case GL_PIXEL_MAP_B_TO_B_SIZE:
+ case GL_PIXEL_MAP_G_TO_G_SIZE:
+ case GL_PIXEL_MAP_I_TO_A_SIZE:
+ case GL_PIXEL_MAP_I_TO_B_SIZE:
+ case GL_PIXEL_MAP_I_TO_G_SIZE:
+ case GL_PIXEL_MAP_I_TO_I_SIZE:
+ case GL_PIXEL_MAP_I_TO_R_SIZE:
+ case GL_PIXEL_MAP_R_TO_R_SIZE:
+ case GL_PIXEL_MAP_S_TO_S_SIZE:
+ case GL_POINT_SIZE:
+ case GL_POINT_SMOOTH:
+ case GL_POINT_SMOOTH_HINT:
+ case GL_POLYGON_OFFSET_FACTOR:
+ case GL_POLYGON_OFFSET_UNITS:
+ case GL_POLYGON_OFFSET_FILL:
+ case GL_POLYGON_OFFSET_LINE:
+ case GL_POLYGON_OFFSET_POINT:
+ case GL_POLYGON_SMOOTH:
+ case GL_POLYGON_SMOOTH_HINT:
+ case GL_POLYGON_STIPPLE:
+ case GL_POST_COLOR_MATRIX_COLOR_TABLE:
+ case GL_POST_COLOR_MATRIX_RED_BIAS:
+ case GL_POST_COLOR_MATRIX_GREEN_BIAS:
+ case GL_POST_COLOR_MATRIX_BLUE_BIAS:
+ case GL_POST_COLOR_MATRIX_ALPHA_BIAS:
+ case GL_POST_COLOR_MATRIX_RED_SCALE:
+ case GL_POST_COLOR_MATRIX_GREEN_SCALE:
+ case GL_POST_COLOR_MATRIX_BLUE_SCALE:
+ case GL_POST_COLOR_MATRIX_ALPHA_SCALE:
+ case GL_POST_CONVOLUTION_COLOR_TABLE:
+ case GL_POST_CONVOLUTION_RED_BIAS:
+ case GL_POST_CONVOLUTION_GREEN_BIAS:
+ case GL_POST_CONVOLUTION_BLUE_BIAS:
+ case GL_POST_CONVOLUTION_ALPHA_BIAS:
+ case GL_POST_CONVOLUTION_RED_SCALE:
+ case GL_POST_CONVOLUTION_GREEN_SCALE:
+ case GL_POST_CONVOLUTION_BLUE_SCALE:
+ case GL_POST_CONVOLUTION_ALPHA_SCALE:
+ case GL_PROJECTION_STACK_DEPTH:
+ case GL_READ_BUFFER:
+ case GL_RED_BIAS:
+ case GL_RED_BITS:
+ case GL_RED_SCALE:
+ case GL_RENDER_MODE:
+ case GL_RESCALE_NORMAL:
+ case GL_RGBA_MODE:
+ case GL_SCISSOR_TEST:
+ case GL_SELECTION_BUFFER_SIZE:
+ case GL_SEPARABLE_2D:
+ case GL_SHADE_MODEL:
+ case GL_SMOOTH_LINE_WIDTH_GRANULARITY:
+ case GL_SMOOTH_POINT_SIZE_GRANULARITY:
+ case GL_STENCIL_BITS:
+ case GL_STENCIL_CLEAR_VALUE:
+ case GL_STENCIL_FAIL:
+ case GL_STENCIL_FUNC:
+ case GL_STENCIL_PASS_DEPTH_FAIL:
+ case GL_STENCIL_PASS_DEPTH_PASS:
+ case GL_STENCIL_REF:
+ case GL_STENCIL_TEST:
+ case GL_STENCIL_VALUE_MASK:
+ case GL_STENCIL_WRITEMASK:
+ case GL_STEREO:
+ case GL_SUBPIXEL_BITS:
+ case GL_TEXTURE_1D:
+ case GL_TEXTURE_BINDING_1D:
+ case GL_TEXTURE_2D:
+ case GL_TEXTURE_BINDING_2D:
+ case GL_TEXTURE_3D:
+ case GL_TEXTURE_BINDING_3D:
+ case GL_TEXTURE_COORD_ARRAY:
+ case GL_TEXTURE_COORD_ARRAY_SIZE:
+ case GL_TEXTURE_COORD_ARRAY_STRIDE:
+ case GL_TEXTURE_COORD_ARRAY_TYPE:
+ case GL_TEXTURE_GEN_Q:
+ case GL_TEXTURE_GEN_R:
+ case GL_TEXTURE_GEN_S:
+ case GL_TEXTURE_GEN_T:
+ case GL_TEXTURE_STACK_DEPTH:
+ case GL_UNPACK_ALIGNMENT:
+ case GL_UNPACK_IMAGE_HEIGHT:
+ case GL_UNPACK_LSB_FIRST:
+ case GL_UNPACK_ROW_LENGTH:
+ case GL_UNPACK_SKIP_IMAGES:
+ case GL_UNPACK_SKIP_PIXELS:
+ case GL_UNPACK_SKIP_ROWS:
+ case GL_UNPACK_SWAP_BYTES:
+ case GL_VERTEX_ARRAY:
+ case GL_VERTEX_ARRAY_SIZE:
+ case GL_VERTEX_ARRAY_STRIDE:
+ case GL_VERTEX_ARRAY_TYPE:
+ case GL_ZOOM_X:
+ case GL_ZOOM_Y:
+ memset( params, 0, typesize );
+ break;
+
+ default:
+ /* Bad enum. What should we do? */
+ break;
+ }
+}
+
+
+void trPrintColorTableData( GLenum pname, GLenum type, GLvoid * params ) {
+ if( !(trCtx()->doExec) ) {
+ switch( pname ) {
+ case GL_COLOR_TABLE_SCALE:
+ case GL_COLOR_TABLE_BIAS:
+ if( type == GL_FLOAT ) {
+ memset( params, 0, 4 * sizeof(GLfloat) );
+ } else {
+ memset( params, 0, 4 * sizeof(GLint) );
+ }
+ break;
+
+ case GL_COLOR_TABLE_FORMAT:
+ case GL_COLOR_TABLE_WIDTH:
+ case GL_COLOR_TABLE_RED_SIZE:
+ case GL_COLOR_TABLE_GREEN_SIZE:
+ case GL_COLOR_TABLE_BLUE_SIZE:
+ case GL_COLOR_TABLE_ALPHA_SIZE:
+ case GL_COLOR_TABLE_LUMINANCE_SIZE:
+ case GL_COLOR_TABLE_INTENSITY_SIZE:
+ if( type == GL_FLOAT ) {
+ ((GLfloat *)params)[0] = 0.0;
+ } else {
+ ((GLint *)params)[0] = 0;
+ }
+ break;
+
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+ }
+
+ switch( pname ) {
+ case GL_COLOR_TABLE_SCALE:
+ case GL_COLOR_TABLE_BIAS:
+ if( type == GL_FLOAT ) {
+ trWriteArrayf( 4, (GLfloat *)params );
+ } else {
+ trWriteArrayi( 4, (GLint *)params );
+ }
+ break;
+
+ case GL_COLOR_TABLE_FORMAT:
+ case GL_COLOR_TABLE_WIDTH:
+ case GL_COLOR_TABLE_RED_SIZE:
+ case GL_COLOR_TABLE_GREEN_SIZE:
+ case GL_COLOR_TABLE_BLUE_SIZE:
+ case GL_COLOR_TABLE_ALPHA_SIZE:
+ case GL_COLOR_TABLE_LUMINANCE_SIZE:
+ case GL_COLOR_TABLE_INTENSITY_SIZE:
+ if( type == GL_FLOAT ) {
+ trWritef( ((GLfloat *)params)[0] );
+ } else {
+ trWritei( ((GLint *)params)[0] );
+ }
+ break;
+
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+}
+
+
+void trWriteTypeArray( GLenum type, GLsizei width, GLsizei pixelsize, GLint start, const GLvoid * ptr ) {
+
+ switch( type ) {
+ case GL_BYTE:
+ {
+ GLbyte * p = (GLbyte *)ptr + start * pixelsize;
+ trWriteArrayb( width * pixelsize, p );
+ }
+ break;
+
+ case GL_UNSIGNED_BYTE:
+ case GL_UNSIGNED_BYTE_3_3_2:
+ case GL_UNSIGNED_BYTE_2_3_3_REV:
+ {
+ GLubyte * p = (GLubyte *)ptr + start * pixelsize;
+ trWriteArrayub( width * pixelsize, p );
+ }
+ break;
+
+ case GL_SHORT:
+ {
+ GLshort * p = (GLshort *)ptr + start * pixelsize;
+ trWriteArrays( width * pixelsize, p );
+ }
+ break;
+
+ case GL_UNSIGNED_SHORT:
+ case GL_UNSIGNED_SHORT_5_6_5:
+ case GL_UNSIGNED_SHORT_5_6_5_REV:
+ case GL_UNSIGNED_SHORT_4_4_4_4:
+ case GL_UNSIGNED_SHORT_4_4_4_4_REV:
+ case GL_UNSIGNED_SHORT_5_5_5_1:
+ case GL_UNSIGNED_SHORT_1_5_5_5_REV:
+ {
+ GLushort * p = (GLushort *)ptr + start * pixelsize;
+ trWriteArrayus( width * pixelsize, p );
+ }
+ break;
+
+ case GL_INT:
+ {
+ GLint * p = (GLint *)ptr + start * pixelsize;
+ trWriteArrayi( width * pixelsize, p );
+ }
+ break;
+
+ case GL_UNSIGNED_INT:
+ case GL_UNSIGNED_INT_8_8_8_8:
+ case GL_UNSIGNED_INT_8_8_8_8_REV:
+ case GL_UNSIGNED_INT_10_10_10_2:
+ case GL_UNSIGNED_INT_2_10_10_10_REV:
+ {
+ GLuint * p = (GLuint *)ptr + start * pixelsize;
+ trWriteArrayui( width * pixelsize, p );
+ }
+ break;
+
+ case GL_FLOAT:
+ {
+ GLfloat * p = (GLfloat *)ptr + start * pixelsize;
+ trWriteArrayf( width * pixelsize, p );
+ }
+ break;
+
+ default:
+ /* The 2nd pass should catch this. */
+ break;
+ }
+}
+
+
+static GLint trGetFormatSize( GLenum format ) {
+ GLint pixelsize;
+
+ switch( format ) {
+ case GL_RED:
+ case GL_GREEN:
+ case GL_BLUE:
+ case GL_ALPHA:
+ case GL_LUMINANCE:
+ case GL_INTENSITY:
+ case GL_COLOR_INDEX:
+ case GL_STENCIL_INDEX:
+ case GL_DEPTH_COMPONENT:
+ pixelsize = 1;
+ break;
+ case GL_LUMINANCE_ALPHA:
+ pixelsize = 2;
+ break;
+ case GL_RGB:
+ case GL_BGR:
+ pixelsize = 3;
+ break;
+ case GL_RGBA:
+ case GL_BGRA:
+ pixelsize = 4;
+ break;
+ default:
+ /* The 2nd pass should catch this. */
+ pixelsize = 0;
+ break;
+ }
+
+ return pixelsize;
+}
+
+
+GLint trGetPixelSize( GLenum format, GLenum type ) {
+ GLint retval;
+ GLint formatsize = trGetFormatSize( format );
+
+ switch( type ) {
+ case GL_BYTE:
+ case GL_UNSIGNED_BYTE:
+ retval = formatsize * sizeof(GLubyte);
+ break;
+
+ case GL_UNSIGNED_BYTE_3_3_2:
+ case GL_UNSIGNED_BYTE_2_3_3_REV:
+ if( (type == GL_RGB) || (type == GL_BGR) ) {
+ retval = sizeof(GLubyte);
+ } else {
+ retval = -1;
+ }
+ break;
+
+ case GL_SHORT:
+ case GL_UNSIGNED_SHORT:
+ retval = sizeof(GLushort);
+ break;
+
+ case GL_UNSIGNED_SHORT_5_6_5:
+ case GL_UNSIGNED_SHORT_5_6_5_REV:
+ if( (type == GL_RGB) || (type == GL_BGR) ) {
+ retval = sizeof(GLushort);
+ } else {
+ retval = -1;
+ }
+ break;
+
+ case GL_UNSIGNED_SHORT_4_4_4_4:
+ case GL_UNSIGNED_SHORT_4_4_4_4_REV:
+ case GL_UNSIGNED_SHORT_5_5_5_1:
+ case GL_UNSIGNED_SHORT_1_5_5_5_REV:
+ if( (type == GL_RGBA) || (type == GL_BGRA) ) {
+ retval = sizeof(GLushort);
+ } else {
+ retval = -1;
+ }
+ break;
+
+ case GL_INT:
+ case GL_UNSIGNED_INT:
+ retval = sizeof(GLuint);
+ break;
+
+ case GL_UNSIGNED_INT_8_8_8_8:
+ case GL_UNSIGNED_INT_8_8_8_8_REV:
+ case GL_UNSIGNED_INT_10_10_10_2:
+ case GL_UNSIGNED_INT_2_10_10_10_REV:
+ if( (type == GL_RGBA) || (type == GL_BGRA) ) {
+ retval = sizeof(GLuint);
+ } else {
+ retval = -1;
+ }
+ break;
+
+ case GL_FLOAT:
+ retval = sizeof(GLfloat);
+ break;
+
+ default:
+ retval = -1;
+ break;
+ }
+
+ return retval;
+}
+
+
+#else
+extern void tr_support_dummy_func(void);
+void tr_support_dummy_func(void)
+{
+}
+#endif
diff --git a/xc/extras/Mesa/src/Trace/tr_support.h b/xc/extras/Mesa/src/Trace/tr_support.h
new file mode 100644
index 000000000..8e6807d5f
--- /dev/null
+++ b/xc/extras/Mesa/src/Trace/tr_support.h
@@ -0,0 +1,16 @@
+#ifndef TR_SUPPORT_H
+#define TR_SUPPORT_H
+
+
+extern void trQueryConvolutionState( void );
+
+extern void trZeroGetterData( GLenum pname, GLsizei typesize, GLvoid * params );
+
+extern void trPrintColorTableData( GLenum pname, GLenum type, GLvoid * params );
+
+extern void trWriteTypeArray( GLenum type, GLsizei width, GLsizei pixelsize, GLint start, const GLvoid * ptr );
+
+extern GLint trGetPixelSize( GLenum format, GLenum type );
+
+
+#endif
diff --git a/xc/extras/Mesa/src/Trace/tr_wrapper.c b/xc/extras/Mesa/src/Trace/tr_wrapper.c
new file mode 100644
index 000000000..85758a374
--- /dev/null
+++ b/xc/extras/Mesa/src/Trace/tr_wrapper.c
@@ -0,0 +1,9311 @@
+#ifdef MESA_TRACE
+
+#include "glheader.h"
+#include "glapitable.h"
+#include "tr_write.h"
+#include "tr_error.h"
+#include "tr_context.h"
+#include "tr_commands.h"
+#include "tr_support.h"
+#include "tr_wrapper.h"
+
+
+#ifdef GLAPI
+#undef GLAPI
+#endif
+#define GLAPI static
+
+#ifdef GLAPIENTRY
+#undef GLAPIENTRY
+#endif
+#define GLAPIENTRY
+
+
+GLAPI void GLAPIENTRY trAccum( GLenum op, GLfloat value ) {
+ trWriteCMD( CMD_ACCUM );
+ trWriteEnum( op );
+ trWritef( value );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Accum( op, value );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trActiveTextureARB( GLenum texture) {
+ trWriteCMD( CMD_ACTIVETEXTUREARB );
+ trWriteEnum( texture );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ActiveTextureARB( texture );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trAlphaFunc( GLenum func, GLclampf ref ) {
+ trWriteCMD( CMD_ALPHAFUNC );
+ trWriteEnum( func );
+ trWriteClampf( ref );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->AlphaFunc( func, ref );
+ trError();
+ }
+}
+
+
+GLAPI GLboolean GLAPIENTRY trAreTexturesResident( GLsizei n, const GLuint *textures, GLboolean *residences ) {
+ GLboolean retval;
+
+ trWriteCMD( CMD_ARETEXTURESRESIDENT );
+ trWriteSizei( n );
+ trWritePointer( (void *)textures );
+ trFileFlush();
+ trWriteArrayui( n, textures );
+ trWritePointer( (void *)residences );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ retval = trGetDispatch()->AreTexturesResident( n, textures, residences );
+ trError();
+ } else {
+ memset( residences, 0, n * sizeof(GLboolean) );
+ retval = GL_NO_ERROR;
+ }
+
+ trWriteBool( retval );
+ trWriteArrayBool( n, residences );
+
+ return retval;
+}
+
+
+GLAPI GLboolean GLAPIENTRY trAreTexturesResidentEXT( GLsizei n, const GLuint *textures, GLboolean *residences ) {
+ GLboolean retval;
+
+ trWriteCMD( CMD_ARETEXTURESRESIDENTEXT );
+ trWriteSizei( n );
+ trWritePointer( (void *)textures );
+ trFileFlush();
+ trWriteArrayui( n, textures );
+ trWritePointer( (void *)residences );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ retval = trGetDispatch()->AreTexturesResidentEXT( n, textures, residences );
+ trError();
+ } else {
+ memset( residences, 0, n * sizeof(GLboolean) );
+ retval = GL_NO_ERROR;
+ }
+
+ trWriteBool( retval );
+ trWriteArrayBool( n, residences );
+
+ return retval;
+}
+
+
+#if 0
+// Not in MESAs dispatch table
+GLAPI void GLAPIENTRY trArrayElementEXT( GLint i ) {
+ trWriteCMD( CMD_ARRAYELEMENTEXT );
+ trWritei( i );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ArrayElementEXT( i );
+ trError();
+ }
+}
+#endif
+
+
+GLAPI void GLAPIENTRY trArrayElement( GLint i ) {
+ trace_context_t * tctx;
+
+ trWriteCMD( CMD_ARRAYELEMENT );
+ trWritei( i );
+
+ tctx = trCtx();
+
+ if( tctx->doExec ) {
+ trGetDispatch()->ArrayElement( i );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trBegin( GLenum mode ) {
+ trWriteCMD( CMD_BEGIN );
+ trWriteEnum( mode );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Begin( mode );
+ trError();
+ }
+}
+
+
+#if 0
+// Not in MESAs dispatch table
+GLAPI void GLAPIENTRY trBindTextureEXT( GLenum target, GLuint texture ) {
+ trWriteCMD( CMD_BINDTEXTUREEXT );
+ trWriteEnum( target );
+ trWriteui( texture );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->BindTextureEXT( target, texture );
+ trError();
+ }
+}
+#endif
+
+
+GLAPI void GLAPIENTRY trBindTexture( GLenum target, GLuint texture ) {
+ trWriteCMD( CMD_BINDTEXTURE );
+ trWriteEnum( target );
+ trWriteui( texture );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->BindTexture( target, texture );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trBitmap( GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap ) {
+ trWriteCMD( CMD_BITMAP );
+ trWriteSizei( width );
+ trWriteSizei( height );
+ trWritef( xorig );
+ trWritef( yorig );
+ trWritef( xmove );
+ trWritef( ymove );
+ trWritePointer( (void *)bitmap );
+ trFileFlush();
+ trWriteArrayub( width * height / 8, bitmap );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Bitmap( width, height, xorig, yorig, xmove, ymove, bitmap );
+ trError();
+ }
+}
+
+
+#if 0
+// Not in MESAs dispatch table
+GLAPI void GLAPIENTRY trBlendColorEXT( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) {
+ trWriteCMD( CMD_BLENDCOLOREXT );
+ trWriteClampf( red );
+ trWriteClampf( green );
+ trWriteClampf( blue );
+ trWriteClampf( alpha );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->BlendColorEXT( red, green, blue, alpha );
+ trError();
+ }
+}
+#endif
+
+
+GLAPI void GLAPIENTRY trBlendColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) {
+ trWriteCMD( CMD_BLENDCOLOR );
+ trWriteClampf( red );
+ trWriteClampf( green );
+ trWriteClampf( blue );
+ trWriteClampf( alpha );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->BlendColor( red, green, blue, alpha );
+ trError();
+ }
+}
+
+
+#if 0
+// Not in MESAs dispatch table
+GLAPI void GLAPIENTRY trBlendEquationEXT( GLenum mode ) {
+ trWriteCMD( CMD_BLENDEQUATIONEXT );
+ trWriteEnum( mode );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->BlendEquationEXT( mode );
+ trError();
+ }
+}
+#endif
+
+
+GLAPI void GLAPIENTRY trBlendEquation( GLenum mode ) {
+ trWriteCMD( CMD_BLENDEQUATION );
+ trWriteEnum( mode );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->BlendEquation( mode );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trBlendFunc( GLenum sfactor, GLenum dfactor ) {
+ trWriteCMD( CMD_BLENDFUNC );
+ trWriteEnum( sfactor );
+ trWriteEnum( dfactor );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->BlendFunc( sfactor, dfactor );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trCallList( GLuint list ) {
+ trWriteCMD( CMD_CALLLIST );
+ trWriteui( list );
+
+ if( trCtx()->doExec ) {
+ trSetOriginalDispatch();
+ trGetDispatch()->CallList( list );
+ trSetTraceDispatch();
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trCallLists( GLsizei n, GLenum type, const GLvoid *lists ) {
+ trWriteCMD( CMD_CALLLISTS );
+ trWriteSizei( n );
+ trWriteEnum( type );
+ trWritePointer( (void *)lists );
+ trFileFlush();
+
+ switch( type ) {
+ case GL_2_BYTES:
+ trWriteTypeArray( GL_UNSIGNED_BYTE, n, 2, 0, lists );
+ break;
+ case GL_3_BYTES:
+ trWriteTypeArray( GL_UNSIGNED_BYTE, n, 3, 0, lists );
+ break;
+ case GL_4_BYTES:
+ trWriteTypeArray( GL_UNSIGNED_BYTE, n, 4, 0, lists );
+ break;
+ default:
+ trWriteTypeArray( type, n, 1, 0, lists );
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trSetOriginalDispatch();
+ trGetDispatch()->CallLists( n, type, lists );
+ trSetTraceDispatch();
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ) {
+ trWriteCMD( CMD_CLEARACCUM );
+ trWritef( red );
+ trWritef( green );
+ trWritef( blue );
+ trWritef( alpha );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ClearAccum( red, green, blue, alpha );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) {
+ trWriteCMD( CMD_CLEARCOLOR );
+ trWriteClampf( red );
+ trWriteClampf( green );
+ trWriteClampf( blue );
+ trWriteClampf( alpha );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ClearColor( red, green, blue, alpha );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trClearDepth( GLclampd depth ) {
+ trWriteCMD( CMD_CLEARDEPTH );
+ trWriteClampd( depth );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ClearDepth( depth );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trClear( GLbitfield mask ) {
+ trWriteCMD( CMD_CLEAR );
+ trWriteBits( mask );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Clear( mask );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trClearIndex( GLfloat c ) {
+ trWriteCMD( CMD_CLEARINDEX );
+ trWritef( c );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ClearIndex( c );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trClearStencil( GLint s ) {
+ trWriteCMD( CMD_CLEARSTENCIL );
+ trWritei( s );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ClearStencil( s );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trClientActiveTextureARB( GLenum texture) {
+ trWriteCMD( CMD_CLIENTACTIVETEXTUREARB );
+ trWriteEnum( texture );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ClientActiveTextureARB( texture );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trClipPlane( GLenum plane, const GLdouble *equation ) {
+ trWriteCMD( CMD_CLIPPLANE );
+ trWriteEnum( plane );
+ trWritePointer( (void *)equation );
+ trFileFlush();
+ trWriteArrayd( 4, equation );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ClipPlane( plane, equation );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3b( GLbyte red, GLbyte green, GLbyte blue ) {
+ trWriteCMD( CMD_COLOR3B );
+ trWriteb( red );
+ trWriteb( green );
+ trWriteb( blue );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3b( red, green, blue );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3bv( const GLbyte *v ) {
+ trWriteCMD( CMD_COLOR3BV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayb( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3bv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3d( GLdouble red, GLdouble green, GLdouble blue ) {
+ trWriteCMD( CMD_COLOR3D );
+ trWrited( red );
+ trWrited( green );
+ trWrited( blue );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3d( red, green, blue );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3dv( const GLdouble *v ) {
+ trWriteCMD( CMD_COLOR3DV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayd( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3dv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3f( GLfloat red, GLfloat green, GLfloat blue ) {
+ trWriteCMD( CMD_COLOR3F );
+ trWritef( red );
+ trWritef( green );
+ trWritef( blue );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3f( red, green, blue );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3fv( const GLfloat *v ) {
+ trWriteCMD( CMD_COLOR3FV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayf( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3fv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3i( GLint red, GLint green, GLint blue ) {
+ trWriteCMD( CMD_COLOR3I );
+ trWritei( red );
+ trWritei( green );
+ trWritei( blue );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3i( red, green, blue );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3iv( const GLint *v ) {
+ trWriteCMD( CMD_COLOR3IV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayi( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3iv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3s( GLshort red, GLshort green, GLshort blue ) {
+ trWriteCMD( CMD_COLOR3S );
+ trWrites( red );
+ trWrites( green );
+ trWrites( blue );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3s( red, green, blue );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3sv( const GLshort *v ) {
+ trWriteCMD( CMD_COLOR3SV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrays( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3sv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3ub( GLubyte red, GLubyte green, GLubyte blue ) {
+ trWriteCMD( CMD_COLOR3UB );
+ trWriteub( red );
+ trWriteub( green );
+ trWriteub( blue );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3ub( red, green, blue );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3ubv( const GLubyte *v ) {
+ trWriteCMD( CMD_COLOR3UBV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayub( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3ubv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3ui( GLuint red, GLuint green, GLuint blue ) {
+ trWriteCMD( CMD_COLOR3UI );
+ trWriteui( red );
+ trWriteui( green );
+ trWriteui( blue );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3ui( red, green, blue );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3uiv( const GLuint *v ) {
+ trWriteCMD( CMD_COLOR3UIV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayui( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3uiv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3us( GLushort red, GLushort green, GLushort blue ) {
+ trWriteCMD( CMD_COLOR3US );
+ trWriteus( red );
+ trWriteus( green );
+ trWriteus( blue );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3us( red, green, blue );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor3usv( const GLushort *v ) {
+ trWriteCMD( CMD_COLOR3USV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayus( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color3usv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4b( GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha ) {
+ trWriteCMD( CMD_COLOR4B );
+ trWriteb( red );
+ trWriteb( green );
+ trWriteb( blue );
+ trWriteb( alpha );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4b( red, green, blue, alpha );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4bv( const GLbyte *v ) {
+ trWriteCMD( CMD_COLOR4BV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayb( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4bv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4d( GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha ) {
+ trWriteCMD( CMD_COLOR4D );
+ trWrited( red );
+ trWrited( green );
+ trWrited( blue );
+ trWrited( alpha );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4d( red, green, blue, alpha );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4dv( const GLdouble *v ) {
+ trWriteCMD( CMD_COLOR4DV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayd( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4dv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4f( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ) {
+ trWriteCMD( CMD_COLOR4F );
+ trWritef( red );
+ trWritef( green );
+ trWritef( blue );
+ trWritef( alpha );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4f( red, green, blue, alpha );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4fv( const GLfloat *v ) {
+ trWriteCMD( CMD_COLOR4FV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayf( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4fv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4i( GLint red, GLint green, GLint blue, GLint alpha ) {
+ trWriteCMD( CMD_COLOR4I );
+ trWritei( red );
+ trWritei( green );
+ trWritei( blue );
+ trWritei( alpha );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4i( red, green, blue, alpha );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4iv( const GLint *v ) {
+ trWriteCMD( CMD_COLOR4IV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayi( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4iv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4s( GLshort red, GLshort green, GLshort blue, GLshort alpha ) {
+ trWriteCMD( CMD_COLOR4S );
+ trWrites( red );
+ trWrites( green );
+ trWrites( blue );
+ trWrites( alpha );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4s( red, green, blue, alpha );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4sv( const GLshort *v ) {
+ trWriteCMD( CMD_COLOR4SV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrays( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4sv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4ub( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha ) {
+ trWriteCMD( CMD_COLOR4UB );
+ trWriteub( red );
+ trWriteub( green );
+ trWriteub( blue );
+ trWriteub( alpha );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4ub( red, green, blue, alpha );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4ubv( const GLubyte *v ) {
+ trWriteCMD( CMD_COLOR4UBV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayub( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4ubv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4ui( GLuint red, GLuint green, GLuint blue, GLuint alpha ) {
+ trWriteCMD( CMD_COLOR4UI );
+ trWriteui( red );
+ trWriteui( green );
+ trWriteui( blue );
+ trWriteui( alpha );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4ui( red, green, blue, alpha );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4uiv( const GLuint *v ) {
+ trWriteCMD( CMD_COLOR4UIV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayui( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4uiv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4us( GLushort red, GLushort green, GLushort blue, GLushort alpha ) {
+ trWriteCMD( CMD_COLOR4US );
+ trWriteus( red );
+ trWriteus( green );
+ trWriteus( blue );
+ trWriteus( alpha );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4us( red, green, blue, alpha );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColor4usv( const GLushort *v ) {
+ trWriteCMD( CMD_COLOR4USV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayus( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Color4usv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColorMask( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha ) {
+ trWriteCMD( CMD_COLORMASK );
+ trWriteBool( red );
+ trWriteBool( green );
+ trWriteBool( blue );
+ trWriteBool( alpha );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ColorMask( red, green, blue, alpha );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColorMaterial( GLenum face, GLenum mode ) {
+ trWriteCMD( CMD_COLORMATERIAL );
+ trWriteEnum( face );
+ trWriteEnum( mode );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ColorMaterial( face, mode );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColorPointerEXT( GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *ptr ) { /* TODO */
+ trWriteCMD( CMD_COLORPOINTEREXT );
+ trWritei( size );
+ trWriteEnum( type );
+ trWriteSizei( stride );
+ trWriteSizei( count );
+ trWritePointer( (void *)ptr );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ColorPointerEXT( size, type, stride, count, ptr );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColorPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *ptr ) {
+ trace_context_t * tctx;
+
+ trWriteCMD( CMD_COLORPOINTER );
+ trWritei( size );
+ trWriteEnum( type );
+ trWriteSizei( stride );
+ trWritePointer( (void *)ptr );
+ trFileFlush();
+
+ if( tctx->doExec ) {
+ trGetDispatch()->ColorPointer( size, type, stride, ptr );
+ trError();
+ }
+}
+
+
+#if 0
+// Not in MESAs dispatch table
+GLAPI void GLAPIENTRY trColorSubTableEXT( GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data ) {
+ GLint pixelsize;
+
+ trWriteCMD( CMD_COLORSUBTABLEEXT );
+ trWriteEnum( target );
+ trWriteSizei( start );
+ trWriteSizei( count );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)data );
+ trFileFlush();
+
+ pixelsize = trGetPixelSize( format, type );
+ trWriteTypeArray( type, count, pixelsize, start, data );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ColorSubTableEXT( target, start, count, format, type, data );
+ trError();
+ }
+}
+#endif
+
+
+GLAPI void GLAPIENTRY trColorSubTable( GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data ) {
+ GLint pixelsize;
+
+ trWriteCMD( CMD_COLORSUBTABLE );
+ trWriteEnum( target );
+ trWriteSizei( start );
+ trWriteSizei( count );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)data );
+ trFileFlush();
+
+ pixelsize = trGetPixelSize( format, type );
+ trWriteTypeArray( type, count, pixelsize, start, data );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ColorSubTable( target, start, count, format, type, data );
+ trError();
+ }
+}
+
+
+#if 0
+// Not in MESAs dispatch table
+GLAPI void GLAPIENTRY trColorTableEXT( GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table ) {
+ GLint pixelsize;
+
+ trWriteCMD( CMD_COLORTABLEEXT );
+ trWriteEnum( target );
+ trWriteEnum( internalformat );
+ trWriteSizei( width );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)table );
+ trFileFlush();
+
+ pixelsize = trGetPixelSize( format, type );
+ trWriteTypeArray( type, width, pixelsize, 0, table );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ColorTableEXT( target, internalformat, width, format, type, table );
+ trError();
+ }
+}
+#endif
+
+
+GLAPI void GLAPIENTRY trColorTable( GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table ) { /* TODO */
+ GLint pixelsize;
+
+ trWriteCMD( CMD_COLORTABLE );
+ trWriteEnum( target );
+ trWriteEnum( internalformat );
+ trWriteSizei( width );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)table );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ColorTable( target, internalformat, width, format, type, table );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColorTableParameterfv( GLenum target, GLenum pname, const GLfloat *params) {
+ trWriteCMD( CMD_COLORTABLEPARAMETERFV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+ trWriteArrayf( 4, params );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ColorTableParameterfv( target, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trColorTableParameteriv( GLenum target, GLenum pname, const GLint *params) {
+ trWriteCMD( CMD_COLORTABLEPARAMETERIV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+ trWriteArrayi( 4, params );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ColorTableParameteriv( target, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trConvolutionFilter1D( GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image ) {
+ GLint pixelsize;
+
+ trWriteCMD( CMD_CONVOLUTIONFILTER1D );
+ trWriteEnum( target );
+ trWriteEnum( internalformat );
+ trWriteSizei( width );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)image );
+ trFileFlush();
+
+ pixelsize = trGetPixelSize( format, type );
+ trWriteTypeArray( type, width, pixelsize, 0, image );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ConvolutionFilter1D( target, internalformat, width, format, type, image );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trConvolutionFilter2D( GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image ) {
+ GLint i;
+ GLint pixelsize;
+
+ trWriteCMD( CMD_CONVOLUTIONFILTER2D );
+ trWriteEnum( target );
+ trWriteEnum( internalformat );
+ trWriteSizei( width );
+ trWriteSizei( height );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)image );
+ trFileFlush();
+
+ /* p76 of GL spec says this isn't subject to unpack_row_width... */
+ pixelsize = trGetPixelSize( format, type );
+ for( i = 0; i < height; i++ ) {
+ trWriteTypeArray( type, width, pixelsize, i * width, image );
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ConvolutionFilter2D( target, internalformat, width, height, format, type, image );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trConvolutionParameterf( GLenum target, GLenum pname, GLfloat params ) {
+ trWriteCMD( CMD_CONVOLUTIONPARAMETERF );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritef( params );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ConvolutionParameterf( target, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trConvolutionParameterfv( GLenum target, GLenum pname, const GLfloat *params ) {
+ trWriteCMD( CMD_CONVOLUTIONPARAMETERFV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_CONVOLUTION_BORDER_MODE:
+ trWritef( params[0] );
+ break;
+ case GL_CONVOLUTION_BORDER_COLOR:
+ trWriteArrayf( 4, params );
+ break;
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ConvolutionParameterfv( target, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trConvolutionParameteri( GLenum target, GLenum pname, GLint params ) {
+ trWriteCMD( CMD_CONVOLUTIONPARAMETERI );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritei( params );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ConvolutionParameteri( target, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trConvolutionParameteriv( GLenum target, GLenum pname, const GLint *params ) {
+ trWriteCMD( CMD_CONVOLUTIONPARAMETERIV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_CONVOLUTION_BORDER_MODE:
+ trWritei( params[0] );
+ break;
+ case GL_CONVOLUTION_BORDER_COLOR:
+ trWriteArrayi( 4, params );
+ break;
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ConvolutionParameteriv( target, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trCopyColorSubTable( GLenum target, GLsizei start, GLint x, GLint y, GLsizei width ) {
+ trWriteCMD( CMD_COPYCOLORSUBTABLE );
+ trWriteEnum( target );
+ trWriteSizei( start );
+ trWritei( x );
+ trWritei( y );
+ trWriteSizei( width );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->CopyColorSubTable( target, start, x, y, width );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trCopyColorTable( GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width ) {
+ trWriteCMD( CMD_COPYCOLORTABLE );
+ trWriteEnum( target );
+ trWriteEnum( internalformat );
+ trWritei( x );
+ trWritei( y );
+ trWriteSizei( width );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->CopyColorTable( target, internalformat, x, y, width );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trCopyConvolutionFilter1D( GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width ) {
+ trWriteCMD( CMD_COPYCONVOLUTIONFILTER1D );
+ trWriteEnum( target );
+ trWriteEnum( internalformat );
+ trWritei( x );
+ trWritei( y );
+ trWriteSizei( width );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->CopyConvolutionFilter1D( target, internalformat, x, y, width );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trCopyConvolutionFilter2D( GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height) {
+ trWriteCMD( CMD_COPYCONVOLUTIONFILTER2D );
+ trWriteEnum( target );
+ trWriteEnum( internalformat );
+ trWritei( x );
+ trWritei( y );
+ trWriteSizei( width );
+ trWriteSizei( height );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->CopyConvolutionFilter2D( target, internalformat, x, y, width, height );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trCopyPixels( GLint x, GLint y, GLsizei width, GLsizei height, GLenum type ) {
+ trWriteCMD( CMD_COPYPIXELS );
+ trWritei( x );
+ trWritei( y );
+ trWriteSizei( width );
+ trWriteSizei( height );
+ trWriteEnum( type );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->CopyPixels( x, y, width, height, type );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trCopyTexImage1D( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border ) {
+ trWriteCMD( CMD_COPYTEXIMAGE1D );
+ trWriteEnum( target );
+ trWritei( level );
+ trWriteEnum( internalformat );
+ trWritei( x );
+ trWritei( y );
+ trWriteSizei( width );
+ trWritei( border );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->CopyTexImage1D( target, level, internalformat, x, y, width, border );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trCopyTexImage2D( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border ) {
+ trWriteCMD( CMD_COPYTEXIMAGE2D );
+ trWriteEnum( target );
+ trWritei( level );
+ trWriteEnum( internalformat );
+ trWritei( x );
+ trWritei( y );
+ trWriteSizei( width );
+ trWriteSizei( height );
+ trWritei( border );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->CopyTexImage2D( target, level, internalformat, x, y, width, height, border );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trCopyTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width ) {
+ trWriteCMD( CMD_COPYTEXSUBIMAGE1D );
+ trWriteEnum( target );
+ trWritei( level );
+ trWritei( xoffset );
+ trWritei( x );
+ trWritei( y );
+ trWriteSizei( width );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->CopyTexSubImage1D( target, level, xoffset, x, y, width );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trCopyTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height ) {
+ trWriteCMD( CMD_COPYTEXSUBIMAGE2D );
+ trWriteEnum( target );
+ trWritei( level );
+ trWritei( xoffset );
+ trWritei( yoffset );
+ trWritei( x );
+ trWritei( y );
+ trWriteSizei( width );
+ trWriteSizei( height );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->CopyTexSubImage2D( target, level, xoffset, yoffset, x, y, width, height );
+ trError();
+ }
+}
+
+
+#if 0
+// Not in MESAs dispatch table
+GLAPI void GLAPIENTRY trCopyTexSubImage3DEXT( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height ) {
+ trWriteCMD( CMD_COPYTEXSUBIMAGE3DEXT );
+ trWriteEnum( target );
+ trWritei( level );
+ trWritei( xoffset );
+ trWritei( yoffset );
+ trWritei( zoffset );
+ trWritei( x );
+ trWritei( y );
+ trWriteSizei( width );
+ trWriteSizei( height );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->CopyTexSubImage3DEXT( target, level, xoffset, yoffset, zoffset, x, y, width, height );
+ trError();
+ }
+}
+#endif
+
+
+GLAPI void GLAPIENTRY trCopyTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height ) {
+ trWriteCMD( CMD_COPYTEXSUBIMAGE3D );
+ trWriteEnum( target );
+ trWritei( level );
+ trWritei( xoffset );
+ trWritei( yoffset );
+ trWritei( zoffset );
+ trWritei( x );
+ trWritei( y );
+ trWriteSizei( width );
+ trWriteSizei( height );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->CopyTexSubImage3D( target, level, xoffset, yoffset, zoffset, x, y, width, height );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trCullFace( GLenum mode ) {
+ trWriteCMD( CMD_CULLFACE );
+ trWriteEnum( mode );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->CullFace( mode );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trDeleteLists( GLuint list, GLsizei range ) {
+ trWriteCMD( CMD_DELETELISTS );
+ trWriteui( list );
+ trWriteSizei( range );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->DeleteLists( list, range );
+ trError();
+ }
+}
+
+
+#if 0
+// Not in MESAs dispatch table
+GLAPI void GLAPIENTRY trDeleteTexturesEXT( GLsizei n, const GLuint *textures) {
+ trWriteCMD( CMD_DELETETEXTURESEXT );
+ trWriteSizei( n );
+ trWritePointer( (void *)textures );
+ trFileFlush();
+ trWriteArrayui( n, textures );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->DeleteTexturesEXT( n, textures );
+ trError();
+ }
+}
+#endif
+
+
+GLAPI void GLAPIENTRY trDeleteTextures( GLsizei n, const GLuint *textures) {
+ trWriteCMD( CMD_DELETETEXTURES );
+ trWriteSizei( n );
+ trWritePointer( (void *)textures );
+ trFileFlush();
+ trWriteArrayui( n, textures );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->DeleteTextures( n, textures );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trDepthFunc( GLenum func ) {
+ trWriteCMD( CMD_DEPTHFUNC );
+ trWriteEnum( func );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->DepthFunc( func );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trDepthMask( GLboolean flag ) {
+ trWriteCMD( CMD_DEPTHMASK );
+ trWriteBool( flag );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->DepthMask( flag );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trDepthRange( GLclampd near_val, GLclampd far_val ) {
+ trWriteCMD( CMD_DEPTHRANGE );
+ trWriteClampd( near_val );
+ trWriteClampd( far_val );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->DepthRange( near_val, far_val );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trDisableClientState( GLenum cap ) {
+ trace_context_t * tctx;
+
+ trWriteCMD( CMD_DISABLECLIENTSTATE );
+ trWriteEnum( cap );
+
+ tctx = trCtx();
+
+ if( tctx->doExec ) {
+ trGetDispatch()->DisableClientState( cap );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trDisable( GLenum cap ) {
+ trWriteCMD( CMD_DISABLE );
+ trWriteEnum( cap );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Disable( cap );
+ trError();
+ }
+}
+
+
+#if 0
+// Not in MESAs dispatch table
+GLAPI void GLAPIENTRY trDrawArraysEXT( GLenum mode, GLint first, GLsizei count ) {
+ trWriteCMD( CMD_DRAWARRAYSEXT );
+ trWriteEnum( mode );
+ trWritei( first );
+ trWriteSizei( count );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->DrawArraysEXT( mode, first, count );
+ trError();
+ }
+}
+#endif
+
+
+GLAPI void GLAPIENTRY trDrawArrays( GLenum mode, GLint first, GLsizei count ) {
+
+ trWriteCMD( CMD_DRAWARRAYS );
+ trWriteEnum( mode );
+ trWritei( first );
+ trWriteSizei( count );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->DrawArrays( mode, first, count );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trDrawBuffer( GLenum mode ) {
+ trWriteCMD( CMD_DRAWBUFFER );
+ trWriteEnum( mode );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->DrawBuffer( mode );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trDrawElements( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices ) {
+ trace_context_t * tctx;
+
+ trWriteCMD( CMD_DRAWELEMENTS );
+ trWriteEnum( mode );
+ trWriteSizei( count );
+ trWriteEnum( type );
+ trWritePointer( (void *)indices );
+ trFileFlush();
+ /* Why isn't the indices a GLint * ? */
+ trWriteArrayi( count, (GLint *)indices );
+
+ tctx = trCtx();
+
+ if( tctx->doExec ) {
+ trGetDispatch()->DrawElements( mode, count, type, indices );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trDrawPixels( GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels ) { /* TODO */
+ GLint pixelsize;
+
+ trWriteCMD( CMD_DRAWPIXELS );
+ trWriteSizei( width );
+ trWriteSizei( height );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)pixels );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->DrawPixels( width, height, format, type, pixels );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trDrawRangeElements( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices ) {
+ trace_context_t * tctx;
+
+ trWriteCMD( CMD_DRAWRANGEELEMENTS );
+ trWriteEnum( mode );
+ trWriteui( start );
+ trWriteui( end );
+ trWriteSizei( count );
+ trWriteEnum( type );
+ trWritePointer( (void *)indices );
+ trFileFlush();
+ switch( type ) {
+ case GL_UNSIGNED_BYTE:
+ trWriteArrayub( count, (GLubyte *)indices );
+ break;
+ case GL_UNSIGNED_SHORT:
+ trWriteArrayus( count, (GLushort *)indices );
+ break;
+ case GL_UNSIGNED_INT:
+ trWriteArrayui( count, (GLuint *)indices );
+ break;
+ default:
+ /* The 2nd pass should catch this. */
+ break;
+ }
+
+ tctx = trCtx();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->DrawRangeElements( mode, start, end, count, type, indices );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEdgeFlag( GLboolean flag ) {
+ trWriteCMD( CMD_EDGEFLAG );
+ trWriteBool( flag );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EdgeFlag( flag );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEdgeFlagPointerEXT( GLsizei stride, GLsizei count, const GLboolean *ptr ) { /* TODO */
+ trWriteCMD( CMD_EDGEFLAGPOINTEREXT );
+ trWriteSizei( stride );
+ trWriteSizei( count );
+ trWritePointer( (void *)ptr );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EdgeFlagPointerEXT( stride, count, ptr );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEdgeFlagPointer( GLsizei stride, const GLvoid *ptr ) { /* TODO */
+ trace_context_t * tctx;
+
+ trWriteCMD( CMD_EDGEFLAGPOINTER );
+ trWriteSizei( stride );
+ trWritePointer( (void *)ptr );
+ trFileFlush();
+
+ tctx = trCtx();
+
+ if( tctx->doExec ) {
+ trGetDispatch()->EdgeFlagPointer( stride, ptr );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEdgeFlagv( const GLboolean *flag ) {
+ trWriteCMD( CMD_EDGEFLAGV );
+ trWritePointer( (void *)flag );
+ trFileFlush();
+ trWriteBool( flag[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EdgeFlagv( flag );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEnableClientState( GLenum cap ) {
+ trace_context_t * tctx;
+
+ trWriteCMD( CMD_ENABLECLIENTSTATE );
+ trWriteEnum( cap );
+
+ tctx = trCtx();
+
+ if( tctx->doExec ) {
+ trGetDispatch()->EnableClientState( cap );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEnable( GLenum cap ) {
+ trWriteCMD( CMD_ENABLE );
+ trWriteEnum( cap );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Enable( cap );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEndList( void ) {
+ trWriteCMD( CMD_ENDLIST );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EndList( );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEnd( void ) {
+ trWriteCMD( CMD_END );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->End( );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEvalCoord1d( GLdouble u ) {
+ trWriteCMD( CMD_EVALCOORD1D );
+ trWrited( u );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EvalCoord1d( u );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEvalCoord1dv( const GLdouble *u ) {
+ trWriteCMD( CMD_EVALCOORD1DV );
+ trWritePointer( (void *)u );
+ trFileFlush();
+ trWrited( u[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EvalCoord1dv( u );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEvalCoord1f( GLfloat u ) {
+ trWriteCMD( CMD_EVALCOORD1F );
+ trWritef( u );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EvalCoord1f( u );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEvalCoord1fv( const GLfloat *u ) {
+ trWriteCMD( CMD_EVALCOORD1FV );
+ trWritePointer( (void *)u );
+ trFileFlush();
+ trWritef( u[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EvalCoord1fv( u );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEvalCoord2d( GLdouble u, GLdouble v ) {
+ trWriteCMD( CMD_EVALCOORD2D );
+ trWrited( u );
+ trWrited( v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EvalCoord2d( u, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEvalCoord2dv( const GLdouble *u ) {
+ trWriteCMD( CMD_EVALCOORD2DV );
+ trWritePointer( (void *)u );
+ trFileFlush();
+ trWriteArrayd( 2, u );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EvalCoord2dv( u );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEvalCoord2f( GLfloat u, GLfloat v ) {
+ trWriteCMD( CMD_EVALCOORD2F );
+ trWritef( u );
+ trWritef( v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EvalCoord2f( u, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEvalCoord2fv( const GLfloat *u ) {
+ trWriteCMD( CMD_EVALCOORD2FV );
+ trWritePointer( (void *)u );
+ trFileFlush();
+ trWriteArrayf( 2, u );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EvalCoord2fv( u );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEvalMesh1( GLenum mode, GLint i1, GLint i2 ) {
+ trWriteCMD( CMD_EVALMESH1 );
+ trWriteEnum( mode );
+ trWritei( i1 );
+ trWritei( i2 );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EvalMesh1( mode, i1, i2 );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEvalMesh2( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 ) {
+ trWriteCMD( CMD_EVALMESH2 );
+ trWriteEnum( mode );
+ trWritei( i1 );
+ trWritei( i2 );
+ trWritei( j1 );
+ trWritei( j2 );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EvalMesh2( mode, i1, i2, j1, j2 );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEvalPoint1( GLint i ) {
+ trWriteCMD( CMD_EVALPOINT1 );
+ trWritei( i );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EvalPoint1( i );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trEvalPoint2( GLint i, GLint j ) {
+ trWriteCMD( CMD_EVALPOINT2 );
+ trWritei( i );
+ trWritei( j );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->EvalPoint2( i, j );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trFeedbackBuffer( GLsizei size, GLenum type, GLfloat *buffer ) {
+ trWriteCMD( CMD_FEEDBACKBUFFER );
+ trWriteSizei( size );
+ trWriteEnum( type );
+ trWritePointer( (void *)buffer );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->FeedbackBuffer( size, type, buffer );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trFinish( void ) {
+ trWriteCMD( CMD_FINISH );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Finish( );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trFlush( void ) {
+ trWriteCMD( CMD_FLUSH );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Flush( );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trFogf( GLenum pname, GLfloat param ) {
+ trWriteCMD( CMD_FOGF );
+ trWriteEnum( pname );
+ trWritef( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Fogf( pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trFogfv( GLenum pname, const GLfloat *params ) {
+ trWriteCMD( CMD_FOGFV );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_FOG_MODE:
+ case GL_FOG_DENSITY:
+ case GL_FOG_START:
+ case GL_FOG_END:
+ case GL_FOG_INDEX:
+ trWritef( params[0] );
+ break;
+
+ case GL_FOG_COLOR:
+ trWriteArrayf( 4, params );
+ break;
+
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Fogfv( pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trFogi( GLenum pname, GLint param ) {
+ trWriteCMD( CMD_FOGI );
+ trWriteEnum( pname );
+ trWritei( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Fogi( pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trFogiv( GLenum pname, const GLint *params ) {
+ trWriteCMD( CMD_FOGIV );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_FOG_MODE:
+ case GL_FOG_DENSITY:
+ case GL_FOG_START:
+ case GL_FOG_END:
+ case GL_FOG_INDEX:
+ trWritei( params[0] );
+ break;
+
+ case GL_FOG_COLOR:
+ trWriteArrayi( 4, params );
+ break;
+
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Fogiv( pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trFrontFace( GLenum mode ) {
+ trWriteCMD( CMD_FRONTFACE );
+ trWriteEnum( mode );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->FrontFace( mode );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trFrustum( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val ) {
+ trWriteCMD( CMD_FRUSTUM );
+ trWrited( left );
+ trWrited( right );
+ trWrited( bottom );
+ trWrited( top );
+ trWrited( near_val );
+ trWrited( far_val );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Frustum( left, right, bottom, top, near_val, far_val );
+ trError();
+ }
+}
+
+
+GLAPI GLuint GLAPIENTRY trGenLists( GLsizei range ) {
+ GLuint retval;
+
+ trWriteCMD( CMD_GENLISTS );
+ trWriteSizei( range );
+
+ if( trCtx()->doExec ) {
+ retval = trGetDispatch()->GenLists( range );
+ trError();
+ } else {
+ retval = 0;
+ }
+
+ trWriteui( retval );
+ return retval;
+}
+
+
+GLAPI void GLAPIENTRY trGenTexturesEXT( GLsizei n, GLuint *textures ) {
+ trWriteCMD( CMD_GENTEXTURESEXT );
+ trWriteSizei( n );
+ trWritePointer( (void *)textures );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GenTexturesEXT( n, textures );
+ trError();
+ }
+
+ if( !(trCtx()->doExec) ) {
+ memset( textures, 0, n * sizeof(GLuint) );
+ }
+
+ trWriteArrayui( n, textures );
+}
+
+
+GLAPI void GLAPIENTRY trGenTextures( GLsizei n, GLuint *textures ) {
+ trWriteCMD( CMD_GENTEXTURES );
+ trWriteSizei( n );
+ trWritePointer( (void *)textures );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GenTextures( n, textures );
+ trError();
+ }
+
+ if( !(trCtx()->doExec) ) {
+ memset( textures, 0, n * sizeof(GLuint) );
+ }
+
+ trWriteArrayui( n, textures );
+}
+
+
+GLAPI void GLAPIENTRY trGetBooleanv( GLenum pname, GLboolean *params ) { /* TODO */
+ trWriteCMD( CMD_GETBOOLEANV );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_COLOR_MATRIX:
+ case GL_MODELVIEW_MATRIX:
+ case GL_PROJECTION_MATRIX:
+ case GL_TEXTURE_MATRIX:
+ trWriteArrayBool( 16, params );
+ break;
+
+ case GL_ACCUM_CLEAR_VALUE:
+ case GL_BLEND_COLOR:
+ case GL_COLOR_CLEAR_VALUE:
+ case GL_COLOR_WRITEMASK:
+ case GL_CURRENT_COLOR:
+ case GL_CURRENT_RASTER_COLOR:
+ case GL_CURRENT_RASTER_POSITION:
+ case GL_CURRENT_RASTER_TEXTURE_COORDS:
+ case GL_CURRENT_TEXTURE_COORDS:
+ case GL_LIGHT_MODEL_AMBIENT:
+ case GL_MAP2_GRID_DOMAIN:
+ case GL_SCISSOR_BOX:
+ case GL_VIEWPORT:
+ trWriteArrayBool( 4, params );
+ break;
+
+ case GL_CURRENT_NORMAL:
+ trWriteArrayBool( 3, params );
+ break;
+
+ case GL_ALIASED_POINT_SIZE_RANGE:
+ case GL_ALIASED_LINE_WIDTH_RANGE:
+ case GL_DEPTH_RANGE:
+ case GL_MAP1_GRID_DOMAIN:
+ case GL_MAP2_GRID_SEGMENTS:
+ case GL_MAX_VIEWPORT_DIMS:
+ case GL_POLYGON_MODE:
+ case GL_SMOOTH_LINE_WIDTH_RANGE:
+ case GL_SMOOTH_POINT_SIZE_RANGE:
+ trWriteArrayBool( 2, params );
+ break;
+
+ case GL_ACCUM_ALPHA_BITS:
+ case GL_ACCUM_BLUE_BITS:
+ case GL_ACCUM_GREEN_BITS:
+ case GL_ACCUM_RED_BITS:
+ case GL_ACTIVE_TEXTURE_ARB:
+ case GL_ALPHA_BIAS:
+ case GL_ALPHA_BITS:
+ case GL_ALPHA_SCALE:
+ case GL_ALPHA_TEST:
+ case GL_ALPHA_TEST_FUNC:
+ case GL_ALPHA_TEST_REF:
+ case GL_ATTRIB_STACK_DEPTH:
+ case GL_AUTO_NORMAL:
+ case GL_AUX_BUFFERS:
+ case GL_BLEND:
+ case GL_BLEND_SRC:
+ case GL_BLUE_BIAS:
+ case GL_BLUE_BITS:
+ case GL_BLUE_SCALE:
+ case GL_CLIENT_ACTIVE_TEXTURE_ARB:
+ case GL_CLIENT_ATTRIB_STACK_DEPTH:
+ case GL_CLIP_PLANE0:
+ case GL_CLIP_PLANE1:
+ case GL_CLIP_PLANE2:
+ case GL_CLIP_PLANE3:
+ case GL_CLIP_PLANE4:
+ case GL_CLIP_PLANE5:
+ case GL_COLOR_ARRAY:
+ case GL_COLOR_ARRAY_SIZE:
+ case GL_COLOR_ARRAY_STRIDE:
+ case GL_COLOR_ARRAY_TYPE:
+ case GL_COLOR_LOGIC_OP:
+ case GL_COLOR_MATERIAL:
+ case GL_COLOR_MATERIAL_FACE:
+ case GL_COLOR_MATERIAL_PARAMETER:
+ case GL_COLOR_MATRIX_STACK_DEPTH:
+ case GL_COLOR_TABLE:
+ case GL_CONVOLUTION_1D:
+ case GL_CONVOLUTION_2D:
+ case GL_CULL_FACE:
+ case GL_CULL_FACE_MODE:
+ case GL_CURRENT_INDEX:
+ case GL_CURRENT_RASTER_DISTANCE:
+ case GL_CURRENT_RASTER_INDEX:
+ case GL_CURRENT_RASTER_POSITION_VALID:
+ case GL_DEPTH_BIAS:
+ case GL_DEPTH_CLEAR_VALUE:
+ case GL_DEPTH_FUNC:
+ case GL_DEPTH_SCALE:
+ case GL_DEPTH_TEST:
+ case GL_DEPTH_WRITEMASK:
+ case GL_DITHER:
+ case GL_DOUBLEBUFFER:
+ case GL_DRAW_BUFFER:
+ case GL_EDGE_FLAG:
+ case GL_EDGE_FLAG_ARRAY:
+ case GL_EDGE_FLAG_ARRAY_STRIDE:
+ case GL_FEEDBACK_BUFFER_SIZE:
+ case GL_FEEDBACK_BUFFER_TYPE:
+ case GL_FOG:
+ case GL_FOG_DENSITY:
+ case GL_FOG_END:
+ case GL_FOG_HINT:
+ case GL_FOG_INDEX:
+ case GL_FOG_MODE:
+ case GL_FOG_START:
+ case GL_FRONT_FACE:
+ case GL_GREEN_BIAS:
+ case GL_GREEN_BITS:
+ case GL_GREEN_SCALE:
+ case GL_HISTOGRAM:
+ case GL_INDEX_ARRAY:
+ case GL_INDEX_ARRAY_STRIDE:
+ case GL_INDEX_ARRAY_TYPE:
+ case GL_INDEX_BITS:
+ case GL_INDEX_CLEAR_VALUE:
+ case GL_INDEX_LOGIC_OP:
+ case GL_INDEX_MODE:
+ case GL_INDEX_OFFSET:
+ case GL_INDEX_SHIFT:
+ case GL_INDEX_WRITEMASK:
+ case GL_LIGHT0:
+ case GL_LIGHT1:
+ case GL_LIGHT2:
+ case GL_LIGHT3:
+ case GL_LIGHT4:
+ case GL_LIGHT5:
+ case GL_LIGHT6:
+ case GL_LIGHT7:
+ case GL_LIGHTING:
+ case GL_LIGHT_MODEL_COLOR_CONTROL:
+ case GL_LIGHT_MODEL_LOCAL_VIEWER:
+ case GL_LIGHT_MODEL_TWO_SIDE:
+ case GL_LINE_SMOOTH:
+ case GL_LINE_SMOOTH_HINT:
+ case GL_LINE_STIPPLE:
+ case GL_LINE_STIPPLE_PATTERN:
+ case GL_LINE_STIPPLE_REPEAT:
+ case GL_LINE_WIDTH:
+ case GL_LIST_BASE:
+ case GL_LIST_INDEX:
+ case GL_LIST_MODE:
+ case GL_LOGIC_OP_MODE:
+ case GL_MAP1_COLOR_4:
+ case GL_MAP1_GRID_SEGMENTS:
+ case GL_MAP1_INDEX:
+ case GL_MAP1_NORMAL:
+ case GL_MAP1_TEXTURE_COORD_1:
+ case GL_MAP1_TEXTURE_COORD_2:
+ case GL_MAP1_TEXTURE_COORD_3:
+ case GL_MAP1_TEXTURE_COORD_4:
+ case GL_MAP1_VERTEX_3:
+ case GL_MAP1_VERTEX_4:
+ case GL_MAP2_COLOR_4:
+ case GL_MAP2_INDEX:
+ case GL_MAP2_NORMAL:
+ case GL_MAP2_TEXTURE_COORD_1:
+ case GL_MAP2_TEXTURE_COORD_2:
+ case GL_MAP2_TEXTURE_COORD_3:
+ case GL_MAP2_TEXTURE_COORD_4:
+ case GL_MAP2_VERTEX_3:
+ case GL_MAP2_VERTEX_4:
+ case GL_MAP_COLOR:
+ case GL_MAP_STENCIL:
+ case GL_MATRIX_MODE:
+ case GL_MAX_3D_TEXTURE_SIZE:
+ case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
+ case GL_MAX_ATTRIB_STACK_DEPTH:
+ case GL_MAX_CLIP_PLANES:
+ case GL_MAX_COLOR_MATRIX_STACK_DEPTH:
+ case GL_MAX_ELEMENTS_VERTICES:
+ case GL_MAX_EVAL_ORDER:
+ case GL_MAX_LIGHTS:
+ case GL_MAX_LIST_NESTING:
+ case GL_MAX_MODELVIEW_STACK_DEPTH:
+ case GL_MAX_NAME_STACK_DEPTH:
+ case GL_MAX_PIXEL_MAP_TABLE:
+ case GL_MAX_PROJECTION_STACK_DEPTH:
+ case GL_MAX_TEXTURE_SIZE:
+ case GL_MAX_TEXTURE_STACK_DEPTH:
+ case GL_MAX_TEXTURE_UNITS_ARB:
+ case GL_MINMAX:
+ case GL_MODELVIEW_STACK_DEPTH:
+ case GL_NAME_STACK_DEPTH:
+ case GL_NORMAL_ARRAY:
+ case GL_NORMAL_ARRAY_STRIDE:
+ case GL_NORMAL_ARRAY_TYPE:
+ case GL_NORMALIZE:
+ case GL_PACK_ALIGNMENT:
+ case GL_PACK_IMAGE_HEIGHT:
+ case GL_PACK_LSB_FIRST:
+ case GL_PACK_ROW_LENGTH:
+ case GL_PACK_SKIP_IMAGES:
+ case GL_PACK_SKIP_PIXELS:
+ case GL_PACK_SKIP_ROWS:
+ case GL_PACK_SWAP_BYTES:
+ case GL_PERSPECTIVE_CORRECTION_HINT:
+ case GL_PIXEL_MAP_A_TO_A_SIZE:
+ case GL_PIXEL_MAP_B_TO_B_SIZE:
+ case GL_PIXEL_MAP_G_TO_G_SIZE:
+ case GL_PIXEL_MAP_I_TO_A_SIZE:
+ case GL_PIXEL_MAP_I_TO_B_SIZE:
+ case GL_PIXEL_MAP_I_TO_G_SIZE:
+ case GL_PIXEL_MAP_I_TO_I_SIZE:
+ case GL_PIXEL_MAP_I_TO_R_SIZE:
+ case GL_PIXEL_MAP_R_TO_R_SIZE:
+ case GL_PIXEL_MAP_S_TO_S_SIZE:
+ case GL_POINT_SIZE:
+ case GL_POINT_SMOOTH:
+ case GL_POINT_SMOOTH_HINT:
+ case GL_POLYGON_OFFSET_FACTOR:
+ case GL_POLYGON_OFFSET_UNITS:
+ case GL_POLYGON_OFFSET_FILL:
+ case GL_POLYGON_OFFSET_LINE:
+ case GL_POLYGON_OFFSET_POINT:
+ case GL_POLYGON_SMOOTH:
+ case GL_POLYGON_SMOOTH_HINT:
+ case GL_POLYGON_STIPPLE:
+ case GL_POST_COLOR_MATRIX_COLOR_TABLE:
+ case GL_POST_COLOR_MATRIX_RED_BIAS:
+ case GL_POST_COLOR_MATRIX_GREEN_BIAS:
+ case GL_POST_COLOR_MATRIX_BLUE_BIAS:
+ case GL_POST_COLOR_MATRIX_ALPHA_BIAS:
+ case GL_POST_COLOR_MATRIX_RED_SCALE:
+ case GL_POST_COLOR_MATRIX_GREEN_SCALE:
+ case GL_POST_COLOR_MATRIX_BLUE_SCALE:
+ case GL_POST_COLOR_MATRIX_ALPHA_SCALE:
+ case GL_POST_CONVOLUTION_COLOR_TABLE:
+ case GL_POST_CONVOLUTION_RED_BIAS:
+ case GL_POST_CONVOLUTION_GREEN_BIAS:
+ case GL_POST_CONVOLUTION_BLUE_BIAS:
+ case GL_POST_CONVOLUTION_ALPHA_BIAS:
+ case GL_POST_CONVOLUTION_RED_SCALE:
+ case GL_POST_CONVOLUTION_GREEN_SCALE:
+ case GL_POST_CONVOLUTION_BLUE_SCALE:
+ case GL_POST_CONVOLUTION_ALPHA_SCALE:
+ case GL_PROJECTION_STACK_DEPTH:
+ case GL_READ_BUFFER:
+ case GL_RED_BIAS:
+ case GL_RED_BITS:
+ case GL_RED_SCALE:
+ case GL_RENDER_MODE:
+ case GL_RESCALE_NORMAL:
+ case GL_RGBA_MODE:
+ case GL_SCISSOR_TEST:
+ case GL_SELECTION_BUFFER_SIZE:
+ case GL_SEPARABLE_2D:
+ case GL_SHADE_MODEL:
+ case GL_SMOOTH_LINE_WIDTH_GRANULARITY:
+ case GL_SMOOTH_POINT_SIZE_GRANULARITY:
+ case GL_STENCIL_BITS:
+ case GL_STENCIL_CLEAR_VALUE:
+ case GL_STENCIL_FAIL:
+ case GL_STENCIL_FUNC:
+ case GL_STENCIL_PASS_DEPTH_FAIL:
+ case GL_STENCIL_PASS_DEPTH_PASS:
+ case GL_STENCIL_REF:
+ case GL_STENCIL_TEST:
+ case GL_STENCIL_VALUE_MASK:
+ case GL_STENCIL_WRITEMASK:
+ case GL_STEREO:
+ case GL_SUBPIXEL_BITS:
+ case GL_TEXTURE_1D:
+ case GL_TEXTURE_BINDING_1D:
+ case GL_TEXTURE_2D:
+ case GL_TEXTURE_BINDING_2D:
+ case GL_TEXTURE_3D:
+ case GL_TEXTURE_BINDING_3D:
+ case GL_TEXTURE_COORD_ARRAY:
+ case GL_TEXTURE_COORD_ARRAY_SIZE:
+ case GL_TEXTURE_COORD_ARRAY_STRIDE:
+ case GL_TEXTURE_COORD_ARRAY_TYPE:
+ case GL_TEXTURE_GEN_Q:
+ case GL_TEXTURE_GEN_R:
+ case GL_TEXTURE_GEN_S:
+ case GL_TEXTURE_GEN_T:
+ case GL_TEXTURE_STACK_DEPTH:
+ case GL_UNPACK_ALIGNMENT:
+ case GL_UNPACK_IMAGE_HEIGHT:
+ case GL_UNPACK_LSB_FIRST:
+ case GL_UNPACK_ROW_LENGTH:
+ case GL_UNPACK_SKIP_IMAGES:
+ case GL_UNPACK_SKIP_PIXELS:
+ case GL_UNPACK_SKIP_ROWS:
+ case GL_UNPACK_SWAP_BYTES:
+ case GL_VERTEX_ARRAY:
+ case GL_VERTEX_ARRAY_SIZE:
+ case GL_VERTEX_ARRAY_STRIDE:
+ case GL_VERTEX_ARRAY_TYPE:
+ case GL_ZOOM_X:
+ case GL_ZOOM_Y:
+ trWriteBool( params[0] );
+ break;
+
+ default:
+ /* Bad enum. What should we do? */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetBooleanv( pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetClipPlane( GLenum plane, GLdouble *equation ) {
+ trWriteCMD( CMD_GETCLIPPLANE );
+ trWriteEnum( plane );
+ trWritePointer( (void *)equation );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetClipPlane( plane, equation );
+ trError();
+ }
+
+ if( !(trCtx()->doExec) ) {
+ memset( equation, 0, sizeof(GLdouble) );
+ }
+
+ trWriteArrayd( 4, equation );
+}
+
+
+GLAPI void GLAPIENTRY trGetColorTableEXT( GLenum target, GLenum format, GLenum type, GLvoid *table ) { /* TODO */
+
+ trWriteCMD( CMD_GETCOLORTABLEEXT );
+ trWriteEnum( target );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)table );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetColorTableEXT( target, format, type, table );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetColorTable( GLenum target, GLenum format, GLenum type, GLvoid *table ) { /* TODO */
+ trWriteCMD( CMD_GETCOLORTABLE );
+ trWriteEnum( target );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)table );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetColorTable( target, format, type, table );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetColorTableParameterfvEXT( GLenum target, GLenum pname, GLfloat *params ) {
+ trWriteCMD( CMD_GETCOLORTABLEPARAMETERFVEXT );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetColorTableParameterfvEXT( target, pname, params );
+ trError();
+ } else {
+ if( pname == GL_COLOR_TABLE_BIAS || pname == GL_COLOR_TABLE_SCALE ) {
+ memset( params, 0, sizeof(GLfloat) * 4 );
+ } else {
+ params[0] = 0.0;
+ }
+ }
+
+ if( pname == GL_COLOR_TABLE_BIAS || pname == GL_COLOR_TABLE_SCALE ) {
+ trWriteArrayf( 4, params );
+ } else {
+ trWritef( params[0] );
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetColorTableParameterfv( GLenum target, GLenum pname, GLfloat *params ) {
+ trWriteCMD( CMD_GETCOLORTABLEPARAMETERFV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetColorTableParameterfv( target, pname, params );
+ trError();
+ } else {
+ if( pname == GL_COLOR_TABLE_BIAS || pname == GL_COLOR_TABLE_SCALE ) {
+ memset( params, 0, sizeof(GLfloat) * 4 );
+ } else {
+ params[0] = 0.0;
+ }
+ }
+
+ if( pname == GL_COLOR_TABLE_BIAS || pname == GL_COLOR_TABLE_SCALE ) {
+ trWriteArrayf( 4, params );
+ } else {
+ trWritef( params[0] );
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetColorTableParameterivEXT( GLenum target, GLenum pname, GLint *params ) {
+ trWriteCMD( CMD_GETCOLORTABLEPARAMETERIVEXT );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetColorTableParameterivEXT( target, pname, params );
+ trError();
+ } else {
+ if( pname == GL_COLOR_TABLE_BIAS || pname == GL_COLOR_TABLE_SCALE ) {
+ memset( params, 0, sizeof(GLint) * 4 );
+ } else {
+ params[0] = 0;
+ }
+ }
+
+ if( pname == GL_COLOR_TABLE_BIAS || pname == GL_COLOR_TABLE_SCALE ) {
+ trWriteArrayi( 4, params );
+ } else {
+ trWritei( params[0] );
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetColorTableParameteriv( GLenum target, GLenum pname, GLint *params ) {
+ trWriteCMD( CMD_GETCOLORTABLEPARAMETERIV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetColorTableParameteriv( target, pname, params );
+ trError();
+ } else {
+ if( pname == GL_COLOR_TABLE_BIAS || pname == GL_COLOR_TABLE_SCALE ) {
+ memset( params, 0, sizeof(GLint) * 4 );
+ } else {
+ params[0] = 0;
+ }
+ }
+
+ if( pname == GL_COLOR_TABLE_BIAS || pname == GL_COLOR_TABLE_SCALE ) {
+ trWriteArrayi( 4, params );
+ } else {
+ trWritei( params[0] );
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetConvolutionFilter( GLenum target, GLenum format, GLenum type, GLvoid *image ) {
+ trace_context_t * tctx;
+
+ trWriteCMD( CMD_GETCONVOLUTIONFILTER );
+ trWriteEnum( target );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)image );
+ trFileFlush();
+
+ if( tctx->doExec ) {
+ trGetDispatch()->GetConvolutionFilter( target, format, type, image );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetConvolutionParameterfv( GLenum target, GLenum pname, GLfloat *params ) {
+ trWriteCMD( CMD_GETCONVOLUTIONPARAMETERFV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetConvolutionParameterfv( target, pname, params );
+ trError();
+ } else {
+ switch( pname ) {
+ case GL_CONVOLUTION_FILTER_SCALE:
+ case GL_CONVOLUTION_FILTER_BIAS:
+ memset( params, 0, 4 * sizeof(GLfloat) );
+ break;
+ case GL_CONVOLUTION_BORDER_MODE:
+ case GL_CONVOLUTION_BORDER_COLOR:
+ case GL_CONVOLUTION_FORMAT:
+ case GL_CONVOLUTION_WIDTH:
+ case GL_CONVOLUTION_HEIGHT:
+ case GL_MAX_CONVOLUTION_WIDTH:
+ case GL_MAX_CONVOLUTION_HEIGHT:
+ params[0] = 0;
+ break;
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+ }
+
+ switch( pname ) {
+ case GL_CONVOLUTION_FILTER_SCALE:
+ case GL_CONVOLUTION_FILTER_BIAS:
+ trWriteArrayf( 4, params );
+ break;
+ case GL_CONVOLUTION_BORDER_MODE:
+ case GL_CONVOLUTION_BORDER_COLOR:
+ case GL_CONVOLUTION_FORMAT:
+ case GL_CONVOLUTION_WIDTH:
+ case GL_CONVOLUTION_HEIGHT:
+ case GL_MAX_CONVOLUTION_WIDTH:
+ case GL_MAX_CONVOLUTION_HEIGHT:
+ trWritef( params[0] );
+ break;
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetConvolutionParameteriv( GLenum target, GLenum pname, GLint *params ) {
+ trWriteCMD( CMD_GETCONVOLUTIONPARAMETERIV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetConvolutionParameteriv( target, pname, params );
+ trError();
+ } else {
+ switch( pname ) {
+ case GL_CONVOLUTION_FILTER_SCALE:
+ case GL_CONVOLUTION_FILTER_BIAS:
+ memset( params, 0, 4 * sizeof(GLint) );
+ break;
+ case GL_CONVOLUTION_BORDER_MODE:
+ case GL_CONVOLUTION_BORDER_COLOR:
+ case GL_CONVOLUTION_FORMAT:
+ case GL_CONVOLUTION_WIDTH:
+ case GL_CONVOLUTION_HEIGHT:
+ case GL_MAX_CONVOLUTION_WIDTH:
+ case GL_MAX_CONVOLUTION_HEIGHT:
+ params[0] = 0;
+ break;
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+ }
+
+ switch( pname ) {
+ case GL_CONVOLUTION_FILTER_SCALE:
+ case GL_CONVOLUTION_FILTER_BIAS:
+ trWriteArrayi( 4, params );
+ break;
+ case GL_CONVOLUTION_BORDER_MODE:
+ case GL_CONVOLUTION_BORDER_COLOR:
+ case GL_CONVOLUTION_FORMAT:
+ case GL_CONVOLUTION_WIDTH:
+ case GL_CONVOLUTION_HEIGHT:
+ case GL_MAX_CONVOLUTION_WIDTH:
+ case GL_MAX_CONVOLUTION_HEIGHT:
+ trWritei( params[0] );
+ break;
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetDoublev( GLenum pname, GLdouble *params ) {
+ trWriteCMD( CMD_GETDOUBLEV );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetDoublev( pname, params );
+ trError();
+ } else {
+ trZeroGetterData( pname, sizeof(GLdouble), params );
+ }
+
+ switch( pname ) {
+ case GL_COLOR_MATRIX:
+ case GL_MODELVIEW_MATRIX:
+ case GL_PROJECTION_MATRIX:
+ case GL_TEXTURE_MATRIX:
+ trWriteArrayd( 16, params );
+ break;
+
+ case GL_ACCUM_CLEAR_VALUE:
+ case GL_BLEND_COLOR:
+ case GL_COLOR_CLEAR_VALUE:
+ case GL_COLOR_WRITEMASK:
+ case GL_CURRENT_COLOR:
+ case GL_CURRENT_RASTER_COLOR:
+ case GL_CURRENT_RASTER_POSITION:
+ case GL_CURRENT_RASTER_TEXTURE_COORDS:
+ case GL_CURRENT_TEXTURE_COORDS:
+ case GL_LIGHT_MODEL_AMBIENT:
+ case GL_MAP2_GRID_DOMAIN:
+ case GL_SCISSOR_BOX:
+ case GL_VIEWPORT:
+ trWriteArrayd( 4, params );
+ break;
+
+ case GL_CURRENT_NORMAL:
+ trWriteArrayd( 3, params );
+ break;
+
+ case GL_ALIASED_POINT_SIZE_RANGE:
+ case GL_ALIASED_LINE_WIDTH_RANGE:
+ case GL_DEPTH_RANGE:
+ case GL_MAP1_GRID_DOMAIN:
+ case GL_MAP2_GRID_SEGMENTS:
+ case GL_MAX_VIEWPORT_DIMS:
+ case GL_POLYGON_MODE:
+ case GL_SMOOTH_LINE_WIDTH_RANGE:
+ case GL_SMOOTH_POINT_SIZE_RANGE:
+ trWriteArrayd( 2, params );
+ break;
+
+ case GL_ACCUM_ALPHA_BITS:
+ case GL_ACCUM_BLUE_BITS:
+ case GL_ACCUM_GREEN_BITS:
+ case GL_ACCUM_RED_BITS:
+ case GL_ACTIVE_TEXTURE_ARB:
+ case GL_ALPHA_BIAS:
+ case GL_ALPHA_BITS:
+ case GL_ALPHA_SCALE:
+ case GL_ALPHA_TEST:
+ case GL_ALPHA_TEST_FUNC:
+ case GL_ALPHA_TEST_REF:
+ case GL_ATTRIB_STACK_DEPTH:
+ case GL_AUTO_NORMAL:
+ case GL_AUX_BUFFERS:
+ case GL_BLEND:
+ case GL_BLEND_SRC:
+ case GL_BLUE_BIAS:
+ case GL_BLUE_BITS:
+ case GL_BLUE_SCALE:
+ case GL_CLIENT_ACTIVE_TEXTURE_ARB:
+ case GL_CLIENT_ATTRIB_STACK_DEPTH:
+ case GL_CLIP_PLANE0:
+ case GL_CLIP_PLANE1:
+ case GL_CLIP_PLANE2:
+ case GL_CLIP_PLANE3:
+ case GL_CLIP_PLANE4:
+ case GL_CLIP_PLANE5:
+ case GL_COLOR_ARRAY:
+ case GL_COLOR_ARRAY_SIZE:
+ case GL_COLOR_ARRAY_STRIDE:
+ case GL_COLOR_ARRAY_TYPE:
+ case GL_COLOR_LOGIC_OP:
+ case GL_COLOR_MATERIAL:
+ case GL_COLOR_MATERIAL_FACE:
+ case GL_COLOR_MATERIAL_PARAMETER:
+ case GL_COLOR_MATRIX_STACK_DEPTH:
+ case GL_COLOR_TABLE:
+ case GL_CONVOLUTION_1D:
+ case GL_CONVOLUTION_2D:
+ case GL_CULL_FACE:
+ case GL_CULL_FACE_MODE:
+ case GL_CURRENT_INDEX:
+ case GL_CURRENT_RASTER_DISTANCE:
+ case GL_CURRENT_RASTER_INDEX:
+ case GL_CURRENT_RASTER_POSITION_VALID:
+ case GL_DEPTH_BIAS:
+ case GL_DEPTH_CLEAR_VALUE:
+ case GL_DEPTH_FUNC:
+ case GL_DEPTH_SCALE:
+ case GL_DEPTH_TEST:
+ case GL_DEPTH_WRITEMASK:
+ case GL_DITHER:
+ case GL_DOUBLEBUFFER:
+ case GL_DRAW_BUFFER:
+ case GL_EDGE_FLAG:
+ case GL_EDGE_FLAG_ARRAY:
+ case GL_EDGE_FLAG_ARRAY_STRIDE:
+ case GL_FEEDBACK_BUFFER_SIZE:
+ case GL_FEEDBACK_BUFFER_TYPE:
+ case GL_FOG:
+ case GL_FOG_DENSITY:
+ case GL_FOG_END:
+ case GL_FOG_HINT:
+ case GL_FOG_INDEX:
+ case GL_FOG_MODE:
+ case GL_FOG_START:
+ case GL_FRONT_FACE:
+ case GL_GREEN_BIAS:
+ case GL_GREEN_BITS:
+ case GL_GREEN_SCALE:
+ case GL_HISTOGRAM:
+ case GL_INDEX_ARRAY:
+ case GL_INDEX_ARRAY_STRIDE:
+ case GL_INDEX_ARRAY_TYPE:
+ case GL_INDEX_BITS:
+ case GL_INDEX_CLEAR_VALUE:
+ case GL_INDEX_LOGIC_OP:
+ case GL_INDEX_MODE:
+ case GL_INDEX_OFFSET:
+ case GL_INDEX_SHIFT:
+ case GL_INDEX_WRITEMASK:
+ case GL_LIGHT0:
+ case GL_LIGHT1:
+ case GL_LIGHT2:
+ case GL_LIGHT3:
+ case GL_LIGHT4:
+ case GL_LIGHT5:
+ case GL_LIGHT6:
+ case GL_LIGHT7:
+ case GL_LIGHTING:
+ case GL_LIGHT_MODEL_COLOR_CONTROL:
+ case GL_LIGHT_MODEL_LOCAL_VIEWER:
+ case GL_LIGHT_MODEL_TWO_SIDE:
+ case GL_LINE_SMOOTH:
+ case GL_LINE_SMOOTH_HINT:
+ case GL_LINE_STIPPLE:
+ case GL_LINE_STIPPLE_PATTERN:
+ case GL_LINE_STIPPLE_REPEAT:
+ case GL_LINE_WIDTH:
+ case GL_LIST_BASE:
+ case GL_LIST_INDEX:
+ case GL_LIST_MODE:
+ case GL_LOGIC_OP_MODE:
+ case GL_MAP1_COLOR_4:
+ case GL_MAP1_GRID_SEGMENTS:
+ case GL_MAP1_INDEX:
+ case GL_MAP1_NORMAL:
+ case GL_MAP1_TEXTURE_COORD_1:
+ case GL_MAP1_TEXTURE_COORD_2:
+ case GL_MAP1_TEXTURE_COORD_3:
+ case GL_MAP1_TEXTURE_COORD_4:
+ case GL_MAP1_VERTEX_3:
+ case GL_MAP1_VERTEX_4:
+ case GL_MAP2_COLOR_4:
+ case GL_MAP2_INDEX:
+ case GL_MAP2_NORMAL:
+ case GL_MAP2_TEXTURE_COORD_1:
+ case GL_MAP2_TEXTURE_COORD_2:
+ case GL_MAP2_TEXTURE_COORD_3:
+ case GL_MAP2_TEXTURE_COORD_4:
+ case GL_MAP2_VERTEX_3:
+ case GL_MAP2_VERTEX_4:
+ case GL_MAP_COLOR:
+ case GL_MAP_STENCIL:
+ case GL_MATRIX_MODE:
+ case GL_MAX_3D_TEXTURE_SIZE:
+ case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
+ case GL_MAX_ATTRIB_STACK_DEPTH:
+ case GL_MAX_CLIP_PLANES:
+ case GL_MAX_COLOR_MATRIX_STACK_DEPTH:
+ case GL_MAX_ELEMENTS_VERTICES:
+ case GL_MAX_EVAL_ORDER:
+ case GL_MAX_LIGHTS:
+ case GL_MAX_LIST_NESTING:
+ case GL_MAX_MODELVIEW_STACK_DEPTH:
+ case GL_MAX_NAME_STACK_DEPTH:
+ case GL_MAX_PIXEL_MAP_TABLE:
+ case GL_MAX_PROJECTION_STACK_DEPTH:
+ case GL_MAX_TEXTURE_SIZE:
+ case GL_MAX_TEXTURE_STACK_DEPTH:
+ case GL_MAX_TEXTURE_UNITS_ARB:
+ case GL_MINMAX:
+ case GL_MODELVIEW_STACK_DEPTH:
+ case GL_NAME_STACK_DEPTH:
+ case GL_NORMAL_ARRAY:
+ case GL_NORMAL_ARRAY_STRIDE:
+ case GL_NORMAL_ARRAY_TYPE:
+ case GL_NORMALIZE:
+ case GL_PACK_ALIGNMENT:
+ case GL_PACK_IMAGE_HEIGHT:
+ case GL_PACK_LSB_FIRST:
+ case GL_PACK_ROW_LENGTH:
+ case GL_PACK_SKIP_IMAGES:
+ case GL_PACK_SKIP_PIXELS:
+ case GL_PACK_SKIP_ROWS:
+ case GL_PACK_SWAP_BYTES:
+ case GL_PERSPECTIVE_CORRECTION_HINT:
+ case GL_PIXEL_MAP_A_TO_A_SIZE:
+ case GL_PIXEL_MAP_B_TO_B_SIZE:
+ case GL_PIXEL_MAP_G_TO_G_SIZE:
+ case GL_PIXEL_MAP_I_TO_A_SIZE:
+ case GL_PIXEL_MAP_I_TO_B_SIZE:
+ case GL_PIXEL_MAP_I_TO_G_SIZE:
+ case GL_PIXEL_MAP_I_TO_I_SIZE:
+ case GL_PIXEL_MAP_I_TO_R_SIZE:
+ case GL_PIXEL_MAP_R_TO_R_SIZE:
+ case GL_PIXEL_MAP_S_TO_S_SIZE:
+ case GL_POINT_SIZE:
+ case GL_POINT_SMOOTH:
+ case GL_POINT_SMOOTH_HINT:
+ case GL_POLYGON_OFFSET_FACTOR:
+ case GL_POLYGON_OFFSET_UNITS:
+ case GL_POLYGON_OFFSET_FILL:
+ case GL_POLYGON_OFFSET_LINE:
+ case GL_POLYGON_OFFSET_POINT:
+ case GL_POLYGON_SMOOTH:
+ case GL_POLYGON_SMOOTH_HINT:
+ case GL_POLYGON_STIPPLE:
+ case GL_POST_COLOR_MATRIX_COLOR_TABLE:
+ case GL_POST_COLOR_MATRIX_RED_BIAS:
+ case GL_POST_COLOR_MATRIX_GREEN_BIAS:
+ case GL_POST_COLOR_MATRIX_BLUE_BIAS:
+ case GL_POST_COLOR_MATRIX_ALPHA_BIAS:
+ case GL_POST_COLOR_MATRIX_RED_SCALE:
+ case GL_POST_COLOR_MATRIX_GREEN_SCALE:
+ case GL_POST_COLOR_MATRIX_BLUE_SCALE:
+ case GL_POST_COLOR_MATRIX_ALPHA_SCALE:
+ case GL_POST_CONVOLUTION_COLOR_TABLE:
+ case GL_POST_CONVOLUTION_RED_BIAS:
+ case GL_POST_CONVOLUTION_GREEN_BIAS:
+ case GL_POST_CONVOLUTION_BLUE_BIAS:
+ case GL_POST_CONVOLUTION_ALPHA_BIAS:
+ case GL_POST_CONVOLUTION_RED_SCALE:
+ case GL_POST_CONVOLUTION_GREEN_SCALE:
+ case GL_POST_CONVOLUTION_BLUE_SCALE:
+ case GL_POST_CONVOLUTION_ALPHA_SCALE:
+ case GL_PROJECTION_STACK_DEPTH:
+ case GL_READ_BUFFER:
+ case GL_RED_BIAS:
+ case GL_RED_BITS:
+ case GL_RED_SCALE:
+ case GL_RENDER_MODE:
+ case GL_RESCALE_NORMAL:
+ case GL_RGBA_MODE:
+ case GL_SCISSOR_TEST:
+ case GL_SELECTION_BUFFER_SIZE:
+ case GL_SEPARABLE_2D:
+ case GL_SHADE_MODEL:
+ case GL_SMOOTH_LINE_WIDTH_GRANULARITY:
+ case GL_SMOOTH_POINT_SIZE_GRANULARITY:
+ case GL_STENCIL_BITS:
+ case GL_STENCIL_CLEAR_VALUE:
+ case GL_STENCIL_FAIL:
+ case GL_STENCIL_FUNC:
+ case GL_STENCIL_PASS_DEPTH_FAIL:
+ case GL_STENCIL_PASS_DEPTH_PASS:
+ case GL_STENCIL_REF:
+ case GL_STENCIL_TEST:
+ case GL_STENCIL_VALUE_MASK:
+ case GL_STENCIL_WRITEMASK:
+ case GL_STEREO:
+ case GL_SUBPIXEL_BITS:
+ case GL_TEXTURE_1D:
+ case GL_TEXTURE_BINDING_1D:
+ case GL_TEXTURE_2D:
+ case GL_TEXTURE_BINDING_2D:
+ case GL_TEXTURE_3D:
+ case GL_TEXTURE_BINDING_3D:
+ case GL_TEXTURE_COORD_ARRAY:
+ case GL_TEXTURE_COORD_ARRAY_SIZE:
+ case GL_TEXTURE_COORD_ARRAY_STRIDE:
+ case GL_TEXTURE_COORD_ARRAY_TYPE:
+ case GL_TEXTURE_GEN_Q:
+ case GL_TEXTURE_GEN_R:
+ case GL_TEXTURE_GEN_S:
+ case GL_TEXTURE_GEN_T:
+ case GL_TEXTURE_STACK_DEPTH:
+ case GL_UNPACK_ALIGNMENT:
+ case GL_UNPACK_IMAGE_HEIGHT:
+ case GL_UNPACK_LSB_FIRST:
+ case GL_UNPACK_ROW_LENGTH:
+ case GL_UNPACK_SKIP_IMAGES:
+ case GL_UNPACK_SKIP_PIXELS:
+ case GL_UNPACK_SKIP_ROWS:
+ case GL_UNPACK_SWAP_BYTES:
+ case GL_VERTEX_ARRAY:
+ case GL_VERTEX_ARRAY_SIZE:
+ case GL_VERTEX_ARRAY_STRIDE:
+ case GL_VERTEX_ARRAY_TYPE:
+ case GL_ZOOM_X:
+ case GL_ZOOM_Y:
+ trWrited( params[0] );
+ break;
+
+ default:
+ /* Bad enum. What should we do? */
+ break;
+ }
+
+}
+
+
+GLAPI GLenum GLAPIENTRY trGetError( void ) {
+ GLenum retval;
+ trWriteCMD( CMD_GETERROR );
+
+ if( trCtx()->doExec ) {
+ retval = trGetDispatch()->GetError( );
+ trError();
+ } else {
+ retval = GL_NO_ERROR;
+ }
+
+ trWriteEnum( retval );
+ return retval;
+}
+
+
+GLAPI void GLAPIENTRY trGetFloatv( GLenum pname, GLfloat *params ) {
+ trWriteCMD( CMD_GETFLOATV );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetFloatv( pname, params );
+ trError();
+ } else {
+ trZeroGetterData( pname, sizeof(GLfloat), params );
+ }
+
+ switch( pname ) {
+ case GL_COLOR_MATRIX:
+ case GL_MODELVIEW_MATRIX:
+ case GL_PROJECTION_MATRIX:
+ case GL_TEXTURE_MATRIX:
+ trWriteArrayf( 16, params );
+ break;
+
+ case GL_ACCUM_CLEAR_VALUE:
+ case GL_BLEND_COLOR:
+ case GL_COLOR_CLEAR_VALUE:
+ case GL_COLOR_WRITEMASK:
+ case GL_CURRENT_COLOR:
+ case GL_CURRENT_RASTER_COLOR:
+ case GL_CURRENT_RASTER_POSITION:
+ case GL_CURRENT_RASTER_TEXTURE_COORDS:
+ case GL_CURRENT_TEXTURE_COORDS:
+ case GL_LIGHT_MODEL_AMBIENT:
+ case GL_MAP2_GRID_DOMAIN:
+ case GL_SCISSOR_BOX:
+ case GL_VIEWPORT:
+ trWriteArrayf( 4, params );
+ break;
+
+ case GL_CURRENT_NORMAL:
+ trWriteArrayf( 3, params );
+ break;
+
+ case GL_ALIASED_POINT_SIZE_RANGE:
+ case GL_ALIASED_LINE_WIDTH_RANGE:
+ case GL_DEPTH_RANGE:
+ case GL_MAP1_GRID_DOMAIN:
+ case GL_MAP2_GRID_SEGMENTS:
+ case GL_MAX_VIEWPORT_DIMS:
+ case GL_POLYGON_MODE:
+ case GL_SMOOTH_LINE_WIDTH_RANGE:
+ case GL_SMOOTH_POINT_SIZE_RANGE:
+ trWriteArrayf( 2, params );
+ break;
+
+ case GL_ACCUM_ALPHA_BITS:
+ case GL_ACCUM_BLUE_BITS:
+ case GL_ACCUM_GREEN_BITS:
+ case GL_ACCUM_RED_BITS:
+ case GL_ACTIVE_TEXTURE_ARB:
+ case GL_ALPHA_BIAS:
+ case GL_ALPHA_BITS:
+ case GL_ALPHA_SCALE:
+ case GL_ALPHA_TEST:
+ case GL_ALPHA_TEST_FUNC:
+ case GL_ALPHA_TEST_REF:
+ case GL_ATTRIB_STACK_DEPTH:
+ case GL_AUTO_NORMAL:
+ case GL_AUX_BUFFERS:
+ case GL_BLEND:
+ case GL_BLEND_SRC:
+ case GL_BLUE_BIAS:
+ case GL_BLUE_BITS:
+ case GL_BLUE_SCALE:
+ case GL_CLIENT_ACTIVE_TEXTURE_ARB:
+ case GL_CLIENT_ATTRIB_STACK_DEPTH:
+ case GL_CLIP_PLANE0:
+ case GL_CLIP_PLANE1:
+ case GL_CLIP_PLANE2:
+ case GL_CLIP_PLANE3:
+ case GL_CLIP_PLANE4:
+ case GL_CLIP_PLANE5:
+ case GL_COLOR_ARRAY:
+ case GL_COLOR_ARRAY_SIZE:
+ case GL_COLOR_ARRAY_STRIDE:
+ case GL_COLOR_ARRAY_TYPE:
+ case GL_COLOR_LOGIC_OP:
+ case GL_COLOR_MATERIAL:
+ case GL_COLOR_MATERIAL_FACE:
+ case GL_COLOR_MATERIAL_PARAMETER:
+ case GL_COLOR_MATRIX_STACK_DEPTH:
+ case GL_COLOR_TABLE:
+ case GL_CONVOLUTION_1D:
+ case GL_CONVOLUTION_2D:
+ case GL_CULL_FACE:
+ case GL_CULL_FACE_MODE:
+ case GL_CURRENT_INDEX:
+ case GL_CURRENT_RASTER_DISTANCE:
+ case GL_CURRENT_RASTER_INDEX:
+ case GL_CURRENT_RASTER_POSITION_VALID:
+ case GL_DEPTH_BIAS:
+ case GL_DEPTH_CLEAR_VALUE:
+ case GL_DEPTH_FUNC:
+ case GL_DEPTH_SCALE:
+ case GL_DEPTH_TEST:
+ case GL_DEPTH_WRITEMASK:
+ case GL_DITHER:
+ case GL_DOUBLEBUFFER:
+ case GL_DRAW_BUFFER:
+ case GL_EDGE_FLAG:
+ case GL_EDGE_FLAG_ARRAY:
+ case GL_EDGE_FLAG_ARRAY_STRIDE:
+ case GL_FEEDBACK_BUFFER_SIZE:
+ case GL_FEEDBACK_BUFFER_TYPE:
+ case GL_FOG:
+ case GL_FOG_DENSITY:
+ case GL_FOG_END:
+ case GL_FOG_HINT:
+ case GL_FOG_INDEX:
+ case GL_FOG_MODE:
+ case GL_FOG_START:
+ case GL_FRONT_FACE:
+ case GL_GREEN_BIAS:
+ case GL_GREEN_BITS:
+ case GL_GREEN_SCALE:
+ case GL_HISTOGRAM:
+ case GL_INDEX_ARRAY:
+ case GL_INDEX_ARRAY_STRIDE:
+ case GL_INDEX_ARRAY_TYPE:
+ case GL_INDEX_BITS:
+ case GL_INDEX_CLEAR_VALUE:
+ case GL_INDEX_LOGIC_OP:
+ case GL_INDEX_MODE:
+ case GL_INDEX_OFFSET:
+ case GL_INDEX_SHIFT:
+ case GL_INDEX_WRITEMASK:
+ case GL_LIGHT0:
+ case GL_LIGHT1:
+ case GL_LIGHT2:
+ case GL_LIGHT3:
+ case GL_LIGHT4:
+ case GL_LIGHT5:
+ case GL_LIGHT6:
+ case GL_LIGHT7:
+ case GL_LIGHTING:
+ case GL_LIGHT_MODEL_COLOR_CONTROL:
+ case GL_LIGHT_MODEL_LOCAL_VIEWER:
+ case GL_LIGHT_MODEL_TWO_SIDE:
+ case GL_LINE_SMOOTH:
+ case GL_LINE_SMOOTH_HINT:
+ case GL_LINE_STIPPLE:
+ case GL_LINE_STIPPLE_PATTERN:
+ case GL_LINE_STIPPLE_REPEAT:
+ case GL_LINE_WIDTH:
+ case GL_LIST_BASE:
+ case GL_LIST_INDEX:
+ case GL_LIST_MODE:
+ case GL_LOGIC_OP_MODE:
+ case GL_MAP1_COLOR_4:
+ case GL_MAP1_GRID_SEGMENTS:
+ case GL_MAP1_INDEX:
+ case GL_MAP1_NORMAL:
+ case GL_MAP1_TEXTURE_COORD_1:
+ case GL_MAP1_TEXTURE_COORD_2:
+ case GL_MAP1_TEXTURE_COORD_3:
+ case GL_MAP1_TEXTURE_COORD_4:
+ case GL_MAP1_VERTEX_3:
+ case GL_MAP1_VERTEX_4:
+ case GL_MAP2_COLOR_4:
+ case GL_MAP2_INDEX:
+ case GL_MAP2_NORMAL:
+ case GL_MAP2_TEXTURE_COORD_1:
+ case GL_MAP2_TEXTURE_COORD_2:
+ case GL_MAP2_TEXTURE_COORD_3:
+ case GL_MAP2_TEXTURE_COORD_4:
+ case GL_MAP2_VERTEX_3:
+ case GL_MAP2_VERTEX_4:
+ case GL_MAP_COLOR:
+ case GL_MAP_STENCIL:
+ case GL_MATRIX_MODE:
+ case GL_MAX_3D_TEXTURE_SIZE:
+ case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
+ case GL_MAX_ATTRIB_STACK_DEPTH:
+ case GL_MAX_CLIP_PLANES:
+ case GL_MAX_COLOR_MATRIX_STACK_DEPTH:
+ case GL_MAX_ELEMENTS_VERTICES:
+ case GL_MAX_EVAL_ORDER:
+ case GL_MAX_LIGHTS:
+ case GL_MAX_LIST_NESTING:
+ case GL_MAX_MODELVIEW_STACK_DEPTH:
+ case GL_MAX_NAME_STACK_DEPTH:
+ case GL_MAX_PIXEL_MAP_TABLE:
+ case GL_MAX_PROJECTION_STACK_DEPTH:
+ case GL_MAX_TEXTURE_SIZE:
+ case GL_MAX_TEXTURE_STACK_DEPTH:
+ case GL_MAX_TEXTURE_UNITS_ARB:
+ case GL_MINMAX:
+ case GL_MODELVIEW_STACK_DEPTH:
+ case GL_NAME_STACK_DEPTH:
+ case GL_NORMAL_ARRAY:
+ case GL_NORMAL_ARRAY_STRIDE:
+ case GL_NORMAL_ARRAY_TYPE:
+ case GL_NORMALIZE:
+ case GL_PACK_ALIGNMENT:
+ case GL_PACK_IMAGE_HEIGHT:
+ case GL_PACK_LSB_FIRST:
+ case GL_PACK_ROW_LENGTH:
+ case GL_PACK_SKIP_IMAGES:
+ case GL_PACK_SKIP_PIXELS:
+ case GL_PACK_SKIP_ROWS:
+ case GL_PACK_SWAP_BYTES:
+ case GL_PERSPECTIVE_CORRECTION_HINT:
+ case GL_PIXEL_MAP_A_TO_A_SIZE:
+ case GL_PIXEL_MAP_B_TO_B_SIZE:
+ case GL_PIXEL_MAP_G_TO_G_SIZE:
+ case GL_PIXEL_MAP_I_TO_A_SIZE:
+ case GL_PIXEL_MAP_I_TO_B_SIZE:
+ case GL_PIXEL_MAP_I_TO_G_SIZE:
+ case GL_PIXEL_MAP_I_TO_I_SIZE:
+ case GL_PIXEL_MAP_I_TO_R_SIZE:
+ case GL_PIXEL_MAP_R_TO_R_SIZE:
+ case GL_PIXEL_MAP_S_TO_S_SIZE:
+ case GL_POINT_SIZE:
+ case GL_POINT_SMOOTH:
+ case GL_POINT_SMOOTH_HINT:
+ case GL_POLYGON_OFFSET_FACTOR:
+ case GL_POLYGON_OFFSET_UNITS:
+ case GL_POLYGON_OFFSET_FILL:
+ case GL_POLYGON_OFFSET_LINE:
+ case GL_POLYGON_OFFSET_POINT:
+ case GL_POLYGON_SMOOTH:
+ case GL_POLYGON_SMOOTH_HINT:
+ case GL_POLYGON_STIPPLE:
+ case GL_POST_COLOR_MATRIX_COLOR_TABLE:
+ case GL_POST_COLOR_MATRIX_RED_BIAS:
+ case GL_POST_COLOR_MATRIX_GREEN_BIAS:
+ case GL_POST_COLOR_MATRIX_BLUE_BIAS:
+ case GL_POST_COLOR_MATRIX_ALPHA_BIAS:
+ case GL_POST_COLOR_MATRIX_RED_SCALE:
+ case GL_POST_COLOR_MATRIX_GREEN_SCALE:
+ case GL_POST_COLOR_MATRIX_BLUE_SCALE:
+ case GL_POST_COLOR_MATRIX_ALPHA_SCALE:
+ case GL_POST_CONVOLUTION_COLOR_TABLE:
+ case GL_POST_CONVOLUTION_RED_BIAS:
+ case GL_POST_CONVOLUTION_GREEN_BIAS:
+ case GL_POST_CONVOLUTION_BLUE_BIAS:
+ case GL_POST_CONVOLUTION_ALPHA_BIAS:
+ case GL_POST_CONVOLUTION_RED_SCALE:
+ case GL_POST_CONVOLUTION_GREEN_SCALE:
+ case GL_POST_CONVOLUTION_BLUE_SCALE:
+ case GL_POST_CONVOLUTION_ALPHA_SCALE:
+ case GL_PROJECTION_STACK_DEPTH:
+ case GL_READ_BUFFER:
+ case GL_RED_BIAS:
+ case GL_RED_BITS:
+ case GL_RED_SCALE:
+ case GL_RENDER_MODE:
+ case GL_RESCALE_NORMAL:
+ case GL_RGBA_MODE:
+ case GL_SCISSOR_TEST:
+ case GL_SELECTION_BUFFER_SIZE:
+ case GL_SEPARABLE_2D:
+ case GL_SHADE_MODEL:
+ case GL_SMOOTH_LINE_WIDTH_GRANULARITY:
+ case GL_SMOOTH_POINT_SIZE_GRANULARITY:
+ case GL_STENCIL_BITS:
+ case GL_STENCIL_CLEAR_VALUE:
+ case GL_STENCIL_FAIL:
+ case GL_STENCIL_FUNC:
+ case GL_STENCIL_PASS_DEPTH_FAIL:
+ case GL_STENCIL_PASS_DEPTH_PASS:
+ case GL_STENCIL_REF:
+ case GL_STENCIL_TEST:
+ case GL_STENCIL_VALUE_MASK:
+ case GL_STENCIL_WRITEMASK:
+ case GL_STEREO:
+ case GL_SUBPIXEL_BITS:
+ case GL_TEXTURE_1D:
+ case GL_TEXTURE_BINDING_1D:
+ case GL_TEXTURE_2D:
+ case GL_TEXTURE_BINDING_2D:
+ case GL_TEXTURE_3D:
+ case GL_TEXTURE_BINDING_3D:
+ case GL_TEXTURE_COORD_ARRAY:
+ case GL_TEXTURE_COORD_ARRAY_SIZE:
+ case GL_TEXTURE_COORD_ARRAY_STRIDE:
+ case GL_TEXTURE_COORD_ARRAY_TYPE:
+ case GL_TEXTURE_GEN_Q:
+ case GL_TEXTURE_GEN_R:
+ case GL_TEXTURE_GEN_S:
+ case GL_TEXTURE_GEN_T:
+ case GL_TEXTURE_STACK_DEPTH:
+ case GL_UNPACK_ALIGNMENT:
+ case GL_UNPACK_IMAGE_HEIGHT:
+ case GL_UNPACK_LSB_FIRST:
+ case GL_UNPACK_ROW_LENGTH:
+ case GL_UNPACK_SKIP_IMAGES:
+ case GL_UNPACK_SKIP_PIXELS:
+ case GL_UNPACK_SKIP_ROWS:
+ case GL_UNPACK_SWAP_BYTES:
+ case GL_VERTEX_ARRAY:
+ case GL_VERTEX_ARRAY_SIZE:
+ case GL_VERTEX_ARRAY_STRIDE:
+ case GL_VERTEX_ARRAY_TYPE:
+ case GL_ZOOM_X:
+ case GL_ZOOM_Y:
+ trWritef( params[0] );
+ break;
+
+ default:
+ /* Bad enum. What should we do? */
+ break;
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetHistogram( GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values ) { /* TODO */
+ trWriteCMD( CMD_GETHISTOGRAM );
+ trWriteEnum( target );
+ trWriteBool( reset );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)values );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetHistogram( target, reset, format, type, values );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetHistogramParameterfv( GLenum target, GLenum pname, GLfloat *params ) {
+ trWriteCMD( CMD_GETHISTOGRAMPARAMETERFV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetHistogramParameterfv( target, pname, params );
+ trError();
+ } else {
+ params[0] = 0;
+ }
+
+ trWritef( params[0] );
+}
+
+
+GLAPI void GLAPIENTRY trGetHistogramParameteriv( GLenum target, GLenum pname, GLint *params ) {
+ trWriteCMD( CMD_GETHISTOGRAMPARAMETERIV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetHistogramParameteriv( target, pname, params );
+ trError();
+ } else {
+ params[0] = 0;
+ }
+
+ trWritei( params[0] );
+}
+
+
+GLAPI void GLAPIENTRY trGetIntegerv( GLenum pname, GLint *params ) {
+ trWriteCMD( CMD_GETINTEGERV );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetIntegerv( pname, params );
+ trError();
+ } else {
+ trZeroGetterData( pname, sizeof(GLint), params );
+ }
+
+ switch( pname ) {
+ case GL_COLOR_MATRIX:
+ case GL_MODELVIEW_MATRIX:
+ case GL_PROJECTION_MATRIX:
+ case GL_TEXTURE_MATRIX:
+ trWriteArrayi( 16, params );
+ break;
+
+ case GL_ACCUM_CLEAR_VALUE:
+ case GL_BLEND_COLOR:
+ case GL_COLOR_CLEAR_VALUE:
+ case GL_COLOR_WRITEMASK:
+ case GL_CURRENT_COLOR:
+ case GL_CURRENT_RASTER_COLOR:
+ case GL_CURRENT_RASTER_POSITION:
+ case GL_CURRENT_RASTER_TEXTURE_COORDS:
+ case GL_CURRENT_TEXTURE_COORDS:
+ case GL_LIGHT_MODEL_AMBIENT:
+ case GL_MAP2_GRID_DOMAIN:
+ case GL_SCISSOR_BOX:
+ case GL_VIEWPORT:
+ trWriteArrayi( 4, params );
+ break;
+
+ case GL_CURRENT_NORMAL:
+ trWriteArrayi( 3, params );
+ break;
+
+ case GL_ALIASED_POINT_SIZE_RANGE:
+ case GL_ALIASED_LINE_WIDTH_RANGE:
+ case GL_DEPTH_RANGE:
+ case GL_MAP1_GRID_DOMAIN:
+ case GL_MAP2_GRID_SEGMENTS:
+ case GL_MAX_VIEWPORT_DIMS:
+ case GL_POLYGON_MODE:
+ case GL_SMOOTH_LINE_WIDTH_RANGE:
+ case GL_SMOOTH_POINT_SIZE_RANGE:
+ trWriteArrayi( 2, params );
+ break;
+
+ case GL_ACCUM_ALPHA_BITS:
+ case GL_ACCUM_BLUE_BITS:
+ case GL_ACCUM_GREEN_BITS:
+ case GL_ACCUM_RED_BITS:
+ case GL_ACTIVE_TEXTURE_ARB:
+ case GL_ALPHA_BIAS:
+ case GL_ALPHA_BITS:
+ case GL_ALPHA_SCALE:
+ case GL_ALPHA_TEST:
+ case GL_ALPHA_TEST_FUNC:
+ case GL_ALPHA_TEST_REF:
+ case GL_ATTRIB_STACK_DEPTH:
+ case GL_AUTO_NORMAL:
+ case GL_AUX_BUFFERS:
+ case GL_BLEND:
+ case GL_BLEND_SRC:
+ case GL_BLUE_BIAS:
+ case GL_BLUE_BITS:
+ case GL_BLUE_SCALE:
+ case GL_CLIENT_ACTIVE_TEXTURE_ARB:
+ case GL_CLIENT_ATTRIB_STACK_DEPTH:
+ case GL_CLIP_PLANE0:
+ case GL_CLIP_PLANE1:
+ case GL_CLIP_PLANE2:
+ case GL_CLIP_PLANE3:
+ case GL_CLIP_PLANE4:
+ case GL_CLIP_PLANE5:
+ case GL_COLOR_ARRAY:
+ case GL_COLOR_ARRAY_SIZE:
+ case GL_COLOR_ARRAY_STRIDE:
+ case GL_COLOR_ARRAY_TYPE:
+ case GL_COLOR_LOGIC_OP:
+ case GL_COLOR_MATERIAL:
+ case GL_COLOR_MATERIAL_FACE:
+ case GL_COLOR_MATERIAL_PARAMETER:
+ case GL_COLOR_MATRIX_STACK_DEPTH:
+ case GL_COLOR_TABLE:
+ case GL_CONVOLUTION_1D:
+ case GL_CONVOLUTION_2D:
+ case GL_CULL_FACE:
+ case GL_CULL_FACE_MODE:
+ case GL_CURRENT_INDEX:
+ case GL_CURRENT_RASTER_DISTANCE:
+ case GL_CURRENT_RASTER_INDEX:
+ case GL_CURRENT_RASTER_POSITION_VALID:
+ case GL_DEPTH_BIAS:
+ case GL_DEPTH_CLEAR_VALUE:
+ case GL_DEPTH_FUNC:
+ case GL_DEPTH_SCALE:
+ case GL_DEPTH_TEST:
+ case GL_DEPTH_WRITEMASK:
+ case GL_DITHER:
+ case GL_DOUBLEBUFFER:
+ case GL_DRAW_BUFFER:
+ case GL_EDGE_FLAG:
+ case GL_EDGE_FLAG_ARRAY:
+ case GL_EDGE_FLAG_ARRAY_STRIDE:
+ case GL_FEEDBACK_BUFFER_SIZE:
+ case GL_FEEDBACK_BUFFER_TYPE:
+ case GL_FOG:
+ case GL_FOG_DENSITY:
+ case GL_FOG_END:
+ case GL_FOG_HINT:
+ case GL_FOG_INDEX:
+ case GL_FOG_MODE:
+ case GL_FOG_START:
+ case GL_FRONT_FACE:
+ case GL_GREEN_BIAS:
+ case GL_GREEN_BITS:
+ case GL_GREEN_SCALE:
+ case GL_HISTOGRAM:
+ case GL_INDEX_ARRAY:
+ case GL_INDEX_ARRAY_STRIDE:
+ case GL_INDEX_ARRAY_TYPE:
+ case GL_INDEX_BITS:
+ case GL_INDEX_CLEAR_VALUE:
+ case GL_INDEX_LOGIC_OP:
+ case GL_INDEX_MODE:
+ case GL_INDEX_OFFSET:
+ case GL_INDEX_SHIFT:
+ case GL_INDEX_WRITEMASK:
+ case GL_LIGHT0:
+ case GL_LIGHT1:
+ case GL_LIGHT2:
+ case GL_LIGHT3:
+ case GL_LIGHT4:
+ case GL_LIGHT5:
+ case GL_LIGHT6:
+ case GL_LIGHT7:
+ case GL_LIGHTING:
+ case GL_LIGHT_MODEL_COLOR_CONTROL:
+ case GL_LIGHT_MODEL_LOCAL_VIEWER:
+ case GL_LIGHT_MODEL_TWO_SIDE:
+ case GL_LINE_SMOOTH:
+ case GL_LINE_SMOOTH_HINT:
+ case GL_LINE_STIPPLE:
+ case GL_LINE_STIPPLE_PATTERN:
+ case GL_LINE_STIPPLE_REPEAT:
+ case GL_LINE_WIDTH:
+ case GL_LIST_BASE:
+ case GL_LIST_INDEX:
+ case GL_LIST_MODE:
+ case GL_LOGIC_OP_MODE:
+ case GL_MAP1_COLOR_4:
+ case GL_MAP1_GRID_SEGMENTS:
+ case GL_MAP1_INDEX:
+ case GL_MAP1_NORMAL:
+ case GL_MAP1_TEXTURE_COORD_1:
+ case GL_MAP1_TEXTURE_COORD_2:
+ case GL_MAP1_TEXTURE_COORD_3:
+ case GL_MAP1_TEXTURE_COORD_4:
+ case GL_MAP1_VERTEX_3:
+ case GL_MAP1_VERTEX_4:
+ case GL_MAP2_COLOR_4:
+ case GL_MAP2_INDEX:
+ case GL_MAP2_NORMAL:
+ case GL_MAP2_TEXTURE_COORD_1:
+ case GL_MAP2_TEXTURE_COORD_2:
+ case GL_MAP2_TEXTURE_COORD_3:
+ case GL_MAP2_TEXTURE_COORD_4:
+ case GL_MAP2_VERTEX_3:
+ case GL_MAP2_VERTEX_4:
+ case GL_MAP_COLOR:
+ case GL_MAP_STENCIL:
+ case GL_MATRIX_MODE:
+ case GL_MAX_3D_TEXTURE_SIZE:
+ case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
+ case GL_MAX_ATTRIB_STACK_DEPTH:
+ case GL_MAX_CLIP_PLANES:
+ case GL_MAX_COLOR_MATRIX_STACK_DEPTH:
+ case GL_MAX_ELEMENTS_VERTICES:
+ case GL_MAX_EVAL_ORDER:
+ case GL_MAX_LIGHTS:
+ case GL_MAX_LIST_NESTING:
+ case GL_MAX_MODELVIEW_STACK_DEPTH:
+ case GL_MAX_NAME_STACK_DEPTH:
+ case GL_MAX_PIXEL_MAP_TABLE:
+ case GL_MAX_PROJECTION_STACK_DEPTH:
+ case GL_MAX_TEXTURE_SIZE:
+ case GL_MAX_TEXTURE_STACK_DEPTH:
+ case GL_MAX_TEXTURE_UNITS_ARB:
+ case GL_MINMAX:
+ case GL_MODELVIEW_STACK_DEPTH:
+ case GL_NAME_STACK_DEPTH:
+ case GL_NORMAL_ARRAY:
+ case GL_NORMAL_ARRAY_STRIDE:
+ case GL_NORMAL_ARRAY_TYPE:
+ case GL_NORMALIZE:
+ case GL_PACK_ALIGNMENT:
+ case GL_PACK_IMAGE_HEIGHT:
+ case GL_PACK_LSB_FIRST:
+ case GL_PACK_ROW_LENGTH:
+ case GL_PACK_SKIP_IMAGES:
+ case GL_PACK_SKIP_PIXELS:
+ case GL_PACK_SKIP_ROWS:
+ case GL_PACK_SWAP_BYTES:
+ case GL_PERSPECTIVE_CORRECTION_HINT:
+ case GL_PIXEL_MAP_A_TO_A_SIZE:
+ case GL_PIXEL_MAP_B_TO_B_SIZE:
+ case GL_PIXEL_MAP_G_TO_G_SIZE:
+ case GL_PIXEL_MAP_I_TO_A_SIZE:
+ case GL_PIXEL_MAP_I_TO_B_SIZE:
+ case GL_PIXEL_MAP_I_TO_G_SIZE:
+ case GL_PIXEL_MAP_I_TO_I_SIZE:
+ case GL_PIXEL_MAP_I_TO_R_SIZE:
+ case GL_PIXEL_MAP_R_TO_R_SIZE:
+ case GL_PIXEL_MAP_S_TO_S_SIZE:
+ case GL_POINT_SIZE:
+ case GL_POINT_SMOOTH:
+ case GL_POINT_SMOOTH_HINT:
+ case GL_POLYGON_OFFSET_FACTOR:
+ case GL_POLYGON_OFFSET_UNITS:
+ case GL_POLYGON_OFFSET_FILL:
+ case GL_POLYGON_OFFSET_LINE:
+ case GL_POLYGON_OFFSET_POINT:
+ case GL_POLYGON_SMOOTH:
+ case GL_POLYGON_SMOOTH_HINT:
+ case GL_POLYGON_STIPPLE:
+ case GL_POST_COLOR_MATRIX_COLOR_TABLE:
+ case GL_POST_COLOR_MATRIX_RED_BIAS:
+ case GL_POST_COLOR_MATRIX_GREEN_BIAS:
+ case GL_POST_COLOR_MATRIX_BLUE_BIAS:
+ case GL_POST_COLOR_MATRIX_ALPHA_BIAS:
+ case GL_POST_COLOR_MATRIX_RED_SCALE:
+ case GL_POST_COLOR_MATRIX_GREEN_SCALE:
+ case GL_POST_COLOR_MATRIX_BLUE_SCALE:
+ case GL_POST_COLOR_MATRIX_ALPHA_SCALE:
+ case GL_POST_CONVOLUTION_COLOR_TABLE:
+ case GL_POST_CONVOLUTION_RED_BIAS:
+ case GL_POST_CONVOLUTION_GREEN_BIAS:
+ case GL_POST_CONVOLUTION_BLUE_BIAS:
+ case GL_POST_CONVOLUTION_ALPHA_BIAS:
+ case GL_POST_CONVOLUTION_RED_SCALE:
+ case GL_POST_CONVOLUTION_GREEN_SCALE:
+ case GL_POST_CONVOLUTION_BLUE_SCALE:
+ case GL_POST_CONVOLUTION_ALPHA_SCALE:
+ case GL_PROJECTION_STACK_DEPTH:
+ case GL_READ_BUFFER:
+ case GL_RED_BIAS:
+ case GL_RED_BITS:
+ case GL_RED_SCALE:
+ case GL_RENDER_MODE:
+ case GL_RESCALE_NORMAL:
+ case GL_RGBA_MODE:
+ case GL_SCISSOR_TEST:
+ case GL_SELECTION_BUFFER_SIZE:
+ case GL_SEPARABLE_2D:
+ case GL_SHADE_MODEL:
+ case GL_SMOOTH_LINE_WIDTH_GRANULARITY:
+ case GL_SMOOTH_POINT_SIZE_GRANULARITY:
+ case GL_STENCIL_BITS:
+ case GL_STENCIL_CLEAR_VALUE:
+ case GL_STENCIL_FAIL:
+ case GL_STENCIL_FUNC:
+ case GL_STENCIL_PASS_DEPTH_FAIL:
+ case GL_STENCIL_PASS_DEPTH_PASS:
+ case GL_STENCIL_REF:
+ case GL_STENCIL_TEST:
+ case GL_STENCIL_VALUE_MASK:
+ case GL_STENCIL_WRITEMASK:
+ case GL_STEREO:
+ case GL_SUBPIXEL_BITS:
+ case GL_TEXTURE_1D:
+ case GL_TEXTURE_BINDING_1D:
+ case GL_TEXTURE_2D:
+ case GL_TEXTURE_BINDING_2D:
+ case GL_TEXTURE_3D:
+ case GL_TEXTURE_BINDING_3D:
+ case GL_TEXTURE_COORD_ARRAY:
+ case GL_TEXTURE_COORD_ARRAY_SIZE:
+ case GL_TEXTURE_COORD_ARRAY_STRIDE:
+ case GL_TEXTURE_COORD_ARRAY_TYPE:
+ case GL_TEXTURE_GEN_Q:
+ case GL_TEXTURE_GEN_R:
+ case GL_TEXTURE_GEN_S:
+ case GL_TEXTURE_GEN_T:
+ case GL_TEXTURE_STACK_DEPTH:
+ case GL_UNPACK_ALIGNMENT:
+ case GL_UNPACK_IMAGE_HEIGHT:
+ case GL_UNPACK_LSB_FIRST:
+ case GL_UNPACK_ROW_LENGTH:
+ case GL_UNPACK_SKIP_IMAGES:
+ case GL_UNPACK_SKIP_PIXELS:
+ case GL_UNPACK_SKIP_ROWS:
+ case GL_UNPACK_SWAP_BYTES:
+ case GL_VERTEX_ARRAY:
+ case GL_VERTEX_ARRAY_SIZE:
+ case GL_VERTEX_ARRAY_STRIDE:
+ case GL_VERTEX_ARRAY_TYPE:
+ case GL_ZOOM_X:
+ case GL_ZOOM_Y:
+ trWritei( params[0] );
+ break;
+
+ default:
+ /* Bad enum. What should we do? */
+ break;
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetLightfv( GLenum light, GLenum pname, GLfloat *params ) {
+ trWriteCMD( CMD_GETLIGHTFV );
+ trWriteEnum( light );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetLightfv( light, pname, params );
+ trError();
+ } else {
+ switch( pname ) {
+ case GL_AMBIENT:
+ case GL_DIFFUSE:
+ case GL_SPECULAR:
+ case GL_POSITION:
+ memset( params, 0, 4 * sizeof(GLfloat) );
+ break;
+ case GL_SPOT_DIRECTION:
+ memset( params, 0, 3 * sizeof(GLfloat) );
+ break;
+ case GL_SPOT_EXPONENT:
+ case GL_SPOT_CUTOFF:
+ case GL_CONSTANT_ATTENUATION:
+ case GL_LINEAR_ATTENUATION:
+ case GL_QUADRATIC_ATTENUATION:
+ params[0] = 0;
+ break;
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+ }
+ switch( pname ) {
+ case GL_AMBIENT:
+ case GL_DIFFUSE:
+ case GL_SPECULAR:
+ case GL_POSITION:
+ trWriteArrayf( 4, params );
+ break;
+ case GL_SPOT_DIRECTION:
+ trWriteArrayf( 3, params );
+ break;
+ case GL_SPOT_EXPONENT:
+ case GL_SPOT_CUTOFF:
+ case GL_CONSTANT_ATTENUATION:
+ case GL_LINEAR_ATTENUATION:
+ case GL_QUADRATIC_ATTENUATION:
+ trWritef( params[0] );
+ break;
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetLightiv( GLenum light, GLenum pname, GLint *params ) {
+ trWriteCMD( CMD_GETLIGHTIV );
+ trWriteEnum( light );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetLightiv( light, pname, params );
+ trError();
+ } else {
+ switch( pname ) {
+ case GL_AMBIENT:
+ case GL_DIFFUSE:
+ case GL_SPECULAR:
+ case GL_POSITION:
+ memset( params, 0, 4 * sizeof(GLint) );
+ break;
+ case GL_SPOT_DIRECTION:
+ memset( params, 0, 3 * sizeof(GLint) );
+ break;
+ case GL_SPOT_EXPONENT:
+ case GL_SPOT_CUTOFF:
+ case GL_CONSTANT_ATTENUATION:
+ case GL_LINEAR_ATTENUATION:
+ case GL_QUADRATIC_ATTENUATION:
+ params[0] = 0;
+ break;
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+ }
+ switch( pname ) {
+ case GL_AMBIENT:
+ case GL_DIFFUSE:
+ case GL_SPECULAR:
+ case GL_POSITION:
+ trWriteArrayi( 4, params );
+ break;
+ case GL_SPOT_DIRECTION:
+ trWriteArrayi( 3, params );
+ break;
+ case GL_SPOT_EXPONENT:
+ case GL_SPOT_CUTOFF:
+ case GL_CONSTANT_ATTENUATION:
+ case GL_LINEAR_ATTENUATION:
+ case GL_QUADRATIC_ATTENUATION:
+ trWritei( params[0] );
+ break;
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetMapdv( GLenum target, GLenum query, GLdouble *v ) { /* TODO */
+ trWriteCMD( CMD_GETMAPDV );
+ trWriteEnum( target );
+ trWriteEnum( query );
+ trWritePointer( (void *)v );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetMapdv( target, query, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetMapfv( GLenum target, GLenum query, GLfloat *v ) { /* TODO */
+ trWriteCMD( CMD_GETMAPFV );
+ trWriteEnum( target );
+ trWriteEnum( query );
+ trWritePointer( (void *)v );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetMapfv( target, query, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetMapiv( GLenum target, GLenum query, GLint *v ) { /* TODO */
+ trWriteCMD( CMD_GETMAPIV );
+ trWriteEnum( target );
+ trWriteEnum( query );
+ trWritePointer( (void *)v );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetMapiv( target, query, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetMaterialfv( GLenum face, GLenum pname, GLfloat *params ) {
+ trWriteCMD( CMD_GETMATERIALFV );
+ trWriteEnum( face );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetMaterialfv( face, pname, params );
+ trError();
+ } else {
+ switch( pname ) {
+ case GL_AMBIENT:
+ case GL_DIFFUSE:
+ case GL_SPECULAR:
+ case GL_EMISSION:
+ memset( params, 0, 4 * sizeof(GLfloat) );
+ break;
+ case GL_COLOR_INDEXES:
+ memset( params, 0, 3 * sizeof(GLfloat) );
+ break;
+ case GL_SHININESS:
+ params[0] = 0;
+ break;
+ default:
+ /* The 2nd pass will pick this up. */
+ break;
+ }
+ }
+ switch( pname ) {
+ case GL_AMBIENT:
+ case GL_DIFFUSE:
+ case GL_SPECULAR:
+ case GL_EMISSION:
+ trWriteArrayf( 4, params );
+ break;
+ case GL_COLOR_INDEXES:
+ trWriteArrayf( 3, params );
+ break;
+ case GL_SHININESS:
+ trWritef( params[0] );
+ break;
+ default:
+ /* The 2nd pass will pick this up. */
+ break;
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetMaterialiv( GLenum face, GLenum pname, GLint *params ) {
+ trWriteCMD( CMD_GETMATERIALIV );
+ trWriteEnum( face );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetMaterialiv( face, pname, params );
+ trError();
+ } else {
+ switch( pname ) {
+ case GL_AMBIENT:
+ case GL_DIFFUSE:
+ case GL_SPECULAR:
+ case GL_EMISSION:
+ memset( params, 0, 4 * sizeof(GLint) );
+ break;
+ case GL_COLOR_INDEXES:
+ memset( params, 0, 3 * sizeof(GLint) );
+ break;
+ case GL_SHININESS:
+ params[0] = 0;
+ break;
+ default:
+ /* The 2nd pass will pick this up. */
+ break;
+ }
+ }
+ switch( pname ) {
+ case GL_AMBIENT:
+ case GL_DIFFUSE:
+ case GL_SPECULAR:
+ case GL_EMISSION:
+ trWriteArrayi( 4, params );
+ break;
+ case GL_COLOR_INDEXES:
+ trWriteArrayi( 3, params );
+ break;
+ case GL_SHININESS:
+ trWritei( params[0] );
+ break;
+ default:
+ /* The 2nd pass will pick this up. */
+ break;
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetMinmax( GLenum target, GLboolean reset, GLenum format, GLenum types, GLvoid *values ) {
+ GLint pixelsize;
+
+ trWriteCMD( CMD_GETMINMAX );
+ trWriteEnum( target );
+ trWriteBool( reset );
+ trWriteEnum( format );
+ trWriteEnum( types );
+ trWritePointer( (void *)values );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetMinmax( target, reset, format, types, values );
+ trError();
+ } else {
+ switch( types ) {
+ case GL_BYTE:
+ ((GLbyte *)values)[0] = 0;
+ ((GLbyte *)values)[1] = 0;
+ break;
+
+ case GL_UNSIGNED_BYTE:
+ case GL_UNSIGNED_BYTE_3_3_2:
+ case GL_UNSIGNED_BYTE_2_3_3_REV:
+ ((GLubyte *)values)[0] = 0;
+ ((GLubyte *)values)[1] = 0;
+ break;
+
+ case GL_SHORT:
+ ((GLshort *)values)[0] = 0;
+ ((GLshort *)values)[1] = 0;
+ break;
+
+ case GL_UNSIGNED_SHORT:
+ case GL_UNSIGNED_SHORT_5_6_5:
+ case GL_UNSIGNED_SHORT_5_6_5_REV:
+ case GL_UNSIGNED_SHORT_4_4_4_4:
+ case GL_UNSIGNED_SHORT_4_4_4_4_REV:
+ case GL_UNSIGNED_SHORT_5_5_5_1:
+ case GL_UNSIGNED_SHORT_1_5_5_5_REV:
+ ((GLshort *)values)[0] = 0;
+ ((GLshort *)values)[1] = 0;
+ break;
+
+ case GL_INT:
+ ((GLint *)values)[0] = 0;
+ ((GLint *)values)[1] = 0;
+ break;
+
+ case GL_UNSIGNED_INT:
+ case GL_UNSIGNED_INT_8_8_8_8:
+ case GL_UNSIGNED_INT_8_8_8_8_REV:
+ case GL_UNSIGNED_INT_10_10_10_2:
+ case GL_UNSIGNED_INT_2_10_10_10_REV:
+ ((GLuint *)values)[0] = 0;
+ ((GLuint *)values)[1] = 0;
+ break;
+
+ case GL_FLOAT:
+ ((GLfloat *)values)[0] = 0.0;
+ ((GLfloat *)values)[1] = 0.0;
+ break;
+
+ default:
+ /* The 2nd pass should catch this. */
+ break;
+ }
+ }
+
+ pixelsize = trGetPixelSize( format, types );
+ trWriteTypeArray( types, 2, pixelsize, 0, values );
+}
+
+
+GLAPI void GLAPIENTRY trGetMinmaxParameterfv( GLenum target, GLenum pname, GLfloat *params ) { /* TODO */
+ trWriteCMD( CMD_GETMINMAXPARAMETERFV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetMinmaxParameterfv( target, pname, params );
+ trError();
+ } else {
+ params[0] = 0.0;
+ }
+
+ trWritef( params[0] );
+}
+
+
+GLAPI void GLAPIENTRY trGetMinmaxParameteriv( GLenum target, GLenum pname, GLint *params ) { /* TODO */
+ trWriteCMD( CMD_GETMINMAXPARAMETERIV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetMinmaxParameteriv( target, pname, params );
+ trError();
+ } else {
+ params[0] = 0;
+ }
+
+ trWritei( params[0] );
+}
+
+
+GLAPI void GLAPIENTRY trGetPixelMapfv( GLenum map, GLfloat *values ) { /* TODO */
+ trWriteCMD( CMD_GETPIXELMAPFV );
+ trWriteEnum( map );
+ trWritePointer( (void *)values );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetPixelMapfv( map, values );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetPixelMapuiv( GLenum map, GLuint *values ) { /* TODO */
+ trWriteCMD( CMD_GETPIXELMAPUIV );
+ trWriteEnum( map );
+ trWritePointer( (void *)values );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetPixelMapuiv( map, values );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetPixelMapusv( GLenum map, GLushort *values ) { /* TODO */
+ trWriteCMD( CMD_GETPIXELMAPUSV );
+ trWriteEnum( map );
+ trWritePointer( (void *)values );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetPixelMapusv( map, values );
+ trError();
+ }
+}
+
+
+#if 0
+// Not in MESAs dispatch table
+GLAPI void GLAPIENTRY trGetPointervEXT( GLenum pname, void **params ) {
+ trWriteCMD( CMD_GETPOINTERVEXT );
+ trWriteEnum( pname );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetPointervEXT( pname, params );
+ trError();
+ } else {
+ *params = NULL;
+ }
+ trWritePointer( (void *)(*params) );
+}
+#endif
+
+
+GLAPI void GLAPIENTRY trGetPointerv( GLenum pname, void **params ) {
+ trWriteCMD( CMD_GETPOINTERV );
+ trWriteEnum( pname );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetPointerv( pname, params );
+ trError();
+ } else {
+ *params = NULL;
+ }
+ trWritePointer( (void *)(*params) );
+}
+
+
+GLAPI void GLAPIENTRY trGetPolygonStipple( GLubyte *mask ) {
+ GLint i;
+
+ trWriteCMD( CMD_GETPOLYGONSTIPPLE );
+ trWritePointer( (void *)mask );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetPolygonStipple( mask );
+ trError();
+ } else {
+ for( i = 0; i < 8 * 8; i++ ) {
+ mask[i] = 0x0;
+ }
+ }
+ for( i = 0; i < 8 * 8; i++ ) {
+ trWriteub( mask[i] );
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetSeparableFilter( GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span ) {
+
+ trWriteCMD( CMD_GETSEPARABLEFILTER );
+ trWriteEnum( target );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)row );
+ trFileFlush();
+ trWritePointer( (void *)column );
+ trFileFlush();
+ trWritePointer( (void *)span );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetSeparableFilter( target, format, type, row, column, span );
+ trError();
+ }
+}
+
+
+GLAPI const GLubyte* GLAPIENTRY trGetString( GLenum name ) {
+ const GLubyte * tmpstring;
+
+ trWriteCMD( CMD_GETSTRING );
+ trWriteEnum( name );
+
+ if( trCtx()->doExec ) {
+ tmpstring = trGetDispatch()->GetString( name );
+ trError();
+ } else {
+ tmpstring = NULL;
+ }
+
+ trWriteString( (char *)tmpstring );
+ return tmpstring;
+}
+
+
+GLAPI void GLAPIENTRY trGetTexEnvfv( GLenum target, GLenum pname, GLfloat *params ) {
+ trWriteCMD( CMD_GETTEXENVFV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetTexEnvfv( target, pname, params );
+ trError();
+ } else {
+ switch( pname ) {
+ case GL_TEXTURE_ENV_MODE:
+ params[0] = 0.0;
+ break;
+ case GL_TEXTURE_ENV_COLOR:
+ memset( params, 0, 4 * sizeof(GLfloat) );
+ break;
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+ }
+ switch( pname ) {
+ case GL_TEXTURE_ENV_MODE:
+ trWritef( params[0] );
+ break;
+ case GL_TEXTURE_ENV_COLOR:
+ trWriteArrayf( 4, params );
+ break;
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetTexEnviv( GLenum target, GLenum pname, GLint *params ) {
+ trWriteCMD( CMD_GETTEXENVIV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetTexEnviv( target, pname, params );
+ trError();
+ } else {
+ switch( pname ) {
+ case GL_TEXTURE_ENV_MODE:
+ params[0] = 0;
+ break;
+ case GL_TEXTURE_ENV_COLOR:
+ memset( params, 0, 4 * sizeof(GLint) );
+ break;
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+ }
+ switch( pname ) {
+ case GL_TEXTURE_ENV_MODE:
+ trWritei( params[0] );
+ break;
+ case GL_TEXTURE_ENV_COLOR:
+ trWriteArrayi( 4, params );
+ break;
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetTexGendv( GLenum coord, GLenum pname, GLdouble *params ) {
+ trWriteCMD( CMD_GETTEXGENDV );
+ trWriteEnum( coord );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetTexGendv( coord, pname, params );
+ trError();
+ } else {
+ switch( pname ) {
+ case GL_TEXTURE_GEN_MODE:
+ params[0] = 0.0;
+ break;
+ case GL_OBJECT_PLANE:
+ case GL_EYE_PLANE:
+ memset( params, 0, 4 * sizeof(GLdouble) );
+ break;
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+ }
+ switch( pname ) {
+ case GL_TEXTURE_GEN_MODE:
+ trWrited( params[0] );
+ break;
+ case GL_OBJECT_PLANE:
+ case GL_EYE_PLANE:
+ trWriteArrayd( 4, params );
+ break;
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetTexGenfv( GLenum coord, GLenum pname, GLfloat *params ) {
+ trWriteCMD( CMD_GETTEXGENFV );
+ trWriteEnum( coord );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetTexGenfv( coord, pname, params );
+ trError();
+ } else {
+ switch( pname ) {
+ case GL_TEXTURE_GEN_MODE:
+ params[0] = 0.0;
+ break;
+ case GL_OBJECT_PLANE:
+ case GL_EYE_PLANE:
+ memset( params, 0, 4 * sizeof(GLfloat) );
+ break;
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+ }
+ switch( pname ) {
+ case GL_TEXTURE_GEN_MODE:
+ trWritef( params[0] );
+ break;
+ case GL_OBJECT_PLANE:
+ case GL_EYE_PLANE:
+ trWriteArrayf( 4, params );
+ break;
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetTexGeniv( GLenum coord, GLenum pname, GLint *params ) {
+ trWriteCMD( CMD_GETTEXGENIV );
+ trWriteEnum( coord );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetTexGeniv( coord, pname, params );
+ trError();
+ } else {
+ switch( pname ) {
+ case GL_TEXTURE_GEN_MODE:
+ params[0] = 0;
+ break;
+ case GL_OBJECT_PLANE:
+ case GL_EYE_PLANE:
+ memset( params, 0, 4 * sizeof(GLint) );
+ break;
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+ }
+ switch( pname ) {
+ case GL_TEXTURE_GEN_MODE:
+ trWritei( params[0] );
+ break;
+ case GL_OBJECT_PLANE:
+ case GL_EYE_PLANE:
+ trWriteArrayi( 4, params );
+ break;
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetTexImage( GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels ) { /* TODO */
+
+ trWriteCMD( CMD_GETTEXIMAGE );
+ trWriteEnum( target );
+ trWritei( level );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)pixels );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetTexImage( target, level, format, type, pixels );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetTexLevelParameterfv( GLenum target, GLint level, GLenum pname, GLfloat *params ) {
+ trWriteCMD( CMD_GETTEXLEVELPARAMETERFV );
+ trWriteEnum( target );
+ trWritei( level );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetTexLevelParameterfv( target, level, pname, params );
+ trError();
+ } else {
+ params[0] = 0.0;
+ }
+ trWritef( params[0] );
+}
+
+
+GLAPI void GLAPIENTRY trGetTexLevelParameteriv( GLenum target, GLint level, GLenum pname, GLint *params ) {
+ trWriteCMD( CMD_GETTEXLEVELPARAMETERIV );
+ trWriteEnum( target );
+ trWritei( level );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetTexLevelParameteriv( target, level, pname, params );
+ trError();
+ } else {
+ params[0] = 0;
+ }
+ trWritei( params[0] );
+}
+
+
+GLAPI void GLAPIENTRY trGetTexParameterfv( GLenum target, GLenum pname, GLfloat *params) {
+ trWriteCMD( CMD_GETTEXPARAMETERFV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetTexParameterfv( target, pname, params );
+ trError();
+ } else {
+ switch( pname ) {
+ case GL_TEXTURE_MAG_FILTER:
+ case GL_TEXTURE_MIN_FILTER:
+ case GL_TEXTURE_MIN_LOD:
+ case GL_TEXTURE_MAX_LOD:
+ case GL_TEXTURE_BASE_LEVEL:
+ case GL_TEXTURE_MAX_LEVEL:
+ case GL_TEXTURE_WRAP_S:
+ case GL_TEXTURE_WRAP_T:
+ case GL_TEXTURE_WRAP_R:
+ case GL_TEXTURE_PRIORITY:
+ case GL_TEXTURE_RESIDENT:
+ params[0] = 0.0;
+ break;
+ case GL_TEXTURE_BORDER_COLOR:
+ memset( params, 0, 4 * sizeof(GLfloat) );
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+ }
+ switch( pname ) {
+ case GL_TEXTURE_MAG_FILTER:
+ case GL_TEXTURE_MIN_FILTER:
+ case GL_TEXTURE_MIN_LOD:
+ case GL_TEXTURE_MAX_LOD:
+ case GL_TEXTURE_BASE_LEVEL:
+ case GL_TEXTURE_MAX_LEVEL:
+ case GL_TEXTURE_WRAP_S:
+ case GL_TEXTURE_WRAP_T:
+ case GL_TEXTURE_WRAP_R:
+ case GL_TEXTURE_PRIORITY:
+ case GL_TEXTURE_RESIDENT:
+ trWritef( params[0] );
+ break;
+ case GL_TEXTURE_BORDER_COLOR:
+ trWriteArrayf( 4, params );
+ break;
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+}
+
+
+GLAPI void GLAPIENTRY trGetTexParameteriv( GLenum target, GLenum pname, GLint *params ) {
+ trWriteCMD( CMD_GETTEXPARAMETERIV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->GetTexParameteriv( target, pname, params );
+ trError();
+ } else {
+ switch( pname ) {
+ case GL_TEXTURE_MAG_FILTER:
+ case GL_TEXTURE_MIN_FILTER:
+ case GL_TEXTURE_MIN_LOD:
+ case GL_TEXTURE_MAX_LOD:
+ case GL_TEXTURE_BASE_LEVEL:
+ case GL_TEXTURE_MAX_LEVEL:
+ case GL_TEXTURE_WRAP_S:
+ case GL_TEXTURE_WRAP_T:
+ case GL_TEXTURE_WRAP_R:
+ case GL_TEXTURE_PRIORITY:
+ case GL_TEXTURE_RESIDENT:
+ params[0] = 0;
+ break;
+ case GL_TEXTURE_BORDER_COLOR:
+ memset( params, 0, 4 * sizeof(GLint) );
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+ }
+ switch( pname ) {
+ case GL_TEXTURE_MAG_FILTER:
+ case GL_TEXTURE_MIN_FILTER:
+ case GL_TEXTURE_MIN_LOD:
+ case GL_TEXTURE_MAX_LOD:
+ case GL_TEXTURE_BASE_LEVEL:
+ case GL_TEXTURE_MAX_LEVEL:
+ case GL_TEXTURE_WRAP_S:
+ case GL_TEXTURE_WRAP_T:
+ case GL_TEXTURE_WRAP_R:
+ case GL_TEXTURE_PRIORITY:
+ case GL_TEXTURE_RESIDENT:
+ trWritei( params[0] );
+ break;
+ case GL_TEXTURE_BORDER_COLOR:
+ trWriteArrayi( 4, params );
+ break;
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+}
+
+
+GLAPI void GLAPIENTRY trHint( GLenum target, GLenum mode ) {
+ trWriteCMD( CMD_HINT );
+ trWriteEnum( target );
+ trWriteEnum( mode );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Hint( target, mode );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trHistogram( GLenum target, GLsizei width, GLenum internalformat, GLboolean sink ) {
+ trWriteCMD( CMD_HISTOGRAM );
+ trWriteEnum( target );
+ trWriteSizei( width );
+ trWriteEnum( internalformat );
+ trWriteBool( sink );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Histogram( target, width, internalformat, sink );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trIndexd( GLdouble c ) {
+ trWriteCMD( CMD_INDEXD );
+ trWrited( c );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Indexd( c );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trIndexdv( const GLdouble *c ) {
+ trWriteCMD( CMD_INDEXDV );
+ trWritePointer( (void *)c );
+ trFileFlush();
+ trWrited( c[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Indexdv( c );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trIndexf( GLfloat c ) {
+ trWriteCMD( CMD_INDEXF );
+ trWritef( c );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Indexf( c );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trIndexfv( const GLfloat *c ) {
+ trWriteCMD( CMD_INDEXFV );
+ trWritePointer( (void *)c );
+ trFileFlush();
+ trWritef( c[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Indexfv( c );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trIndexi( GLint c ) {
+ trWriteCMD( CMD_INDEXI );
+ trWritei( c );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Indexi( c );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trIndexiv( const GLint *c ) {
+ trWriteCMD( CMD_INDEXIV );
+ trWritePointer( (void *)c );
+ trFileFlush();
+ trWritei( c[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Indexiv( c );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trIndexMask( GLuint mask ) {
+ trWriteCMD( CMD_INDEXMASK );
+ trWriteui( mask );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->IndexMask( mask );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trIndexPointerEXT( GLenum type, GLsizei stride, GLsizei count, const GLvoid *ptr ) { /* TODO */
+ trWriteCMD( CMD_INDEXPOINTEREXT );
+ trWriteEnum( type );
+ trWriteSizei( stride );
+ trWriteSizei( count );
+ trWritePointer( (void *)ptr );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->IndexPointerEXT( type, stride, count, ptr );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trIndexPointer( GLenum type, GLsizei stride, const GLvoid *ptr ) { /* TODO */
+ trace_context_t * tctx;
+
+ trWriteCMD( CMD_INDEXPOINTER );
+ trWriteEnum( type );
+ trWriteSizei( stride );
+ trWritePointer( (void *)ptr );
+ trFileFlush();
+
+ tctx = trCtx();
+
+ if( tctx->doExec ) {
+ trGetDispatch()->IndexPointer( type, stride, ptr );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trIndexs( GLshort c ) {
+ trWriteCMD( CMD_INDEXS );
+ trWrites( c );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Indexs( c );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trIndexsv( const GLshort *c ) {
+ trWriteCMD( CMD_INDEXSV );
+ trWritePointer( (void *)c );
+ trFileFlush();
+ trWrites( c[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Indexsv( c );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trIndexub( GLubyte c ) {
+ trWriteCMD( CMD_INDEXUB );
+ trWriteub( c );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Indexub( c );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trIndexubv( const GLubyte *c ) {
+ trWriteCMD( CMD_INDEXUBV );
+ trWritePointer( (void *)c );
+ trFileFlush();
+ trWriteub( c[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Indexubv( c );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trInitNames( void ) {
+ trWriteCMD( CMD_INITNAMES );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->InitNames( );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trInterleavedArrays( GLenum format, GLsizei stride, const GLvoid *pointer ) { /* TODO */
+ trace_context_t * tctx = trCtx();
+
+ trWriteCMD( CMD_INTERLEAVEDARRAYS );
+ trWriteEnum( format );
+ trWriteSizei( stride );
+ trWritePointer( (void *)pointer );
+ trFileFlush();
+
+ if( tctx->doExec ) {
+ trSetOriginalDispatch();
+ trGetDispatch()->InterleavedArrays( format, stride, pointer );
+ trSetTraceDispatch();
+ trError();
+ }
+}
+
+
+GLAPI GLboolean GLAPIENTRY trIsEnabled( GLenum cap ) {
+ GLboolean retval;
+
+ trWriteCMD( CMD_ISENABLED );
+ trWriteEnum( cap );
+
+ if( trCtx()->doExec ) {
+ retval = trGetDispatch()->IsEnabled( cap );
+ trError();
+ } else {
+ retval = GL_FALSE;
+ }
+ trWriteBool( retval );
+ return retval;
+}
+
+
+GLAPI GLboolean GLAPIENTRY trIsList( GLuint list ) {
+ GLboolean retval;
+
+ trWriteCMD( CMD_ISLIST );
+ trWriteui( list );
+
+ if( trCtx()->doExec ) {
+ retval = trGetDispatch()->IsList( list );
+ trError();
+ } else {
+ retval = GL_FALSE;
+ }
+ trWriteBool( retval );
+ return retval;
+}
+
+
+GLAPI GLboolean GLAPIENTRY trIsTexture( GLuint texture ) {
+ GLboolean retval;
+
+ trWriteCMD( CMD_ISTEXTURE );
+ trWriteui( texture );
+
+ if( trCtx()->doExec ) {
+ retval = trGetDispatch()->IsTexture( texture );
+ trError();
+ } else {
+ retval = GL_FALSE;
+ }
+ trWriteBool( retval );
+ return retval;
+}
+
+
+GLAPI GLboolean GLAPIENTRY trIsTextureEXT( GLuint texture ) {
+ GLboolean retval;
+
+ trWriteCMD( CMD_ISTEXTUREEXT );
+ trWriteui( texture );
+
+ if( trCtx()->doExec ) {
+ retval = trGetDispatch()->IsTextureEXT( texture );
+ trError();
+ } else {
+ retval = GL_FALSE;
+ }
+ trWriteBool( retval );
+ return retval;
+}
+
+
+GLAPI void GLAPIENTRY trLightf( GLenum light, GLenum pname, GLfloat param ) {
+ trWriteCMD( CMD_LIGHTF );
+ trWriteEnum( light );
+ trWriteEnum( pname );
+ trWritef( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Lightf( light, pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trLightfv( GLenum light, GLenum pname, const GLfloat *params ) {
+ trWriteCMD( CMD_LIGHTFV );
+ trWriteEnum( light );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_AMBIENT:
+ case GL_DIFFUSE:
+ case GL_SPECULAR:
+ case GL_POSITION:
+ trWriteArrayf( 4, params );
+ break;
+ case GL_SPOT_DIRECTION:
+ trWriteArrayf( 3, params );
+ break;
+ case GL_SPOT_EXPONENT:
+ case GL_SPOT_CUTOFF:
+ case GL_CONSTANT_ATTENUATION:
+ case GL_LINEAR_ATTENUATION:
+ case GL_QUADRATIC_ATTENUATION:
+ trWritef( params[0] );
+ break;
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Lightfv( light, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trLighti( GLenum light, GLenum pname, GLint param ) {
+ trWriteCMD( CMD_LIGHTI );
+ trWriteEnum( light );
+ trWriteEnum( pname );
+ trWritei( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Lighti( light, pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trLightiv( GLenum light, GLenum pname, const GLint *params ) {
+ trWriteCMD( CMD_LIGHTIV );
+ trWriteEnum( light );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_AMBIENT:
+ case GL_DIFFUSE:
+ case GL_SPECULAR:
+ case GL_POSITION:
+ trWriteArrayi( 4, params );
+ break;
+ case GL_SPOT_DIRECTION:
+ trWriteArrayi( 3, params );
+ break;
+ case GL_SPOT_EXPONENT:
+ case GL_SPOT_CUTOFF:
+ case GL_CONSTANT_ATTENUATION:
+ case GL_LINEAR_ATTENUATION:
+ case GL_QUADRATIC_ATTENUATION:
+ trWritei( params[0] );
+ break;
+ default:
+ /* The 2nd pass should pick this up. */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Lightiv( light, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trLightModelf( GLenum pname, GLfloat param ) {
+ trWriteCMD( CMD_LIGHTMODELF );
+ trWriteEnum( pname );
+ trWritef( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->LightModelf( pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trLightModelfv( GLenum pname, const GLfloat *params ) {
+ trWriteCMD( CMD_LIGHTMODELFV );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_LIGHT_MODEL_AMBIENT:
+ trWriteArrayf( 4, params );
+ break;
+ case GL_LIGHT_MODEL_COLOR_CONTROL:
+ case GL_LIGHT_MODEL_LOCAL_VIEWER:
+ case GL_LIGHT_MODEL_TWO_SIDE:
+ trWritef( params[0] );
+ break;
+ default:
+ /* The 2nd pass should catch this. */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->LightModelfv( pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trLightModeli( GLenum pname, GLint param ) {
+ trWriteCMD( CMD_LIGHTMODELI );
+ trWriteEnum( pname );
+ trWritei( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->LightModeli( pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trLightModeliv( GLenum pname, const GLint *params ) {
+ trWriteCMD( CMD_LIGHTMODELIV );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_LIGHT_MODEL_AMBIENT:
+ trWriteArrayi( 4, params );
+ break;
+ case GL_LIGHT_MODEL_COLOR_CONTROL:
+ case GL_LIGHT_MODEL_LOCAL_VIEWER:
+ case GL_LIGHT_MODEL_TWO_SIDE:
+ trWritei( params[0] );
+ break;
+ default:
+ /* The 2nd pass should catch this. */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->LightModeliv( pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trLineStipple( GLint factor, GLushort pattern ) {
+ trWriteCMD( CMD_LINESTIPPLE );
+ trWritei( factor );
+ trWriteus( pattern );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->LineStipple( factor, pattern );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trLineWidth( GLfloat width ) {
+ trWriteCMD( CMD_LINEWIDTH );
+ trWritef( width );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->LineWidth( width );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trListBase( GLuint base ) {
+ trWriteCMD( CMD_LISTBASE );
+ trWriteui( base );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ListBase( base );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trLoadIdentity( void ) {
+ trWriteCMD( CMD_LOADIDENTITY );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->LoadIdentity( );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trLoadMatrixd( const GLdouble *m ) {
+ trWriteCMD( CMD_LOADMATRIXD );
+ trWritePointer( (void *)m );
+ trFileFlush();
+ trWriteArrayd( 16, m );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->LoadMatrixd( m );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trLoadMatrixf( const GLfloat *m ) {
+ trWriteCMD( CMD_LOADMATRIXF );
+ trWritePointer( (void *)m );
+ trFileFlush();
+ trWriteArrayf( 16, m );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->LoadMatrixf( m );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trLoadName( GLuint name ) {
+ trWriteCMD( CMD_LOADNAME );
+ trWriteui( name );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->LoadName( name );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trLockArraysEXT( GLint first, GLsizei count ) {
+ trWriteCMD( CMD_LOCKARRAYSEXT );
+ trWritei( first );
+ trWriteSizei( count );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->LockArraysEXT( first, count );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trLogicOp( GLenum opcode ) {
+ trWriteCMD( CMD_LOGICOP );
+ trWriteEnum( opcode );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->LogicOp( opcode );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMap1d( GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points ) {
+ GLint i;
+
+ trWriteCMD( CMD_MAP1D );
+ trWriteEnum( target );
+ trWrited( u1 );
+ trWrited( u2 );
+ trWritei( stride );
+ trWritei( order );
+ trWritePointer( (void *)points );
+ trFileFlush();
+
+ switch( target ) {
+ case GL_MAP1_INDEX:
+ case GL_MAP1_TEXTURE_COORD_1:
+ for( i = 0; i < stride * order; i += stride ) {
+ trWrited( points[i] );
+ }
+ break;
+ case GL_MAP1_TEXTURE_COORD_2:
+ for( i = 0; i < stride * order; i += stride ) {
+ trWrited( points[i] );
+ trWrited( points[i + 1] );
+ }
+ break;
+ case GL_MAP1_VERTEX_3:
+ case GL_MAP1_NORMAL:
+ case GL_MAP1_TEXTURE_COORD_3:
+ for( i = 0; i < stride * order; i += stride ) {
+ trWrited( points[i] );
+ trWrited( points[i + 1] );
+ trWrited( points[i + 2] );
+ }
+ break;
+ case GL_MAP1_VERTEX_4:
+ case GL_MAP1_TEXTURE_COORD_4:
+ for( i = 0; i < stride * order; i += stride ) {
+ trWrited( points[i] );
+ trWrited( points[i + 1] );
+ trWrited( points[i + 2] );
+ trWrited( points[i + 3] );
+ }
+ break;
+ default:
+ /* The 2nd pass should catch this. */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Map1d( target, u1, u2, stride, order, points );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMap1f( GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points ) {
+ GLint i;
+
+ trWriteCMD( CMD_MAP1F );
+ trWriteEnum( target );
+ trWritef( u1 );
+ trWritef( u2 );
+ trWritei( stride );
+ trWritei( order );
+ trWritePointer( (void *)points );
+ trFileFlush();
+
+ switch( target ) {
+ case GL_MAP1_INDEX:
+ case GL_MAP1_TEXTURE_COORD_1:
+ for( i = 0; i < stride * order; i += stride ) {
+ trWritef( points[i] );
+ }
+ break;
+ case GL_MAP1_TEXTURE_COORD_2:
+ for( i = 0; i < stride * order; i += stride ) {
+ trWritef( points[i] );
+ trWritef( points[i + 1] );
+ }
+ break;
+ case GL_MAP1_VERTEX_3:
+ case GL_MAP1_NORMAL:
+ case GL_MAP1_TEXTURE_COORD_3:
+ for( i = 0; i < stride * order; i += stride ) {
+ trWritef( points[i] );
+ trWritef( points[i + 1] );
+ trWritef( points[i + 2] );
+ }
+ break;
+ case GL_MAP1_VERTEX_4:
+ case GL_MAP1_TEXTURE_COORD_4:
+ for( i = 0; i < stride * order; i += stride ) {
+ trWritef( points[i] );
+ trWritef( points[i + 1] );
+ trWritef( points[i + 2] );
+ trWritef( points[i + 3] );
+ }
+ break;
+ default:
+ /* The 2nd pass should catch this. */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Map1f( target, u1, u2, stride, order, points );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMap2d( GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points ) {
+ GLint i;
+ GLint j;
+
+ trWriteCMD( CMD_MAP2D );
+ trWriteEnum( target );
+ trWrited( u1 );
+ trWrited( u2 );
+ trWritei( ustride );
+ trWritei( uorder );
+ trWrited( v1 );
+ trWrited( v2 );
+ trWritei( vstride );
+ trWritei( vorder );
+ trWritePointer( (void *)points );
+ trFileFlush();
+
+ switch( target ) {
+ case GL_MAP1_INDEX:
+ case GL_MAP1_TEXTURE_COORD_1:
+ for( j = 0; j < vstride * vorder; j += vstride ) {
+ for( i = 0; i < ustride * uorder; i += ustride ) {
+ trWrited( points[i + j] );
+ }
+ }
+ break;
+ case GL_MAP1_TEXTURE_COORD_2:
+ for( j = 0; j < vstride * vorder; j += vstride ) {
+ for( i = 0; i < ustride * uorder; i += ustride ) {
+ trWrited( points[i + j] );
+ trWrited( points[i + j + 1] );
+ }
+ }
+ break;
+ case GL_MAP1_VERTEX_3:
+ case GL_MAP1_NORMAL:
+ case GL_MAP1_TEXTURE_COORD_3:
+ for( j = 0; j < vstride * vorder; j += vstride ) {
+ for( i = 0; i < ustride * uorder; i += ustride ) {
+ trWrited( points[i + j] );
+ trWrited( points[i + j + 1] );
+ trWrited( points[i + j + 2] );
+ }
+ }
+ break;
+ case GL_MAP1_VERTEX_4:
+ case GL_MAP1_TEXTURE_COORD_4:
+ for( j = 0; j < vstride * vorder; j += vstride ) {
+ for( i = 0; i < ustride * uorder; i += ustride ) {
+ trWrited( points[i + j] );
+ trWrited( points[i + j + 1] );
+ trWrited( points[i + j + 2] );
+ trWrited( points[i + j + 3] );
+ }
+ }
+ break;
+ default:
+ /* The 2nd pass should catch this. */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Map2d( target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMap2f( GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points ) {
+ GLint i;
+ GLint j;
+
+ trWriteCMD( CMD_MAP2F );
+ trWriteEnum( target );
+ trWritef( u1 );
+ trWritef( u2 );
+ trWritei( ustride );
+ trWritei( uorder );
+ trWritef( v1 );
+ trWritef( v2 );
+ trWritei( vstride );
+ trWritei( vorder );
+ trWritePointer( (void *)points );
+ trFileFlush();
+
+ switch( target ) {
+ case GL_MAP1_INDEX:
+ case GL_MAP1_TEXTURE_COORD_1:
+ for( j = 0; j < vstride * vorder; j += vstride ) {
+ for( i = 0; i < ustride * uorder; i += ustride ) {
+ trWritef( points[i + j] );
+ }
+ }
+ break;
+ case GL_MAP1_TEXTURE_COORD_2:
+ for( j = 0; j < vstride * vorder; j += vstride ) {
+ for( i = 0; i < ustride * uorder; i += ustride ) {
+ trWritef( points[i + j] );
+ trWritef( points[i + j + 1] );
+ }
+ }
+ break;
+ case GL_MAP1_VERTEX_3:
+ case GL_MAP1_NORMAL:
+ case GL_MAP1_TEXTURE_COORD_3:
+ for( j = 0; j < vstride * vorder; j += vstride ) {
+ for( i = 0; i < ustride * uorder; i += ustride ) {
+ trWritef( points[i + j] );
+ trWritef( points[i + j + 1] );
+ trWritef( points[i + j + 2] );
+ }
+ }
+ break;
+ case GL_MAP1_VERTEX_4:
+ case GL_MAP1_TEXTURE_COORD_4:
+ for( j = 0; j < vstride * vorder; j += vstride ) {
+ for( i = 0; i < ustride * uorder; i += ustride ) {
+ trWritef( points[i + j] );
+ trWritef( points[i + j + 1] );
+ trWritef( points[i + j + 2] );
+ trWritef( points[i + j + 3] );
+ }
+ }
+ break;
+ default:
+ /* The 2nd pass should catch this. */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Map2f( target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMapGrid1d( GLint un, GLdouble u1, GLdouble u2 ) {
+ trWriteCMD( CMD_MAPGRID1D );
+ trWritei( un );
+ trWrited( u1 );
+ trWrited( u2 );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MapGrid1d( un, u1, u2 );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMapGrid1f( GLint un, GLfloat u1, GLfloat u2 ) {
+ trWriteCMD( CMD_MAPGRID1F );
+ trWritei( un );
+ trWritef( u1 );
+ trWritef( u2 );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MapGrid1f( un, u1, u2 );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMapGrid2d( GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2 ) {
+ trWriteCMD( CMD_MAPGRID2D );
+ trWritei( un );
+ trWrited( u1 );
+ trWrited( u2 );
+ trWritei( vn );
+ trWrited( v1 );
+ trWrited( v2 );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MapGrid2d( un, u1, u2, vn, v1, v2 );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMapGrid2f( GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2 ) {
+ trWriteCMD( CMD_MAPGRID2F );
+ trWritei( un );
+ trWritef( u1 );
+ trWritef( u2 );
+ trWritei( vn );
+ trWritef( v1 );
+ trWritef( v2 );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MapGrid2f( un, u1, u2, vn, v1, v2 );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMaterialf( GLenum face, GLenum pname, GLfloat param ) {
+ trWriteCMD( CMD_MATERIALF );
+ trWriteEnum( face );
+ trWriteEnum( pname );
+ trWritef( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Materialf( face, pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMaterialfv( GLenum face, GLenum pname, const GLfloat *params ) {
+ trWriteCMD( CMD_MATERIALFV );
+ trWriteEnum( face );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_AMBIENT:
+ case GL_DIFFUSE:
+ case GL_AMBIENT_AND_DIFFUSE:
+ case GL_SPECULAR:
+ case GL_EMISSION:
+ trWriteArrayf( 4, params );
+ break;
+ case GL_SHININESS:
+ trWritef( params[0] );
+ break;
+ case GL_COLOR_INDEXES:
+ trWriteArrayf( 3, params );
+ break;
+ default:
+ /* The 2nd pass should catch this. */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Materialfv( face, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMateriali( GLenum face, GLenum pname, GLint param ) {
+ trWriteCMD( CMD_MATERIALI );
+ trWriteEnum( face );
+ trWriteEnum( pname );
+ trWritei( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Materiali( face, pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMaterialiv( GLenum face, GLenum pname, const GLint *params ) {
+ trWriteCMD( CMD_MATERIALIV );
+ trWriteEnum( face );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_AMBIENT:
+ case GL_DIFFUSE:
+ case GL_AMBIENT_AND_DIFFUSE:
+ case GL_SPECULAR:
+ case GL_EMISSION:
+ trWriteArrayi( 4, params );
+ break;
+ case GL_SHININESS:
+ trWritei( params[0] );
+ break;
+ case GL_COLOR_INDEXES:
+ trWriteArrayi( 3, params );
+ break;
+ default:
+ /* The 2nd pass should catch this. */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Materialiv( face, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMatrixMode( GLenum mode ) {
+ trWriteCMD( CMD_MATRIXMODE );
+ trWriteEnum( mode );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MatrixMode( mode );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMinmax( GLenum target, GLenum internalformat, GLboolean sink ) {
+ trWriteCMD( CMD_MINMAX );
+ trWriteEnum( target );
+ trWriteEnum( internalformat );
+ trWriteBool( sink );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Minmax( target, internalformat, sink );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord1dARB( GLenum target, GLdouble s) {
+ trWriteCMD( CMD_MULTITEXCOORD1DARB );
+ trWriteEnum( target );
+ trWrited( s );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord1dARB( target, s );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord1dvARB( GLenum target, const GLdouble *v) {
+ trWriteCMD( CMD_MULTITEXCOORD1DVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWrited( v[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord1dvARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord1fARB( GLenum target, GLfloat s) {
+ trWriteCMD( CMD_MULTITEXCOORD1FARB );
+ trWriteEnum( target );
+ trWritef( s );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord1fARB( target, s );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord1fvARB( GLenum target, const GLfloat *v) {
+ trWriteCMD( CMD_MULTITEXCOORD1FVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWritef( v[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord1fvARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord1iARB( GLenum target, GLint s) {
+ trWriteCMD( CMD_MULTITEXCOORD1IARB );
+ trWriteEnum( target );
+ trWritei( s );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord1iARB( target, s );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord1ivARB( GLenum target, const GLint *v) {
+ trWriteCMD( CMD_MULTITEXCOORD1IVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWritei( v[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord1ivARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord1sARB( GLenum target, GLshort s) {
+ trWriteCMD( CMD_MULTITEXCOORD1SARB );
+ trWriteEnum( target );
+ trWrites( s );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord1sARB( target, s );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord1svARB( GLenum target, const GLshort *v) {
+ trWriteCMD( CMD_MULTITEXCOORD1SVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWrites( v[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord1svARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord2dARB( GLenum target, GLdouble s, GLdouble t) {
+ trWriteCMD( CMD_MULTITEXCOORD2DARB );
+ trWriteEnum( target );
+ trWrited( s );
+ trWrited( t );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord2dARB( target, s, t );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord2dvARB( GLenum target, const GLdouble *v) {
+ trWriteCMD( CMD_MULTITEXCOORD2DVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayd( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord2dvARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord2fARB( GLenum target, GLfloat s, GLfloat t) {
+ trWriteCMD( CMD_MULTITEXCOORD2FARB );
+ trWriteEnum( target );
+ trWritef( s );
+ trWritef( t );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord2fARB( target, s, t );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord2fvARB( GLenum target, const GLfloat *v) {
+ trWriteCMD( CMD_MULTITEXCOORD2FVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayf( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord2fvARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord2iARB( GLenum target, GLint s, GLint t) {
+ trWriteCMD( CMD_MULTITEXCOORD2IARB );
+ trWriteEnum( target );
+ trWritei( s );
+ trWritei( t );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord2iARB( target, s, t );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord2ivARB( GLenum target, const GLint *v) {
+ trWriteCMD( CMD_MULTITEXCOORD2IVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayi( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord2ivARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord2sARB( GLenum target, GLshort s, GLshort t) {
+ trWriteCMD( CMD_MULTITEXCOORD2SARB );
+ trWriteEnum( target );
+ trWrites( s );
+ trWrites( t );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord2sARB( target, s, t );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord2svARB( GLenum target, const GLshort *v) {
+ trWriteCMD( CMD_MULTITEXCOORD2SVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrays( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord2svARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord3dARB( GLenum target, GLdouble s, GLdouble t, GLdouble r) {
+ trWriteCMD( CMD_MULTITEXCOORD3DARB );
+ trWriteEnum( target );
+ trWrited( s );
+ trWrited( t );
+ trWrited( r );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord3dARB( target, s, t, r );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord3dvARB( GLenum target, const GLdouble *v) {
+ trWriteCMD( CMD_MULTITEXCOORD3DVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayd( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord3dvARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord3fARB( GLenum target, GLfloat s, GLfloat t, GLfloat r) {
+ trWriteCMD( CMD_MULTITEXCOORD3FARB );
+ trWriteEnum( target );
+ trWritef( s );
+ trWritef( t );
+ trWritef( r );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord3fARB( target, s, t, r );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord3fvARB( GLenum target, const GLfloat *v) {
+ trWriteCMD( CMD_MULTITEXCOORD3FVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayf( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord3fvARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord3iARB( GLenum target, GLint s, GLint t, GLint r) {
+ trWriteCMD( CMD_MULTITEXCOORD3IARB );
+ trWriteEnum( target );
+ trWritei( s );
+ trWritei( t );
+ trWritei( r );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord3iARB( target, s, t, r );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord3ivARB( GLenum target, const GLint *v) {
+ trWriteCMD( CMD_MULTITEXCOORD3IVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayi( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord3ivARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord3sARB( GLenum target, GLshort s, GLshort t, GLshort r) {
+ trWriteCMD( CMD_MULTITEXCOORD3SARB );
+ trWriteEnum( target );
+ trWrites( s );
+ trWrites( t );
+ trWrites( r );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord3sARB( target, s, t, r );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord3svARB( GLenum target, const GLshort *v) {
+ trWriteCMD( CMD_MULTITEXCOORD3SVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrays( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord3svARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord4dARB( GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) {
+ trWriteCMD( CMD_MULTITEXCOORD4DARB );
+ trWriteEnum( target );
+ trWrited( s );
+ trWrited( t );
+ trWrited( r );
+ trWrited( q );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord4dARB( target, s, t, r, q );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord4dvARB( GLenum target, const GLdouble *v) {
+ trWriteCMD( CMD_MULTITEXCOORD4DVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayd( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord4dvARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord4fARB( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) {
+ trWriteCMD( CMD_MULTITEXCOORD4FARB );
+ trWriteEnum( target );
+ trWritef( s );
+ trWritef( t );
+ trWritef( r );
+ trWritef( q );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord4fARB( target, s, t, r, q );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord4fvARB( GLenum target, const GLfloat *v) {
+ trWriteCMD( CMD_MULTITEXCOORD4FVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayf( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord4fvARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord4iARB( GLenum target, GLint s, GLint t, GLint r, GLint q) {
+ trWriteCMD( CMD_MULTITEXCOORD4IARB );
+ trWriteEnum( target );
+ trWritei( s );
+ trWritei( t );
+ trWritei( r );
+ trWritei( q );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord4iARB( target, s, t, r, q );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord4ivARB( GLenum target, const GLint *v) {
+ trWriteCMD( CMD_MULTITEXCOORD4IVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayi( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord4ivARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord4sARB( GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) {
+ trWriteCMD( CMD_MULTITEXCOORD4SARB );
+ trWriteEnum( target );
+ trWrites( s );
+ trWrites( t );
+ trWrites( r );
+ trWrites( q );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord4sARB( target, s, t, r, q );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultiTexCoord4svARB( GLenum target, const GLshort *v) {
+ trWriteCMD( CMD_MULTITEXCOORD4SVARB );
+ trWriteEnum( target );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrays( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultiTexCoord4svARB( target, v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultMatrixd( const GLdouble *m ) {
+ trWriteCMD( CMD_MULTMATRIXD );
+ trWritePointer( (void *)m );
+ trFileFlush();
+ trWriteArrayd( 16, m );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultMatrixd( m );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trMultMatrixf( const GLfloat *m ) {
+ trWriteCMD( CMD_MULTMATRIXF );
+ trWritePointer( (void *)m );
+ trFileFlush();
+ trWriteArrayf( 16, m );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->MultMatrixf( m );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trNewList( GLuint list, GLenum mode ) {
+ trWriteCMD( CMD_NEWLIST );
+ trWriteui( list );
+ trWriteEnum( mode );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->NewList( list, mode );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trNormal3b( GLbyte nx, GLbyte ny, GLbyte nz ) {
+ trWriteCMD( CMD_NORMAL3B );
+ trWriteb( nx );
+ trWriteb( ny );
+ trWriteb( nz );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Normal3b( nx, ny, nz );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trNormal3bv( const GLbyte *v ) {
+ trWriteCMD( CMD_NORMAL3BV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayb( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Normal3bv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trNormal3d( GLdouble nx, GLdouble ny, GLdouble nz ) {
+ trWriteCMD( CMD_NORMAL3D );
+ trWrited( nx );
+ trWrited( ny );
+ trWrited( nz );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Normal3d( nx, ny, nz );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trNormal3dv( const GLdouble *v ) {
+ trWriteCMD( CMD_NORMAL3DV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayd( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Normal3dv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trNormal3f( GLfloat nx, GLfloat ny, GLfloat nz ) {
+ trWriteCMD( CMD_NORMAL3F );
+ trWritef( nx );
+ trWritef( ny );
+ trWritef( nz );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Normal3f( nx, ny, nz );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trNormal3fv( const GLfloat *v ) {
+ trWriteCMD( CMD_NORMAL3FV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayf( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Normal3fv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trNormal3i( GLint nx, GLint ny, GLint nz ) {
+ trWriteCMD( CMD_NORMAL3I );
+ trWritei( nx );
+ trWritei( ny );
+ trWritei( nz );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Normal3i( nx, ny, nz );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trNormal3iv( const GLint *v ) {
+ trWriteCMD( CMD_NORMAL3IV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayi( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Normal3iv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trNormal3s( GLshort nx, GLshort ny, GLshort nz ) {
+ trWriteCMD( CMD_NORMAL3S );
+ trWrites( nx );
+ trWrites( ny );
+ trWrites( nz );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Normal3s( nx, ny, nz );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trNormal3sv( const GLshort *v ) {
+ trWriteCMD( CMD_NORMAL3SV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrays( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Normal3sv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trNormalPointerEXT( GLenum type, GLsizei stride, GLsizei count, const GLvoid *ptr ) { /* TODO */
+ trWriteCMD( CMD_NORMALPOINTEREXT );
+ trWriteEnum( type );
+ trWriteSizei( stride );
+ trWriteSizei( count );
+ trWritePointer( (void *)ptr );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->NormalPointerEXT( type, stride, count, ptr );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trNormalPointer( GLenum type, GLsizei stride, const GLvoid *ptr ) { /* TODO */
+ trWriteCMD( CMD_NORMALPOINTER );
+ trWriteEnum( type );
+ trWriteSizei( stride );
+ trWritePointer( (void *)ptr );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->NormalPointer( type, stride, ptr );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trOrtho( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val ) {
+ trWriteCMD( CMD_ORTHO );
+ trWrited( left );
+ trWrited( right );
+ trWrited( bottom );
+ trWrited( top );
+ trWrited( near_val );
+ trWrited( far_val );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Ortho( left, right, bottom, top, near_val, far_val );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPassThrough( GLfloat token ) {
+ trWriteCMD( CMD_PASSTHROUGH );
+ trWritef( token );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PassThrough( token );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPixelMapfv( GLenum map, GLint mapsize, const GLfloat *values ) {
+ trWriteCMD( CMD_PIXELMAPFV );
+ trWriteEnum( map );
+ trWritei( mapsize );
+ trWritePointer( (void *)values );
+ trFileFlush();
+ trWriteArrayf( mapsize, values );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PixelMapfv( map, mapsize, values );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPixelMapuiv( GLenum map, GLint mapsize, const GLuint *values ) {
+ trWriteCMD( CMD_PIXELMAPUIV );
+ trWriteEnum( map );
+ trWritei( mapsize );
+ trWritePointer( (void *)values );
+ trFileFlush();
+ trWriteArrayui( mapsize, values );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PixelMapuiv( map, mapsize, values );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPixelMapusv( GLenum map, GLint mapsize, const GLushort *values ) {
+ trWriteCMD( CMD_PIXELMAPUSV );
+ trWriteEnum( map );
+ trWritei( mapsize );
+ trWritePointer( (void *)values );
+ trFileFlush();
+ trWriteArrayus( mapsize, values );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PixelMapusv( map, mapsize, values );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPixelStoref( GLenum pname, GLfloat param ) {
+ trWriteCMD( CMD_PIXELSTOREF );
+ trWriteEnum( pname );
+ trWritef( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PixelStoref( pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPixelStorei( GLenum pname, GLint param ) {
+ trWriteCMD( CMD_PIXELSTOREI );
+ trWriteEnum( pname );
+ trWritei( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PixelStorei( pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPixelTransferf( GLenum pname, GLfloat param ) {
+ trWriteCMD( CMD_PIXELTRANSFERF );
+ trWriteEnum( pname );
+ trWritef( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PixelTransferf( pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPixelTransferi( GLenum pname, GLint param ) {
+ trWriteCMD( CMD_PIXELTRANSFERI );
+ trWriteEnum( pname );
+ trWritei( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PixelTransferi( pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPixelZoom( GLfloat xfactor, GLfloat yfactor ) {
+ trWriteCMD( CMD_PIXELZOOM );
+ trWritef( xfactor );
+ trWritef( yfactor );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PixelZoom( xfactor, yfactor );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPointParameterfEXT( GLenum pname, GLfloat param ) {
+ trWriteCMD( CMD_POINTPARAMETERFEXT );
+ trWriteEnum( pname );
+ trWritef( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PointParameterfEXT( pname, param );
+ trError();
+ }
+}
+
+
+#if 0
+// Not in MESAs dispatch table
+GLAPI void GLAPIENTRY trPointParameterfSGIS( GLenum pname, GLfloat param) {
+ trWriteCMD( CMD_POINTPARAMETERFSGIS );
+ trWriteEnum( pname );
+ trWritef( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PointParameterfSGIS( pname, param );
+ trError();
+ }
+}
+#endif
+
+
+GLAPI void GLAPIENTRY trPointParameterfvEXT( GLenum pname, const GLfloat *params ) {
+ trWriteCMD( CMD_POINTPARAMETERFVEXT );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_POINT_SIZE_MIN_EXT:
+ case GL_POINT_SIZE_MAX_EXT:
+ case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
+ trWritef( params[0] );
+ break;
+
+ case GL_DISTANCE_ATTENUATION_EXT:
+ trWriteArrayf( 3, params );
+ break;
+
+ default:
+ /* The 2nd pass should handle this. */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PointParameterfvEXT( pname, params );
+ trError();
+ }
+}
+
+
+#if 0
+// Not in MESAs dispatch table
+GLAPI void GLAPIENTRY trPointParameterfvSGIS( GLenum pname, const GLfloat *params) { /* TODO */
+ trWriteCMD( CMD_POINTPARAMETERFVSGIS );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PointParameterfvSGIS( pname, params );
+ trError();
+ }
+}
+#endif
+
+
+GLAPI void GLAPIENTRY trPointSize( GLfloat size ) {
+ trWriteCMD( CMD_POINTSIZE );
+ trWritef( size );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PointSize( size );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPolygonMode( GLenum face, GLenum mode ) {
+ trWriteCMD( CMD_POLYGONMODE );
+ trWriteEnum( face );
+ trWriteEnum( mode );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PolygonMode( face, mode );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPolygonOffsetEXT( GLfloat factor, GLfloat bias ) {
+ trWriteCMD( CMD_POLYGONOFFSETEXT );
+ trWritef( factor );
+ trWritef( bias );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PolygonOffsetEXT( factor, bias );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPolygonOffset( GLfloat factor, GLfloat units ) {
+ trWriteCMD( CMD_POLYGONOFFSET );
+ trWritef( factor );
+ trWritef( units );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PolygonOffset( factor, units );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPolygonStipple( const GLubyte *mask ) {
+ trWriteCMD( CMD_POLYGONSTIPPLE );
+ trWritePointer( (void *)mask );
+ trFileFlush();
+ trWriteArrayub( 64, mask );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PolygonStipple( mask );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPopAttrib( void ) {
+ trWriteCMD( CMD_POPATTRIB );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PopAttrib( );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPopClientAttrib( void ) {
+ trWriteCMD( CMD_POPCLIENTATTRIB );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PopClientAttrib( );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPopMatrix( void ) {
+ trWriteCMD( CMD_POPMATRIX );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PopMatrix( );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPopName( void ) {
+ trWriteCMD( CMD_POPNAME );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PopName( );
+ trError();
+ }
+}
+
+
+#if 0
+// Not in MESAs dispatch table
+GLAPI void GLAPIENTRY trPrioritizeTexturesEXT( GLsizei n, const GLuint *textures, const GLclampf *priorities ) {
+ trWriteCMD( CMD_PRIORITIZETEXTURESEXT );
+ trWriteSizei( n );
+ trWritePointer( (void *)textures );
+ trFileFlush();
+ trWriteArrayui( n, textures );
+
+ trWritePointer( (void *)priorities );
+ trFileFlush();
+ /* FIXME!!! */
+ trWriteArrayf( n, priorities );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PrioritizeTexturesEXT( n, textures, priorities );
+ trError();
+ }
+}
+#endif
+
+
+GLAPI void GLAPIENTRY trPrioritizeTextures( GLsizei n, const GLuint *textures, const GLclampf *priorities ) {
+ trWriteCMD( CMD_PRIORITIZETEXTURES );
+ trWriteSizei( n );
+ trWritePointer( (void *)textures );
+ trFileFlush();
+ trWriteArrayui( n, textures );
+
+ trWritePointer( (void *)priorities );
+ trFileFlush();
+ /* FIXME!!! */
+ trWriteArrayf( n, priorities );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PrioritizeTextures( n, textures, priorities );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPushAttrib( GLbitfield mask ) {
+ trWriteCMD( CMD_PUSHATTRIB );
+ trWriteBits( mask );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PushAttrib( mask );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPushClientAttrib( GLbitfield mask ) {
+ trWriteCMD( CMD_PUSHCLIENTATTRIB );
+ trWriteBits( mask );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PushClientAttrib( mask );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPushMatrix( void ) {
+ trWriteCMD( CMD_PUSHMATRIX );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PushMatrix( );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trPushName( GLuint name ) {
+ trWriteCMD( CMD_PUSHNAME );
+ trWriteui( name );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->PushName( name );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos2d( GLdouble x, GLdouble y ) {
+ trWriteCMD( CMD_RASTERPOS2D );
+ trWrited( x );
+ trWrited( y );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos2d( x, y );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos2dv( const GLdouble *v ) {
+ trWriteCMD( CMD_RASTERPOS2DV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayd( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos2dv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos2f( GLfloat x, GLfloat y ) {
+ trWriteCMD( CMD_RASTERPOS2F );
+ trWritef( x );
+ trWritef( y );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos2f( x, y );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos2fv( const GLfloat *v ) {
+ trWriteCMD( CMD_RASTERPOS2FV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayf( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos2fv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos2i( GLint x, GLint y ) {
+ trWriteCMD( CMD_RASTERPOS2I );
+ trWritei( x );
+ trWritei( y );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos2i( x, y );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos2iv( const GLint *v ) {
+ trWriteCMD( CMD_RASTERPOS2IV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayi( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos2iv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos2s( GLshort x, GLshort y ) {
+ trWriteCMD( CMD_RASTERPOS2S );
+ trWrites( x );
+ trWrites( y );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos2s( x, y );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos2sv( const GLshort *v ) {
+ trWriteCMD( CMD_RASTERPOS2SV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrays( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos2sv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos3d( GLdouble x, GLdouble y, GLdouble z ) {
+ trWriteCMD( CMD_RASTERPOS3D );
+ trWrited( x );
+ trWrited( y );
+ trWrited( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos3d( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos3dv( const GLdouble *v ) {
+ trWriteCMD( CMD_RASTERPOS3DV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayd( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos3dv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos3f( GLfloat x, GLfloat y, GLfloat z ) {
+ trWriteCMD( CMD_RASTERPOS3F );
+ trWritef( x );
+ trWritef( y );
+ trWritef( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos3f( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos3fv( const GLfloat *v ) {
+ trWriteCMD( CMD_RASTERPOS3FV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayf( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos3fv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos3i( GLint x, GLint y, GLint z ) {
+ trWriteCMD( CMD_RASTERPOS3I );
+ trWritei( x );
+ trWritei( y );
+ trWritei( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos3i( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos3iv( const GLint *v ) {
+ trWriteCMD( CMD_RASTERPOS3IV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayi( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos3iv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos3s( GLshort x, GLshort y, GLshort z ) {
+ trWriteCMD( CMD_RASTERPOS3S );
+ trWrites( x );
+ trWrites( y );
+ trWrites( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos3s( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos3sv( const GLshort *v ) {
+ trWriteCMD( CMD_RASTERPOS3SV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrays( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos3sv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w ) {
+ trWriteCMD( CMD_RASTERPOS4D );
+ trWrited( x );
+ trWrited( y );
+ trWrited( z );
+ trWrited( w );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos4d( x, y, z, w );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos4dv( const GLdouble *v ) {
+ trWriteCMD( CMD_RASTERPOS4DV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayd( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos4dv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w ) {
+ trWriteCMD( CMD_RASTERPOS4F );
+ trWritef( x );
+ trWritef( y );
+ trWritef( z );
+ trWritef( w );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos4f( x, y, z, w );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos4fv( const GLfloat *v ) {
+ trWriteCMD( CMD_RASTERPOS4FV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayf( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos4fv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos4i( GLint x, GLint y, GLint z, GLint w ) {
+ trWriteCMD( CMD_RASTERPOS4I );
+ trWritei( x );
+ trWritei( y );
+ trWritei( z );
+ trWritei( w );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos4i( x, y, z, w );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos4iv( const GLint *v ) {
+ trWriteCMD( CMD_RASTERPOS4IV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayi( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos4iv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos4s( GLshort x, GLshort y, GLshort z, GLshort w ) {
+ trWriteCMD( CMD_RASTERPOS4S );
+ trWrites( x );
+ trWrites( y );
+ trWrites( z );
+ trWrites( w );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos4s( x, y, z, w );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRasterPos4sv( const GLshort *v ) {
+ trWriteCMD( CMD_RASTERPOS4SV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrays( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->RasterPos4sv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trReadBuffer( GLenum mode ) {
+ trWriteCMD( CMD_READBUFFER );
+ trWriteEnum( mode );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ReadBuffer( mode );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trReadPixels( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels ) {
+ GLint pixelsize;
+
+ trWriteCMD( CMD_READPIXELS );
+ trWritei( x );
+ trWritei( y );
+ trWriteSizei( width );
+ trWriteSizei( height );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)pixels );
+ trFileFlush();
+
+ pixelsize = trGetPixelSize( format, type );
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ReadPixels( x, y, width, height, format, type, pixels );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRectd( GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2 ) {
+ trWriteCMD( CMD_RECTD );
+ trWrited( x1 );
+ trWrited( y1 );
+ trWrited( x2 );
+ trWrited( y2 );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Rectd( x1, y1, x2, y2 );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRectdv( const GLdouble *v1, const GLdouble *v2 ) {
+ trWriteCMD( CMD_RECTDV );
+ trWritePointer( (void *)v1 );
+ trFileFlush();
+ trWriteArrayd( 2, v1 );
+
+ trWritePointer( (void *)v2 );
+ trFileFlush();
+ trWriteArrayd( 2, v2 );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Rectdv( v1, v2 );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRectf( GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2 ) {
+ trWriteCMD( CMD_RECTF );
+ trWritef( x1 );
+ trWritef( y1 );
+ trWritef( x2 );
+ trWritef( y2 );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Rectf( x1, y1, x2, y2 );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRectfv( const GLfloat *v1, const GLfloat *v2 ) {
+ trWriteCMD( CMD_RECTFV );
+ trWritePointer( (void *)v1 );
+ trFileFlush();
+ trWriteArrayf( 2, v1 );
+
+ trWritePointer( (void *)v2 );
+ trFileFlush();
+ trWriteArrayf( 2, v2 );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Rectfv( v1, v2 );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRecti( GLint x1, GLint y1, GLint x2, GLint y2 ) {
+ trWriteCMD( CMD_RECTI );
+ trWritei( x1 );
+ trWritei( y1 );
+ trWritei( x2 );
+ trWritei( y2 );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Recti( x1, y1, x2, y2 );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRectiv( const GLint *v1, const GLint *v2 ) {
+ trWriteCMD( CMD_RECTIV );
+ trWritePointer( (void *)v1 );
+ trFileFlush();
+ trWriteArrayi( 2, v1 );
+
+ trWritePointer( (void *)v2 );
+ trFileFlush();
+ trWriteArrayi( 2, v2 );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Rectiv( v1, v2 );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRects( GLshort x1, GLshort y1, GLshort x2, GLshort y2 ) {
+ trWriteCMD( CMD_RECTS );
+ trWrites( x1 );
+ trWrites( y1 );
+ trWrites( x2 );
+ trWrites( y2 );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Rects( x1, y1, x2, y2 );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRectsv( const GLshort *v1, const GLshort *v2 ) {
+ trWriteCMD( CMD_RECTSV );
+ trWritePointer( (void *)v1 );
+ trFileFlush();
+ trWriteArrays( 2, v1 );
+
+ trWritePointer( (void *)v2 );
+ trFileFlush();
+ trWriteArrays( 2, v2 );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Rectsv( v1, v2 );
+ trError();
+ }
+}
+
+
+GLAPI GLint GLAPIENTRY trRenderMode( GLenum mode ) {
+ GLint retval;
+
+ trWriteCMD( CMD_RENDERMODE );
+ trWriteEnum( mode );
+
+ if( trCtx()->doExec ) {
+ retval = trGetDispatch()->RenderMode( mode );
+ trError();
+ } else {
+ retval = 0;
+ }
+
+ trWritei( retval );
+ return retval;
+}
+
+
+GLAPI void GLAPIENTRY trResetHistogram( GLenum target ) {
+ trWriteCMD( CMD_RESETHISTOGRAM );
+ trWriteEnum( target );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ResetHistogram( target );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trResetMinmax( GLenum target ) {
+ trWriteCMD( CMD_RESETMINMAX );
+ trWriteEnum( target );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ResetMinmax( target );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trResizeBuffersMESA( void ) {
+ trWriteCMD( CMD_RESIZEBUFFERSMESA );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ResizeBuffersMESA( );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRotated( GLdouble angle, GLdouble x, GLdouble y, GLdouble z ) {
+ trWriteCMD( CMD_ROTATED );
+ trWrited( angle );
+ trWrited( x );
+ trWrited( y );
+ trWrited( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Rotated( angle, x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trRotatef( GLfloat angle, GLfloat x, GLfloat y, GLfloat z ) {
+ trWriteCMD( CMD_ROTATEF );
+ trWritef( angle );
+ trWritef( x );
+ trWritef( y );
+ trWritef( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Rotatef( angle, x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trScaled( GLdouble x, GLdouble y, GLdouble z ) {
+ trWriteCMD( CMD_SCALED );
+ trWrited( x );
+ trWrited( y );
+ trWrited( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Scaled( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trScalef( GLfloat x, GLfloat y, GLfloat z ) {
+ trWriteCMD( CMD_SCALEF );
+ trWritef( x );
+ trWritef( y );
+ trWritef( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Scalef( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trScissor( GLint x, GLint y, GLsizei width, GLsizei height) {
+ trWriteCMD( CMD_SCISSOR );
+ trWritei( x );
+ trWritei( y );
+ trWriteSizei( width );
+ trWriteSizei( height );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Scissor( x, y, width, height );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trSelectBuffer( GLsizei size, GLuint *buffer ) {
+ trWriteCMD( CMD_SELECTBUFFER );
+ trWriteSizei( size );
+ trWritePointer( (void *)buffer );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->SelectBuffer( size, buffer );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trSeparableFilter2D( GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column ) {
+ GLint pixelsize;
+
+ trWriteCMD( CMD_SEPARABLEFILTER2D );
+ trWriteEnum( target );
+ trWriteEnum( internalformat );
+ trWriteSizei( width );
+ trWriteSizei( height );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)row );
+ trFileFlush();
+ trWritePointer( (void *)column );
+ trFileFlush();
+
+ pixelsize = trGetPixelSize( format, type );
+ trWriteTypeArray( type, width, pixelsize, 0, row );
+ trWriteTypeArray( type, height, pixelsize, 0, column );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->SeparableFilter2D( target, internalformat, width, height, format, type, row, column );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trShadeModel( GLenum mode ) {
+ trWriteCMD( CMD_SHADEMODEL );
+ trWriteEnum( mode );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->ShadeModel( mode );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trStencilFunc( GLenum func, GLint ref, GLuint mask ) {
+ trWriteCMD( CMD_STENCILFUNC );
+ trWriteEnum( func );
+ trWritei( ref );
+ trWriteui( mask );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->StencilFunc( func, ref, mask );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trStencilMask( GLuint mask ) {
+ trWriteCMD( CMD_STENCILMASK );
+ trWriteui( mask );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->StencilMask( mask );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trStencilOp( GLenum fail, GLenum zfail, GLenum zpass ) {
+ trWriteCMD( CMD_STENCILOP );
+ trWriteEnum( fail );
+ trWriteEnum( zfail );
+ trWriteEnum( zpass );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->StencilOp( fail, zfail, zpass );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord1d( GLdouble s ) {
+ trWriteCMD( CMD_TEXCOORD1D );
+ trWrited( s );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord1d( s );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord1dv( const GLdouble *v ) {
+ trWriteCMD( CMD_TEXCOORD1DV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWrited( v[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord1dv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord1f( GLfloat s ) {
+ trWriteCMD( CMD_TEXCOORD1F );
+ trWritef( s );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord1f( s );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord1fv( const GLfloat *v ) {
+ trWriteCMD( CMD_TEXCOORD1FV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWritef( v[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord1fv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord1i( GLint s ) {
+ trWriteCMD( CMD_TEXCOORD1I );
+ trWritei( s );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord1i( s );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord1iv( const GLint *v ) {
+ trWriteCMD( CMD_TEXCOORD1IV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWritei( v[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord1iv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord1s( GLshort s ) {
+ trWriteCMD( CMD_TEXCOORD1S );
+ trWrites( s );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord1s( s );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord1sv( const GLshort *v ) {
+ trWriteCMD( CMD_TEXCOORD1SV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWrites( v[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord1sv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord2d( GLdouble s, GLdouble t ) {
+ trWriteCMD( CMD_TEXCOORD2D );
+ trWrited( s );
+ trWrited( t );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord2d( s, t );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord2dv( const GLdouble *v ) {
+ trWriteCMD( CMD_TEXCOORD2DV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayd( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord2dv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord2f( GLfloat s, GLfloat t ) {
+ trWriteCMD( CMD_TEXCOORD2F );
+ trWritef( s );
+ trWritef( t );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord2f( s, t );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord2fv( const GLfloat *v ) {
+ trWriteCMD( CMD_TEXCOORD2FV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayf( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord2fv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord2i( GLint s, GLint t ) {
+ trWriteCMD( CMD_TEXCOORD2I );
+ trWritei( s );
+ trWritei( t );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord2i( s, t );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord2iv( const GLint *v ) {
+ trWriteCMD( CMD_TEXCOORD2IV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayi( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord2iv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord2s( GLshort s, GLshort t ) {
+ trWriteCMD( CMD_TEXCOORD2S );
+ trWrites( s );
+ trWrites( t );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord2s( s, t );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord2sv( const GLshort *v ) {
+ trWriteCMD( CMD_TEXCOORD2SV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrays( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord2sv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord3d( GLdouble s, GLdouble t, GLdouble r ) {
+ trWriteCMD( CMD_TEXCOORD3D );
+ trWrited( s );
+ trWrited( t );
+ trWrited( r );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord3d( s, t, r );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord3dv( const GLdouble *v ) {
+ trWriteCMD( CMD_TEXCOORD3DV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayd( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord3dv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord3f( GLfloat s, GLfloat t, GLfloat r ) {
+ trWriteCMD( CMD_TEXCOORD3F );
+ trWritef( s );
+ trWritef( t );
+ trWritef( r );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord3f( s, t, r );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord3fv( const GLfloat *v ) {
+ trWriteCMD( CMD_TEXCOORD3FV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayf( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord3fv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord3i( GLint s, GLint t, GLint r ) {
+ trWriteCMD( CMD_TEXCOORD3I );
+ trWritei( s );
+ trWritei( t );
+ trWritei( r );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord3i( s, t, r );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord3iv( const GLint *v ) {
+ trWriteCMD( CMD_TEXCOORD3IV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayi( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord3iv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord3s( GLshort s, GLshort t, GLshort r ) {
+ trWriteCMD( CMD_TEXCOORD3S );
+ trWrites( s );
+ trWrites( t );
+ trWrites( r );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord3s( s, t, r );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord3sv( const GLshort *v ) {
+ trWriteCMD( CMD_TEXCOORD3SV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrays( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord3sv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q ) {
+ trWriteCMD( CMD_TEXCOORD4D );
+ trWrited( s );
+ trWrited( t );
+ trWrited( r );
+ trWrited( q );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord4d( s, t, r, q );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord4dv( const GLdouble *v ) {
+ trWriteCMD( CMD_TEXCOORD4DV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayd( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord4dv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord4f( GLfloat s, GLfloat t, GLfloat r, GLfloat q ) {
+ trWriteCMD( CMD_TEXCOORD4F );
+ trWritef( s );
+ trWritef( t );
+ trWritef( r );
+ trWritef( q );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord4f( s, t, r, q );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord4fv( const GLfloat *v ) {
+ trWriteCMD( CMD_TEXCOORD4FV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayf( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord4fv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord4i( GLint s, GLint t, GLint r, GLint q ) {
+ trWriteCMD( CMD_TEXCOORD4I );
+ trWritei( s );
+ trWritei( t );
+ trWritei( r );
+ trWritei( q );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord4i( s, t, r, q );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord4iv( const GLint *v ) {
+ trWriteCMD( CMD_TEXCOORD4IV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayi( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord4iv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q ) {
+ trWriteCMD( CMD_TEXCOORD4S );
+ trWrites( s );
+ trWrites( t );
+ trWrites( r );
+ trWrites( q );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord4s( s, t, r, q );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoord4sv( const GLshort *v ) {
+ trWriteCMD( CMD_TEXCOORD4SV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrays( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoord4sv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoordPointerEXT( GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *ptr ) { /* TODO */
+ trWriteCMD( CMD_TEXCOORDPOINTEREXT );
+ trWritei( size );
+ trWriteEnum( type );
+ trWriteSizei( stride );
+ trWriteSizei( count );
+ trWritePointer( (void *)ptr );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexCoordPointerEXT( size, type, stride, count, ptr );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexCoordPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *ptr ) { /* TODO */
+ trace_context_t * tctx;
+
+ trWriteCMD( CMD_TEXCOORDPOINTER );
+ trWritei( size );
+ trWriteEnum( type );
+ trWriteSizei( stride );
+ trWritePointer( (void *)ptr );
+ trFileFlush();
+
+ if( tctx->doExec ) {
+ trGetDispatch()->TexCoordPointer( size, type, stride, ptr );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexEnvf( GLenum target, GLenum pname, GLfloat param ) {
+ trWriteCMD( CMD_TEXENVF );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritef( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexEnvf( target, pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexEnvfv( GLenum target, GLenum pname, const GLfloat *params ) {
+ trWriteCMD( CMD_TEXENVFV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_TEXTURE_ENV_MODE:
+ trWritef( params[0] );
+ break;
+ case GL_TEXTURE_ENV_COLOR:
+ trWriteArrayf( 4, params );
+ break;
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexEnvfv( target, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexEnvi( GLenum target, GLenum pname, GLint param ) {
+ trWriteCMD( CMD_TEXENVI );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritei( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexEnvi( target, pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexEnviv( GLenum target, GLenum pname, const GLint *params ) {
+ trWriteCMD( CMD_TEXENVIV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_TEXTURE_ENV_MODE:
+ trWritei( params[0] );
+ break;
+ case GL_TEXTURE_ENV_COLOR:
+ trWriteArrayi( 4, params );
+ break;
+ default:
+ /* The 2nd pass should catch this */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexEnviv( target, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexGend( GLenum coord, GLenum pname, GLdouble param ) {
+ trWriteCMD( CMD_TEXGEND );
+ trWriteEnum( coord );
+ trWriteEnum( pname );
+ trWrited( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexGend( coord, pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexGendv( GLenum coord, GLenum pname, const GLdouble *params ) {
+ trWriteCMD( CMD_TEXGENDV );
+ trWriteEnum( coord );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_TEXTURE_GEN_MODE:
+ trWrited( params[0] );
+ break;
+
+ case GL_OBJECT_PLANE:
+ case GL_EYE_PLANE:
+ trWriteArrayd( 4, params );
+ break;
+
+ default:
+ /* The 2nd pass should catch this. */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexGendv( coord, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexGenf( GLenum coord, GLenum pname, GLfloat param ) {
+ trWriteCMD( CMD_TEXGENF );
+ trWriteEnum( coord );
+ trWriteEnum( pname );
+ trWritef( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexGenf( coord, pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexGenfv( GLenum coord, GLenum pname, const GLfloat *params ) {
+ trWriteCMD( CMD_TEXGENFV );
+ trWriteEnum( coord );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_TEXTURE_GEN_MODE:
+ trWritef( params[0] );
+ break;
+
+ case GL_OBJECT_PLANE:
+ case GL_EYE_PLANE:
+ trWriteArrayf( 4, params );
+ break;
+
+ default:
+ /* The 2nd pass should catch this. */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexGenfv( coord, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexGeni( GLenum coord, GLenum pname, GLint param ) {
+ trWriteCMD( CMD_TEXGENI );
+ trWriteEnum( coord );
+ trWriteEnum( pname );
+ trWritei( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexGeni( coord, pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexGeniv( GLenum coord, GLenum pname, const GLint *params ) {
+ trWriteCMD( CMD_TEXGENIV );
+ trWriteEnum( coord );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+
+ switch( pname ) {
+ case GL_TEXTURE_GEN_MODE:
+ trWritei( params[0] );
+ break;
+
+ case GL_OBJECT_PLANE:
+ case GL_EYE_PLANE:
+ trWriteArrayi( 4, params );
+ break;
+
+ default:
+ /* The 2nd pass should catch this. */
+ break;
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexGeniv( coord, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexImage1D( GLenum target, GLint level, GLint internalFormat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) { /* TODO */
+ GLint pixelsize;
+
+ trWriteCMD( CMD_TEXIMAGE1D );
+ trWriteEnum( target );
+ trWritei( level );
+ trWritei( internalFormat );
+ trWriteSizei( width );
+ trWritei( border );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)pixels );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexImage1D( target, level, internalFormat, width, border, format, type, pixels );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexImage2D( GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) { /* TODO */
+ GLint pixelsize;
+
+ trWriteCMD( CMD_TEXIMAGE2D );
+ trWriteEnum( target );
+ trWritei( level );
+ trWritei( internalFormat );
+ trWriteSizei( width );
+ trWriteSizei( height );
+ trWritei( border );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)pixels );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexImage2D( target, level, internalFormat, width, height, border, format, type, pixels );
+ trError();
+ }
+}
+
+
+#if 0
+// Not in MESAs dispatch table
+GLAPI void GLAPIENTRY trTexImage3DEXT( GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) { /* TODO */
+
+ trWriteCMD( CMD_TEXIMAGE3DEXT );
+ trWriteEnum( target );
+ trWritei( level );
+ trWriteEnum( internalFormat );
+ trWriteSizei( width );
+ trWriteSizei( height );
+ trWriteSizei( depth );
+ trWritei( border );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)pixels );
+ trFileFlush();
+
+ /* Pixels isn't touched if target is GL_PROXY_TEXTURE_3D */
+ if( target != GL_PROXY_TEXTURE_3D ) {
+ pixelsize = trGetPixelSize( format, type );
+ trWritePixelArray( GL_FALSE, type, width, height, depth, pixelsize, pixels );
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexImage3DEXT( target, level, internalFormat, width, height, depth, border, format, type, pixels );
+ trError();
+ }
+}
+#endif
+
+
+GLAPI void GLAPIENTRY trTexImage3D( GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) { /* TODO */
+ GLint pixelsize;
+
+ trWriteCMD( CMD_TEXIMAGE3D );
+ trWriteEnum( target );
+ trWritei( level );
+ trWritei( internalFormat );
+ trWriteSizei( width );
+ trWriteSizei( height );
+ trWriteSizei( depth );
+ trWritei( border );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)pixels );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexImage3D( target, level, internalFormat, width, height, depth, border, format, type, pixels );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexParameterf( GLenum target, GLenum pname, GLfloat param ) {
+ trWriteCMD( CMD_TEXPARAMETERF );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritef( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexParameterf( target, pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexParameterfv( GLenum target, GLenum pname, const GLfloat *params ) {
+ trWriteCMD( CMD_TEXPARAMETERFV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+ trWritef( params[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexParameterfv( target, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexParameteri( GLenum target, GLenum pname, GLint param ) {
+ trWriteCMD( CMD_TEXPARAMETERI );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritei( param );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexParameteri( target, pname, param );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexParameteriv( GLenum target, GLenum pname, const GLint *params ) {
+ trWriteCMD( CMD_TEXPARAMETERIV );
+ trWriteEnum( target );
+ trWriteEnum( pname );
+ trWritePointer( (void *)params );
+ trFileFlush();
+ trWritei( params[0] );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexParameteriv( target, pname, params );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels ) { /* TODO */
+ GLint pixelsize;
+
+ trWriteCMD( CMD_TEXSUBIMAGE1D );
+ trWriteEnum( target );
+ trWritei( level );
+ trWritei( xoffset );
+ trWriteSizei( width );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)pixels );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexSubImage1D( target, level, xoffset, width, format, type, pixels );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels ) { /* TODO */
+ GLint pixelsize;
+
+ trWriteCMD( CMD_TEXSUBIMAGE2D );
+ trWriteEnum( target );
+ trWritei( level );
+ trWritei( xoffset );
+ trWritei( yoffset );
+ trWriteSizei( width );
+ trWriteSizei( height );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)pixels );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexSubImage2D( target, level, xoffset, yoffset, width, height, format, type, pixels );
+ trError();
+ }
+}
+
+
+#if 0
+// Not in MESAs dispatch table
+GLAPI void GLAPIENTRY trTexSubImage3DEXT( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) { /* TODO */
+ GLint pixelsize;
+
+ trWriteCMD( CMD_TEXSUBIMAGE3DEXT );
+ trWriteEnum( target );
+ trWritei( level );
+ trWritei( xoffset );
+ trWritei( yoffset );
+ trWritei( zoffset );
+ trWriteSizei( width );
+ trWriteSizei( height );
+ trWriteSizei( depth );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)pixels );
+ trFileFlush();
+
+ /* Pixels isn't touched if target is GL_PROXY_TEXTURE_3D */
+ if( target != GL_PROXY_TEXTURE_3D ) {
+ pixelsize = trGetPixelSize( format, type );
+ trWritePixelArray( GL_FALSE, type, width, height, depth, pixelsize, pixels );
+ }
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexSubImage3DEXT( target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels );
+ trError();
+ }
+}
+#endif
+
+
+GLAPI void GLAPIENTRY trTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) { /* TODO */
+ GLint pixelsize;
+
+ trWriteCMD( CMD_TEXSUBIMAGE3D );
+ trWriteEnum( target );
+ trWritei( level );
+ trWritei( xoffset );
+ trWritei( yoffset );
+ trWritei( zoffset );
+ trWriteSizei( width );
+ trWriteSizei( height );
+ trWriteSizei( depth );
+ trWriteEnum( format );
+ trWriteEnum( type );
+ trWritePointer( (void *)pixels );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->TexSubImage3D( target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTranslated( GLdouble x, GLdouble y, GLdouble z ) {
+ trWriteCMD( CMD_TRANSLATED );
+ trWrited( x );
+ trWrited( y );
+ trWrited( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Translated( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trTranslatef( GLfloat x, GLfloat y, GLfloat z ) {
+ trWriteCMD( CMD_TRANSLATEF );
+ trWritef( x );
+ trWritef( y );
+ trWritef( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Translatef( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trUnlockArraysEXT( void ) {
+ trWriteCMD( CMD_UNLOCKARRAYSEXT );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->UnlockArraysEXT( );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex2d( GLdouble x, GLdouble y ) {
+ trWriteCMD( CMD_VERTEX2D );
+ trWrited( x );
+ trWrited( y );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex2d( x, y );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex2dv( const GLdouble *v ) {
+ trWriteCMD( CMD_VERTEX2DV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayd( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex2dv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex2f( GLfloat x, GLfloat y ) {
+ trWriteCMD( CMD_VERTEX2F );
+ trWritef( x );
+ trWritef( y );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex2f( x, y );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex2fv( const GLfloat *v ) {
+ trWriteCMD( CMD_VERTEX2FV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayf( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex2fv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex2i( GLint x, GLint y ) {
+ trWriteCMD( CMD_VERTEX2I );
+ trWritei( x );
+ trWritei( y );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex2i( x, y );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex2iv( const GLint *v ) {
+ trWriteCMD( CMD_VERTEX2IV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayi( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex2iv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex2s( GLshort x, GLshort y ) {
+ trWriteCMD( CMD_VERTEX2S );
+ trWrites( x );
+ trWrites( y );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex2s( x, y );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex2sv( const GLshort *v ) {
+ trWriteCMD( CMD_VERTEX2SV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrays( 2, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex2sv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex3d( GLdouble x, GLdouble y, GLdouble z ) {
+ trWriteCMD( CMD_VERTEX3D );
+ trWrited( x );
+ trWrited( y );
+ trWrited( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex3d( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex3dv( const GLdouble *v ) {
+ trWriteCMD( CMD_VERTEX3DV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayd( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex3dv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex3f( GLfloat x, GLfloat y, GLfloat z ) {
+ trWriteCMD( CMD_VERTEX3F );
+ trWritef( x );
+ trWritef( y );
+ trWritef( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex3f( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex3fv( const GLfloat *v ) {
+ trWriteCMD( CMD_VERTEX3FV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayf( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex3fv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex3i( GLint x, GLint y, GLint z ) {
+ trWriteCMD( CMD_VERTEX3I );
+ trWritei( x );
+ trWritei( y );
+ trWritei( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex3i( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex3iv( const GLint *v ) {
+ trWriteCMD( CMD_VERTEX3IV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayi( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex3iv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex3s( GLshort x, GLshort y, GLshort z ) {
+ trWriteCMD( CMD_VERTEX3S );
+ trWrites( x );
+ trWrites( y );
+ trWrites( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex3s( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex3sv( const GLshort *v ) {
+ trWriteCMD( CMD_VERTEX3SV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrays( 3, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex3sv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w ) {
+ trWriteCMD( CMD_VERTEX4D );
+ trWrited( x );
+ trWrited( y );
+ trWrited( z );
+ trWrited( w );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex4d( x, y, z, w );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex4dv( const GLdouble *v ) {
+ trWriteCMD( CMD_VERTEX4DV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayd( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex4dv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w ) {
+ trWriteCMD( CMD_VERTEX4F );
+ trWritef( x );
+ trWritef( y );
+ trWritef( z );
+ trWritef( w );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex4f( x, y, z, w );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex4fv( const GLfloat *v ) {
+ trWriteCMD( CMD_VERTEX4FV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayf( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex4fv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex4i( GLint x, GLint y, GLint z, GLint w ) {
+ trWriteCMD( CMD_VERTEX4I );
+ trWritei( x );
+ trWritei( y );
+ trWritei( z );
+ trWritei( w );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex4i( x, y, z, w );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex4iv( const GLint *v ) {
+ trWriteCMD( CMD_VERTEX4IV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrayi( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex4iv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex4s( GLshort x, GLshort y, GLshort z, GLshort w ) {
+ trWriteCMD( CMD_VERTEX4S );
+ trWrites( x );
+ trWrites( y );
+ trWrites( z );
+ trWrites( w );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex4s( x, y, z, w );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertex4sv( const GLshort *v ) {
+ trWriteCMD( CMD_VERTEX4SV );
+ trWritePointer( (void *)v );
+ trFileFlush();
+ trWriteArrays( 4, v );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Vertex4sv( v );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertexPointerEXT( GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *ptr ) { /* TODO */
+ trWriteCMD( CMD_VERTEXPOINTEREXT );
+ trWritei( size );
+ trWriteEnum( type );
+ trWriteSizei( stride );
+ trWriteSizei( count );
+ trWritePointer( (void *)ptr );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->VertexPointerEXT( size, type, stride, count, ptr );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trVertexPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *ptr ) { /* TODO */
+ trWriteCMD( CMD_VERTEXPOINTER );
+ trWritei( size );
+ trWriteEnum( type );
+ trWriteSizei( stride );
+ trWritePointer( (void *)ptr );
+ trFileFlush();
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->VertexPointer( size, type, stride, ptr );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trViewport( GLint x, GLint y, GLsizei width, GLsizei height ) {
+ trWriteCMD( CMD_VIEWPORT );
+ trWritei( x );
+ trWritei( y );
+ trWriteSizei( width );
+ trWriteSizei( height );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->Viewport( x, y, width, height );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos2dMESA( GLdouble x, GLdouble y ) {
+ trWriteCMD( CMD_WINDOWPOS2DMESA );
+ trWrited( x );
+ trWrited( y );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos2dMESA( x, y );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos2dvMESA( const GLdouble *p ) {
+ trWriteCMD( CMD_WINDOWPOS2DVMESA );
+ trWritePointer( (void *)p );
+ trFileFlush();
+ trWriteArrayd( 2, p );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos2dvMESA( p );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos2fMESA( GLfloat x, GLfloat y ) {
+ trWriteCMD( CMD_WINDOWPOS2FMESA );
+ trWritef( x );
+ trWritef( y );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos2fMESA( x, y );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos2fvMESA( const GLfloat *p ) {
+ trWriteCMD( CMD_WINDOWPOS2FVMESA );
+ trWritePointer( (void *)p );
+ trFileFlush();
+ trWriteArrayf( 2, p );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos2fvMESA( p );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos2iMESA( GLint x, GLint y ) {
+ trWriteCMD( CMD_WINDOWPOS2IMESA );
+ trWritei( x );
+ trWritei( y );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos2iMESA( x, y );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos2ivMESA( const GLint *p ) {
+ trWriteCMD( CMD_WINDOWPOS2IVMESA );
+ trWritePointer( (void *)p );
+ trFileFlush();
+ trWriteArrayi( 2, p );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos2ivMESA( p );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos2sMESA( GLshort x, GLshort y ) {
+ trWriteCMD( CMD_WINDOWPOS2SMESA );
+ trWrites( x );
+ trWrites( y );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos2sMESA( x, y );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos2svMESA( const GLshort *p ) {
+ trWriteCMD( CMD_WINDOWPOS2SVMESA );
+ trWritePointer( (void *)p );
+ trFileFlush();
+ trWriteArrays( 2, p );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos2svMESA( p );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos3dMESA( GLdouble x, GLdouble y, GLdouble z ) {
+ trWriteCMD( CMD_WINDOWPOS3DMESA );
+ trWrited( x );
+ trWrited( y );
+ trWrited( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos3dMESA( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos3dvMESA( const GLdouble *p ) {
+ trWriteCMD( CMD_WINDOWPOS3DVMESA );
+ trWritePointer( (void *)p );
+ trFileFlush();
+ trWriteArrayd( 3, p );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos3dvMESA( p );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos3fMESA( GLfloat x, GLfloat y, GLfloat z ) {
+ trWriteCMD( CMD_WINDOWPOS3FMESA );
+ trWritef( x );
+ trWritef( y );
+ trWritef( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos3fMESA( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos3fvMESA( const GLfloat *p ) {
+ trWriteCMD( CMD_WINDOWPOS3FVMESA );
+ trWritePointer( (void *)p );
+ trFileFlush();
+ trWriteArrayf( 3, p );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos3fvMESA( p );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos3iMESA( GLint x, GLint y, GLint z ) {
+ trWriteCMD( CMD_WINDOWPOS3IMESA );
+ trWritei( x );
+ trWritei( y );
+ trWritei( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos3iMESA( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos3ivMESA( const GLint *p ) {
+ trWriteCMD( CMD_WINDOWPOS3IVMESA );
+ trWritePointer( (void *)p );
+ trFileFlush();
+ trWriteArrayi( 3, p );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos3ivMESA( p );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos3sMESA( GLshort x, GLshort y, GLshort z ) {
+ trWriteCMD( CMD_WINDOWPOS3SMESA );
+ trWrites( x );
+ trWrites( y );
+ trWrites( z );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos3sMESA( x, y, z );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos3svMESA( const GLshort *p ) {
+ trWriteCMD( CMD_WINDOWPOS3SVMESA );
+ trWritePointer( (void *)p );
+ trFileFlush();
+ trWriteArrays( 3, p );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos3svMESA( p );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos4dMESA( GLdouble x, GLdouble y, GLdouble z, GLdouble w) {
+ trWriteCMD( CMD_WINDOWPOS4DMESA );
+ trWrited( x );
+ trWrited( y );
+ trWrited( z );
+ trWrited( w );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos4dMESA( x, y, z, w );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos4dvMESA( const GLdouble *p ) {
+ trWriteCMD( CMD_WINDOWPOS4DVMESA );
+ trWritePointer( (void *)p );
+ trFileFlush();
+ trWriteArrayd( 4, p );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos4dvMESA( p );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos4fMESA( GLfloat x, GLfloat y, GLfloat z, GLfloat w ) {
+ trWriteCMD( CMD_WINDOWPOS4FMESA );
+ trWritef( x );
+ trWritef( y );
+ trWritef( z );
+ trWritef( w );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos4fMESA( x, y, z, w );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos4fvMESA( const GLfloat *p ) {
+ trWriteCMD( CMD_WINDOWPOS4FVMESA );
+ trWritePointer( (void *)p );
+ trFileFlush();
+ trWriteArrayf( 4, p );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos4fvMESA( p );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos4iMESA( GLint x, GLint y, GLint z, GLint w ) {
+ trWriteCMD( CMD_WINDOWPOS4IMESA );
+ trWritei( x );
+ trWritei( y );
+ trWritei( z );
+ trWritei( w );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos4iMESA( x, y, z, w );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos4ivMESA( const GLint *p ) {
+ trWriteCMD( CMD_WINDOWPOS4IVMESA );
+ trWritePointer( (void *)p );
+ trFileFlush();
+ trWriteArrayi( 4, p );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos4ivMESA( p );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos4sMESA( GLshort x, GLshort y, GLshort z, GLshort w ) {
+ trWriteCMD( CMD_WINDOWPOS4SMESA );
+ trWrites( x );
+ trWrites( y );
+ trWrites( z );
+ trWrites( w );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos4sMESA( x, y, z, w );
+ trError();
+ }
+}
+
+
+GLAPI void GLAPIENTRY trWindowPos4svMESA( const GLshort *p ) {
+ trWriteCMD( CMD_WINDOWPOS4SVMESA );
+ trWritePointer( (void *)p );
+ trFileFlush();
+ trWriteArrays( 4, p );
+
+ if( trCtx()->doExec ) {
+ trGetDispatch()->WindowPos4svMESA( p );
+ trError();
+ }
+}
+
+
+void trInitDispatch( struct _glapi_table* dispatch ) {
+
+ /* assert(dispatch); */
+ if (!dispatch)
+ return;
+
+ memset(dispatch,0,sizeof(struct _glapi_table));
+
+ dispatch->NewList = trNewList; /* 0 */
+ dispatch->EndList = trEndList; /* 1 */
+ dispatch->CallList = trCallList; /* 2 */
+ dispatch->CallLists = trCallLists; /* 3 */
+ dispatch->DeleteLists = trDeleteLists; /* 4 */
+ dispatch->GenLists = trGenLists; /* 5 */
+ dispatch->ListBase = trListBase; /* 6 */
+ dispatch->Begin = trBegin; /* 7 */
+ dispatch->Bitmap = trBitmap; /* 8 */
+ dispatch->Color3b = trColor3b; /* 9 */
+ dispatch->Color3bv = trColor3bv; /* 10 */
+ dispatch->Color3d = trColor3d; /* 11 */
+ dispatch->Color3dv = trColor3dv; /* 12 */
+ dispatch->Color3f = trColor3f; /* 13 */
+ dispatch->Color3fv = trColor3fv; /* 14 */
+ dispatch->Color3i = trColor3i; /* 15 */
+ dispatch->Color3iv = trColor3iv; /* 16 */
+ dispatch->Color3s = trColor3s; /* 17 */
+ dispatch->Color3sv = trColor3sv; /* 18 */
+ dispatch->Color3ub = trColor3ub; /* 19 */
+ dispatch->Color3ubv = trColor3ubv; /* 20 */
+ dispatch->Color3ui = trColor3ui; /* 21 */
+ dispatch->Color3uiv = trColor3uiv; /* 22 */
+ dispatch->Color3us = trColor3us; /* 23 */
+ dispatch->Color3usv = trColor3usv; /* 24 */
+ dispatch->Color4b = trColor4b; /* 25 */
+ dispatch->Color4bv = trColor4bv; /* 26 */
+ dispatch->Color4d = trColor4d; /* 27 */
+ dispatch->Color4dv = trColor4dv; /* 28 */
+ dispatch->Color4f = trColor4f; /* 29 */
+ dispatch->Color4fv = trColor4fv; /* 30 */
+ dispatch->Color4i = trColor4i; /* 31 */
+ dispatch->Color4iv = trColor4iv; /* 32 */
+ dispatch->Color4s = trColor4s; /* 33 */
+ dispatch->Color4sv = trColor4sv; /* 34 */
+ dispatch->Color4ub = trColor4ub; /* 35 */
+ dispatch->Color4ubv = trColor4ubv; /* 36 */
+ dispatch->Color4ui = trColor4ui; /* 37 */
+ dispatch->Color4uiv = trColor4uiv; /* 38 */
+ dispatch->Color4us = trColor4us; /* 39 */
+ dispatch->Color4usv = trColor4usv; /* 40 */
+ dispatch->EdgeFlag = trEdgeFlag; /* 41 */
+ dispatch->EdgeFlagv = trEdgeFlagv; /* 42 */
+ dispatch->End = trEnd; /* 43 */
+ dispatch->Indexd = trIndexd; /* 44 */
+ dispatch->Indexdv = trIndexdv; /* 45 */
+ dispatch->Indexf = trIndexf; /* 46 */
+ dispatch->Indexfv = trIndexfv; /* 47 */
+ dispatch->Indexi = trIndexi; /* 48 */
+ dispatch->Indexiv = trIndexiv; /* 49 */
+ dispatch->Indexs = trIndexs; /* 50 */
+ dispatch->Indexsv = trIndexsv; /* 51 */
+ dispatch->Normal3b = trNormal3b; /* 52 */
+ dispatch->Normal3bv = trNormal3bv; /* 53 */
+ dispatch->Normal3d = trNormal3d; /* 54 */
+ dispatch->Normal3dv = trNormal3dv; /* 55 */
+ dispatch->Normal3f = trNormal3f; /* 56 */
+ dispatch->Normal3fv = trNormal3fv; /* 57 */
+ dispatch->Normal3i = trNormal3i; /* 58 */
+ dispatch->Normal3iv = trNormal3iv; /* 59 */
+ dispatch->Normal3s = trNormal3s; /* 60 */
+ dispatch->Normal3sv = trNormal3sv; /* 61 */
+ dispatch->RasterPos2d = trRasterPos2d; /* 62 */
+ dispatch->RasterPos2dv = trRasterPos2dv; /* 63 */
+ dispatch->RasterPos2f = trRasterPos2f; /* 64 */
+ dispatch->RasterPos2fv = trRasterPos2fv; /* 65 */
+ dispatch->RasterPos2i = trRasterPos2i; /* 66 */
+ dispatch->RasterPos2iv = trRasterPos2iv; /* 67 */
+ dispatch->RasterPos2s = trRasterPos2s; /* 68 */
+ dispatch->RasterPos2sv = trRasterPos2sv; /* 69 */
+ dispatch->RasterPos3d = trRasterPos3d; /* 70 */
+ dispatch->RasterPos3dv = trRasterPos3dv; /* 71 */
+ dispatch->RasterPos3f = trRasterPos3f; /* 72 */
+ dispatch->RasterPos3fv = trRasterPos3fv; /* 73 */
+ dispatch->RasterPos3i = trRasterPos3i; /* 74 */
+ dispatch->RasterPos3iv = trRasterPos3iv; /* 75 */
+ dispatch->RasterPos3s = trRasterPos3s; /* 76 */
+ dispatch->RasterPos3sv = trRasterPos3sv; /* 77 */
+ dispatch->RasterPos4d = trRasterPos4d; /* 78 */
+ dispatch->RasterPos4dv = trRasterPos4dv; /* 79 */
+ dispatch->RasterPos4f = trRasterPos4f; /* 80 */
+ dispatch->RasterPos4fv = trRasterPos4fv; /* 81 */
+ dispatch->RasterPos4i = trRasterPos4i; /* 82 */
+ dispatch->RasterPos4iv = trRasterPos4iv; /* 83 */
+ dispatch->RasterPos4s = trRasterPos4s; /* 84 */
+ dispatch->RasterPos4sv = trRasterPos4sv; /* 85 */
+ dispatch->Rectd = trRectd; /* 86 */
+ dispatch->Rectdv = trRectdv; /* 87 */
+ dispatch->Rectf = trRectf; /* 88 */
+ dispatch->Rectfv = trRectfv; /* 89 */
+ dispatch->Recti = trRecti; /* 90 */
+ dispatch->Rectiv = trRectiv; /* 91 */
+ dispatch->Rects = trRects; /* 92 */
+ dispatch->Rectsv = trRectsv; /* 93 */
+ dispatch->TexCoord1d = trTexCoord1d; /* 94 */
+ dispatch->TexCoord1dv = trTexCoord1dv; /* 95 */
+ dispatch->TexCoord1f = trTexCoord1f; /* 96 */
+ dispatch->TexCoord1fv = trTexCoord1fv; /* 97 */
+ dispatch->TexCoord1i = trTexCoord1i; /* 98 */
+ dispatch->TexCoord1iv = trTexCoord1iv; /* 99 */
+ dispatch->TexCoord1s = trTexCoord1s; /* 100 */
+ dispatch->TexCoord1sv = trTexCoord1sv; /* 101 */
+ dispatch->TexCoord2d = trTexCoord2d; /* 102 */
+ dispatch->TexCoord2dv = trTexCoord2dv; /* 103 */
+ dispatch->TexCoord2f = trTexCoord2f; /* 104 */
+ dispatch->TexCoord2fv = trTexCoord2fv; /* 105 */
+ dispatch->TexCoord2i = trTexCoord2i; /* 106 */
+ dispatch->TexCoord2iv = trTexCoord2iv; /* 107 */
+ dispatch->TexCoord2s = trTexCoord2s; /* 108 */
+ dispatch->TexCoord2sv = trTexCoord2sv; /* 109 */
+ dispatch->TexCoord3d = trTexCoord3d; /* 110 */
+ dispatch->TexCoord3dv = trTexCoord3dv; /* 111 */
+ dispatch->TexCoord3f = trTexCoord3f; /* 112 */
+ dispatch->TexCoord3fv = trTexCoord3fv; /* 113 */
+ dispatch->TexCoord3i = trTexCoord3i; /* 114 */
+ dispatch->TexCoord3iv = trTexCoord3iv; /* 115 */
+ dispatch->TexCoord3s = trTexCoord3s; /* 116 */
+ dispatch->TexCoord3sv = trTexCoord3sv; /* 117 */
+ dispatch->TexCoord4d = trTexCoord4d; /* 118 */
+ dispatch->TexCoord4dv = trTexCoord4dv; /* 119 */
+ dispatch->TexCoord4f = trTexCoord4f; /* 120 */
+ dispatch->TexCoord4fv = trTexCoord4fv; /* 121 */
+ dispatch->TexCoord4i = trTexCoord4i; /* 122 */
+ dispatch->TexCoord4iv = trTexCoord4iv; /* 123 */
+ dispatch->TexCoord4s = trTexCoord4s; /* 124 */
+ dispatch->TexCoord4sv = trTexCoord4sv; /* 125 */
+ dispatch->Vertex2d = trVertex2d; /* 126 */
+ dispatch->Vertex2dv = trVertex2dv; /* 127 */
+ dispatch->Vertex2f = trVertex2f; /* 128 */
+ dispatch->Vertex2fv = trVertex2fv; /* 129 */
+ dispatch->Vertex2i = trVertex2i; /* 130 */
+ dispatch->Vertex2iv = trVertex2iv; /* 131 */
+ dispatch->Vertex2s = trVertex2s; /* 132 */
+ dispatch->Vertex2sv = trVertex2sv; /* 133 */
+ dispatch->Vertex3d = trVertex3d; /* 134 */
+ dispatch->Vertex3dv = trVertex3dv; /* 135 */
+ dispatch->Vertex3f = trVertex3f; /* 136 */
+ dispatch->Vertex3fv = trVertex3fv; /* 137 */
+ dispatch->Vertex3i = trVertex3i; /* 138 */
+ dispatch->Vertex3iv = trVertex3iv; /* 139 */
+ dispatch->Vertex3s = trVertex3s; /* 140 */
+ dispatch->Vertex3sv = trVertex3sv; /* 141 */
+ dispatch->Vertex4d = trVertex4d; /* 142 */
+ dispatch->Vertex4dv = trVertex4dv; /* 143 */
+ dispatch->Vertex4f = trVertex4f; /* 144 */
+ dispatch->Vertex4fv = trVertex4fv; /* 145 */
+ dispatch->Vertex4i = trVertex4i; /* 146 */
+ dispatch->Vertex4iv = trVertex4iv; /* 147 */
+ dispatch->Vertex4s = trVertex4s; /* 148 */
+ dispatch->Vertex4sv = trVertex4sv; /* 149 */
+ dispatch->ClipPlane = trClipPlane; /* 150 */
+ dispatch->ColorMaterial = trColorMaterial; /* 151 */
+ dispatch->CullFace = trCullFace; /* 152 */
+ dispatch->Fogf = trFogf; /* 153 */
+ dispatch->Fogfv = trFogfv; /* 154 */
+ dispatch->Fogi = trFogi; /* 155 */
+ dispatch->Fogiv = trFogiv; /* 156 */
+ dispatch->FrontFace = trFrontFace; /* 157 */
+ dispatch->Hint = trHint; /* 158 */
+ dispatch->Lightf = trLightf; /* 159 */
+ dispatch->Lightfv = trLightfv; /* 160 */
+ dispatch->Lighti = trLighti; /* 161 */
+ dispatch->Lightiv = trLightiv; /* 162 */
+ dispatch->LightModelf = trLightModelf; /* 163 */
+ dispatch->LightModelfv = trLightModelfv; /* 164 */
+ dispatch->LightModeli = trLightModeli; /* 165 */
+ dispatch->LightModeliv = trLightModeliv; /* 166 */
+ dispatch->LineStipple = trLineStipple; /* 167 */
+ dispatch->LineWidth = trLineWidth; /* 168 */
+ dispatch->Materialf = trMaterialf; /* 169 */
+ dispatch->Materialfv = trMaterialfv; /* 170 */
+ dispatch->Materiali = trMateriali; /* 171 */
+ dispatch->Materialiv = trMaterialiv; /* 172 */
+ dispatch->PointSize = trPointSize; /* 173 */
+ dispatch->PolygonMode = trPolygonMode; /* 174 */
+ dispatch->PolygonStipple = trPolygonStipple; /* 175 */
+ dispatch->Scissor = trScissor; /* 176 */
+ dispatch->ShadeModel = trShadeModel; /* 177 */
+ dispatch->TexParameterf = trTexParameterf; /* 178 */
+ dispatch->TexParameterfv = trTexParameterfv; /* 179 */
+ dispatch->TexParameteri = trTexParameteri; /* 180 */
+ dispatch->TexParameteriv = trTexParameteriv; /* 181 */
+ dispatch->TexImage1D = trTexImage1D; /* 182 */
+ dispatch->TexImage2D = trTexImage2D; /* 183 */
+ dispatch->TexEnvf = trTexEnvf; /* 184 */
+ dispatch->TexEnvfv = trTexEnvfv; /* 185 */
+ dispatch->TexEnvi = trTexEnvi; /* 186 */
+ dispatch->TexEnviv = trTexEnviv; /* 187 */
+ dispatch->TexGend = trTexGend; /* 188 */
+ dispatch->TexGendv = trTexGendv; /* 189 */
+ dispatch->TexGenf = trTexGenf; /* 190 */
+ dispatch->TexGenfv = trTexGenfv; /* 191 */
+ dispatch->TexGeni = trTexGeni; /* 192 */
+ dispatch->TexGeniv = trTexGeniv; /* 193 */
+ dispatch->FeedbackBuffer = trFeedbackBuffer; /* 194 */
+ dispatch->SelectBuffer = trSelectBuffer; /* 195 */
+ dispatch->RenderMode = trRenderMode; /* 196 */
+ dispatch->InitNames = trInitNames; /* 197 */
+ dispatch->LoadName = trLoadName; /* 198 */
+ dispatch->PassThrough = trPassThrough; /* 199 */
+ dispatch->PopName = trPopName; /* 200 */
+ dispatch->PushName = trPushName; /* 201 */
+ dispatch->DrawBuffer = trDrawBuffer; /* 202 */
+ dispatch->Clear = trClear; /* 203 */
+ dispatch->ClearAccum = trClearAccum; /* 204 */
+ dispatch->ClearIndex = trClearIndex; /* 205 */
+ dispatch->ClearColor = trClearColor; /* 206 */
+ dispatch->ClearStencil = trClearStencil; /* 207 */
+ dispatch->ClearDepth = trClearDepth; /* 208 */
+ dispatch->StencilMask = trStencilMask; /* 209 */
+ dispatch->ColorMask = trColorMask; /* 210 */
+ dispatch->DepthMask = trDepthMask; /* 211 */
+ dispatch->IndexMask = trIndexMask; /* 212 */
+ dispatch->Accum = trAccum; /* 213 */
+ dispatch->Disable = trDisable; /* 214 */
+ dispatch->Enable = trEnable; /* 215 */
+ dispatch->Finish = trFinish; /* 216 */
+ dispatch->Flush = trFlush; /* 217 */
+ dispatch->PopAttrib = trPopAttrib; /* 218 */
+ dispatch->PushAttrib = trPushAttrib; /* 219 */
+ dispatch->Map1d = trMap1d; /* 220 */
+ dispatch->Map1f = trMap1f; /* 221 */
+ dispatch->Map2d = trMap2d; /* 222 */
+ dispatch->Map2f = trMap2f; /* 223 */
+ dispatch->MapGrid1d = trMapGrid1d; /* 224 */
+ dispatch->MapGrid1f = trMapGrid1f; /* 225 */
+ dispatch->MapGrid2d = trMapGrid2d; /* 226 */
+ dispatch->MapGrid2f = trMapGrid2f; /* 227 */
+ dispatch->EvalCoord1d = trEvalCoord1d; /* 228 */
+ dispatch->EvalCoord1dv = trEvalCoord1dv; /* 229 */
+ dispatch->EvalCoord1f = trEvalCoord1f; /* 230 */
+ dispatch->EvalCoord1fv = trEvalCoord1fv; /* 231 */
+ dispatch->EvalCoord2d = trEvalCoord2d; /* 232 */
+ dispatch->EvalCoord2dv = trEvalCoord2dv; /* 233 */
+ dispatch->EvalCoord2f = trEvalCoord2f; /* 234 */
+ dispatch->EvalCoord2fv = trEvalCoord2fv; /* 235 */
+ dispatch->EvalMesh1 = trEvalMesh1; /* 236 */
+ dispatch->EvalPoint1 = trEvalPoint1; /* 237 */
+ dispatch->EvalMesh2 = trEvalMesh2; /* 238 */
+ dispatch->EvalPoint2 = trEvalPoint2; /* 239 */
+ dispatch->AlphaFunc = trAlphaFunc; /* 240 */
+ dispatch->BlendFunc = trBlendFunc; /* 241 */
+ dispatch->LogicOp = trLogicOp; /* 242 */
+ dispatch->StencilFunc = trStencilFunc; /* 243 */
+ dispatch->StencilOp = trStencilOp; /* 244 */
+ dispatch->DepthFunc = trDepthFunc; /* 245 */
+ dispatch->PixelZoom = trPixelZoom; /* 246 */
+ dispatch->PixelTransferf = trPixelTransferf; /* 247 */
+ dispatch->PixelTransferi = trPixelTransferi; /* 248 */
+ dispatch->PixelStoref = trPixelStoref; /* 249 */
+ dispatch->PixelStorei = trPixelStorei; /* 250 */
+ dispatch->PixelMapfv = trPixelMapfv; /* 251 */
+ dispatch->PixelMapuiv = trPixelMapuiv; /* 252 */
+ dispatch->PixelMapusv = trPixelMapusv; /* 253 */
+ dispatch->ReadBuffer = trReadBuffer; /* 254 */
+ dispatch->CopyPixels = trCopyPixels; /* 255 */
+ dispatch->ReadPixels = trReadPixels; /* 256 */
+ dispatch->DrawPixels = trDrawPixels; /* 257 */
+ dispatch->GetBooleanv = trGetBooleanv; /* 258 */
+ dispatch->GetClipPlane = trGetClipPlane; /* 259 */
+ dispatch->GetDoublev = trGetDoublev; /* 260 */
+ dispatch->GetError = trGetError; /* 261 */
+ dispatch->GetFloatv = trGetFloatv; /* 262 */
+ dispatch->GetIntegerv = trGetIntegerv; /* 263 */
+ dispatch->GetLightfv = trGetLightfv; /* 264 */
+ dispatch->GetLightiv = trGetLightiv; /* 265 */
+ dispatch->GetMapdv = trGetMapdv; /* 266 */
+ dispatch->GetMapfv = trGetMapfv; /* 267 */
+ dispatch->GetMapiv = trGetMapiv; /* 268 */
+ dispatch->GetMaterialfv = trGetMaterialfv; /* 269 */
+ dispatch->GetMaterialiv = trGetMaterialiv; /* 270 */
+ dispatch->GetPixelMapfv = trGetPixelMapfv; /* 271 */
+ dispatch->GetPixelMapuiv = trGetPixelMapuiv; /* 272 */
+ dispatch->GetPixelMapusv = trGetPixelMapusv; /* 273 */
+ dispatch->GetPolygonStipple = trGetPolygonStipple; /* 274 */
+ dispatch->GetString = trGetString; /* 275 */
+ dispatch->GetTexEnvfv = trGetTexEnvfv; /* 276 */
+ dispatch->GetTexEnviv = trGetTexEnviv; /* 277 */
+ dispatch->GetTexGendv = trGetTexGendv; /* 278 */
+ dispatch->GetTexGenfv = trGetTexGenfv; /* 279 */
+ dispatch->GetTexGeniv = trGetTexGeniv; /* 280 */
+ dispatch->GetTexImage = trGetTexImage; /* 281 */
+ dispatch->GetTexParameterfv = trGetTexParameterfv; /* 282 */
+ dispatch->GetTexParameteriv = trGetTexParameteriv; /* 283 */
+ dispatch->GetTexLevelParameterfv = trGetTexLevelParameterfv; /* 284 */
+ dispatch->GetTexLevelParameteriv = trGetTexLevelParameteriv; /* 285 */
+ dispatch->IsEnabled = trIsEnabled; /* 286 */
+ dispatch->IsList = trIsList; /* 287 */
+ dispatch->DepthRange = trDepthRange; /* 288 */
+ dispatch->Frustum = trFrustum; /* 289 */
+ dispatch->LoadIdentity = trLoadIdentity; /* 290 */
+ dispatch->LoadMatrixf = trLoadMatrixf; /* 291 */
+ dispatch->LoadMatrixd = trLoadMatrixd; /* 292 */
+ dispatch->MatrixMode = trMatrixMode; /* 293 */
+ dispatch->MultMatrixf = trMultMatrixf; /* 294 */
+ dispatch->MultMatrixd = trMultMatrixd; /* 295 */
+ dispatch->Ortho = trOrtho; /* 296 */
+ dispatch->PopMatrix = trPopMatrix; /* 297 */
+ dispatch->PushMatrix = trPushMatrix; /* 298 */
+ dispatch->Rotated = trRotated; /* 299 */
+ dispatch->Rotatef = trRotatef; /* 300 */
+ dispatch->Scaled = trScaled; /* 301 */
+ dispatch->Scalef = trScalef; /* 302 */
+ dispatch->Translated = trTranslated; /* 303 */
+ dispatch->Translatef = trTranslatef; /* 304 */
+ dispatch->Viewport = trViewport; /* 305 */
+ dispatch->ArrayElement = trArrayElement; /* 306 */
+ dispatch->BindTexture = trBindTexture; /* 307 */
+ dispatch->ColorPointer = trColorPointer; /* 308 */
+ dispatch->DisableClientState = trDisableClientState; /* 309 */
+ dispatch->DrawArrays = trDrawArrays; /* 310 */
+ dispatch->DrawElements = trDrawElements; /* 311 */
+ dispatch->EdgeFlagPointer = trEdgeFlagPointer; /* 312 */
+ dispatch->EnableClientState = trEnableClientState; /* 313 */
+ dispatch->IndexPointer = trIndexPointer; /* 314 */
+ dispatch->Indexub = trIndexub; /* 315 */
+ dispatch->Indexubv = trIndexubv; /* 316 */
+ dispatch->InterleavedArrays = trInterleavedArrays; /* 317 */
+ dispatch->NormalPointer = trNormalPointer; /* 318 */
+ dispatch->PolygonOffset = trPolygonOffset; /* 319 */
+ dispatch->TexCoordPointer = trTexCoordPointer; /* 320 */
+ dispatch->VertexPointer = trVertexPointer; /* 321 */
+ dispatch->AreTexturesResident = trAreTexturesResident; /* 322 */
+ dispatch->CopyTexImage1D = trCopyTexImage1D; /* 323 */
+ dispatch->CopyTexImage2D = trCopyTexImage2D; /* 324 */
+ dispatch->CopyTexSubImage1D = trCopyTexSubImage1D; /* 325 */
+ dispatch->CopyTexSubImage2D = trCopyTexSubImage2D; /* 326 */
+ dispatch->DeleteTextures = trDeleteTextures; /* 327 */
+ dispatch->GenTextures = trGenTextures; /* 328 */
+ dispatch->GetPointerv = trGetPointerv; /* 329 */
+ dispatch->IsTexture = trIsTexture; /* 330 */
+ dispatch->PrioritizeTextures = trPrioritizeTextures; /* 331 */
+ dispatch->TexSubImage1D = trTexSubImage1D; /* 332 */
+ dispatch->TexSubImage2D = trTexSubImage2D; /* 333 */
+ dispatch->PopClientAttrib = trPopClientAttrib; /* 334 */
+ dispatch->PushClientAttrib = trPushClientAttrib; /* 335 */
+#if 1
+ dispatch->BlendColor = trBlendColor; /* 336 */
+ dispatch->BlendEquation = trBlendEquation; /* 337 */
+ dispatch->DrawRangeElements = trDrawRangeElements; /* 338 */
+ dispatch->ColorTable = trColorTable; /* 339 */
+ dispatch->ColorTableParameterfv = trColorTableParameterfv; /* 340 */
+ dispatch->ColorTableParameteriv = trColorTableParameteriv; /* 341 */
+ dispatch->CopyColorTable = trCopyColorTable; /* 342 */
+ dispatch->GetColorTable = trGetColorTable; /* 343 */
+ dispatch->GetColorTableParameterfv = trGetColorTableParameterfv; /* 344 */
+ dispatch->GetColorTableParameteriv = trGetColorTableParameteriv; /* 345 */
+ dispatch->ColorSubTable = trColorSubTable; /* 346 */
+ dispatch->CopyColorSubTable = trCopyColorSubTable; /* 347 */
+ dispatch->ConvolutionFilter1D = trConvolutionFilter1D; /* 348 */
+ dispatch->ConvolutionFilter2D = trConvolutionFilter2D; /* 349 */
+ dispatch->ConvolutionParameterf = trConvolutionParameterf; /* 350 */
+ dispatch->ConvolutionParameterfv = trConvolutionParameterfv; /* 351 */
+ dispatch->ConvolutionParameteri = trConvolutionParameteri; /* 352 */
+ dispatch->ConvolutionParameteriv = trConvolutionParameteriv; /* 353 */
+ dispatch->CopyConvolutionFilter1D = trCopyConvolutionFilter1D; /* 354 */
+ dispatch->CopyConvolutionFilter2D = trCopyConvolutionFilter2D; /* 355 */
+ dispatch->GetConvolutionFilter = trGetConvolutionFilter; /* 356 */
+ dispatch->GetConvolutionParameterfv = trGetConvolutionParameterfv;/* 357 */
+ dispatch->GetConvolutionParameteriv = trGetConvolutionParameteriv;/* 358 */
+ dispatch->GetSeparableFilter = trGetSeparableFilter; /* 359 */
+ dispatch->SeparableFilter2D = trSeparableFilter2D; /* 360 */
+ dispatch->GetHistogram = trGetHistogram; /* 361 */
+ dispatch->GetHistogramParameterfv = trGetHistogramParameterfv; /* 362 */
+ dispatch->GetHistogramParameteriv = trGetHistogramParameteriv; /* 363 */
+ dispatch->GetMinmax = trGetMinmax; /* 364 */
+ dispatch->GetMinmaxParameterfv = trGetMinmaxParameterfv; /* 365 */
+ dispatch->GetMinmaxParameteriv = trGetMinmaxParameteriv; /* 366 */
+#endif
+#if 0
+ dispatch->Histogram = trHistogram /* 367 */
+ dispatch->Minmax = trMinmax /* 368 */
+ dispatch->ResetHistogram = trResetHistogram /* 369 */
+ dispatch->ResetMinmax = trResetMinmax /* 370 */
+ dispatch->TexImage3D = trTexImage3D /* 371 */
+ dispatch->TexSubImage3D = trTexSubImage3D /* 372 */
+ dispatch->CopyTexSubImage3D = trCopyTexSubImage3D /* 373 */
+ dispatch->ActiveTextureARB = trActiveTextureARB /* 374 */
+ dispatch->ClientActiveTextureARB = trClientActiveTextureARB /* 375 */
+ dispatch->MultiTexCoord1dARB = trMultiTexCoord1dARB /* 376 */
+ dispatch->MultiTexCoord1dvARB = trMultiTexCoord1dvARB /* 377 */
+ dispatch->MultiTexCoord1fARB = trMultiTexCoord1fARB /* 378 */
+ dispatch->MultiTexCoord1fvARB = trMultiTexCoord1fvARB /* 379 */
+ dispatch->MultiTexCoord1iARB = trMultiTexCoord1iARB /* 380 */
+ dispatch->MultiTexCoord1ivARB = trMultiTexCoord1ivARB /* 381 */
+ dispatch->MultiTexCoord1sARB = trMultiTexCoord1sARB /* 382 */
+ dispatch->MultiTexCoord1svARB = trMultiTexCoord1svARB /* 383 */
+ dispatch->MultiTexCoord2dARB = trMultiTexCoord2dARB /* 384 */
+ dispatch->MultiTexCoord2dvARB = trMultiTexCoord2dvARB /* 385 */
+ dispatch->MultiTexCoord2fARB = trMultiTexCoord2fARB /* 386 */
+ dispatch->MultiTexCoord2fvARB = trMultiTexCoord2fvARB /* 387 */
+ dispatch->MultiTexCoord2iARB = trMultiTexCoord2iARB /* 388 */
+ dispatch->MultiTexCoord2ivARB = trMultiTexCoord2ivARB /* 389 */
+ dispatch->MultiTexCoord2sARB = trMultiTexCoord2sARB /* 390 */
+ dispatch->MultiTexCoord2svARB = trMultiTexCoord2svARB /* 391 */
+ dispatch->MultiTexCoord3dARB = trMultiTexCoord3dARB /* 392 */
+ dispatch->MultiTexCoord3dvARB = trMultiTexCoord3dvARB /* 393 */
+ dispatch->MultiTexCoord3fARB = trMultiTexCoord3fARB /* 394 */
+ dispatch->MultiTexCoord3fvARB = trMultiTexCoord3fvARB /* 395 */
+ dispatch->MultiTexCoord3iARB = trMultiTexCoord3iARB /* 396 */
+ dispatch->MultiTexCoord3ivARB = trMultiTexCoord3ivARB /* 397 */
+ dispatch->MultiTexCoord3sARB = trMultiTexCoord3sARB /* 398 */
+ dispatch->MultiTexCoord3svARB = trMultiTexCoord3svARB /* 399 */
+ dispatch->MultiTexCoord4dARB = trMultiTexCoord4dARB /* 400 */
+ dispatch->MultiTexCoord4dvARB = trMultiTexCoord4dvARB /* 401 */
+ dispatch->MultiTexCoord4fARB = trMultiTexCoord4fARB /* 402 */
+ dispatch->MultiTexCoord4fvARB = trMultiTexCoord4fvARB /* 403 */
+ dispatch->MultiTexCoord4iARB = trMultiTexCoord4iARB /* 404 */
+ dispatch->MultiTexCoord4ivARB = trMultiTexCoord4ivARB /* 405 */
+ dispatch->MultiTexCoord4sARB = trMultiTexCoord4sARB /* 406 */
+ dispatch->MultiTexCoord4svARB = trMultiTexCoord4svARB /* 407 */
+ dispatch->LoadTransposeMatrixfARB = trLoadTransposeMatrixfARB /* 408 */
+ dispatch->LoadTransposeMatrixdARB = trLoadTransposeMatrixdARB /* 409 */
+ dispatch->MultTransposeMatrixfARB = trMultTransposeMatrixfARB /* 410 */
+ dispatch->MultTransposeMatrixdARB = trMultTransposeMatrixdARB /* 411 */
+ dispatch->SampleCoverageARB = trSampleCoverageARB /* 412 */
+ dispatch->SamplePassARB = trSamplePassARB /* 413 */
+ dispatch->PolygonOffsetEXT = trPolygonOffsetEXT /* 414 */
+ dispatch->GetTexFilterFuncSGIS = trGetTexFilterFuncSGIS /* 415 */
+ dispatch->TexFilterFuncSGIS = trTexFilterFuncSGIS /* 416 */
+ dispatch->GetHistogramEXT = trGetHistogramEXT /* 417 */
+ dispatch->GetHistogramParameterfvEXT = trGetHistogramParameterfvEXT /* 418 */
+ dispatch->GetHistogramParameterivEXT = trGetHistogramParameterivEXT /* 419 */
+ dispatch->GetMinmaxEXT = trGetMinmaxEXT /* 420 */
+ dispatch->GetMinmaxParameterfvEXT = trGetMinmaxParameterfvEXT /* 421 */
+ dispatch->GetMinmaxParameterivEXT = trGetMinmaxParameterivEXT /* 422 */
+ dispatch->GetConvolutionFilterEXT = trGetConvolutionFilterEXT /* 423 */
+ dispatch->GetConvolutionParameterfvEXT = trGetConvolutionParameterfvEXT /* 424 */
+ dispatch->GetConvolutionParameterivEXT = trGetConvolutionParameterivEXT /* 425 */
+ dispatch->GetSeparableFilterEXT = trGetSeparableFilterEXT /* 426 */
+ dispatch->GetColorTableSGI = trGetColorTableSGI /* 427 */
+ dispatch->GetColorTableParameterfvSGI = trGetColorTableParameterfvSGI /* 428 */
+ dispatch->GetColorTableParameterivSGI = trGetColorTableParameterivSGI /* 429 */
+ dispatch->PixelTexGenSGIX = trPixelTexGenSGIX /* 430 */
+ dispatch->PixelTexGenParameteriSGIS = trPixelTexGenParameteriSGIS /* 431 */
+ dispatch->PixelTexGenParameterivSGIS = trPixelTexGenParameterivSGIS /* 432 */
+ dispatch->PixelTexGenParameterfSGIS = trPixelTexGenParameterfSGIS /* 433 */
+ dispatch->PixelTexGenParameterfvSGIS = trPixelTexGenParameterfvSGIS /* 434 */
+ dispatch->GetPixelTexGenParameterivSGIS = trGetPixelTexGenParameterivSGIS /* 435 */
+ dispatch->GetPixelTexGenParameterfvSGIS = trGetPixelTexGenParameterfvSGIS /* 436 */
+ dispatch->TexImage4DSGIS = trTexImage4DSGIS /* 437 */
+ dispatch->TexSubImage4DSGIS = trTexSubImage4DSGIS /* 438 */
+ dispatch->AreTexturesResidentEXT = trAreTexturesResidentEXT /* 439 */
+ dispatch->GenTexturesEXT = trGenTexturesEXT /* 440 */
+ dispatch->IsTextureEXT = trIsTextureEXT /* 441 */
+ dispatch->DetailTexFuncSGIS = trDetailTexFuncSGIS /* 442 */
+ dispatch->GetDetailTexFuncSGIS = trGetDetailTexFuncSGIS /* 443 */
+ dispatch->SharpenTexFuncSGIS = trSharpenTexFuncSGIS /* 444 */
+ dispatch->GetSharpenTexFuncSGIS = trGetSharpenTexFuncSGIS /* 445 */
+ dispatch->SampleMaskSGIS = trSampleMaskSGIS /* 446 */
+ dispatch->SamplePatternSGIS = trSamplePatternSGIS /* 447 */
+ dispatch->ColorPointerEXT = trColorPointerEXT /* 448 */
+ dispatch->EdgeFlagPointerEXT = trEdgeFlagPointerEXT /* 449 */
+ dispatch->IndexPointerEXT = trIndexPointerEXT /* 450 */
+ dispatch->NormalPointerEXT = trNormalPointerEXT /* 451 */
+ dispatch->TexCoordPointerEXT = trTexCoordPointerEXT /* 452 */
+ dispatch->VertexPointerEXT = trVertexPointerEXT /* 453 */
+ dispatch->SpriteParameterfSGIX = trSpriteParameterfSGIX /* 454 */
+ dispatch->SpriteParameterfvSGIX = trSpriteParameterfvSGIX /* 455 */
+ dispatch->SpriteParameteriSGIX = trSpriteParameteriSGIX /* 456 */
+ dispatch->SpriteParameterivSGIX = trSpriteParameterivSGIX /* 457 */
+ dispatch->PointParameterfEXT = trPointParameterfEXT /* 458 */
+ dispatch->PointParameterfvEXT = trPointParameterfvEXT /* 459 */
+ dispatch->GetInstrumentsSGIX = trGetInstrumentsSGIX /* 460 */
+ dispatch->InstrumentsBufferSGIX = trInstrumentsBufferSGIX /* 461 */
+ dispatch->PollInstrumentsSGIX = trPollInstrumentsSGIX /* 462 */
+ dispatch->ReadInstrumentsSGIX = trReadInstrumentsSGIX /* 463 */
+ dispatch->StartInstrumentsSGIX = trStartInstrumentsSGIX /* 464 */
+ dispatch->StopInstrumentsSGIX = trStopInstrumentsSGIX /* 465 */
+ dispatch->FrameZoomSGIX = trFrameZoomSGIX /* 466 */
+ dispatch->TagSampleBufferSGIX = trTagSampleBufferSGIX /* 467 */
+ dispatch->ReferencePlaneSGIX = trReferencePlaneSGIX /* 468 */
+ dispatch->FlushRasterSGIX = trFlushRasterSGIX /* 469 */
+ dispatch->GetListParameterfvSGIX = trGetListParameterfvSGIX /* 470 */
+ dispatch->GetListParameterivSGIX = trGetListParameterivSGIX /* 471 */
+ dispatch->ListParameterfSGIX = trListParameterfSGIX /* 472 */
+ dispatch->ListParameterfvSGIX = trListParameterfvSGIX /* 473 */
+ dispatch->ListParameteriSGIX = trListParameteriSGIX /* 474 */
+ dispatch->ListParameterivSGIX = trListParameterivSGIX /* 475 */
+ dispatch->FragmentColorMaterialSGIX = trFragmentColorMaterialSGIX /* 476 */
+ dispatch->FragmentLightfSGIX = trFragmentLightfSGIX /* 477 */
+ dispatch->FragmentLightfvSGIX = trFragmentLightfvSGIX /* 478 */
+ dispatch->FragmentLightiSGIX = trFragmentLightiSGIX /* 479 */
+ dispatch->FragmentLightivSGIX = trFragmentLightivSGIX /* 480 */
+ dispatch->FragmentLightModelfSGIX = trFragmentLightModelfSGIX /* 481 */
+ dispatch->FragmentLightModelfvSGIX = trFragmentLightModelfvSGIX /* 482 */
+ dispatch->FragmentLightModeliSGIX = trFragmentLightModeliSGIX /* 483 */
+ dispatch->FragmentLightModelivSGIX = trFragmentLightModelivSGIX /* 484 */
+ dispatch->FragmentMaterialfSGIX = trFragmentMaterialfSGIX /* 485 */
+ dispatch->FragmentMaterialfvSGIX = trFragmentMaterialfvSGIX /* 486 */
+ dispatch->FragmentMaterialiSGIX = trFragmentMaterialiSGIX /* 487 */
+ dispatch->FragmentMaterialivSGIX = trFragmentMaterialivSGIX /* 488 */
+ dispatch->GetFragmentLightfvSGIX = trGetFragmentLightfvSGIX /* 489 */
+ dispatch->GetFragmentLightivSGIX = trGetFragmentLightivSGIX /* 490 */
+ dispatch->GetFragmentMaterialfvSGIX = trGetFragmentMaterialfvSGIX /* 491 */
+ dispatch->GetFragmentMaterialivSGIX = trGetFragmentMaterialivSGIX /* 492 */
+ dispatch->LightEnviSGIX = trLightEnviSGIX /* 493 */
+ dispatch->VertexWeightfEXT = trVertexWeightfEXT /* 494 */
+ dispatch->VertexWeightfvEXT = trVertexWeightfvEXT /* 495 */
+ dispatch->VertexWeightPointerEXT = trVertexWeightPointerEXT /* 496 */
+ dispatch->FlushVertexArrayRangeNV = trFlushVertexArrayRangeNV /* 497 */
+ dispatch->VertexArrayRangeNV = trVertexArrayRangeNV /* 498 */
+ dispatch->CombinerParameterfvNV = trCombinerParameterfvNV /* 499 */
+ dispatch->CombinerParameterfNV = trCombinerParameterfNV /* 500 */
+ dispatch->CombinerParameterivNV = trCombinerParameterivNV /* 501 */
+ dispatch->CombinerParameteriNV = trCombinerParameteriNV /* 502 */
+ dispatch->CombinerInputNV = trCombinerInputNV /* 503 */
+ dispatch->CombinerOutputNV = trCombinerOutputNV /* 504 */
+ dispatch->FinalCombinerInputNV = trFinalCombinerInputNV /* 505 */
+ dispatch->GetCombinerInputParameterfvNV = trGetCombinerInputParameterfvNV /* 506 */
+ dispatch->GetCombinerInputParameterivNV = trGetCombinerInputParameterivNV /* 507 */
+ dispatch->GetCombinerOutputParameterfvNV = trGetCombinerOutputParameterfvNV /* 508 */
+ dispatch->GetCombinerOutputParameterivNV = trGetCombinerOutputParameterivNV /* 509 */
+ dispatch->GetFinalCombinerInputParameterfvNV = trGetFinalCombinerInputParameterfvNV /* 510 */
+ dispatch->GetFinalCombinerInputParameterivNV = trGetFinalCombinerInputParameterivNV /* 511 */
+ dispatch->ResizeBuffersMESA = trResizeBuffersMESA /* 512 */
+ dispatch->WindowPos2dMESA = trWindowPos2dMESA /* 513 */
+ dispatch->WindowPos2dvMESA = trWindowPos2dvMESA /* 514 */
+ dispatch->WindowPos2fMESA = trWindowPos2fMESA /* 515 */
+ dispatch->WindowPos2fvMESA = trWindowPos2fvMESA /* 516 */
+ dispatch->WindowPos2iMESA = trWindowPos2iMESA /* 517 */
+ dispatch->WindowPos2ivMESA = trWindowPos2ivMESA /* 518 */
+ dispatch->WindowPos2sMESA = trWindowPos2sMESA /* 519 */
+ dispatch->WindowPos2svMESA = trWindowPos2svMESA /* 520 */
+ dispatch->WindowPos3dMESA = trWindowPos3dMESA /* 521 */
+ dispatch->WindowPos3dvMESA = trWindowPos3dvMESA /* 522 */
+ dispatch->WindowPos3fMESA = trWindowPos3fMESA /* 523 */
+ dispatch->WindowPos3fvMESA = trWindowPos3fvMESA /* 524 */
+ dispatch->WindowPos3iMESA = trWindowPos3iMESA /* 525 */
+ dispatch->WindowPos3ivMESA = trWindowPos3ivMESA /* 526 */
+ dispatch->WindowPos3sMESA = trWindowPos3sMESA /* 527 */
+ dispatch->WindowPos3svMESA = trWindowPos3svMESA /* 528 */
+ dispatch->WindowPos4dMESA = trWindowPos4dMESA /* 529 */
+ dispatch->WindowPos4dvMESA = trWindowPos4dvMESA /* 530 */
+ dispatch->WindowPos4fMESA = trWindowPos4fMESA /* 531 */
+ dispatch->WindowPos4fvMESA = trWindowPos4fvMESA /* 532 */
+ dispatch->WindowPos4iMESA = trWindowPos4iMESA /* 533 */
+ dispatch->WindowPos4ivMESA = trWindowPos4ivMESA /* 534 */
+ dispatch->WindowPos4sMESA = trWindowPos4sMESA /* 535 */
+ dispatch->WindowPos4svMESA = trWindowPos4svMESA /* 536 */
+ dispatch->BlendFuncSeparateEXT = trBlendFuncSeparateEXT /* 537 */
+ dispatch->IndexMaterialEXT = trIndexMaterialEXT /* 538 */
+ dispatch->IndexFuncEXT = trIndexFuncEXT /* 539 */
+ dispatch->LockArraysEXT = trLockArraysEXT /* 540 */
+ dispatch->UnlockArraysEXT = trUnlockArraysEXT /* 541 */
+ dispatch->CullParameterdvEXT = trCullParameterdvEXT /* 542 */
+ dispatch->CullParameterfvEXT = trCullParameterfvEXT /* 543 */
+ dispatch->HintPGI = trHintPGI /* 544 */
+ dispatch->FogCoordfEXT = trFogCoordfEXT /* 545 */
+ dispatch->FogCoordfvEXT = trFogCoordfvEXT /* 546 */
+ dispatch->FogCoorddEXT = trFogCoorddEXT /* 547 */
+ dispatch->FogCoorddvEXT = trFogCoorddvEXT /* 548 */
+ dispatch->FogCoordPointerEXT = trFogCoordPointerEXT /* 549 */
+ dispatch->GetColorTableEXT = trGetColorTableEXT /* 550 */
+ dispatch->GetColorTableParameterivEXT = trGetColorTableParameterivEXT /* 551 */
+ dispatch->GetColorTableParameterfvEXT = trGetColorTableParameterfvEXT /* 552 */
+#endif
+}
+
+
+#else
+extern void tr_wrapper_dummy_func(void);
+void tr_wrapper_dummy_func(void)
+{
+}
+#endif
diff --git a/xc/extras/Mesa/src/Trace/tr_wrapper.h b/xc/extras/Mesa/src/Trace/tr_wrapper.h
new file mode 100644
index 000000000..f65e99c82
--- /dev/null
+++ b/xc/extras/Mesa/src/Trace/tr_wrapper.h
@@ -0,0 +1,8 @@
+#ifndef TR_WRAPPER_H
+#define TR_WRAPPER_H
+
+#include "glapitable.h"
+
+void trInitDispatch( struct _glapi_table* dispatch );
+
+#endif
diff --git a/xc/extras/Mesa/src/Trace/tr_write.c b/xc/extras/Mesa/src/Trace/tr_write.c
new file mode 100644
index 000000000..37acb24af
--- /dev/null
+++ b/xc/extras/Mesa/src/Trace/tr_write.c
@@ -0,0 +1,238 @@
+#ifdef MESA_TRACE
+
+#include "glheader.h"
+#include <time.h> /* XXX move into glheader.h */
+#include "tr_write.h"
+#include "tr_context.h"
+
+#define PATH_MAX 4098
+
+
+static void trWriteFile( const void * buf, GLint recsize, GLint numrecs, const char * funcname ) {
+ GLint recswritten;
+
+ if( !(trCtx()->trDoPrint) ) {
+ return;
+ }
+
+ recswritten = fwrite( buf, recsize, numrecs, trCtx()->logFP );
+ if( recswritten != numrecs ) {
+ fprintf( stderr, "Error writing to file in %s\n", funcname );
+ fprintf( stderr, "Perhaps the disk is full?\n" );
+ /* Should we abort ? */
+ trCtx()->trDoPrint = GL_FALSE;
+ }
+}
+
+
+static void (*trWrite)( const void *, GLint, GLint, const char *) = trWriteFile;
+
+
+void trWriteCMD( GLint cmd ) {
+ trWrite( (void*)&cmd, sizeof(GLint), 1, "trWriteCMD" );
+}
+
+void trWriteb( GLbyte b ) {
+ trWrite( (void*)&b, sizeof(GLbyte), 1, "trWriteb" );
+}
+
+void trWrited( GLdouble d ) {
+ trWrite( (void*)&d, sizeof(GLdouble), 1, "trWrited" );
+}
+
+void trWriteClampd( GLclampd cd ) {
+ trWrite( (void*)&cd, sizeof(GLclampd), 1, "trWriteClampd" );
+}
+
+void trWritef( GLfloat f ) {
+ trWrite( (void*)&f, sizeof(GLfloat), 1, "trWritef" );
+}
+
+void trWriteClampf( GLclampf cf ) {
+ trWrite( (void*)&cf, sizeof(GLclampf), 1, "trWriteClampf" );
+}
+
+void trWritei( GLint i ) {
+ trWrite( (void*)&i, sizeof(GLint), 1, "trWritei" );
+}
+
+void trWrites( GLshort s ) {
+ trWrite( (void*)&s, sizeof(GLshort), 1, "trWrites" );
+}
+
+void trWriteub( GLubyte ub ) {
+ trWrite( (void*)&ub, sizeof(GLubyte), 1, "trWriteub" );
+}
+
+void trWriteui( GLuint ui ) {
+ trWrite( (void*)&ui, sizeof(GLuint), 1, "trWriteui" );
+}
+
+void trWriteus( GLushort us ) {
+ trWrite( (void*)&us, sizeof(GLushort), 1, "trWriteus" );
+}
+
+void trWriteBool( GLboolean b ) {
+ trWrite( (void*)&b, sizeof(GLboolean), 1, "trWriteBool" );
+}
+
+void trWriteBits( GLbitfield bf ) {
+ trWrite( (void*)&bf, sizeof(GLbitfield), 1, "trWriteBits" );
+}
+
+void trWriteEnum( GLenum en ) {
+ trWrite( (void*)&en, sizeof(GLenum), 1, "trWriteEnum" );
+}
+
+void trWriteSizei( GLsizei si ) {
+ trWrite( (void*)&si, sizeof(GLsizei), 1, "trWriteSizei" );
+}
+
+
+void trWritePointer( const void * p ) {
+ trWrite( (void*)&p, sizeof(void *), 1, "trWritePointer" );
+}
+
+
+void trWriteArrayb( GLsizei n, const GLbyte * b ) {
+ trWrite( (void *)b, sizeof(GLbyte), n, "trWriteArrayb" );
+}
+
+
+void trWriteArrayub( GLsizei n, const GLubyte * ub ) {
+ trWrite( (void *)ub, sizeof(GLubyte), n, "trWriteArrayub" );
+}
+
+
+void trWriteArrays( GLsizei n, const GLshort * s ) {
+ trWrite( (void *)s, sizeof(GLshort), n, "trWriteArrays" );
+}
+
+
+void trWriteArrayus( GLsizei n, const GLushort * us ) {
+ trWrite( (void *)us, sizeof(GLushort), n, "trWriteArrayus" );
+}
+
+
+void trWriteArrayi( GLsizei n, const GLint * i ) {
+ trWrite( (void *)i, sizeof(GLint), n, "trWriteArrayi" );
+}
+
+
+void trWriteArrayui( GLsizei n, const GLuint * ui ) {
+ trWrite( (void *)ui, sizeof(GLuint), n, "trWriteArrayui" );
+}
+
+
+void trWriteArrayBool( GLsizei n, const GLboolean * b ) {
+ trWrite( (void *)b, sizeof(GLboolean), n, "trWriteArrayBool" );
+}
+
+
+void trWriteArrayf( GLsizei n, const GLfloat * f ) {
+ trWrite( (void *)f, sizeof(GLfloat), n, "trWriteArrayf" );
+}
+
+
+void trWriteArrayd( GLsizei n, const GLdouble * d ) {
+ trWrite( (void *)d, sizeof(GLdouble), n, "trWriteArrayd" );
+}
+
+
+void trWriteString( const char * str ) {
+ GLuint length = strlen(str);
+ trWriteui( length );
+ trWrite( (void *)str, sizeof(GLubyte), length, "trWriteString" );
+}
+
+
+void trFileFlush( void ) {
+ fflush( trCtx()->logFP );
+}
+
+
+static void trWriteTypeInformation( void ) {
+
+ trWriteub( sizeof(GLint) );
+ trWriteub( sizeof(GLshort) );
+ trWriteub( sizeof(GLfloat) );
+ trWriteub( sizeof(GLdouble) );
+ trWriteub( sizeof(GLboolean) );
+ trWriteub( sizeof(GLenum) );
+ trWriteub( sizeof(GLsizei) );
+ trWriteub( sizeof(GLbitfield) );
+ trWriteub( sizeof(GLclampf) );
+ trWriteub( sizeof(GLclampd) );
+ trWriteub( sizeof(GLvoid *) );
+
+}
+
+
+static void trWriteHeader( void ) {
+ struct tm *newtime;
+ time_t aclock;
+ char timestring[256];
+
+ trWriteString( "0.0.1" );
+ trWriteString( trCtx()->traceName );
+ trWritei( trCtx()->framecounter );
+
+ /* Always print this! */
+ time( &aclock );
+ newtime = localtime( &aclock );
+ asctime( newtime );
+ snprintf( timestring, sizeof(timestring), "Time: %s", asctime( newtime ) );
+ trWriteString( timestring );
+}
+
+
+static void trWriteGLState( void ) {
+ /*
+ * This function will write all the queryable GL state at
+ * the time the trace is started.
+ */
+}
+
+
+void trOpenLogFile( void ) {
+ GLint numchars;
+ char buffer[PATH_MAX];
+
+ numchars = snprintf( buffer, sizeof(buffer), "%s-gl.log.%d",
+ trCtx()->traceName, trCtx()->framecounter );
+ if( numchars > -1 && numchars < sizeof(buffer) ) {
+ trCtx()->logFP = fopen( buffer, "wb" );
+
+ /* This information is needed before we can extract _anything_ */
+ trWriteTypeInformation();
+ trWriteHeader();
+ trWriteGLState();
+
+ (trCtx()->framecounter)++;
+ } else if( numchars > -1 ) {
+ fprintf( stderr, "buffer needs to be %d bytes long for logging to work.\n",
+ numchars + 1 );
+ exit( -1 );
+ } else {
+ fprintf( stderr, "buffer needs to grow for logging to work. Try %d bytes.\n",
+ sizeof(buffer) * 2 );
+ exit( -1 );
+ }
+}
+
+
+void trCloseLogFile( void ) {
+ if( trCtx()->logFP != NULL ) {
+ fclose(trCtx()->logFP);
+ }
+
+ trCtx()->logFP = NULL;
+}
+
+
+#else
+extern void tr_write_dummy_func(void);
+void tr_write_dummy_func(void)
+{
+}
+#endif
diff --git a/xc/extras/Mesa/src/Trace/tr_write.h b/xc/extras/Mesa/src/Trace/tr_write.h
new file mode 100644
index 000000000..bd3f341d2
--- /dev/null
+++ b/xc/extras/Mesa/src/Trace/tr_write.h
@@ -0,0 +1,68 @@
+/* This may look like C code, but it is really -*- C++ -*- */
+/* $Id: tr_write.h,v 1.1.1.1 2003/03/25 00:02:24 alanh Exp $ */
+
+/*
+ * DebugGL
+ * Version: 1.0
+ *
+ * Copyright (C) 1999-2000 Loki Entertainment
+ * 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 __TR_WRITE_H
+#define __TR_WRITE_H
+
+#include "GL/gl.h"
+
+void trWriteCMD( GLint opcode );
+void trWriteb( GLbyte byte );
+void trWriteub( GLubyte ub );
+void trWrited( GLdouble d );
+void trWritef( GLfloat f );
+void trWritei( GLint i );
+void trWriteui( GLuint ui );
+void trWrites( GLshort s );
+void trWriteus( GLushort us );
+void trWriteBool( GLboolean b );
+void trWriteBits( GLbitfield bf );
+void trWriteEnum( GLenum en );
+void trWriteSizei( GLsizei si );
+void trWriteClampf( GLclampf cf );
+void trWriteClampd( GLclampd cd );
+void trWritePointer( const void * p );
+
+void trWriteArrayb( GLsizei n, const GLbyte * b );
+void trWriteArrayub( GLsizei n, const GLubyte * ub );
+void trWriteArrays( GLsizei n, const GLshort * s );
+void trWriteArrayus( GLsizei n, const GLushort * us );
+void trWriteArrayi( GLsizei n, const GLint * i );
+void trWriteArrayui( GLsizei n, const GLuint * ui );
+void trWriteArrayBool( GLsizei n, const GLboolean * b );
+void trWriteArrayf( GLsizei n, const GLfloat * f );
+void trWriteArrayd( GLsizei n, const GLdouble * d );
+
+void trWriteString( const char * str );
+
+void trFileFlush( void );
+
+void trOpenLogFile( void );
+void trCloseLogFile( void );
+
+#endif
diff --git a/xc/extras/Mesa/src/X/fakeglx.c b/xc/extras/Mesa/src/X/fakeglx.c
index e1e713795..4bb3e86f3 100644
--- a/xc/extras/Mesa/src/X/fakeglx.c
+++ b/xc/extras/Mesa/src/X/fakeglx.c
@@ -2476,6 +2476,34 @@ Fake_glXSet3DfxModeMESA( int mode )
+/*** AGP memory allocation ***/
+static void *
+Fake_glXAllocateMemoryNV( GLsizei size,
+ GLfloat readFrequency,
+ GLfloat writeFrequency,
+ GLfloat priority )
+{
+ (void) size;
+ (void) readFrequency;
+ (void) writeFrequency;
+ (void) priority;
+ return NULL;
+}
+
+
+static void
+Fake_glXFreeMemoryNV( GLvoid *pointer )
+{
+ (void) pointer;
+}
+
+
+static GLuint
+Fake_glXGetAGPOffsetMESA( const GLvoid *pointer )
+{
+ return ~0;
+}
+
extern struct _glxapi_table *_mesa_GetGLXDispatchTable(void);
struct _glxapi_table *_mesa_GetGLXDispatchTable(void)
@@ -2614,5 +2642,12 @@ struct _glxapi_table *_mesa_GetGLXDispatchTable(void)
/*** GLX_MESA_set_3dfx_mode ***/
glx.Set3DfxModeMESA = Fake_glXSet3DfxModeMESA;
+ /*** GLX_NV_vertex_array_range ***/
+ glx.AllocateMemoryNV = Fake_glXAllocateMemoryNV;
+ glx.FreeMemoryNV = Fake_glXFreeMemoryNV;
+
+ /*** GLX_MESA_agp_offset ***/
+ glx.GetAGPOffsetMESA = Fake_glXGetAGPOffsetMESA;
+
return &glx;
}
diff --git a/xc/extras/Mesa/src/X/glxapi.c b/xc/extras/Mesa/src/X/glxapi.c
index 4ddd7a92e..33b6eb416 100644
--- a/xc/extras/Mesa/src/X/glxapi.c
+++ b/xc/extras/Mesa/src/X/glxapi.c
@@ -1,9 +1,9 @@
/*
* Mesa 3-D graphics library
- * Version: 4.0.2
+ * Version: 4.0.4
*
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -988,6 +988,49 @@ Bool glXSet3DfxModeMESA(int mode)
+/*** GLX_NV_vertex_array_range ***/
+
+void *
+glXAllocateMemoryNV( GLsizei size,
+ GLfloat readFrequency,
+ GLfloat writeFrequency,
+ GLfloat priority )
+{
+ struct _glxapi_table *t;
+ Display *dpy = glXGetCurrentDisplay();
+ GET_DISPATCH(dpy, t);
+ if (!t)
+ return NULL;
+ return (t->AllocateMemoryNV)(size, readFrequency, writeFrequency, priority);
+}
+
+
+void
+glXFreeMemoryNV( GLvoid *pointer )
+{
+ struct _glxapi_table *t;
+ Display *dpy = glXGetCurrentDisplay();
+ GET_DISPATCH(dpy, t);
+ if (!t)
+ return;
+ (t->FreeMemoryNV)(pointer);
+}
+
+
+/*** GLX_MESA_agp_offset */
+
+GLuint
+glXGetAGPOffsetMESA( const GLvoid *pointer )
+{
+ struct _glxapi_table *t;
+ Display *dpy = glXGetCurrentDisplay();
+ GET_DISPATCH(dpy, t);
+ if (!t)
+ return ~0;
+ return (t->GetAGPOffsetMESA)(pointer);
+}
+
+
/**********************************************************************/
/* GLX API management functions */
/**********************************************************************/
@@ -1197,6 +1240,10 @@ static struct name_address_pair GLX_functions[] = {
/*** GLX_ARB_get_proc_address ***/
{ "glXGetProcAddressARB", (GLvoid *) glXGetProcAddressARB },
+ /*** GLX AGP memory allocation ***/
+ { "glXAllocateMemoryNV", (GLvoid *) glXAllocateMemoryNV },
+ { "glXFreeMemoryNV", (GLvoid *) glXFreeMemoryNV },
+
{ NULL, NULL } /* end of list */
};
diff --git a/xc/extras/Mesa/src/X/glxapi.h b/xc/extras/Mesa/src/X/glxapi.h
index 31e257e6f..590479dd4 100644
--- a/xc/extras/Mesa/src/X/glxapi.h
+++ b/xc/extras/Mesa/src/X/glxapi.h
@@ -1,9 +1,9 @@
/*
* Mesa 3-D graphics library
- * Version: 4.0.2
+ * Version: 4.0.4
*
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -195,6 +195,15 @@ struct _glxapi_table {
/*** GLX_MESA_set_3dfx_mode ***/
Bool (*Set3DfxModeMESA)(int mode);
+ /*** GLX_NV_vertex_array_range ***/
+ void * (*AllocateMemoryNV)( GLsizei size,
+ GLfloat readFrequency,
+ GLfloat writeFrequency,
+ GLfloat priority );
+ void (*FreeMemoryNV)( GLvoid *pointer );
+
+ /*** GLX_MESA_agp_offset ***/
+ GLuint (*GetAGPOffsetMESA)( const GLvoid *pointer );
};
diff --git a/xc/extras/Mesa/src/X/realglx.c b/xc/extras/Mesa/src/X/realglx.c
index bd9800532..ba172c974 100644
--- a/xc/extras/Mesa/src/X/realglx.c
+++ b/xc/extras/Mesa/src/X/realglx.c
@@ -1,10 +1,9 @@
-/* $Id: realglx.c,v 1.1.1.3 2002/10/22 13:05:58 alanh Exp $ */
/*
* Mesa 3-D graphics library
- * Version: 3.5
+ * Version: 4.0.4
*
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -170,5 +169,12 @@ _real_GetGLXDispatchTable(void)
/*** GLX_MESA_set_3dfx_mode ***/
glx.Set3DfxModeMESA = _real_glXSet3DfxModeMESA;
+ /*** GLX_NV_vertex_array_range ***/
+ glx.AllocateMemoryNV = _real_glXAllocateMemoryNV;
+ glx.FreeMemoryNV = _real_glXFreeMemoryNV;
+
+ /*** GLX_MESA_agp_offset ***/
+ glx.GetAGPOffsetMESA = _real_glXGetAGPOffsetMESA;
+
return &glx;
}
diff --git a/xc/extras/Mesa/src/X/realglx.h b/xc/extras/Mesa/src/X/realglx.h
index da5924987..05a3f339d 100644
--- a/xc/extras/Mesa/src/X/realglx.h
+++ b/xc/extras/Mesa/src/X/realglx.h
@@ -1,4 +1,3 @@
-/* $Id: realglx.h,v 1.1.1.3 2002/10/22 13:05:58 alanh Exp $ */
/*
* Mesa 3-D graphics library
@@ -312,4 +311,21 @@ _real_glXCopySubBufferMESA( Display *dpy, GLXDrawable drawable,
int x, int y, int width, int height );
#endif
+
+#ifdef GLX_NV_vertex_array_range
+extern void *
+_real_glXAllocateMemoryNV( GLsizei size, GLfloat readFrequency,
+ GLfloat writeFrequency, GLfloat priority );
+
+
+extern void
+_real_glXFreeMemoryNV( GLvoid *pointer );
+#endif
+
+#ifdef GLX_MESA_agp_offset
+extern GLuint
+_real_glXGetAGPOffsetMESA( const GLvoid *pointer );
+#endif
+
+
#endif /* REALGLX_H */
diff --git a/xc/extras/Mesa/src/X/xm_api.c b/xc/extras/Mesa/src/X/xm_api.c
index d1d4682aa..882e49462 100644
--- a/xc/extras/Mesa/src/X/xm_api.c
+++ b/xc/extras/Mesa/src/X/xm_api.c
@@ -1,3 +1,4 @@
+
/*
* Mesa 3-D graphics library
* Version: 4.0.3
@@ -21,7 +22,7 @@
* 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.
*/
-/* $XFree86: xc/extras/Mesa/src/X/xm_api.c,v 1.5 2002/09/09 21:52:12 dawes Exp $ */
+/* $XFree86: xc/extras/Mesa/src/X/xm_api.c,v 1.6 2002/12/16 16:18:31 dawes Exp $ */
/*
* This file contains the implementations of all the XMesa* functions.
diff --git a/xc/extras/Mesa/src/X/xm_dd.c b/xc/extras/Mesa/src/X/xm_dd.c
index f7a1e7107..8334737d2 100644
--- a/xc/extras/Mesa/src/X/xm_dd.c
+++ b/xc/extras/Mesa/src/X/xm_dd.c
@@ -1,3 +1,4 @@
+
/*
* Mesa 3-D graphics library
* Version: 4.0.3
@@ -21,7 +22,7 @@
* 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.
*/
-/* $XFree86: xc/extras/Mesa/src/X/xm_dd.c,v 1.4 2002/09/09 21:29:58 dawes Exp $ */
+/* $XFree86: xc/extras/Mesa/src/X/xm_dd.c,v 1.7 2003/01/16 19:13:08 alanh Exp $ */
#include "glxheader.h"
#include "context.h"
@@ -61,8 +62,14 @@ get_buffer_size( GLframebuffer *buffer, GLuint *width, GLuint *height )
unsigned int winwidth, winheight;
#ifdef XFree86Server
/* XFree86 GLX renderer */
- winwidth = xmBuffer->frontbuffer->width;
- winheight = xmBuffer->frontbuffer->height;
+ if (xmBuffer->frontbuffer->width > MAX_WIDTH ||
+ xmBuffer->frontbuffer->height > MAX_HEIGHT) {
+ winwidth = buffer->Width;
+ winheight = buffer->Height;
+ } else {
+ winwidth = xmBuffer->frontbuffer->width;
+ winheight = xmBuffer->frontbuffer->height;
+ }
#else
Window root;
int winx, winy;
@@ -229,6 +236,7 @@ index_mask( GLcontext *ctx, GLuint mask )
m = (unsigned long) mask;
}
XMesaSetPlaneMask( xmesa->display, xmesa->xm_buffer->cleargc, m );
+ XMesaSetPlaneMask( xmesa->display, xmesa->xm_buffer->gc, m );
}
}
diff --git a/xc/extras/Mesa/src/X/xm_line.c b/xc/extras/Mesa/src/X/xm_line.c
index 007c3ffa1..879bd3c51 100644
--- a/xc/extras/Mesa/src/X/xm_line.c
+++ b/xc/extras/Mesa/src/X/xm_line.c
@@ -1,4 +1,3 @@
-/* $Id: xm_line.c,v 1.1.1.1 2002/10/22 13:06:06 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/X/xm_span.c b/xc/extras/Mesa/src/X/xm_span.c
index 2fe2af697..44f0b4381 100644
--- a/xc/extras/Mesa/src/X/xm_span.c
+++ b/xc/extras/Mesa/src/X/xm_span.c
@@ -1,3 +1,4 @@
+
/*
* Mesa 3-D graphics library
* Version: 3.5
@@ -21,7 +22,7 @@
* 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.
*/
-/* $XFree86: xc/extras/Mesa/src/X/xm_span.c,v 1.4 2002/09/09 21:07:28 dawes Exp $ */
+/* $XFree86: xc/extras/Mesa/src/X/xm_span.c,v 1.5 2002/12/16 16:18:31 dawes Exp $ */
#include "glxheader.h"
#include "context.h"
diff --git a/xc/extras/Mesa/src/X/xm_tri.c b/xc/extras/Mesa/src/X/xm_tri.c
index 3026b77e2..c2e205afe 100644
--- a/xc/extras/Mesa/src/X/xm_tri.c
+++ b/xc/extras/Mesa/src/X/xm_tri.c
@@ -1,4 +1,3 @@
-/* $Id: xm_tri.c,v 1.1.1.1 2002/10/22 13:06:05 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/X86/3dnow_normal.S b/xc/extras/Mesa/src/X86/3dnow_normal.S
index 920788fc6..00aea0c3c 100644
--- a/xc/extras/Mesa/src/X86/3dnow_normal.S
+++ b/xc/extras/Mesa/src/X86/3dnow_normal.S
@@ -1,4 +1,3 @@
-/* $Id: 3dnow_normal.S,v 1.1.1.1 2002/10/22 13:06:12 alanh Exp $ */
/*
* Mesa 3-D graphics library
@@ -23,6 +22,7 @@
* 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.
*/
+/* $XFree86: xc/extras/Mesa/src/X86/3dnow_normal.S,v 1.3 2003/01/12 03:55:44 tsi Exp $ */
/*
* 3Dnow assembly code by Holger Waechtler
@@ -41,7 +41,7 @@ ALIGNTEXT16
GLOBL GLNAME(_mesa_3dnow_transform_normalize_normals)
GLNAME(_mesa_3dnow_transform_normalize_normals):
- #define FRAME_OFFSET 12
+#define FRAME_OFFSET 12
PUSH_L ( EDI )
PUSH_L ( ESI )
@@ -67,8 +67,8 @@ GLNAME(_mesa_3dnow_transform_normalize_normals):
PUSH_L ( EAX )
PUSH_L ( EDX ) /* save counter & pointer for */
/* the normalize pass */
- #undef FRAME_OFFSET
- #define FRAME_OFFSET 24
+#undef FRAME_OFFSET
+#define FRAME_OFFSET 24
MOVQ ( M(0), MM3 ) /* m1 | m0 */
MOVQ ( M(4), MM4 ) /* m5 | m4 */
@@ -218,8 +218,8 @@ ALIGNTEXT16
GLOBL GLNAME(_mesa_3dnow_transform_normalize_normals_no_rot)
GLNAME(_mesa_3dnow_transform_normalize_normals_no_rot):
- #undef FRAME_OFFSET
- #define FRAME_OFFSET 12
+#undef FRAME_OFFSET
+#define FRAME_OFFSET 12
PUSH_L ( EDI )
PUSH_L ( ESI )
@@ -357,8 +357,8 @@ ALIGNTEXT16
GLOBL GLNAME(_mesa_3dnow_transform_rescale_normals_no_rot)
GLNAME(_mesa_3dnow_transform_rescale_normals_no_rot):
- #undef FRAME_OFFSET
- #define FRAME_OFFSET 12
+#undef FRAME_OFFSET
+#define FRAME_OFFSET 12
PUSH_L ( EDI )
PUSH_L ( ESI )
@@ -428,8 +428,8 @@ ALIGNTEXT16
GLOBL GLNAME(_mesa_3dnow_transform_rescale_normals)
GLNAME(_mesa_3dnow_transform_rescale_normals):
- #undef FRAME_OFFSET
- #define FRAME_OFFSET 8
+#undef FRAME_OFFSET
+#define FRAME_OFFSET 8
PUSH_L ( EDI )
PUSH_L ( ESI )
@@ -525,8 +525,8 @@ ALIGNTEXT16
GLOBL GLNAME(_mesa_3dnow_transform_normals_no_rot)
GLNAME(_mesa_3dnow_transform_normals_no_rot):
- #undef FRAME_OFFSET
- #define FRAME_OFFSET 8
+#undef FRAME_OFFSET
+#define FRAME_OFFSET 8
PUSH_L ( EDI )
PUSH_L ( ESI )
@@ -591,8 +591,8 @@ ALIGNTEXT16
GLOBL GLNAME(_mesa_3dnow_transform_normals)
GLNAME(_mesa_3dnow_transform_normals):
- #undef FRAME_OFFSET
- #define FRAME_OFFSET 8
+#undef FRAME_OFFSET
+#define FRAME_OFFSET 8
PUSH_L ( EDI )
PUSH_L ( ESI )
@@ -675,8 +675,8 @@ ALIGNTEXT16
GLOBL GLNAME(_mesa_3dnow_normalize_normals)
GLNAME(_mesa_3dnow_normalize_normals):
- #undef FRAME_OFFSET
- #define FRAME_OFFSET 12
+#undef FRAME_OFFSET
+#define FRAME_OFFSET 12
PUSH_L ( EDI )
PUSH_L ( ESI )
@@ -786,8 +786,8 @@ ALIGNTEXT16
GLOBL GLNAME(_mesa_3dnow_rescale_normals)
GLNAME(_mesa_3dnow_rescale_normals):
- #undef FRAME_OFFSET
- #define FRAME_OFFSET 8
+#undef FRAME_OFFSET
+#define FRAME_OFFSET 8
PUSH_L ( EDI )
PUSH_L ( ESI )
diff --git a/xc/extras/Mesa/src/X86/3dnow_xform1.S b/xc/extras/Mesa/src/X86/3dnow_xform1.S
index 2cd83a9a9..1713dd076 100644
--- a/xc/extras/Mesa/src/X86/3dnow_xform1.S
+++ b/xc/extras/Mesa/src/X86/3dnow_xform1.S
@@ -1,4 +1,3 @@
-/* $Id: 3dnow_xform1.S,v 1.1.1.1 2002/10/22 13:06:07 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/X86/3dnow_xform2.S b/xc/extras/Mesa/src/X86/3dnow_xform2.S
index f4413e723..4627935dc 100644
--- a/xc/extras/Mesa/src/X86/3dnow_xform2.S
+++ b/xc/extras/Mesa/src/X86/3dnow_xform2.S
@@ -1,4 +1,3 @@
-/* $Id: 3dnow_xform2.S,v 1.1.1.1 2002/10/22 13:06:07 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/X86/3dnow_xform3.S b/xc/extras/Mesa/src/X86/3dnow_xform3.S
index 0ad9d7e45..ac6153c36 100644
--- a/xc/extras/Mesa/src/X86/3dnow_xform3.S
+++ b/xc/extras/Mesa/src/X86/3dnow_xform3.S
@@ -1,4 +1,3 @@
-/* $Id: 3dnow_xform3.S,v 1.1.1.1 2002/10/22 13:06:08 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/X86/3dnow_xform4.S b/xc/extras/Mesa/src/X86/3dnow_xform4.S
index 475975192..32d481f8e 100644
--- a/xc/extras/Mesa/src/X86/3dnow_xform4.S
+++ b/xc/extras/Mesa/src/X86/3dnow_xform4.S
@@ -1,4 +1,3 @@
-/* $Id: 3dnow_xform4.S,v 1.1.1.1 2002/10/22 13:06:08 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/X86/common_x86.c b/xc/extras/Mesa/src/X86/common_x86.c
index fc0fbb8c5..80d54f36f 100644
--- a/xc/extras/Mesa/src/X86/common_x86.c
+++ b/xc/extras/Mesa/src/X86/common_x86.c
@@ -29,7 +29,7 @@
*
* Written by Holger Waechtler <holger@akaflieg.extern.tu-berlin.de>
* Changed by Andre Werthmann <wertmann@cs.uni-potsdam.de> for using the
- * new Katmai functions.
+ * new SSE functions.
*/
#include <stdlib.h>
diff --git a/xc/extras/Mesa/src/X86/common_x86_asm.S b/xc/extras/Mesa/src/X86/common_x86_asm.S
index 9241843ff..113f467bf 100644
--- a/xc/extras/Mesa/src/X86/common_x86_asm.S
+++ b/xc/extras/Mesa/src/X86/common_x86_asm.S
@@ -22,7 +22,7 @@
* 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.
*/
-/* $XFree86: xc/extras/Mesa/src/X86/common_x86_asm.S,v 1.13 2002/09/09 21:52:14 dawes Exp $ */
+/* $XFree86: xc/extras/Mesa/src/X86/common_x86_asm.S,v 1.16 2002/12/16 16:18:33 dawes Exp $ */
/*
* Check extended CPU capabilities. Now justs returns the raw CPUID
@@ -77,6 +77,7 @@ GLOBL GLNAME( _mesa_identify_x86_cpu_features )
GLNAME( _mesa_identify_x86_cpu_features ):
PUSH_L ( EBX )
+ PUSH_L ( ESI )
/* Test for the CPUID command. If the ID Flag bit in EFLAGS
* (bit 21) is writable, the CPUID command is present.
@@ -116,6 +117,11 @@ GLNAME( _mesa_identify_x86_cpu_features ):
MOV_L ( CONST(0x1), EAX )
CPUID
MOV_L ( EDX, EAX )
+
+ /* Mask out highest bit, which is used by AMD for 3dnow.
+ * Newer Intel have this bit set, but do not support 3dnow.
+ */
+ AND_L ( CONST(0X7FFFFFFF), EAX)
JMP ( LLBL(cpuid_done) )
LLBL(cpuid_amd):
@@ -172,6 +178,7 @@ LLBL(cpuid_failed):
LLBL (cpuid_done):
+ POP_L ( ESI )
POP_L ( EBX )
RET
diff --git a/xc/extras/Mesa/src/X86/common_x86_asm.h b/xc/extras/Mesa/src/X86/common_x86_asm.h
index 38096eced..49033ca1a 100644
--- a/xc/extras/Mesa/src/X86/common_x86_asm.h
+++ b/xc/extras/Mesa/src/X86/common_x86_asm.h
@@ -29,7 +29,7 @@
*
* Written by Holger Waechtler <holger@akaflieg.extern.tu-berlin.de>
* Changed by Andre Werthmann <wertmann@cs.uni-potsdam.de> for using the
- * new Katmai functions
+ * new SSE functions
*
* Reimplemented by Gareth Hughes <gareth@valinux.com> in a more
* future-proof manner, based on code in the Linux kernel.
diff --git a/xc/extras/Mesa/src/X86/common_x86_macros.h b/xc/extras/Mesa/src/X86/common_x86_macros.h
index 05574e539..d1569a9dc 100644
--- a/xc/extras/Mesa/src/X86/common_x86_macros.h
+++ b/xc/extras/Mesa/src/X86/common_x86_macros.h
@@ -1,4 +1,3 @@
-/* $Id: common_x86_macros.h,v 1.1.1.1 2002/10/22 13:06:16 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/X86/gen_matypes.c b/xc/extras/Mesa/src/X86/gen_matypes.c
index c983fdd5f..5c6b3fefd 100644
--- a/xc/extras/Mesa/src/X86/gen_matypes.c
+++ b/xc/extras/Mesa/src/X86/gen_matypes.c
@@ -1,4 +1,3 @@
-/* $Id: gen_matypes.c,v 1.1.1.1 2002/10/22 13:06:08 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/X86/mmx.h b/xc/extras/Mesa/src/X86/mmx.h
index 9692d3f2a..6adfb5fbd 100644
--- a/xc/extras/Mesa/src/X86/mmx.h
+++ b/xc/extras/Mesa/src/X86/mmx.h
@@ -1,4 +1,4 @@
-/* $Id: mmx.h,v 1.1.1.4 2002/10/22 13:06:08 alanh Exp $ */
+/* $Id: mmx.h,v 1.1.1.5 2003/03/25 00:02:43 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/X86/norm_args.h b/xc/extras/Mesa/src/X86/norm_args.h
index 7c44fef83..59cbda7b0 100644
--- a/xc/extras/Mesa/src/X86/norm_args.h
+++ b/xc/extras/Mesa/src/X86/norm_args.h
@@ -1,4 +1,3 @@
-/* $Id: norm_args.h,v 1.1.1.1 2002/10/22 13:06:14 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/X86/sse.c b/xc/extras/Mesa/src/X86/sse.c
index dea52e9e3..79771a98c 100644
--- a/xc/extras/Mesa/src/X86/sse.c
+++ b/xc/extras/Mesa/src/X86/sse.c
@@ -1,4 +1,3 @@
-/* $Id: sse.c,v 1.1.1.1 2002/10/22 13:06:08 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/X86/sse.h b/xc/extras/Mesa/src/X86/sse.h
index 0d0ce4c14..c594446e8 100644
--- a/xc/extras/Mesa/src/X86/sse.h
+++ b/xc/extras/Mesa/src/X86/sse.h
@@ -1,4 +1,3 @@
-/* $Id: sse.h,v 1.1.1.1 2002/10/22 13:06:08 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/X86/sse_normal.S b/xc/extras/Mesa/src/X86/sse_normal.S
index 4b2d6edbe..afc12f3b5 100644
--- a/xc/extras/Mesa/src/X86/sse_normal.S
+++ b/xc/extras/Mesa/src/X86/sse_normal.S
@@ -1,4 +1,3 @@
-/* $Id: sse_normal.S,v 1.1.1.1 2002/10/22 13:06:09 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/X86/sse_xform1.S b/xc/extras/Mesa/src/X86/sse_xform1.S
index ac3582629..41dd39d50 100644
--- a/xc/extras/Mesa/src/X86/sse_xform1.S
+++ b/xc/extras/Mesa/src/X86/sse_xform1.S
@@ -1,4 +1,3 @@
-/* $Id: sse_xform1.S,v 1.1.1.1 2002/10/22 13:06:15 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/X86/sse_xform2.S b/xc/extras/Mesa/src/X86/sse_xform2.S
index 23c2b5497..025af4c50 100644
--- a/xc/extras/Mesa/src/X86/sse_xform2.S
+++ b/xc/extras/Mesa/src/X86/sse_xform2.S
@@ -1,4 +1,3 @@
-/* $Id: sse_xform2.S,v 1.1.1.1 2002/10/22 13:06:15 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/X86/sse_xform3.S b/xc/extras/Mesa/src/X86/sse_xform3.S
index b4b83f710..8518b9c5f 100644
--- a/xc/extras/Mesa/src/X86/sse_xform3.S
+++ b/xc/extras/Mesa/src/X86/sse_xform3.S
@@ -1,4 +1,3 @@
-/* $Id: sse_xform3.S,v 1.1.1.1 2002/10/22 13:06:16 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/X86/sse_xform4.S b/xc/extras/Mesa/src/X86/sse_xform4.S
index 2c53d45d1..5335939a1 100644
--- a/xc/extras/Mesa/src/X86/sse_xform4.S
+++ b/xc/extras/Mesa/src/X86/sse_xform4.S
@@ -1,4 +1,3 @@
-/* $Id: sse_xform4.S,v 1.1.1.1 2002/10/22 13:06:16 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/X86/x86_xform2.S b/xc/extras/Mesa/src/X86/x86_xform2.S
index 31446add7..a2338ffdf 100644
--- a/xc/extras/Mesa/src/X86/x86_xform2.S
+++ b/xc/extras/Mesa/src/X86/x86_xform2.S
@@ -1,4 +1,3 @@
-/* $Id: x86_xform2.S,v 1.1.1.1 2002/10/22 13:06:14 alanh Exp $ */
/*
* Mesa 3-D graphics library
@@ -23,7 +22,7 @@
* 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.
*/
-/* $XFree86: xc/extras/Mesa/src/X86/x86_xform2.S,v 1.3 2002/09/09 21:07:33 dawes Exp $ */
+/* $XFree86: xc/extras/Mesa/src/X86/x86_xform2.S,v 1.4 2002/12/16 16:18:33 dawes Exp $ */
/*
* NOTE: Avoid using spaces in between '(' ')' and arguments, especially
diff --git a/xc/extras/Mesa/src/X86/x86_xform3.S b/xc/extras/Mesa/src/X86/x86_xform3.S
index 72539dfcb..375097fe7 100644
--- a/xc/extras/Mesa/src/X86/x86_xform3.S
+++ b/xc/extras/Mesa/src/X86/x86_xform3.S
@@ -1,4 +1,3 @@
-/* $Id: x86_xform3.S,v 1.1.1.1 2002/10/22 13:06:14 alanh Exp $ */
/*
* Mesa 3-D graphics library
@@ -23,7 +22,7 @@
* 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.
*/
-/* $XFree86: xc/extras/Mesa/src/X86/x86_xform3.S,v 1.3 2002/09/09 21:07:33 dawes Exp $ */
+/* $XFree86: xc/extras/Mesa/src/X86/x86_xform3.S,v 1.4 2002/12/16 16:18:33 dawes Exp $ */
/*
* NOTE: Avoid using spaces in between '(' ')' and arguments, especially
diff --git a/xc/extras/Mesa/src/X86/x86_xform4.S b/xc/extras/Mesa/src/X86/x86_xform4.S
index 87821ad32..6014a4198 100644
--- a/xc/extras/Mesa/src/X86/x86_xform4.S
+++ b/xc/extras/Mesa/src/X86/x86_xform4.S
@@ -1,4 +1,3 @@
-/* $Id: x86_xform4.S,v 1.1.1.1 2002/10/22 13:06:14 alanh Exp $ */
/*
* Mesa 3-D graphics library
@@ -23,7 +22,7 @@
* 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.
*/
-/* $XFree86: xc/extras/Mesa/src/X86/x86_xform4.S,v 1.3 2002/09/09 21:07:33 dawes Exp $ */
+/* $XFree86: xc/extras/Mesa/src/X86/x86_xform4.S,v 1.4 2002/12/16 16:18:34 dawes Exp $ */
/*
* NOTE: Avoid using spaces in between '(' ')' and arguments, especially
diff --git a/xc/extras/Mesa/src/api_arrayelt.c b/xc/extras/Mesa/src/api_arrayelt.c
index 15ef51377..4ebfb59dc 100644
--- a/xc/extras/Mesa/src/api_arrayelt.c
+++ b/xc/extras/Mesa/src/api_arrayelt.c
@@ -1,4 +1,3 @@
-/* $Id: api_arrayelt.c,v 1.1.1.1 2002/10/22 13:05:38 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/api_arrayelt.h b/xc/extras/Mesa/src/api_arrayelt.h
index 4f42d97e5..706a72308 100644
--- a/xc/extras/Mesa/src/api_arrayelt.h
+++ b/xc/extras/Mesa/src/api_arrayelt.h
@@ -1,4 +1,3 @@
-/* $Id: api_arrayelt.h,v 1.1.1.1 2002/10/22 13:05:38 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/api_eval.c b/xc/extras/Mesa/src/api_eval.c
index 9f497ce0c..854677e64 100644
--- a/xc/extras/Mesa/src/api_eval.c
+++ b/xc/extras/Mesa/src/api_eval.c
@@ -1,4 +1,3 @@
-/* $Id: api_eval.c,v 1.1.1.1 2002/10/22 13:05:38 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/api_eval.h b/xc/extras/Mesa/src/api_eval.h
index 878067c22..d6cb38c9f 100644
--- a/xc/extras/Mesa/src/api_eval.h
+++ b/xc/extras/Mesa/src/api_eval.h
@@ -1,4 +1,3 @@
-/* $Id: api_eval.h,v 1.1.1.1 2002/10/22 13:05:38 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/api_loopback.c b/xc/extras/Mesa/src/api_loopback.c
index c944e6989..90558fc45 100644
--- a/xc/extras/Mesa/src/api_loopback.c
+++ b/xc/extras/Mesa/src/api_loopback.c
@@ -1,4 +1,3 @@
-/* $Id: api_loopback.c,v 1.1.1.1 2002/10/22 13:05:37 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/api_loopback.h b/xc/extras/Mesa/src/api_loopback.h
index 51cebd14d..a4858e44f 100644
--- a/xc/extras/Mesa/src/api_loopback.h
+++ b/xc/extras/Mesa/src/api_loopback.h
@@ -1,4 +1,3 @@
-/* $Id: api_loopback.h,v 1.1.1.1 2002/10/22 13:05:37 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/api_noop.c b/xc/extras/Mesa/src/api_noop.c
index 373bff851..fb34dd3de 100644
--- a/xc/extras/Mesa/src/api_noop.c
+++ b/xc/extras/Mesa/src/api_noop.c
@@ -1,4 +1,3 @@
-/* $Id: api_noop.c,v 1.1.1.1 2002/10/22 13:05:43 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/api_noop.h b/xc/extras/Mesa/src/api_noop.h
index 380fe9225..fcfa16c29 100644
--- a/xc/extras/Mesa/src/api_noop.h
+++ b/xc/extras/Mesa/src/api_noop.h
@@ -1,4 +1,3 @@
-/* $Id: api_noop.h,v 1.1.1.1 2002/10/22 13:05:43 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/api_validate.c b/xc/extras/Mesa/src/api_validate.c
index 2f0869952..bca682e89 100644
--- a/xc/extras/Mesa/src/api_validate.c
+++ b/xc/extras/Mesa/src/api_validate.c
@@ -1,4 +1,3 @@
-/* $Id: api_validate.c,v 1.1.1.1 2002/10/22 13:05:24 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/api_validate.h b/xc/extras/Mesa/src/api_validate.h
index 6b6a76266..10f0c34e6 100644
--- a/xc/extras/Mesa/src/api_validate.h
+++ b/xc/extras/Mesa/src/api_validate.h
@@ -1,4 +1,3 @@
-/* $Id: api_validate.h,v 1.1.1.1 2002/10/22 13:05:24 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/array_cache/ac_context.c b/xc/extras/Mesa/src/array_cache/ac_context.c
index d78394e52..5286a2c67 100644
--- a/xc/extras/Mesa/src/array_cache/ac_context.c
+++ b/xc/extras/Mesa/src/array_cache/ac_context.c
@@ -1,4 +1,3 @@
-/* $Id: ac_context.c,v 1.1.1.1 2002/10/22 13:06:39 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/array_cache/ac_context.h b/xc/extras/Mesa/src/array_cache/ac_context.h
index 4916497b7..7c1132f7b 100644
--- a/xc/extras/Mesa/src/array_cache/ac_context.h
+++ b/xc/extras/Mesa/src/array_cache/ac_context.h
@@ -1,4 +1,3 @@
-/* $Id: ac_context.h,v 1.1.1.1 2002/10/22 13:06:39 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/array_cache/ac_import.c b/xc/extras/Mesa/src/array_cache/ac_import.c
index 745a7c4f0..183527eaf 100644
--- a/xc/extras/Mesa/src/array_cache/ac_import.c
+++ b/xc/extras/Mesa/src/array_cache/ac_import.c
@@ -1,4 +1,3 @@
-/* $Id: ac_import.c,v 1.1.1.1 2002/10/22 13:06:39 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/array_cache/acache.h b/xc/extras/Mesa/src/array_cache/acache.h
index 52e4c1f80..7579ec3fe 100644
--- a/xc/extras/Mesa/src/array_cache/acache.h
+++ b/xc/extras/Mesa/src/array_cache/acache.h
@@ -1,4 +1,3 @@
-/* $Id: acache.h,v 1.1.1.1 2002/10/22 13:06:39 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/attrib.c b/xc/extras/Mesa/src/attrib.c
index 636c33ee5..0f74019c2 100644
--- a/xc/extras/Mesa/src/attrib.c
+++ b/xc/extras/Mesa/src/attrib.c
@@ -942,12 +942,16 @@ _mesa_PopAttrib(void)
point = (const struct gl_point_attrib *) attr->data;
_mesa_PointSize(point->Size);
_mesa_set_enable(ctx, GL_POINT_SMOOTH, point->SmoothFlag);
- _mesa_PointParameterfvEXT(GL_DISTANCE_ATTENUATION_EXT,
- point->Params);
- _mesa_PointParameterfEXT(GL_POINT_SIZE_MIN_EXT, point->MinSize);
- _mesa_PointParameterfEXT(GL_POINT_SIZE_MAX_EXT, point->MaxSize);
- _mesa_PointParameterfEXT(GL_POINT_FADE_THRESHOLD_SIZE_EXT,
- point->Threshold);
+ if (ctx->Extensions.EXT_point_parameters) {
+ _mesa_PointParameterfvEXT(GL_DISTANCE_ATTENUATION_EXT,
+ point->Params);
+ _mesa_PointParameterfEXT(GL_POINT_SIZE_MIN_EXT,
+ point->MinSize);
+ _mesa_PointParameterfEXT(GL_POINT_SIZE_MAX_EXT,
+ point->MaxSize);
+ _mesa_PointParameterfEXT(GL_POINT_FADE_THRESHOLD_SIZE_EXT,
+ point->Threshold);
+ }
}
break;
case GL_POLYGON_BIT:
diff --git a/xc/extras/Mesa/src/colormac.h b/xc/extras/Mesa/src/colormac.h
index ddfc2d22b..18f12d98e 100644
--- a/xc/extras/Mesa/src/colormac.h
+++ b/xc/extras/Mesa/src/colormac.h
@@ -1,4 +1,3 @@
-/* $Id: colormac.h,v 1.1.1.1 2002/10/22 13:05:43 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/context.c b/xc/extras/Mesa/src/context.c
index 3978fbe63..07b6fce9e 100644
--- a/xc/extras/Mesa/src/context.c
+++ b/xc/extras/Mesa/src/context.c
@@ -1,4 +1,3 @@
-/* $Id: context.c,v 1.1.1.8 2002/10/22 13:05:37 alanh Exp $ */
/*
* Mesa 3-D graphics library
@@ -1094,7 +1093,6 @@ init_attrib_groups( GLcontext *ctx )
ctx->Point.MinSize = 0.0;
ctx->Point.MaxSize = ctx->Const.MaxPointSize;
ctx->Point.Threshold = 1.0;
- ctx->Point.SpriteMode = GL_FALSE; /* GL_MESA_sprite_point */
/* Polygon group */
ctx->Polygon.CullFlag = GL_FALSE;
@@ -1581,36 +1579,6 @@ _mesa_initialize_context( GLcontext *ctx,
}
ctx->MRD = 1.0; /* Minimum resolvable depth value, for polygon offset */
-
-#if defined(MESA_TRACE)
- ctx->TraceCtx = (trace_context_t *) CALLOC( sizeof(trace_context_t) );
-#if 0
- /* Brian: do you want to have CreateContext fail here,
- or should we just trap in NewTrace (currently done)? */
- if (!(ctx->TraceCtx)) {
- free_shared_state(ctx, ctx->Shared);
- FREE( ctx->Exec );
- FREE( ctx->Save );
- return GL_FALSE;
- }
-#endif
- trInitContext(ctx->TraceCtx);
-
- ctx->TraceDispatch = (struct _glapi_table *)
- CALLOC(dispatchSize * sizeof(void*));
-#if 0
- if (!(ctx->TraceCtx)) {
- free_shared_state(ctx, ctx->Shared);
- FREE( ctx->Exec );
- FREE( ctx->Save );
- FREE( ctx->TraceCtx );
- return GL_FALSE;
- }
-#endif
- trInitDispatch(ctx->TraceDispatch);
-#endif
-
-
if (getenv("MESA_DEBUG"))
add_debug_flags(getenv("MESA_DEBUG"));
diff --git a/xc/extras/Mesa/src/convolve.h b/xc/extras/Mesa/src/convolve.h
index 795ee7c78..f97c9f35b 100644
--- a/xc/extras/Mesa/src/convolve.h
+++ b/xc/extras/Mesa/src/convolve.h
@@ -1,4 +1,3 @@
-/* $Id: convolve.h,v 1.1.1.1 2002/10/22 13:05:50 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/debug.c b/xc/extras/Mesa/src/debug.c
index de309348e..dd1a6dcc8 100644
--- a/xc/extras/Mesa/src/debug.c
+++ b/xc/extras/Mesa/src/debug.c
@@ -1,4 +1,3 @@
-/* $Id: debug.c,v 1.1.1.1 2002/10/22 13:05:08 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/debug.h b/xc/extras/Mesa/src/debug.h
index 3ec4923b2..6b45c0336 100644
--- a/xc/extras/Mesa/src/debug.h
+++ b/xc/extras/Mesa/src/debug.h
@@ -1,4 +1,3 @@
-/* $Id: debug.h,v 1.1.1.1 2002/10/22 13:05:08 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/dlist.c b/xc/extras/Mesa/src/dlist.c
index 5fe6124ec..99aa39623 100644
--- a/xc/extras/Mesa/src/dlist.c
+++ b/xc/extras/Mesa/src/dlist.c
@@ -1,9 +1,9 @@
/*
* Mesa 3-D graphics library
- * Version: 3.5
+ * Version: 4.0.5
*
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -5721,6 +5721,7 @@ _mesa_init_dlist_table( struct _glapi_table *table, GLuint tableSize )
/* GL 1.1 */
table->AreTexturesResident = exec_AreTexturesResident;
+ table->AreTexturesResidentEXT = exec_AreTexturesResident;
table->BindTexture = save_BindTexture;
table->ColorPointer = exec_ColorPointer;
table->CopyTexImage1D = save_CopyTexImage1D;
@@ -5732,10 +5733,12 @@ _mesa_init_dlist_table( struct _glapi_table *table, GLuint tableSize )
table->EdgeFlagPointer = exec_EdgeFlagPointer;
table->EnableClientState = exec_EnableClientState;
table->GenTextures = exec_GenTextures;
+ table->GenTexturesEXT = exec_GenTextures;
table->GetPointerv = exec_GetPointerv;
table->IndexPointer = exec_IndexPointer;
table->InterleavedArrays = exec_InterleavedArrays;
table->IsTexture = exec_IsTexture;
+ table->IsTextureEXT = exec_IsTexture;
table->NormalPointer = exec_NormalPointer;
table->PopClientAttrib = exec_PopClientAttrib;
table->PrioritizeTextures = save_PrioritizeTextures;
@@ -5769,18 +5772,31 @@ _mesa_init_dlist_table( struct _glapi_table *table, GLuint tableSize )
table->CopyConvolutionFilter1D = exec_CopyConvolutionFilter1D;
table->CopyConvolutionFilter2D = exec_CopyConvolutionFilter2D;
table->GetColorTable = exec_GetColorTable;
+ table->GetColorTableEXT = exec_GetColorTable;
table->GetColorTableParameterfv = exec_GetColorTableParameterfv;
+ table->GetColorTableParameterfvEXT = exec_GetColorTableParameterfv;
table->GetColorTableParameteriv = exec_GetColorTableParameteriv;
+ table->GetColorTableParameterivEXT = exec_GetColorTableParameteriv;
table->GetConvolutionFilter = exec_GetConvolutionFilter;
+ table->GetConvolutionFilterEXT = exec_GetConvolutionFilter;
table->GetConvolutionParameterfv = exec_GetConvolutionParameterfv;
+ table->GetConvolutionParameterfvEXT = exec_GetConvolutionParameterfv;
table->GetConvolutionParameteriv = exec_GetConvolutionParameteriv;
+ table->GetConvolutionParameterivEXT = exec_GetConvolutionParameteriv;
table->GetHistogram = exec_GetHistogram;
+ table->GetHistogramEXT = exec_GetHistogram;
table->GetHistogramParameterfv = exec_GetHistogramParameterfv;
+ table->GetHistogramParameterfvEXT = exec_GetHistogramParameterfv;
table->GetHistogramParameteriv = exec_GetHistogramParameteriv;
+ table->GetHistogramParameterivEXT = exec_GetHistogramParameteriv;
table->GetMinmax = exec_GetMinmax;
+ table->GetMinmaxEXT = exec_GetMinmax;
table->GetMinmaxParameterfv = exec_GetMinmaxParameterfv;
+ table->GetMinmaxParameterfvEXT = exec_GetMinmaxParameterfv;
table->GetMinmaxParameteriv = exec_GetMinmaxParameteriv;
+ table->GetMinmaxParameterivEXT = exec_GetMinmaxParameteriv;
table->GetSeparableFilter = exec_GetSeparableFilter;
+ table->GetSeparableFilterEXT = exec_GetSeparableFilter;
table->Histogram = save_Histogram;
table->Minmax = save_Minmax;
table->ResetHistogram = save_ResetHistogram;
diff --git a/xc/extras/Mesa/src/enable.c b/xc/extras/Mesa/src/enable.c
index 7be8dbf44..8c848d986 100644
--- a/xc/extras/Mesa/src/enable.c
+++ b/xc/extras/Mesa/src/enable.c
@@ -792,7 +792,7 @@ void _mesa_set_enable( GLcontext *ctx, GLenum cap, GLboolean state )
ctx->Multisample.SampleCoverageInvert = state;
break;
- /* GL_IBM_rasterpos_clip */
+ /* GL_IBM_rasterpos_clip */
case GL_RASTER_POSITION_UNCLIPPED_IBM:
if (!ctx->Extensions.IBM_rasterpos_clip) {
_mesa_error(ctx, GL_INVALID_ENUM, state ? "glEnable" : "glDisable");
@@ -804,37 +804,25 @@ void _mesa_set_enable( GLcontext *ctx, GLenum cap, GLboolean state )
ctx->Transform.RasterPositionUnclipped = state;
break;
- /* GL_MESA_sprite_point */
- case GL_SPRITE_POINT_MESA:
- if (!ctx->Extensions.MESA_sprite_point) {
- _mesa_error(ctx, GL_INVALID_ENUM, state ? "glEnable" : "glDisable");
- return;
+ /* GL_NV_texture_rectangle */
+ case GL_TEXTURE_RECTANGLE_NV:
+ {
+ const GLuint curr = ctx->Texture.CurrentUnit;
+ struct gl_texture_unit *texUnit = &ctx->Texture.Unit[curr];
+ GLuint newenabled = texUnit->Enabled & ~TEXTURE0_RECT;
+ if (!ctx->Extensions.NV_texture_rectangle) {
+ _mesa_error(ctx, GL_INVALID_ENUM, state ? "glEnable" : "glDisable");
+ return;
+ }
+ if (state)
+ newenabled |= TEXTURE0_RECT;
+ if (!ctx->Visual.rgbMode || texUnit->Enabled == newenabled)
+ return;
+ FLUSH_VERTICES(ctx, _NEW_TEXTURE);
+ texUnit->Enabled = newenabled;
}
- if (ctx->Point.SpriteMode == state)
- return;
- FLUSH_VERTICES(ctx, _NEW_POINT);
- ctx->Point.SpriteMode = state;
break;
- /* GL_NV_texture_rectangle */
- case GL_TEXTURE_RECTANGLE_NV:
- {
- const GLuint curr = ctx->Texture.CurrentUnit;
- struct gl_texture_unit *texUnit = &ctx->Texture.Unit[curr];
- GLuint newenabled = texUnit->Enabled & ~TEXTURE0_RECT;
- if (!ctx->Extensions.NV_texture_rectangle) {
- _mesa_error(ctx, GL_INVALID_ENUM, state ? "glEnable" : "glDisable");
- return;
- }
- if (state)
- newenabled |= TEXTURE0_RECT;
- if (!ctx->Visual.rgbMode || texUnit->Enabled == newenabled)
- return;
- FLUSH_VERTICES(ctx, _NEW_TEXTURE);
- texUnit->Enabled = newenabled;
- }
- break;
-
default:
_mesa_error(ctx, GL_INVALID_ENUM, state ? "glEnable" : "glDisable");
return;
@@ -1135,10 +1123,6 @@ _mesa_IsEnabled( GLenum cap )
return GL_FALSE;
}
- /* GL_MESA_sprite_point */
- case GL_SPRITE_POINT_MESA:
- return ctx->Point.SpriteMode;
-
/* GL_NV_texture_rectangle */
case GL_TEXTURE_RECTANGLE_NV:
if (ctx->Extensions.NV_texture_rectangle) {
diff --git a/xc/extras/Mesa/src/extensions.c b/xc/extras/Mesa/src/extensions.c
index b4ed8ed91..3091ae44a 100644
--- a/xc/extras/Mesa/src/extensions.c
+++ b/xc/extras/Mesa/src/extensions.c
@@ -102,13 +102,14 @@ static struct {
{ ON, "GL_IBM_rasterpos_clip", F(IBM_rasterpos_clip) },
{ OFF, "GL_IBM_texture_mirrored_repeat", F(ARB_texture_mirrored_repeat)},
{ OFF, "GL_INGR_blend_func_separate", F(INGR_blend_func_separate) },
+ { OFF, "GL_MESA_pack_invert", F(MESA_pack_invert) },
{ OFF, "GL_MESA_packed_depth_stencil", 0 },
{ OFF, "GL_MESA_resize_buffers", F(MESA_resize_buffers) },
- { OFF, "GL_MESA_sprite_point", F(MESA_sprite_point) },
+ { OFF, "GL_MESA_ycbcr_texture", F(MESA_ycbcr_texture) },
{ ON, "GL_MESA_window_pos", F(MESA_window_pos) },
{ OFF, "GL_NV_blend_square", F(NV_blend_square) },
{ ON, "GL_NV_texgen_reflection", F(NV_texgen_reflection) },
- { ON, "GL_NV_texture_rectangle", F(NV_texture_rectangle) },
+ { OFF, "GL_NV_texture_rectangle", F(NV_texture_rectangle) },
{ OFF, "GL_SGI_color_matrix", F(SGI_color_matrix) },
{ OFF, "GL_SGI_color_table", F(SGI_color_table) },
{ OFF, "GL_SGIS_generate_mipmap", F(SGIS_generate_mipmap) },
@@ -119,7 +120,8 @@ static struct {
{ OFF, "GL_SGIX_pixel_texture", F(SGIX_pixel_texture) },
{ OFF, "GL_SGIX_shadow", F(SGIX_shadow) },
{ OFF, "GL_SGIX_shadow_ambient", F(SGIX_shadow_ambient) },
- { OFF, "GL_3DFX_texture_compression_FXT1", F(_3DFX_texture_compression_FXT1) }
+ { OFF, "GL_3DFX_texture_compression_FXT1", F(_3DFX_texture_compression_FXT1) },
+ { OFF, "GL_APPLE_client_storage", F(APPLE_client_storage) },
};
@@ -162,7 +164,9 @@ _mesa_enable_sw_extensions(GLcontext *ctx)
"GL_HP_occlusion_test",
"GL_IBM_texture_mirrored_repeat",
"GL_INGR_blend_func_separate",
+ "GL_MESA_pack_invert",
"GL_MESA_resize_buffers",
+ "GL_MESA_ycbcr_texture",
"GL_NV_blend_square",
"GL_NV_texgen_reflection",
"GL_NV_texture_rectangle",
diff --git a/xc/extras/Mesa/src/get.c b/xc/extras/Mesa/src/get.c
index 9acefb053..70a7dc665 100644
--- a/xc/extras/Mesa/src/get.c
+++ b/xc/extras/Mesa/src/get.c
@@ -671,6 +671,9 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
case GL_PACK_IMAGE_HEIGHT_EXT:
*params = ctx->Pack.ImageHeight;
break;
+ case GL_PACK_INVERT_MESA:
+ *params = ctx->Pack.Invert;
+ break;
case GL_PERSPECTIVE_CORRECTION_HINT:
*params = ENUM_TO_BOOL(ctx->Hint.PerspectiveCorrection);
break;
@@ -917,6 +920,9 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
case GL_UNPACK_IMAGE_HEIGHT_EXT:
*params = ctx->Unpack.ImageHeight;
break;
+ case GL_UNPACK_CLIENT_STORAGE_APPLE:
+ *params = ctx->Unpack.ClientStorage;
+ break;
case GL_VIEWPORT:
params[0] = INT_TO_BOOL(ctx->Viewport.X);
params[1] = INT_TO_BOOL(ctx->Viewport.Y);
@@ -1391,17 +1397,6 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
}
break;
- /* GL_MESA_sprite_point */
- case GL_SPRITE_POINT_MESA:
- if (ctx->Extensions.MESA_sprite_point) {
- *params = ctx->Point.SpriteMode;
- }
- else {
- _mesa_error( ctx, GL_INVALID_ENUM, "glGetBooleanv" );
- return;
- }
- break;
-
/* GL_SGIS_generate_mipmap */
case GL_GENERATE_MIPMAP_HINT_SGIS:
if (ctx->Extensions.SGIS_generate_mipmap) {
@@ -1986,6 +1981,9 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
case GL_PACK_IMAGE_HEIGHT_EXT:
*params = (GLdouble) ctx->Pack.ImageHeight;
break;
+ case GL_PACK_INVERT_MESA:
+ *params = (GLdouble) ctx->Pack.Invert;
+ break;
case GL_PERSPECTIVE_CORRECTION_HINT:
*params = ENUM_TO_DOUBLE(ctx->Hint.PerspectiveCorrection);
break;
@@ -2229,6 +2227,9 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
case GL_UNPACK_IMAGE_HEIGHT_EXT:
*params = (GLdouble) ctx->Unpack.ImageHeight;
break;
+ case GL_UNPACK_CLIENT_STORAGE_APPLE:
+ *params = (GLdouble) ctx->Unpack.ClientStorage;
+ break;
case GL_VIEWPORT:
params[0] = (GLdouble) ctx->Viewport.X;
params[1] = (GLdouble) ctx->Viewport.Y;
@@ -2703,17 +2704,6 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
}
break;
- /* GL_MESA_sprite_point */
- case GL_SPRITE_POINT_MESA:
- if (ctx->Extensions.MESA_sprite_point) {
- *params = (GLdouble) ctx->Point.SpriteMode;
- }
- else {
- _mesa_error( ctx, GL_INVALID_ENUM, "glGetDoublev" );
- return;
- }
- break;
-
/* GL_SGIS_generate_mipmap */
case GL_GENERATE_MIPMAP_HINT_SGIS:
if (ctx->Extensions.SGIS_generate_mipmap) {
@@ -3305,6 +3295,9 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
case GL_PACK_IMAGE_HEIGHT_EXT:
*params = (GLfloat) ctx->Pack.ImageHeight;
break;
+ case GL_PACK_INVERT_MESA:
+ *params = (GLfloat) ctx->Pack.Invert;
+ break;
case GL_PERSPECTIVE_CORRECTION_HINT:
*params = ENUM_TO_FLOAT(ctx->Hint.PerspectiveCorrection);
break;
@@ -3550,6 +3543,9 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
case GL_UNPACK_IMAGE_HEIGHT_EXT:
*params = (GLfloat) ctx->Unpack.ImageHeight;
break;
+ case GL_UNPACK_CLIENT_STORAGE_APPLE:
+ *params = (GLfloat) ctx->Unpack.ClientStorage;
+ break;
case GL_VIEWPORT:
params[0] = (GLfloat) ctx->Viewport.X;
params[1] = (GLfloat) ctx->Viewport.Y;
@@ -3996,17 +3992,6 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
}
break;
- /* GL_MESA_sprite_point */
- case GL_SPRITE_POINT_MESA:
- if (ctx->Extensions.MESA_sprite_point) {
- *params = (GLfloat) ctx->Point.SpriteMode;
- }
- else {
- GET_FLOAT_ERROR;
- return;
- }
- break;
-
/* GL_SGIS_generate_mipmap */
case GL_GENERATE_MIPMAP_HINT_SGIS:
if (ctx->Extensions.SGIS_generate_mipmap) {
@@ -4593,6 +4578,9 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
case GL_PACK_IMAGE_HEIGHT_EXT:
*params = ctx->Pack.ImageHeight;
break;
+ case GL_PACK_INVERT_MESA:
+ *params = ctx->Pack.Invert;
+ break;
case GL_PERSPECTIVE_CORRECTION_HINT:
*params = (GLint) ctx->Hint.PerspectiveCorrection;
break;
@@ -4836,6 +4824,9 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
case GL_UNPACK_IMAGE_HEIGHT_EXT:
*params = ctx->Unpack.ImageHeight;
break;
+ case GL_UNPACK_CLIENT_STORAGE_APPLE:
+ *params = ctx->Unpack.ClientStorage;
+ break;
case GL_VIEWPORT:
params[0] = (GLint) ctx->Viewport.X;
params[1] = (GLint) ctx->Viewport.Y;
@@ -5331,17 +5322,6 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
}
break;
- /* GL_MESA_sprite_point */
- case GL_SPRITE_POINT_MESA:
- if (ctx->Extensions.MESA_sprite_point) {
- *params = (GLint) ctx->Point.SpriteMode;
- }
- else {
- _mesa_error( ctx, GL_INVALID_ENUM, "glGetIntegerv" );
- return;
- }
- break;
-
/* GL_SGIS_generate_mipmap */
case GL_GENERATE_MIPMAP_HINT_SGIS:
if (ctx->Extensions.SGIS_generate_mipmap) {
diff --git a/xc/extras/Mesa/src/glapi.c b/xc/extras/Mesa/src/glapi.c
index 550a57aa9..79097c29c 100644
--- a/xc/extras/Mesa/src/glapi.c
+++ b/xc/extras/Mesa/src/glapi.c
@@ -1914,13 +1914,6 @@ _glapi_add_entrypoint(const char *funcName, GLuint offset)
}
{
- /* make sure this offset/name pair is legal */
- const char *name = _glapi_get_proc_name(offset);
- if (name && strcmp(name, funcName) != 0)
- return GL_FALSE; /* bad name! */
- }
-
- {
/* be sure index and name match known data */
GLuint i;
for (i = 0; i < NumExtEntryPoints; i++) {
diff --git a/xc/extras/Mesa/src/glheader.h b/xc/extras/Mesa/src/glheader.h
index 62fba6e00..892f6131c 100644
--- a/xc/extras/Mesa/src/glheader.h
+++ b/xc/extras/Mesa/src/glheader.h
@@ -22,7 +22,7 @@
* 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.
*/
-/* $XFree86: xc/extras/Mesa/src/glheader.h,v 1.18 2002/09/09 21:29:38 dawes Exp $ */
+/* $XFree86: xc/extras/Mesa/src/glheader.h,v 1.20 2002/11/06 17:19:39 tsi Exp $ */
#ifndef GLHEADER_H
diff --git a/xc/extras/Mesa/src/histogram.c b/xc/extras/Mesa/src/histogram.c
index 8ee061168..22f35e26a 100644
--- a/xc/extras/Mesa/src/histogram.c
+++ b/xc/extras/Mesa/src/histogram.c
@@ -1,4 +1,3 @@
-/* $Id: histogram.c,v 1.1.1.1 2002/10/22 13:05:10 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/histogram.h b/xc/extras/Mesa/src/histogram.h
index 8c620f750..a63152aed 100644
--- a/xc/extras/Mesa/src/histogram.h
+++ b/xc/extras/Mesa/src/histogram.h
@@ -1,4 +1,3 @@
-/* $Id: histogram.h,v 1.1.1.1 2002/10/22 13:05:10 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/image.c b/xc/extras/Mesa/src/image.c
index da2e6953f..d6ef5cf7f 100644
--- a/xc/extras/Mesa/src/image.c
+++ b/xc/extras/Mesa/src/image.c
@@ -1,9 +1,9 @@
/*
* Mesa 3-D graphics library
- * Version: 3.5
+ * Version: 4.0.4
*
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -56,7 +56,9 @@ const struct gl_pixelstore_attrib _mesa_native_packing = {
0, /* ImageHeight */
0, /* SkipImages */
GL_FALSE, /* SwapBytes */
- GL_FALSE /* LsbFirst */
+ GL_FALSE, /* LsbFirst */
+ GL_FALSE, /* ClientStorage */
+ GL_FALSE /* Invert */
};
@@ -202,6 +204,9 @@ GLint _mesa_sizeof_packed_type( GLenum type )
return sizeof(GLuint);
case GL_UNSIGNED_INT_2_10_10_10_REV:
return sizeof(GLuint);
+ case GL_UNSIGNED_SHORT_8_8_MESA:
+ case GL_UNSIGNED_SHORT_8_8_REV_MESA:
+ return sizeof(GLushort);
default:
return -1;
}
@@ -244,6 +249,8 @@ GLint _mesa_components_in_format( GLenum format )
return 4;
case GL_ABGR_EXT:
return 4;
+ case GL_YCBCR_MESA:
+ return 2;
default:
return -1;
}
@@ -302,6 +309,12 @@ GLint _mesa_bytes_per_pixel( GLenum format, GLenum type )
return sizeof(GLuint);
else
return -1;
+ case GL_UNSIGNED_SHORT_8_8_MESA:
+ case GL_UNSIGNED_SHORT_8_8_REV_MESA:
+ if (format == GL_YCBCR_MESA)
+ return sizeof(GLushort);
+ else
+ return -1;
default:
return -1;
}
@@ -392,6 +405,12 @@ _mesa_is_legal_format_and_type( GLenum format, GLenum type )
default:
return GL_FALSE;
}
+ case GL_YCBCR_MESA:
+ if (type == GL_UNSIGNED_SHORT_8_8_MESA ||
+ type == GL_UNSIGNED_SHORT_8_8_REV_MESA)
+ return GL_TRUE;
+ else
+ return GL_FALSE;
default:
; /* fall-through */
}
@@ -475,6 +494,7 @@ _mesa_image_address( const struct gl_pixelstore_attrib *packing,
else {
/* Non-BITMAP data */
GLint bytes_per_pixel, bytes_per_row, remainder, bytes_per_image;
+ GLint topOfImage;
bytes_per_pixel = _mesa_bytes_per_pixel( format, type );
@@ -490,9 +510,19 @@ _mesa_image_address( const struct gl_pixelstore_attrib *packing,
bytes_per_image = bytes_per_row * rows_per_image;
+ if (packing->Invert) {
+ /* set pixel_addr to the last row */
+ topOfImage = bytes_per_row * (height - 1);
+ bytes_per_row = -bytes_per_row;
+ }
+ else {
+ topOfImage = 0;
+ }
+
/* compute final pixel address */
pixel_addr = (GLubyte *) image
+ (skipimages + img) * bytes_per_image
+ + topOfImage
+ (skiprows + row) * bytes_per_row
+ (skippixels + column) * bytes_per_pixel;
}
@@ -513,14 +543,18 @@ _mesa_image_row_stride( const struct gl_pixelstore_attrib *packing,
ASSERT(packing);
if (type == GL_BITMAP) {
/* BITMAP data */
+ GLint bytes;
if (packing->RowLength == 0) {
- GLint bytes = (width + 7) / 8;
- return bytes;
+ bytes = (width + 7) / 8;
}
else {
- GLint bytes = (packing->RowLength + 7) / 8;
- return bytes;
+ bytes = (packing->RowLength + 7) / 8;
+ }
+ if (packing->Invert) {
+ /* negate the bytes per row (negative row stride) */
+ bytes = -bytes;
}
+ return bytes;
}
else {
/* Non-BITMAP data */
@@ -537,6 +571,8 @@ _mesa_image_row_stride( const struct gl_pixelstore_attrib *packing,
remainder = bytesPerRow % packing->Alignment;
if (remainder > 0)
bytesPerRow += (packing->Alignment - remainder);
+ if (packing->Invert)
+ bytesPerRow = -bytesPerRow;
return bytesPerRow;
}
}
diff --git a/xc/extras/Mesa/src/imports.c b/xc/extras/Mesa/src/imports.c
index c19e51d65..895a4768b 100644
--- a/xc/extras/Mesa/src/imports.c
+++ b/xc/extras/Mesa/src/imports.c
@@ -1,4 +1,3 @@
-/* $Id: imports.c,v 1.1.1.1 2002/10/22 13:05:51 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/imports.h b/xc/extras/Mesa/src/imports.h
index 53c823c34..758c99cce 100644
--- a/xc/extras/Mesa/src/imports.h
+++ b/xc/extras/Mesa/src/imports.h
@@ -1,4 +1,3 @@
-/* $Id: imports.h,v 1.1.1.1 2002/10/22 13:05:51 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/math/m_clip_tmp.h b/xc/extras/Mesa/src/math/m_clip_tmp.h
index 1805d2554..3f84f9393 100644
--- a/xc/extras/Mesa/src/math/m_clip_tmp.h
+++ b/xc/extras/Mesa/src/math/m_clip_tmp.h
@@ -1,4 +1,3 @@
-/* $Id: m_clip_tmp.h,v 1.1.1.1 2002/10/22 13:06:29 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/math/m_copy_tmp.h b/xc/extras/Mesa/src/math/m_copy_tmp.h
index edc7149c5..a9e33511e 100644
--- a/xc/extras/Mesa/src/math/m_copy_tmp.h
+++ b/xc/extras/Mesa/src/math/m_copy_tmp.h
@@ -1,4 +1,3 @@
-/* $Id: m_copy_tmp.h,v 1.1.1.1 2002/10/22 13:06:31 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/math/m_debug.h b/xc/extras/Mesa/src/math/m_debug.h
index 4795c5207..7cb556e7f 100644
--- a/xc/extras/Mesa/src/math/m_debug.h
+++ b/xc/extras/Mesa/src/math/m_debug.h
@@ -1,4 +1,3 @@
-/* $Id: m_debug.h,v 1.1.1.1 2002/10/22 13:06:31 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/math/m_debug_clip.c b/xc/extras/Mesa/src/math/m_debug_clip.c
index 634f5922c..cc719ee5d 100644
--- a/xc/extras/Mesa/src/math/m_debug_clip.c
+++ b/xc/extras/Mesa/src/math/m_debug_clip.c
@@ -1,4 +1,3 @@
-/* $Id: m_debug_clip.c,v 1.1.1.1 2002/10/22 13:06:32 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/math/m_debug_norm.c b/xc/extras/Mesa/src/math/m_debug_norm.c
index 2646c5263..4d9d40bbc 100644
--- a/xc/extras/Mesa/src/math/m_debug_norm.c
+++ b/xc/extras/Mesa/src/math/m_debug_norm.c
@@ -1,4 +1,3 @@
-/* $Id: m_debug_norm.c,v 1.1.1.1 2002/10/22 13:06:32 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/math/m_debug_util.h b/xc/extras/Mesa/src/math/m_debug_util.h
index 1cc77fd44..4b74b420f 100644
--- a/xc/extras/Mesa/src/math/m_debug_util.h
+++ b/xc/extras/Mesa/src/math/m_debug_util.h
@@ -1,4 +1,3 @@
-/* $Id: m_debug_util.h,v 1.1.1.1 2002/10/22 13:06:27 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/math/m_debug_vertex.c b/xc/extras/Mesa/src/math/m_debug_vertex.c
index 21f15fd2c..7cb87c190 100644
--- a/xc/extras/Mesa/src/math/m_debug_vertex.c
+++ b/xc/extras/Mesa/src/math/m_debug_vertex.c
@@ -1,4 +1,3 @@
-/* $Id: m_debug_vertex.c,v 1.1.1.1 2002/10/22 13:06:28 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/math/m_debug_xform.c b/xc/extras/Mesa/src/math/m_debug_xform.c
index 7566bf060..eb81e019d 100644
--- a/xc/extras/Mesa/src/math/m_debug_xform.c
+++ b/xc/extras/Mesa/src/math/m_debug_xform.c
@@ -1,4 +1,3 @@
-/* $Id: m_debug_xform.c,v 1.1.1.1 2002/10/22 13:06:28 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/math/m_dotprod_tmp.h b/xc/extras/Mesa/src/math/m_dotprod_tmp.h
index dfa43664d..03e65af6c 100644
--- a/xc/extras/Mesa/src/math/m_dotprod_tmp.h
+++ b/xc/extras/Mesa/src/math/m_dotprod_tmp.h
@@ -1,4 +1,3 @@
-/* $Id: m_dotprod_tmp.h,v 1.1.1.1 2002/10/22 13:06:28 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/math/m_eval.c b/xc/extras/Mesa/src/math/m_eval.c
index 4f5dbd26a..42ffd4133 100644
--- a/xc/extras/Mesa/src/math/m_eval.c
+++ b/xc/extras/Mesa/src/math/m_eval.c
@@ -1,4 +1,3 @@
-/* $Id: m_eval.c,v 1.1.1.1 2002/10/22 13:06:26 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/math/m_eval.h b/xc/extras/Mesa/src/math/m_eval.h
index 26eeaedbc..a23cbd402 100644
--- a/xc/extras/Mesa/src/math/m_eval.h
+++ b/xc/extras/Mesa/src/math/m_eval.h
@@ -1,4 +1,3 @@
-/* $Id: m_eval.h,v 1.1.1.1 2002/10/22 13:06:26 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/math/m_matrix.c b/xc/extras/Mesa/src/math/m_matrix.c
index 8653c0c46..dc5016c88 100644
--- a/xc/extras/Mesa/src/math/m_matrix.c
+++ b/xc/extras/Mesa/src/math/m_matrix.c
@@ -1,4 +1,3 @@
-/* $Id: m_matrix.c,v 1.1.1.1 2002/10/22 13:06:30 alanh Exp $ */
/*
* Mesa 3-D graphics library
@@ -23,7 +22,7 @@
* 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.
*/
-/* $XFree86: xc/extras/Mesa/src/math/m_matrix.c,v 1.2 2002/09/12 15:16:51 tsi Exp $ */
+/* $XFree86: xc/extras/Mesa/src/math/m_matrix.c,v 1.3 2002/12/16 16:18:36 dawes Exp $ */
/*
diff --git a/xc/extras/Mesa/src/math/m_matrix.h b/xc/extras/Mesa/src/math/m_matrix.h
index a9aea838f..7c22082d5 100644
--- a/xc/extras/Mesa/src/math/m_matrix.h
+++ b/xc/extras/Mesa/src/math/m_matrix.h
@@ -1,4 +1,3 @@
-/* $Id: m_matrix.h,v 1.1.1.1 2002/10/22 13:06:30 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/math/m_norm_tmp.h b/xc/extras/Mesa/src/math/m_norm_tmp.h
index b0e3e1785..d5f7da409 100644
--- a/xc/extras/Mesa/src/math/m_norm_tmp.h
+++ b/xc/extras/Mesa/src/math/m_norm_tmp.h
@@ -1,4 +1,3 @@
-/* $Id: m_norm_tmp.h,v 1.1.1.1 2002/10/22 13:06:32 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/math/m_trans_tmp.h b/xc/extras/Mesa/src/math/m_trans_tmp.h
index 0fa3fbd70..25e03c986 100644
--- a/xc/extras/Mesa/src/math/m_trans_tmp.h
+++ b/xc/extras/Mesa/src/math/m_trans_tmp.h
@@ -1,4 +1,3 @@
-/* $Id: m_trans_tmp.h,v 1.1.1.1 2002/10/22 13:06:28 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/math/m_translate.c b/xc/extras/Mesa/src/math/m_translate.c
index 6e4dcee06..a4305f26c 100644
--- a/xc/extras/Mesa/src/math/m_translate.c
+++ b/xc/extras/Mesa/src/math/m_translate.c
@@ -1,4 +1,3 @@
-/* $Id: m_translate.c,v 1.1.1.1 2002/10/22 13:06:28 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/math/m_translate.h b/xc/extras/Mesa/src/math/m_translate.h
index 4e88c0c53..c473f83d6 100644
--- a/xc/extras/Mesa/src/math/m_translate.h
+++ b/xc/extras/Mesa/src/math/m_translate.h
@@ -1,4 +1,3 @@
-/* $Id: m_translate.h,v 1.1.1.1 2002/10/22 13:06:28 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/math/m_vector.c b/xc/extras/Mesa/src/math/m_vector.c
index c04143be2..4c5e0ac26 100644
--- a/xc/extras/Mesa/src/math/m_vector.c
+++ b/xc/extras/Mesa/src/math/m_vector.c
@@ -1,4 +1,3 @@
-/* $Id: m_vector.c,v 1.1.1.1 2002/10/22 13:06:29 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/math/m_vector.h b/xc/extras/Mesa/src/math/m_vector.h
index e2c6d8dce..4b1b643ea 100644
--- a/xc/extras/Mesa/src/math/m_vector.h
+++ b/xc/extras/Mesa/src/math/m_vector.h
@@ -1,4 +1,3 @@
-/* $Id: m_vector.h,v 1.1.1.1 2002/10/22 13:06:29 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/math/m_vertices.c b/xc/extras/Mesa/src/math/m_vertices.c
index 2ba168e5d..e6f44d6de 100644
--- a/xc/extras/Mesa/src/math/m_vertices.c
+++ b/xc/extras/Mesa/src/math/m_vertices.c
@@ -1,4 +1,3 @@
-/* $Id: m_vertices.c,v 1.1.1.1 2002/10/22 13:06:29 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/math/m_vertices.h b/xc/extras/Mesa/src/math/m_vertices.h
index a62491050..4a8c2dad9 100644
--- a/xc/extras/Mesa/src/math/m_vertices.h
+++ b/xc/extras/Mesa/src/math/m_vertices.h
@@ -1,4 +1,3 @@
-/* $Id: m_vertices.h,v 1.1.1.1 2002/10/22 13:06:29 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/math/m_xform.c b/xc/extras/Mesa/src/math/m_xform.c
index 183d58fa6..03325645d 100644
--- a/xc/extras/Mesa/src/math/m_xform.c
+++ b/xc/extras/Mesa/src/math/m_xform.c
@@ -1,4 +1,3 @@
-/* $Id: m_xform.c,v 1.1.1.1 2002/10/22 13:06:31 alanh Exp $ */
/*
* Mesa 3-D graphics library
@@ -190,7 +189,7 @@ void _mesa_transform_point_sz( GLfloat Q[4], const GLfloat M[16],
/*
* This is called only once. It initializes several tables with pointers
* to optimized transformation functions. This is where we can test for
- * AMD 3Dnow! capability, Intel Katmai, etc. and hook in the right code.
+ * AMD 3Dnow! capability, Intel SSE, etc. and hook in the right code.
*/
void
_math_init_transformation( void )
diff --git a/xc/extras/Mesa/src/math/m_xform.h b/xc/extras/Mesa/src/math/m_xform.h
index e4e31327a..fbd4836e2 100644
--- a/xc/extras/Mesa/src/math/m_xform.h
+++ b/xc/extras/Mesa/src/math/m_xform.h
@@ -1,4 +1,3 @@
-/* $Id: m_xform.h,v 1.1.1.1 2002/10/22 13:06:31 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/math/m_xform_tmp.h b/xc/extras/Mesa/src/math/m_xform_tmp.h
index 7f34ef3da..7cf4780bd 100644
--- a/xc/extras/Mesa/src/math/m_xform_tmp.h
+++ b/xc/extras/Mesa/src/math/m_xform_tmp.h
@@ -1,4 +1,3 @@
-/* $Id: m_xform_tmp.h,v 1.1.1.1 2002/10/22 13:06:31 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/math/mathmod.h b/xc/extras/Mesa/src/math/mathmod.h
index e1e4708de..35f6671f2 100644
--- a/xc/extras/Mesa/src/math/mathmod.h
+++ b/xc/extras/Mesa/src/math/mathmod.h
@@ -1,4 +1,3 @@
-/* $Id: mathmod.h,v 1.1.1.1 2002/10/22 13:06:29 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/mem.h b/xc/extras/Mesa/src/mem.h
index d27361e76..775e67fa2 100644
--- a/xc/extras/Mesa/src/mem.h
+++ b/xc/extras/Mesa/src/mem.h
@@ -22,7 +22,7 @@
* 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.
*/
-
+/* $XFree86: xc/extras/Mesa/src/mem.h,v 1.9 2003/01/12 03:55:44 tsi Exp $ */
#ifndef MEM_H
#define MEM_H
@@ -38,7 +38,7 @@
#if defined(WIN32) && defined(_DEBUG)
#include <malloc.h>
#ifndef _CRTDBG_MAP_ALLOC
- #define _CRTDBG_MAP_ALLOC 1
+# define _CRTDBG_MAP_ALLOC 1
#endif
#include <crtdbg.h>
diff --git a/xc/extras/Mesa/src/mmath.h b/xc/extras/Mesa/src/mmath.h
index c39c93004..d5639d019 100644
--- a/xc/extras/Mesa/src/mmath.h
+++ b/xc/extras/Mesa/src/mmath.h
@@ -199,7 +199,7 @@ do { \
#if defined(__i386__) || defined(__sparc__) || defined(__s390x__) || \
- defined(__powerpc__) || \
+ defined(__powerpc__) || defined(__x86_64__) || \
( defined(__alpha__) && ( defined(__IEEE_FLOAT) || !defined(VMS) ) )
#define USE_IEEE
#endif
diff --git a/xc/extras/Mesa/src/mtypes.h b/xc/extras/Mesa/src/mtypes.h
index 82a8c2ab7..73c4133c6 100644
--- a/xc/extras/Mesa/src/mtypes.h
+++ b/xc/extras/Mesa/src/mtypes.h
@@ -1,4 +1,3 @@
-/* $Id: mtypes.h,v 1.1.1.1 2002/10/22 13:05:27 alanh Exp $ */
/*
* Mesa 3-D graphics library
@@ -614,7 +613,6 @@ struct gl_pixel_attrib {
struct gl_point_attrib {
GLboolean SmoothFlag; /* True if GL_POINT_SMOOTH is enabled */
- GLboolean SpriteMode; /* GL_MESA_sprite_point extension */
GLfloat Size; /* User-specified point size */
GLfloat _Size; /* Size clamped to Const.Min/MaxPointSize */
GLfloat Params[3]; /* GL_EXT_point_parameters */
@@ -802,6 +800,7 @@ struct gl_texture_image {
GLuint Width; /* = 2^WidthLog2 + 2*Border */
GLuint Height; /* = 2^HeightLog2 + 2*Border */
GLuint Depth; /* = 2^DepthLog2 + 2*Border */
+ GLuint RowStride; /* == Width unless IsClientData and padded */
GLuint Width2; /* = Width - 2*Border */
GLuint Height2; /* = Height - 2*Border */
GLuint Depth2; /* = Depth - 2*Border */
@@ -809,10 +808,8 @@ struct gl_texture_image {
GLuint HeightLog2; /* = log2(Height2) */
GLuint DepthLog2; /* = log2(Depth2) */
GLuint MaxLog2; /* = MAX(WidthLog2, HeightLog2) */
- GLfloat WidthScale; /* used for mipmap lod computation */
- GLfloat HeightScale; /* used for mipmap lod computation */
- GLfloat DepthScale; /* used for mipmap lod computation */
GLvoid *Data; /* Image data, accessed via FetchTexel() */
+ GLboolean IsClientData; /* Data owned by client? */
const struct gl_texture_format *TexFormat;
@@ -995,6 +992,8 @@ struct gl_pixelstore_attrib {
GLint SkipImages; /* for GL_EXT_texture3D */
GLboolean SwapBytes;
GLboolean LsbFirst;
+ GLboolean ClientStorage; /* GL_APPLE_client_storage */
+ GLboolean Invert; /* GL_MESA_pack_invert */
};
@@ -1245,9 +1244,10 @@ struct gl_extensions {
GLboolean HP_occlusion_test;
GLboolean IBM_rasterpos_clip;
GLboolean INGR_blend_func_separate;
+ GLboolean MESA_pack_invert;
GLboolean MESA_window_pos;
GLboolean MESA_resize_buffers;
- GLboolean MESA_sprite_point;
+ GLboolean MESA_ycbcr_texture;
GLboolean NV_blend_square;
GLboolean NV_texgen_reflection;
GLboolean NV_texture_rectangle;
@@ -1261,6 +1261,7 @@ struct gl_extensions {
GLboolean SGIX_shadow;
GLboolean SGIX_shadow_ambient;
GLboolean _3DFX_texture_compression_FXT1;
+ GLboolean APPLE_client_storage;
};
diff --git a/xc/extras/Mesa/src/pixel.c b/xc/extras/Mesa/src/pixel.c
index f6e3322c4..f1263ba4c 100644
--- a/xc/extras/Mesa/src/pixel.c
+++ b/xc/extras/Mesa/src/pixel.c
@@ -1,7 +1,7 @@
/*
* Mesa 3-D graphics library
- * Version: 4.0.3
+ * Version: 4.0.4
*
* Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
*
@@ -145,6 +145,17 @@ _mesa_PixelStorei( GLenum pname, GLint param )
FLUSH_VERTICES(ctx, _NEW_PACKUNPACK);
ctx->Pack.Alignment = param;
break;
+ case GL_PACK_INVERT_MESA:
+ if (!ctx->Extensions.MESA_pack_invert) {
+ _mesa_error( ctx, GL_INVALID_ENUM, "glPixelstore(pname)" );
+ return;
+ }
+ if (ctx->Pack.Invert == param)
+ return;
+ FLUSH_VERTICES(ctx, _NEW_PACKUNPACK);
+ ctx->Pack.Invert = param;
+ break;
+
case GL_UNPACK_SWAP_BYTES:
if (param == (GLint)ctx->Unpack.SwapBytes)
return;
@@ -222,6 +233,13 @@ _mesa_PixelStorei( GLenum pname, GLint param )
FLUSH_VERTICES(ctx, _NEW_PACKUNPACK);
ctx->Unpack.Alignment = param;
break;
+ case GL_UNPACK_CLIENT_STORAGE_APPLE:
+ if (param == (GLint)ctx->Unpack.ClientStorage)
+ return;
+ FLUSH_VERTICES(ctx, _NEW_PACKUNPACK);
+ ctx->Unpack.ClientStorage = param ? GL_TRUE : GL_FALSE;
+ break;
+
default:
_mesa_error( ctx, GL_INVALID_ENUM, "glPixelStore" );
return;
diff --git a/xc/extras/Mesa/src/state.c b/xc/extras/Mesa/src/state.c
index 9ea5e118c..c99e0c0d5 100644
--- a/xc/extras/Mesa/src/state.c
+++ b/xc/extras/Mesa/src/state.c
@@ -1,9 +1,9 @@
/*
* Mesa 3-D graphics library
- * Version: 4.0.4
+ * Version: 4.0.5
*
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -294,6 +294,7 @@ _mesa_init_exec_table(struct _glapi_table *exec, GLuint tableSize)
/* 1.1 */
exec->AreTexturesResident = _mesa_AreTexturesResident;
+ exec->AreTexturesResidentEXT = _mesa_AreTexturesResident;
exec->BindTexture = _mesa_BindTexture;
exec->ColorPointer = _mesa_ColorPointer;
exec->CopyTexImage1D = _mesa_CopyTexImage1D;
@@ -305,10 +306,12 @@ _mesa_init_exec_table(struct _glapi_table *exec, GLuint tableSize)
exec->EdgeFlagPointer = _mesa_EdgeFlagPointer;
exec->EnableClientState = _mesa_EnableClientState;
exec->GenTextures = _mesa_GenTextures;
+ exec->GenTexturesEXT = _mesa_GenTextures;
exec->GetPointerv = _mesa_GetPointerv;
exec->IndexPointer = _mesa_IndexPointer;
exec->InterleavedArrays = _mesa_InterleavedArrays;
exec->IsTexture = _mesa_IsTexture;
+ exec->IsTextureEXT = _mesa_IsTexture;
exec->NormalPointer = _mesa_NormalPointer;
exec->PopClientAttrib = _mesa_PopClientAttrib;
exec->PrioritizeTextures = _mesa_PrioritizeTextures;
@@ -341,18 +344,31 @@ _mesa_init_exec_table(struct _glapi_table *exec, GLuint tableSize)
exec->CopyConvolutionFilter1D = _mesa_CopyConvolutionFilter1D;
exec->CopyConvolutionFilter2D = _mesa_CopyConvolutionFilter2D;
exec->GetColorTable = _mesa_GetColorTable;
+ exec->GetColorTableEXT = _mesa_GetColorTable;
exec->GetColorTableParameterfv = _mesa_GetColorTableParameterfv;
+ exec->GetColorTableParameterfvEXT = _mesa_GetColorTableParameterfv;
exec->GetColorTableParameteriv = _mesa_GetColorTableParameteriv;
+ exec->GetColorTableParameterivEXT = _mesa_GetColorTableParameteriv;
exec->GetConvolutionFilter = _mesa_GetConvolutionFilter;
+ exec->GetConvolutionFilterEXT = _mesa_GetConvolutionFilter;
exec->GetConvolutionParameterfv = _mesa_GetConvolutionParameterfv;
+ exec->GetConvolutionParameterfvEXT = _mesa_GetConvolutionParameterfv;
exec->GetConvolutionParameteriv = _mesa_GetConvolutionParameteriv;
+ exec->GetConvolutionParameterivEXT = _mesa_GetConvolutionParameteriv;
exec->GetHistogram = _mesa_GetHistogram;
+ exec->GetHistogramEXT = _mesa_GetHistogram;
exec->GetHistogramParameterfv = _mesa_GetHistogramParameterfv;
+ exec->GetHistogramParameterfvEXT = _mesa_GetHistogramParameterfv;
exec->GetHistogramParameteriv = _mesa_GetHistogramParameteriv;
+ exec->GetHistogramParameterivEXT = _mesa_GetHistogramParameteriv;
exec->GetMinmax = _mesa_GetMinmax;
+ exec->GetMinmaxEXT = _mesa_GetMinmax;
exec->GetMinmaxParameterfv = _mesa_GetMinmaxParameterfv;
+ exec->GetMinmaxParameterfvEXT = _mesa_GetMinmaxParameterfv;
exec->GetMinmaxParameteriv = _mesa_GetMinmaxParameteriv;
+ exec->GetMinmaxParameterivEXT = _mesa_GetMinmaxParameteriv;
exec->GetSeparableFilter = _mesa_GetSeparableFilter;
+ exec->GetSeparableFilterEXT = _mesa_GetSeparableFilter;
exec->Histogram = _mesa_Histogram;
exec->Minmax = _mesa_Minmax;
exec->ResetHistogram = _mesa_ResetHistogram;
diff --git a/xc/extras/Mesa/src/swrast/s_aaline.c b/xc/extras/Mesa/src/swrast/s_aaline.c
index 08bcaac63..f61934ab3 100644
--- a/xc/extras/Mesa/src/swrast/s_aaline.c
+++ b/xc/extras/Mesa/src/swrast/s_aaline.c
@@ -1,4 +1,3 @@
-/* $Id: s_aaline.c,v 1.1.1.1 2002/10/22 13:06:56 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_aaline.h b/xc/extras/Mesa/src/swrast/s_aaline.h
index f609d635f..41e7e5fd4 100644
--- a/xc/extras/Mesa/src/swrast/s_aaline.h
+++ b/xc/extras/Mesa/src/swrast/s_aaline.h
@@ -1,4 +1,3 @@
-/* $Id: s_aaline.h,v 1.1.1.1 2002/10/22 13:06:56 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_aalinetemp.h b/xc/extras/Mesa/src/swrast/s_aalinetemp.h
index bd675f365..19a77915a 100644
--- a/xc/extras/Mesa/src/swrast/s_aalinetemp.h
+++ b/xc/extras/Mesa/src/swrast/s_aalinetemp.h
@@ -1,4 +1,3 @@
-/* $Id: s_aalinetemp.h,v 1.1.1.1 2002/10/22 13:06:52 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_aatriangle.c b/xc/extras/Mesa/src/swrast/s_aatriangle.c
index e58e93b7e..a22c773b8 100644
--- a/xc/extras/Mesa/src/swrast/s_aatriangle.c
+++ b/xc/extras/Mesa/src/swrast/s_aatriangle.c
@@ -1,4 +1,3 @@
-/* $Id: s_aatriangle.c,v 1.1.1.1 2002/10/22 13:06:45 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_aatriangle.h b/xc/extras/Mesa/src/swrast/s_aatriangle.h
index 5e8619067..747fee429 100644
--- a/xc/extras/Mesa/src/swrast/s_aatriangle.h
+++ b/xc/extras/Mesa/src/swrast/s_aatriangle.h
@@ -1,4 +1,3 @@
-/* $Id: s_aatriangle.h,v 1.1.1.1 2002/10/22 13:06:45 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_aatritemp.h b/xc/extras/Mesa/src/swrast/s_aatritemp.h
index 0b2e073de..adacb48b8 100644
--- a/xc/extras/Mesa/src/swrast/s_aatritemp.h
+++ b/xc/extras/Mesa/src/swrast/s_aatritemp.h
@@ -1,4 +1,3 @@
-/* $Id: s_aatritemp.h,v 1.1.1.1 2002/10/22 13:06:51 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_accum.c b/xc/extras/Mesa/src/swrast/s_accum.c
index b93f8379e..1374ec860 100644
--- a/xc/extras/Mesa/src/swrast/s_accum.c
+++ b/xc/extras/Mesa/src/swrast/s_accum.c
@@ -1,4 +1,3 @@
-/* $Id: s_accum.c,v 1.1.1.1 2002/10/22 13:06:55 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_accum.h b/xc/extras/Mesa/src/swrast/s_accum.h
index 24287a9e3..faa3ccd41 100644
--- a/xc/extras/Mesa/src/swrast/s_accum.h
+++ b/xc/extras/Mesa/src/swrast/s_accum.h
@@ -1,4 +1,3 @@
-/* $Id: s_accum.h,v 1.1.1.1 2002/10/22 13:06:55 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_alpha.c b/xc/extras/Mesa/src/swrast/s_alpha.c
index 0d6353ec0..5be735630 100644
--- a/xc/extras/Mesa/src/swrast/s_alpha.c
+++ b/xc/extras/Mesa/src/swrast/s_alpha.c
@@ -1,4 +1,3 @@
-/* $Id: s_alpha.c,v 1.1.1.1 2002/10/22 13:06:58 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_alpha.h b/xc/extras/Mesa/src/swrast/s_alpha.h
index 63e872c08..b0480c78a 100644
--- a/xc/extras/Mesa/src/swrast/s_alpha.h
+++ b/xc/extras/Mesa/src/swrast/s_alpha.h
@@ -1,4 +1,3 @@
-/* $Id: s_alpha.h,v 1.1.1.1 2002/10/22 13:06:58 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_alphabuf.c b/xc/extras/Mesa/src/swrast/s_alphabuf.c
index ee1c15933..81b3a3dc9 100644
--- a/xc/extras/Mesa/src/swrast/s_alphabuf.c
+++ b/xc/extras/Mesa/src/swrast/s_alphabuf.c
@@ -1,4 +1,3 @@
-/* $Id: s_alphabuf.c,v 1.1.1.1 2002/10/22 13:06:44 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_alphabuf.h b/xc/extras/Mesa/src/swrast/s_alphabuf.h
index 63bd2a05b..531188f55 100644
--- a/xc/extras/Mesa/src/swrast/s_alphabuf.h
+++ b/xc/extras/Mesa/src/swrast/s_alphabuf.h
@@ -1,4 +1,3 @@
-/* $Id: s_alphabuf.h,v 1.1.1.1 2002/10/22 13:06:44 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_bitmap.c b/xc/extras/Mesa/src/swrast/s_bitmap.c
index 2cb088369..37ad80c92 100644
--- a/xc/extras/Mesa/src/swrast/s_bitmap.c
+++ b/xc/extras/Mesa/src/swrast/s_bitmap.c
@@ -1,4 +1,3 @@
-/* $Id: s_bitmap.c,v 1.1.1.1 2002/10/22 13:06:54 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_blend.c b/xc/extras/Mesa/src/swrast/s_blend.c
index ad6764f16..c2024fecd 100644
--- a/xc/extras/Mesa/src/swrast/s_blend.c
+++ b/xc/extras/Mesa/src/swrast/s_blend.c
@@ -1,4 +1,3 @@
-/* $Id: s_blend.c,v 1.1.1.1 2002/10/22 13:06:41 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_blend.h b/xc/extras/Mesa/src/swrast/s_blend.h
index 1882b18e2..569bc2591 100644
--- a/xc/extras/Mesa/src/swrast/s_blend.h
+++ b/xc/extras/Mesa/src/swrast/s_blend.h
@@ -1,4 +1,3 @@
-/* $Id: s_blend.h,v 1.1.1.1 2002/10/22 13:06:41 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_buffers.c b/xc/extras/Mesa/src/swrast/s_buffers.c
index 59524ba09..db27fdfdc 100644
--- a/xc/extras/Mesa/src/swrast/s_buffers.c
+++ b/xc/extras/Mesa/src/swrast/s_buffers.c
@@ -1,4 +1,3 @@
-/* $Id: s_buffers.c,v 1.1.1.1 2002/10/22 13:06:40 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_context.c b/xc/extras/Mesa/src/swrast/s_context.c
index 042797d08..c32e7fc62 100644
--- a/xc/extras/Mesa/src/swrast/s_context.c
+++ b/xc/extras/Mesa/src/swrast/s_context.c
@@ -1,8 +1,7 @@
-/* $Id: s_context.c,v 1.1.1.1 2002/10/22 13:06:44 alanh Exp $ */
/*
* Mesa 3-D graphics library
- * Version: 4.0.3
+ * Version: 4.0.4
*
* Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
*
@@ -527,6 +526,25 @@ _swrast_GetDeviceDriverReference( GLcontext *ctx )
return &swrast->Driver;
}
+
+void
+_swrast_render_start( GLcontext *ctx )
+{
+ SWcontext *swrast = SWRAST_CONTEXT(ctx);
+ if (swrast->Driver.SpanRenderStart)
+ swrast->Driver.SpanRenderStart( ctx );
+}
+
+void
+_swrast_render_finish( GLcontext *ctx )
+{
+ SWcontext *swrast = SWRAST_CONTEXT(ctx);
+ _swrast_flush(ctx);
+ if (swrast->Driver.SpanRenderFinish)
+ swrast->Driver.SpanRenderFinish( ctx );
+}
+
+
#define SWRAST_DEBUG_VERTICES 0
void
@@ -561,3 +579,5 @@ _swrast_print_vertex( GLcontext *ctx, const SWvertex *v )
fprintf(stderr, "\n");
}
}
+
+
diff --git a/xc/extras/Mesa/src/swrast/s_context.h b/xc/extras/Mesa/src/swrast/s_context.h
index 79081b809..e256a2275 100644
--- a/xc/extras/Mesa/src/swrast/s_context.h
+++ b/xc/extras/Mesa/src/swrast/s_context.h
@@ -1,4 +1,3 @@
-/* $Id: s_context.h,v 1.1.1.1 2002/10/22 13:06:45 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_copypix.c b/xc/extras/Mesa/src/swrast/s_copypix.c
index 10c66ef89..d9b575dfc 100644
--- a/xc/extras/Mesa/src/swrast/s_copypix.c
+++ b/xc/extras/Mesa/src/swrast/s_copypix.c
@@ -1,4 +1,3 @@
-/* $Id: s_copypix.c,v 1.1.1.1 2002/10/22 13:06:52 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_depth.c b/xc/extras/Mesa/src/swrast/s_depth.c
index 76ef0d9cb..a07e2f10b 100644
--- a/xc/extras/Mesa/src/swrast/s_depth.c
+++ b/xc/extras/Mesa/src/swrast/s_depth.c
@@ -1,4 +1,3 @@
-/* $Id: s_depth.c,v 1.1.1.1 2002/10/22 13:06:45 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_depth.h b/xc/extras/Mesa/src/swrast/s_depth.h
index 9f04d727b..3b4c9128c 100644
--- a/xc/extras/Mesa/src/swrast/s_depth.h
+++ b/xc/extras/Mesa/src/swrast/s_depth.h
@@ -1,4 +1,3 @@
-/* $Id: s_depth.h,v 1.1.1.1 2002/10/22 13:06:46 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_drawpix.c b/xc/extras/Mesa/src/swrast/s_drawpix.c
index 7f5ed8077..952e13fd3 100644
--- a/xc/extras/Mesa/src/swrast/s_drawpix.c
+++ b/xc/extras/Mesa/src/swrast/s_drawpix.c
@@ -1,4 +1,3 @@
-/* $Id: s_drawpix.c,v 1.1.1.1 2002/10/22 13:06:58 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_drawpix.h b/xc/extras/Mesa/src/swrast/s_drawpix.h
index 735a203cd..265d3c60a 100644
--- a/xc/extras/Mesa/src/swrast/s_drawpix.h
+++ b/xc/extras/Mesa/src/swrast/s_drawpix.h
@@ -1,4 +1,3 @@
-/* $Id: s_drawpix.h,v 1.1.1.1 2002/10/22 13:06:58 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_feedback.c b/xc/extras/Mesa/src/swrast/s_feedback.c
index 41cff05d4..0927cd9a9 100644
--- a/xc/extras/Mesa/src/swrast/s_feedback.c
+++ b/xc/extras/Mesa/src/swrast/s_feedback.c
@@ -1,4 +1,3 @@
-/* $Id: s_feedback.c,v 1.1.1.1 2002/10/22 13:06:44 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_feedback.h b/xc/extras/Mesa/src/swrast/s_feedback.h
index 70fba1bed..3a3b0557a 100644
--- a/xc/extras/Mesa/src/swrast/s_feedback.h
+++ b/xc/extras/Mesa/src/swrast/s_feedback.h
@@ -1,4 +1,3 @@
-/* $Id: s_feedback.h,v 1.1.1.1 2002/10/22 13:06:44 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_fog.c b/xc/extras/Mesa/src/swrast/s_fog.c
index b7e880528..5070dddea 100644
--- a/xc/extras/Mesa/src/swrast/s_fog.c
+++ b/xc/extras/Mesa/src/swrast/s_fog.c
@@ -1,4 +1,3 @@
-/* $Id: s_fog.c,v 1.1.1.1 2002/10/22 13:06:41 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_fog.h b/xc/extras/Mesa/src/swrast/s_fog.h
index a3c35759c..1f5fffa56 100644
--- a/xc/extras/Mesa/src/swrast/s_fog.h
+++ b/xc/extras/Mesa/src/swrast/s_fog.h
@@ -1,4 +1,3 @@
-/* $Id: s_fog.h,v 1.1.1.1 2002/10/22 13:06:41 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_histogram.c b/xc/extras/Mesa/src/swrast/s_histogram.c
index 2d039ca7c..761bd11e8 100644
--- a/xc/extras/Mesa/src/swrast/s_histogram.c
+++ b/xc/extras/Mesa/src/swrast/s_histogram.c
@@ -1,4 +1,3 @@
-/* $Id: s_histogram.c,v 1.1.1.1 2002/10/22 13:06:39 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_histogram.h b/xc/extras/Mesa/src/swrast/s_histogram.h
index f1ad2c510..5f7115c1f 100644
--- a/xc/extras/Mesa/src/swrast/s_histogram.h
+++ b/xc/extras/Mesa/src/swrast/s_histogram.h
@@ -1,4 +1,3 @@
-/* $Id: s_histogram.h,v 1.1.1.1 2002/10/22 13:06:39 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_imaging.c b/xc/extras/Mesa/src/swrast/s_imaging.c
index 495ef3197..d334b2e65 100644
--- a/xc/extras/Mesa/src/swrast/s_imaging.c
+++ b/xc/extras/Mesa/src/swrast/s_imaging.c
@@ -1,4 +1,3 @@
-/* $Id: s_imaging.c,v 1.1.1.1 2002/10/22 13:06:48 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_lines.c b/xc/extras/Mesa/src/swrast/s_lines.c
index ec8c343e3..f68266bec 100644
--- a/xc/extras/Mesa/src/swrast/s_lines.c
+++ b/xc/extras/Mesa/src/swrast/s_lines.c
@@ -1,4 +1,3 @@
-/* $Id: s_lines.c,v 1.1.1.1 2002/10/22 13:06:48 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_lines.h b/xc/extras/Mesa/src/swrast/s_lines.h
index a88a4dfbc..5372b99b9 100644
--- a/xc/extras/Mesa/src/swrast/s_lines.h
+++ b/xc/extras/Mesa/src/swrast/s_lines.h
@@ -1,4 +1,3 @@
-/* $Id: s_lines.h,v 1.1.1.1 2002/10/22 13:06:48 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_linetemp.h b/xc/extras/Mesa/src/swrast/s_linetemp.h
index c5e7984c5..fb0bebbcb 100644
--- a/xc/extras/Mesa/src/swrast/s_linetemp.h
+++ b/xc/extras/Mesa/src/swrast/s_linetemp.h
@@ -1,8 +1,7 @@
-/* $Id: s_linetemp.h,v 1.1.1.1 2002/10/22 13:06:55 alanh Exp $ */
/*
* Mesa 3-D graphics library
- * Version: 4.0.2
+ * Version: 4.0.5
*
* Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
*
@@ -231,8 +230,8 @@
zPtr = (DEPTH_TYPE *) _mesa_zbuffer_address(ctx, x0, y0);
# endif
if (depthBits <= 16) {
- z0 = FloatToFixed(vert0->win[2]);
- z1 = FloatToFixed(vert1->win[2]);
+ z0 = FloatToFixed(vert0->win[2]) + FIXED_HALF;
+ z1 = FloatToFixed(vert1->win[2]) + FIXED_HALF;
}
else {
z0 = (int) vert0->win[2];
diff --git a/xc/extras/Mesa/src/swrast/s_logic.c b/xc/extras/Mesa/src/swrast/s_logic.c
index 3521418bf..b6c9aacf4 100644
--- a/xc/extras/Mesa/src/swrast/s_logic.c
+++ b/xc/extras/Mesa/src/swrast/s_logic.c
@@ -1,4 +1,3 @@
-/* $Id: s_logic.c,v 1.1.1.1 2002/10/22 13:06:51 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_logic.h b/xc/extras/Mesa/src/swrast/s_logic.h
index 8ac68f830..8cb0268a2 100644
--- a/xc/extras/Mesa/src/swrast/s_logic.h
+++ b/xc/extras/Mesa/src/swrast/s_logic.h
@@ -1,4 +1,3 @@
-/* $Id: s_logic.h,v 1.1.1.1 2002/10/22 13:06:51 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_masking.c b/xc/extras/Mesa/src/swrast/s_masking.c
index d4d57140d..c9f4c1bf2 100644
--- a/xc/extras/Mesa/src/swrast/s_masking.c
+++ b/xc/extras/Mesa/src/swrast/s_masking.c
@@ -1,4 +1,3 @@
-/* $Id: s_masking.c,v 1.1.1.1 2002/10/22 13:06:44 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_masking.h b/xc/extras/Mesa/src/swrast/s_masking.h
index f79acf413..5c2bd847a 100644
--- a/xc/extras/Mesa/src/swrast/s_masking.h
+++ b/xc/extras/Mesa/src/swrast/s_masking.h
@@ -1,4 +1,3 @@
-/* $Id: s_masking.h,v 1.1.1.1 2002/10/22 13:06:44 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_pb.c b/xc/extras/Mesa/src/swrast/s_pb.c
index a0da3a6b3..e6abb9b66 100644
--- a/xc/extras/Mesa/src/swrast/s_pb.c
+++ b/xc/extras/Mesa/src/swrast/s_pb.c
@@ -1,4 +1,3 @@
-/* $Id: s_pb.c,v 1.1.1.1 2002/10/22 13:06:53 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_pb.h b/xc/extras/Mesa/src/swrast/s_pb.h
index 72d2df353..70e58cc2b 100644
--- a/xc/extras/Mesa/src/swrast/s_pb.h
+++ b/xc/extras/Mesa/src/swrast/s_pb.h
@@ -1,4 +1,3 @@
-/* $Id: s_pb.h,v 1.1.1.1 2002/10/22 13:06:53 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_pixeltex.c b/xc/extras/Mesa/src/swrast/s_pixeltex.c
index f52972ff7..7990f4ea4 100644
--- a/xc/extras/Mesa/src/swrast/s_pixeltex.c
+++ b/xc/extras/Mesa/src/swrast/s_pixeltex.c
@@ -1,4 +1,3 @@
-/* $Id: s_pixeltex.c,v 1.1.1.1 2002/10/22 13:06:56 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_pixeltex.h b/xc/extras/Mesa/src/swrast/s_pixeltex.h
index 7d1d8047c..a28e58011 100644
--- a/xc/extras/Mesa/src/swrast/s_pixeltex.h
+++ b/xc/extras/Mesa/src/swrast/s_pixeltex.h
@@ -1,4 +1,3 @@
-/* $Id: s_pixeltex.h,v 1.1.1.1 2002/10/22 13:06:56 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_points.c b/xc/extras/Mesa/src/swrast/s_points.c
index 75f4b7811..679d0232a 100644
--- a/xc/extras/Mesa/src/swrast/s_points.c
+++ b/xc/extras/Mesa/src/swrast/s_points.c
@@ -1,4 +1,3 @@
-/* $Id: s_points.c,v 1.1.1.1 2002/10/22 13:06:58 alanh Exp $ */
/*
* Mesa 3-D graphics library
@@ -46,7 +45,6 @@
#define SPECULAR 0x8
#define LARGE 0x10
#define ATTENUATE 0x20
-#define SPRITE 0x40
/*
@@ -145,19 +143,6 @@
#include "s_pointtemp.h"
-/*
- * Sprite (textured point)
- */
-#define FLAGS (RGBA | TEXTURE | SPRITE)
-#define NAME sprite_point
-#include "s_pointtemp.h"
-
-
-#define FLAGS (RGBA | ATTENUATE | TEXTURE | SPRITE)
-#define NAME atten_sprite_point
-#include "s_pointtemp.h"
-
-
void _swrast_add_spec_terms_point( GLcontext *ctx,
const SWvertex *v0 )
@@ -202,14 +187,7 @@ _swrast_choose_point( GLcontext *ctx )
GLboolean rgbMode = ctx->Visual.rgbMode;
if (ctx->RenderMode==GL_RENDER) {
- if (ctx->Point.SpriteMode) {
- /* XXX this might not be good enough */
- if (ctx->Point._Attenuated)
- USE(atten_sprite_point);
- else
- USE(sprite_point);
- }
- else if (ctx->Point.SmoothFlag) {
+ if (ctx->Point.SmoothFlag) {
/* Smooth points */
if (rgbMode) {
if (ctx->Point._Attenuated) {
diff --git a/xc/extras/Mesa/src/swrast/s_points.h b/xc/extras/Mesa/src/swrast/s_points.h
index 0b2ec5ba6..e22c51a1c 100644
--- a/xc/extras/Mesa/src/swrast/s_points.h
+++ b/xc/extras/Mesa/src/swrast/s_points.h
@@ -1,4 +1,3 @@
-/* $Id: s_points.h,v 1.1.1.1 2002/10/22 13:06:58 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_pointtemp.h b/xc/extras/Mesa/src/swrast/s_pointtemp.h
index efef56bc0..60d249fe0 100644
--- a/xc/extras/Mesa/src/swrast/s_pointtemp.h
+++ b/xc/extras/Mesa/src/swrast/s_pointtemp.h
@@ -1,10 +1,9 @@
-/* $Id: s_pointtemp.h,v 1.1.1.1 2002/10/22 13:06:54 alanh Exp $ */
/*
* Mesa 3-D graphics library
- * Version: 3.5
+ * Version: 4.0.5
*
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -36,7 +35,6 @@
* SPECULAR = do separate specular color
* LARGE = do points with diameter > 1 pixel
* ATTENUATE = compute point size attenuation
- * SPRITE = GL_MESA_sprite_point
*
* Notes: LARGE and ATTENUATE are exclusive of each other.
* TEXTURE requires RGBA
@@ -64,7 +62,7 @@ NAME ( GLcontext *ctx, const SWvertex *vert )
SWcontext *swrast = SWRAST_CONTEXT(ctx);
struct pixel_buffer *PB = swrast->PB;
- const GLint z = (GLint) (vert->win[2]);
+ const GLint z = (GLint) (vert->win[2] + 0.5F);
#if FLAGS & RGBA
const GLchan red = vert->color[0];
@@ -127,62 +125,7 @@ NAME ( GLcontext *ctx, const SWvertex *vert )
return;
}
-#if FLAGS & SPRITE
- {
- SWcontext *swctx = SWRAST_CONTEXT(ctx);
- const GLfloat radius = 0.5F * vert->pointSize; /* XXX threshold, alpha */
- SWvertex v0, v1, v2, v3;
- GLuint unit;
-
- (void) red;
- (void) green;
- (void) blue;
- (void) alpha;
- (void) z;
-
- /* lower left corner */
- v0 = *vert;
- v0.win[0] -= radius;
- v0.win[1] -= radius;
-
- /* lower right corner */
- v1 = *vert;
- v1.win[0] += radius;
- v1.win[1] -= radius;
-
- /* upper right corner */
- v2 = *vert;
- v2.win[0] += radius;
- v2.win[1] += radius;
-
- /* upper left corner */
- v3 = *vert;
- v3.win[0] -= radius;
- v3.win[1] += radius;
-
- for (unit = 0; unit < ctx->Const.MaxTextureUnits; unit++) {
- if (ctx->Texture.Unit[unit]._ReallyEnabled) {
- v0.texcoord[unit][0] = 0.0;
- v0.texcoord[unit][1] = 0.0;
- v1.texcoord[unit][0] = 1.0;
- v1.texcoord[unit][1] = 0.0;
- v2.texcoord[unit][0] = 1.0;
- v2.texcoord[unit][1] = 1.0;
- v3.texcoord[unit][0] = 0.0;
- v3.texcoord[unit][1] = 1.0;
- }
- }
-
- /* XXX if radius < threshold, attenuate alpha? */
-
- /* XXX need to implement clipping!!! */
-
- /* render */
- swctx->Triangle(ctx, &v0, &v1, &v2);
- swctx->Triangle(ctx, &v0, &v2, &v3);
- }
-
-#elif FLAGS & (LARGE | ATTENUATE | SMOOTH)
+#if FLAGS & (LARGE | ATTENUATE | SMOOTH)
{
GLint x, y;
diff --git a/xc/extras/Mesa/src/swrast/s_readpix.c b/xc/extras/Mesa/src/swrast/s_readpix.c
index 666baa286..3582e979e 100644
--- a/xc/extras/Mesa/src/swrast/s_readpix.c
+++ b/xc/extras/Mesa/src/swrast/s_readpix.c
@@ -1,4 +1,3 @@
-/* $Id: s_readpix.c,v 1.1.1.1 2002/10/22 13:06:56 alanh Exp $ */
/*
* Mesa 3-D graphics library
@@ -282,8 +281,15 @@ read_fast_rgba_pixels( GLcontext *ctx,
if (0) {
#endif
GLchan *dest = (GLchan *) pixels
- + (skipRows * rowLength + skipPixels) * 4;
+ + (skipRows * rowLength + skipPixels) * 4;
GLint row;
+
+ if (packing->Invert) {
+ /* start at top and go down */
+ dest += (readHeight - 1) * rowLength * 4;
+ rowLength = -rowLength;
+ }
+
for (row=0; row<readHeight; row++) {
(*swrast->Driver.ReadRGBASpan)(ctx, readWidth, srcX, srcY,
(GLchan (*)[4]) dest);
diff --git a/xc/extras/Mesa/src/swrast/s_scissor.c b/xc/extras/Mesa/src/swrast/s_scissor.c
index 3558b91d0..619004214 100644
--- a/xc/extras/Mesa/src/swrast/s_scissor.c
+++ b/xc/extras/Mesa/src/swrast/s_scissor.c
@@ -1,4 +1,3 @@
-/* $Id: s_scissor.c,v 1.1.1.1 2002/10/22 13:06:51 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_scissor.h b/xc/extras/Mesa/src/swrast/s_scissor.h
index ec454e4dd..6d81f839f 100644
--- a/xc/extras/Mesa/src/swrast/s_scissor.h
+++ b/xc/extras/Mesa/src/swrast/s_scissor.h
@@ -1,4 +1,3 @@
-/* $Id: s_scissor.h,v 1.1.1.1 2002/10/22 13:06:51 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_span.c b/xc/extras/Mesa/src/swrast/s_span.c
index 375fe6a96..3f90c40a6 100644
--- a/xc/extras/Mesa/src/swrast/s_span.c
+++ b/xc/extras/Mesa/src/swrast/s_span.c
@@ -1,4 +1,3 @@
-/* $Id: s_span.c,v 1.1.1.1 2002/10/22 13:06:57 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_span.h b/xc/extras/Mesa/src/swrast/s_span.h
index 063494258..e724c5a02 100644
--- a/xc/extras/Mesa/src/swrast/s_span.h
+++ b/xc/extras/Mesa/src/swrast/s_span.h
@@ -1,4 +1,3 @@
-/* $Id: s_span.h,v 1.1.1.1 2002/10/22 13:06:57 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_stencil.c b/xc/extras/Mesa/src/swrast/s_stencil.c
index 13ecc70da..acb273803 100644
--- a/xc/extras/Mesa/src/swrast/s_stencil.c
+++ b/xc/extras/Mesa/src/swrast/s_stencil.c
@@ -1,4 +1,3 @@
-/* $Id: s_stencil.c,v 1.1.1.1 2002/10/22 13:06:41 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_stencil.h b/xc/extras/Mesa/src/swrast/s_stencil.h
index 03e0de901..97dc5b25b 100644
--- a/xc/extras/Mesa/src/swrast/s_stencil.h
+++ b/xc/extras/Mesa/src/swrast/s_stencil.h
@@ -1,4 +1,3 @@
-/* $Id: s_stencil.h,v 1.1.1.1 2002/10/22 13:06:41 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_texstore.c b/xc/extras/Mesa/src/swrast/s_texstore.c
index 0ec021b70..053430633 100644
--- a/xc/extras/Mesa/src/swrast/s_texstore.c
+++ b/xc/extras/Mesa/src/swrast/s_texstore.c
@@ -1,10 +1,9 @@
-/* $Id: s_texstore.c,v 1.1.1.1 2002/10/22 13:06:53 alanh Exp $ */
/*
* Mesa 3-D graphics library
- * Version: 3.5
+ * Version: 4.0.4
*
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -194,7 +193,7 @@ _swrast_copy_teximage1d( GLcontext *ctx, GLenum target, GLint level,
/* GL_SGIS_generate_mipmap */
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
- _mesa_generate_mipmap(ctx, texUnit, texObj);
+ _mesa_generate_mipmap(ctx, target, texUnit, texObj);
}
}
@@ -253,7 +252,7 @@ _swrast_copy_teximage2d( GLcontext *ctx, GLenum target, GLint level,
/* GL_SGIS_generate_mipmap */
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
- _mesa_generate_mipmap(ctx, texUnit, texObj);
+ _mesa_generate_mipmap(ctx, target, texUnit, texObj);
}
}
@@ -325,7 +324,7 @@ _swrast_copy_texsubimage1d(GLcontext *ctx, GLenum target, GLint level,
/* GL_SGIS_generate_mipmap */
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
- _mesa_generate_mipmap(ctx, texUnit, texObj);
+ _mesa_generate_mipmap(ctx, target, texUnit, texObj);
}
}
@@ -401,7 +400,7 @@ _swrast_copy_texsubimage2d( GLcontext *ctx,
/* GL_SGIS_generate_mipmap */
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
- _mesa_generate_mipmap(ctx, texUnit, texObj);
+ _mesa_generate_mipmap(ctx, target, texUnit, texObj);
}
}
@@ -476,6 +475,6 @@ _swrast_copy_texsubimage3d( GLcontext *ctx,
/* GL_SGIS_generate_mipmap */
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
- _mesa_generate_mipmap(ctx, texUnit, texObj);
+ _mesa_generate_mipmap(ctx, target, texUnit, texObj);
}
}
diff --git a/xc/extras/Mesa/src/swrast/s_texture.c b/xc/extras/Mesa/src/swrast/s_texture.c
index 66672a94f..a904f101d 100644
--- a/xc/extras/Mesa/src/swrast/s_texture.c
+++ b/xc/extras/Mesa/src/swrast/s_texture.c
@@ -1,8 +1,7 @@
-/* $Id: s_texture.c,v 1.1.1.1 2002/10/22 13:06:51 alanh Exp $ */
/*
* Mesa 3-D graphics library
- * Version: 4.0.4
+ * Version: 4.0.5
*
* Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
*
@@ -98,6 +97,7 @@
U = 1.0F - (S - (GLfloat) flr); /* flr is odd */ \
else \
U = S - (GLfloat) flr; /* flr is even */ \
+ U = (U * SIZE) - 0.5; \
I0 = IFLOOR(U); \
I1 = I0 + 1; \
if (I0 < 0) \
@@ -883,7 +883,8 @@ sample_linear_2d( GLcontext *ctx, GLuint texUnit,
* Optimized 2-D texture sampling:
* S and T wrap mode == GL_REPEAT
* GL_NEAREST min/mag filter
- * No border
+ * No border,
+ * RowStride == Width,
* Format = GL_RGB
*/
static void
@@ -924,6 +925,7 @@ opt_sample_rgb_2d( GLcontext *ctx, GLuint texUnit,
* S and T wrap mode == GL_REPEAT
* GL_NEAREST min/mag filter
* No border
+ * RowStride == Width,
* Format = GL_RGBA
*/
static void
@@ -980,7 +982,7 @@ sample_lambda_2d( GLcontext *ctx, GLuint texUnit,
switch (tObj->MagFilter) {
case GL_NEAREST:
if (tObj->WrapS == GL_REPEAT && tObj->WrapT == GL_REPEAT &&
- img->Border == 0) {
+ img->Border == 0 && img->Width == img->RowStride) {
switch (img->Format) {
case GL_RGB:
opt_sample_rgb_2d(ctx, texUnit, tObj, n, s, t, NULL,
@@ -1897,10 +1899,14 @@ sample_linear_rect(GLcontext *ctx, GLuint texUnit,
w11 = a * b ;
/* compute weighted average of samples */
- rgba[i][0] = w00 * t00[0] + w10 * t10[0] + w01 * t01[0] + w11 * t11[0];
- rgba[i][1] = w00 * t00[1] + w10 * t10[1] + w01 * t01[1] + w11 * t11[1];
- rgba[i][2] = w00 * t00[2] + w10 * t10[2] + w01 * t01[2] + w11 * t11[2];
- rgba[i][3] = w00 * t00[3] + w10 * t10[3] + w01 * t01[3] + w11 * t11[3];
+ rgba[i][0] = (GLchan)
+ (w00 * t00[0] + w10 * t10[0] + w01 * t01[0] + w11 * t11[0]);
+ rgba[i][1] = (GLchan)
+ (w00 * t00[1] + w10 * t10[1] + w01 * t01[1] + w11 * t11[1]);
+ rgba[i][2] = (GLchan)
+ (w00 * t00[2] + w10 * t10[2] + w01 * t01[2] + w11 * t11[2]);
+ rgba[i][3] = (GLchan)
+ (w00 * t00[3] + w10 * t10[3] + w01 * t01[3] + w11 * t11[3]);
}
}
@@ -2035,12 +2041,14 @@ _swrast_choose_texture_sample_func( GLcontext *ctx, GLuint texUnit,
if (t->WrapS == GL_REPEAT &&
t->WrapT == GL_REPEAT &&
t->Image[baseLevel]->Border == 0 &&
+ t->Image[baseLevel]->Width == t->Image[baseLevel]->RowStride &&
t->Image[baseLevel]->TexFormat->MesaFormat == MESA_FORMAT_RGB) {
swrast->TextureSample[texUnit] = opt_sample_rgb_2d;
}
else if (t->WrapS == GL_REPEAT &&
t->WrapT == GL_REPEAT &&
t->Image[baseLevel]->Border == 0 &&
+ t->Image[baseLevel]->Width == t->Image[baseLevel]->RowStride &&
t->Image[baseLevel]->TexFormat->MesaFormat == MESA_FORMAT_RGBA) {
swrast->TextureSample[texUnit] = opt_sample_rgba_2d;
}
@@ -2418,8 +2426,8 @@ texture_combine(const GLcontext *ctx,
GLchan dot = ((arg0[i][RCOMP]-0.5F) * (arg1[i][RCOMP]-0.5F) +
(arg0[i][GCOMP]-0.5F) * (arg1[i][GCOMP]-0.5F) +
(arg0[i][BCOMP]-0.5F) * (arg1[i][BCOMP]-0.5F))
- * 4.0F;
- dot = CLAMP(dot, 0.0, CHAN_MAXF) * RGBmult;
+ * 4.0F * RGBmult;
+ dot = CLAMP(dot, 0.0, CHAN_MAXF);
#else
GLint dot = (S_PROD((GLint)arg0[i][RCOMP] - half,
(GLint)arg1[i][RCOMP] - half) +
@@ -2427,7 +2435,8 @@ texture_combine(const GLcontext *ctx,
(GLint)arg1[i][GCOMP] - half) +
S_PROD((GLint)arg0[i][BCOMP] - half,
(GLint)arg1[i][BCOMP] - half)) >> 6;
- dot = CLAMP(dot, 0, CHAN_MAX) << RGBshift;
+ dot <<= RGBshift;
+ dot = CLAMP(dot, 0, CHAN_MAX);
#endif
rgba[i][RCOMP] = rgba[i][GCOMP] = rgba[i][BCOMP] = (GLchan) dot;
}
@@ -2597,7 +2606,7 @@ apply_texture( const GLcontext *ctx,
format = texUnit->_Current->Image[baseLevel]->Format;
- if (format==GL_COLOR_INDEX || format==GL_DEPTH_COMPONENT) {
+ if (format==GL_COLOR_INDEX || format==GL_DEPTH_COMPONENT || format==GL_YCBCR_MESA) {
format = GL_RGBA; /* XXXX a hack! */
}
diff --git a/xc/extras/Mesa/src/swrast/s_texture.h b/xc/extras/Mesa/src/swrast/s_texture.h
index c1b792094..3bd1b7eed 100644
--- a/xc/extras/Mesa/src/swrast/s_texture.h
+++ b/xc/extras/Mesa/src/swrast/s_texture.h
@@ -1,4 +1,3 @@
-/* $Id: s_texture.h,v 1.1.1.1 2002/10/22 13:06:51 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_triangle.c b/xc/extras/Mesa/src/swrast/s_triangle.c
index ad9e77926..8f035d10a 100644
--- a/xc/extras/Mesa/src/swrast/s_triangle.c
+++ b/xc/extras/Mesa/src/swrast/s_triangle.c
@@ -1,4 +1,3 @@
-/* $Id: s_triangle.c,v 1.1.1.1 2002/10/22 13:06:48 alanh Exp $ */
/*
* Mesa 3-D graphics library
@@ -1696,6 +1695,7 @@ _swrast_choose_triangle( GLcontext *ctx )
&& texObj2D->WrapS==GL_REPEAT
&& texObj2D->WrapT==GL_REPEAT
&& texImg->Border==0
+ && texImg->Width==texImg->RowStride
&& (format == MESA_FORMAT_RGB || format == MESA_FORMAT_RGBA)
&& minFilter == magFilter
&& ctx->Light.Model.ColorControl == GL_SINGLE_COLOR
diff --git a/xc/extras/Mesa/src/swrast/s_triangle.h b/xc/extras/Mesa/src/swrast/s_triangle.h
index c935cf908..4d5777480 100644
--- a/xc/extras/Mesa/src/swrast/s_triangle.h
+++ b/xc/extras/Mesa/src/swrast/s_triangle.h
@@ -1,4 +1,3 @@
-/* $Id: s_triangle.h,v 1.1.1.1 2002/10/22 13:06:48 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_trispan.h b/xc/extras/Mesa/src/swrast/s_trispan.h
index 9a85132fe..dabb20e13 100644
--- a/xc/extras/Mesa/src/swrast/s_trispan.h
+++ b/xc/extras/Mesa/src/swrast/s_trispan.h
@@ -1,4 +1,3 @@
-/* $Id: s_trispan.h,v 1.1.1.1 2002/10/22 13:06:42 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_tritemp.h b/xc/extras/Mesa/src/swrast/s_tritemp.h
index 41306fc03..7d2e01894 100644
--- a/xc/extras/Mesa/src/swrast/s_tritemp.h
+++ b/xc/extras/Mesa/src/swrast/s_tritemp.h
@@ -1,3 +1,4 @@
+
/*
* Mesa 3-D graphics library
* Version: 3.5
@@ -21,7 +22,7 @@
* 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.
*/
-/* $XFree86: xc/extras/Mesa/src/swrast/s_tritemp.h,v 1.3 2002/09/09 21:07:37 dawes Exp $ */
+/* $XFree86: xc/extras/Mesa/src/swrast/s_tritemp.h,v 1.5 2002/12/16 16:18:40 dawes Exp $ */
/*
* Triangle Rasterizer Template
@@ -210,7 +211,7 @@
if (area * bf < 0.0)
return;
- if (area == 0.0F || IS_INF_OR_NAN(area))
+ if (IS_INF_OR_NAN(area) || area == 0.0F)
return;
oneOverArea = 1.0F / area;
diff --git a/xc/extras/Mesa/src/swrast/s_zoom.c b/xc/extras/Mesa/src/swrast/s_zoom.c
index b56128147..531995a90 100644
--- a/xc/extras/Mesa/src/swrast/s_zoom.c
+++ b/xc/extras/Mesa/src/swrast/s_zoom.c
@@ -1,4 +1,3 @@
-/* $Id: s_zoom.c,v 1.1.1.1 2002/10/22 13:06:58 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_zoom.h b/xc/extras/Mesa/src/swrast/s_zoom.h
index a55223607..a195dfe1d 100644
--- a/xc/extras/Mesa/src/swrast/s_zoom.h
+++ b/xc/extras/Mesa/src/swrast/s_zoom.h
@@ -1,4 +1,3 @@
-/* $Id: s_zoom.h,v 1.1.1.1 2002/10/22 13:06:58 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/swrast.h b/xc/extras/Mesa/src/swrast/swrast.h
index 7149be8fb..830c1baee 100644
--- a/xc/extras/Mesa/src/swrast/swrast.h
+++ b/xc/extras/Mesa/src/swrast/swrast.h
@@ -1,4 +1,3 @@
-/* $Id: swrast.h,v 1.1.1.1 2002/10/22 13:06:46 alanh Exp $ */
/*
* Mesa 3-D graphics library
@@ -153,6 +152,11 @@ _swrast_Quad( GLcontext *ctx,
extern void
_swrast_flush( GLcontext *ctx );
+extern void
+_swrast_render_start( GLcontext *ctx );
+
+extern void
+_swrast_render_finish( GLcontext *ctx );
/* Tell the software rasterizer about core state changes.
*/
diff --git a/xc/extras/Mesa/src/swrast_setup/ss_context.c b/xc/extras/Mesa/src/swrast_setup/ss_context.c
index 974f18bd4..58d85faa1 100644
--- a/xc/extras/Mesa/src/swrast_setup/ss_context.c
+++ b/xc/extras/Mesa/src/swrast_setup/ss_context.c
@@ -1,4 +1,3 @@
-/* $Id: ss_context.c,v 1.1.1.1 2002/10/22 13:06:38 alanh Exp $ */
/*
* Mesa 3-D graphics library
@@ -49,7 +48,6 @@
#define _SWSETUP_NEW_RENDERINDEX (_NEW_POLYGON|_NEW_LIGHT)
-
GLboolean
_swsetup_CreateContext( GLcontext *ctx )
{
@@ -117,19 +115,13 @@ _swsetup_RenderStart( GLcontext *ctx )
swsetup->NewState = 0;
- if (swsetup->Driver.Start)
- swsetup->Driver.Start( ctx );
+ _swrast_render_start( ctx );
}
static void
_swsetup_RenderFinish( GLcontext *ctx )
{
- SScontext *swsetup = SWSETUP_CONTEXT(ctx);
-
- _swrast_flush( ctx );
-
- if (swsetup->Driver.Finish)
- swsetup->Driver.Finish( ctx );
+ _swrast_render_finish( ctx );
}
void
diff --git a/xc/extras/Mesa/src/swrast_setup/ss_context.h b/xc/extras/Mesa/src/swrast_setup/ss_context.h
index d7b595461..3174c95de 100644
--- a/xc/extras/Mesa/src/swrast_setup/ss_context.h
+++ b/xc/extras/Mesa/src/swrast_setup/ss_context.h
@@ -1,4 +1,3 @@
-/* $Id: ss_context.h,v 1.1.1.1 2002/10/22 13:06:38 alanh Exp $ */
/*
* Mesa 3-D graphics library
@@ -44,12 +43,6 @@ typedef struct {
*/
struct gl_client_array ChanColor;
struct gl_client_array ChanSecondaryColor;
-
-
- struct {
- void (*Start)( GLcontext * );
- void (*Finish)( GLcontext * );
- } Driver;
} SScontext;
#define SWSETUP_CONTEXT(ctx) ((SScontext *)ctx->swsetup_context)
diff --git a/xc/extras/Mesa/src/swrast_setup/ss_triangle.c b/xc/extras/Mesa/src/swrast_setup/ss_triangle.c
index 3a3cf1f32..700506344 100644
--- a/xc/extras/Mesa/src/swrast_setup/ss_triangle.c
+++ b/xc/extras/Mesa/src/swrast_setup/ss_triangle.c
@@ -1,4 +1,3 @@
-/* $Id: ss_triangle.c,v 1.1.1.1 2002/10/22 13:06:38 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast_setup/ss_triangle.h b/xc/extras/Mesa/src/swrast_setup/ss_triangle.h
index 655d7deab..0712a0d59 100644
--- a/xc/extras/Mesa/src/swrast_setup/ss_triangle.h
+++ b/xc/extras/Mesa/src/swrast_setup/ss_triangle.h
@@ -1,4 +1,3 @@
-/* $Id: ss_triangle.h,v 1.1.1.1 2002/10/22 13:06:38 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast_setup/ss_tritmp.h b/xc/extras/Mesa/src/swrast_setup/ss_tritmp.h
index 9801b7ab7..a0698cf77 100644
--- a/xc/extras/Mesa/src/swrast_setup/ss_tritmp.h
+++ b/xc/extras/Mesa/src/swrast_setup/ss_tritmp.h
@@ -1,4 +1,3 @@
-/* $Id: ss_tritmp.h,v 1.1.1.1 2002/10/22 13:06:39 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast_setup/ss_vb.c b/xc/extras/Mesa/src/swrast_setup/ss_vb.c
index 8f5d9161f..05d6e570b 100644
--- a/xc/extras/Mesa/src/swrast_setup/ss_vb.c
+++ b/xc/extras/Mesa/src/swrast_setup/ss_vb.c
@@ -1,4 +1,3 @@
-/* $Id: ss_vb.c,v 1.1.1.1 2002/10/22 13:06:38 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast_setup/ss_vb.h b/xc/extras/Mesa/src/swrast_setup/ss_vb.h
index c9c1f8cd8..30cbb363c 100644
--- a/xc/extras/Mesa/src/swrast_setup/ss_vb.h
+++ b/xc/extras/Mesa/src/swrast_setup/ss_vb.h
@@ -1,4 +1,3 @@
-/* $Id: ss_vb.h,v 1.1.1.1 2002/10/22 13:06:38 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast_setup/ss_vbtmp.h b/xc/extras/Mesa/src/swrast_setup/ss_vbtmp.h
index c2a48aca1..15277cfd2 100644
--- a/xc/extras/Mesa/src/swrast_setup/ss_vbtmp.h
+++ b/xc/extras/Mesa/src/swrast_setup/ss_vbtmp.h
@@ -1,4 +1,3 @@
-/* $Id: ss_vbtmp.h,v 1.1.1.1 2002/10/22 13:06:38 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast_setup/swrast_setup.h b/xc/extras/Mesa/src/swrast_setup/swrast_setup.h
index 16dde40e9..802212e88 100644
--- a/xc/extras/Mesa/src/swrast_setup/swrast_setup.h
+++ b/xc/extras/Mesa/src/swrast_setup/swrast_setup.h
@@ -1,4 +1,3 @@
-/* $Id: swrast_setup.h,v 1.1.1.1 2002/10/22 13:06:39 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/texformat.c b/xc/extras/Mesa/src/texformat.c
index a55d9ddb0..d811f742d 100644
--- a/xc/extras/Mesa/src/texformat.c
+++ b/xc/extras/Mesa/src/texformat.c
@@ -1,9 +1,9 @@
/*
* Mesa 3-D graphics library
- * Version: 3.5
+ * Version: 4.0.4
*
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -22,8 +22,9 @@
* 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.
*
- * Author:
+ * Authors:
* Gareth Hughes <gareth@valinux.com>
+ * Brian Paul
*/
#ifdef PC_HEADER
@@ -437,6 +438,45 @@ const struct gl_texture_format _mesa_texformat_ci8 = {
};
+const struct gl_texture_format _mesa_texformat_ycbcr = {
+ MESA_FORMAT_YCBCR, /* MesaFormat */
+ GL_YCBCR_MESA, /* BaseFormat */
+ GL_UNSIGNED_SHORT_8_8_MESA, /* Type */
+ 0, /* RedBits */
+ 0, /* GreenBits */
+ 0, /* BlueBits */
+ 0, /* AlphaBits */
+ 0, /* LuminanceBits */
+ 0, /* IntensityBits */
+ 0, /* IndexBits */
+ 0, /* DepthBits */
+ 2, /* TexelBytes */
+ fetch_1d_texel_ycbcr, /* FetchTexel1D */
+ fetch_2d_texel_ycbcr, /* FetchTexel2D */
+ fetch_3d_texel_ycbcr, /* FetchTexel3D */
+};
+
+
+const struct gl_texture_format _mesa_texformat_ycbcr_rev = {
+ MESA_FORMAT_YCBCR_REV, /* MesaFormat */
+ GL_YCBCR_MESA, /* BaseFormat */
+ GL_UNSIGNED_SHORT_8_8_REV_MESA, /* Type */
+ 0, /* RedBits */
+ 0, /* GreenBits */
+ 0, /* BlueBits */
+ 0, /* AlphaBits */
+ 0, /* LuminanceBits */
+ 0, /* IntensityBits */
+ 0, /* IndexBits */
+ 0, /* DepthBits */
+ 2, /* TexelBytes */
+ fetch_1d_texel_ycbcr_rev, /* FetchTexel1D */
+ fetch_2d_texel_ycbcr_rev, /* FetchTexel2D */
+ fetch_3d_texel_ycbcr_rev, /* FetchTexel3D */
+};
+
+
+
/* =============================================================
* Null format:
*/
@@ -589,6 +629,12 @@ _mesa_choose_tex_format( GLcontext *ctx, GLint internalFormat,
_mesa_problem(ctx, "texture compression extension not enabled");
return &_mesa_texformat_rgba;
+ case GL_YCBCR_MESA:
+ if (type == GL_UNSIGNED_SHORT_8_8_MESA)
+ return &_mesa_texformat_ycbcr;
+ else
+ return &_mesa_texformat_ycbcr_rev;
+
default:
_mesa_problem(ctx, "unexpected format in _mesa_choose_tex_format()");
printf("intformat = %d %x\n", internalFormat, internalFormat);
diff --git a/xc/extras/Mesa/src/texformat.h b/xc/extras/Mesa/src/texformat.h
index 72b473cdf..d8ba56ae1 100644
--- a/xc/extras/Mesa/src/texformat.h
+++ b/xc/extras/Mesa/src/texformat.h
@@ -1,9 +1,9 @@
/*
* Mesa 3-D graphics library
- * Version: 3.5
+ * Version: 4.0.4
*
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -22,8 +22,9 @@
* 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.
*
- * Author:
+ * Authors:
* Gareth Hughes <gareth@valinux.com>
+ * Brian Paul
*/
#ifndef TEXFORMAT_H
@@ -32,8 +33,7 @@
#include "mtypes.h"
-/* The Mesa internal texture image types. These will be set to their
- * default value, but may be changed by drivers as required.
+/* The Mesa internal texture image types.
*/
enum _format {
/* Hardware-friendly formats. Drivers can override the default
@@ -60,6 +60,8 @@ enum _format {
MESA_FORMAT_L8, /* LLLL LLLL */
MESA_FORMAT_I8, /* IIII IIII */
MESA_FORMAT_CI8, /* CCCC CCCC */
+ MESA_FORMAT_YCBCR, /* YYYY YYYY UorV UorV */
+ MESA_FORMAT_YCBCR_REV, /* UorV UorV YYYY YYYY */
/* Generic GLchan-based formats. These are the default formats used
* by the software rasterizer and, unless the driver overrides the
@@ -90,11 +92,11 @@ _mesa_choose_tex_format( GLcontext *ctx, GLint internalFormat,
GLenum format, GLenum type );
extern GLint
-_mesa_base_compressed_texformat(GLcontext *ctx, GLint intFormat);
+_mesa_base_compressed_texformat( GLcontext *ctx, GLint intFormat );
extern GLint
-_mesa_compressed_texture_size(GLcontext *ctx,
- const struct gl_texture_image *texImage);
+_mesa_compressed_texture_size( GLcontext *ctx,
+ const struct gl_texture_image *texImage );
/* The default formats, GLchan per component:
@@ -122,6 +124,8 @@ extern const struct gl_texture_format _mesa_texformat_a8;
extern const struct gl_texture_format _mesa_texformat_l8;
extern const struct gl_texture_format _mesa_texformat_i8;
extern const struct gl_texture_format _mesa_texformat_ci8;
+extern const struct gl_texture_format _mesa_texformat_ycbcr;
+extern const struct gl_texture_format _mesa_texformat_ycbcr_rev;
/* The null format:
*/
diff --git a/xc/extras/Mesa/src/texformat_tmp.h b/xc/extras/Mesa/src/texformat_tmp.h
index cc788d658..56160ee2c 100644
--- a/xc/extras/Mesa/src/texformat_tmp.h
+++ b/xc/extras/Mesa/src/texformat_tmp.h
@@ -1,10 +1,9 @@
-/* $Id: texformat_tmp.h,v 1.1.1.1 2002/10/22 13:05:22 alanh Exp $ */
/*
* Mesa 3-D graphics library
- * Version: 3.5
+ * Version: 4.0.4
*
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -23,8 +22,9 @@
* 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.
*
- * Author:
+ * Authors:
* Gareth Hughes <gareth@valinux.com>
+ * Brian Paul
*/
#if DIM == 1
@@ -43,13 +43,13 @@
#elif DIM == 2
#define CHAN_SRC( t, i, j, k, sz ) \
- ((GLchan *)(t)->Data + ((t)->Width * (j) + (i)) * (sz))
+ ((GLchan *)(t)->Data + ((t)->RowStride * (j) + (i)) * (sz))
#define UBYTE_SRC( t, i, j, k, sz ) \
- ((GLubyte *)(t)->Data + ((t)->Width * (j) + (i)) * (sz))
+ ((GLubyte *)(t)->Data + ((t)->RowStride * (j) + (i)) * (sz))
#define USHORT_SRC( t, i, j, k ) \
- ((GLushort *)(t)->Data + ((t)->Width * (j) + (i)))
+ ((GLushort *)(t)->Data + ((t)->RowStride * (j) + (i)))
#define FLOAT_SRC( t, i, j, k ) \
- ((GLfloat *)(t)->Data + ((t)->Width * (j) + (i)))
+ ((GLfloat *)(t)->Data + ((t)->RowStride * (j) + (i)))
#define FETCH(x) fetch_2d_texel_##x
@@ -57,16 +57,16 @@
#define CHAN_SRC( t, i, j, k, sz ) \
(GLchan *)(t)->Data + (((t)->Height * (k) + (j)) * \
- (t)->Width + (i)) * (sz)
+ (t)->RowStride + (i)) * (sz)
#define UBYTE_SRC( t, i, j, k, sz ) \
((GLubyte *)(t)->Data + (((t)->Height * (k) + (j)) * \
- (t)->Width + (i)) * (sz))
+ (t)->RowStride + (i)) * (sz))
#define USHORT_SRC( t, i, j, k ) \
((GLushort *)(t)->Data + (((t)->Height * (k) + (j)) * \
- (t)->Width + (i)))
+ (t)->RowStride + (i)))
#define FLOAT_SRC( t, i, j, k ) \
((GLfloat *)(t)->Data + (((t)->Height * (k) + (j)) * \
- (t)->Width + (i)))
+ (t)->RowStride + (i)))
#define FETCH(x) fetch_3d_texel_##x
@@ -191,7 +191,8 @@ static void FETCH(rgb565)( const struct gl_texture_image *texImage,
GLint i, GLint j, GLint k, GLvoid *texel )
{
const GLushort *src = USHORT_SRC( texImage, i, j, k );
- GLchan *rgba = (GLchan *) texel; GLushort s = *src;
+ const GLushort s = *src;
+ GLchan *rgba = (GLchan *) texel;
rgba[RCOMP] = UBYTE_TO_CHAN( ((s >> 8) & 0xf8) * 255 / 0xf8 );
rgba[GCOMP] = UBYTE_TO_CHAN( ((s >> 3) & 0xfc) * 255 / 0xfc );
rgba[BCOMP] = UBYTE_TO_CHAN( ((s << 3) & 0xf8) * 255 / 0xf8 );
@@ -202,7 +203,8 @@ static void FETCH(argb4444)( const struct gl_texture_image *texImage,
GLint i, GLint j, GLint k, GLvoid *texel )
{
const GLushort *src = USHORT_SRC( texImage, i, j, k );
- GLchan *rgba = (GLchan *) texel; GLushort s = *src;
+ const GLushort s = *src;
+ GLchan *rgba = (GLchan *) texel;
rgba[RCOMP] = UBYTE_TO_CHAN( ((s >> 8) & 0xf) * 255 / 0xf );
rgba[GCOMP] = UBYTE_TO_CHAN( ((s >> 4) & 0xf) * 255 / 0xf );
rgba[BCOMP] = UBYTE_TO_CHAN( ((s ) & 0xf) * 255 / 0xf );
@@ -213,7 +215,8 @@ static void FETCH(argb1555)( const struct gl_texture_image *texImage,
GLint i, GLint j, GLint k, GLvoid *texel )
{
const GLushort *src = USHORT_SRC( texImage, i, j, k );
- GLchan *rgba = (GLchan *) texel; GLushort s = *src;
+ const GLushort s = *src;
+ GLchan *rgba = (GLchan *) texel;
rgba[RCOMP] = UBYTE_TO_CHAN( ((s >> 10) & 0x1f) * 255 / 0x1f );
rgba[GCOMP] = UBYTE_TO_CHAN( ((s >> 5) & 0x1f) * 255 / 0x1f );
rgba[BCOMP] = UBYTE_TO_CHAN( ((s ) & 0x1f) * 255 / 0x1f );
@@ -235,7 +238,8 @@ static void FETCH(rgb332)( const struct gl_texture_image *texImage,
GLint i, GLint j, GLint k, GLvoid *texel )
{
const GLubyte *src = UBYTE_SRC( texImage, i, j, k, 1 );
- GLchan *rgba = (GLchan *) texel; GLubyte s = *src;
+ const GLubyte s = *src;
+ GLchan *rgba = (GLchan *) texel;
rgba[RCOMP] = UBYTE_TO_CHAN( ((s ) & 0xe0) * 255 / 0xe0 );
rgba[GCOMP] = UBYTE_TO_CHAN( ((s << 3) & 0xe0) * 255 / 0xe0 );
rgba[BCOMP] = UBYTE_TO_CHAN( ((s << 5) & 0xc0) * 255 / 0xc0 );
@@ -283,6 +287,66 @@ static void FETCH(ci8)( const struct gl_texture_image *texImage,
*index = UBYTE_TO_CHAN( *src );
}
+/* XXX this may break if GLchan != GLubyte */
+static void FETCH(ycbcr)( const struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, GLvoid *texel )
+{
+ const GLushort *src0 = USHORT_SRC( texImage, (i & ~1), j, k ); /* even */
+ const GLushort *src1 = src0 + 1; /* odd */
+ const GLubyte y0 = (*src0 >> 8) & 0xff; /* luminance */
+ const GLubyte cb = *src0 & 0xff; /* chroma U */
+ const GLubyte y1 = (*src1 >> 8) & 0xff; /* luminance */
+ const GLubyte cr = *src1 & 0xff; /* chroma V */
+ GLchan *rgba = (GLchan *) texel;
+ GLint r, g, b;
+ if (i & 1) {
+ /* odd pixel: use y1,cr,cb */
+ r = (GLint) (1.164 * (y1-16) + 1.596 * (cr-128));
+ g = (GLint) (1.164 * (y1-16) - 0.813 * (cr-128) - 0.391 * (cb-128));
+ b = (GLint) (1.164 * (y1-16) + 2.018 * (cb-128));
+ }
+ else {
+ /* even pixel: use y0,cr,cb */
+ r = (GLint) (1.164 * (y0-16) + 1.596 * (cr-128));
+ g = (GLint) (1.164 * (y0-16) - 0.813 * (cr-128) - 0.391 * (cb-128));
+ b = (GLint) (1.164 * (y0-16) + 2.018 * (cb-128));
+ }
+ rgba[RCOMP] = CLAMP(r, 0, CHAN_MAX);
+ rgba[GCOMP] = CLAMP(g, 0, CHAN_MAX);
+ rgba[BCOMP] = CLAMP(b, 0, CHAN_MAX);
+ rgba[ACOMP] = CHAN_MAX;
+}
+
+/* XXX this may break if GLchan != GLubyte */
+static void FETCH(ycbcr_rev)( const struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, GLvoid *texel )
+{
+ const GLushort *src0 = USHORT_SRC( texImage, (i & ~1), j, k ); /* even */
+ const GLushort *src1 = src0 + 1; /* odd */
+ const GLubyte y0 = *src0 & 0xff; /* luminance */
+ const GLubyte cr = (*src0 >> 8) & 0xff; /* chroma U */
+ const GLubyte y1 = *src1 & 0xff; /* luminance */
+ const GLubyte cb = (*src1 >> 8) & 0xff; /* chroma V */
+ GLchan *rgba = (GLchan *) texel;
+ GLint r, g, b;
+ if (i & 1) {
+ /* odd pixel: use y1,cr,cb */
+ r = (GLint) (1.164 * (y1-16) + 1.596 * (cr-128));
+ g = (GLint) (1.164 * (y1-16) - 0.813 * (cr-128) - 0.391 * (cb-128));
+ b = (GLint) (1.164 * (y1-16) + 2.018 * (cb-128));
+ }
+ else {
+ /* even pixel: use y0,cr,cb */
+ r = (GLint) (1.164 * (y0-16) + 1.596 * (cr-128));
+ g = (GLint) (1.164 * (y0-16) - 0.813 * (cr-128) - 0.391 * (cb-128));
+ b = (GLint) (1.164 * (y0-16) + 2.018 * (cb-128));
+ }
+ rgba[RCOMP] = CLAMP(r, 0, CHAN_MAX);
+ rgba[GCOMP] = CLAMP(g, 0, CHAN_MAX);
+ rgba[BCOMP] = CLAMP(b, 0, CHAN_MAX);
+ rgba[ACOMP] = CHAN_MAX;
+}
+
#undef CHAN_SRC
#undef UBYTE_SRC
diff --git a/xc/extras/Mesa/src/teximage.c b/xc/extras/Mesa/src/teximage.c
index 48cf19c68..68395bcd5 100644
--- a/xc/extras/Mesa/src/teximage.c
+++ b/xc/extras/Mesa/src/teximage.c
@@ -101,6 +101,7 @@ static void PrintTexture(const struct gl_texture_image *img)
printf("%02x%02x%02x%02x ", data[0], data[1], data[2], data[3]);
data += c;
}
+ data += (img->RowStride - img->Width) * c;
printf("\n");
}
#endif
@@ -213,7 +214,10 @@ _mesa_base_tex_format( GLcontext *ctx, GLint format )
case GL_COLOR_INDEX8_EXT:
case GL_COLOR_INDEX12_EXT:
case GL_COLOR_INDEX16_EXT:
- return GL_COLOR_INDEX;
+ if (ctx->Extensions.EXT_paletted_texture)
+ return GL_COLOR_INDEX;
+ else
+ return -1;
case GL_DEPTH_COMPONENT:
case GL_DEPTH_COMPONENT16_SGIX:
case GL_DEPTH_COMPONENT24_SGIX:
@@ -222,6 +226,11 @@ _mesa_base_tex_format( GLcontext *ctx, GLint format )
return GL_DEPTH_COMPONENT;
else
return -1;
+ case GL_YCBCR_MESA:
+ if (ctx->Extensions.MESA_ycbcr_texture)
+ return GL_YCBCR_MESA;
+ else
+ return -1;
default:
return -1; /* error */
}
@@ -279,6 +288,7 @@ is_color_format(GLenum format)
case GL_RGBA12:
case GL_RGBA16:
return GL_TRUE;
+ case GL_YCBCR_MESA: /* not considered to be RGB */
default:
return GL_FALSE;
}
@@ -384,7 +394,7 @@ _mesa_alloc_texture_image( void )
void
_mesa_free_texture_image( struct gl_texture_image *teximage )
{
- if (teximage->Data) {
+ if (teximage->Data && !teximage->IsClientData) {
MESA_PBUFFER_FREE( teximage->Data );
teximage->Data = NULL;
}
@@ -605,6 +615,7 @@ clear_teximage_fields(struct gl_texture_image *img)
img->Width = 0;
img->Height = 0;
img->Depth = 0;
+ img->RowStride = 0;
img->Width2 = 0;
img->Height2 = 0;
img->Depth2 = 0;
@@ -636,6 +647,7 @@ _mesa_init_teximage_fields(GLcontext *ctx, GLenum target,
img->Width = width;
img->Height = height;
img->Depth = depth;
+ img->RowStride = img->Width;
img->WidthLog2 = logbase2(width - 2 * border);
if (height == 1) /* 1-D texture */
img->HeightLog2 = 0;
@@ -650,18 +662,7 @@ _mesa_init_teximage_fields(GLcontext *ctx, GLenum target,
img->Depth2 = 1 << img->DepthLog2;
img->MaxLog2 = MAX2(img->WidthLog2, img->HeightLog2);
img->IsCompressed = is_compressed_format(ctx, internalFormat);
- /* Compute Width/Height/DepthScale for mipmap lod computation */
- if (target == GL_TEXTURE_RECTANGLE_NV) {
- /* scale = 1.0 since texture coords directly map to texels */
- img->WidthScale = 1.0;
- img->HeightScale = 1.0;
- img->DepthScale = 1.0;
- }
- else {
- img->WidthScale = (GLfloat) img->Width;
- img->HeightScale = (GLfloat) img->Height;
- img->DepthScale = (GLfloat) img->Depth;
- }}
+}
@@ -904,6 +905,41 @@ texture_error_check( GLcontext *ctx, GLenum target,
return GL_TRUE;
}
+ if (format == GL_YCBCR_MESA || iformat == GL_YCBCR_MESA) {
+ ASSERT(ctx->Extensions.MESA_ycbcr_texture);
+ if (format != GL_YCBCR_MESA ||
+ iformat != GL_YCBCR_MESA ||
+ (type != GL_UNSIGNED_SHORT_8_8_MESA &&
+ type != GL_UNSIGNED_SHORT_8_8_REV_MESA)) {
+ if (!isProxy) {
+ char message[100];
+ sprintf(message,
+ "glTexImage%d(format/type/internalFormat YCBCR mismatch)",
+ dimensions);
+ _mesa_error(ctx, GL_INVALID_ENUM, message);
+ }
+ return GL_TRUE; /* error */
+ }
+ if (target != GL_TEXTURE_2D &&
+ target != GL_PROXY_TEXTURE_2D &&
+ target != GL_TEXTURE_RECTANGLE_NV &&
+ target != GL_PROXY_TEXTURE_RECTANGLE_NV) {
+ if (!isProxy)
+ _mesa_error(ctx, GL_INVALID_ENUM, "glTexImage(target)");
+ return GL_TRUE;
+ }
+ if (border != 0) {
+ if (!isProxy) {
+ char message[100];
+ sprintf(message,
+ "glTexImage%d(format=GL_YCBCR_MESA and border=%d)",
+ dimensions, border);
+ _mesa_error(ctx, GL_INVALID_VALUE, message);
+ }
+ return GL_TRUE;
+ }
+ }
+
/* if we get here, the parameters are OK */
return GL_FALSE;
}
@@ -929,36 +965,40 @@ subtexture_error_check( GLcontext *ctx, GLuint dimensions,
GLboolean compressed;
if (dimensions == 1) {
- if (target != GL_TEXTURE_1D) {
+ if (target == GL_TEXTURE_1D) {
+ maxLevels = ctx->Const.MaxTextureLevels;
+ }
+ else {
_mesa_error( ctx, GL_INVALID_ENUM, "glTexSubImage1D(target)" );
return GL_TRUE;
}
- maxLevels = ctx->Const.MaxTextureLevels;
}
else if (dimensions == 2) {
- if (ctx->Extensions.ARB_texture_cube_map) {
- if ((target < GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB ||
- target > GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB) &&
- target != GL_TEXTURE_2D) {
- _mesa_error( ctx, GL_INVALID_ENUM, "glTexSubImage2D(target)" );
- return GL_TRUE;
- }
+ if (ctx->Extensions.ARB_texture_cube_map &&
+ target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB &&
+ target <=GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB) {
+ maxLevels = ctx->Const.MaxCubeTextureLevels;
}
- else if (target != GL_TEXTURE_2D) {
+ else if (ctx->Extensions.NV_texture_rectangle &&
+ target == GL_TEXTURE_RECTANGLE_NV) {
+ maxLevels = 1;
+ }
+ else if (target == GL_TEXTURE_2D) {
+ maxLevels = ctx->Const.MaxTextureLevels;
+ }
+ else {
_mesa_error( ctx, GL_INVALID_ENUM, "glTexSubImage2D(target)" );
return GL_TRUE;
}
- if (target == GL_PROXY_TEXTURE_2D && target == GL_TEXTURE_2D)
- maxLevels = ctx->Const.MaxTextureLevels;
- else
- maxLevels = ctx->Const.MaxCubeTextureLevels;
}
else if (dimensions == 3) {
- if (target != GL_TEXTURE_3D) {
+ if (target == GL_TEXTURE_3D) {
+ maxLevels = ctx->Const.Max3DTextureLevels;
+ }
+ else {
_mesa_error( ctx, GL_INVALID_ENUM, "glTexSubImage3D(target)" );
return GL_TRUE;
}
- maxLevels = ctx->Const.Max3DTextureLevels;
}
else {
_mesa_problem( ctx, "bad dims in texture_error_check" );
@@ -996,7 +1036,7 @@ subtexture_error_check( GLcontext *ctx, GLuint dimensions,
destTex = _mesa_select_tex_image(ctx, texUnit, target, level);
if (!destTex) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glTexSubImage2D");
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glTexSubImage1/2/3D");
return GL_TRUE;
}
@@ -1303,6 +1343,11 @@ copytexsubimage_error_check( GLcontext *ctx, GLuint dimensions,
}
}
+ if (teximage->IntFormat == GL_YCBCR_MESA) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glCopyTexSubImage2D");
+ return GL_TRUE;
+ }
+
/* if we get here, the parameters are OK */
return GL_FALSE;
}
@@ -1315,7 +1360,7 @@ _mesa_GetTexImage( GLenum target, GLint level, GLenum format,
{
const struct gl_texture_unit *texUnit;
const struct gl_texture_object *texObj;
- struct gl_texture_image *texImage;
+ const struct gl_texture_image *texImage;
GLint maxLevels = 0;
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
@@ -1366,6 +1411,10 @@ _mesa_GetTexImage( GLenum target, GLint level, GLenum format,
_mesa_error(ctx, GL_INVALID_ENUM, "glGetTexImage(format)");
}
+ if (!ctx->Extensions.MESA_ycbcr_texture && format == GL_YCBCR_MESA) {
+ _mesa_error(ctx, GL_INVALID_ENUM, "glGetTexImage(format)");
+ }
+
/* XXX what if format/type doesn't match texture format/type? */
if (!pixels)
@@ -1390,7 +1439,7 @@ _mesa_GetTexImage( GLenum target, GLint level, GLenum format,
for (img = 0; img < depth; img++) {
for (row = 0; row < height; row++) {
/* compute destination address in client memory */
- GLvoid *dest = _mesa_image_address( &ctx->Unpack, pixels,
+ GLvoid *dest = _mesa_image_address( &ctx->Pack, pixels,
width, height, format, type,
img, row, 0);
assert(dest);
@@ -1416,6 +1465,23 @@ _mesa_GetTexImage( GLenum target, GLint level, GLenum format,
_mesa_pack_depth_span(ctx, width, dest, type,
depthRow, &ctx->Pack);
}
+ else if (format == GL_YCBCR_MESA) {
+ const GLint rowstride = texImage->RowStride;
+ /* No pixel transfer */
+ MEMCPY(dest, (const GLushort *) texImage->Data + row * rowstride,
+ width * sizeof(GLushort));
+ /* check for byte swapping */
+ if ((texImage->TexFormat->MesaFormat == MESA_FORMAT_YCBCR
+ && type == GL_UNSIGNED_SHORT_8_8_REV_MESA) ||
+ (texImage->TexFormat->MesaFormat == MESA_FORMAT_YCBCR_REV
+ && type == GL_UNSIGNED_SHORT_8_8_MESA)) {
+ if (!ctx->Pack.SwapBytes)
+ _mesa_swap2((GLushort *) dest, width);
+ }
+ else if (ctx->Pack.SwapBytes) {
+ _mesa_swap2((GLushort *) dest, width);
+ }
+ }
else {
/* general case: convert row to RGBA format */
GLchan rgba[MAX_WIDTH][4];
@@ -1473,11 +1539,11 @@ _mesa_TexImage1D( GLenum target, GLint level, GLint internalFormat,
return;
}
}
- else if (texImage->Data) {
+ else if (texImage->Data && !texImage->IsClientData) {
/* free the old texture data */
MESA_PBUFFER_FREE(texImage->Data);
- texImage->Data = NULL;
}
+ texImage->Data = NULL;
clear_teximage_fields(texImage); /* not really needed, but helpful */
_mesa_init_teximage_fields(ctx, target, texImage, postConvWidth, 1, 1,
border, internalFormat);
@@ -1600,11 +1666,11 @@ _mesa_TexImage2D( GLenum target, GLint level, GLint internalFormat,
return;
}
}
- else if (texImage->Data) {
+ else if (texImage->Data && !texImage->IsClientData) {
/* free the old texture data */
MESA_PBUFFER_FREE(texImage->Data);
- texImage->Data = NULL;
}
+ texImage->Data = NULL;
clear_teximage_fields(texImage); /* not really needed, but helpful */
_mesa_init_teximage_fields(ctx, target, texImage,
postConvWidth, postConvHeight,
@@ -1725,10 +1791,10 @@ _mesa_TexImage3D( GLenum target, GLint level, GLenum internalFormat,
return;
}
}
- else if (texImage->Data) {
+ else if (texImage->Data && !texImage->IsClientData) {
MESA_PBUFFER_FREE(texImage->Data);
- texImage->Data = NULL;
}
+ texImage->Data = NULL;
clear_teximage_fields(texImage); /* not really needed, but helpful */
_mesa_init_teximage_fields(ctx, target, texImage, width, height, depth,
border, internalFormat);
@@ -1994,11 +2060,11 @@ _mesa_CopyTexImage1D( GLenum target, GLint level,
return;
}
}
- else if (texImage->Data) {
+ else if (texImage->Data && !texImage->IsClientData) {
/* free the old texture data */
MESA_PBUFFER_FREE(texImage->Data);
- texImage->Data = NULL;
}
+ texImage->Data = NULL;
clear_teximage_fields(texImage); /* not really needed, but helpful */
_mesa_init_teximage_fields(ctx, target, texImage, postConvWidth, 1, 1,
@@ -2058,11 +2124,11 @@ _mesa_CopyTexImage2D( GLenum target, GLint level, GLenum internalFormat,
return;
}
}
- else if (texImage->Data) {
+ else if (texImage->Data && !texImage->IsClientData) {
/* free the old texture data */
MESA_PBUFFER_FREE(texImage->Data);
- texImage->Data = NULL;
}
+ texImage->Data = NULL;
clear_teximage_fields(texImage); /* not really needed, but helpful */
_mesa_init_teximage_fields(ctx, target, texImage,
@@ -2245,10 +2311,10 @@ _mesa_CompressedTexImage1DARB(GLenum target, GLint level,
return;
}
}
- else if (texImage->Data) {
+ else if (texImage->Data && !texImage->IsClientData) {
MESA_PBUFFER_FREE(texImage->Data);
- texImage->Data = NULL;
}
+ texImage->Data = NULL;
_mesa_init_teximage_fields(ctx, target, texImage, width, 1, 1,
border, internalFormat);
@@ -2346,10 +2412,10 @@ _mesa_CompressedTexImage2DARB(GLenum target, GLint level,
return;
}
}
- else if (texImage->Data) {
+ else if (texImage->Data && !texImage->IsClientData) {
MESA_PBUFFER_FREE(texImage->Data);
- texImage->Data = NULL;
}
+ texImage->Data = NULL;
_mesa_init_teximage_fields(ctx, target, texImage, width, height, 1,
border, internalFormat);
@@ -2444,10 +2510,10 @@ _mesa_CompressedTexImage3DARB(GLenum target, GLint level,
return;
}
}
- else if (texImage->Data) {
+ else if (texImage->Data && !texImage->IsClientData) {
MESA_PBUFFER_FREE(texImage->Data);
- texImage->Data = NULL;
}
+ texImage->Data = NULL;
_mesa_init_teximage_fields(ctx, target, texImage, width, height, depth,
border, internalFormat);
diff --git a/xc/extras/Mesa/src/texobj.c b/xc/extras/Mesa/src/texobj.c
index 1b0e583a2..68eb1d8a0 100644
--- a/xc/extras/Mesa/src/texobj.c
+++ b/xc/extras/Mesa/src/texobj.c
@@ -555,27 +555,38 @@ _mesa_DeleteTextures( GLsizei n, const GLuint *texName)
if (delObj == unit->Current1D) {
unit->Current1D = ctx->Shared->Default1D;
ctx->Shared->Default1D->RefCount++;
+ delObj->RefCount--;
if (delObj == unit->_Current)
unit->_Current = unit->Current1D;
}
else if (delObj == unit->Current2D) {
unit->Current2D = ctx->Shared->Default2D;
ctx->Shared->Default2D->RefCount++;
+ delObj->RefCount--;
if (delObj == unit->_Current)
unit->_Current = unit->Current2D;
}
else if (delObj == unit->Current3D) {
unit->Current3D = ctx->Shared->Default3D;
ctx->Shared->Default3D->RefCount++;
+ delObj->RefCount--;
if (delObj == unit->_Current)
unit->_Current = unit->Current3D;
}
else if (delObj == unit->CurrentCubeMap) {
unit->CurrentCubeMap = ctx->Shared->DefaultCubeMap;
ctx->Shared->DefaultCubeMap->RefCount++;
+ delObj->RefCount--;
if (delObj == unit->_Current)
unit->_Current = unit->CurrentCubeMap;
}
+ else if (delObj == unit->CurrentRect) {
+ unit->CurrentRect = ctx->Shared->DefaultRect;
+ ctx->Shared->DefaultRect->RefCount++;
+ delObj->RefCount--;
+ if (delObj == unit->_Current)
+ unit->_Current = unit->CurrentRect;
+ }
}
ctx->NewState |= _NEW_TEXTURE;
diff --git a/xc/extras/Mesa/src/texstate.c b/xc/extras/Mesa/src/texstate.c
index eae7db349..3f3aeae7d 100644
--- a/xc/extras/Mesa/src/texstate.c
+++ b/xc/extras/Mesa/src/texstate.c
@@ -380,6 +380,7 @@ _mesa_TexEnvfv( GLenum target, GLenum pname, const GLfloat *param )
return;
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
texUnit->CombineOperandRGB[2] = operand;
+ break;
default:
TE_ERROR(GL_INVALID_ENUM, "glTexEnv(param=%s)", operand);
return;
@@ -2233,7 +2234,8 @@ _mesa_ActiveTextureARB( GLenum target )
fprintf(stderr, "glActiveTexture %s\n",
_mesa_lookup_enum_by_nr(target));
- if (texUnit > ctx->Const.MaxTextureUnits) {
+ /* Cater for texture unit 0 is first, therefore use >= */
+ if (texUnit >= ctx->Const.MaxTextureUnits) {
_mesa_error(ctx, GL_INVALID_ENUM, "glActiveTextureARB(target)");
return;
}
diff --git a/xc/extras/Mesa/src/texstore.c b/xc/extras/Mesa/src/texstore.c
index 2285c4663..a0a50123c 100644
--- a/xc/extras/Mesa/src/texstore.c
+++ b/xc/extras/Mesa/src/texstore.c
@@ -1,4 +1,3 @@
-/* $Id: texstore.c,v 1.1.1.1 2002/10/22 13:05:22 alanh Exp $ */
/*
* Mesa 3-D graphics library
@@ -115,6 +114,8 @@ components_in_intformat( GLint format )
case GL_DEPTH_COMPONENT24_SGIX:
case GL_DEPTH_COMPONENT32_SGIX:
return 1;
+ case GL_YCBCR_MESA:
+ return 2; /* Y + (Cb or Cr) */
default:
return -1; /* error */
}
@@ -255,6 +256,26 @@ transfer_teximage(GLcontext *ctx, GLuint dimensions,
dest += dstImageStride;
}
}
+ else if (texDestFormat == GL_YCBCR_MESA) {
+ /* YCbCr texture */
+ GLint img, row;
+ GLushort *dest = (GLushort *) texDestAddr
+ + dstZoffset * (dstImageStride / sizeof(GLushort))
+ + dstYoffset * (dstRowStride / sizeof(GLushort))
+ + dstXoffset * texComponents;
+ ASSERT(ctx->Extensions.MESA_ycbcr_texture);
+ for (img = 0; img < srcDepth; img++) {
+ GLushort *destRow = dest;
+ for (row = 0; row < srcHeight; row++) {
+ const GLvoid *srcRow = _mesa_image_address(srcPacking,
+ srcAddr, srcWidth, srcHeight,
+ srcFormat, srcType, img, row, 0);
+ MEMCPY(destRow, srcRow, srcWidth * sizeof(GLushort));
+ destRow += (dstRowStride / sizeof(GLushort));
+ }
+ dest += dstImageStride / sizeof(GLushort);
+ }
+ }
else if (texDestFormat == GL_DEPTH_COMPONENT) {
/* Depth texture (shadow maps) */
GLint img, row;
@@ -666,7 +687,7 @@ _mesa_store_teximage1d(GLcontext *ctx, GLenum target, GLint level,
/* GL_SGIS_generate_mipmap */
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
- _mesa_generate_mipmap(ctx,
+ _mesa_generate_mipmap(ctx, target,
&ctx->Texture.Unit[ctx->Texture.CurrentUnit],
texObj);
}
@@ -739,7 +760,7 @@ _mesa_store_teximage2d(GLcontext *ctx, GLenum target, GLint level,
/* GL_SGIS_generate_mipmap */
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
- _mesa_generate_mipmap(ctx,
+ _mesa_generate_mipmap(ctx, target,
&ctx->Texture.Unit[ctx->Texture.CurrentUnit],
texObj);
}
@@ -805,7 +826,7 @@ _mesa_store_teximage3d(GLcontext *ctx, GLenum target, GLint level,
/* GL_SGIS_generate_mipmap */
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
- _mesa_generate_mipmap(ctx,
+ _mesa_generate_mipmap(ctx, target,
&ctx->Texture.Unit[ctx->Texture.CurrentUnit],
texObj);
}
@@ -837,7 +858,8 @@ _mesa_store_texsubimage1d(GLcontext *ctx, GLenum target, GLint level,
/* GL_SGIS_generate_mipmap */
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
- _mesa_generate_mipmap(ctx, &ctx->Texture.Unit[ctx->Texture.CurrentUnit],
+ _mesa_generate_mipmap(ctx, target,
+ &ctx->Texture.Unit[ctx->Texture.CurrentUnit],
texObj);
}
}
@@ -866,7 +888,8 @@ _mesa_store_texsubimage2d(GLcontext *ctx, GLenum target, GLint level,
/* GL_SGIS_generate_mipmap */
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
- _mesa_generate_mipmap(ctx, &ctx->Texture.Unit[ctx->Texture.CurrentUnit],
+ _mesa_generate_mipmap(ctx, target,
+ &ctx->Texture.Unit[ctx->Texture.CurrentUnit],
texObj);
}
}
@@ -895,7 +918,8 @@ _mesa_store_texsubimage3d(GLcontext *ctx, GLenum target, GLint level,
format, type, pixels, packing);
/* GL_SGIS_generate_mipmap */
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
- _mesa_generate_mipmap(ctx, &ctx->Texture.Unit[ctx->Texture.CurrentUnit],
+ _mesa_generate_mipmap(ctx, target,
+ &ctx->Texture.Unit[ctx->Texture.CurrentUnit],
texObj);
}
}
@@ -1603,22 +1627,10 @@ make_3d_mipmap(const struct gl_texture_format *format, GLint border,
* Stop at texObj's MaxLevel or when we get to the 1x1 texture.
*/
void
-_mesa_generate_mipmap(GLcontext *ctx,
+_mesa_generate_mipmap(GLcontext *ctx, GLenum target,
const struct gl_texture_unit *texUnit,
struct gl_texture_object *texObj)
{
- const GLenum targets1D[] = { GL_TEXTURE_1D, 0 };
- const GLenum targets2D[] = { GL_TEXTURE_2D, 0 };
- const GLenum targets3D[] = { GL_TEXTURE_3D, 0 };
- const GLenum targetsCube[] = { GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB,
- GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB,
- GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB,
- GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB,
- GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB,
- GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB,
- 0 };
- const GLenum targetsRect[] = { GL_TEXTURE_RECTANGLE_NV, 0 };
- const GLenum *targets;
GLint level;
GLint maxLevels = 0;
@@ -1627,23 +1639,18 @@ _mesa_generate_mipmap(GLcontext *ctx,
switch (texObj->Target) {
case GL_TEXTURE_1D:
- targets = targets1D;
maxLevels = ctx->Const.MaxTextureLevels;
break;
case GL_TEXTURE_2D:
- targets = targets2D;
maxLevels = ctx->Const.MaxTextureLevels;
break;
case GL_TEXTURE_3D:
- targets = targets3D;
maxLevels = ctx->Const.Max3DTextureLevels;
break;
case GL_TEXTURE_CUBE_MAP_ARB:
- targets = targetsCube;
maxLevels = ctx->Const.MaxCubeTextureLevels;
break;
case GL_TEXTURE_RECTANGLE_NV:
- targets = targetsRect;
maxLevels = 1;
break;
default:
@@ -1660,7 +1667,6 @@ _mesa_generate_mipmap(GLcontext *ctx,
GLint srcWidth, srcHeight, srcDepth;
GLint dstWidth, dstHeight, dstDepth;
GLint border, bytesPerTexel;
- GLint t;
srcImage = texObj->Image[level];
ASSERT(srcImage);
@@ -1697,70 +1703,73 @@ _mesa_generate_mipmap(GLcontext *ctx,
return;
}
- /* Need this loop just because of cubemaps */
- for (t = 0; targets[t]; t++) {
- ASSERT(t < 6);
-
- dstImage = _mesa_select_tex_image(ctx, texUnit, targets[t], level+1);
+ /* get dest gl_texture_image */
+ dstImage = _mesa_select_tex_image(ctx, texUnit, target, level+1);
+ if (!dstImage) {
+ dstImage = _mesa_alloc_texture_image();
if (!dstImage) {
- dstImage = _mesa_alloc_texture_image();
- if (!dstImage) {
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "generating mipmaps");
- return;
- }
- _mesa_set_tex_image(texObj, targets[t], level + 1, dstImage);
- }
-
- /* Free old image data */
- if (dstImage->Data)
- MESA_PBUFFER_FREE(dstImage->Data);
-
- /* initialize new image */
- _mesa_init_teximage_fields(ctx, t, dstImage, dstWidth, dstHeight,
- dstDepth, border, srcImage->Format);
- dstImage->DriverData = NULL;
- dstImage->TexFormat = srcImage->TexFormat;
- dstImage->FetchTexel = srcImage->FetchTexel;
- ASSERT(dstImage->TexFormat);
- ASSERT(dstImage->FetchTexel);
-
- ASSERT(dstWidth * dstHeight * dstDepth * bytesPerTexel > 0);
-
- /* alloc new image buffer */
- dstImage->Data = MESA_PBUFFER_ALLOC(dstWidth * dstHeight * dstDepth
- * bytesPerTexel);
- if (!dstImage->Data) {
_mesa_error(ctx, GL_OUT_OF_MEMORY, "generating mipmaps");
return;
}
+ _mesa_set_tex_image(texObj, target, level + 1, dstImage);
+ }
- /*
- * We use simple 2x2 averaging to compute the next mipmap level.
- */
- switch (texObj->Target) {
- case GL_TEXTURE_1D:
- make_1d_mipmap(srcImage->TexFormat, border,
- srcWidth, (const GLubyte *) srcImage->Data,
- dstWidth, (GLubyte *) dstImage->Data);
- break;
- case GL_TEXTURE_2D:
- case GL_TEXTURE_CUBE_MAP_ARB:
- make_2d_mipmap(srcImage->TexFormat, border,
- srcWidth, srcHeight, (const GLubyte *) srcImage->Data,
- dstWidth, dstHeight, (GLubyte *) dstImage->Data);
- break;
- case GL_TEXTURE_3D:
- make_3d_mipmap(srcImage->TexFormat, border,
- srcWidth, srcHeight, srcDepth, (const GLubyte *) srcImage->Data,
- dstWidth, dstHeight, dstDepth, (GLubyte *) dstImage->Data);
- break;
- case GL_TEXTURE_RECTANGLE_NV:
- /* no mipmaps, do nothing */
- break;
- default:
- _mesa_problem(ctx, "bad dimensions in _mesa_generate_mipmaps");
- return;
- }
- } /* loop over tex image targets */
+ /* Free old image data */
+ if (dstImage->Data)
+ MESA_PBUFFER_FREE(dstImage->Data);
+
+ /* initialize new image */
+ _mesa_init_teximage_fields(ctx, target, dstImage, dstWidth, dstHeight,
+ dstDepth, border, srcImage->Format);
+ dstImage->DriverData = NULL;
+ dstImage->TexFormat = srcImage->TexFormat;
+ dstImage->FetchTexel = srcImage->FetchTexel;
+ ASSERT(dstImage->TexFormat);
+ ASSERT(dstImage->FetchTexel);
+
+ ASSERT(dstWidth * dstHeight * dstDepth * bytesPerTexel > 0);
+
+ /* alloc new image buffer */
+ dstImage->Data = MESA_PBUFFER_ALLOC(dstWidth * dstHeight * dstDepth
+ * bytesPerTexel);
+ if (!dstImage->Data) {
+ _mesa_error(ctx, GL_OUT_OF_MEMORY, "generating mipmaps");
+ return;
+ }
+
+ /*
+ * We use simple 2x2 averaging to compute the next mipmap level.
+ */
+ switch (target) {
+ case GL_TEXTURE_1D:
+ make_1d_mipmap(srcImage->TexFormat, border,
+ srcWidth, (const GLubyte *) srcImage->Data,
+ dstWidth, (GLubyte *) dstImage->Data);
+ break;
+ case GL_TEXTURE_2D:
+ case GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB:
+ case GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB:
+ case GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB:
+ case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB:
+ case GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB:
+ case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB:
+ make_2d_mipmap(srcImage->TexFormat, border,
+ srcWidth, srcHeight, (const GLubyte *) srcImage->Data,
+ dstWidth, dstHeight, (GLubyte *) dstImage->Data);
+ break;
+ case GL_TEXTURE_3D:
+ make_3d_mipmap(srcImage->TexFormat, border,
+ srcWidth, srcHeight, srcDepth,
+ (const GLubyte *) srcImage->Data,
+ dstWidth, dstHeight, dstDepth,
+ (GLubyte *) dstImage->Data);
+ break;
+ case GL_TEXTURE_RECTANGLE_NV:
+ /* no mipmaps, do nothing */
+ break;
+ default:
+ _mesa_problem(ctx, "bad dimensions in _mesa_generate_mipmaps");
+ return;
+ }
} /* loop over tex levels */
}
diff --git a/xc/extras/Mesa/src/texstore.h b/xc/extras/Mesa/src/texstore.h
index 53c1a2807..553732b34 100644
--- a/xc/extras/Mesa/src/texstore.h
+++ b/xc/extras/Mesa/src/texstore.h
@@ -1,10 +1,9 @@
-/* $Id: texstore.h,v 1.1.1.1 2002/10/22 13:05:22 alanh Exp $ */
/*
* Mesa 3-D graphics library
- * Version: 3.5
+ * Version: 4.0.4
*
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -149,7 +148,7 @@ _mesa_test_proxy_teximage(GLcontext *ctx, GLenum target, GLint level,
extern void
-_mesa_generate_mipmap(GLcontext *ctx,
+_mesa_generate_mipmap(GLcontext *ctx, GLenum target,
const struct gl_texture_unit *texUnit,
struct gl_texture_object *texObj);
diff --git a/xc/extras/Mesa/src/texutil.c b/xc/extras/Mesa/src/texutil.c
index bf9285a7e..38f4f7fae 100644
--- a/xc/extras/Mesa/src/texutil.c
+++ b/xc/extras/Mesa/src/texutil.c
@@ -26,6 +26,14 @@
* Gareth Hughes <gareth@valinux.com>
*/
+/*
+ * Description:
+ * Functions for texture image conversion. This takes care of converting
+ * typical GL_RGBA/GLubyte textures into hardware-specific formats.
+ * We can handle non-standard row strides and pixel unpacking parameters.
+ */
+
+
#ifdef PC_HEADER
#include "all.h"
#else
@@ -50,7 +58,7 @@
#endif
-struct gl_texture_convert {
+struct convert_info {
GLint xoffset, yoffset, zoffset; /* Subimage offset */
GLint width, height, depth; /* Subimage region */
@@ -66,15 +74,16 @@ struct gl_texture_convert {
GLint index;
};
-typedef GLboolean (*convert_func)( struct gl_texture_convert *convert );
+typedef GLboolean (*convert_func)( const struct convert_info *convert );
+/* bitvalues for convert->index */
#define CONVERT_STRIDE_BIT 0x1
#define CONVERT_UNPACKING_BIT 0x2
/* =============================================================
- * RGBA8888 textures:
+ * Convert to RGBA8888 textures:
*/
#define DST_TYPE GLuint
@@ -117,7 +126,7 @@ typedef GLboolean (*convert_func)( struct gl_texture_convert *convert );
#define CONVERT_RGBA8888( name ) \
static GLboolean \
-convert_##name##_rgba8888( struct gl_texture_convert *convert ) \
+convert_##name##_rgba8888( const struct convert_info *convert ) \
{ \
convert_func *tab; \
GLint index = convert->index; \
@@ -153,7 +162,7 @@ CONVERT_RGBA8888( texsubimage3d )
/* =============================================================
- * ARGB8888 textures:
+ * Convert to ARGB8888 textures:
*/
#define DST_TYPE GLuint
@@ -196,7 +205,7 @@ CONVERT_RGBA8888( texsubimage3d )
#define CONVERT_ARGB8888( name ) \
static GLboolean \
-convert_##name##_argb8888( struct gl_texture_convert *convert ) \
+convert_##name##_argb8888( const struct convert_info *convert ) \
{ \
convert_func *tab; \
GLint index = convert->index; \
@@ -231,11 +240,11 @@ CONVERT_ARGB8888( texsubimage3d )
/* =============================================================
- * RGB888 textures:
+ * Convert to RGB888 textures:
*/
static GLboolean
-convert_texsubimage2d_rgb888( struct gl_texture_convert *convert )
+convert_texsubimage2d_rgb888( const struct convert_info *convert )
{
/* This is a placeholder for now...
*/
@@ -243,7 +252,7 @@ convert_texsubimage2d_rgb888( struct gl_texture_convert *convert )
}
static GLboolean
-convert_texsubimage3d_rgb888( struct gl_texture_convert *convert )
+convert_texsubimage3d_rgb888( const struct convert_info *convert )
{
/* This is a placeholder for now...
*/
@@ -253,7 +262,7 @@ convert_texsubimage3d_rgb888( struct gl_texture_convert *convert )
/* =============================================================
- * RGB565 textures:
+ * Convert to RGB565 textures:
*/
#define DST_TYPE GLushort
@@ -300,7 +309,7 @@ convert_texsubimage3d_rgb888( struct gl_texture_convert *convert )
#define CONVERT_RGB565( name ) \
static GLboolean \
-convert_##name##_rgb565( struct gl_texture_convert *convert ) \
+convert_##name##_rgb565( const struct convert_info *convert ) \
{ \
convert_func *tab; \
GLint index = convert->index; \
@@ -335,7 +344,7 @@ CONVERT_RGB565( texsubimage3d )
/* =============================================================
- * ARGB4444 textures:
+ * Convert to ARGB4444 textures:
*/
#define DST_TYPE GLushort
@@ -368,7 +377,7 @@ CONVERT_RGB565( texsubimage3d )
#define CONVERT_ARGB4444( name ) \
static GLboolean \
-convert_##name##_argb4444( struct gl_texture_convert *convert ) \
+convert_##name##_argb4444( const struct convert_info *convert ) \
{ \
convert_func *tab; \
GLint index = convert->index; \
@@ -398,7 +407,7 @@ CONVERT_ARGB4444( texsubimage3d )
/* =============================================================
- * ARGB1555 textures:
+ * Convert to ARGB1555 textures:
*/
#define DST_TYPE GLushort
@@ -462,7 +471,7 @@ CONVERT_ARGB4444( texsubimage3d )
#define CONVERT_ARGB1555( name ) \
static GLboolean \
-convert_##name##_argb1555( struct gl_texture_convert *convert ) \
+convert_##name##_argb1555( const struct convert_info *convert ) \
{ \
convert_func *tab; \
GLint index = convert->index; \
@@ -497,7 +506,7 @@ CONVERT_ARGB1555( texsubimage3d )
/* =============================================================
- * AL88 textures:
+ * Conver to AL88 textures:
*/
#define DST_TYPE GLushort
@@ -519,7 +528,7 @@ CONVERT_ARGB1555( texsubimage3d )
dst = PACK_COLOR_88_LE( src[0], 0x00 )
#define CONVERT_TEXEL_DWORD( dst, src ) \
- dst = APPEND16( PACK_COLOR_88_LE( src[0], 0x00 ), \
+ dst = APPEND16( PACK_COLOR_88_LE( src[0], 0x00 ), \
PACK_COLOR_88_LE( src[1], 0x00 ) )
#define SRC_TEXEL_BYTES 1
@@ -558,7 +567,7 @@ CONVERT_ARGB1555( texsubimage3d )
#define CONVERT_AL88( name ) \
static GLboolean \
-convert_##name##_al88( struct gl_texture_convert *convert ) \
+convert_##name##_al88( const struct convert_info *convert ) \
{ \
convert_func *tab; \
GLint index = convert->index; \
@@ -598,11 +607,11 @@ CONVERT_AL88( texsubimage3d )
/* =============================================================
- * RGB332 textures:
+ * Convert to RGB332 textures:
*/
static GLboolean
-convert_texsubimage2d_rgb332( struct gl_texture_convert *convert )
+convert_texsubimage2d_rgb332( const struct convert_info *convert )
{
/* This is a placeholder for now...
*/
@@ -610,7 +619,7 @@ convert_texsubimage2d_rgb332( struct gl_texture_convert *convert )
}
static GLboolean
-convert_texsubimage3d_rgb332( struct gl_texture_convert *convert )
+convert_texsubimage3d_rgb332( const struct convert_info *convert )
{
/* This is a placeholder for now...
*/
@@ -620,7 +629,7 @@ convert_texsubimage3d_rgb332( struct gl_texture_convert *convert )
/* =============================================================
- * CI8 (and all other single-byte texel) textures:
+ * Convert to CI8 (and all other single-byte texel) textures:
*/
#define DST_TYPE GLubyte
@@ -638,7 +647,7 @@ convert_texsubimage3d_rgb332( struct gl_texture_convert *convert )
#define CONVERT_CI8( name ) \
static GLboolean \
-convert_##name##_ci8( struct gl_texture_convert *convert ) \
+convert_##name##_ci8( const struct convert_info *convert ) \
{ \
convert_func *tab; \
GLint index = convert->index; \
@@ -664,12 +673,88 @@ CONVERT_CI8( texsubimage2d )
CONVERT_CI8( texsubimage3d )
+/* =============================================================
+ * convert to YCBCR textures:
+ */
+
+#define DST_TYPE GLushort
+#define DST_TEXELS_PER_DWORD 2
+
+#define CONVERT_TEXEL( dst, src ) \
+ dst = (src[0] << 8) | src[1];
+
+#define CONVERT_DIRECT
+
+#define SRC_TEXEL_BYTES 2
+
+#define TAG(x) x##_ycbcr_direct
+#include "texutil_tmp.h"
+
+
+#define CONVERT_YCBCR( name ) \
+static GLboolean \
+convert_##name##_ycbcr( const struct convert_info *convert ) \
+{ \
+ convert_func *tab; \
+ GLint index = convert->index; \
+ \
+ if (convert->format != GL_YCBCR_MESA) { \
+ /* Can't handle this source format/type combination */ \
+ return GL_FALSE; \
+ } \
+ tab = name##_tab_ycbcr_direct; \
+ \
+ return tab[index]( convert ); \
+}
+
+CONVERT_YCBCR( texsubimage2d )
+CONVERT_YCBCR( texsubimage3d )
+
+
+/* =============================================================
+ * convert to YCBCR_REV textures:
+ */
+
+#define DST_TYPE GLushort
+#define DST_TEXELS_PER_DWORD 2
+
+#define CONVERT_TEXEL( dst, src ) \
+ dst = (src[1] << 8) | src[0];
+
+#define CONVERT_DIRECT
+
+#define SRC_TEXEL_BYTES 2
+
+#define TAG(x) x##_ycbcr_rev_direct
+#include "texutil_tmp.h"
+
+
+#define CONVERT_YCBCR_REV( name ) \
+static GLboolean \
+convert_##name##_ycbcr_rev( const struct convert_info *convert ) \
+{ \
+ convert_func *tab; \
+ GLint index = convert->index; \
+ \
+ if (convert->format != GL_YCBCR_MESA) { \
+ /* Can't handle this source format/type combination */ \
+ return GL_FALSE; \
+ } \
+ tab = name##_tab_ycbcr_rev_direct; \
+ \
+ return tab[index]( convert ); \
+}
+
+CONVERT_YCBCR_REV( texsubimage2d )
+CONVERT_YCBCR_REV( texsubimage3d )
+
+
/* =============================================================
- * Global entry points
+ * Tables of texture conversion/packing functions.
*/
-static convert_func gl_convert_texsubimage2d_tab[] = {
+static convert_func convert_texsubimage2d_table[] = {
convert_texsubimage2d_rgba8888,
convert_texsubimage2d_argb8888,
convert_texsubimage2d_rgb888,
@@ -682,9 +767,11 @@ static convert_func gl_convert_texsubimage2d_tab[] = {
convert_texsubimage2d_ci8,
convert_texsubimage2d_ci8,
convert_texsubimage2d_ci8,
+ convert_texsubimage2d_ycbcr,
+ convert_texsubimage2d_ycbcr_rev,
};
-static convert_func gl_convert_texsubimage3d_tab[] = {
+static convert_func convert_texsubimage3d_table[] = {
convert_texsubimage3d_rgba8888,
convert_texsubimage3d_argb8888,
convert_texsubimage3d_rgb888,
@@ -697,6 +784,8 @@ static convert_func gl_convert_texsubimage3d_tab[] = {
convert_texsubimage3d_ci8,
convert_texsubimage3d_ci8,
convert_texsubimage3d_ci8,
+ convert_texsubimage3d_ycbcr,
+ convert_texsubimage3d_ycbcr_rev,
};
@@ -727,21 +816,21 @@ convert_needs_unpacking( const struct gl_pixelstore_attrib *unpacking,
GLboolean
-_mesa_convert_texsubimage1d( GLint mesaFormat,
+_mesa_convert_texsubimage1d( GLint mesaFormat, /* dest */
GLint xoffset,
GLint width,
- GLenum format, GLenum type,
+ GLenum format, GLenum type, /* source */
const struct gl_pixelstore_attrib *unpacking,
const GLvoid *srcImage, GLvoid *dstImage )
{
- struct gl_texture_convert convert;
+ struct convert_info convert;
ASSERT( unpacking );
ASSERT( srcImage );
ASSERT( dstImage );
ASSERT( mesaFormat >= MESA_FORMAT_RGBA8888 );
- ASSERT( mesaFormat <= MESA_FORMAT_CI8 );
+ ASSERT( mesaFormat <= MESA_FORMAT_YCBCR_REV );
/* Make it easier to pass all the parameters around.
*/
@@ -760,7 +849,9 @@ _mesa_convert_texsubimage1d( GLint mesaFormat,
if ( convert_needs_unpacking( unpacking, format, type ) )
convert.index |= CONVERT_UNPACKING_BIT;
- return gl_convert_texsubimage2d_tab[mesaFormat]( &convert );
+ ASSERT(convert.index < 4);
+
+ return convert_texsubimage2d_table[mesaFormat]( &convert );
}
@@ -790,22 +881,22 @@ _mesa_convert_texsubimage1d( GLint mesaFormat,
* destImage - pointer to dest image
*/
GLboolean
-_mesa_convert_texsubimage2d( GLint mesaFormat,
+_mesa_convert_texsubimage2d( GLint mesaFormat, /* dest */
GLint xoffset, GLint yoffset,
GLint width, GLint height,
GLint destImageWidth,
- GLenum format, GLenum type,
+ GLenum format, GLenum type, /* source */
const struct gl_pixelstore_attrib *unpacking,
const GLvoid *srcImage, GLvoid *dstImage )
{
- struct gl_texture_convert convert;
+ struct convert_info convert;
ASSERT( unpacking );
ASSERT( srcImage );
ASSERT( dstImage );
ASSERT( mesaFormat >= MESA_FORMAT_RGBA8888 );
- ASSERT( mesaFormat <= MESA_FORMAT_CI8 );
+ ASSERT( mesaFormat <= MESA_FORMAT_YCBCR_REV );
/* Make it easier to pass all the parameters around.
*/
@@ -814,8 +905,8 @@ _mesa_convert_texsubimage2d( GLint mesaFormat,
convert.width = width;
convert.height = height;
convert.dstImageWidth = destImageWidth;
- convert.format = format;
- convert.type = type;
+ convert.format = format; /* src */
+ convert.type = type; /* src */
convert.unpacking = unpacking;
convert.srcImage = srcImage;
convert.dstImage = dstImage;
@@ -828,26 +919,31 @@ _mesa_convert_texsubimage2d( GLint mesaFormat,
if ( width != destImageWidth )
convert.index |= CONVERT_STRIDE_BIT;
- return gl_convert_texsubimage2d_tab[mesaFormat]( &convert );
+ ASSERT(convert.index < 4);
+
+ ASSERT(mesaFormat < sizeof(convert_texsubimage2d_table) /
+ sizeof(convert_texsubimage2d_table[0]));
+
+ return convert_texsubimage2d_table[mesaFormat]( &convert );
}
GLboolean
-_mesa_convert_texsubimage3d( GLint mesaFormat,
+_mesa_convert_texsubimage3d( GLint mesaFormat, /* dest */
GLint xoffset, GLint yoffset, GLint zoffset,
GLint width, GLint height, GLint depth,
GLint dstImageWidth, GLint dstImageHeight,
- GLenum format, GLenum type,
+ GLenum format, GLenum type, /* source */
const struct gl_pixelstore_attrib *unpacking,
const GLvoid *srcImage, GLvoid *dstImage )
{
- struct gl_texture_convert convert;
+ struct convert_info convert;
ASSERT( unpacking );
ASSERT( srcImage );
ASSERT( dstImage );
ASSERT( mesaFormat >= MESA_FORMAT_RGBA8888 );
- ASSERT( mesaFormat <= MESA_FORMAT_CI8 );
+ ASSERT( mesaFormat <= MESA_FORMAT_YCBCR_REV );
/* Make it easier to pass all the parameters around.
*/
@@ -873,7 +969,9 @@ _mesa_convert_texsubimage3d( GLint mesaFormat,
if ( width != dstImageWidth || height != dstImageHeight )
convert.index |= CONVERT_STRIDE_BIT;
- return gl_convert_texsubimage3d_tab[mesaFormat]( &convert );
+ ASSERT(convert.index < 4);
+
+ return convert_texsubimage3d_table[mesaFormat]( &convert );
}
diff --git a/xc/extras/Mesa/src/texutil_tmp.h b/xc/extras/Mesa/src/texutil_tmp.h
index 34fbfd7cf..8669a2da8 100644
--- a/xc/extras/Mesa/src/texutil_tmp.h
+++ b/xc/extras/Mesa/src/texutil_tmp.h
@@ -1,8 +1,6 @@
-/* $Id: texutil_tmp.h,v 1.1.1.3 2002/10/22 13:05:37 alanh Exp $ */
-
/*
* Mesa 3-D graphics library
- * Version: 4.0.2
+ * Version: 4.0.4
*
* Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
*
@@ -28,7 +26,23 @@
*/
/*
- * NOTE: All 3D teximage code is untested and most definitely broken...
+ * For 2D and 3D texture images, we generate functions for
+ * - conversion without pixel unpacking and standard stride
+ * - conversion without pixel unpacking and non-standard stride
+ * - conversion with pixel unpacking and standard stride
+ * - conversion with pixel unpacking and non-standard stride
+ *
+ *
+ * Macros which need to be defined before including this file:
+ * TAG(x) - the function name wrapper
+ * DST_TYPE - the destination texel datatype (GLuint, GLushort, etc)
+ * DST_TEXELS_PER_DWORD - number of dest texels that'll fit in 4 bytes
+ * CONVERT_TEXEL - code to convert from source to dest texel
+ * CONVER_TEXEL_DWORD - if multiple texels fit in 4 bytes, this macros
+ * will convert/store multiple texels at once
+ * CONVERT_DIRECT - if defined, just memcpy texels from src to dest
+ * SRC_TEXEL_BYTES - bytes per source texel
+ * PRESERVE_DST_TYPE - if defined, don't undefined these macros at end
*/
@@ -43,7 +57,7 @@
* PRE: No pixelstore attribs, width == dstImageWidth.
*/
static GLboolean
-TAG(texsubimage2d)( struct gl_texture_convert *convert )
+TAG(texsubimage2d)( const struct convert_info *convert )
{
const GLubyte *src = (const GLubyte *)convert->srcImage;
GLuint *dst = (GLuint *)((GLubyte *)convert->dstImage +
@@ -79,7 +93,7 @@ TAG(texsubimage2d)( struct gl_texture_convert *convert )
/* PRE: As above, height == dstImageHeight also.
*/
static GLboolean
-TAG(texsubimage3d)( struct gl_texture_convert *convert )
+TAG(texsubimage3d)( const struct convert_info *convert )
{
const GLubyte *src = (const GLubyte *)convert->srcImage;
GLuint *dst = (GLuint *)((GLubyte *)convert->dstImage +
@@ -118,7 +132,7 @@ TAG(texsubimage3d)( struct gl_texture_convert *convert )
* PRE: No pixelstore attribs, width != dstImageWidth.
*/
static GLboolean
-TAG(texsubimage2d_stride)( struct gl_texture_convert *convert )
+TAG(texsubimage2d_stride)( const struct convert_info *convert )
{
const GLubyte *src = (const GLubyte *)convert->srcImage;
DST_TYPE *dst = (DST_TYPE *)((GLubyte *)convert->dstImage +
@@ -151,7 +165,7 @@ TAG(texsubimage2d_stride)( struct gl_texture_convert *convert )
/* PRE: As above, or height != dstImageHeight also.
*/
static GLboolean
-TAG(texsubimage3d_stride)( struct gl_texture_convert *convert )
+TAG(texsubimage3d_stride)( const struct convert_info *convert )
{
const GLubyte *src = (const GLubyte *)convert->srcImage;
DST_TYPE *dst = (DST_TYPE *)((GLubyte *)convert->dstImage +
@@ -191,7 +205,7 @@ TAG(texsubimage3d_stride)( struct gl_texture_convert *convert )
* PRE: Require pixelstore attribs, width == dstImageWidth.
*/
static GLboolean
-TAG(texsubimage2d_unpack)( struct gl_texture_convert *convert )
+TAG(texsubimage2d_unpack)( const struct convert_info *convert )
{
const GLubyte *src = (const GLubyte *)
_mesa_image_address( convert->unpacking, convert->srcImage,
@@ -249,7 +263,7 @@ TAG(texsubimage2d_unpack)( struct gl_texture_convert *convert )
/* PRE: as above, height == dstImageHeight also.
*/
static GLboolean
-TAG(texsubimage3d_unpack)( struct gl_texture_convert *convert )
+TAG(texsubimage3d_unpack)( const struct convert_info *convert )
{
const GLubyte *src = (const GLubyte *)
_mesa_image_address( convert->unpacking, convert->srcImage,
@@ -324,7 +338,7 @@ TAG(texsubimage3d_unpack)( struct gl_texture_convert *convert )
* PRE: Require pixelstore attribs, width != dstImageWidth.
*/
static GLboolean
-TAG(texsubimage2d_stride_unpack)( struct gl_texture_convert *convert )
+TAG(texsubimage2d_stride_unpack)( const struct convert_info *convert )
{
const GLubyte *src = (const GLubyte *)
_mesa_image_address( convert->unpacking, convert->srcImage,
@@ -372,7 +386,7 @@ TAG(texsubimage2d_stride_unpack)( struct gl_texture_convert *convert )
/* PRE: As above, or height != dstImageHeight also.
*/
static GLboolean
-TAG(texsubimage3d_stride_unpack)( struct gl_texture_convert *convert )
+TAG(texsubimage3d_stride_unpack)( const struct convert_info *convert )
{
const GLubyte *src = (const GLubyte *)
_mesa_image_address( convert->unpacking, convert->srcImage,
diff --git a/xc/extras/Mesa/src/tnl/t_array_api.c b/xc/extras/Mesa/src/tnl/t_array_api.c
index 060203b81..654ec85b1 100644
--- a/xc/extras/Mesa/src/tnl/t_array_api.c
+++ b/xc/extras/Mesa/src/tnl/t_array_api.c
@@ -1,8 +1,7 @@
-/* $Id: t_array_api.c,v 1.1.1.1 2002/10/22 13:06:23 alanh Exp $ */
/*
* Mesa 3-D graphics library
- * Version: 4.0.3
+ * Version: 4.0.5
*
* Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
*
@@ -178,10 +177,12 @@ _tnl_DrawArrays(GLenum mode, GLint start, GLsizei count)
minimum = 0;
modulo = 1;
skip = 0;
+ break;
case GL_LINES:
minimum = 1;
modulo = 2;
skip = 1;
+ break;
case GL_LINE_STRIP:
minimum = 1;
modulo = 1;
diff --git a/xc/extras/Mesa/src/tnl/t_array_api.h b/xc/extras/Mesa/src/tnl/t_array_api.h
index e83324f5a..c26112bef 100644
--- a/xc/extras/Mesa/src/tnl/t_array_api.h
+++ b/xc/extras/Mesa/src/tnl/t_array_api.h
@@ -1,4 +1,3 @@
-/* $Id: t_array_api.h,v 1.1.1.1 2002/10/22 13:06:23 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_array_import.c b/xc/extras/Mesa/src/tnl/t_array_import.c
index 7bcdac975..75fa9e6d7 100644
--- a/xc/extras/Mesa/src/tnl/t_array_import.c
+++ b/xc/extras/Mesa/src/tnl/t_array_import.c
@@ -1,4 +1,3 @@
-/* $Id: t_array_import.c,v 1.1.1.1 2002/10/22 13:06:18 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_array_import.h b/xc/extras/Mesa/src/tnl/t_array_import.h
index fb4aebbc4..7bc248f71 100644
--- a/xc/extras/Mesa/src/tnl/t_array_import.h
+++ b/xc/extras/Mesa/src/tnl/t_array_import.h
@@ -1,4 +1,3 @@
-/* $Id: t_array_import.h,v 1.1.1.1 2002/10/22 13:06:18 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_context.c b/xc/extras/Mesa/src/tnl/t_context.c
index 029a22368..6595e352e 100644
--- a/xc/extras/Mesa/src/tnl/t_context.c
+++ b/xc/extras/Mesa/src/tnl/t_context.c
@@ -1,4 +1,3 @@
-/* $Id: t_context.c,v 1.1.1.1 2002/10/22 13:06:16 alanh Exp $ */
/*
* Mesa 3-D graphics library
@@ -145,7 +144,8 @@ _tnl_DestroyContext( GLcontext *ctx )
_tnl_array_destroy( ctx );
_tnl_imm_destroy( ctx );
_tnl_destroy_pipeline( ctx );
- _tnl_free_immediate( ctx, tnl->freed_immediate );
+ if (tnl->freed_immediate)
+ _tnl_free_immediate( ctx, tnl->freed_immediate );
FREE(tnl);
ctx->swtnl_context = 0;
diff --git a/xc/extras/Mesa/src/tnl/t_context.h b/xc/extras/Mesa/src/tnl/t_context.h
index c301934f2..2243f7787 100644
--- a/xc/extras/Mesa/src/tnl/t_context.h
+++ b/xc/extras/Mesa/src/tnl/t_context.h
@@ -1,4 +1,3 @@
-/* $Id: t_context.h,v 1.1.1.1 2002/10/22 13:06:17 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_eval_api.c b/xc/extras/Mesa/src/tnl/t_eval_api.c
index 5bd3880df..d3fa033d2 100644
--- a/xc/extras/Mesa/src/tnl/t_eval_api.c
+++ b/xc/extras/Mesa/src/tnl/t_eval_api.c
@@ -1,4 +1,3 @@
-/* $Id: t_eval_api.c,v 1.1.1.1 2002/10/22 13:06:21 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_eval_api.h b/xc/extras/Mesa/src/tnl/t_eval_api.h
index b31a30e7c..0ac6c0b14 100644
--- a/xc/extras/Mesa/src/tnl/t_eval_api.h
+++ b/xc/extras/Mesa/src/tnl/t_eval_api.h
@@ -1,4 +1,3 @@
-/* $Id: t_eval_api.h,v 1.1.1.1 2002/10/22 13:06:21 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_imm_alloc.c b/xc/extras/Mesa/src/tnl/t_imm_alloc.c
index 0cee83712..5c3a046b9 100644
--- a/xc/extras/Mesa/src/tnl/t_imm_alloc.c
+++ b/xc/extras/Mesa/src/tnl/t_imm_alloc.c
@@ -1,4 +1,3 @@
-/* $Id: t_imm_alloc.c,v 1.1.1.1 2002/10/22 13:06:25 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_imm_alloc.h b/xc/extras/Mesa/src/tnl/t_imm_alloc.h
index e560dcc4d..4ece015b1 100644
--- a/xc/extras/Mesa/src/tnl/t_imm_alloc.h
+++ b/xc/extras/Mesa/src/tnl/t_imm_alloc.h
@@ -1,4 +1,3 @@
-/* $Id: t_imm_alloc.h,v 1.1.1.1 2002/10/22 13:06:25 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_imm_api.c b/xc/extras/Mesa/src/tnl/t_imm_api.c
index b9a956ce5..34034a21c 100644
--- a/xc/extras/Mesa/src/tnl/t_imm_api.c
+++ b/xc/extras/Mesa/src/tnl/t_imm_api.c
@@ -1,4 +1,3 @@
-/* $Id: t_imm_api.c,v 1.1.1.1 2002/10/22 13:06:24 alanh Exp $ */
/*
* Mesa 3-D graphics library
@@ -111,6 +110,11 @@ _tnl_save_Begin( GLenum mode )
if (ctx->NewState)
_mesa_update_state(ctx);
+ if (IM->Count > IMM_MAXDATA-8) {
+ _tnl_flush_immediate( IM );
+ IM = TNL_CURRENT_IM(ctx);
+ }
+
/* Check for and flush buffered vertices from internal operations.
*/
if (IM->SavedBeginState) {
@@ -180,6 +184,15 @@ _tnl_Begin( GLenum mode )
{
struct immediate *IM = TNL_CURRENT_IM(ctx);
+ if (IM->Count > IMM_MAXDATA-8) {
+ _tnl_flush_immediate( IM );
+ IM = TNL_CURRENT_IM(ctx);
+ }
+ }
+
+
+ {
+ struct immediate *IM = TNL_CURRENT_IM(ctx);
GLuint count = IM->Count;
GLuint last = IM->LastPrimitive;
@@ -189,8 +202,8 @@ _tnl_Begin( GLenum mode )
return;
}
- assert( IM->SavedBeginState == 0 );
- assert( IM->BeginState == 0 );
+ assert( (IM->SavedBeginState & (VERT_BEGIN_0|VERT_BEGIN_1)) == 0 );
+ assert( (IM->BeginState & (VERT_BEGIN_0|VERT_BEGIN_1)) == 0 );
/* Not quite right. Need to use the fallback '_aa_ArrayElement'
* when not known to be inside begin/end and arrays are
@@ -314,7 +327,10 @@ _tnl_end( GLcontext *ctx )
GLuint state = IM->BeginState;
GLuint inflags = (~state) & (VERT_BEGIN_0|VERT_BEGIN_1);
- assert( ctx->Driver.NeedFlush & FLUSH_STORED_VERTICES );
+ /* Not the case if vertices emitted without calling glBegin first:
+ */
+/* assert( ctx->Driver.NeedFlush & FLUSH_STORED_VERTICES ); */
+
state |= inflags << 2; /* errors */
diff --git a/xc/extras/Mesa/src/tnl/t_imm_api.h b/xc/extras/Mesa/src/tnl/t_imm_api.h
index 101acf651..1ed727466 100644
--- a/xc/extras/Mesa/src/tnl/t_imm_api.h
+++ b/xc/extras/Mesa/src/tnl/t_imm_api.h
@@ -1,4 +1,3 @@
-/* $Id: t_imm_api.h,v 1.1.1.1 2002/10/22 13:06:25 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_imm_debug.c b/xc/extras/Mesa/src/tnl/t_imm_debug.c
index d60300bc3..c6c16c26c 100644
--- a/xc/extras/Mesa/src/tnl/t_imm_debug.c
+++ b/xc/extras/Mesa/src/tnl/t_imm_debug.c
@@ -1,4 +1,3 @@
-/* $Id: t_imm_debug.c,v 1.1.1.1 2002/10/22 13:06:17 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_imm_debug.h b/xc/extras/Mesa/src/tnl/t_imm_debug.h
index 2f9853089..d0cedde50 100644
--- a/xc/extras/Mesa/src/tnl/t_imm_debug.h
+++ b/xc/extras/Mesa/src/tnl/t_imm_debug.h
@@ -1,4 +1,3 @@
-/* $Id: t_imm_debug.h,v 1.1.1.1 2002/10/22 13:06:18 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_imm_dlist.c b/xc/extras/Mesa/src/tnl/t_imm_dlist.c
index c9be06e26..a7d48695b 100644
--- a/xc/extras/Mesa/src/tnl/t_imm_dlist.c
+++ b/xc/extras/Mesa/src/tnl/t_imm_dlist.c
@@ -1,4 +1,3 @@
-/* $Id: t_imm_dlist.c,v 1.1.1.1 2002/10/22 13:06:19 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_imm_dlist.h b/xc/extras/Mesa/src/tnl/t_imm_dlist.h
index c11ebf2e5..eb2a39b6c 100644
--- a/xc/extras/Mesa/src/tnl/t_imm_dlist.h
+++ b/xc/extras/Mesa/src/tnl/t_imm_dlist.h
@@ -1,4 +1,3 @@
-/* $Id: t_imm_dlist.h,v 1.1.1.1 2002/10/22 13:06:19 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_imm_elt.c b/xc/extras/Mesa/src/tnl/t_imm_elt.c
index e153264bb..6a3bf583c 100644
--- a/xc/extras/Mesa/src/tnl/t_imm_elt.c
+++ b/xc/extras/Mesa/src/tnl/t_imm_elt.c
@@ -1,4 +1,3 @@
-/* $Id: t_imm_elt.c,v 1.1.1.1 2002/10/22 13:06:25 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_imm_elt.h b/xc/extras/Mesa/src/tnl/t_imm_elt.h
index d5088edcf..cbc3fd62b 100644
--- a/xc/extras/Mesa/src/tnl/t_imm_elt.h
+++ b/xc/extras/Mesa/src/tnl/t_imm_elt.h
@@ -1,4 +1,3 @@
-/* $Id: t_imm_elt.h,v 1.1.1.1 2002/10/22 13:06:25 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_imm_eval.c b/xc/extras/Mesa/src/tnl/t_imm_eval.c
index e0dd25800..75ac8984e 100644
--- a/xc/extras/Mesa/src/tnl/t_imm_eval.c
+++ b/xc/extras/Mesa/src/tnl/t_imm_eval.c
@@ -1,4 +1,3 @@
-/* $Id: t_imm_eval.c,v 1.1.1.1 2002/10/22 13:06:23 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_imm_eval.h b/xc/extras/Mesa/src/tnl/t_imm_eval.h
index 36bcc1292..58e8a38af 100644
--- a/xc/extras/Mesa/src/tnl/t_imm_eval.h
+++ b/xc/extras/Mesa/src/tnl/t_imm_eval.h
@@ -1,4 +1,3 @@
-/* $Id: t_imm_eval.h,v 1.1.1.1 2002/10/22 13:06:23 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_imm_exec.c b/xc/extras/Mesa/src/tnl/t_imm_exec.c
index 7036a8675..33dc781f1 100644
--- a/xc/extras/Mesa/src/tnl/t_imm_exec.c
+++ b/xc/extras/Mesa/src/tnl/t_imm_exec.c
@@ -1,4 +1,3 @@
-/* $Id: t_imm_exec.c,v 1.1.1.1 2002/10/22 13:06:24 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_imm_exec.h b/xc/extras/Mesa/src/tnl/t_imm_exec.h
index b4ecb9a1b..71170bbef 100644
--- a/xc/extras/Mesa/src/tnl/t_imm_exec.h
+++ b/xc/extras/Mesa/src/tnl/t_imm_exec.h
@@ -1,4 +1,3 @@
-/* $Id: t_imm_exec.h,v 1.1.1.1 2002/10/22 13:06:24 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_imm_fixup.c b/xc/extras/Mesa/src/tnl/t_imm_fixup.c
index 0ce42b458..13ae8795d 100644
--- a/xc/extras/Mesa/src/tnl/t_imm_fixup.c
+++ b/xc/extras/Mesa/src/tnl/t_imm_fixup.c
@@ -1,4 +1,3 @@
-/* $Id: t_imm_fixup.c,v 1.1.1.1 2002/10/22 13:06:20 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_imm_fixup.h b/xc/extras/Mesa/src/tnl/t_imm_fixup.h
index f60896fc7..b0ec903ca 100644
--- a/xc/extras/Mesa/src/tnl/t_imm_fixup.h
+++ b/xc/extras/Mesa/src/tnl/t_imm_fixup.h
@@ -1,4 +1,3 @@
-/* $Id: t_imm_fixup.h,v 1.1.1.1 2002/10/22 13:06:20 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_pipeline.c b/xc/extras/Mesa/src/tnl/t_pipeline.c
index dcd4b27a0..8daa3c0c3 100644
--- a/xc/extras/Mesa/src/tnl/t_pipeline.c
+++ b/xc/extras/Mesa/src/tnl/t_pipeline.c
@@ -1,4 +1,3 @@
-/* $Id: t_pipeline.c,v 1.1.1.1 2002/10/22 13:06:18 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_pipeline.h b/xc/extras/Mesa/src/tnl/t_pipeline.h
index c8b8e0a5a..5e9c31435 100644
--- a/xc/extras/Mesa/src/tnl/t_pipeline.h
+++ b/xc/extras/Mesa/src/tnl/t_pipeline.h
@@ -1,4 +1,3 @@
-/* $Id: t_pipeline.h,v 1.1.1.1 2002/10/22 13:06:18 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_vb_cliptmp.h b/xc/extras/Mesa/src/tnl/t_vb_cliptmp.h
index 351ee782f..9b982f944 100644
--- a/xc/extras/Mesa/src/tnl/t_vb_cliptmp.h
+++ b/xc/extras/Mesa/src/tnl/t_vb_cliptmp.h
@@ -1,4 +1,3 @@
-/* $Id: t_vb_cliptmp.h,v 1.1.1.1 2002/10/22 13:06:21 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_vb_fog.c b/xc/extras/Mesa/src/tnl/t_vb_fog.c
index bddbc6211..30e116ec5 100644
--- a/xc/extras/Mesa/src/tnl/t_vb_fog.c
+++ b/xc/extras/Mesa/src/tnl/t_vb_fog.c
@@ -1,4 +1,3 @@
-/* $Id: t_vb_fog.c,v 1.1.1.1 2002/10/22 13:06:22 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_vb_light.c b/xc/extras/Mesa/src/tnl/t_vb_light.c
index a38c42cf0..24c35b70a 100644
--- a/xc/extras/Mesa/src/tnl/t_vb_light.c
+++ b/xc/extras/Mesa/src/tnl/t_vb_light.c
@@ -1,4 +1,3 @@
-/* $Id: t_vb_light.c,v 1.1.1.1 2002/10/22 13:06:19 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_vb_lighttmp.h b/xc/extras/Mesa/src/tnl/t_vb_lighttmp.h
index 5618d4af7..87562eb95 100644
--- a/xc/extras/Mesa/src/tnl/t_vb_lighttmp.h
+++ b/xc/extras/Mesa/src/tnl/t_vb_lighttmp.h
@@ -1,4 +1,3 @@
-/* $Id: t_vb_lighttmp.h,v 1.1.1.1 2002/10/22 13:06:22 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_vb_normals.c b/xc/extras/Mesa/src/tnl/t_vb_normals.c
index 6ec71d0a0..94b8da896 100644
--- a/xc/extras/Mesa/src/tnl/t_vb_normals.c
+++ b/xc/extras/Mesa/src/tnl/t_vb_normals.c
@@ -1,4 +1,3 @@
-/* $Id: t_vb_normals.c,v 1.1.1.1 2002/10/22 13:06:25 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_vb_points.c b/xc/extras/Mesa/src/tnl/t_vb_points.c
index 57b0142ee..ff0970b71 100644
--- a/xc/extras/Mesa/src/tnl/t_vb_points.c
+++ b/xc/extras/Mesa/src/tnl/t_vb_points.c
@@ -1,4 +1,3 @@
-/* $Id: t_vb_points.c,v 1.1.1.1 2002/10/22 13:06:25 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_vb_render.c b/xc/extras/Mesa/src/tnl/t_vb_render.c
index ac50cad60..8ef4653a5 100644
--- a/xc/extras/Mesa/src/tnl/t_vb_render.c
+++ b/xc/extras/Mesa/src/tnl/t_vb_render.c
@@ -1,4 +1,3 @@
-/* $Id: t_vb_render.c,v 1.1.1.1 2002/10/22 13:06:21 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_vb_rendertmp.h b/xc/extras/Mesa/src/tnl/t_vb_rendertmp.h
index 5e3ad4ff0..2da5a6145 100644
--- a/xc/extras/Mesa/src/tnl/t_vb_rendertmp.h
+++ b/xc/extras/Mesa/src/tnl/t_vb_rendertmp.h
@@ -1,4 +1,3 @@
-/* $Id: t_vb_rendertmp.h,v 1.1.1.1 2002/10/22 13:06:19 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_vb_texgen.c b/xc/extras/Mesa/src/tnl/t_vb_texgen.c
index 1e78644fa..8d37d18b7 100644
--- a/xc/extras/Mesa/src/tnl/t_vb_texgen.c
+++ b/xc/extras/Mesa/src/tnl/t_vb_texgen.c
@@ -1,4 +1,3 @@
-/* $Id: t_vb_texgen.c,v 1.1.1.1 2002/10/22 13:06:26 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_vb_texmat.c b/xc/extras/Mesa/src/tnl/t_vb_texmat.c
index 600ec0e23..eb4f2b58c 100644
--- a/xc/extras/Mesa/src/tnl/t_vb_texmat.c
+++ b/xc/extras/Mesa/src/tnl/t_vb_texmat.c
@@ -1,4 +1,3 @@
-/* $Id: t_vb_texmat.c,v 1.1.1.1 2002/10/22 13:06:26 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_vb_vertex.c b/xc/extras/Mesa/src/tnl/t_vb_vertex.c
index aacda742e..6158c1c8b 100644
--- a/xc/extras/Mesa/src/tnl/t_vb_vertex.c
+++ b/xc/extras/Mesa/src/tnl/t_vb_vertex.c
@@ -1,4 +1,3 @@
-/* $Id: t_vb_vertex.c,v 1.1.1.1 2002/10/22 13:06:17 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/tnl.h b/xc/extras/Mesa/src/tnl/tnl.h
index dc2af3946..1d4fb0d18 100644
--- a/xc/extras/Mesa/src/tnl/tnl.h
+++ b/xc/extras/Mesa/src/tnl/tnl.h
@@ -1,4 +1,3 @@
-/* $Id: tnl.h,v 1.1.1.1 2002/10/22 13:06:18 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl_dd/t_dd.c b/xc/extras/Mesa/src/tnl_dd/t_dd.c
index 967bab66a..7a10f1d99 100644
--- a/xc/extras/Mesa/src/tnl_dd/t_dd.c
+++ b/xc/extras/Mesa/src/tnl_dd/t_dd.c
@@ -1,4 +1,3 @@
-/* $Id: t_dd.c,v 1.1.1.1 2002/10/22 13:07:01 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl_dd/t_dd_dmatmp.h b/xc/extras/Mesa/src/tnl_dd/t_dd_dmatmp.h
index 99a818b4e..50212f5e7 100644
--- a/xc/extras/Mesa/src/tnl_dd/t_dd_dmatmp.h
+++ b/xc/extras/Mesa/src/tnl_dd/t_dd_dmatmp.h
@@ -1,4 +1,3 @@
-/* $Id: t_dd_dmatmp.h,v 1.1.1.1 2002/10/22 13:07:01 alanh Exp $ */
/*
* Mesa 3-D graphics library
@@ -240,17 +239,25 @@ static void TAG(render_line_loop_verts)( GLcontext *ctx,
currentsz--;
dmasz--;
- if (currentsz < 8)
- currentsz = dmasz;
-
- for ( ; j + 1 < count; j += nr - 1 ) {
- nr = MIN2( currentsz, count - j );
- EMIT_VERTS( ctx, j, nr );
+ if (currentsz < 8) {
+ NEW_BUFFER();
currentsz = dmasz;
}
- if (start < count - 1 && (flags & PRIM_END))
+ if (j + 1 < count) {
+ for ( ; j + 1 < count; j += nr - 1 ) {
+ nr = MIN2( currentsz, count - j );
+ EMIT_VERTS( ctx, j, nr );
+ currentsz = dmasz;
+ }
+
+ if (start < count - 1 && (flags & PRIM_END))
+ EMIT_VERTS( ctx, start, 1 );
+ }
+ else if (start + 1 < count && (flags & PRIM_END)) {
+ EMIT_VERTS( ctx, start+1, 1 );
EMIT_VERTS( ctx, start, 1 );
+ }
FINISH;
diff --git a/xc/extras/Mesa/src/tnl_dd/t_dd_dmatmp2.h b/xc/extras/Mesa/src/tnl_dd/t_dd_dmatmp2.h
index 789533aa2..6a33c50f1 100644
--- a/xc/extras/Mesa/src/tnl_dd/t_dd_dmatmp2.h
+++ b/xc/extras/Mesa/src/tnl_dd/t_dd_dmatmp2.h
@@ -1,4 +1,3 @@
-/* $Id: t_dd_dmatmp2.h,v 1.1.1.1 2002/10/22 13:07:01 alanh Exp $ */
/*
* Mesa 3-D graphics library
@@ -26,6 +25,7 @@
* Authors:
* Keith Whitwell <keith@tungstengraphics.com>
*/
+/* $XFree86: xc/extras/Mesa/src/tnl_dd/t_dd_dmatmp2.h,v 1.2 2002/11/05 17:46:07 tsi Exp $ */
/* Template for render stages which build and emit vertices directly
@@ -113,9 +113,11 @@ static void TAG(render_points_verts)( GLcontext *ctx,
GLuint count,
GLuint flags )
{
- LOCAL_VARS;
- if (0) fprintf(stderr, "%s\n", __FUNCTION__);
- EMIT_PRIM( ctx, GL_POINTS, HW_POINTS, start, count );
+ if (start < count) {
+ LOCAL_VARS;
+ if (0) fprintf(stderr, "%s\n", __FUNCTION__);
+ EMIT_PRIM( ctx, GL_POINTS, HW_POINTS, start, count );
+ }
}
static void TAG(render_lines_verts)( GLcontext *ctx,
@@ -157,7 +159,7 @@ static void TAG(render_line_strip_verts)( GLcontext *ctx,
RESET_STIPPLE();
- if (PREFER_DISCREET_ELT_PRIM( count-start, HW_LINES ))
+ if (PREFER_DISCRETE_ELT_PRIM( count-start, HW_LINES ))
{
int dmasz = GET_SUBSEQUENT_VB_MAX_ELTS();
int currentsz;
@@ -221,7 +223,7 @@ static void TAG(render_line_loop_verts)( GLcontext *ctx,
if (start+1 >= count)
return;
- if (PREFER_DISCREET_ELT_PRIM( count-start, HW_LINES )) {
+ if (PREFER_DISCRETE_ELT_PRIM( count-start, HW_LINES )) {
int dmasz = GET_SUBSEQUENT_VB_MAX_ELTS();
int currentsz;
@@ -335,7 +337,7 @@ static void TAG(render_triangles_verts)( GLcontext *ctx,
return;
}
- /* need a PREFER_DISCREET_ELT_PRIM here too..
+ /* need a PREFER_DISCRETE_ELT_PRIM here too..
*/
EMIT_PRIM( ctx, GL_TRIANGLES, HW_TRIANGLES, start, count );
}
@@ -353,7 +355,7 @@ static void TAG(render_tri_strip_verts)( GLcontext *ctx,
if (start + 2 >= count)
return;
- if (PREFER_DISCREET_ELT_PRIM( count-start, HW_TRIANGLES ))
+ if (PREFER_DISCRETE_ELT_PRIM( count-start, HW_TRIANGLES ))
{
int dmasz = GET_SUBSEQUENT_VB_MAX_ELTS();
int currentsz;
@@ -435,7 +437,7 @@ static void TAG(render_tri_fan_verts)( GLcontext *ctx,
if (start+2 >= count)
return;
- if (PREFER_DISCREET_ELT_PRIM( count-start, HW_TRIANGLES ))
+ if (PREFER_DISCRETE_ELT_PRIM( count-start, HW_TRIANGLES ))
{
int dmasz = GET_SUBSEQUENT_VB_MAX_ELTS();
int currentsz;
@@ -509,7 +511,6 @@ static void TAG(render_quad_strip_verts)( GLcontext *ctx,
EMIT_PRIM( ctx, GL_QUAD_STRIP, HW_QUAD_STRIP, start, count );
}
else if (ctx->_TriangleCaps & DD_FLATSHADE) {
- LOCAL_VARS;
int dmasz = GET_SUBSEQUENT_VB_MAX_ELTS();
int currentsz;
GLuint j, nr;
@@ -575,7 +576,6 @@ static void TAG(render_quads_verts)( GLcontext *ctx,
/* Hardware doesn't have a quad primitive type -- simulate it
* using indexed vertices and the triangle primitive:
*/
- LOCAL_VARS;
int dmasz = GET_SUBSEQUENT_VB_MAX_ELTS();
int currentsz;
GLuint j, nr;
diff --git a/xc/extras/Mesa/src/tnl_dd/t_dd_rendertmp.h b/xc/extras/Mesa/src/tnl_dd/t_dd_rendertmp.h
index 7a05a65f5..2034584af 100644
--- a/xc/extras/Mesa/src/tnl_dd/t_dd_rendertmp.h
+++ b/xc/extras/Mesa/src/tnl_dd/t_dd_rendertmp.h
@@ -1,4 +1,3 @@
-/* $Id: t_dd_rendertmp.h,v 1.1.1.1 2002/10/22 13:07:01 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl_dd/t_dd_triemit.h b/xc/extras/Mesa/src/tnl_dd/t_dd_triemit.h
new file mode 100644
index 000000000..07a0b016e
--- /dev/null
+++ b/xc/extras/Mesa/src/tnl_dd/t_dd_triemit.h
@@ -0,0 +1,158 @@
+/* $XFree86: xc/extras/Mesa/src/tnl_dd/t_dd_triemit.h,v 1.1 2002/10/30 12:51:24 alanh Exp $ */
+#ifndef DO_DEBUG_VERTS
+#define DO_DEBUG_VERTS 0
+#endif
+
+#ifndef PRINT_VERTEX
+#define PRINT_VERTEX(x)
+#endif
+
+#if defined(USE_X86_ASM)
+#define COPY_DWORDS( j, vb, vertsize, v ) \
+do { \
+ int __tmp; \
+ __asm__ __volatile__( "rep ; movsl" \
+ : "=%c" (j), "=D" (vb), "=S" (__tmp) \
+ : "0" (vertsize), \
+ "D" ((long)vb), \
+ "S" ((long)v) ); \
+} while (0)
+#else
+#define COPY_DWORDS( j, vb, vertsize, v ) \
+do { \
+ for ( j = 0 ; j < vertsize ; j++ ) \
+ vb[j] = ((GLuint *)v)[j]; \
+ vb += vertsize; \
+} while (0)
+#endif
+
+
+
+#if HAVE_QUADS
+static __inline void TAG(quad)( CTX_ARG,
+ VERTEX *v0,
+ VERTEX *v1,
+ VERTEX *v2,
+ VERTEX *v3 )
+{
+ GLuint vertsize = GET_VERTEX_DWORDS();
+ GLuint *vb = (GLuint *)ALLOC_VERTS( 4, vertsize);
+ GLuint j;
+
+ if (DO_DEBUG_VERTS) {
+ fprintf(stderr, "%s\n", __FUNCTION__);
+ PRINT_VERTEX(v0);
+ PRINT_VERTEX(v1);
+ PRINT_VERTEX(v2);
+ PRINT_VERTEX(v3);
+ }
+
+ COPY_DWORDS( j, vb, vertsize, v0 );
+ COPY_DWORDS( j, vb, vertsize, v1 );
+ COPY_DWORDS( j, vb, vertsize, v2 );
+ COPY_DWORDS( j, vb, vertsize, v3 );
+}
+#else
+static __inline void TAG(quad)( CTX_ARG,
+ VERTEX *v0,
+ VERTEX *v1,
+ VERTEX *v2,
+ VERTEX *v3 )
+{
+ GLuint vertsize = GET_VERTEX_DWORDS();
+ GLuint *vb = (GLuint *)ALLOC_VERTS( 6, vertsize);
+ GLuint j;
+
+ if (DO_DEBUG_VERTS) {
+ fprintf(stderr, "%s\n", __FUNCTION__);
+ PRINT_VERTEX(v0);
+ PRINT_VERTEX(v1);
+ PRINT_VERTEX(v2);
+ PRINT_VERTEX(v3);
+ }
+
+ COPY_DWORDS( j, vb, vertsize, v0 );
+ COPY_DWORDS( j, vb, vertsize, v1 );
+ COPY_DWORDS( j, vb, vertsize, v3 );
+ COPY_DWORDS( j, vb, vertsize, v1 );
+ COPY_DWORDS( j, vb, vertsize, v2 );
+ COPY_DWORDS( j, vb, vertsize, v3 );
+}
+#endif
+
+
+static __inline void TAG(triangle)( CTX_ARG,
+ VERTEX *v0,
+ VERTEX *v1,
+ VERTEX *v2 )
+{
+ GLuint vertsize = GET_VERTEX_DWORDS();
+ GLuint *vb = (GLuint *)ALLOC_VERTS( 3, vertsize);
+ GLuint j;
+
+ if (DO_DEBUG_VERTS) {
+ fprintf(stderr, "%s\n", __FUNCTION__);
+ PRINT_VERTEX(v0);
+ PRINT_VERTEX(v1);
+ PRINT_VERTEX(v2);
+ }
+
+ COPY_DWORDS( j, vb, vertsize, v0 );
+ COPY_DWORDS( j, vb, vertsize, v1 );
+ COPY_DWORDS( j, vb, vertsize, v2 );
+}
+
+
+#if HAVE_LINES
+static __inline void TAG(line)( CTX_ARG,
+ VERTEX *v0,
+ VERTEX *v1 )
+{
+ GLuint vertsize = GET_VERTEX_DWORDS();
+ GLuint *vb = (GLuint *)ALLOC_VERTS( 2, vertsize);
+ GLuint j;
+
+ COPY_DWORDS( j, vb, vertsize, v0 );
+ COPY_DWORDS( j, vb, vertsize, v1 );
+}
+#endif
+
+#if HAVE_POINTS
+static __inline void TAG(point)( CTX_ARG,
+ VERTEX *v0 )
+{
+ GLuint vertsize = GET_VERTEX_DWORDS();
+ GLuint *vb = (GLuint *)ALLOC_VERTS( 1, vertsize);
+ int j;
+
+ COPY_DWORDS( j, vb, vertsize, v0 );
+}
+#endif
+
+
+static void TAG(fast_clipped_poly)( GLcontext *ctx, const GLuint *elts,
+ GLuint n )
+{
+ LOCAL_VARS
+ GLuint vertsize = GET_VERTEX_DWORDS();
+ GLuint *vb = (GLuint *)ALLOC_VERTS( (n-2) * 3, vertsize );
+ const GLuint *start = (const GLuint *)VERT(elts[0]);
+ int i,j;
+
+ if (DO_DEBUG_VERTS) {
+ fprintf(stderr, "%s\n", __FUNCTION__);
+ PRINT_VERTEX(VERT(elts[0]));
+ PRINT_VERTEX(VERT(elts[1]));
+ }
+
+ for (i = 2 ; i < n ; i++) {
+ if (DO_DEBUG_VERTS) {
+ PRINT_VERTEX(VERT(elts[i]));
+ }
+
+ COPY_DWORDS( j, vb, vertsize, VERT(elts[i-1]) );
+ COPY_DWORDS( j, vb, vertsize, VERT(elts[i]) );
+ COPY_DWORDS( j, vb, vertsize, start );
+ }
+}
+
diff --git a/xc/extras/Mesa/src/tnl_dd/t_dd_tritmp.h b/xc/extras/Mesa/src/tnl_dd/t_dd_tritmp.h
index 8cd4a6f3f..27e90e0cf 100644
--- a/xc/extras/Mesa/src/tnl_dd/t_dd_tritmp.h
+++ b/xc/extras/Mesa/src/tnl_dd/t_dd_tritmp.h
@@ -1,4 +1,3 @@
-/* $Id: t_dd_tritmp.h,v 1.1.1.1 2002/10/22 13:06:59 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl_dd/t_dd_unfilled.h b/xc/extras/Mesa/src/tnl_dd/t_dd_unfilled.h
index b41525bb1..759efe3e8 100644
--- a/xc/extras/Mesa/src/tnl_dd/t_dd_unfilled.h
+++ b/xc/extras/Mesa/src/tnl_dd/t_dd_unfilled.h
@@ -1,4 +1,3 @@
-/* $Id: t_dd_unfilled.h,v 1.1.1.1 2002/10/22 13:06:59 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl_dd/t_dd_vb.c b/xc/extras/Mesa/src/tnl_dd/t_dd_vb.c
index 179ae8d26..3ba8fb3d8 100644
--- a/xc/extras/Mesa/src/tnl_dd/t_dd_vb.c
+++ b/xc/extras/Mesa/src/tnl_dd/t_dd_vb.c
@@ -1,4 +1,3 @@
-/* $Id: t_dd_vb.c,v 1.1.1.1 2002/10/22 13:07:02 alanh Exp $ */
/*
* Mesa 3-D graphics library
@@ -195,22 +194,78 @@ void TAG(print_vertex)( GLcontext *ctx, const VERTEX *v )
LOCALVARS
GLuint format = GET_VERTEX_FORMAT();
- if (format == TINY_VERTEX_FORMAT) {
- fprintf(stderr, "x %f y %f z %f\n", v->v.x, v->v.y, v->v.z);
- fprintf(stderr, "r %d g %d b %d a %d\n",
+ fprintf(stderr, "(%x) ", format);
+
+ switch (format) {
+#if HAVE_TINY_VERTICES
+ case TINY_VERTEX_FORMAT:
+ fprintf(stderr, "xyz %.4f,%.4f,%.4f rgba %x:%x:%x:%x\n",
+ v->v.x, v->v.y, v->v.z,
v->tv.color.red,
v->tv.color.green,
v->tv.color.blue,
v->tv.color.alpha);
- }
- else {
- fprintf(stderr, "x %f y %f z %f oow %f\n",
- v->v.x, v->v.y, v->v.z, v->v.w);
- fprintf(stderr, "r %d g %d b %d a %d\n",
+ break;
+#endif
+#if HAVE_NOTEX_VERTICES
+ case NOTEX_VERTEX_FORMAT:
+ fprintf(stderr, "xyzw %.4f,%.4f,%.4f,%.4f rgba %x:%x:%x:%x spec %x:%x:%x:%x\n",
+ v->v.x, v->v.y, v->v.z, v->v.w,
+ v->v.color.red,
+ v->v.color.green,
+ v->v.color.blue,
+ v->v.color.alpha,
+ v->v.specular.red,
+ v->v.specular.green,
+ v->v.specular.blue,
+ v->v.specular.alpha);
+ break;
+#endif
+#if HAVE_TEX0_VERTICES
+ case TEX0_VERTEX_FORMAT:
+ fprintf(stderr, "xyzw %.4f,%.4f,%.4f,%.4f rgba %x:%x:%x:%x st %.4f,%.4f\n",
+ v->v.x, v->v.y, v->v.z, v->v.w,
+ v->v.color.red,
+ v->v.color.green,
+ v->v.color.blue,
+ v->v.color.alpha,
+ v->v.u0,
+ v->v.v0);
+ break;
+#endif
+#if HAVE_TEX1_VERTICES
+ case TEX1_VERTEX_FORMAT:
+ fprintf(stderr, "xyzw %.4f,%.4f,%.4f,%.4f rgba %x:%x:%x:%x st %.4f,%.4f st %.4f,%.4f\n",
+ v->v.x, v->v.y, v->v.z, v->v.w,
+ v->v.color.red,
+ v->v.color.green,
+ v->v.color.blue,
+ v->v.color.alpha,
+ v->v.u0,
+ v->v.v0,
+ v->v.u1,
+ v->v.u2);
+ break;
+#endif
+#if HAVE_PTEX_VERTICES
+ case PROJ_TEX1_VERTEX_FORMAT:
+ fprintf(stderr, "xyzw %.4f,%.4f,%.4f,%.4f rgba %x:%x:%x:%x stq %.4f,%.4f,%.4f stq %.4f,%.4f,%.4f\n",
+ v->v.x, v->v.y, v->v.z, v->v.w,
v->v.color.red,
v->v.color.green,
v->v.color.blue,
- v->v.color.alpha);
+ v->v.color.alpha,
+ v->pv.u0,
+ v->pv.v0,
+ v->pv.q0,
+ v->pv.u1,
+ v->pv.v1,
+ v->pv.q1);
+ break;
+#endif
+ default:
+ fprintf(stderr, "???\n");
+ break;
}
fprintf(stderr, "\n");
diff --git a/xc/extras/Mesa/src/tnl_dd/t_dd_vbtmp.h b/xc/extras/Mesa/src/tnl_dd/t_dd_vbtmp.h
index 16bd770bb..b486db5bd 100644
--- a/xc/extras/Mesa/src/tnl_dd/t_dd_vbtmp.h
+++ b/xc/extras/Mesa/src/tnl_dd/t_dd_vbtmp.h
@@ -1,4 +1,3 @@
-/* $Id: t_dd_vbtmp.h,v 1.1.1.1 2002/10/22 13:07:00 alanh Exp $ */
/*
* Mesa 3-D graphics library
@@ -216,7 +215,7 @@ static void TAG(emit)( GLcontext *ctx,
}
}
- if (VB->importable_data) {
+ if (VB->importable_data || (DO_SPEC && !spec_stride) || (DO_FOG && !fog_stride)) {
/* May have nonstandard strides:
*/
if (start) {
@@ -708,7 +707,7 @@ static void TAG(interp)( GLcontext *ctx,
}
}
else if (DO_PTEX) {
- dst->pv.q0 = 0.0; /* must be a valid float on radeon */
+ dst->pv.q1 = 0.0; /* must be a valid float on radeon */
}
if (DO_TEX2) {
if (DO_PTEX) {
diff --git a/xc/extras/Mesa/src/tnl_dd/t_dd_vertex.h b/xc/extras/Mesa/src/tnl_dd/t_dd_vertex.h
index 51639b5f6..a456f72b9 100644
--- a/xc/extras/Mesa/src/tnl_dd/t_dd_vertex.h
+++ b/xc/extras/Mesa/src/tnl_dd/t_dd_vertex.h
@@ -1,4 +1,3 @@
-/* $Id: t_dd_vertex.h,v 1.1.1.1 2002/10/22 13:07:00 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/vtxfmt.c b/xc/extras/Mesa/src/vtxfmt.c
index 43abb9889..861977673 100644
--- a/xc/extras/Mesa/src/vtxfmt.c
+++ b/xc/extras/Mesa/src/vtxfmt.c
@@ -1,4 +1,3 @@
-/* $Id: vtxfmt.c,v 1.1.1.1 2002/10/22 13:05:49 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/vtxfmt.h b/xc/extras/Mesa/src/vtxfmt.h
index 14ab79e7d..e7fd2097d 100644
--- a/xc/extras/Mesa/src/vtxfmt.h
+++ b/xc/extras/Mesa/src/vtxfmt.h
@@ -1,4 +1,3 @@
-/* $Id: vtxfmt.h,v 1.1.1.1 2002/10/22 13:05:49 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/vtxfmt_tmp.h b/xc/extras/Mesa/src/vtxfmt_tmp.h
index ca11e772c..a814c530d 100644
--- a/xc/extras/Mesa/src/vtxfmt_tmp.h
+++ b/xc/extras/Mesa/src/vtxfmt_tmp.h
@@ -1,4 +1,3 @@
-/* $Id: vtxfmt_tmp.h,v 1.1.1.1 2002/10/22 13:05:07 alanh Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/X-TrueType/xttcconv.c b/xc/extras/X-TrueType/xttcconv.c
index 3b4b82633..97a5d1e11 100644
--- a/xc/extras/X-TrueType/xttcconv.c
+++ b/xc/extras/X-TrueType/xttcconv.c
@@ -30,7 +30,7 @@
Notice===
*/
-/* $XFree86: xc/extras/X-TrueType/xttcconv.c,v 1.10 2001/03/06 18:54:39 dawes Exp $ */
+/* $XFree86: xc/extras/X-TrueType/xttcconv.c,v 1.11 2003/02/25 22:10:15 dawes Exp $ */
#include "xttversion.h"
@@ -510,14 +510,40 @@ codeconv_search_code_converter(char const *charsetName,
{
char **l;
char **tryItFirst = NULL;
-
- for (l=list; *l ; l++) {
- if(!mystrcasecmp(*l,moduleArg.charSetHints->charsetStdName)) {
- tryItFirst = l;
- break;
- }
- }
-
+ char **fallback_try = NULL;
+
+ for (l=list; *l ; l++) {
+ int breaking=0;
+ char *tmp_left=NULL;
+ char *mark_underscore=NULL;
+ tmp_left=xstrdup(*l);
+ mark_underscore=strrchr(tmp_left,'_');
+ if( mark_underscore != NULL ){
+ *mark_underscore = '\0';
+ if( !mystrcasecmp(tmp_left,moduleArg.charSetHints->charsetStdName) ){
+ if( !mystrcasecmp( mark_underscore+1,moduleArg.charSetHints->charsetEncoding ) ){
+ tryItFirst = l;
+ breaking=1;
+ }
+ }
+ }
+ else{
+ if(!mystrcasecmp(*l,moduleArg.charSetHints->charsetStdName)) {
+ tryItFirst = l;
+ breaking=1;
+ }
+ }
+ if( fallback_try == NULL ){
+ if( !mystrcasecmp(*l,"ISO8859_1") ){
+ fallback_try = l;
+ }
+ }
+ if( tmp_left ) xfree(tmp_left);
+ if( breaking ) break;
+ }
+#if 1
+ if( tryItFirst == NULL ) tryItFirst=fallback_try;
+#endif
if(tryItFirst)
l = tryItFirst;
else
diff --git a/xc/extras/X-TrueType/xttfuncs.c b/xc/extras/X-TrueType/xttfuncs.c
index f71b588e5..23583697e 100644
--- a/xc/extras/X-TrueType/xttfuncs.c
+++ b/xc/extras/X-TrueType/xttfuncs.c
@@ -31,7 +31,7 @@
Notice===
*/
-/* $XFree86: xc/extras/X-TrueType/xttfuncs.c,v 1.12 2002/09/16 18:05:17 eich Exp $ */
+/* $XFree86: xc/extras/X-TrueType/xttfuncs.c,v 1.17 2003/02/17 03:59:22 dawes Exp $ */
#include "xttversion.h"
@@ -566,7 +566,7 @@ get_metrics(FreeTypeFont *ft, int c, struct xtt_char_width char_width)
/*
* Check invalid char index.
*/
- if ( c <= 0 ) {
+ if ( c < 0 ) {
charInfo = &nocharinfo;
goto next;
}
@@ -770,7 +770,7 @@ get_glyph(FreeTypeFont *ft, int c, int spacing)
/*
* Check invalid char index.
*/
- if ( c <= 0 ) {
+ if ( c < 0 ) {
charInfo = &nocharinfo;
goto next;
}
@@ -850,7 +850,7 @@ get_glyph(FreeTypeFont *ft, int c, int spacing)
ft->map.rows = height;
bytes = (width + 7) / 8;
- /* aligenment */
+ /* alignment */
bytes = (bytes + (glyph) - 1) & -glyph;
ft->map.cols = bytes;
ft->map.width = width;
@@ -862,6 +862,7 @@ get_glyph(FreeTypeFont *ft, int c, int spacing)
goto next;
}
ft->map.bitmap = charInfo->bits;
+ if ( ft->map.bitmap == NULL ) goto next;
/*
* draw a sbit or an outline glyph
@@ -898,6 +899,7 @@ FreeTypeGetGlyphs (FontPtr pFont,
CharInfoPtr *glyphsBase = glyphs;
int spacing = 0;
+ int i,nullbits,ncmark;
dprintf((stderr, "FreeTypeGetGlyphs: %p %d\n", pFont, count));
@@ -913,40 +915,101 @@ FreeTypeGetGlyphs (FontPtr pFont,
break;
}
- switch (encoding) {
- case Linear8Bit:
- case TwoD8Bit:
- while (count--) {
- unsigned c = *chars++;
- c = ft->codeConverterInfo.ptrCodeConverter(c);
- dprintf((stderr, "%04x\n", c));
- *glyphs++ = get_glyph(ft, TT_Char_Index(ft->charmap, c), spacing);
- }
- break;
- case Linear16Bit:
- case TwoD16Bit:
- while (count--) {
- unsigned c1, c2;
+ while (count--) {
+ unsigned int c1=0, c2;
+
+ *glyphs = &nocharinfo;
+ switch (encoding) {
+ case Linear8Bit:
+ case TwoD8Bit:
+ c1 = *chars++;
+ dprintf((stderr, "%04x\n", c1));
+ break;
+ case Linear16Bit:
+ case TwoD16Bit:
c1 = *chars++;
c2 = *chars++;
- dprintf((stderr, "code: %02x%02x ->", c1,c2));
- if (!(c1 >= pFont->info.firstRow &&
- c1 <= pFont->info.lastRow &&
- c2 >= pFont->info.firstCol &&
- c2 <= pFont->info.lastCol)) {
- *glyphs++ = &nocharinfo;
- dprintf((stderr, "invalid code\n"));
+ dprintf((stderr, "code: %02x%02x", c1,c2));
+ if (c1 >= pFont->info.firstRow &&
+ c1 <= pFont->info.lastRow &&
+ c2 >= pFont->info.firstCol &&
+ c2 <= pFont->info.lastCol) {
+ c1 = (c1<<8|c2);
} else {
- c1 = ft->codeConverterInfo.ptrCodeConverter(c1<<8|c2);
- dprintf((stderr, "%04x\n", c1));
- *glyphs++ = get_glyph(ft, TT_Char_Index(ft->charmap, c1),
- spacing);
+ dprintf((stderr, ", out of range. We use nocharinfo.\n"));
+ *glyphs = &nocharinfo;
+ goto next;
}
+ break;
+ default:
+ goto next;
}
- break;
+
+ c1 = ft->codeConverterInfo.ptrCodeConverter(c1);
+ dprintf((stderr, " ->%04x\n ->", c1));
+ c1 = TT_Char_Index(ft->charmap, c1);
+ dprintf((stderr, "%d\n", c1));
+ *glyphs = get_glyph(ft, c1, spacing);
+
+ next:
+#if 1
+ /* fallback for XAA */
+ if ( *glyphs == &nocharinfo ) {
+ dprintf((stderr, "nocharinfo causes a server crash. Instead We use .notdef glyph.\n"));
+ *glyphs = get_glyph(ft, 0, spacing);
+ }
+#endif
+ glyphs++;
}
*pCount = glyphs - glyphsBase;
+
+ /*
+ (pci)->bits == NULL crashes the Server when gHeight is not zero.
+ So we must check each value of (pci)->bits. Since operation of
+ cash intervenes, this "for () loop" *MUST* be independent of
+ the upper "while () loop".
+ Dec.26,2002 Chisato Yamauchi
+ */
+ dprintf((stderr, "AddressCheckBegin *pCount=%d\n",*pCount));
+ nullbits=0;
+ ncmark=-1;
+ for ( i=0 ; i<*pCount ; i++ ) {
+ /* Marking nocharinfo */
+ if ( glyphsBase[i] == &nocharinfo ) {
+ if ( ncmark == -1 ) ncmark=i;
+ }
+ else {
+ dprintf((stderr,"[%d]:%x\n",i,glyphsBase[i]->bits));
+ if ( glyphsBase[i]->bits == NULL ) {
+ glyphsBase[i]->metrics.ascent=0;
+ glyphsBase[i]->metrics.descent=0;
+ nullbits++;
+ }
+ /*
+ The XFree86 sometimes allocates memory with the value of maxbounds.ascent
+ and maxbounds.descent.
+ So (*glyphs)->ascent must not become larger than maxbounds.ascent.
+ This is the same also about descent.
+ */
+ if ( pFont->info.maxbounds.ascent < glyphsBase[i]->metrics.ascent ) {
+ dprintf((stderr, " Invalid ascent : maxbounds.ascent=%d metrics.ascent=%d [corrected]\n",
+ pFont->info.maxbounds.ascent,glyphsBase[i]->metrics.ascent));
+ glyphsBase[i]->metrics.ascent = pFont->info.maxbounds.ascent;
+ }
+ if ( pFont->info.maxbounds.descent < glyphsBase[i]->metrics.descent ) {
+ dprintf((stderr, " Invalid descent : maxbounds.descent=%d metrics.descent=%d [corrected]\n",
+ pFont->info.maxbounds.descent,glyphsBase[i]->metrics.descent));
+ glyphsBase[i]->metrics.descent = pFont->info.maxbounds.descent;
+ }
+ }
+ }
+#if 1
+ /* Never return an address outside cache(for XAA). */
+ if ( ncmark != -1 ) *pCount = ncmark;
+#endif
+ dprintf((stderr, "AddressCheckEnd i=%d nullbits=%d\n",i,nullbits));
+
return Successful;
}
@@ -960,7 +1023,8 @@ FreeTypeGetMetrics (FontPtr pFont,
{
FreeTypeFont *ft = (FreeTypeFont*) pFont->fontPrivate;
xCharInfo **glyphsBase = glyphs;
- unsigned int c;
+ unsigned int c=0,c2;
+ int i;
/*dprintf((stderr, "FreeTypeGetMetrics: %d\n", count));*/
if (ft->spacing == 'm' || ft->spacing == 'p') {
@@ -972,33 +1036,64 @@ FreeTypeGetMetrics (FontPtr pFont,
} else
char_width.pixel = char_width.raw = 0;
- switch (encoding) {
- case Linear8Bit:
- case TwoD8Bit:
- while (count--) {
+ while (count--) {
+ *glyphs = &(&nocharinfo)->metrics;
+ switch (encoding) {
+ case Linear8Bit:
+ case TwoD8Bit:
c = *chars++;
-/* dprintf((stderr, "code: %04x ->", c));*/
- c = ft->codeConverterInfo.ptrCodeConverter(c);
-/* dprintf((stderr, "%04x\n", c));*/
- *glyphs++ =
- get_metrics(ft, TT_Char_Index(ft->charmap, c),
- char_width);
+ break;
+ case Linear16Bit:
+ case TwoD16Bit:
+ c = *chars++;
+ c2 = *chars++;
+ if (c >= pFont->info.firstRow &&
+ c <= pFont->info.lastRow &&
+ c2 >= pFont->info.firstCol &&
+ c2 <= pFont->info.lastCol) {
+ c = (c<<8|c2);
+ } else {
+ *glyphs = &(&nocharinfo)->metrics;
+ goto next;
+ }
+ break;
+ default:
+ goto next;
}
- break;
- case Linear16Bit:
- case TwoD16Bit:
- while (count--) {
- c = *chars++ << 8; c |= *chars++;
-/* dprintf((stderr, "code: %04x ->", c));*/
- c = ft->codeConverterInfo.ptrCodeConverter(c);
-/* dprintf((stderr, "%04x\n", c));*/
- *glyphs++ =
- get_metrics(ft, TT_Char_Index(ft->charmap, c),
- char_width);
+ /* dprintf((stderr, "code: %04x ->", c));*/
+ c = ft->codeConverterInfo.ptrCodeConverter(c);
+ /* dprintf((stderr, "%04x\n", c));*/
+ *glyphs = get_metrics(ft, TT_Char_Index(ft->charmap, c),
+ char_width);
+ next:
+#if 1
+ /* fallback */
+ if ( *glyphs == &(&nocharinfo)->metrics ) {
+ dprintf((stderr, "nocharinfo -> Instead We use .notdef glyph.\n"));
+ *glyphs = get_metrics(ft, 0, char_width);
}
- break;
+#endif
+ glyphs++;
}
*pCount = glyphs - glyphsBase;
+ /*
+ The XFree86 sometimes allocates memory with the value of maxbounds.ascent
+ and maxbounds.descent.
+ So (*glyphs)->ascent must not become larger than maxbounds.ascent.
+ This is the same also about descent.
+ */
+ for ( i=0 ; i<*pCount ; i++ ) {
+ if ( pFont->info.maxbounds.ascent < glyphsBase[i]->ascent ) {
+ dprintf((stderr, " Invalid ascent : maxbounds.ascent=%d metrics.ascent=%d [corrected]\n",
+ pFont->info.maxbounds.ascent,glyphsBase[i]->ascent));
+ glyphsBase[i]->ascent = pFont->info.maxbounds.ascent;
+ }
+ if ( pFont->info.maxbounds.descent < glyphsBase[i]->descent ) {
+ dprintf((stderr, " Invalid descent : maxbounds.descent=%d metrics.descent=%d [corrected]\n",
+ pFont->info.maxbounds.descent,glyphsBase[i]->descent));
+ glyphsBase[i]->descent = pFont->info.maxbounds.descent;
+ }
+ }
} else { /* -c- */
switch (encoding) {
case Linear8Bit:
@@ -2079,8 +2174,12 @@ XTrueTypeRegisterFontFileFunctions()
/* reset */
/* register */
- for (i=0;i<sizeof(renderers)/sizeof(renderers[0]);i++)
- FontFileRegisterRenderer(renderers + i);
+ for (i=0;i<sizeof(renderers)/sizeof(renderers[0]);i++) {
+ /* If the user has both the FreeType and the X-TT backends
+ linked in, he probably wants X-TT to be used for TrueType
+ fonts. */
+ FontFilePriorityRegisterRenderer(renderers + i, +10);
+ }
return 0;
}
diff --git a/xc/extras/X-TrueType/xttversion.h b/xc/extras/X-TrueType/xttversion.h
index fdf3e0d5e..e651d4efd 100644
--- a/xc/extras/X-TrueType/xttversion.h
+++ b/xc/extras/X-TrueType/xttversion.h
@@ -7,7 +7,7 @@
# define _XTT_V_MAJOR 1
# define _XTT_V_MINOR 3
-# define _XTT_V_REVISION 0
+# define _XTT_V_REVISION 1
# define _XTT_VENDOR_NAME "X-TrueType Server Project"
# define _XTT_RELEASE_NAME \
"===X-TT-ID: X-TrueType Server Version 1.3 [Aoi MATSUBARA Release 3] ==="
diff --git a/xc/extras/freetype2/include/freetype/internal/ftexcept.h b/xc/extras/freetype2/include/freetype/internal/ftexcept.h
index f5495e56c..5d207658a 100644
--- a/xc/extras/freetype2/include/freetype/internal/ftexcept.h
+++ b/xc/extras/freetype2/include/freetype/internal/ftexcept.h
@@ -10,8 +10,6 @@ FT_BEGIN_HEADER
/* I can't find a better place for this for now */
-<<<<<<< ftexcept.h
-=======
/* the size of a cleanup chunk in bytes is FT_CLEANUP_CHUNK_SIZE*12 + 4 */
/* this must be a small power of 2 whenever possible.. */
@@ -76,7 +74,6 @@ FT_BEGIN_HEADER
ft_cleanup_throw( FT_CleanupStack stack,
FT_Error error );
->>>>>>> 1.2
FT_END_HEADER
#endif /* __FT_EXCEPT_H__ */
diff --git a/xc/extras/freetype2/src/autohint/ahloader.h b/xc/extras/freetype2/src/autohint/ahloader.h
index c8e42ef22..6b3077a9e 100644
--- a/xc/extras/freetype2/src/autohint/ahloader.h
+++ b/xc/extras/freetype2/src/autohint/ahloader.h
@@ -17,6 +17,7 @@
/* Note that this license is compatible with the FreeType license. */
/* */
/***************************************************************************/
+/* $XFree86: xc/extras/freetype2/src/autohint/ahloader.h,v 1.2 2003/01/12 03:55:45 tsi Exp $ */
/*************************************************************************/
@@ -38,19 +39,19 @@ FT_BEGIN_HEADER
#include FT_INTERNAL_GLYPH_LOADER_H
- #define AH_Load FT_GlyphLoad
- #define AH_Loader FT_GlyphLoader
-
- #define ah_loader_new FT_GlyphLoader_New
- #define ah_loader_done FT_GlyphLoader_Done
- #define ah_loader_reset FT_GlyphLoader_Reset
- #define ah_loader_rewind FT_GlyphLoader_Rewind
- #define ah_loader_create_extra FT_GlyphLoader_CreateExtra
- #define ah_loader_check_points FT_GlyphLoader_CheckPoints
- #define ah_loader_check_subglyphs FT_GlyphLoader_CheckSubGlyphs
- #define ah_loader_prepare FT_GlyphLoader_Prepare
- #define ah_loader_add FT_GlyphLoader_Add
- #define ah_loader_copy_points FT_GlyphLoader_CopyPoints
+#define AH_Load FT_GlyphLoad
+#define AH_Loader FT_GlyphLoader
+
+#define ah_loader_new FT_GlyphLoader_New
+#define ah_loader_done FT_GlyphLoader_Done
+#define ah_loader_reset FT_GlyphLoader_Reset
+#define ah_loader_rewind FT_GlyphLoader_Rewind
+#define ah_loader_create_extra FT_GlyphLoader_CreateExtra
+#define ah_loader_check_points FT_GlyphLoader_CheckPoints
+#define ah_loader_check_subglyphs FT_GlyphLoader_CheckSubGlyphs
+#define ah_loader_prepare FT_GlyphLoader_Prepare
+#define ah_loader_add FT_GlyphLoader_Add
+#define ah_loader_copy_points FT_GlyphLoader_CopyPoints
FT_END_HEADER
diff --git a/xc/extras/freetype2/src/base/ftmac.c b/xc/extras/freetype2/src/base/ftmac.c
index d433992e3..8915481d4 100644
--- a/xc/extras/freetype2/src/base/ftmac.c
+++ b/xc/extras/freetype2/src/base/ftmac.c
@@ -65,11 +65,15 @@
#include "truetype/ttobjs.h"
#include "type1/t1objs.h"
+#ifdef __GNUC__
+#include <Carbon/Carbon.h>
+#else
#include <Resources.h>
#include <Fonts.h>
#include <Errors.h>
#include <Files.h>
#include <TextUtils.h>
+#endif
#include FT_MAC_H
diff --git a/xc/extras/freetype2/src/pcf/pcfutil.c b/xc/extras/freetype2/src/pcf/pcfutil.c
index 6120d14fe..5fb4949cb 100644
--- a/xc/extras/freetype2/src/pcf/pcfutil.c
+++ b/xc/extras/freetype2/src/pcf/pcfutil.c
@@ -23,7 +23,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
-/* $XFree86: xc/extras/freetype2/src/pcf/pcfutil.c,v 1.3 2001/12/16 18:01:54 keithp Exp $ */
+/* $XFree86: xc/extras/freetype2/src/pcf/pcfutil.c,v 1.4 2002/12/17 03:28:26 dawes Exp $ */
/*
* Author: Keith Packard, MIT X Consortium
@@ -76,7 +76,7 @@ in this Software without prior written authorization from The Open Group.
* Invert bit order within each BYTE of an array.
*/
- void
+ static void
BitOrderInvert( unsigned char* buf,
int nbytes )
{
@@ -92,7 +92,7 @@ in this Software without prior written authorization from The Open Group.
* Invert byte order within each 16-bits of an array.
*/
- void
+ static void
TwoByteSwap( unsigned char* buf,
int nbytes )
{
@@ -111,7 +111,7 @@ in this Software without prior written authorization from The Open Group.
* Invert byte order within each 32-bits of an array.
*/
- void
+ static void
FourByteSwap( unsigned char* buf,
int nbytes )
{
@@ -135,7 +135,7 @@ in this Software without prior written authorization from The Open Group.
* Repad a bitmap.
*/
- int
+ static int
RepadBitmap( char* pSrc,
char* pDst,
unsigned int srcPad,
diff --git a/xc/extras/freetype2/src/pcf/pcfutil.h b/xc/extras/freetype2/src/pcf/pcfutil.h
index 32dd1eab7..20cece8c5 100644
--- a/xc/extras/freetype2/src/pcf/pcfutil.h
+++ b/xc/extras/freetype2/src/pcf/pcfutil.h
@@ -32,19 +32,19 @@ THE SOFTWARE.
#include <ft2build.h>
- void
+ static void
BitOrderInvert( unsigned char* buf,
int nbytes);
- void
+ static void
TwoByteSwap( unsigned char* buf,
int nbytes);
- void
+ static void
FourByteSwap( unsigned char* buf,
int nbytes);
- int
+ static int
RepadBitmap( char* pSrc,
char* pDst,
unsigned int srcPad,
diff --git a/xc/extras/freetype2/src/sfnt/ttcmap.c.save b/xc/extras/freetype2/src/sfnt/ttcmap.c.save
index 492c3597d..2fd58cf17 100644
--- a/xc/extras/freetype2/src/sfnt/ttcmap.c.save
+++ b/xc/extras/freetype2/src/sfnt/ttcmap.c.save
@@ -38,92 +38,50 @@
code_to_index0( TT_CMapTable* charmap,
FT_ULong char_code );
-<<<<<<< ttcmap.c
- FT_CALLBACK_DEF( FT_ULong )
- code_to_next0( TT_CMapTable* charmap,
- FT_ULong char_code );
-
-=======
FT_CALLBACK_DEF( FT_ULong )
code_to_next0( TT_CMapTable* charmap,
FT_ULong char_code );
->>>>>>> 1.39
FT_CALLBACK_DEF( FT_UInt )
code_to_index2( TT_CMapTable* charmap,
FT_ULong char_code );
-<<<<<<< ttcmap.c
- FT_CALLBACK_DEF( FT_ULong )
- code_to_next2( TT_CMapTable* charmap,
- FT_ULong char_code );
-
-=======
FT_CALLBACK_DEF( FT_ULong )
code_to_next2( TT_CMapTable* charmap,
FT_ULong char_code );
->>>>>>> 1.39
FT_CALLBACK_DEF( FT_UInt )
code_to_index4( TT_CMapTable* charmap,
FT_ULong char_code );
-<<<<<<< ttcmap.c
- FT_CALLBACK_DEF( FT_ULong )
- code_to_next4( TT_CMapTable* charmap,
- FT_ULong char_code );
-
-=======
FT_CALLBACK_DEF( FT_ULong )
code_to_next4( TT_CMapTable* charmap,
FT_ULong char_code );
->>>>>>> 1.39
FT_CALLBACK_DEF( FT_UInt )
code_to_index6( TT_CMapTable* charmap,
FT_ULong char_code );
-<<<<<<< ttcmap.c
- FT_CALLBACK_DEF( FT_ULong )
- code_to_next6( TT_CMapTable* charmap,
- FT_ULong char_code );
-
-=======
FT_CALLBACK_DEF( FT_ULong )
code_to_next6( TT_CMapTable* charmap,
FT_ULong char_code );
->>>>>>> 1.39
FT_CALLBACK_DEF( FT_UInt )
code_to_index8_12( TT_CMapTable* charmap,
FT_ULong char_code );
-<<<<<<< ttcmap.c
- FT_CALLBACK_DEF( FT_ULong )
- code_to_next8_12( TT_CMapTable* charmap,
- FT_ULong char_code );
-
-=======
FT_CALLBACK_DEF( FT_ULong )
code_to_next8_12( TT_CMapTable* charmap,
FT_ULong char_code );
->>>>>>> 1.39
FT_CALLBACK_DEF( FT_UInt )
code_to_index10( TT_CMapTable* charmap,
FT_ULong char_code );
-<<<<<<< ttcmap.c
- FT_CALLBACK_DEF( FT_ULong )
- code_to_next10( TT_CMapTable* charmap,
- FT_ULong char_code );
-
-=======
FT_CALLBACK_DEF( FT_ULong )
code_to_next10( TT_CMapTable* charmap,
FT_ULong char_code );
->>>>>>> 1.39
/*************************************************************************/
/* */
@@ -543,39 +501,6 @@
/*************************************************************************/
/* */
/* <Function> */
-<<<<<<< ttcmap.c
- /* code_to_next0 */
- /* */
- /* <Description> */
- /* Finds the next encoded character after the given one. Uses format */
- /* 0. `charCode' must be in the range 0x00-0xFF (otherwise 0 is */
- /* returned). */
- /* */
- /* <Input> */
- /* charCode :: The wanted character code. */
- /* cmap0 :: A pointer to a cmap table in format 0. */
- /* */
- /* <Return> */
- /* Next char code. 0 if no higher one is encoded. */
- /* */
- FT_CALLBACK_DEF( FT_ULong )
- code_to_next0( TT_CMapTable* cmap,
- FT_ULong charCode )
- {
- TT_CMap0* cmap0 = &cmap->c.cmap0;
-
-
- while ( ++charCode <= 0xFF )
- if ( cmap0->glyphIdArray[charCode] )
- return ( charCode );
- return ( 0 );
- }
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
-=======
/* code_to_next0 */
/* */
/* <Description> */
@@ -607,7 +532,6 @@
/*************************************************************************/
/* */
/* <Function> */
->>>>>>> 1.39
/* code_to_index2 */
/* */
/* <Description> */
@@ -673,91 +597,6 @@
/*************************************************************************/
/* */
/* <Function> */
-<<<<<<< ttcmap.c
- /* code_to_next2 */
- /* */
- /* <Description> */
- /* Find the next encoded character. Uses format 2. */
- /* */
- /* <Input> */
- /* charCode :: The wanted character code. */
- /* cmap2 :: A pointer to a cmap table in format 2. */
- /* */
- /* <Return> */
- /* Next encoded character. 0 if none exists. */
- /* */
- FT_CALLBACK_DEF( FT_ULong )
- code_to_next2( TT_CMapTable* cmap,
- FT_ULong charCode )
- {
- FT_UInt index1, offset;
- FT_UInt char_lo;
- FT_ULong char_hi;
- TT_CMap2SubHeader* sh2;
- TT_CMap2* cmap2;
-
-
- cmap2 = &cmap->c.cmap2;
- charCode++;
-
- /*
- * This is relatively simplistic -- look for a subHeader containing
- * glyphs and then walk to the first glyph in that subHeader
- */
- while ( charCode < 0x10000 )
- {
- char_lo = (FT_UInt)( charCode & 0xFF );
- char_hi = charCode >> 8;
-
- if ( char_hi == 0 )
- {
- /* an 8-bit character code -- we use the subHeader 0 in this case */
- /* to test whether the character code is in the charmap */
- index1 = cmap2->subHeaderKeys[char_lo];
- if ( index1 != 0 )
- {
- charCode++;
- continue;
- }
- }
- else
- {
- /* a 16-bit character code */
- index1 = cmap2->subHeaderKeys[char_hi & 0xFF];
- if ( index1 == 0 )
- {
- charCode = (char_hi + 1) << 8;
- continue;
- }
- }
-
- sh2 = cmap2->subHeaders + index1;
- char_lo -= sh2->firstCode;
-
- if ( char_lo > (FT_UInt)sh2->entryCount )
- {
- charCode = (char_hi + 1) << 8;
- continue;
- }
-
- offset = sh2->idRangeOffset / 2 + char_lo;
- if ( offset >= (FT_UInt)cmap2->numGlyphId ||
- cmap2->glyphIdArray[offset] == 0 )
- {
- charCode++;
- continue;
- }
-
- return charCode;
- }
- return 0;
- }
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
-=======
/* code_to_next2 */
/* */
/* <Description> */
@@ -841,7 +680,6 @@
/*************************************************************************/
/* */
/* <Function> */
->>>>>>> 1.39
/* code_to_index4 */
/* */
/* <Description> */
@@ -926,76 +764,6 @@
/*************************************************************************/
/* */
/* <Function> */
-<<<<<<< ttcmap.c
- /* code_to_next4 */
- /* */
- /* <Description> */
- /* Find the next encoded character. Uses format 4. */
- /* */
- /* <Input> */
- /* charCode :: The wanted character code. */
- /* cmap :: A pointer to a cmap table in format 4. */
- /* */
- /* <Return> */
- /* Next encoded character. 0 if none exists. */
- /* */
- FT_CALLBACK_DEF( FT_ULong )
- code_to_next4( TT_CMapTable* cmap,
- FT_ULong charCode )
- {
- FT_UInt index1, segCount;
- TT_CMap4* cmap4;
- TT_CMap4Segment *seg4, *limit;
-
-
- cmap4 = &cmap->c.cmap4;
- segCount = cmap4->segCountX2 / 2;
- limit = cmap4->segments + segCount;
-
- charCode++;
-
- for ( seg4 = cmap4->segments; seg4 < limit; seg4++ )
- {
- /* the ranges are sorted in increasing order. If we are out of */
- /* the range here, the char code isn't in the charmap, so exit. */
-
- if ( charCode <= (FT_UInt)seg4->endCount )
- goto Found;
- }
- return 0;
-
- Found:
-
- if ( charCode < seg4->startCount )
- charCode = seg4->startCount;
-
- /* if the idRangeOffset is 0, all chars in the map exist */
-
- if ( seg4->idRangeOffset == 0 )
- return ( charCode );
-
- while ( charCode <= (FT_UInt) seg4->endCount )
- {
- /* otherwise, we must use the glyphIdArray to do it */
- index1 = (FT_UInt)( seg4->idRangeOffset / 2
- + ( charCode - seg4->startCount )
- + ( seg4 - cmap4->segments )
- - segCount );
-
- if ( index1 < (FT_UInt)cmap4->numGlyphId &&
- cmap4->glyphIdArray[index1] != 0 )
- return ( charCode );
- charCode++;
- }
-
- return 0;
- }
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
-=======
/* code_to_next4 */
/* */
/* <Description> */
@@ -1063,7 +831,6 @@
/*************************************************************************/
/* */
/* <Function> */
->>>>>>> 1.39
/* code_to_index6 */
/* */
/* <Description> */
@@ -1097,49 +864,6 @@
/*************************************************************************/
/* */
/* <Function> */
-<<<<<<< ttcmap.c
- /* code_to_next6 */
- /* */
- /* <Description> */
- /* Find the next encoded character. Uses format 6. */
- /* */
- /* <Input> */
- /* charCode :: The wanted character code. */
- /* cmap :: A pointer to a cmap table in format 6. */
- /* */
- /* <Return> */
- /* Next encoded character. 0 if none exists. */
- /* */
- FT_CALLBACK_DEF( FT_ULong )
- code_to_next6( TT_CMapTable* cmap,
- FT_ULong charCode )
- {
- TT_CMap6* cmap6;
-
-
- charCode++;
-
- cmap6 = &cmap->c.cmap6;
-
- if (charCode < cmap6->firstCode)
- charCode = cmap6->firstCode;
-
- charCode -= cmap6->firstCode;
-
- while ( charCode < (FT_UInt)cmap6->entryCount )
- {
- if ( cmap6->glyphIdArray[charCode] != 0 )
- return charCode + cmap6->firstCode;
- charCode++;
- }
- return 0;
- }
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
-=======
/* code_to_next6 */
/* */
/* <Description> */
@@ -1182,7 +906,6 @@
/*************************************************************************/
/* */
/* <Function> */
->>>>>>> 1.39
/* code_to_index8_12 */
/* */
/* <Description> */
@@ -1248,53 +971,6 @@
/*************************************************************************/
/* */
/* <Function> */
-<<<<<<< ttcmap.c
- /* code_to_next8_12 */
- /* */
- /* <Description> */
- /* Find the next encoded character. Uses format 8 or 12. */
- /* */
- /* <Input> */
- /* charCode :: The wanted character code. */
- /* cmap :: A pointer to a cmap table in format 8 or 12. */
- /* */
- /* <Return> */
- /* Next encoded character. 0 if none exists. */
- /* */
- FT_CALLBACK_DEF( FT_ULong )
- code_to_next8_12( TT_CMapTable* cmap,
- FT_ULong charCode )
- {
- TT_CMap8_12* cmap8_12;
- TT_CMapGroup *group, *limit;
-
-
- charCode++;
- cmap8_12 = &cmap->c.cmap8_12;
- limit = cmap8_12->groups + cmap8_12->nGroups;
-
- for ( group = cmap8_12->groups; group < limit; group++ )
- {
- /* the ranges are sorted in increasing order. If we are out of */
- /* the range here, the char code isn't in the charmap, so exit. */
-
- if ( charCode <= group->endCharCode )
- goto Found;
- }
- return 0;
-
- Found:
- if ( charCode < group->startCharCode )
- charCode = group->startCharCode;
-
- return charCode;
- }
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
-=======
/* code_to_next8_12 */
/* */
/* <Description> */
@@ -1340,7 +1016,6 @@
/*************************************************************************/
/* */
/* <Function> */
->>>>>>> 1.39
/* code_to_index10 */
/* */
/* <Description> */
@@ -1375,52 +1050,6 @@
return result;
}
-<<<<<<< ttcmap.c
- /*************************************************************************/
- /* */
- /* <Function> */
- /* code_to_next10 */
- /* */
- /* <Description> */
- /* Find the next encoded character. Uses format 10. */
- /* */
- /* <Input> */
- /* charCode :: The wanted character code. */
- /* cmap :: A pointer to a cmap table in format 10. */
- /* */
- /* <Return> */
- /* Next encoded character. 0 if none exists. */
- /* */
- FT_CALLBACK_DEF( FT_ULong )
- code_to_next10( TT_CMapTable* cmap,
- FT_ULong charCode )
- {
- TT_CMap10* cmap10;
-
- charCode++;
- cmap10 = &cmap->c.cmap10;
-
- if (charCode < cmap10->startCharCode)
- charCode = cmap10->startCharCode;
-
- charCode -= cmap10->startCharCode;
-
- /* the overflow trick for comparison works here also since the number */
- /* of glyphs (even if numChars is specified as ULong in the specs) in */
- /* an OpenType font is limited to 64k */
-
- while ( charCode < cmap10->numChars )
- {
- if ( cmap10->glyphs[charCode] )
- return ( charCode + cmap10->startCharCode );
- charCode++;
- }
-
- return 0;
- }
-
-
-=======
/*************************************************************************/
/* */
@@ -1467,5 +1096,4 @@
}
->>>>>>> 1.39
/* END */
diff --git a/xc/extras/freetype2/src/truetype/ttdriver.c.save b/xc/extras/freetype2/src/truetype/ttdriver.c.save
index 313b1984b..d35274245 100644
--- a/xc/extras/freetype2/src/truetype/ttdriver.c.save
+++ b/xc/extras/freetype2/src/truetype/ttdriver.c.save
@@ -393,55 +393,6 @@
}
/*************************************************************************/
-<<<<<<< ttdriver.c
- /* */
- /* <Function> */
- /* Get_Next_Char */
- /* */
- /* <Description> */
- /* Uses a charmap to return the next encoded char. */
- /* */
- /* <Input> */
- /* charmap :: A handle to the source charmap object. */
- /* charcode :: The character code. */
- /* */
- /* <Return> */
- /* Next char code. 0 means `no more encoded characters'. */
- /* */
- static FT_UInt
- Get_Next_Char( TT_CharMap charmap,
- FT_Long charcode )
- {
- FT_Error error;
- TT_Face face;
- TT_CMapTable* cmap;
-
-
- cmap = &charmap->cmap;
- face = (TT_Face)charmap->root.face;
-
- /* Load table if needed */
- if ( !cmap->loaded )
- {
- SFNT_Interface* sfnt = (SFNT_Interface*)face->sfnt;
-
-
- error = sfnt->load_charmap( face, cmap, face->root.stream );
- if ( error )
- return 0;
-
- cmap->loaded = TRUE;
- }
-
- if ( cmap->get_next_char )
- return cmap->get_next_char ( cmap, charcode );
- else
- return 0;
- }
-
-
- /*************************************************************************/
-=======
/* */
/* <Function> */
/* Get_Next_Char */
@@ -489,7 +440,6 @@
/*************************************************************************/
->>>>>>> 1.47
/*************************************************************************/
/*************************************************************************/
/**** ****/
diff --git a/xc/extras/freetype2/src/type1/t1driver.c.save b/xc/extras/freetype2/src/type1/t1driver.c.save
index 53af3849b..0e9c3b82d 100644
--- a/xc/extras/freetype2/src/type1/t1driver.c.save
+++ b/xc/extras/freetype2/src/type1/t1driver.c.save
@@ -344,100 +344,6 @@
return result;
}
-<<<<<<< t1driver.c
- /*************************************************************************/
- /* */
- /* <Function> */
- /* Get_Next_Char */
- /* */
- /* <Description> */
- /* Uses a charmap to return the next encoded char. */
- /* */
- /* <Input> */
- /* charmap :: A handle to the source charmap object. */
- /* charcode :: The character code. */
- /* */
- /* <Return> */
- /* Next char code. 0 means `no more char codes'. */
- /* */
- static FT_Long
- Get_Next_Char( FT_CharMap charmap,
- FT_Long charcode )
- {
- T1_Face face;
- PSNames_Interface* psnames;
-
-
- face = (T1_Face)charmap->face;
- psnames = (PSNames_Interface*)face->psnames;
- if ( psnames )
- switch ( charmap->encoding )
- {
- /*******************************************************************/
- /* */
- /* Unicode encoding support */
- /* */
- case ft_encoding_unicode:
- /* use the `PSNames' module to synthetize the Unicode charmap */
- return psnames->next_unicode( &face->unicode_map,
- (FT_ULong)charcode );
-
- /*******************************************************************/
- /* */
- /* Custom Type 1 encoding */
- /* */
- case ft_encoding_adobe_custom:
- {
- T1_Encoding* encoding = &face->type1.encoding;
-
-
- charcode++;
- if ( charcode < encoding->code_first )
- charcode = encoding->code_first;
- while ( charcode <= encoding->code_last )
- {
- if ( encoding->char_index[charcode] )
- return charcode;
- charcode++;
- }
- }
-
- /*******************************************************************/
- /* */
- /* Adobe Standard & Expert encoding support */
- /* */
- default:
- while ( ++charcode < 256 )
- {
- FT_UInt code;
- FT_Int n;
- const char* glyph_name;
-
-
- code = psnames->adobe_std_encoding[charcode];
- if ( charmap->encoding == ft_encoding_adobe_expert )
- code = psnames->adobe_expert_encoding[charcode];
-
- glyph_name = psnames->adobe_std_strings( code );
- if ( !glyph_name )
- continue;
-
- for ( n = 0; n < face->type1.num_glyphs; n++ )
- {
- const char* gname = face->type1.glyph_names[n];
-
-
- if ( gname && gname[0] == glyph_name[0] &&
- strcmp( gname, glyph_name ) == 0 )
- return charcode;
- }
- }
- }
- return 0;
- }
-
-
-=======
/*************************************************************************/
/* */
@@ -550,7 +456,6 @@
}
->>>>>>> 1.49
FT_CALLBACK_TABLE_DEF
const FT_Driver_Class t1_driver_class =
{
@@ -595,15 +500,9 @@
(FTDriver_getKerning) Get_Kerning,
(FTDriver_attachFile) T1_Read_AFM,
#endif
-<<<<<<< t1driver.c
- (FTDriver_getAdvances) 0,
-
- (FTDriver_getNextChar) Get_Next_Char
-=======
(FTDriver_getAdvances) 0,
(FTDriver_getNextChar) Get_Next_Char
->>>>>>> 1.49
};
diff --git a/xc/extras/freetype2/src/winfonts/winfnt.c.save b/xc/extras/freetype2/src/winfonts/winfnt.c.save
index eaa18aedb..852978370 100644
--- a/xc/extras/freetype2/src/winfonts/winfnt.c.save
+++ b/xc/extras/freetype2/src/winfonts/winfnt.c.save
@@ -494,29 +494,6 @@
return result;
}
-<<<<<<< winfnt.c
- static FT_Long
- FNT_Get_Next_Char( FT_CharMap charmap,
- FT_Long char_code )
- {
- char_code++;
- if ( charmap )
- {
- FNT_Font* font = ((FNT_Face)charmap->face)->fonts;
- FT_Long first = font->header.first_char;
-
- if ( char_code < first )
- char_code = first;
- if ( char_code <= font->header.last_char )
- return char_code;
- }
- else
- return char_code;
- return 0;
- }
-
-
-=======
static FT_Long
FNT_Get_Next_Char( FT_CharMap charmap,
FT_Long char_code )
@@ -539,7 +516,6 @@
}
->>>>>>> 1.30
static FT_Error
FNT_Load_Glyph( FT_GlyphSlot slot,
FNT_Size size,
diff --git a/xc/extras/x86emu/src/x86emu/sys.c b/xc/extras/x86emu/src/x86emu/sys.c
index 17e406ab5..d493ae837 100644
--- a/xc/extras/x86emu/src/x86emu/sys.c
+++ b/xc/extras/x86emu/src/x86emu/sys.c
@@ -39,7 +39,7 @@
* user library.
*
****************************************************************************/
-/* $XFree86: xc/extras/x86emu/src/x86emu/sys.c,v 1.6 2002/09/16 18:05:18 eich Exp $ */
+/* $XFree86: xc/extras/x86emu/src/x86emu/sys.c,v 1.7 2002/12/24 17:42:58 tsi Exp $ */
#include "x86emu.h"
#include "x86emu/x86emui.h"
@@ -70,7 +70,7 @@ X86EMU_intrFuncs _X86EMU_intrTab[256];
* packed structures to talk about such things with.
*/
-#if __GNUC__ > 2 || __GNUC_MINOR__ >= 91
+#if defined(__GNUC__) && ((__GNUC__ > 2) || (__GNUC_MINOR__ >= 91))
struct __una_u64 { unsigned long x __attribute__((packed)); };
struct __una_u32 { unsigned int x __attribute__((packed)); };
struct __una_u16 { unsigned short x __attribute__((packed)); };
@@ -78,7 +78,7 @@ struct __una_u16 { unsigned short x __attribute__((packed)); };
static __inline__ unsigned long ldq_u(unsigned long * r11)
{
-#if __GNUC__ > 2 || __GNUC_MINOR__ >= 91
+#if defined(__GNUC__) && ((__GNUC__ > 2) || (__GNUC_MINOR__ >= 91))
const struct __una_u64 *ptr = (const struct __una_u64 *) r11;
return ptr->x;
#else
@@ -97,7 +97,7 @@ static __inline__ unsigned long ldq_u(unsigned long * r11)
static __inline__ unsigned long ldl_u(unsigned int * r11)
{
-#if __GNUC__ > 2 || __GNUC_MINOR__ >= 91
+#if defined(__GNUC__) && ((__GNUC__ > 2) || (__GNUC_MINOR__ >= 91))
const struct __una_u32 *ptr = (const struct __una_u32 *) r11;
return ptr->x;
#else
@@ -116,7 +116,7 @@ static __inline__ unsigned long ldl_u(unsigned int * r11)
static __inline__ unsigned long ldw_u(unsigned short * r11)
{
-#if __GNUC__ > 2 || __GNUC_MINOR__ >= 91
+#if defined(__GNUC__) && ((__GNUC__ > 2) || (__GNUC_MINOR__ >= 91))
const struct __una_u16 *ptr = (const struct __una_u16 *) r11;
return ptr->x;
#else
@@ -139,7 +139,7 @@ static __inline__ unsigned long ldw_u(unsigned short * r11)
static __inline__ void stq_u(unsigned long r5, unsigned long * r11)
{
-#if __GNUC__ > 2 || __GNUC_MINOR__ >= 91
+#if defined(__GNUC__) && ((__GNUC__ > 2) || (__GNUC_MINOR__ >= 91))
struct __una_u64 *ptr = (struct __una_u64 *) r11;
ptr->x = r5;
#else
@@ -164,7 +164,7 @@ static __inline__ void stq_u(unsigned long r5, unsigned long * r11)
static __inline__ void stl_u(unsigned long r5, unsigned int * r11)
{
-#if __GNUC__ > 2 || __GNUC_MINOR__ >= 91
+#if defined(__GNUC__) && ((__GNUC__ > 2) || (__GNUC_MINOR__ >= 91))
struct __una_u32 *ptr = (struct __una_u32 *) r11;
ptr->x = r5;
#else
@@ -189,7 +189,7 @@ static __inline__ void stl_u(unsigned long r5, unsigned int * r11)
static __inline__ void stw_u(unsigned long r5, unsigned short * r11)
{
-#if __GNUC__ > 2 || __GNUC_MINOR__ >= 91
+#if defined(__GNUC__) && ((__GNUC__ > 2) || (__GNUC_MINOR__ >= 91))
struct __una_u16 *ptr = (struct __una_u16 *) r11;
ptr->x = r5;
#else