fix GLchan=GLfloat problems

This commit is contained in:
Brian Paul
2003-03-04 19:16:47 +00:00
parent 612cf792db
commit cc9464e082
3 changed files with 49 additions and 25 deletions

View File

@@ -1,4 +1,4 @@
/* $Id: osmesa.c,v 1.100 2003/03/01 01:50:23 brianp Exp $ */ /* $Id: osmesa.c,v 1.101 2003/03/04 19:16:47 brianp Exp $ */
/* /*
* Mesa 3-D graphics library * Mesa 3-D graphics library
@@ -225,14 +225,14 @@ clear( GLcontext *ctx, GLbitfield mask, GLboolean all,
#define INC_PIXEL_PTR(P) P += 4 #define INC_PIXEL_PTR(P) P += 4
#if CHAN_TYPE == GL_FLOAT #if CHAN_TYPE == GL_FLOAT
#define STORE_RGB_PIXEL(P, R, G, B) \ #define STORE_RGB_PIXEL(P, R, G, B) \
P[0] = MAX2((R), 0.0F); P[0] = MAX2((R), 0.0F); \
P[1] = MAX2((G), 0.0F); P[1] = MAX2((G), 0.0F); \
P[2] = MAX2((B), 0.0F); P[2] = MAX2((B), 0.0F); \
P[3] = CHAN_MAXF P[3] = CHAN_MAXF
#define STORE_RGBA_PIXEL(P, R, G, B, A) \ #define STORE_RGBA_PIXEL(P, R, G, B, A) \
P[0] = MAX2((R), 0.0F); P[0] = MAX2((R), 0.0F); \
P[1] = MAX2((G), 0.0F); P[1] = MAX2((G), 0.0F); \
P[2] = MAX2((B), 0.0F); P[2] = MAX2((B), 0.0F); \
P[3] = CLAMP((A), 0.0F, CHAN_MAXF) P[3] = CLAMP((A), 0.0F, CHAN_MAXF)
#else #else
#define STORE_RGB_PIXEL(P, R, G, B) \ #define STORE_RGB_PIXEL(P, R, G, B) \
@@ -305,6 +305,7 @@ clear( GLcontext *ctx, GLbitfield mask, GLboolean all,
#include "swrast/s_spantemp.h" #include "swrast/s_spantemp.h"
/* 16-bit BGR */ /* 16-bit BGR */
#if CHAN_TYPE == GL_UNSIGNED_BYTE
#define NAME(PREFIX) PREFIX##_RGB_565 #define NAME(PREFIX) PREFIX##_RGB_565
#define SPAN_VARS \ #define SPAN_VARS \
const OSMesaContext osmesa = OSMESA_CONTEXT(ctx); const OSMesaContext osmesa = OSMESA_CONTEXT(ctx);
@@ -321,6 +322,7 @@ clear( GLcontext *ctx, GLbitfield mask, GLboolean all,
B = ( (((*P) << 3) & 0xf8) | (((*P) ) & 0x7) ); \ B = ( (((*P) << 3) & 0xf8) | (((*P) ) & 0x7) ); \
A = CHAN_MAX A = CHAN_MAX
#include "swrast/s_spantemp.h" #include "swrast/s_spantemp.h"
#endif
/* color index */ /* color index */
#define NAME(PREFIX) PREFIX##_CI #define NAME(PREFIX) PREFIX##_CI
@@ -699,6 +701,7 @@ hook_in_driver_functions( GLcontext *ctx )
swdd->ReadRGBASpan = read_rgba_span_BGR; swdd->ReadRGBASpan = read_rgba_span_BGR;
swdd->ReadRGBAPixels = read_rgba_pixels_BGR; swdd->ReadRGBAPixels = read_rgba_pixels_BGR;
} }
#if CHAN_TYPE == GL_UNSIGNED_BYTE
else if (osmesa->format == OSMESA_RGB_565) { else if (osmesa->format == OSMESA_RGB_565) {
swdd->WriteRGBASpan = write_rgba_span_RGB_565; swdd->WriteRGBASpan = write_rgba_span_RGB_565;
swdd->WriteRGBSpan = write_rgb_span_RGB_565; swdd->WriteRGBSpan = write_rgb_span_RGB_565;
@@ -708,6 +711,7 @@ hook_in_driver_functions( GLcontext *ctx )
swdd->ReadRGBASpan = read_rgba_span_RGB_565; swdd->ReadRGBASpan = read_rgba_span_RGB_565;
swdd->ReadRGBAPixels = read_rgba_pixels_RGB_565; swdd->ReadRGBAPixels = read_rgba_pixels_RGB_565;
} }
#endif
else if (osmesa->format == OSMESA_RGBA) { else if (osmesa->format == OSMESA_RGBA) {
swdd->WriteRGBASpan = write_rgba_span_RGBA; swdd->WriteRGBASpan = write_rgba_span_RGBA;
swdd->WriteRGBSpan = write_rgb_span_RGBA; swdd->WriteRGBSpan = write_rgb_span_RGBA;
@@ -909,6 +913,7 @@ OSMesaCreateContextExt( GLenum format, GLint depthBits, GLint stencilBits,
bind = 0; bind = 0;
rgbmode = GL_TRUE; rgbmode = GL_TRUE;
} }
#if CHAN_TYPE == GL_UNSIGNED_BYTE
else if (format==OSMESA_RGB_565) { else if (format==OSMESA_RGB_565) {
indexBits = 0; indexBits = 0;
redBits = 5; redBits = 5;
@@ -924,6 +929,7 @@ OSMesaCreateContextExt( GLenum format, GLint depthBits, GLint stencilBits,
bind = 0; bind = 0;
rgbmode = GL_TRUE; rgbmode = GL_TRUE;
} }
#endif
else { else {
return NULL; return NULL;
} }

View File

@@ -1,4 +1,4 @@
/* $Id: s_texture.c,v 1.82 2003/03/01 01:50:26 brianp Exp $ */ /* $Id: s_texture.c,v 1.83 2003/03/04 19:17:31 brianp Exp $ */
/* /*
* Mesa 3-D graphics library * Mesa 3-D graphics library
@@ -321,7 +321,8 @@ _swrast_texture_table_lookup(const struct gl_color_table *table,
} }
} }
else { else {
if (CHAN_TYPE == GL_UNSIGNED_BYTE && table->Size == 256) { #if CHAN_TYPE == GL_UNSIGNED_BYTE
if (table->Size == 256) {
/* common case */ /* common case */
const GLchan *lut = (const GLchan *) table->Table; const GLchan *lut = (const GLchan *) table->Table;
GLuint i; GLuint i;
@@ -331,7 +332,9 @@ _swrast_texture_table_lookup(const struct gl_color_table *table,
rgba[i][BCOMP] = rgba[i][ACOMP] = c; rgba[i][BCOMP] = rgba[i][ACOMP] = c;
} }
} }
else { else
#endif
{
const GLfloat scale = (GLfloat) (table->Size - 1) / CHAN_MAXF; const GLfloat scale = (GLfloat) (table->Size - 1) / CHAN_MAXF;
const GLchan *lut = (const GLchan *) table->Table; const GLchan *lut = (const GLchan *) table->Table;
GLuint i; GLuint i;
@@ -357,7 +360,8 @@ _swrast_texture_table_lookup(const struct gl_color_table *table,
} }
} }
else { else {
if (CHAN_TYPE == GL_UNSIGNED_BYTE && table->Size == 256) { #if CHAN_TYPE == GL_UNSIGNED_BYTE
if (table->Size == 256) {
/* common case */ /* common case */
const GLchan *lut = (const GLchan *) table->Table; const GLchan *lut = (const GLchan *) table->Table;
GLuint i; GLuint i;
@@ -366,7 +370,9 @@ _swrast_texture_table_lookup(const struct gl_color_table *table,
rgba[i][RCOMP] = rgba[i][GCOMP] = rgba[i][BCOMP] = c; rgba[i][RCOMP] = rgba[i][GCOMP] = rgba[i][BCOMP] = c;
} }
} }
else { else
#endif
{
const GLfloat scale = (GLfloat) (table->Size - 1) / CHAN_MAXF; const GLfloat scale = (GLfloat) (table->Size - 1) / CHAN_MAXF;
const GLchan *lut = (const GLchan *) table->Table; const GLchan *lut = (const GLchan *) table->Table;
GLuint i; GLuint i;
@@ -391,7 +397,8 @@ _swrast_texture_table_lookup(const struct gl_color_table *table,
} }
} }
else { else {
if (CHAN_TYPE == GL_UNSIGNED_BYTE && table->Size == 256) { #if CHAN_TYPE == GL_UNSIGNED_BYTE
if (table->Size == 256) {
/* common case */ /* common case */
const GLchan *lut = (const GLchan *) table->Table; const GLchan *lut = (const GLchan *) table->Table;
GLuint i; GLuint i;
@@ -399,7 +406,9 @@ _swrast_texture_table_lookup(const struct gl_color_table *table,
rgba[i][ACOMP] = lut[rgba[i][ACOMP]]; rgba[i][ACOMP] = lut[rgba[i][ACOMP]];
} }
} }
else { else
#endif
{
const GLfloat scale = (GLfloat) (table->Size - 1) / CHAN_MAXF; const GLfloat scale = (GLfloat) (table->Size - 1) / CHAN_MAXF;
const GLchan *lut = (const GLchan *) table->Table; const GLchan *lut = (const GLchan *) table->Table;
GLuint i; GLuint i;
@@ -427,7 +436,8 @@ _swrast_texture_table_lookup(const struct gl_color_table *table,
} }
} }
else { else {
if (CHAN_TYPE == GL_UNSIGNED_BYTE && table->Size == 256) { #if CHAN_TYPE == GL_UNSIGNED_BYTE
if (table->Size == 256) {
/* common case */ /* common case */
const GLchan *lut = (const GLchan *) table->Table; const GLchan *lut = (const GLchan *) table->Table;
GLuint i; GLuint i;
@@ -438,7 +448,9 @@ _swrast_texture_table_lookup(const struct gl_color_table *table,
rgba[i][ACOMP] = a; rgba[i][ACOMP] = a;
} }
} }
else { else
#endif
{
const GLfloat scale = (GLfloat) (table->Size - 1) / CHAN_MAXF; const GLfloat scale = (GLfloat) (table->Size - 1) / CHAN_MAXF;
const GLchan *lut = (const GLchan *) table->Table; const GLchan *lut = (const GLchan *) table->Table;
GLuint i; GLuint i;
@@ -469,7 +481,8 @@ _swrast_texture_table_lookup(const struct gl_color_table *table,
} }
} }
else { else {
if (CHAN_TYPE == GL_UNSIGNED_BYTE && table->Size == 256) { #if CHAN_TYPE == GL_UNSIGNED_BYTE
if (table->Size == 256) {
/* common case */ /* common case */
const GLchan *lut = (const GLchan *) table->Table; const GLchan *lut = (const GLchan *) table->Table;
GLuint i; GLuint i;
@@ -479,7 +492,9 @@ _swrast_texture_table_lookup(const struct gl_color_table *table,
rgba[i][BCOMP] = lut[rgba[i][BCOMP] * 3 + 2]; rgba[i][BCOMP] = lut[rgba[i][BCOMP] * 3 + 2];
} }
} }
else { else
#endif
{
const GLfloat scale = (GLfloat) (table->Size - 1) / CHAN_MAXF; const GLfloat scale = (GLfloat) (table->Size - 1) / CHAN_MAXF;
const GLchan *lut = (const GLchan *) table->Table; const GLchan *lut = (const GLchan *) table->Table;
GLuint i; GLuint i;
@@ -512,7 +527,8 @@ _swrast_texture_table_lookup(const struct gl_color_table *table,
} }
} }
else { else {
if (CHAN_TYPE == GL_UNSIGNED_BYTE && table->Size == 256) { #if CHAN_TYPE == GL_UNSIGNED_BYTE
if (table->Size == 256) {
/* common case */ /* common case */
const GLchan *lut = (const GLchan *) table->Table; const GLchan *lut = (const GLchan *) table->Table;
GLuint i; GLuint i;
@@ -523,7 +539,9 @@ _swrast_texture_table_lookup(const struct gl_color_table *table,
rgba[i][ACOMP] = lut[rgba[i][ACOMP] * 4 + 3]; rgba[i][ACOMP] = lut[rgba[i][ACOMP] * 4 + 3];
} }
} }
else { else
#endif
{
const GLfloat scale = (GLfloat) (table->Size - 1) / CHAN_MAXF; const GLfloat scale = (GLfloat) (table->Size - 1) / CHAN_MAXF;
const GLfloat *lut = (const GLfloat *) table->Table; const GLfloat *lut = (const GLfloat *) table->Table;
GLuint i; GLuint i;

View File

@@ -1,4 +1,4 @@
/* $Id: s_tritemp.h,v 1.43 2003/01/20 00:24:22 brianp Exp $ */ /* $Id: s_tritemp.h,v 1.44 2003/03/04 19:17:34 brianp Exp $ */
/* /*
* Mesa 3-D graphics library * Mesa 3-D graphics library
@@ -737,10 +737,10 @@ static void NAME(GLcontext *ctx, const SWvertex *v0,
GLfixed fa = 0, fdaOuter = 0, fdaInner; GLfixed fa = 0, fdaOuter = 0, fdaInner;
#endif #endif
#ifdef INTERP_FLOAT_RGBA #ifdef INTERP_FLOAT_RGBA
GLfloat fr, fdrOuter, fdrInner; GLfloat fr = 0.0F, fdrOuter = 0.0F, fdrInner;
GLfloat fg, fdgOuter, fdgInner; GLfloat fg = 0.0F, fdgOuter = 0.0F, fdgInner;
GLfloat fb, fdbOuter, fdbInner; GLfloat fb = 0.0F, fdbOuter = 0.0F, fdbInner;
GLfloat fa, fdaOuter, fdaInner; GLfloat fa = 0.0F, fdaOuter = 0.0F, fdaInner;
#endif #endif
#ifdef INTERP_SPEC #ifdef INTERP_SPEC
GLfixed fsr=0, fdsrOuter=0, fdsrInner; GLfixed fsr=0, fdsrOuter=0, fdsrInner;