summaryrefslogtreecommitdiff
path: root/xc/lib
diff options
context:
space:
mode:
authormdaenzer <mdaenzer>2002-06-18 22:40:26 +0000
committermdaenzer <mdaenzer>2002-06-18 22:40:26 +0000
commit01a88323fed97dd461aad4fbfe75e9526c996b14 (patch)
tree02b0f645cb76bd6fe08277d12fca22b0d6aafd1e /xc/lib
parent73f179ad8cfc5d76f4a09208ccbef19180cad935 (diff)
endianness fixes
Diffstat (limited to 'xc/lib')
-rw-r--r--xc/lib/GL/mesa/src/drv/radeon/Imakefile.inc28
-rw-r--r--xc/lib/GL/mesa/src/drv/radeon/radeon_context.h6
-rw-r--r--xc/lib/GL/mesa/src/drv/radeon/radeon_ioctl.c1
-rw-r--r--xc/lib/GL/mesa/src/drv/radeon/radeon_maos_arrays.c18
-rw-r--r--xc/lib/GL/mesa/src/drv/radeon/radeon_maos_vbtmp.h22
-rw-r--r--xc/lib/GL/mesa/src/drv/radeon/radeon_maos_verts.c2
-rw-r--r--xc/lib/GL/mesa/src/drv/radeon/radeon_state_init.c8
-rw-r--r--xc/lib/GL/mesa/src/drv/radeon/radeon_swtcl.c32
-rw-r--r--xc/lib/GL/mesa/src/drv/radeon/radeon_tcl.c10
-rw-r--r--xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt.c42
-rw-r--r--xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt_c.c113
-rw-r--r--xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt_x86.c10
12 files changed, 166 insertions, 126 deletions
diff --git a/xc/lib/GL/mesa/src/drv/radeon/Imakefile.inc b/xc/lib/GL/mesa/src/drv/radeon/Imakefile.inc
index 559bb23c3..99d5cfd70 100644
--- a/xc/lib/GL/mesa/src/drv/radeon/Imakefile.inc
+++ b/xc/lib/GL/mesa/src/drv/radeon/Imakefile.inc
@@ -72,10 +72,13 @@ MESA_INCLUDES = -I$(MESASRCDIR)/src \
$(MESADRVRADEONBUILDDIR)radeon_texmem.o \
$(MESADRVRADEONBUILDDIR)radeon_texstate.o \
$(MESADRVRADEONBUILDDIR)radeon_vtxfmt.o \
- $(MESADRVRADEONBUILDDIR)radeon_vtxfmt_c.o \
- $(MESADRVRADEONBUILDDIR)radeon_vtxfmt_x86.o \
+ $(MESADRVRADEONBUILDDIR)radeon_vtxfmt_c.o
+
+#ifdef i386Architecture
+ RADEONOBJS += $(MESADRVRADEONBUILDDIR)radeon_vtxfmt_x86.o \
$(MESADRVRADEONBUILDDIR)radeon_vtxtmp_x86.o \
$(MESADRVRADEONBUILDDIR)radeon_vtxfmt_sse.o
+#endif
RADEONUOBJS = $(MESADRVRADEONBUILDDIR)unshared/radeon_context.o \
$(MESADRVRADEONBUILDDIR)unshared/radeon_compat.o \
@@ -93,10 +96,13 @@ MESA_INCLUDES = -I$(MESASRCDIR)/src \
$(MESADRVRADEONBUILDDIR)unshared/radeon_texmem.o \
$(MESADRVRADEONBUILDDIR)unshared/radeon_texstate.o \
$(MESADRVRADEONBUILDDIR)unshared/radeon_vtxfmt.o \
- $(MESADRVRADEONBUILDDIR)unshared/radeon_vtxfmt_c.o \
- $(MESADRVRADEONBUILDDIR)unshared/radeon_vtxfmt_x86.o \
+ $(MESADRVRADEONBUILDDIR)unshared/radeon_vtxfmt_c.o
+
+#ifdef i386Architecture
+ RADEONUOBJS += $(MESADRVRADEONBUILDDIR)unshared/radeon_vtxfmt_x86.o \
$(MESADRVRADEONBUILDDIR)unshared/radeon_vtxtmp_x86.o \
$(MESADRVRADEONBUILDDIR)unshared/radeon_vtxfmt_sse.o
+#endif
RADEONDOBJS = $(MESADRVRADEONBUILDDIR)debugger/radeon_context.o \
$(MESADRVRADEONBUILDDIR)debugger/radeon_compat.o \
@@ -114,10 +120,13 @@ MESA_INCLUDES = -I$(MESASRCDIR)/src \
$(MESADRVRADEONBUILDDIR)debugger/radeon_texmem.o \
$(MESADRVRADEONBUILDDIR)debugger/radeon_texstate.o \
$(MESADRVRADEONBUILDDIR)debugger/radeon_vtxfmt.o \
- $(MESADRVRADEONBUILDDIR)debugger/radeon_vtxfmt_c.o \
- $(MESADRVRADEONBUILDDIR)debugger/radeon_vtxfmt_x86.o \
+ $(MESADRVRADEONBUILDDIR)debugger/radeon_vtxfmt_c.o
+
+#ifdef i386Architecture
+ RADEONDOBJS += $(MESADRVRADEONBUILDDIR)debugger/radeon_vtxfmt_x86.o \
$(MESADRVRADEONBUILDDIR)debugger/radeon_vtxtmp_x86.o \
$(MESADRVRADEONBUILDDIR)debugger/radeon_vtxfmt_sse.o
+#endif
RADEONPOBJS = $(MESADRVRADEONBUILDDIR)profiled/radeon_context.o \
$(MESADRVRADEONBUILDDIR)profiled/radeon_compat.o \
@@ -135,10 +144,13 @@ MESA_INCLUDES = -I$(MESASRCDIR)/src \
$(MESADRVRADEONBUILDDIR)profiled/radeon_texmem.o \
$(MESADRVRADEONBUILDDIR)profiled/radeon_texstate.o \
$(MESADRVRADEONBUILDDIR)profiled/radeon_vtxfmt.o \
- $(MESADRVRADEONBUILDDIR)profiled/radeon_vtxfmt_c.o \
- $(MESADRVRADEONBUILDDIR)profiled/radeon_vtxfmt_x86.o \
+ $(MESADRVRADEONBUILDDIR)profiled/radeon_vtxfmt_c.o
+
+#ifdef i386Architecture
+ RADEONPOBJS += $(MESADRVRADEONBUILDDIR)profiled/radeon_vtxfmt_x86.o \
$(MESADRVRADEONBUILDDIR)profiled/radeon_vtxtmp_x86.o \
$(MESADRVRADEONBUILDDIR)profiled/radeon_vtxfmt_sse.o
+#endif
#ifdef NeedToLinkMesaSrc
LinkSourceFile(radeon_context.c, $(MESADRVSRCDIR)/radeon)
diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_context.h b/xc/lib/GL/mesa/src/drv/radeon/radeon_context.h
index 541c90e1f..22e0fb97b 100644
--- a/xc/lib/GL/mesa/src/drv/radeon/radeon_context.h
+++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_context.h
@@ -642,12 +642,12 @@ struct radeon_vb {
GLint *dmaptr;
void (*notify)( void );
GLint vertex_size;
- union { float f; int i; GLubyte ub4[4]; } vertex[15];
+ union { float f; int i; radeon_color_t color; } vertex[15];
GLfloat *normalptr;
GLfloat *floatcolorptr;
- GLubyte *ubytecolorptr;
- GLubyte *ubytespecptr;
+ radeon_color_t *colorptr;
+ radeon_color_t *specptr;
GLfloat *texcoordptr[2];
GLcontext *context; /* current context : Single thread only! */
diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_ioctl.c b/xc/lib/GL/mesa/src/drv/radeon/radeon_ioctl.c
index 791649f42..d51e497ad 100644
--- a/xc/lib/GL/mesa/src/drv/radeon/radeon_ioctl.c
+++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_ioctl.c
@@ -291,6 +291,7 @@ void radeonEmitVertexAOS( radeonContextPtr rmesa,
cmd = (drmRadeonCmdHeader *)radeonAllocCmdBuf( rmesa, 5 * sizeof(int),
__FUNCTION__ );
+ cmd[0].i = 0;
cmd[0].header.cmd_type = RADEON_CMD_PACKET3;
cmd[1].i = RADEON_CP_PACKET3_3D_LOAD_VBPNTR | (2 << 16);
cmd[2].i = 1;
diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_maos_arrays.c b/xc/lib/GL/mesa/src/drv/radeon/radeon_maos_arrays.c
index ffa2d9344..7b2248115 100644
--- a/xc/lib/GL/mesa/src/drv/radeon/radeon_maos_arrays.c
+++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_maos_arrays.c
@@ -67,18 +67,18 @@ static void emit_ubyte_rgba3( GLcontext *ctx,
int count )
{
int i;
- char *out = (char *)(rvb->start + rvb->address);
+ radeon_color_t *out = (radeon_color_t *)(rvb->start + rvb->address);
if (RADEON_DEBUG & DEBUG_VERTS)
fprintf(stderr, "%s count %d stride %d out %p\n",
__FUNCTION__, count, stride, out);
for (i = 0; i < count; i++) {
- out[0] = *data;
- out[1] = *(data+1);
- out[2] = *(data+2);
- out[3] = 0xFF;
- out += 4;
+ out->red = *data;
+ out->green = *(data+1);
+ out->blue = *(data+2);
+ out->alpha = 0xFF;
+ out++;
data += stride;
}
}
@@ -99,7 +99,7 @@ do { \
do { \
int j; \
for ( j = 0 ; j < nr ; j++ ) \
- dst[j] = ((int *)v)[j]; \
+ dst[j] = ((int *)src)[j]; \
dst += nr; \
} while (0)
#endif
@@ -123,7 +123,7 @@ static void emit_ubyte_rgba4( GLcontext *ctx,
COPY_DWORDS( out, data, count );
else
for (i = 0; i < count; i++) {
- *out++ = *(int *)data;
+ *out++ = LE32_TO_CPU(*(int *)data);
data += stride;
}
}
@@ -210,7 +210,7 @@ static void emit_vec12( GLcontext *ctx,
int *out = (int *)(rvb->address + rvb->start);
if (RADEON_DEBUG & DEBUG_VERTS)
- fprintf(stderr, "%s count %d stride %d out %x data %x\n",
+ fprintf(stderr, "%s count %d stride %d out %p data %p\n",
__FUNCTION__, count, stride, out, data);
if (stride == 12)
diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_maos_vbtmp.h b/xc/lib/GL/mesa/src/drv/radeon/radeon_maos_vbtmp.h
index 55b749802..137819e37 100644
--- a/xc/lib/GL/mesa/src/drv/radeon/radeon_maos_vbtmp.h
+++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_maos_vbtmp.h
@@ -1,4 +1,4 @@
-/* $Id: radeon_maos_vbtmp.h,v 1.1 2002/06/17 08:13:20 keithw Exp $ */
+/* $Id: radeon_maos_vbtmp.h,v 1.2 2002/06/18 22:40:26 mdaenzer Exp $ */
/*
* Mesa 3-D graphics library
@@ -221,20 +221,20 @@ static void TAG(emit)( GLcontext *ctx,
norm = (GLuint (*)[3])((GLubyte *)norm + norm_stride);
}
if (DO_RGBA) {
- v[0].ui = *(GLuint *)&col[0];
+ v[0].ui = LE32_TO_CPU(*(GLuint *)&col[0]);
STRIDE_4UB(col, col_stride);
if (TCL_DEBUG) fprintf(stderr, "%x ", v[0].ui);
v++;
}
if (DO_SPEC || DO_FOG) {
if (DO_SPEC) {
- v[0].ub[0] = spec[0][0];
- v[0].ub[1] = spec[0][1];
- v[0].ub[2] = spec[0][2];
+ v[0].specular.red = spec[0][0];
+ v[0].specular.green = spec[0][1];
+ v[0].specular.blue = spec[0][2];
STRIDE_4UB(spec, spec_stride);
}
if (DO_FOG) {
- v[0].ub[3] = fog[0] * 255.0;
+ v[0].specular.alpha = fog[0] * 255.0;
STRIDE_F(fog, fog_stride);
}
if (TCL_DEBUG) fprintf(stderr, "%x ", v[0].ui);
@@ -298,17 +298,17 @@ static void TAG(emit)( GLcontext *ctx,
v += 3;
}
if (DO_RGBA) {
- v[0].ui = *(GLuint *)&col[i];
+ v[0].ui = LE32_TO_CPU(*(GLuint *)&col[i]);
v++;
}
if (DO_SPEC || DO_FOG) {
if (DO_SPEC) {
- v[0].ub[0] = spec[i][0];
- v[0].ub[1] = spec[i][1];
- v[0].ub[2] = spec[i][2];
+ v[0].specular.red = spec[i][0];
+ v[0].specular.green = spec[i][1];
+ v[0].specular.blue = spec[i][2];
}
if (DO_FOG) {
- v[0].ub[3] = fog[i] * 255.0;
+ v[0].specular.alpha = fog[i] * 255.0;
}
v++;
}
diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_maos_verts.c b/xc/lib/GL/mesa/src/drv/radeon/radeon_maos_verts.c
index 0e73e9aad..6f421702c 100644
--- a/xc/lib/GL/mesa/src/drv/radeon/radeon_maos_verts.c
+++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_maos_verts.c
@@ -54,7 +54,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
#define RADEON_TCL_MAX_SETUP 13
-union emit_union { float f; GLuint ui; GLubyte ub[4]; };
+union emit_union { float f; GLuint ui; radeon_color_t specular; };
static struct {
void (*emit)( GLcontext *, GLuint, GLuint, void * );
diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_state_init.c b/xc/lib/GL/mesa/src/drv/radeon/radeon_state_init.c
index d7693cbde..fa2f5df90 100644
--- a/xc/lib/GL/mesa/src/drv/radeon/radeon_state_init.c
+++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_state_init.c
@@ -362,8 +362,12 @@ void radeonInitState( radeonContextPtr rmesa )
RADEON_ROUND_MODE_TRUNC |
RADEON_ROUND_PREC_8TH_PIX);
- rmesa->hw.set.cmd[SET_SE_CNTL_STATUS] = (RADEON_VC_NO_SWAP
- /* | RADEON_TCL_BYPASS */);
+ rmesa->hw.set.cmd[SET_SE_CNTL_STATUS] = (/* RADEON_TCL_BYPASS | */
+#ifdef MESA_BIG_ENDIAN
+ RADEON_VC_32BIT_SWAP);
+#else
+ RADEON_VC_NO_SWAP);
+#endif
rmesa->hw.set.cmd[SET_SE_COORDFMT] = (
RADEON_VTX_W0_IS_NOT_1_OVER_W0 |
diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_swtcl.c b/xc/lib/GL/mesa/src/drv/radeon/radeon_swtcl.c
index 4ebaf0bbd..2ac4d222a 100644
--- a/xc/lib/GL/mesa/src/drv/radeon/radeon_swtcl.c
+++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_swtcl.c
@@ -628,10 +628,16 @@ do { \
#define ALLOC_ELTS_NEW_PRIMITIVE(nr) ALLOC_ELTS( nr )
+#ifdef MESA_BIG_ENDIAN
+/* We could do without (most of) this ugliness if dest was always 32 bit word aligned... */
+#define EMIT_ELT(offset, x) do { \
+ int off = offset + ( ( (GLuint)dest & 0x2 ) >> 1 ); \
+ GLushort *des = (GLushort *)( (GLuint)dest & ~0x2 ); \
+ (des)[ off + 1 - 2 * ( off & 1 ) ] = (GLushort)(x); } while (0)
+#else
#define EMIT_ELT(offset, x) (dest)[offset] = (GLushort) (x)
-#if defined(__i386__)
-#define EMIT_TWO_ELTS(offset, x, y) *(GLuint *)(dest+offset) = ((y)<<16)|(x);
#endif
+#define EMIT_TWO_ELTS(offset, x, y) *(GLuint *)(dest+offset) = ((y)<<16)|(x);
#define INCR_ELTS( nr ) dest += nr
#define RELEASE_ELT_VERTS() \
radeonReleaseDmaRegion( rmesa, &rmesa->swtcl.indexed_verts, __FUNCTION__ )
@@ -847,15 +853,21 @@ static struct {
#define AREA_IS_CCW( a ) (a < 0)
#define GET_VERTEX(e) (rmesa->swtcl.verts + (e<<rmesa->swtcl.vertex_stride_shift))
-#define VERT_SET_RGBA( v, c ) v->ui[coloroffset] = *(GLuint *)c
+#define VERT_SET_RGBA( v, c ) v->ui[coloroffset] = LE32_TO_CPU(*(GLuint *)c)
#define VERT_COPY_RGBA( v0, v1 ) v0->ui[coloroffset] = v1->ui[coloroffset]
-#define VERT_SAVE_RGBA( idx ) color[idx] = v[idx]->ui[coloroffset]
-#define VERT_RESTORE_RGBA( idx ) v[idx]->ui[coloroffset] = color[idx]
-
-#define VERT_SET_SPEC( v, c ) if (havespec) COPY_3V(v->ub4[5], c )
-#define VERT_COPY_SPEC( v0, v1 ) if (havespec) COPY_3V(v0->ub4[5], v1->ub4[5])
-#define VERT_SAVE_SPEC( idx ) if (havespec) spec[idx] = v[idx]->ui[5]
-#define VERT_RESTORE_SPEC( idx ) if (havespec) v[idx]->ui[5] = spec[idx]
+#define VERT_SAVE_RGBA( idx ) color[idx] = CPU_TO_LE32(v[idx]->ui[coloroffset])
+#define VERT_RESTORE_RGBA( idx ) v[idx]->ui[coloroffset] = LE32_TO_CPU(color[idx])
+
+#define VERT_SET_SPEC( v0, c ) if (havespec) { \
+ v0->v.specular.red = (c)[0]; \
+ v0->v.specular.green = (c)[1]; \
+ v0->v.specular.blue = (c)[2]; }
+#define VERT_COPY_SPEC( v0, v1 ) if (havespec) { \
+ v0->v.specular.red = v1->v.specular.red; \
+ v0->v.specular.green = v1->v.specular.green; \
+ v0->v.specular.blue = v1->v.specular.blue; }
+#define VERT_SAVE_SPEC( idx ) if (havespec) spec[idx] = CPU_TO_LE32(v[idx]->ui[5])
+#define VERT_RESTORE_SPEC( idx ) if (havespec) v[idx]->ui[5] = LE32_TO_CPU(spec[idx])
#define LOCAL_VARS(n) \
radeonContextPtr rmesa = RADEON_CONTEXT(ctx); \
diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_tcl.c b/xc/lib/GL/mesa/src/drv/radeon/radeon_tcl.c
index 631355fa1..e55a55a0d 100644
--- a/xc/lib/GL/mesa/src/drv/radeon/radeon_tcl.c
+++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_tcl.c
@@ -219,10 +219,16 @@ static void EMIT_PRIM( GLcontext *ctx,
RADEON_CP_VC_CNTL_TCL_ENABLE)))
#endif
+#ifdef MESA_BIG_ENDIAN
+/* We could do without (most of) this ugliness if dest was always 32 bit word aligned... */
+#define EMIT_ELT(offset, x) do { \
+ int off = offset + ( ( (GLuint)dest & 0x2 ) >> 1 ); \
+ GLushort *des = (GLushort *)( (GLuint)dest & ~0x2 ); \
+ (des)[ off + 1 - 2 * ( off & 1 ) ] = (GLushort)(x); } while (0)
+#else
#define EMIT_ELT(offset, x) (dest)[offset] = (GLushort) (x)
-#if defined(__i386__)
-#define EMIT_TWO_ELTS(offset, x, y) *(GLuint *)(dest+offset) = ((y)<<16)|(x);
#endif
+#define EMIT_TWO_ELTS(offset, x, y) *(GLuint *)(dest+offset) = ((y)<<16)|(x);
#define INCR_ELTS( nr ) dest += nr
#define RELEASE_ELT_VERTS() \
radeonReleaseArrays( ctx, ~0 )
diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt.c b/xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt.c
index 6d84f5c9c..ea0855374 100644
--- a/xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt.c
+++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt.c
@@ -113,10 +113,10 @@ void radeon_copy_to_current( GLcontext *ctx )
}
if (rmesa->vb.vertex_format & RADEON_CP_VC_FRMT_PKCOLOR) {
- ctx->Current.Color[0] = UBYTE_TO_FLOAT( vb.ubytecolorptr[0] );
- ctx->Current.Color[1] = UBYTE_TO_FLOAT( vb.ubytecolorptr[1] );
- ctx->Current.Color[2] = UBYTE_TO_FLOAT( vb.ubytecolorptr[2] );
- ctx->Current.Color[3] = UBYTE_TO_FLOAT( vb.ubytecolorptr[3] );
+ ctx->Current.Color[0] = UBYTE_TO_FLOAT( vb.colorptr->red );
+ ctx->Current.Color[1] = UBYTE_TO_FLOAT( vb.colorptr->green );
+ ctx->Current.Color[2] = UBYTE_TO_FLOAT( vb.colorptr->blue );
+ ctx->Current.Color[3] = UBYTE_TO_FLOAT( vb.colorptr->alpha );
}
if (rmesa->vb.vertex_format & RADEON_CP_VC_FRMT_FPCOLOR) {
@@ -129,9 +129,9 @@ void radeon_copy_to_current( GLcontext *ctx )
ctx->Current.Color[3] = vb.floatcolorptr[3];
if (rmesa->vb.vertex_format & RADEON_CP_VC_FRMT_PKSPEC) {
- ctx->Current.SecondaryColor[0] = UBYTE_TO_FLOAT( vb.ubytespecptr[0] );
- ctx->Current.SecondaryColor[1] = UBYTE_TO_FLOAT( vb.ubytespecptr[1] );
- ctx->Current.SecondaryColor[2] = UBYTE_TO_FLOAT( vb.ubytespecptr[2] );
+ ctx->Current.SecondaryColor[0] = UBYTE_TO_FLOAT( vb.specptr->red );
+ ctx->Current.SecondaryColor[1] = UBYTE_TO_FLOAT( vb.specptr->green );
+ ctx->Current.SecondaryColor[2] = UBYTE_TO_FLOAT( vb.specptr->blue );
}
if (rmesa->vb.vertex_format & RADEON_CP_VC_FRMT_ST0) {
@@ -401,7 +401,8 @@ static void VFMT_FALLBACK( const char *caller )
}
if (ind & RADEON_CP_VC_FRMT_PKCOLOR) {
- glColor4ubv( (GLubyte *)&tmp[i][offset] );
+ radeon_color_t *col = (radeon_color_t *)&tmp[i][offset];
+ glColor4ub( col->red, col->green, col->blue, col->alpha );
offset++;
}
else if (ind & RADEON_CP_VC_FRMT_FPALPHA) {
@@ -414,7 +415,8 @@ static void VFMT_FALLBACK( const char *caller )
}
if (ind & RADEON_CP_VC_FRMT_PKSPEC) {
- _glapi_Dispatch->SecondaryColor3ubvEXT( (GLubyte *)&tmp[i][offset] );
+ radeon_color_t *spec = (radeon_color_t *)&tmp[i][offset];
+ _glapi_Dispatch->SecondaryColor3ubEXT( spec->red, spec->green, spec->blue );
offset++;
}
@@ -435,8 +437,8 @@ static void VFMT_FALLBACK( const char *caller )
if (ind & RADEON_CP_VC_FRMT_N0)
glNormal3fv( vb.normalptr );
- if (ind & RADEON_CP_VC_FRMT_PKCOLOR)
- glColor4ubv( vb.ubytecolorptr );
+ if (ind & RADEON_CP_VC_FRMT_PKCOLOR)
+ glColor4ub( vb.colorptr->red, vb.colorptr->green, vb.colorptr->blue, vb.colorptr->alpha );
else if (ind & RADEON_CP_VC_FRMT_FPALPHA)
glColor4fv( vb.floatcolorptr );
else if (ind & RADEON_CP_VC_FRMT_FPCOLOR) {
@@ -450,7 +452,7 @@ static void VFMT_FALLBACK( const char *caller )
}
if (ind & RADEON_CP_VC_FRMT_PKSPEC)
- _glapi_Dispatch->SecondaryColor3ubvEXT( vb.ubytespecptr );
+ _glapi_Dispatch->SecondaryColor3ubEXT( vb.specptr->red, vb.specptr->green, vb.specptr->blue );
if (ind & RADEON_CP_VC_FRMT_ST0)
glTexCoord2fv( vb.texcoordptr[0] );
@@ -608,7 +610,7 @@ static GLboolean check_vtx_fmt( GLcontext *ctx )
rmesa->vb.prim = &ctx->Driver.CurrentExecPrimitive;
vb.normalptr = ctx->Current.Normal;
- vb.ubytecolorptr = 0;
+ vb.colorptr = NULL;
vb.floatcolorptr = ctx->Current.Color;
vb.texcoordptr[0] = ctx->Current.Texcoord[0];
vb.texcoordptr[1] = ctx->Current.Texcoord[1];
@@ -625,9 +627,12 @@ static GLboolean check_vtx_fmt( GLcontext *ctx )
}
if (ind & RADEON_CP_VC_FRMT_PKCOLOR) {
- vb.ubytecolorptr = &vb.vertex[vb.vertex_size].ub4[0];
+ vb.colorptr = &vb.vertex[vb.vertex_size].color;
vb.vertex_size += 1;
- UNCLAMPED_FLOAT_TO_RGBA_CHAN( vb.ubytecolorptr, ctx->Current.Color );
+ UNCLAMPED_FLOAT_TO_CHAN( vb.colorptr->red, ctx->Current.Color[0] );
+ UNCLAMPED_FLOAT_TO_CHAN( vb.colorptr->green, ctx->Current.Color[1] );
+ UNCLAMPED_FLOAT_TO_CHAN( vb.colorptr->blue, ctx->Current.Color[2] );
+ UNCLAMPED_FLOAT_TO_CHAN( vb.colorptr->alpha, ctx->Current.Color[3] );
}
if (ind & RADEON_CP_VC_FRMT_FPCOLOR) {
@@ -645,10 +650,11 @@ static GLboolean check_vtx_fmt( GLcontext *ctx )
}
if (ind & RADEON_CP_VC_FRMT_PKSPEC) {
- vb.ubytespecptr = &vb.vertex[vb.vertex_size].ub4[0];
+ vb.specptr = &vb.vertex[vb.vertex_size].color;
vb.vertex_size += 1;
- UNCLAMPED_FLOAT_TO_RGB_CHAN( vb.ubytespecptr,
- ctx->Current.SecondaryColor );
+ UNCLAMPED_FLOAT_TO_CHAN( vb.specptr->red, ctx->Current.SecondaryColor[0] );
+ UNCLAMPED_FLOAT_TO_CHAN( vb.specptr->green, ctx->Current.SecondaryColor[1] );
+ UNCLAMPED_FLOAT_TO_CHAN( vb.specptr->blue, ctx->Current.SecondaryColor[2] );
}
diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt_c.c b/xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt_c.c
index 4d4ed6ca1..60032d955 100644
--- a/xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt_c.c
+++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt_c.c
@@ -112,72 +112,71 @@ static void radeon_Vertex2fv( const GLfloat *v )
*/
static void radeon_Color3ub_ub( GLubyte r, GLubyte g, GLubyte b )
{
- GLubyte *dest = vb.ubytecolorptr;
- dest[0] = r;
- dest[1] = g;
- dest[2] = b;
- dest[3] = 0xff;
+ radeon_color_t *dest = vb.colorptr;
+ dest->red = r;
+ dest->green = g;
+ dest->blue = b;
+ dest->alpha = 0xff;
}
static void radeon_Color3ubv_ub( const GLubyte *v )
{
- GLubyte *dest = vb.ubytecolorptr;
- dest[0] = v[0];
- dest[1] = v[1];
- dest[2] = v[2];
- dest[3] = 0xff;
+ radeon_color_t *dest = vb.colorptr;
+ dest->red = v[0];
+ dest->green = v[1];
+ dest->blue = v[2];
+ dest->alpha = 0xff;
}
static void radeon_Color4ub_ub( GLubyte r, GLubyte g, GLubyte b, GLubyte a )
{
- GLubyte *dest = vb.ubytecolorptr;
- dest[0] = r;
- dest[1] = g;
- dest[2] = b;
- dest[3] = a;
+ radeon_color_t *dest = vb.colorptr;
+ dest->red = r;
+ dest->green = g;
+ dest->blue = b;
+ dest->alpha = a;
}
static void radeon_Color4ubv_ub( const GLubyte *v )
{
- GLubyte *dest = vb.ubytecolorptr;
- *(int *)dest = *(int *)v;
+ *(GLuint *)vb.colorptr = LE32_TO_CPU(*(GLuint *)v);
}
static void radeon_Color3f_ub( GLfloat r, GLfloat g, GLfloat b )
{
- GLubyte *dest = vb.ubytecolorptr;
- UNCLAMPED_FLOAT_TO_UBYTE( dest[0], r );
- UNCLAMPED_FLOAT_TO_UBYTE( dest[1], g );
- UNCLAMPED_FLOAT_TO_UBYTE( dest[2], b );
- dest[3] = 255;
+ radeon_color_t *dest = vb.colorptr;
+ UNCLAMPED_FLOAT_TO_UBYTE( dest->red, r );
+ UNCLAMPED_FLOAT_TO_UBYTE( dest->green, g );
+ UNCLAMPED_FLOAT_TO_UBYTE( dest->blue, b );
+ dest->alpha = 255;
}
static void radeon_Color3fv_ub( const GLfloat *v )
{
- GLubyte *dest = vb.ubytecolorptr;
- UNCLAMPED_FLOAT_TO_UBYTE( dest[0], v[0] );
- UNCLAMPED_FLOAT_TO_UBYTE( dest[1], v[1] );
- UNCLAMPED_FLOAT_TO_UBYTE( dest[2], v[2] );
- dest[3] = 255;
+ radeon_color_t *dest = vb.colorptr;
+ UNCLAMPED_FLOAT_TO_UBYTE( dest->red, v[0] );
+ UNCLAMPED_FLOAT_TO_UBYTE( dest->green, v[1] );
+ UNCLAMPED_FLOAT_TO_UBYTE( dest->blue, v[2] );
+ dest->alpha = 255;
}
static void radeon_Color4f_ub( GLfloat r, GLfloat g, GLfloat b, GLfloat a )
{
- GLubyte *dest = vb.ubytecolorptr;
- UNCLAMPED_FLOAT_TO_UBYTE( dest[0], r );
- UNCLAMPED_FLOAT_TO_UBYTE( dest[1], g );
- UNCLAMPED_FLOAT_TO_UBYTE( dest[2], b );
- UNCLAMPED_FLOAT_TO_UBYTE( dest[3], a );
+ radeon_color_t *dest = vb.colorptr;
+ UNCLAMPED_FLOAT_TO_UBYTE( dest->red, r );
+ UNCLAMPED_FLOAT_TO_UBYTE( dest->green, g );
+ UNCLAMPED_FLOAT_TO_UBYTE( dest->blue, b );
+ UNCLAMPED_FLOAT_TO_UBYTE( dest->alpha, a );
}
static void radeon_Color4fv_ub( const GLfloat *v )
{
- GLubyte *dest = vb.ubytecolorptr;
- UNCLAMPED_FLOAT_TO_UBYTE( dest[0], v[0] );
- UNCLAMPED_FLOAT_TO_UBYTE( dest[1], v[1] );
- UNCLAMPED_FLOAT_TO_UBYTE( dest[2], v[2] );
- UNCLAMPED_FLOAT_TO_UBYTE( dest[3], v[3] );
+ radeon_color_t *dest = vb.colorptr;
+ UNCLAMPED_FLOAT_TO_UBYTE( dest->red, v[0] );
+ UNCLAMPED_FLOAT_TO_UBYTE( dest->green, v[1] );
+ UNCLAMPED_FLOAT_TO_UBYTE( dest->blue, v[2] );
+ UNCLAMPED_FLOAT_TO_UBYTE( dest->alpha, v[3] );
}
@@ -333,38 +332,38 @@ static void radeon_Color4fv_3f( const GLfloat *v )
*/
static void radeon_SecondaryColor3ubEXT( GLubyte r, GLubyte g, GLubyte b )
{
- GLubyte *dest = vb.ubytespecptr;
- dest[0] = r;
- dest[1] = g;
- dest[2] = b;
- dest[3] = 0xff;
+ radeon_color_t *dest = vb.specptr;
+ dest->red = r;
+ dest->green = g;
+ dest->blue = b;
+ dest->alpha = 0xff;
}
static void radeon_SecondaryColor3ubvEXT( const GLubyte *v )
{
- GLubyte *dest = vb.ubytespecptr;
- dest[0] = v[0];
- dest[1] = v[1];
- dest[2] = v[2];
- dest[3] = 0xff;
+ radeon_color_t *dest = vb.specptr;
+ dest->red = v[0];
+ dest->green = v[1];
+ dest->blue = v[2];
+ dest->alpha = 0xff;
}
static void radeon_SecondaryColor3fEXT( GLfloat r, GLfloat g, GLfloat b )
{
- GLubyte *dest = vb.ubytespecptr;
- UNCLAMPED_FLOAT_TO_UBYTE( dest[0], r );
- UNCLAMPED_FLOAT_TO_UBYTE( dest[1], g );
- UNCLAMPED_FLOAT_TO_UBYTE( dest[2], b );
- dest[3] = 255;
+ radeon_color_t *dest = vb.specptr;
+ UNCLAMPED_FLOAT_TO_UBYTE( dest->red, r );
+ UNCLAMPED_FLOAT_TO_UBYTE( dest->green, g );
+ UNCLAMPED_FLOAT_TO_UBYTE( dest->blue, b );
+ dest->alpha = 255;
}
static void radeon_SecondaryColor3fvEXT( const GLfloat *v )
{
- GLubyte *dest = vb.ubytespecptr;
- UNCLAMPED_FLOAT_TO_UBYTE( dest[0], v[0] );
- UNCLAMPED_FLOAT_TO_UBYTE( dest[1], v[1] );
- UNCLAMPED_FLOAT_TO_UBYTE( dest[2], v[2] );
- dest[3] = 255;
+ radeon_color_t *dest = vb.specptr;
+ UNCLAMPED_FLOAT_TO_UBYTE( dest->red, v[0] );
+ UNCLAMPED_FLOAT_TO_UBYTE( dest->green, v[1] );
+ UNCLAMPED_FLOAT_TO_UBYTE( dest->blue, v[2] );
+ dest->alpha = 255;
}
diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt_x86.c b/xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt_x86.c
index 6963e94c4..42685944a 100644
--- a/xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt_x86.c
+++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt_x86.c
@@ -223,7 +223,7 @@ struct dynfn *radeon_makeX86Color4ubv( GLcontext *ctx, int key )
if (key & RADEON_CP_VC_FRMT_PKCOLOR) {
DFN ( _x86_Color4ubv_ub, rmesa->vb.dfn_cache.Color4ubv);
- FIXUP(dfn->code, 5, 0x12345678, (int)vb.ubytecolorptr);
+ FIXUP(dfn->code, 5, 0x12345678, (int)vb.colorptr);
return dfn;
}
else {
@@ -248,10 +248,10 @@ struct dynfn *radeon_makeX86Color4ub( GLcontext *ctx, int key )
radeonContextPtr rmesa = RADEON_CONTEXT(ctx);
DFN ( _x86_Color4ub_ub, rmesa->vb.dfn_cache.Color4ub );
- FIXUP(dfn->code, 18, 0x0, (int)vb.ubytecolorptr);
- FIXUP(dfn->code, 24, 0x0, (int)vb.ubytecolorptr+1);
- FIXUP(dfn->code, 30, 0x0, (int)vb.ubytecolorptr+2);
- FIXUP(dfn->code, 36, 0x0, (int)vb.ubytecolorptr+3);
+ FIXUP(dfn->code, 18, 0x0, (int)vb.colorptr);
+ FIXUP(dfn->code, 24, 0x0, (int)vb.colorptr+1);
+ FIXUP(dfn->code, 30, 0x0, (int)vb.colorptr+2);
+ FIXUP(dfn->code, 36, 0x0, (int)vb.colorptr+3);
return dfn;
}
else