summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordawes <dawes>2001-08-17 18:25:50 +0000
committerdawes <dawes>2001-08-17 18:25:50 +0000
commit9d24d222d99eb6d5558edbb460d3cdf4b1d65f06 (patch)
treee27b286c0a4cca22c294c6dc85701a20e668b3da
parentbaa42376bacd9a37290e4c6268bee881cebecf4e (diff)
Mesa version 3.4.2 snapshot at 20010817
-rw-r--r--extras/Mesa/Make-config10
-rw-r--r--extras/Mesa/WIN32/RULES/lib.mesa.core4
-rw-r--r--extras/Mesa/src/Windows/wmesa.c2
-rw-r--r--extras/Mesa/src/X86/common_x86.c10
-rw-r--r--extras/Mesa/src/dlist.c39
-rw-r--r--extras/Mesa/src/enums.c3
-rw-r--r--extras/Mesa/src/lines.c31
-rw-r--r--extras/Mesa/src/macros.h22
-rw-r--r--extras/Mesa/src/pixel.c88
-rw-r--r--extras/Mesa/src/texstate.c2
-rw-r--r--extras/Mesa/src/xform_tmp.h8
11 files changed, 148 insertions, 71 deletions
diff --git a/extras/Mesa/Make-config b/extras/Mesa/Make-config
index 227a49f69..aad2c36de 100644
--- a/extras/Mesa/Make-config
+++ b/extras/Mesa/Make-config
@@ -453,7 +453,7 @@ linux:
"GLUT_LIB = libglut.so" \
"GLW_LIB = libGLw.so" \
"CC = gcc" \
- "CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -DPTHREADS -I/usr/X11R6/include" \
+ "CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -DPTHREADS -I/usr/X11R6/include" \
"MAKELIB = ../bin/mklib.linux" \
"GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -lpthread" \
"GLU_LIB_DEPS = -L../lib -lGL -lm" \
@@ -467,7 +467,7 @@ linux-static:
"GLUT_LIB = libglut.a" \
"GLW_LIB = libGLw.a" \
"CC = gcc" \
- "CFLAGS = -O3 -funroll-loops -ansi -pedantic -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -DPTHREADS -I/usr/X11R6/include" \
+ "CFLAGS = -O3 -funroll-loops -ansi -pedantic -ffast-math -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -DPTHREADS -I/usr/X11R6/include" \
"MAKELIB = ../bin/mklib.ar-ruv" \
"APP_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lm -lpthread"
@@ -478,7 +478,7 @@ linux-x86:
"GLUT_LIB = libglut.so" \
"GLW_LIB = libGLw.so" \
"CC = gcc -malign-loops=2 -malign-jumps=2 -malign-functions=2" \
- "CFLAGS = -Wall -O3 -ansi -pedantic -fPIC -ffast-math -funroll-loops -fomit-frame-pointer -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_KATMAI_ASM -DPTHREADS -I/usr/X11R6/include" \
+ "CFLAGS = -Wall -O3 -ansi -pedantic -fPIC -ffast-math -funroll-loops -fomit-frame-pointer -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_KATMAI_ASM -DPTHREADS -I/usr/X11R6/include" \
"MAKELIB = ../bin/mklib.linux" \
"GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -lm -lpthread" \
"GLU_LIB_DEPS = -L../lib -lGL -lm" \
@@ -508,7 +508,7 @@ linux-x86-static:
"GLUT_LIB = libglut.a" \
"GLW_LIB = libGLw.a" \
"CC = gcc -malign-loops=2 -malign-jumps=2 -malign-functions=2" \
- "CFLAGS = -Wall -O3 -ansi -pedantic -fPIC -ffast-math -funroll-loops -fomit-frame-pointer -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_KATMAI_ASM -DPTHREADS -I/usr/X11R6/include" \
+ "CFLAGS = -Wall -O3 -ansi -pedantic -fPIC -ffast-math -funroll-loops -fomit-frame-pointer -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_KATMAI_ASM -DPTHREADS -I/usr/X11R6/include" \
"MAKELIB = ../bin/mklib.ar-ruv" \
"GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -lm -lpthread" \
"GLU_LIB_DEPS = -L../lib -lGL -lm" \
@@ -1295,7 +1295,7 @@ linux-x86-debug:
"GLUT_LIB = libglut.so" \
"GLW_LIB = libGLw.so" \
"CC = gcc -malign-loops=2 -malign-jumps=2 -malign-functions=2" \
- "CFLAGS = -O2 -g -ansi -pedantic -Wall -Wmissing-prototypes -fPIC -ffast-math -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_KATMAI_ASM -DPTHREADS -I/usr/X11R6/include -DDEBUG -DMESA_DEBUG" \
+ "CFLAGS = -O2 -g -ansi -pedantic -Wall -Wmissing-prototypes -fPIC -ffast-math -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_KATMAI_ASM -DPTHREADS -I/usr/X11R6/include -DDEBUG -DMESA_DEBUG" \
"MAKELIB = ../bin/mklib.linux" \
"GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -lm -lpthread" \
"GLU_LIB_DEPS = -L../lib -lGL -lm" \
diff --git a/extras/Mesa/WIN32/RULES/lib.mesa.core b/extras/Mesa/WIN32/RULES/lib.mesa.core
index 9d6ffb359..5178a548d 100644
--- a/extras/Mesa/WIN32/RULES/lib.mesa.core
+++ b/extras/Mesa/WIN32/RULES/lib.mesa.core
@@ -12,6 +12,6 @@ MESA_CORE = aatriangle.c hash.c pixeltex.c texture.c\
eval.c lowpc.c shade.c vbindirect.c clip.c extensions.c masking.c\
span.c vbrender.c colortab.c feedback.c matrix.c stages.c vbxform.c\
config.c fog.c mem.c state.c vector.c context.c get.c mmath.c\
- stencil.c vertices.c convolve.c glapi.c pb.c teximage.c winpos.c\
- copypix.c glapinoop.c pipeline.c texobj.c xform.c cva.c glthread.c\
+ stencil.c vertices.c convolve.c glapi.c pb.c texformat.c teximage.c \
+ winpos.c copypix.c glapinoop.c pipeline.c texobj.c xform.c cva.c glthread.c\
pixel.c texstate.c zoom.c
diff --git a/extras/Mesa/src/Windows/wmesa.c b/extras/Mesa/src/Windows/wmesa.c
index 257852ba9..574cca1b3 100644
--- a/extras/Mesa/src/Windows/wmesa.c
+++ b/extras/Mesa/src/Windows/wmesa.c
@@ -1085,7 +1085,7 @@ static void read_rgba_pixels( const GLcontext* ctx,
assert(Current->rgb_flag==GL_TRUE);
for (i=0; i<n; i++) {
if (mask[i]) {
- GLint y2 = Current->Height - y[i] - 1;
+ GLint y2 = Current->height - y[i] - 1;
Color=GetPixel(DC,x[i],y2);
rgba[i][RCOMP] = GetRValue(Color);
rgba[i][GCOMP] = GetGValue(Color);
diff --git a/extras/Mesa/src/X86/common_x86.c b/extras/Mesa/src/X86/common_x86.c
index 277fdba40..25656f400 100644
--- a/extras/Mesa/src/X86/common_x86.c
+++ b/extras/Mesa/src/X86/common_x86.c
@@ -36,7 +36,7 @@
#include <stdlib.h>
#include <stdio.h>
-#if defined(USE_KATMAI_ASM) && defined(__linux__) && defined(_POSIX_SOURCE)
+#if defined(USE_KATMAI_ASM) && defined(__linux__)
#include <signal.h>
#endif
@@ -88,7 +88,7 @@ static void message( const char *msg )
extern void gl_test_os_katmai_support( void );
extern void gl_test_os_katmai_exception_support( void );
-#if defined(__linux__) && defined(_POSIX_SOURCE)
+#if defined(__linux__) && defined(_POSIX_SOURCE) && defined(X86_FXSR_MAGIC)
static void sigill_handler( int signal, struct sigcontext sc )
{
message( "SIGILL, " );
@@ -126,7 +126,7 @@ static void sigfpe_handler( int signal, struct sigcontext sc )
gl_problem( NULL, "SSE enabling test failed badly!" );
}
}
-#endif /* __linux__ && _POSIX_SOURCE */
+#endif /* __linux__ && _POSIX_SOURCE && X86_FXSR_MAGIC */
/* 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
@@ -139,7 +139,7 @@ static void sigfpe_handler( int signal, struct sigcontext sc )
static void check_os_katmai_support( void )
{
#if defined(__linux__)
-#if defined(_POSIX_SOURCE)
+#if defined(_POSIX_SOURCE) && defined(X86_FXSR_MAGIC)
struct sigaction saved_sigill;
struct sigaction saved_sigfpe;
@@ -213,7 +213,7 @@ static void check_os_katmai_support( void )
*/
message( "Cannot test OS support for SSE, disabling to be safe.\n" );
gl_x86_cpu_features &= ~(X86_FEATURE_XMM);
-#endif /* _POSIX_SOURCE */
+#endif /* _POSIX_SOURCE && X86_FXSR_MAGIC */
#else
/* Do nothing on non-Linux platforms for now.
*/
diff --git a/extras/Mesa/src/dlist.c b/extras/Mesa/src/dlist.c
index dfa65ea37..515d02c67 100644
--- a/extras/Mesa/src/dlist.c
+++ b/extras/Mesa/src/dlist.c
@@ -1153,7 +1153,7 @@ save_CopyColorSubTable(GLenum target, GLsizei start,
Node *n;
FLUSH_VB(ctx, "dlist");
- n = alloc_instruction( ctx, OPCODE_COPY_COLOR_SUB_TABLE, 6 );
+ n = alloc_instruction( ctx, OPCODE_COPY_COLOR_SUB_TABLE, 5 );
if (n) {
n[1].e = target;
n[2].i = start;
@@ -1175,7 +1175,7 @@ save_CopyColorTable(GLenum target, GLenum internalformat,
Node *n;
FLUSH_VB(ctx, "dlist");
- n = alloc_instruction( ctx, OPCODE_COPY_COLOR_TABLE, 6 );
+ n = alloc_instruction( ctx, OPCODE_COPY_COLOR_TABLE, 5 );
if (n) {
n[1].e = target;
n[2].e = internalformat;
@@ -1317,7 +1317,7 @@ save_ConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params)
GET_CURRENT_CONTEXT(ctx);
Node *n;
FLUSH_VB(ctx, "dlist");
- n = alloc_instruction( ctx, OPCODE_CONVOLUTION_PARAMETER_IV, 6 );
+ n = alloc_instruction( ctx, OPCODE_CONVOLUTION_PARAMETER_FV, 6 );
if (n) {
n[1].e = target;
n[2].e = pname;
@@ -3670,7 +3670,7 @@ save_CompressedTexImage1DARB(GLenum target, GLint level,
return;
}
MEMCPY(image, data, imageSize);
- n = alloc_instruction( ctx, OPCODE_COMPRESSED_TEX_IMAGE_1D, 8 );
+ n = alloc_instruction( ctx, OPCODE_COMPRESSED_TEX_IMAGE_1D, 7 );
if (n) {
n[1].e = target;
n[2].i = level;
@@ -3714,7 +3714,7 @@ save_CompressedTexImage2DARB(GLenum target, GLint level,
return;
}
MEMCPY(image, data, imageSize);
- n = alloc_instruction( ctx, OPCODE_COMPRESSED_TEX_IMAGE_2D, 9 );
+ n = alloc_instruction( ctx, OPCODE_COMPRESSED_TEX_IMAGE_2D, 8 );
if (n) {
n[1].e = target;
n[2].i = level;
@@ -3759,7 +3759,7 @@ save_CompressedTexImage3DARB(GLenum target, GLint level,
return;
}
MEMCPY(image, data, imageSize);
- n = alloc_instruction( ctx, OPCODE_COMPRESSED_TEX_IMAGE_3D, 10 );
+ n = alloc_instruction( ctx, OPCODE_COMPRESSED_TEX_IMAGE_3D, 9 );
if (n) {
n[1].e = target;
n[2].i = level;
@@ -3800,7 +3800,7 @@ save_CompressedTexSubImage1DARB(GLenum target, GLint level, GLint xoffset,
return;
}
MEMCPY(image, data, imageSize);
- n = alloc_instruction( ctx, OPCODE_COMPRESSED_TEX_SUB_IMAGE_1D, 8 );
+ n = alloc_instruction( ctx, OPCODE_COMPRESSED_TEX_SUB_IMAGE_1D, 7 );
if (n) {
n[1].e = target;
n[2].i = level;
@@ -3839,7 +3839,7 @@ save_CompressedTexSubImage2DARB(GLenum target, GLint level, GLint xoffset,
return;
}
MEMCPY(image, data, imageSize);
- n = alloc_instruction( ctx, OPCODE_COMPRESSED_TEX_SUB_IMAGE_2D, 10 );
+ n = alloc_instruction( ctx, OPCODE_COMPRESSED_TEX_SUB_IMAGE_2D, 9 );
if (n) {
n[1].e = target;
n[2].i = level;
@@ -3880,7 +3880,7 @@ save_CompressedTexSubImage3DARB(GLenum target, GLint level, GLint xoffset,
return;
}
MEMCPY(image, data, imageSize);
- n = alloc_instruction( ctx, OPCODE_COMPRESSED_TEX_SUB_IMAGE_3D, 12 );
+ n = alloc_instruction( ctx, OPCODE_COMPRESSED_TEX_SUB_IMAGE_3D, 11 );
if (n) {
n[1].e = target;
n[2].i = level;
@@ -5661,11 +5661,22 @@ static void print_list( GLcontext *ctx, FILE *f, GLuint list )
fprintf(f,"Error: %s %s\n", enum_string(n[1].e), (const char *)n[2].data );
break;
case OPCODE_VERTEX_CASSETTE:
- fprintf(f,"VERTEX-CASSETTE, id %u, rows %u..%u\n",
- ((struct immediate *) n[1].data)->id,
- n[2].ui,
- n[3].ui);
- gl_print_cassette( (struct immediate *) n[1].data );
+ {
+ struct immediate *IM;
+ fprintf(f,"VERTEX-CASSETTE, id %u, rows %u..%u\n",
+ ((struct immediate *) n[1].data)->id,
+ n[2].ui,
+ n[3].ui);
+ IM = (struct immediate *) n[1].data;
+ IM->Start = n[2].ui;
+ IM->Count = n[3].ui;
+ IM->BeginState = n[4].ui;
+ IM->OrFlag = n[5].ui;
+ IM->AndFlag = n[6].ui;
+ IM->LastData = n[7].ui;
+ IM->LastPrimitive = n[8].ui;
+ gl_print_cassette( (struct immediate *) n[1].data );
+ }
break;
case OPCODE_CONTINUE:
fprintf(f,"DISPLAY-LIST-CONTINUE\n");
diff --git a/extras/Mesa/src/enums.c b/extras/Mesa/src/enums.c
index cc58b3707..9167ad9eb 100644
--- a/extras/Mesa/src/enums.c
+++ b/extras/Mesa/src/enums.c
@@ -863,6 +863,9 @@ static void sort_enums( void )
index1 = (enum_elt **)MALLOC( Elements(all_enums) * sizeof(enum_elt *) );
sorted = 1;
+ if (!index1)
+ return; /* what else can we do? */
+
qsort( all_enums, Elements(all_enums), sizeof(*all_enums),
(cfunc) compar_name );
diff --git a/extras/Mesa/src/lines.c b/extras/Mesa/src/lines.c
index 8f7a55842..1f3d2979b 100644
--- a/extras/Mesa/src/lines.c
+++ b/extras/Mesa/src/lines.c
@@ -969,6 +969,23 @@ static void aa_multitex_rgba_line( GLcontext *ctx,
GLuint vert0, GLuint vert1, GLuint pvert )
{
#define INTERP_RGBA 1
+#define INTERP_STUV0 1
+#define INTERP_STUV1 1
+#define PLOT(x, y) \
+ { \
+ PB_WRITE_MULTITEX_PIXEL( pb, (x), (y), z, \
+ red, green, blue, coverage, \
+ s, t, u, s1, t1, u1 ); \
+ }
+#include "lnaatemp.h"
+}
+
+
+/* As above but with separate specular */
+static void aa_multitex_spec_line( GLcontext *ctx,
+ GLuint vert0, GLuint vert1, GLuint pvert )
+{
+#define INTERP_RGBA 1
#define INTERP_SPEC 1
#define INTERP_STUV0 1
#define INTERP_STUV1 1
@@ -1053,6 +1070,8 @@ _mesa_print_line_function(GLcontext *ctx)
printf("aa_tex_rgba_line\n");
else if (ctx->Driver.LineFunc == aa_multitex_rgba_line)
printf("aa_multitex_rgba_line\n");
+ else if (ctx->Driver.LineFunc == aa_multitex_spec_line)
+ printf("aa_multitex_spec_line\n");
else if (ctx->Driver.LineFunc == aa_ci_line)
printf("aa_ci_line\n");
else if (ctx->Driver.LineFunc == null_line)
@@ -1087,12 +1106,16 @@ void gl_set_line_function( GLcontext *ctx )
/* antialiased lines */
if (rgbmode) {
if (ctx->Texture.ReallyEnabled) {
- if (ctx->Texture.ReallyEnabled >= TEXTURE1_1D
- || ctx->Light.Model.ColorControl==GL_SEPARATE_SPECULAR_COLOR)
+ if (ctx->Texture.ReallyEnabled >= TEXTURE1_1D) {
/* Multitextured! */
- ctx->Driver.LineFunc = aa_multitex_rgba_line;
- else
+ if (ctx->Light.Model.ColorControl==GL_SEPARATE_SPECULAR_COLOR)
+ ctx->Driver.LineFunc = aa_multitex_spec_line;
+ else
+ ctx->Driver.LineFunc = aa_multitex_rgba_line;
+ }
+ else {
ctx->Driver.LineFunc = aa_tex_rgba_line;
+ }
} else {
ctx->Driver.LineFunc = aa_rgba_line;
}
diff --git a/extras/Mesa/src/macros.h b/extras/Mesa/src/macros.h
index 2a6006c9e..67e01f6a4 100644
--- a/extras/Mesa/src/macros.h
+++ b/extras/Mesa/src/macros.h
@@ -356,18 +356,22 @@ do { \
/*
* Copy a vector of 4 GLubytes from SRC to DST.
*/
+#if defined(__i386__)
#define COPY_4UBV(DST, SRC) \
do { \
- if (sizeof(GLuint)==4*sizeof(GLubyte)) { \
- *((GLuint*)(DST)) = *((GLuint*)(SRC)); \
- } \
- else { \
- (DST)[0] = (SRC)[0]; \
- (DST)[1] = (SRC)[1]; \
- (DST)[2] = (SRC)[2]; \
- (DST)[3] = (SRC)[3]; \
- } \
+ *((GLuint*)(DST)) = *((GLuint*)(SRC)); \
} while (0)
+#else
+/* The GLuint cast might fail if DST or SRC are not dword-aligned (RISC) */
+#define COPY_4UBV(DST, SRC) \
+do { \
+ (DST)[0] = (SRC)[0]; \
+ (DST)[1] = (SRC)[1]; \
+ (DST)[2] = (SRC)[2]; \
+ (DST)[3] = (SRC)[3]; \
+} while (0)
+#endif
+
/* Assign scalers to short vectors: */
diff --git a/extras/Mesa/src/pixel.c b/extras/Mesa/src/pixel.c
index f4f032ae5..7b335e1ba 100644
--- a/extras/Mesa/src/pixel.c
+++ b/extras/Mesa/src/pixel.c
@@ -722,10 +722,14 @@ _mesa_map_rgba( const GLcontext *ctx, GLuint n, GLfloat rgba[][4] )
const GLfloat *aMap = ctx->Pixel.MapAtoA;
GLuint i;
for (i=0;i<n;i++) {
- rgba[i][RCOMP] = rMap[(GLint) (rgba[i][RCOMP] * rscale + 0.5F)];
- rgba[i][GCOMP] = gMap[(GLint) (rgba[i][GCOMP] * gscale + 0.5F)];
- rgba[i][BCOMP] = bMap[(GLint) (rgba[i][BCOMP] * bscale + 0.5F)];
- rgba[i][ACOMP] = aMap[(GLint) (rgba[i][ACOMP] * ascale + 0.5F)];
+ GLfloat r = CLAMP(rgba[i][RCOMP], 0.0F, 1.0F);
+ GLfloat g = CLAMP(rgba[i][GCOMP], 0.0F, 1.0F);
+ GLfloat b = CLAMP(rgba[i][BCOMP], 0.0F, 1.0F);
+ GLfloat a = CLAMP(rgba[i][ACOMP], 0.0F, 1.0F);
+ rgba[i][RCOMP] = rMap[(GLint) (r * rscale + 0.5F)];
+ rgba[i][GCOMP] = gMap[(GLint) (g * gscale + 0.5F)];
+ rgba[i][BCOMP] = bMap[(GLint) (b * bscale + 0.5F)];
+ rgba[i][ACOMP] = aMap[(GLint) (a * ascale + 0.5F)];
}
}
@@ -774,24 +778,26 @@ _mesa_lookup_rgba(const struct gl_color_table *table,
case GL_INTENSITY:
/* replace RGBA with I */
if (table->TableType == GL_UNSIGNED_BYTE) {
- const GLfloat scale = (GLfloat) (table->Size - 1);
+ const GLint max = table->Size - 1;
+ const GLfloat scale = (GLfloat) max;
const GLubyte *lut = (const GLubyte *) table->Table;
GLuint i;
for (i = 0; i < n; i++) {
GLint j = (GLint) (rgba[i][RCOMP] * scale + 0.5F);
- GLfloat c = lut[j] * (1.0F / 255.0F);
+ GLfloat c = lut[CLAMP(j, 0, max)] * (1.0F / 255.0F);
rgba[i][RCOMP] = rgba[i][GCOMP] =
rgba[i][BCOMP] = rgba[i][ACOMP] = c;
}
}
else {
- const GLfloat scale = (GLfloat) (table->Size - 1);
+ const GLint max = table->Size - 1;
+ const GLfloat scale = (GLfloat) max;
const GLfloat *lut = (const GLfloat *) table->Table;
GLuint i;
for (i = 0; i < n; i++) {
GLint j = (GLint) (rgba[i][RCOMP] * scale + 0.5F);
- GLfloat c = lut[j];
+ GLfloat c = lut[CLAMP(j, 0, max)];
rgba[i][RCOMP] = rgba[i][GCOMP] =
rgba[i][BCOMP] = rgba[i][ACOMP] = c;
}
@@ -800,22 +806,24 @@ _mesa_lookup_rgba(const struct gl_color_table *table,
case GL_LUMINANCE:
/* replace RGB with L */
if (table->TableType == GL_UNSIGNED_BYTE) {
- const GLfloat scale = (GLfloat) (table->Size - 1);
+ const GLint max = table->Size - 1;
+ const GLfloat scale = (GLfloat) max;
const GLubyte *lut = (const GLubyte *) table->Table;
GLuint i;
for (i = 0; i < n; i++) {
GLint j = (GLint) (rgba[i][RCOMP] * scale + 0.5F);
- GLfloat c = lut[j] * (1.0F / 255.0F);
+ GLfloat c = lut[CLAMP(j, 0, max)] * (1.0F / 255.0F);
rgba[i][RCOMP] = rgba[i][GCOMP] = rgba[i][BCOMP] = c;
}
}
else {
- const GLfloat scale = (GLfloat) (table->Size - 1);
+ const GLint max = table->Size - 1;
+ const GLfloat scale = (GLfloat) max;
const GLfloat *lut = (const GLfloat *) table->Table;
GLuint i;
for (i = 0; i < n; i++) {
GLint j = (GLint) (rgba[i][RCOMP] * scale + 0.5F);
- GLfloat c = lut[j];
+ GLfloat c = lut[CLAMP(j, 0, max)];
rgba[i][RCOMP] = rgba[i][GCOMP] = rgba[i][BCOMP] = c;
}
}
@@ -823,48 +831,58 @@ _mesa_lookup_rgba(const struct gl_color_table *table,
case GL_ALPHA:
/* replace A with A */
if (table->TableType == GL_UNSIGNED_BYTE) {
- const GLfloat scale = (GLfloat) (table->Size - 1);
+ const GLint max = table->Size - 1;
+ const GLfloat scale = (GLfloat) max;
const GLubyte *lut = (const GLubyte *) table->Table;
GLuint i;
for (i = 0; i < n; i++) {
GLint j = (GLint) (rgba[i][ACOMP] * scale + 0.5F);
- rgba[i][ACOMP] = lut[j] * (1.0F / 255.0F);
+ rgba[i][ACOMP] = lut[CLAMP(j, 0, max)] * (1.0F / 255.0F);
}
}
else {
- const GLfloat scale = (GLfloat) (table->Size - 1);
+ const GLint max = table->Size - 1;
+ const GLfloat scale = (GLfloat) max;
const GLfloat *lut = (const GLfloat *) table->Table;
GLuint i;
for (i = 0; i < n; i++) {
GLint j = (GLint) (rgba[i][ACOMP] * scale + 0.5F);
- rgba[i][ACOMP] = lut[j];
+ rgba[i][ACOMP] = lut[CLAMP(j, 0, max)];
}
}
break;
case GL_LUMINANCE_ALPHA:
/* replace RGBA with LLLA */
if (table->TableType == GL_UNSIGNED_BYTE) {
- const GLfloat scale = (GLfloat) (table->Size - 1);
+ const GLint max = table->Size - 1;
+ const GLfloat scale = (GLfloat) max;
const GLubyte *lut = (const GLubyte *) table->Table;
GLuint i;
for (i = 0; i < n; i++) {
GLint jL = (GLint) (rgba[i][RCOMP] * scale + 0.5F);
GLint jA = (GLint) (rgba[i][ACOMP] * scale + 0.5F);
- GLfloat luminance = lut[jL * 2 + 0] * (1.0F / 255.0F);
- GLfloat alpha = lut[jA * 2 + 1] * (1.0F / 255.0F);
+ GLfloat luminance, alpha;
+ jL = CLAMP(jL, 0, max);
+ jA = CLAMP(jA, 0, max);
+ luminance = lut[jL * 2 + 0] * (1.0F / 255.0F);
+ alpha = lut[jA * 2 + 1] * (1.0F / 255.0F);
rgba[i][RCOMP] = rgba[i][GCOMP] = rgba[i][BCOMP] = luminance;
rgba[i][ACOMP] = alpha;;
}
}
else {
- const GLfloat scale = (GLfloat) (table->Size - 1);
+ const GLint max = table->Size - 1;
+ const GLfloat scale = (GLfloat) max;
const GLfloat *lut = (const GLfloat *) table->Table;
GLuint i;
for (i = 0; i < n; i++) {
GLint jL = (GLint) (rgba[i][RCOMP] * scale + 0.5F);
GLint jA = (GLint) (rgba[i][ACOMP] * scale + 0.5F);
- GLfloat luminance = lut[jL * 2 + 0];
- GLfloat alpha = lut[jA * 2 + 1];
+ GLfloat luminance, alpha;
+ jL = CLAMP(jL, 0, max);
+ jA = CLAMP(jA, 0, max);
+ luminance = lut[jL * 2 + 0];
+ alpha = lut[jA * 2 + 1];
rgba[i][RCOMP] = rgba[i][GCOMP] = rgba[i][BCOMP] = luminance;
rgba[i][ACOMP] = alpha;;
}
@@ -873,26 +891,34 @@ _mesa_lookup_rgba(const struct gl_color_table *table,
case GL_RGB:
/* replace RGB with RGB */
if (table->TableType == GL_UNSIGNED_BYTE) {
- const GLfloat scale = (GLfloat) (table->Size - 1);
+ const GLint max = table->Size - 1;
+ const GLfloat scale = (GLfloat) max;
const GLubyte *lut = (const GLubyte *) table->Table;
GLuint i;
for (i = 0; i < n; i++) {
GLint jR = (GLint) (rgba[i][RCOMP] * scale + 0.5F);
GLint jG = (GLint) (rgba[i][GCOMP] * scale + 0.5F);
GLint jB = (GLint) (rgba[i][BCOMP] * scale + 0.5F);
+ jR = CLAMP(jR, 0, max);
+ jG = CLAMP(jG, 0, max);
+ jB = CLAMP(jB, 0, max);
rgba[i][RCOMP] = lut[jR * 3 + 0] * (1.0F / 255.0F);
rgba[i][GCOMP] = lut[jG * 3 + 1] * (1.0F / 255.0F);
rgba[i][BCOMP] = lut[jB * 3 + 2] * (1.0F / 255.0F);
}
}
else {
- const GLfloat scale = (GLfloat) (table->Size - 1);
+ const GLint max = table->Size - 1;
+ const GLfloat scale = (GLfloat) max;
const GLfloat *lut = (const GLfloat *) table->Table;
GLuint i;
for (i = 0; i < n; i++) {
GLint jR = (GLint) (rgba[i][RCOMP] * scale + 0.5F);
GLint jG = (GLint) (rgba[i][GCOMP] * scale + 0.5F);
GLint jB = (GLint) (rgba[i][BCOMP] * scale + 0.5F);
+ jR = CLAMP(jR, 0, max);
+ jG = CLAMP(jG, 0, max);
+ jB = CLAMP(jB, 0, max);
rgba[i][RCOMP] = lut[jR * 3 + 0];
rgba[i][GCOMP] = lut[jG * 3 + 1];
rgba[i][BCOMP] = lut[jB * 3 + 2];
@@ -902,7 +928,8 @@ _mesa_lookup_rgba(const struct gl_color_table *table,
case GL_RGBA:
/* replace RGBA with RGBA */
if (table->TableType == GL_UNSIGNED_BYTE) {
- const GLfloat scale = (GLfloat) (table->Size - 1);
+ const GLint max = table->Size - 1;
+ const GLfloat scale = (GLfloat) max;
const GLubyte *lut = (const GLubyte *) table->Table;
GLuint i;
for (i = 0; i < n; i++) {
@@ -910,6 +937,10 @@ _mesa_lookup_rgba(const struct gl_color_table *table,
GLint jG = (GLint) (rgba[i][GCOMP] * scale + 0.5F);
GLint jB = (GLint) (rgba[i][BCOMP] * scale + 0.5F);
GLint jA = (GLint) (rgba[i][ACOMP] * scale + 0.5F);
+ jR = CLAMP(jR, 0, max);
+ jG = CLAMP(jG, 0, max);
+ jB = CLAMP(jB, 0, max);
+ jA = CLAMP(jA, 0, max);
rgba[i][RCOMP] = lut[jR * 4 + 0] * (1.0F / 255.0F);
rgba[i][GCOMP] = lut[jG * 4 + 1] * (1.0F / 255.0F);
rgba[i][BCOMP] = lut[jB * 4 + 2] * (1.0F / 255.0F);
@@ -917,7 +948,8 @@ _mesa_lookup_rgba(const struct gl_color_table *table,
}
}
else {
- const GLfloat scale = (GLfloat) (table->Size - 1);
+ const GLint max = table->Size - 1;
+ const GLfloat scale = (GLfloat) max;
const GLfloat *lut = (const GLfloat *) table->Table;
GLuint i;
for (i = 0; i < n; i++) {
@@ -925,6 +957,10 @@ _mesa_lookup_rgba(const struct gl_color_table *table,
GLint jG = (GLint) (rgba[i][GCOMP] * scale + 0.5F);
GLint jB = (GLint) (rgba[i][BCOMP] * scale + 0.5F);
GLint jA = (GLint) (rgba[i][ACOMP] * scale + 0.5F);
+ jR = CLAMP(jR, 0, max);
+ jG = CLAMP(jG, 0, max);
+ jB = CLAMP(jB, 0, max);
+ jA = CLAMP(jA, 0, max);
rgba[i][RCOMP] = lut[jR * 4 + 0];
rgba[i][GCOMP] = lut[jG * 4 + 1];
rgba[i][BCOMP] = lut[jB * 4 + 2];
diff --git a/extras/Mesa/src/texstate.c b/extras/Mesa/src/texstate.c
index e1e25e8f8..e2e8dfa08 100644
--- a/extras/Mesa/src/texstate.c
+++ b/extras/Mesa/src/texstate.c
@@ -774,7 +774,7 @@ _mesa_TexParameterfv( GLenum target, GLenum pname, const GLfloat *params )
void
-_mesa_TexParameteri( GLenum target, GLenum pname, const GLint param )
+_mesa_TexParameteri( GLenum target, GLenum pname, GLint param )
{
GLfloat fparam[4];
fparam[0] = (GLfloat) param;
diff --git a/extras/Mesa/src/xform_tmp.h b/extras/Mesa/src/xform_tmp.h
index 8a0929668..7bb0d008f 100644
--- a/extras/Mesa/src/xform_tmp.h
+++ b/extras/Mesa/src/xform_tmp.h
@@ -971,8 +971,8 @@ static void _XFORMAPI TAG(init_c_transformations)( void )
TAG_TAB_4[MATRIX_3D] = TAG(transform_points4_3d);
#undef TAG_TAB
-#undef TAG_TAB1
-#undef TAG_TAB2
-#undef TAG_TAB3
-#undef TAG_TAB4
+#undef TAG_TAB_1
+#undef TAG_TAB_2
+#undef TAG_TAB_3
+#undef TAG_TAB_4
}