Put back reactos specific changes from old mesa32 directory.
Added: trunk/reactos/lib/mesa32/README.ReactOS
Modified: trunk/reactos/lib/mesa32/include/GL/gl.h
Modified: trunk/reactos/lib/mesa32/include/GL/mesa_wgl.h
Modified: trunk/reactos/lib/mesa32/include/GL/wmesa.h
Added: trunk/reactos/lib/mesa32/mesa32.def
Added: trunk/reactos/lib/mesa32/mesa32.xml
Modified: trunk/reactos/lib/mesa32/src/drivers/windows/gdi/wmesa.c
Modified: trunk/reactos/lib/mesa32/src/drivers/windows/gdi/wmesadef.h
Modified: trunk/reactos/lib/mesa32/src/main/glheader.h
Modified: trunk/reactos/lib/mesa32/src/main/texcompress_s3tc.c
Modified: trunk/reactos/lib/mesa32/src/main/texformat_tmp.h
Modified: trunk/reactos/lib/mesa32/src/x86/common_x86.c
Modified: trunk/reactos/lib/mesa32/src/x86/glapi_x86.S

Added: trunk/reactos/lib/mesa32/README.ReactOS
--- trunk/reactos/lib/mesa32/README.ReactOS	2005-11-04 14:25:07 UTC (rev 18990)
+++ trunk/reactos/lib/mesa32/README.ReactOS	2005-11-04 14:52:02 UTC (rev 18991)
@@ -0,0 +1,8 @@
+This is Mesa-6.2 (http://www.mesa3d.org/) with an ICD interface.
+
+The ICD functions are in src/drivers/windows/icd/icd.c
+I have created a new Makefile for ReactOS which will build Mesa with the ICD
+interface. I have not adjusted the Visual C++ project/workspace files.
+
+ --blight
+ 

Modified: trunk/reactos/lib/mesa32/include/GL/gl.h
--- trunk/reactos/lib/mesa32/include/GL/gl.h	2005-11-04 14:25:07 UTC (rev 18990)
+++ trunk/reactos/lib/mesa32/include/GL/gl.h	2005-11-04 14:52:02 UTC (rev 18991)
@@ -53,9 +53,9 @@
 #endif
 
 #if !defined(OPENSTEP) && (defined(__WIN32__) && !defined(__CYGWIN__))
-#  if defined(_MSC_VER) && defined(BUILD_GL32) /* tag specify we're building mesa as a DLL */
+#  if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(BUILD_GL32) /* tag specify we're building mesa as a DLL */
 #    define GLAPI __declspec(dllexport)
-#  elif defined(_MSC_VER) && defined(_DLL) /* tag specifying we're building for DLL runtime support */
+#  elif (defined(_MSC_VER) || defined(__MINGW32__)) && defined(_DLL) /* tag specifying we're building for DLL runtime support */
 #    define GLAPI __declspec(dllimport)
 #  else /* for use with static link lib build of Win32 edition only */
 #    define GLAPI extern

Modified: trunk/reactos/lib/mesa32/include/GL/mesa_wgl.h
--- trunk/reactos/lib/mesa32/include/GL/mesa_wgl.h	2005-11-04 14:25:07 UTC (rev 18990)
+++ trunk/reactos/lib/mesa32/include/GL/mesa_wgl.h	2005-11-04 14:52:02 UTC (rev 18991)
@@ -32,7 +32,7 @@
 #define _mesa_wgl_h_
 
 
-#include <gl/gl.h>
+#include <GL/gl.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -40,10 +40,10 @@
 
 
 #if !defined(OPENSTEP) && (defined(__WIN32__) || defined(__CYGWIN32__))
-#  if defined(_MSC_VER) && defined(BUILD_GL32) /* tag specify we're building mesa as a DLL */
+#  if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(BUILD_GL32) /* tag specify we're building mesa as a DLL */
 #    define GLAPI __declspec(dllexport)
 #    define WGLAPI __declspec(dllexport)
-#  elif defined(_MSC_VER) && defined(_DLL) /* tag specifying we're building for DLL runtime support */
+#  elif (defined(_MSC_VER) || defined(__MINGW32__)) && defined(_DLL) /* tag specifying we're building for DLL runtime support */
 #    define GLAPI __declspec(dllimport)
 #    define WGLAPI __declspec(dllimport)
 #  else /* for use with static link lib build of Win32 edition only */

Modified: trunk/reactos/lib/mesa32/include/GL/wmesa.h
--- trunk/reactos/lib/mesa32/include/GL/wmesa.h	2005-11-04 14:25:07 UTC (rev 18990)
+++ trunk/reactos/lib/mesa32/include/GL/wmesa.h	2005-11-04 14:52:02 UTC (rev 18991)
@@ -50,7 +50,7 @@
 #endif
 
 
-#include "gl\gl.h"
+#include "GL/gl.h"
 
 #if defined(_MSV_VER) && !defined(__GNUC__)
 #  pragma warning (disable:4273)

Added: trunk/reactos/lib/mesa32/mesa32.def
--- trunk/reactos/lib/mesa32/mesa32.def	2005-11-04 14:25:07 UTC (rev 18990)
+++ trunk/reactos/lib/mesa32/mesa32.def	2005-11-04 14:52:02 UTC (rev 18991)
@@ -0,0 +1,110 @@
+DESCRIPTION 'Mesa (OpenGL driver) for Win32'
+VERSION 6.1
+
+EXPORTS
+;
+; ICD API
+	DrvCopyContext
+	DrvCreateContext
+	DrvCreateLayerContext
+	DrvDeleteContext
+	DrvDescribeLayerPlane
+	DrvDescribePixelFormat
+	DrvGetLayerPaletteEntries
+	DrvGetProcAddress
+	DrvReleaseContext
+	DrvRealizeLayerPalette
+	DrvSetContext
+	DrvSetLayerPaletteEntries
+	DrvSetPixelFormat
+	DrvShareLists
+	DrvSwapBuffers
+	DrvSwapLayerBuffers
+	DrvValidateVersion
+
+;
+; Mesa internals - mostly for OSMESA
+	_ac_CreateContext
+	_ac_DestroyContext
+	_ac_InvalidateState
+	_glapi_get_context
+	_glapi_get_proc_address
+	_mesa_buffer_data
+	_mesa_buffer_map
+	_mesa_buffer_subdata
+	_mesa_bzero
+	_mesa_calloc
+	_mesa_choose_tex_format
+	_mesa_compressed_texture_size
+	_mesa_create_framebuffer
+	_mesa_create_visual
+	_mesa_delete_buffer_object
+	_mesa_delete_texture_object
+	_mesa_destroy_framebuffer
+	_mesa_destroy_visual
+	_mesa_enable_1_3_extensions
+	_mesa_enable_1_4_extensions
+	_mesa_enable_1_5_extensions
+	_mesa_enable_sw_extensions
+	_mesa_error
+	_mesa_free
+	_mesa_free_context_data
+	_mesa_get_current_context
+	_mesa_init_default_imports
+	_mesa_init_driver_functions
+	_mesa_initialize_context
+	_mesa_make_current
+	_mesa_memcpy
+	_mesa_memset
+	_mesa_new_buffer_object
+	_mesa_new_texture_object
+	_mesa_problem
+	_mesa_ResizeBuffersMESA
+	_mesa_store_compressed_teximage1d
+	_mesa_store_compressed_teximage2d
+	_mesa_store_compressed_teximage3d
+	_mesa_store_compressed_texsubimage1d
+	_mesa_store_compressed_texsubimage2d
+	_mesa_store_compressed_texsubimage3d
+	_mesa_store_teximage1d
+	_mesa_store_teximage2d
+	_mesa_store_teximage3d
+	_mesa_store_texsubimage1d
+	_mesa_store_texsubimage2d
+	_mesa_store_texsubimage3d
+	_mesa_strcmp
+	_mesa_test_proxy_teximage
+	_mesa_Viewport
+	_swrast_Accum
+	_swrast_alloc_buffers
+	_swrast_Bitmap
+	_swrast_CopyPixels
+	_swrast_DrawBuffer
+	_swrast_DrawPixels
+	_swrast_GetDeviceDriverReference
+	_swrast_Clear
+	_swrast_choose_line
+	_swrast_choose_triangle
+	_swrast_CopyColorSubTable
+	_swrast_CopyColorTable
+	_swrast_CopyConvolutionFilter1D
+	_swrast_CopyConvolutionFilter2D
+	_swrast_copy_teximage1d
+	_swrast_copy_teximage2d
+	_swrast_copy_texsubimage1d
+	_swrast_copy_texsubimage2d
+	_swrast_copy_texsubimage3d
+	_swrast_CreateContext
+	_swrast_DestroyContext
+	_swrast_InvalidateState
+	_swrast_ReadPixels
+	_swrast_zbuffer_address
+	_swsetup_Wakeup
+	_swsetup_CreateContext
+	_swsetup_DestroyContext
+	_swsetup_InvalidateState
+	_tnl_CreateContext
+	_tnl_DestroyContext
+	_tnl_InvalidateState
+	_tnl_MakeCurrent
+	_tnl_run_pipeline
Property changes on: trunk/reactos/lib/mesa32/mesa32.def
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/reactos/lib/mesa32/mesa32.xml
--- trunk/reactos/lib/mesa32/mesa32.xml	2005-11-04 14:25:07 UTC (rev 18990)
+++ trunk/reactos/lib/mesa32/mesa32.xml	2005-11-04 14:52:02 UTC (rev 18991)
@@ -0,0 +1,209 @@
+<module name="mesa32" type="win32dll" baseaddress="${BASEADDRESS_MESA32}" installbase="system32" installname="mesa32.dll" allowwarnings="true">
+	<importlibrary definition="mesa32.def" />
+	<linkerflag>-Wl,--enable-stdcall-fixup</linkerflag>
+	<include base="mesa32">include</include>
+	<include base="mesa32">src</include>
+	<include base="mesa32">src/main</include>
+	<include base="mesa32">src/glapi</include>
+	<include base="mesa32">src/math</include>
+	<include base="mesa32">src/tnl</include>
+	<include base="mesa32">src/shader</include>
+	<include base="mesa32">src/swrast</include>
+	<include base="mesa32">src/swrast_setup</include>
+	<define name="BUILD_GL32" />
+	<define name="_OPENGL32_" />
+	<define name="STDCALL_API" />
+	<define name="USE_MGL_NAMESPACE" />
+	<define name="USE_X86_ASM" />
+	<define name="USE_MMX_ASM" />
+	<define name="USE_SSE_ASM" />
+	<define name="USE_3DNOW_ASM" />
+	<define name="__USE_W32API" />
+	<library>ntdll</library>
+	<library>kernel32</library>
+	<library>gdi32</library>
+	<directory name="src">
+		<directory name="array_cache">
+			<file>ac_context.c</file>
+			<file>ac_import.c</file>
+		</directory>
+		<directory name="drivers">
+			<directory name="common">
+				<file>driverfuncs.c</file>
+			</directory>
+			<directory name="windows">
+				<directory name="gdi">
+					<file>wmesa.c</file>
+				</directory>
+				<directory name="icd">
+					<file>icd.c</file>
+				</directory>
+			</directory>
+		</directory>
+		<directory name="glapi">
+			<file>glapi.c</file>
+			<file>glthread.c</file>
+		</directory>
+		<directory name="main">
+			<file>api_arrayelt.c</file>
+			<file>api_loopback.c</file>
+			<file>api_noop.c</file>
+			<file>api_validate.c</file>
+			<file>accum.c</file>
+			<file>attrib.c</file>
+			<file>blend.c</file>
+			<file>bufferobj.c</file>
+			<file>buffers.c</file>
+			<file>clip.c</file>
+			<file>colortab.c</file>
+			<file>context.c</file>
+			<file>convolve.c</file>
+			<file>debug.c</file>
+			<file>depth.c</file>
+			<file>dispatch.c</file>
+			<file>dlist.c</file>
+			<file>drawpix.c</file>
+			<file>enable.c</file>
+			<file>enums.c</file>
+			<file>eval.c</file>
+			<file>extensions.c</file>
+			<file>feedback.c</file>
+			<file>fog.c</file>
+			<file>get.c</file>
+			<file>hash.c</file>
+			<file>hint.c</file>
+			<file>histogram.c</file>
+			<file>image.c</file>
+			<file>imports.c</file>
+			<file>light.c</file>
+			<file>lines.c</file>
+			<file>matrix.c</file>
+			<file>occlude.c</file>
+			<file>pixel.c</file>
+			<file>points.c</file>
+			<file>polygon.c</file>
+			<file>rastpos.c</file>
+			<file>state.c</file>
+			<file>stencil.c</file>
+			<file>texcompress.c</file>
+			<file>texcompress_s3tc.c</file>
+			<file>texcompress_fxt1.c</file>
+			<file>texformat.c</file>
+			<file>teximage.c</file>
+			<file>texobj.c</file>
+			<file>texstate.c</file>
+			<file>texstore.c</file>
+			<file>varray.c</file>
+			<file>vtxfmt.c</file>
+		</directory>
+		<directory name="math">
+			<file>m_debug_clip.c</file>
+			<file>m_debug_norm.c</file>
+			<file>m_debug_xform.c</file>
+			<file>m_eval.c</file>
+			<file>m_matrix.c</file>
+			<file>m_translate.c</file>
+			<file>m_vector.c</file>
+			<file>m_xform.c</file>
+		</directory>
+		<directory name="swrast">
+			<file>s_fragprog_to_c.c</file>
+			<file>s_aaline.c</file>
+			<file>s_aatriangle.c</file>
+			<file>s_accum.c</file>
+			<file>s_alpha.c</file>
+			<file>s_alphabuf.c</file>
+			<file>s_auxbuffer.c</file>
+			<file>s_bitmap.c</file>
+			<file>s_blend.c</file>
+			<file>s_buffers.c</file>
+			<file>s_copypix.c</file>
+			<file>s_context.c</file>
+			<file>s_depth.c</file>
+			<file>s_drawpix.c</file>
+			<file>s_feedback.c</file>
+			<file>s_fog.c</file>
+			<file>s_imaging.c</file>
+			<file>s_lines.c</file>
+			<file>s_logic.c</file>
+			<file>s_masking.c</file>
+			<file>s_nvfragprog.c</file>
+			<file>s_pixeltex.c</file>
+			<file>s_points.c</file>
+			<file>s_readpix.c</file>
+			<file>s_span.c</file>
+			<file>s_stencil.c</file>
+			<file>s_tcc.c</file>
+			<file>s_texture.c</file>
+			<file>s_texstore.c</file>
+			<file>s_triangle.c</file>
+			<file>s_zoom.c</file>
+		</directory>
+		<directory name="swrast_setup">
+			<file>ss_context.c</file>
+			<file>ss_triangle.c</file>
+		</directory>
+		<directory name="shader">
+			<file>arbfragparse.c</file>
+			<file>arbprogparse.c</file>
+			<file>arbprogram.c</file>
+			<file>arbvertparse.c</file>
+			<file>grammar_mesa.c</file>
+			<file>nvfragparse.c</file>
+			<file>nvprogram.c</file>
+			<file>nvvertexec.c</file>
+			<file>nvvertparse.c</file>
+			<file>program.c</file>
+		</directory>
+		<directory name="tnl">
+			<file>t_array_api.c</file>
+			<file>t_array_import.c</file>
+			<file>t_context.c</file>
+			<file>t_pipeline.c</file>
+			<file>t_save_api.c</file>
+			<file>t_save_loopback.c</file>
+			<file>t_save_playback.c</file>
+			<file>t_vb_fog.c</file>
+			<file>t_vb_light.c</file>
+			<file>t_vb_normals.c</file>
+			<file>t_vb_points.c</file>
+			<file>t_vb_program.c</file>
+			<file>t_vb_render.c</file>
+			<file>t_vb_texgen.c</file>
+			<file>t_vb_texmat.c</file>
+			<file>t_vb_vertex.c</file>
+			<file>t_vertex.c</file>
+			<file>t_vertex_c.c</file>
+			<file>t_vertex_codegen.c</file>
+			<file>t_vtx_api.c</file>
+			<file>t_vtx_generic.c</file>
+			<file>t_vtx_eval.c</file>
+			<file>t_vtx_exec.c</file>
+			<file>t_vtx_x86.c</file>
+			<file>t_vtx_x86_gcc.S</file>
+		</directory>
+		<directory name="x86">
+			<file>3dnow.c</file>
+			<file>3dnow_normal.S</file>
+			<file>3dnow_xform1.S</file>
+			<file>3dnow_xform2.S</file>
+			<file>3dnow_xform3.S</file>
+			<file>3dnow_xform4.S</file>
+			<file>common_x86.c</file>
+			<file>common_x86_asm.S</file>
+			<file>glapi_x86.S</file>
+			<file>mmx_blend.S</file>
+			<file>sse.c</file>
+			<file>sse_normal.S</file>
+			<file>sse_xform1.S</file>
+			<file>sse_xform2.S</file>
+			<file>sse_xform3.S</file>
+			<file>sse_xform4.S</file>
+			<file>x86.c</file>
+			<file>x86_xform2.S</file>
+			<file>x86_xform3.S</file>
+			<file>x86_xform4.S</file>
+			<file>x86_cliptest.S</file>
+		</directory>
+	</directory>
+</module>
Property changes on: trunk/reactos/lib/mesa32/mesa32.xml
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/reactos/lib/mesa32/src/drivers/windows/gdi/wmesa.c
--- trunk/reactos/lib/mesa32/src/drivers/windows/gdi/wmesa.c	2005-11-04 14:25:07 UTC (rev 18990)
+++ trunk/reactos/lib/mesa32/src/drivers/windows/gdi/wmesa.c	2005-11-04 14:52:02 UTC (rev 18991)
@@ -18,7 +18,7 @@
  * Updated for Mesa 4.0 by Karl Schultz (kschultz@sourceforge.net)
  */
 
-#ifdef NDEBUG
+#if defined(NDEBUG) && defined(_MSC_VER)
 #pragma auto_inline(on)
 #pragma inline_depth(255)
 #pragma inline_recursion(on)
@@ -72,7 +72,7 @@
 /* Stereo and parallel not tested for Mesa 4.0. */
 #define NO_STEREO
 #if !defined(NO_STEREO)
-#include "gl\glu.h"
+#include "GL/glu.h"
 #include "stereo.h"
 #endif
 
@@ -112,6 +112,8 @@
 
 #if defined(_MSC_VER) && _MSC_VER >= 1200
 #define FORCEINLINE __forceinline
+#elif defined(__GNUC__) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
+#define FORCEINLINE __attribute__((always_inline))
 #else
 #define FORCEINLINE __inline
 #endif
@@ -470,7 +472,7 @@
    mask &= ~DD_BACK_LEFT_BIT; 
 #endif // DDRAW 
 #else 
-   DWORD   dwColor; 
+   DWORD   dwColor = 0; 
    WORD    wColor; 
    BYTE    bColor; 
    LPDWORD lpdw = (LPDWORD)Current->pbPixels; 
@@ -521,8 +523,6 @@
          GetGValue(Current->clearpixel), 
          GetBValue(Current->clearpixel)); 
    }
-   else
-       dwColor = 0;
 
    if (nBypp != 3) 
    { 

Modified: trunk/reactos/lib/mesa32/src/drivers/windows/gdi/wmesadef.h
--- trunk/reactos/lib/mesa32/src/drivers/windows/gdi/wmesadef.h	2005-11-04 14:25:07 UTC (rev 18990)
+++ trunk/reactos/lib/mesa32/src/drivers/windows/gdi/wmesadef.h	2005-11-04 14:52:02 UTC (rev 18991)
@@ -70,7 +70,7 @@
 
 
 #include <windows.h>
-#include <GL\gl.h>
+#include <GL/gl.h>
 #include "context.h"
 #ifdef DDRAW
 #define DIRECTDRAW_VERSION 0x0100

Modified: trunk/reactos/lib/mesa32/src/main/glheader.h
--- trunk/reactos/lib/mesa32/src/main/glheader.h	2005-11-04 14:25:07 UTC (rev 18990)
+++ trunk/reactos/lib/mesa32/src/main/glheader.h	2005-11-04 14:52:02 UTC (rev 18991)
@@ -98,10 +98,10 @@
 #      pragma warning( disable : 4761 ) /* integral size mismatch in argument; conversion supplied */
 #    endif
 #  endif
-#  if defined(_MSC_VER) && defined(BUILD_GL32) /* tag specify we're building mesa as a DLL */
+#  if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(BUILD_GL32) /* tag specify we're building mesa as a DLL */
 #    define GLAPI __declspec(dllexport)
 #    define WGLAPI __declspec(dllexport)
-#  elif defined(_MSC_VER) && defined(_DLL) /* tag specifying we're building for DLL runtime support */
+#  elif (defined(_MSC_VER) || defined(__MINGW32__)) && defined(_DLL) /* tag specifying we're building for DLL runtime support */
 #    define GLAPI __declspec(dllimport)
 #    define WGLAPI __declspec(dllimport)
 #  else /* for use with static link lib build of Win32 edition only */

Modified: trunk/reactos/lib/mesa32/src/main/texcompress_s3tc.c
--- trunk/reactos/lib/mesa32/src/main/texcompress_s3tc.c	2005-11-04 14:25:07 UTC (rev 18990)
+++ trunk/reactos/lib/mesa32/src/main/texcompress_s3tc.c	2005-11-04 14:52:02 UTC (rev 18991)
@@ -286,7 +286,7 @@
                             GLint i, GLint j, GLint k, GLfloat *texel )
 {
    /* just sample as GLchan and convert to float here */
-   GLchan rgba[4];
+   GLchan rgba[4] = {0, 0, 0, 0};
    fetch_texel_2d_rgb_dxt1(texImage, i, j, k, rgba);
    texel[RCOMP] = CHAN_TO_FLOAT(rgba[RCOMP]);
    texel[GCOMP] = CHAN_TO_FLOAT(rgba[GCOMP]);
@@ -308,7 +308,7 @@
                             GLint i, GLint j, GLint k, GLfloat *texel )
 {
    /* just sample as GLchan and convert to float here */
-   GLchan rgba[4];
+   GLchan rgba[4] = {0, 0, 0, 0};
    fetch_texel_2d_rgba_dxt1(texImage, i, j, k, rgba);
    texel[RCOMP] = CHAN_TO_FLOAT(rgba[RCOMP]);
    texel[GCOMP] = CHAN_TO_FLOAT(rgba[GCOMP]);
@@ -330,7 +330,7 @@
                             GLint i, GLint j, GLint k, GLfloat *texel )
 {
    /* just sample as GLchan and convert to float here */
-   GLchan rgba[4];
+   GLchan rgba[4] = {0, 0, 0, 0};
    fetch_texel_2d_rgba_dxt3(texImage, i, j, k, rgba);
    texel[RCOMP] = CHAN_TO_FLOAT(rgba[RCOMP]);
    texel[GCOMP] = CHAN_TO_FLOAT(rgba[GCOMP]);
@@ -352,7 +352,7 @@
                             GLint i, GLint j, GLint k, GLfloat *texel )
 {
    /* just sample as GLchan and convert to float here */
-   GLchan rgba[4];
+   GLchan rgba[4] = {0, 0, 0, 0};
    fetch_texel_2d_rgba_dxt5(texImage, i, j, k, rgba);
    texel[RCOMP] = CHAN_TO_FLOAT(rgba[RCOMP]);
    texel[GCOMP] = CHAN_TO_FLOAT(rgba[GCOMP]);

Modified: trunk/reactos/lib/mesa32/src/main/texformat_tmp.h
--- trunk/reactos/lib/mesa32/src/main/texformat_tmp.h	2005-11-04 14:25:07 UTC (rev 18990)
+++ trunk/reactos/lib/mesa32/src/main/texformat_tmp.h	2005-11-04 14:52:02 UTC (rev 18991)
@@ -1,6 +1,7 @@
+/* $XFree86$ */
 /*
  * Mesa 3-D graphics library
- * Version:  6.1
+ * Version:  6.2
  *
  * Copyright (C) 1999-2004  Brian Paul   All Rights Reserved.
  *
@@ -44,46 +45,34 @@
 #if DIM == 1
 
 #define CHAN_SRC( t, i, j, k, sz )					\
-	((void) (j), (void) (k),      					\
-	 ((GLchan *)(t)->Data + (i) * (sz)))
+	((GLchan *)(t)->Data + (i) * (sz))
 #define UBYTE_SRC( t, i, j, k, sz )					\
-	((void) (j), (void) (k),      					\
-	 ((GLubyte *)(t)->Data + (i) * (sz)))
+	((GLubyte *)(t)->Data + (i) * (sz))
 #define USHORT_SRC( t, i, j, k )					\
-	((void) (j), (void) (k),      					\
-	 ((GLushort *)(t)->Data + (i)))
+	((GLushort *)(t)->Data + (i))
 #define UINT_SRC( t, i, j, k )						\
-	((void) (j), (void) (k),      					\
-	 ((GLuint *)(t)->Data + (i)))
+	((GLuint *)(t)->Data + (i))
 #define FLOAT_SRC( t, i, j, k, sz )					\
-	((void) (j), (void) (k),      					\
-	 ((GLfloat *)(t)->Data + (i) * (sz)))
+	((GLfloat *)(t)->Data + (i) * (sz))
 #define HALF_SRC( t, i, j, k, sz )					\
-	((void) (j), (void) (k),      					\
-	 ((GLhalfARB *)(t)->Data + (i) * (sz)))
+	((GLhalfARB *)(t)->Data + (i) * (sz))
 
 #define FETCH(x) fetch_texel_1d_##x
 
 #elif DIM == 2
 
 #define CHAN_SRC( t, i, j, k, sz )					\
-	((void) (k),                  					\
-	 ((GLchan *)(t)->Data + ((t)->RowStride * (j) + (i)) * (sz)))
+	((GLchan *)(t)->Data + ((t)->RowStride * (j) + (i)) * (sz))
 #define UBYTE_SRC( t, i, j, k, sz )					\
-	((void) (k),                  					\
-	 ((GLubyte *)(t)->Data + ((t)->RowStride * (j) + (i)) * (sz)))
+	((GLubyte *)(t)->Data + ((t)->RowStride * (j) + (i)) * (sz))
 #define USHORT_SRC( t, i, j, k )					\
-	((void) (k),                  					\
-	 ((GLushort *)(t)->Data + ((t)->RowStride * (j) + (i))))
+	((GLushort *)(t)->Data + ((t)->RowStride * (j) + (i)))
 #define UINT_SRC( t, i, j, k )						\
-	((void) (k),                  					\
-	 ((GLuint *)(t)->Data + ((t)->RowStride * (j) + (i))))
+	((GLuint *)(t)->Data + ((t)->RowStride * (j) + (i)))
 #define FLOAT_SRC( t, i, j, k, sz )					\
-	((void) (k),                  					\
-	 ((GLfloat *)(t)->Data + ((t)->RowStride * (j) + (i)) * (sz)))
+	((GLfloat *)(t)->Data + ((t)->RowStride * (j) + (i)) * (sz))
 #define HALF_SRC( t, i, j, k, sz )					\
-	((void) (k),                  					\
-	 ((GLhalfARB *)(t)->Data + ((t)->RowStride * (j) + (i)) * (sz)))
+	((GLhalfARB *)(t)->Data + ((t)->RowStride * (j) + (i)) * (sz))
 
 #define FETCH(x) fetch_texel_2d_##x
 
@@ -1023,9 +1012,9 @@
 			GLint i, GLint j, GLint k, GLchan *texel )
 {
    const GLubyte *src = UBYTE_SRC( texImage, i, j, k, 1 );
-   const GLuint index = *src;
    const struct gl_color_table *palette;
    const GLchan *table;
+   GLuint index;
    GET_CURRENT_CONTEXT(ctx);
 
    if (ctx->Texture.SharedPalette) {
@@ -1039,6 +1028,9 @@
    ASSERT(palette->Type != GL_FLOAT);
    table = (const GLchan *) palette->Table;
 
+   /* Mask the index against size of palette to avoid going out of bounds */
+   index = (*src) & (palette->Size - 1);
+
    switch (palette->Format) {
       case GL_ALPHA:
          texel[RCOMP] =

Modified: trunk/reactos/lib/mesa32/src/x86/common_x86.c
--- trunk/reactos/lib/mesa32/src/x86/common_x86.c	2005-11-04 14:25:07 UTC (rev 18990)
+++ trunk/reactos/lib/mesa32/src/x86/common_x86.c	2005-11-04 14:52:02 UTC (rev 18991)
@@ -132,6 +132,36 @@
 }
 #endif /* __linux__ && _POSIX_SOURCE && X86_FXSR_MAGIC */
 
+#if defined(WIN32)
+#ifndef STATUS_FLOAT_MULTIPLE_TRAPS
+# define STATUS_FLOAT_MULTIPLE_TRAPS (0xC00002B5L)
+#endif
+static LONG WINAPI ExceptionFilter(LPEXCEPTION_POINTERS exp)
+{
+   PEXCEPTION_RECORD rec = exp->ExceptionRecord;
+   PCONTEXT ctx = exp->ContextRecord;
+
+   if ( rec->ExceptionCode == EXCEPTION_ILLEGAL_INSTRUCTION ) {
+      message( "EXCEPTION_ILLEGAL_INSTRUCTION, " );
+      _mesa_x86_cpu_features &= ~(X86_FEATURE_XMM);
+   } else if ( rec->ExceptionCode == STATUS_FLOAT_MULTIPLE_TRAPS ) {
+      message( "STATUS_FLOAT_MULTIPLE_TRAPS, " );
+      /* Windows seems to clear the exception flag itself, we just have to increment Eip */
+   } else {
+      message( "UNEXPECTED EXCEPTION (0x%08x), terminating!" );
+      return EXCEPTION_EXECUTE_HANDLER;
+   }
+
+   if ( (ctx->ContextFlags & CONTEXT_CONTROL) != CONTEXT_CONTROL ) {
+      message( "Context does not contain control registers, terminating!" );
+      return EXCEPTION_EXECUTE_HANDLER;
+   }
+   ctx->Eip += 3;
+
+   return EXCEPTION_CONTINUE_EXECUTION;
+}
+#endif /* WIN32 */
+
 /* If we're running on a processor that can do SSE, let's see if we
  * are allowed to or not.  This will catch 2.4.0 or later kernels that
  * haven't been configured for a Pentium III but are running on one,
@@ -226,6 +256,44 @@
       if (ret || !enabled)
          _mesa_x86_cpu_features &= ~(X86_FEATURE_XMM);
    }
+#elif defined(WIN32)
+   LPTOP_LEVEL_EXCEPTION_FILTER oldFilter;
+
+   /* Install our ExceptionFilter */
+   oldFilter = SetUnhandledExceptionFilter( ExceptionFilter );
+
+   if ( cpu_has_xmm ) {
+      message( "Testing OS support for SSE... " );
+
+      _mesa_test_os_sse_support();
+
+      if ( cpu_has_xmm ) {
+	 message( "yes.\n" );
+      } else {
+	 message( "no!\n" );
+      }
+   }
+
+   if ( cpu_has_xmm ) {
+      message( "Testing OS support for SSE unmasked exceptions... " );
+
+      _mesa_test_os_sse_exception_support();
+
+      if ( cpu_has_xmm ) {
+	 message( "yes.\n" );
+      } else {
+	 message( "no!\n" );
+      }
+   }
+
+   /* Restore previous exception filter */
+   SetUnhandledExceptionFilter( oldFilter );
+
+   if ( cpu_has_xmm ) {
+      message( "Tests of OS support for SSE passed.\n" );
+   } else {
+      message( "Tests of OS support for SSE failed!\n" );
+   }
 #else
    /* Do nothing on other platforms for now.
     */

Modified: trunk/reactos/lib/mesa32/src/x86/glapi_x86.S
--- trunk/reactos/lib/mesa32/src/x86/glapi_x86.S	2005-11-04 14:25:07 UTC (rev 18990)
+++ trunk/reactos/lib/mesa32/src/x86/glapi_x86.S	2005-11-04 14:52:02 UTC (rev 18991)
@@ -29,7 +29,7 @@
 #include "assyntax.h"
 #include "glapioffsets.h"
 
-#ifndef __WIN32__
+#if 1 //ndef __WIN32__
 
 #if defined(STDCALL_API)
 # if defined(USE_MGL_NAMESPACE)