diff options
author | mdaenzer <mdaenzer> | 2002-06-18 22:40:26 +0000 |
---|---|---|
committer | mdaenzer <mdaenzer> | 2002-06-18 22:40:26 +0000 |
commit | 01a88323fed97dd461aad4fbfe75e9526c996b14 (patch) | |
tree | 02b0f645cb76bd6fe08277d12fca22b0d6aafd1e /xc/lib | |
parent | 73f179ad8cfc5d76f4a09208ccbef19180cad935 (diff) |
endianness fixes
Diffstat (limited to 'xc/lib')
-rw-r--r-- | xc/lib/GL/mesa/src/drv/radeon/Imakefile.inc | 28 | ||||
-rw-r--r-- | xc/lib/GL/mesa/src/drv/radeon/radeon_context.h | 6 | ||||
-rw-r--r-- | xc/lib/GL/mesa/src/drv/radeon/radeon_ioctl.c | 1 | ||||
-rw-r--r-- | xc/lib/GL/mesa/src/drv/radeon/radeon_maos_arrays.c | 18 | ||||
-rw-r--r-- | xc/lib/GL/mesa/src/drv/radeon/radeon_maos_vbtmp.h | 22 | ||||
-rw-r--r-- | xc/lib/GL/mesa/src/drv/radeon/radeon_maos_verts.c | 2 | ||||
-rw-r--r-- | xc/lib/GL/mesa/src/drv/radeon/radeon_state_init.c | 8 | ||||
-rw-r--r-- | xc/lib/GL/mesa/src/drv/radeon/radeon_swtcl.c | 32 | ||||
-rw-r--r-- | xc/lib/GL/mesa/src/drv/radeon/radeon_tcl.c | 10 | ||||
-rw-r--r-- | xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt.c | 42 | ||||
-rw-r--r-- | xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt_c.c | 113 | ||||
-rw-r--r-- | xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt_x86.c | 10 |
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 |