On Tue, Oct 12, 2004 at 05:29:50PM +0200, Martin Dickopp wrote: > Branden Robinson wrote: > > $ patch -p0 --dry-run <r200.diff > > [...] > > 1 out of 27 hunks FAILED -- saving rejects to file > > xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt.c.rej > > [...] > > It doesn't apply cleanly. > > I'll try again and submit a reworked patch shortly.
The reworked patch is included in this mail. It is supposed to apply cleanly after debian/patches/000_post430.diff (and possibly other patches in debian/patches -- they don't affect the same files as the included patch) are already applied. I have tested it with version 4.3.0.dfsg.1-8. I'm unsure if I should set the patch tag again, therefore I'm leaving it off. Cheers, Martin
diff -ur xc.orig/lib/GL/mesa/src/drv/r200/r200_context.h xc/lib/GL/mesa/src/drv/r200/r200_context.h --- xc.orig/lib/GL/mesa/src/drv/r200/r200_context.h 2002-12-16 17:18:54.000000000 +0100 +++ xc/lib/GL/mesa/src/drv/r200/r200_context.h 2004-10-14 15:18:52.750256199 +0200 @@ -683,8 +683,6 @@ struct dynfn MultiTexCoord1fvARB; }; -struct _vb; - struct dfn_generators { struct dynfn *(*Vertex2f)( GLcontext *, const int * ); struct dynfn *(*Vertex2fv)( GLcontext *, const int * ); @@ -715,9 +713,14 @@ }; -struct r200_vb { - /* Keep these first: referenced from codegen templates: - */ + +struct r200_prim { + GLuint start; + GLuint end; + GLuint prim; +}; + +struct r200_vbinfo { GLint counter, initial_counter; GLint *dmaptr; void (*notify)( void ); @@ -742,23 +745,13 @@ r200_color_t *specptr; GLfloat *texcoordptr[2]; - GLcontext *context; /* current context : Single thread only! */ -}; -struct r200_prim { - GLuint start; - GLuint end; - GLuint prim; -}; - -struct r200_vbinfo { GLenum *prim; /* &ctx->Driver.CurrentExecPrimitive */ GLuint primflags; GLboolean enabled; /* R200_NO_VTXFMT//R200_NO_TCL env vars */ GLboolean installed; GLboolean fell_back; GLboolean recheck; - GLint initial_counter; GLint nrverts; GLuint vtxfmt_0, vtxfmt_1; diff -ur xc.orig/lib/GL/mesa/src/drv/r200/r200_vtxfmt.c xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt.c --- xc.orig/lib/GL/mesa/src/drv/r200/r200_vtxfmt.c 2004-10-14 15:19:26.097689194 +0200 +++ xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt.c 2004-10-14 15:18:52.752255866 +0200 @@ -58,8 +58,6 @@ #include "tnl/t_context.h" #include "tnl/t_array_api.h" -struct r200_vb vb; - static void r200VtxFmtFlushVertices( GLcontext *, GLuint ); static void count_func( const char *name, struct dynfn *l ) @@ -109,33 +107,32 @@ fprintf(stderr, "%s\n", __FUNCTION__); assert(ctx->Driver.NeedFlush & FLUSH_UPDATE_CURRENT); - assert(vb.context == ctx); if (rmesa->vb.vtxfmt_0 & R200_VTX_N0) { - ctx->Current.Normal[0] = vb.normalptr[0]; - ctx->Current.Normal[1] = vb.normalptr[1]; - ctx->Current.Normal[2] = vb.normalptr[2]; + ctx->Current.Normal[0] = rmesa->vb.normalptr[0]; + ctx->Current.Normal[1] = rmesa->vb.normalptr[1]; + ctx->Current.Normal[2] = rmesa->vb.normalptr[2]; } switch( VTX_COLOR(rmesa->vb.vtxfmt_0, 0) ) { case R200_VTX_PK_RGBA: - 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 ); + ctx->Current.Color[0] = UBYTE_TO_FLOAT( rmesa->vb.colorptr->red ); + ctx->Current.Color[1] = UBYTE_TO_FLOAT( rmesa->vb.colorptr->green ); + ctx->Current.Color[2] = UBYTE_TO_FLOAT( rmesa->vb.colorptr->blue ); + ctx->Current.Color[3] = UBYTE_TO_FLOAT( rmesa->vb.colorptr->alpha ); break; case R200_VTX_FP_RGB: - ctx->Current.Color[0] = vb.floatcolorptr[0]; - ctx->Current.Color[1] = vb.floatcolorptr[1]; - ctx->Current.Color[2] = vb.floatcolorptr[2]; + ctx->Current.Color[0] = rmesa->vb.floatcolorptr[0]; + ctx->Current.Color[1] = rmesa->vb.floatcolorptr[1]; + ctx->Current.Color[2] = rmesa->vb.floatcolorptr[2]; break; case R200_VTX_FP_RGBA: - ctx->Current.Color[0] = vb.floatcolorptr[0]; - ctx->Current.Color[1] = vb.floatcolorptr[1]; - ctx->Current.Color[2] = vb.floatcolorptr[2]; - ctx->Current.Color[3] = vb.floatcolorptr[3]; + ctx->Current.Color[0] = rmesa->vb.floatcolorptr[0]; + ctx->Current.Color[1] = rmesa->vb.floatcolorptr[1]; + ctx->Current.Color[2] = rmesa->vb.floatcolorptr[2]; + ctx->Current.Color[3] = rmesa->vb.floatcolorptr[3]; break; default: @@ -143,21 +140,21 @@ } if (VTX_COLOR(rmesa->vb.vtxfmt_0, 1) == R200_VTX_PK_RGBA) { - 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 ); + ctx->Current.SecondaryColor[0] = UBYTE_TO_FLOAT( rmesa->vb.specptr->red ); + ctx->Current.SecondaryColor[1] = UBYTE_TO_FLOAT( rmesa->vb.specptr->green ); + ctx->Current.SecondaryColor[2] = UBYTE_TO_FLOAT( rmesa->vb.specptr->blue ); } if (rmesa->vb.vtxfmt_1 & (7 << R200_VTX_TEX0_COMP_CNT_SHIFT)) { - ctx->Current.Texcoord[0][0] = vb.texcoordptr[0][0]; - ctx->Current.Texcoord[0][1] = vb.texcoordptr[0][1]; + ctx->Current.Texcoord[0][0] = rmesa->vb.texcoordptr[0][0]; + ctx->Current.Texcoord[0][1] = rmesa->vb.texcoordptr[0][1]; ctx->Current.Texcoord[0][2] = 0.0F; ctx->Current.Texcoord[0][3] = 1.0F; } if (rmesa->vb.vtxfmt_1 & (7 << R200_VTX_TEX1_COMP_CNT_SHIFT)) { - ctx->Current.Texcoord[1][0] = vb.texcoordptr[1][0]; - ctx->Current.Texcoord[1][1] = vb.texcoordptr[1][1]; + ctx->Current.Texcoord[1][0] = rmesa->vb.texcoordptr[1][0]; + ctx->Current.Texcoord[1][1] = rmesa->vb.texcoordptr[1][1]; ctx->Current.Texcoord[1][2] = 0.0F; ctx->Current.Texcoord[1][3] = 1.0F; } @@ -184,12 +181,13 @@ struct r200_dma_region tmp = rmesa->dma.current; tmp.buf->refcount++; - tmp.aos_size = vb.vertex_size; - tmp.aos_stride = vb.vertex_size; + tmp.aos_size = rmesa->vb.vertex_size; + tmp.aos_stride = rmesa->vb.vertex_size; tmp.aos_start = GET_START(&tmp); rmesa->dma.current.ptr = rmesa->dma.current.start += - (vb.initial_counter - vb.counter) * vb.vertex_size * 4; + (rmesa->vb.initial_counter - rmesa->vb.counter) * + rmesa->vb.vertex_size * 4; rmesa->tcl.vertex_format = rmesa->vb.vtxfmt_0; rmesa->tcl.aos_components[0] = &tmp; @@ -232,7 +230,7 @@ rmesa->vb.primlist[i].end); if (rmesa->vb.primlist[i].start < rmesa->vb.primlist[i].end) - r200EmitPrimitive( vb.context, + r200EmitPrimitive( rmesa->glCtx, rmesa->vb.primlist[i].start, rmesa->vb.primlist[i].end, rmesa->vb.primlist[i].prim ); @@ -246,20 +244,24 @@ static void start_prim( r200ContextPtr rmesa, GLuint mode ) { if (R200_DEBUG & DEBUG_VFMT) - fprintf(stderr, "%s %d\n", __FUNCTION__, vb.initial_counter - vb.counter); + fprintf(stderr, "%s %d\n", __FUNCTION__, + rmesa->vb.initial_counter - rmesa->vb.counter); - rmesa->vb.primlist[rmesa->vb.nrprims].start = vb.initial_counter - vb.counter; + rmesa->vb.primlist[rmesa->vb.nrprims].start = + rmesa->vb.initial_counter - rmesa->vb.counter; rmesa->vb.primlist[rmesa->vb.nrprims].prim = mode; } static void note_last_prim( r200ContextPtr rmesa, GLuint flags ) { if (R200_DEBUG & DEBUG_VFMT) - fprintf(stderr, "%s %d\n", __FUNCTION__, vb.initial_counter - vb.counter); + fprintf(stderr, "%s %d\n", __FUNCTION__, + rmesa->vb.initial_counter - rmesa->vb.counter); if (rmesa->vb.prim[0] != GL_POLYGON+1) { rmesa->vb.primlist[rmesa->vb.nrprims].prim |= flags; - rmesa->vb.primlist[rmesa->vb.nrprims].end = vb.initial_counter - vb.counter; + rmesa->vb.primlist[rmesa->vb.nrprims].end = + rmesa->vb.initial_counter - rmesa->vb.counter; if (++(rmesa->vb.nrprims) == R200_MAX_PRIMS) flush_prims( rmesa ); @@ -273,12 +275,12 @@ GLfloat *src = (GLfloat *)(rmesa->dma.current.address + rmesa->dma.current.ptr + (rmesa->vb.primlist[rmesa->vb.nrprims].start + n) * - vb.vertex_size * 4); + rmesa->vb.vertex_size * 4); if (R200_DEBUG & DEBUG_VFMT) fprintf(stderr, "copy_vertex %d\n", rmesa->vb.primlist[rmesa->vb.nrprims].start + n); - for (i = 0 ; i < vb.vertex_size; i++) { + for (i = 0 ; i < rmesa->vb.vertex_size; i++) { dst[i] = src[i]; } } @@ -290,7 +292,8 @@ static GLuint copy_dma_verts( r200ContextPtr rmesa, GLfloat (*tmp)[15] ) { GLuint ovf, i; - GLuint nr = (vb.initial_counter - vb.counter) - rmesa->vb.primlist[rmesa->vb.nrprims].start; + GLuint nr = (rmesa->vb.initial_counter - rmesa->vb.counter) - + rmesa->vb.primlist[rmesa->vb.nrprims].start; if (R200_DEBUG & DEBUG_VFMT) fprintf(stderr, "%s %d verts\n", __FUNCTION__, nr); @@ -351,7 +354,7 @@ static void VFMT_FALLBACK_OUTSIDE_BEGIN_END( const char *caller ) { - GLcontext *ctx = vb.context; + GET_CURRENT_CONTEXT(ctx); r200ContextPtr rmesa = R200_CONTEXT(ctx); if (R200_DEBUG & (DEBUG_VFMT|DEBUG_FALLBACKS)) @@ -369,13 +372,12 @@ assert( rmesa->dma.flush == 0 ); rmesa->vb.fell_back = GL_TRUE; rmesa->vb.installed = GL_FALSE; -/* vb.context = 0; */ } static void VFMT_FALLBACK( const char *caller ) { - GLcontext *ctx = vb.context; + GET_CURRENT_CONTEXT(ctx); r200ContextPtr rmesa = R200_CONTEXT(ctx); GLfloat tmp[3][15]; GLuint i, prim; @@ -411,7 +413,6 @@ assert(rmesa->dma.flush == 0); rmesa->vb.fell_back = GL_TRUE; rmesa->vb.installed = GL_FALSE; - vb.context = 0; glBegin( prim ); if (rmesa->vb.installed_color_3f_sz == 4) @@ -460,50 +461,51 @@ /* Replay current vertex */ if (ind0 & R200_VTX_N0) - glNormal3fv( vb.normalptr ); + glNormal3fv( rmesa->vb.normalptr ); if (VTX_COLOR(ind0, 0) == R200_VTX_PK_RGBA) - glColor4ub( vb.colorptr->red, vb.colorptr->green, vb.colorptr->blue, vb.colorptr->alpha ); + glColor4ub( rmesa->vb.colorptr->red, rmesa->vb.colorptr->green, rmesa->vb.colorptr->blue, rmesa->vb.colorptr->alpha ); else if (VTX_COLOR(ind0, 0) == R200_VTX_FP_RGBA) - glColor4fv( vb.floatcolorptr ); + glColor4fv( rmesa->vb.floatcolorptr ); else if (VTX_COLOR(ind0, 0) == R200_VTX_FP_RGB) { if (rmesa->vb.installed_color_3f_sz == 4 && alpha != 1.0) - glColor4f( vb.floatcolorptr[0], - vb.floatcolorptr[1], - vb.floatcolorptr[2], + glColor4f( rmesa->vb.floatcolorptr[0], + rmesa->vb.floatcolorptr[1], + rmesa->vb.floatcolorptr[2], alpha ); else - glColor3fv( vb.floatcolorptr ); + glColor3fv( rmesa->vb.floatcolorptr ); } if (VTX_COLOR(ind0, 1) == R200_VTX_PK_RGBA) - _glapi_Dispatch->SecondaryColor3ubEXT( vb.specptr->red, vb.specptr->green, vb.specptr->blue ); + _glapi_Dispatch->SecondaryColor3ubEXT( rmesa->vb.specptr->red, rmesa->vb.specptr->green, rmesa->vb.specptr->blue ); if (ind1 & (7 << R200_VTX_TEX0_COMP_CNT_SHIFT)) - glTexCoord2fv( vb.texcoordptr[0] ); + glTexCoord2fv( rmesa->vb.texcoordptr[0] ); if (ind1 & (7 << R200_VTX_TEX1_COMP_CNT_SHIFT)) - glMultiTexCoord2fvARB( GL_TEXTURE1_ARB, vb.texcoordptr[1] ); + glMultiTexCoord2fvARB( GL_TEXTURE1_ARB, rmesa->vb.texcoordptr[1] ); } static void wrap_buffer( void ) { - GLcontext *ctx = vb.context; + GET_CURRENT_CONTEXT(ctx); r200ContextPtr rmesa = R200_CONTEXT(ctx); GLfloat tmp[3][15]; GLuint i, nrverts; if (R200_DEBUG & (DEBUG_VFMT|DEBUG_PRIMS)) - fprintf(stderr, "%s %d\n", __FUNCTION__, vb.initial_counter - vb.counter); + fprintf(stderr, "%s %d\n", __FUNCTION__, + rmesa->vb.initial_counter - rmesa->vb.counter); /* Don't deal with parity. */ - if ((((vb.initial_counter - vb.counter) - + if ((((rmesa->vb.initial_counter - rmesa->vb.counter) - rmesa->vb.primlist[rmesa->vb.nrprims].start) & 1)) { - vb.counter++; - vb.initial_counter++; + rmesa->vb.counter++; + rmesa->vb.initial_counter++; return; } @@ -532,12 +534,12 @@ /* Reset counter, dmaptr */ - vb.dmaptr = (int *)(rmesa->dma.current.ptr + rmesa->dma.current.address); - vb.counter = (rmesa->dma.current.end - rmesa->dma.current.ptr) / - (vb.vertex_size * 4); - vb.counter--; - vb.initial_counter = vb.counter; - vb.notify = wrap_buffer; + rmesa->vb.dmaptr = (int *)(rmesa->dma.current.ptr + rmesa->dma.current.address); + rmesa->vb.counter = (rmesa->dma.current.end - rmesa->dma.current.ptr) / + (rmesa->vb.vertex_size * 4); + rmesa->vb.counter--; + rmesa->vb.initial_counter = rmesa->vb.counter; + rmesa->vb.notify = wrap_buffer; rmesa->dma.flush = flush_prims; @@ -552,15 +554,15 @@ for (i = 0 ; i < nrverts; i++) { if (R200_DEBUG & DEBUG_VERTS) { int j; - fprintf(stderr, "re-emit vertex %d to %p\n", i, vb.dmaptr); + fprintf(stderr, "re-emit vertex %d to %p\n", i, rmesa->vb.dmaptr); if (R200_DEBUG & DEBUG_VERBOSE) - for (j = 0 ; j < vb.vertex_size; j++) + for (j = 0 ; j < rmesa->vb.vertex_size; j++) fprintf(stderr, "\t%08x/%f\n", *(int*)&tmp[i][j], tmp[i][j]); } - memcpy( vb.dmaptr, tmp[i], vb.vertex_size * 4 ); - vb.dmaptr += vb.vertex_size; - vb.counter--; + memcpy( rmesa->vb.dmaptr, tmp[i], rmesa->vb.vertex_size * 4 ); + rmesa->vb.dmaptr += rmesa->vb.vertex_size; + rmesa->vb.counter--; } } @@ -645,71 +647,71 @@ rmesa->vb.vtxfmt_1 = ind1; rmesa->vb.prim = &ctx->Driver.CurrentExecPrimitive; - vb.vertex_size = 3; - vb.normalptr = ctx->Current.Normal; - vb.colorptr = NULL; - vb.floatcolorptr = ctx->Current.Color; - vb.specptr = NULL; - vb.floatspecptr = ctx->Current.SecondaryColor; - vb.texcoordptr[0] = ctx->Current.Texcoord[0]; - vb.texcoordptr[1] = ctx->Current.Texcoord[1]; + rmesa->vb.vertex_size = 3; + rmesa->vb.normalptr = ctx->Current.Normal; + rmesa->vb.colorptr = NULL; + rmesa->vb.floatcolorptr = ctx->Current.Color; + rmesa->vb.specptr = NULL; + rmesa->vb.floatspecptr = ctx->Current.SecondaryColor; + rmesa->vb.texcoordptr[0] = ctx->Current.Texcoord[0]; + rmesa->vb.texcoordptr[1] = ctx->Current.Texcoord[1]; /* Run through and initialize the vertex components in the order * the hardware understands: */ if (ind0 & R200_VTX_N0) { - vb.normalptr = &vb.vertex[vb.vertex_size].f; - vb.vertex_size += 3; - vb.normalptr[0] = ctx->Current.Normal[0]; - vb.normalptr[1] = ctx->Current.Normal[1]; - vb.normalptr[2] = ctx->Current.Normal[2]; + rmesa->vb.normalptr = &rmesa->vb.vertex[rmesa->vb.vertex_size].f; + rmesa->vb.vertex_size += 3; + rmesa->vb.normalptr[0] = ctx->Current.Normal[0]; + rmesa->vb.normalptr[1] = ctx->Current.Normal[1]; + rmesa->vb.normalptr[2] = ctx->Current.Normal[2]; } if (VTX_COLOR(ind0, 0) == R200_VTX_PK_RGBA) { - vb.colorptr = &vb.vertex[vb.vertex_size].color; - vb.vertex_size += 1; - 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] ); + rmesa->vb.colorptr = &rmesa->vb.vertex[rmesa->vb.vertex_size].color; + rmesa->vb.vertex_size += 1; + UNCLAMPED_FLOAT_TO_CHAN( rmesa->vb.colorptr->red, ctx->Current.Color[0] ); + UNCLAMPED_FLOAT_TO_CHAN( rmesa->vb.colorptr->green, ctx->Current.Color[1] ); + UNCLAMPED_FLOAT_TO_CHAN( rmesa->vb.colorptr->blue, ctx->Current.Color[2] ); + UNCLAMPED_FLOAT_TO_CHAN( rmesa->vb.colorptr->alpha, ctx->Current.Color[3] ); } else if (VTX_COLOR(ind0, 0) == R200_VTX_FP_RGBA) { - vb.floatcolorptr = &vb.vertex[vb.vertex_size].f; - vb.vertex_size += 4; - vb.floatcolorptr[0] = ctx->Current.Color[0]; - vb.floatcolorptr[1] = ctx->Current.Color[1]; - vb.floatcolorptr[2] = ctx->Current.Color[2]; - vb.floatcolorptr[3] = ctx->Current.Color[3]; + rmesa->vb.floatcolorptr = &rmesa->vb.vertex[rmesa->vb.vertex_size].f; + rmesa->vb.vertex_size += 4; + rmesa->vb.floatcolorptr[0] = ctx->Current.Color[0]; + rmesa->vb.floatcolorptr[1] = ctx->Current.Color[1]; + rmesa->vb.floatcolorptr[2] = ctx->Current.Color[2]; + rmesa->vb.floatcolorptr[3] = ctx->Current.Color[3]; } else if (VTX_COLOR(ind0, 0) == R200_VTX_FP_RGB) { - vb.floatcolorptr = &vb.vertex[vb.vertex_size].f; - vb.vertex_size += 3; - vb.floatcolorptr[0] = ctx->Current.Color[0]; - vb.floatcolorptr[1] = ctx->Current.Color[1]; - vb.floatcolorptr[2] = ctx->Current.Color[2]; + rmesa->vb.floatcolorptr = &rmesa->vb.vertex[rmesa->vb.vertex_size].f; + rmesa->vb.vertex_size += 3; + rmesa->vb.floatcolorptr[0] = ctx->Current.Color[0]; + rmesa->vb.floatcolorptr[1] = ctx->Current.Color[1]; + rmesa->vb.floatcolorptr[2] = ctx->Current.Color[2]; } if (VTX_COLOR(ind0, 1) == R200_VTX_PK_RGBA) { - vb.specptr = &vb.vertex[vb.vertex_size].color; - vb.vertex_size += 1; - 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] ); + rmesa->vb.specptr = &rmesa->vb.vertex[rmesa->vb.vertex_size].color; + rmesa->vb.vertex_size += 1; + UNCLAMPED_FLOAT_TO_CHAN( rmesa->vb.specptr->red, ctx->Current.SecondaryColor[0] ); + UNCLAMPED_FLOAT_TO_CHAN( rmesa->vb.specptr->green, ctx->Current.SecondaryColor[1] ); + UNCLAMPED_FLOAT_TO_CHAN( rmesa->vb.specptr->blue, ctx->Current.SecondaryColor[2] ); } if (ind1 & (7 << R200_VTX_TEX0_COMP_CNT_SHIFT)) { - vb.texcoordptr[0] = &vb.vertex[vb.vertex_size].f; - vb.vertex_size += 2; - vb.texcoordptr[0][0] = ctx->Current.Texcoord[0][0]; - vb.texcoordptr[0][1] = ctx->Current.Texcoord[0][1]; + rmesa->vb.texcoordptr[0] = &rmesa->vb.vertex[rmesa->vb.vertex_size].f; + rmesa->vb.vertex_size += 2; + rmesa->vb.texcoordptr[0][0] = ctx->Current.Texcoord[0][0]; + rmesa->vb.texcoordptr[0][1] = ctx->Current.Texcoord[0][1]; } if (ind1 & (7 << R200_VTX_TEX1_COMP_CNT_SHIFT)) { - vb.texcoordptr[1] = &vb.vertex[vb.vertex_size].f; - vb.vertex_size += 2; - vb.texcoordptr[1][0] = ctx->Current.Texcoord[1][0]; - vb.texcoordptr[1][1] = ctx->Current.Texcoord[1][1]; + rmesa->vb.texcoordptr[1] = &rmesa->vb.vertex[rmesa->vb.vertex_size].f; + rmesa->vb.vertex_size += 2; + rmesa->vb.texcoordptr[1][0] = ctx->Current.Texcoord[1][0]; + rmesa->vb.texcoordptr[1][1] = ctx->Current.Texcoord[1][1]; } if (rmesa->vb.installed_vertex_format != rmesa->vb.vtxfmt_0) { @@ -762,7 +764,6 @@ ctx->Driver.FlushVertices = r200VtxFmtFlushVertices; ctx->Driver.NewList = r200NewList; rmesa->vb.installed = GL_TRUE; - vb.context = ctx; } else if (R200_DEBUG & DEBUG_VFMT) fprintf(stderr, "%s: already installed", __FUNCTION__); @@ -777,7 +778,6 @@ _tnl_wakeup_exec( ctx ); ctx->Driver.FlushVertices = r200FlushVertices; rmesa->vb.installed = GL_FALSE; - vb.context = 0; } } } @@ -789,7 +789,7 @@ static void r200_Materialfv( GLenum face, GLenum pname, const GLfloat *params ) { - GLcontext *ctx = vb.context; + GET_CURRENT_CONTEXT(ctx); r200ContextPtr rmesa = R200_CONTEXT( ctx ); if (R200_DEBUG & DEBUG_VFMT) @@ -801,7 +801,7 @@ return; } _mesa_noop_Materialfv( face, pname, params ); - r200UpdateMaterial( vb.context ); + r200UpdateMaterial( ctx ); } @@ -809,7 +809,7 @@ */ static void r200_Begin( GLenum mode ) { - GLcontext *ctx = vb.context; + GET_CURRENT_CONTEXT(ctx); r200ContextPtr rmesa = R200_CONTEXT(ctx); if (R200_DEBUG & DEBUG_VFMT) @@ -841,7 +841,7 @@ } - if (rmesa->dma.flush && vb.counter < 12) { + if (rmesa->dma.flush && rmesa->vb.counter < 12) { if (R200_DEBUG & DEBUG_VFMT) fprintf(stderr, "%s: flush almost-empty buffers\n", __FUNCTION__); flush_prims( rmesa ); @@ -850,20 +850,20 @@ /* Need to arrange to save vertices here? Or always copy from dma (yuk)? */ if (!rmesa->dma.flush) { - if (rmesa->dma.current.ptr + 12*vb.vertex_size*4 > + if (rmesa->dma.current.ptr + 12*rmesa->vb.vertex_size*4 > rmesa->dma.current.end) { R200_NEWPRIM( rmesa ); r200RefillCurrentDmaRegion( rmesa ); } - vb.dmaptr = (int *)(rmesa->dma.current.address + rmesa->dma.current.ptr); - vb.counter = (rmesa->dma.current.end - rmesa->dma.current.ptr) / - (vb.vertex_size * 4); - vb.counter--; - vb.initial_counter = vb.counter; - vb.notify = wrap_buffer; + rmesa->vb.dmaptr = (int *)(rmesa->dma.current.address + rmesa->dma.current.ptr); + rmesa->vb.counter = (rmesa->dma.current.end - rmesa->dma.current.ptr) / + (rmesa->vb.vertex_size * 4); + rmesa->vb.counter--; + rmesa->vb.initial_counter = rmesa->vb.counter; + rmesa->vb.notify = wrap_buffer; rmesa->dma.flush = flush_prims; - vb.context->Driver.NeedFlush |= FLUSH_STORED_VERTICES; + ctx->Driver.NeedFlush |= FLUSH_STORED_VERTICES; } @@ -875,7 +875,7 @@ static void r200_End( void ) { - GLcontext *ctx = vb.context; + GET_CURRENT_CONTEXT(ctx); r200ContextPtr rmesa = R200_CONTEXT(ctx); if (R200_DEBUG & DEBUG_VFMT) @@ -943,7 +943,6 @@ fprintf(stderr, "%s\n", __FUNCTION__); assert(rmesa->vb.installed); - assert(vb.context == ctx); if (flags & FLUSH_UPDATE_CURRENT) { r200_copy_to_current( ctx ); @@ -954,11 +953,10 @@ } if (flags & FLUSH_STORED_VERTICES) { - r200ContextPtr rmesa = R200_CONTEXT( ctx ); assert (rmesa->dma.flush == 0 || rmesa->dma.flush == flush_prims); if (rmesa->dma.flush == flush_prims) - flush_prims( R200_CONTEXT( ctx ) ); + flush_prims( rmesa ); ctx->Driver.NeedFlush &= ~FLUSH_STORED_VERTICES; } } @@ -1036,7 +1034,6 @@ TNL_CONTEXT(ctx)->Driver.NotifyBegin = r200NotifyBegin; - vb.context = ctx; rmesa->vb.enabled = 1; rmesa->vb.prim = &ctx->Driver.CurrentExecPrimitive; rmesa->vb.primflags = 0; @@ -1083,42 +1080,11 @@ void r200VtxfmtUnbindContext( GLcontext *ctx ) { - if (R200_CONTEXT(ctx)->vb.installed) { - assert(vb.context == ctx); - VFMT_FALLBACK_OUTSIDE_BEGIN_END( __FUNCTION__ ); - } - - TNL_CONTEXT(ctx)->Driver.NotifyBegin = 0; } void r200VtxfmtMakeCurrent( GLcontext *ctx ) { - r200ContextPtr rmesa = R200_CONTEXT( ctx ); - -#if defined(THREADS) - static GLboolean ThreadSafe = GL_FALSE; /* In thread-safe mode? */ - if (!ThreadSafe) { - static unsigned long knownID; - static GLboolean firstCall = GL_TRUE; - if (firstCall) { - knownID = _glthread_GetID(); - firstCall = GL_FALSE; - } - else if (knownID != _glthread_GetID()) { - ThreadSafe = GL_TRUE; - - if (R200_DEBUG & (DEBUG_DRI|DEBUG_VFMT)) - fprintf(stderr, "**** Multithread situation!\n"); - } - } - if (ThreadSafe) - return; -#endif - - if (rmesa->vb.enabled) { - TNL_CONTEXT(ctx)->Driver.NotifyBegin = r200NotifyBegin; - } } Only in xc/lib/GL/mesa/src/drv/r200: r200_vtxfmt.c.orig diff -ur xc.orig/lib/GL/mesa/src/drv/r200/r200_vtxfmt.h xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt.h --- xc.orig/lib/GL/mesa/src/drv/r200/r200_vtxfmt.h 2002-10-30 13:51:53.000000000 +0100 +++ xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt.h 2004-10-14 15:18:52.752255866 +0200 @@ -41,9 +41,6 @@ -extern struct r200_vb vb; - - extern void r200VtxfmtUpdate( GLcontext *ctx ); extern void r200VtxfmtInit( GLcontext *ctx ); extern void r200VtxfmtInvalidate( GLcontext *ctx ); diff -ur xc.orig/lib/GL/mesa/src/drv/r200/r200_vtxfmt_c.c xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt_c.c --- xc.orig/lib/GL/mesa/src/drv/r200/r200_vtxfmt_c.c 2002-12-16 17:18:56.000000000 +0100 +++ xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt_c.c 2004-10-14 15:18:52.753255699 +0200 @@ -46,65 +46,73 @@ */ static void r200_Vertex3f( GLfloat x, GLfloat y, GLfloat z ) { + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); int i; - *vb.dmaptr++ = *(int *)&x; - *vb.dmaptr++ = *(int *)&y; - *vb.dmaptr++ = *(int *)&z; + *rmesa->vb.dmaptr++ = *(int *)&x; + *rmesa->vb.dmaptr++ = *(int *)&y; + *rmesa->vb.dmaptr++ = *(int *)&z; - for (i = 3; i < vb.vertex_size; i++) - *vb.dmaptr++ = vb.vertex[i].i; + for (i = 3; i < rmesa->vb.vertex_size; i++) + *rmesa->vb.dmaptr++ = rmesa->vb.vertex[i].i; - if (--vb.counter == 0) - vb.notify(); + if (--rmesa->vb.counter == 0) + rmesa->vb.notify(); } static void r200_Vertex3fv( const GLfloat *v ) { + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); int i; - *vb.dmaptr++ = *(int *)&v[0]; - *vb.dmaptr++ = *(int *)&v[1]; - *vb.dmaptr++ = *(int *)&v[2]; + *rmesa->vb.dmaptr++ = *(int *)&v[0]; + *rmesa->vb.dmaptr++ = *(int *)&v[1]; + *rmesa->vb.dmaptr++ = *(int *)&v[2]; - for (i = 3; i < vb.vertex_size; i++) - *vb.dmaptr++ = vb.vertex[i].i; + for (i = 3; i < rmesa->vb.vertex_size; i++) + *rmesa->vb.dmaptr++ = rmesa->vb.vertex[i].i; - if (--vb.counter == 0) - vb.notify(); + if (--rmesa->vb.counter == 0) + rmesa->vb.notify(); } static void r200_Vertex2f( GLfloat x, GLfloat y ) { + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); int i; - *vb.dmaptr++ = *(int *)&x; - *vb.dmaptr++ = *(int *)&y; - *vb.dmaptr++ = 0; + *rmesa->vb.dmaptr++ = *(int *)&x; + *rmesa->vb.dmaptr++ = *(int *)&y; + *rmesa->vb.dmaptr++ = 0; - for (i = 3; i < vb.vertex_size; i++) - *vb.dmaptr++ = vb.vertex[i].i; + for (i = 3; i < rmesa->vb.vertex_size; i++) + *rmesa->vb.dmaptr++ = rmesa->vb.vertex[i].i; - if (--vb.counter == 0) - vb.notify(); + if (--rmesa->vb.counter == 0) + rmesa->vb.notify(); } static void r200_Vertex2fv( const GLfloat *v ) { + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); int i; - *vb.dmaptr++ = *(int *)&v[0]; - *vb.dmaptr++ = *(int *)&v[1]; - *vb.dmaptr++ = 0; + *rmesa->vb.dmaptr++ = *(int *)&v[0]; + *rmesa->vb.dmaptr++ = *(int *)&v[1]; + *rmesa->vb.dmaptr++ = 0; - for (i = 3; i < vb.vertex_size; i++) - *vb.dmaptr++ = vb.vertex[i].i; + for (i = 3; i < rmesa->vb.vertex_size; i++) + *rmesa->vb.dmaptr++ = rmesa->vb.vertex[i].i; - if (--vb.counter == 0) - vb.notify(); + if (--rmesa->vb.counter == 0) + rmesa->vb.notify(); } @@ -113,7 +121,9 @@ */ static void r200_Color3ub_ub( GLubyte r, GLubyte g, GLubyte b ) { - r200_color_t *dest = vb.colorptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + r200_color_t *dest = rmesa->vb.colorptr; dest->red = r; dest->green = g; dest->blue = b; @@ -122,7 +132,9 @@ static void r200_Color3ubv_ub( const GLubyte *v ) { - r200_color_t *dest = vb.colorptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + r200_color_t *dest = rmesa->vb.colorptr; dest->red = v[0]; dest->green = v[1]; dest->blue = v[2]; @@ -131,7 +143,9 @@ static void r200_Color4ub_ub( GLubyte r, GLubyte g, GLubyte b, GLubyte a ) { - r200_color_t *dest = vb.colorptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + r200_color_t *dest = rmesa->vb.colorptr; dest->red = r; dest->green = g; dest->blue = b; @@ -140,13 +154,17 @@ static void r200_Color4ubv_ub( const GLubyte *v ) { - *(GLuint *)vb.colorptr = LE32_TO_CPU(*(GLuint *)v); + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + *(GLuint *)rmesa->vb.colorptr = LE32_TO_CPU(*(GLuint *)v); } static void r200_Color3f_ub( GLfloat r, GLfloat g, GLfloat b ) { - r200_color_t *dest = vb.colorptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + r200_color_t *dest = rmesa->vb.colorptr; UNCLAMPED_FLOAT_TO_UBYTE( dest->red, r ); UNCLAMPED_FLOAT_TO_UBYTE( dest->green, g ); UNCLAMPED_FLOAT_TO_UBYTE( dest->blue, b ); @@ -155,7 +173,9 @@ static void r200_Color3fv_ub( const GLfloat *v ) { - r200_color_t *dest = vb.colorptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + r200_color_t *dest = rmesa->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] ); @@ -164,7 +184,9 @@ static void r200_Color4f_ub( GLfloat r, GLfloat g, GLfloat b, GLfloat a ) { - r200_color_t *dest = vb.colorptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + r200_color_t *dest = rmesa->vb.colorptr; UNCLAMPED_FLOAT_TO_UBYTE( dest->red, r ); UNCLAMPED_FLOAT_TO_UBYTE( dest->green, g ); UNCLAMPED_FLOAT_TO_UBYTE( dest->blue, b ); @@ -173,7 +195,9 @@ static void r200_Color4fv_ub( const GLfloat *v ) { - r200_color_t *dest = vb.colorptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + r200_color_t *dest = rmesa->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] ); @@ -185,7 +209,9 @@ */ static void r200_Color3ub_4f( GLubyte r, GLubyte g, GLubyte b ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.floatcolorptr; dest[0] = UBYTE_TO_FLOAT(r); dest[1] = UBYTE_TO_FLOAT(g); dest[2] = UBYTE_TO_FLOAT(b); @@ -194,7 +220,9 @@ static void r200_Color3ubv_4f( const GLubyte *v ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.floatcolorptr; dest[0] = UBYTE_TO_FLOAT(v[0]); dest[1] = UBYTE_TO_FLOAT(v[1]); dest[2] = UBYTE_TO_FLOAT(v[2]); @@ -203,7 +231,9 @@ static void r200_Color4ub_4f( GLubyte r, GLubyte g, GLubyte b, GLubyte a ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.floatcolorptr; dest[0] = UBYTE_TO_FLOAT(r); dest[1] = UBYTE_TO_FLOAT(g); dest[2] = UBYTE_TO_FLOAT(b); @@ -212,7 +242,9 @@ static void r200_Color4ubv_4f( const GLubyte *v ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.floatcolorptr; dest[0] = UBYTE_TO_FLOAT(v[0]); dest[1] = UBYTE_TO_FLOAT(v[1]); dest[2] = UBYTE_TO_FLOAT(v[2]); @@ -222,7 +254,9 @@ static void r200_Color3f_4f( GLfloat r, GLfloat g, GLfloat b ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.floatcolorptr; dest[0] = r; dest[1] = g; dest[2] = b; @@ -231,7 +265,9 @@ static void r200_Color3fv_4f( const GLfloat *v ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.floatcolorptr; dest[0] = v[0]; dest[1] = v[1]; dest[2] = v[2]; @@ -240,7 +276,9 @@ static void r200_Color4f_4f( GLfloat r, GLfloat g, GLfloat b, GLfloat a ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.floatcolorptr; dest[0] = r; dest[1] = g; dest[2] = b; @@ -249,7 +287,9 @@ static void r200_Color4fv_4f( const GLfloat *v ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.floatcolorptr; dest[0] = v[0]; dest[1] = v[1]; dest[2] = v[2]; @@ -261,7 +301,9 @@ */ static void r200_Color3ub_3f( GLubyte r, GLubyte g, GLubyte b ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.floatcolorptr; dest[0] = UBYTE_TO_FLOAT(r); dest[1] = UBYTE_TO_FLOAT(g); dest[2] = UBYTE_TO_FLOAT(b); @@ -269,7 +311,9 @@ static void r200_Color3ubv_3f( const GLubyte *v ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.floatcolorptr; dest[0] = UBYTE_TO_FLOAT(v[0]); dest[1] = UBYTE_TO_FLOAT(v[1]); dest[2] = UBYTE_TO_FLOAT(v[2]); @@ -277,26 +321,32 @@ static void r200_Color4ub_3f( GLubyte r, GLubyte g, GLubyte b, GLubyte a ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.floatcolorptr; dest[0] = UBYTE_TO_FLOAT(r); dest[1] = UBYTE_TO_FLOAT(g); dest[2] = UBYTE_TO_FLOAT(b); - vb.context->Current.Color[3] = UBYTE_TO_FLOAT(a); + ctx->Current.Color[3] = UBYTE_TO_FLOAT(a); } static void r200_Color4ubv_3f( const GLubyte *v ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.floatcolorptr; dest[0] = UBYTE_TO_FLOAT(v[0]); dest[1] = UBYTE_TO_FLOAT(v[1]); dest[2] = UBYTE_TO_FLOAT(v[2]); - vb.context->Current.Color[3] = UBYTE_TO_FLOAT(v[3]); + ctx->Current.Color[3] = UBYTE_TO_FLOAT(v[3]); } static void r200_Color3f_3f( GLfloat r, GLfloat g, GLfloat b ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.floatcolorptr; dest[0] = r; dest[1] = g; dest[2] = b; @@ -304,7 +354,9 @@ static void r200_Color3fv_3f( const GLfloat *v ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.floatcolorptr; dest[0] = v[0]; dest[1] = v[1]; dest[2] = v[2]; @@ -312,20 +364,24 @@ static void r200_Color4f_3f( GLfloat r, GLfloat g, GLfloat b, GLfloat a ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.floatcolorptr; dest[0] = r; dest[1] = g; dest[2] = b; - vb.context->Current.Color[3] = a; + ctx->Current.Color[3] = a; } static void r200_Color4fv_3f( const GLfloat *v ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.floatcolorptr; dest[0] = v[0]; dest[1] = v[1]; dest[2] = v[2]; - vb.context->Current.Color[3] = v[3]; + ctx->Current.Color[3] = v[3]; } @@ -333,7 +389,9 @@ */ static void r200_SecondaryColor3ubEXT_ub( GLubyte r, GLubyte g, GLubyte b ) { - r200_color_t *dest = vb.specptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + r200_color_t *dest = rmesa->vb.specptr; dest->red = r; dest->green = g; dest->blue = b; @@ -342,7 +400,9 @@ static void r200_SecondaryColor3ubvEXT_ub( const GLubyte *v ) { - r200_color_t *dest = vb.specptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + r200_color_t *dest = rmesa->vb.specptr; dest->red = v[0]; dest->green = v[1]; dest->blue = v[2]; @@ -351,7 +411,9 @@ static void r200_SecondaryColor3fEXT_ub( GLfloat r, GLfloat g, GLfloat b ) { - r200_color_t *dest = vb.specptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + r200_color_t *dest = rmesa->vb.specptr; UNCLAMPED_FLOAT_TO_UBYTE( dest->red, r ); UNCLAMPED_FLOAT_TO_UBYTE( dest->green, g ); UNCLAMPED_FLOAT_TO_UBYTE( dest->blue, b ); @@ -360,7 +422,9 @@ static void r200_SecondaryColor3fvEXT_ub( const GLfloat *v ) { - r200_color_t *dest = vb.specptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + r200_color_t *dest = rmesa->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] ); @@ -369,7 +433,9 @@ static void r200_SecondaryColor3ubEXT_3f( GLubyte r, GLubyte g, GLubyte b ) { - GLfloat *dest = vb.floatspecptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.floatspecptr; dest[0] = UBYTE_TO_FLOAT(r); dest[1] = UBYTE_TO_FLOAT(g); dest[2] = UBYTE_TO_FLOAT(b); @@ -378,7 +444,9 @@ static void r200_SecondaryColor3ubvEXT_3f( const GLubyte *v ) { - GLfloat *dest = vb.floatspecptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.floatspecptr; dest[0] = UBYTE_TO_FLOAT(v[0]); dest[1] = UBYTE_TO_FLOAT(v[1]); dest[2] = UBYTE_TO_FLOAT(v[2]); @@ -387,7 +455,9 @@ static void r200_SecondaryColor3fEXT_3f( GLfloat r, GLfloat g, GLfloat b ) { - GLfloat *dest = vb.floatspecptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.floatspecptr; dest[0] = r; dest[1] = g; dest[2] = b; @@ -396,7 +466,9 @@ static void r200_SecondaryColor3fvEXT_3f( const GLfloat *v ) { - GLfloat *dest = vb.floatspecptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.floatspecptr; dest[0] = v[0]; dest[1] = v[1]; dest[2] = v[2]; @@ -409,7 +481,9 @@ */ static void r200_Normal3f( GLfloat n0, GLfloat n1, GLfloat n2 ) { - GLfloat *dest = vb.normalptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.normalptr; dest[0] = n0; dest[1] = n1; dest[2] = n2; @@ -417,7 +491,9 @@ static void r200_Normal3fv( const GLfloat *v ) { - GLfloat *dest = vb.normalptr; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.normalptr; dest[0] = v[0]; dest[1] = v[1]; dest[2] = v[2]; @@ -428,28 +504,36 @@ */ static void r200_TexCoord1f( GLfloat s ) { - GLfloat *dest = vb.texcoordptr[0]; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.texcoordptr[0]; dest[0] = s; dest[1] = 0; } static void r200_TexCoord1fv( const GLfloat *v ) { - GLfloat *dest = vb.texcoordptr[0]; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.texcoordptr[0]; dest[0] = v[0]; dest[1] = 0; } static void r200_TexCoord2f( GLfloat s, GLfloat t ) { - GLfloat *dest = vb.texcoordptr[0]; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.texcoordptr[0]; dest[0] = s; dest[1] = t; } static void r200_TexCoord2fv( const GLfloat *v ) { - GLfloat *dest = vb.texcoordptr[0]; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.texcoordptr[0]; dest[0] = v[0]; dest[1] = v[1]; } @@ -459,28 +543,36 @@ */ static void r200_MultiTexCoord1fARB( GLenum target, GLfloat s ) { - GLfloat *dest = vb.texcoordptr[(target - GL_TEXTURE0_ARB)&1]; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.texcoordptr[(target - GL_TEXTURE0_ARB)&1]; dest[0] = s; dest[1] = 0; } static void r200_MultiTexCoord1fvARB( GLenum target, const GLfloat *v ) { - GLfloat *dest = vb.texcoordptr[(target - GL_TEXTURE0_ARB)&1]; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.texcoordptr[(target - GL_TEXTURE0_ARB)&1]; dest[0] = v[0]; dest[1] = 0; } static void r200_MultiTexCoord2fARB( GLenum target, GLfloat s, GLfloat t ) { - GLfloat *dest = vb.texcoordptr[(target - GL_TEXTURE0_ARB)&1]; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.texcoordptr[(target - GL_TEXTURE0_ARB)&1]; dest[0] = s; dest[1] = t; } static void r200_MultiTexCoord2fvARB( GLenum target, const GLfloat *v ) { - GLfloat *dest = vb.texcoordptr[(target - GL_TEXTURE0_ARB)&1]; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.texcoordptr[(target - GL_TEXTURE0_ARB)&1]; dest[0] = v[0]; dest[1] = v[1]; } @@ -503,29 +595,30 @@ #define CHOOSE(FN, FNTYPE, MASK0, MASK1, ARGS1, ARGS2 ) \ static void choose_##FN ARGS1 \ { \ - r200ContextPtr rmesa = R200_CONTEXT(vb.context); \ + GET_CURRENT_CONTEXT(ctx); \ + r200ContextPtr rmesa = R200_CONTEXT(ctx); \ int key[2]; \ struct dynfn *dfn; \ \ - key[0] = rmesa->vb.vtxfmt_0 & MASK0; \ - key[1] = rmesa->vb.vtxfmt_1 & MASK1; \ + key[0] = rmesa->vb.vtxfmt_0 & MASK0; \ + key[1] = rmesa->vb.vtxfmt_1 & MASK1; \ \ dfn = lookup( &rmesa->vb.dfn_cache.FN, key ); \ if (dfn == 0) \ - dfn = rmesa->vb.codegen.FN( vb.context, key ); \ + dfn = rmesa->vb.codegen.FN( ctx, key ); \ else if (R200_DEBUG & DEBUG_CODEGEN) \ fprintf(stderr, "%s -- cached codegen\n", __FUNCTION__ ); \ \ if (dfn) \ - vb.context->Exec->FN = (FNTYPE)(dfn->code); \ + ctx->Exec->FN = (FNTYPE)(dfn->code); \ else { \ if (R200_DEBUG & DEBUG_CODEGEN) \ fprintf(stderr, "%s -- generic version\n", __FUNCTION__ ); \ - vb.context->Exec->FN = r200_##FN; \ + ctx->Exec->FN = r200_##FN; \ } \ \ - vb.context->Driver.NeedFlush |= FLUSH_UPDATE_CURRENT; \ - vb.context->Exec->FN ARGS2; \ + ctx->Driver.NeedFlush |= FLUSH_UPDATE_CURRENT; \ + ctx->Exec->FN ARGS2; \ } @@ -540,8 +633,8 @@ #define CHOOSE_COLOR(FN, FNTYPE, NR, MASK0, MASK1, ARGS1, ARGS2 ) \ static void choose_##FN ARGS1 \ { \ - GLcontext *ctx = vb.context; \ - r200ContextPtr rmesa = R200_CONTEXT(vb.context); \ + GET_CURRENT_CONTEXT(ctx); \ + r200ContextPtr rmesa = R200_CONTEXT(ctx); \ int key[2]; \ struct dynfn *dfn; \ \ @@ -597,7 +690,8 @@ #define CHOOSE_SECONDARY_COLOR(FN, FNTYPE, MASK0, MASK1, ARGS1, ARGS2 ) \ static void choose_##FN ARGS1 \ { \ - r200ContextPtr rmesa = R200_CONTEXT(vb.context); \ + GET_CURRENT_CONTEXT(ctx); \ + r200ContextPtr rmesa = R200_CONTEXT(ctx); \ int key[2]; \ struct dynfn *dfn; \ \ @@ -606,21 +700,21 @@ \ dfn = lookup( &rmesa->vb.dfn_cache.FN, key ); \ if (dfn == 0) \ - dfn = rmesa->vb.codegen.FN( vb.context, key ); \ + dfn = rmesa->vb.codegen.FN( ctx, key ); \ else if (R200_DEBUG & DEBUG_CODEGEN) \ fprintf(stderr, "%s -- cached version\n", __FUNCTION__ ); \ \ if (dfn) \ - vb.context->Exec->FN = (FNTYPE)(dfn->code); \ + ctx->Exec->FN = (FNTYPE)(dfn->code); \ else { \ if (R200_DEBUG & DEBUG_CODEGEN) \ fprintf(stderr, "%s -- generic version\n", __FUNCTION__ ); \ - vb.context->Exec->FN = (VTX_COLOR(rmesa->vb.vtxfmt_0,1) == R200_VTX_PK_RGBA) \ + ctx->Exec->FN = (VTX_COLOR(rmesa->vb.vtxfmt_0,1) == R200_VTX_PK_RGBA) \ ? r200_##FN##_ub : r200_##FN##_3f; \ } \ \ - vb.context->Driver.NeedFlush |= FLUSH_UPDATE_CURRENT; \ - vb.context->Exec->FN ARGS2; \ + ctx->Driver.NeedFlush |= FLUSH_UPDATE_CURRENT; \ + ctx->Exec->FN ARGS2; \ } diff -ur xc.orig/lib/GL/mesa/src/drv/r200/r200_vtxfmt_sse.c xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt_sse.c --- xc.orig/lib/GL/mesa/src/drv/r200/r200_vtxfmt_sse.c 2002-10-30 13:51:53.000000000 +0100 +++ xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt_sse.c 2004-10-14 15:18:52.753255699 +0200 @@ -68,7 +68,7 @@ dfn->code = ALIGN_MALLOC( sizeof(temp), 16 ); memcpy (dfn->code, temp, sizeof(temp)); - FIXUP(dfn->code, 5, 0x0, (int)vb.normalptr); + FIXUP(dfn->code, 5, 0x0, (int)rmesa->vb.normalptr); return dfn; } diff -ur xc.orig/lib/GL/mesa/src/drv/r200/r200_vtxfmt_x86.c xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt_x86.c --- xc.orig/lib/GL/mesa/src/drv/r200/r200_vtxfmt_x86.c 2002-12-16 17:18:56.000000000 +0100 +++ xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt_x86.c 2004-10-14 15:18:52.754255532 +0200 @@ -77,43 +77,43 @@ if (R200_DEBUG & DEBUG_CODEGEN) fprintf(stderr, "%s 0x%08x 0x%08x %d\n", __FUNCTION__, - key[0], key[1], vb.vertex_size ); + key[0], key[1], rmesa->vb.vertex_size ); - switch (vb.vertex_size) { + switch (rmesa->vb.vertex_size) { case 4: { DFN ( _x86_Vertex3f_4, rmesa->vb.dfn_cache.Vertex3f ); - FIXUP(dfn->code, 2, 0x0, (int)&vb.dmaptr); - FIXUP(dfn->code, 25, 0x0, (int)&vb.vertex[3]); - FIXUP(dfn->code, 36, 0x0, (int)&vb.counter); - FIXUP(dfn->code, 46, 0x0, (int)&vb.dmaptr); - FIXUP(dfn->code, 51, 0x0, (int)&vb.counter); - FIXUP(dfn->code, 60, 0x0, (int)&vb.notify); + FIXUP(dfn->code, 2, 0x0, (int)&rmesa->vb.dmaptr); + FIXUP(dfn->code, 25, 0x0, (int)&rmesa->vb.vertex[3]); + FIXUP(dfn->code, 36, 0x0, (int)&rmesa->vb.counter); + FIXUP(dfn->code, 46, 0x0, (int)&rmesa->vb.dmaptr); + FIXUP(dfn->code, 51, 0x0, (int)&rmesa->vb.counter); + FIXUP(dfn->code, 60, 0x0, (int)&rmesa->vb.notify); break; } case 6: { DFN ( _x86_Vertex3f_6, rmesa->vb.dfn_cache.Vertex3f ); - FIXUP(dfn->code, 3, 0x0, (int)&vb.dmaptr); - FIXUP(dfn->code, 28, 0x0, (int)&vb.vertex[3]); - FIXUP(dfn->code, 34, 0x0, (int)&vb.vertex[4]); - FIXUP(dfn->code, 40, 0x0, (int)&vb.vertex[5]); - FIXUP(dfn->code, 57, 0x0, (int)&vb.counter); - FIXUP(dfn->code, 63, 0x0, (int)&vb.dmaptr); - FIXUP(dfn->code, 70, 0x0, (int)&vb.counter); - FIXUP(dfn->code, 79, 0x0, (int)&vb.notify); + FIXUP(dfn->code, 3, 0x0, (int)&rmesa->vb.dmaptr); + FIXUP(dfn->code, 28, 0x0, (int)&rmesa->vb.vertex[3]); + FIXUP(dfn->code, 34, 0x0, (int)&rmesa->vb.vertex[4]); + FIXUP(dfn->code, 40, 0x0, (int)&rmesa->vb.vertex[5]); + FIXUP(dfn->code, 57, 0x0, (int)&rmesa->vb.counter); + FIXUP(dfn->code, 63, 0x0, (int)&rmesa->vb.dmaptr); + FIXUP(dfn->code, 70, 0x0, (int)&rmesa->vb.counter); + FIXUP(dfn->code, 79, 0x0, (int)&rmesa->vb.notify); break; } default: { DFN ( _x86_Vertex3f, rmesa->vb.dfn_cache.Vertex3f ); - FIXUP(dfn->code, 3, 0x0, (int)&vb.vertex[3]); - FIXUP(dfn->code, 9, 0x0, (int)&vb.dmaptr); - FIXUP(dfn->code, 37, 0x0, vb.vertex_size-3); - FIXUP(dfn->code, 44, 0x0, (int)&vb.counter); - FIXUP(dfn->code, 50, 0x0, (int)&vb.dmaptr); - FIXUP(dfn->code, 56, 0x0, (int)&vb.counter); - FIXUP(dfn->code, 67, 0x0, (int)&vb.notify); + FIXUP(dfn->code, 3, 0x0, (int)&rmesa->vb.vertex[3]); + FIXUP(dfn->code, 9, 0x0, (int)&rmesa->vb.dmaptr); + FIXUP(dfn->code, 37, 0x0, rmesa->vb.vertex_size-3); + FIXUP(dfn->code, 44, 0x0, (int)&rmesa->vb.counter); + FIXUP(dfn->code, 50, 0x0, (int)&rmesa->vb.dmaptr); + FIXUP(dfn->code, 56, 0x0, (int)&rmesa->vb.counter); + FIXUP(dfn->code, 67, 0x0, (int)&rmesa->vb.notify); break; } } @@ -130,20 +130,20 @@ if (R200_DEBUG & DEBUG_CODEGEN) fprintf(stderr, "%s 0x%08x 0x%08x %d\n", __FUNCTION__, - key[0], key[1], vb.vertex_size ); + key[0], key[1], rmesa->vb.vertex_size ); - switch (vb.vertex_size) { + switch (rmesa->vb.vertex_size) { case 6: { DFN ( _x86_Vertex3fv_6, rmesa->vb.dfn_cache.Vertex3fv ); - FIXUP(dfn->code, 1, 0x00000000, (int)&vb.dmaptr); - FIXUP(dfn->code, 27, 0x0000001c, (int)&vb.vertex[3]); - FIXUP(dfn->code, 33, 0x00000020, (int)&vb.vertex[4]); - FIXUP(dfn->code, 45, 0x00000024, (int)&vb.vertex[5]); - FIXUP(dfn->code, 56, 0x00000000, (int)&vb.dmaptr); - FIXUP(dfn->code, 61, 0x00000004, (int)&vb.counter); - FIXUP(dfn->code, 67, 0x00000004, (int)&vb.counter); - FIXUP(dfn->code, 76, 0x00000008, (int)&vb.notify); + FIXUP(dfn->code, 1, 0x00000000, (int)&rmesa->vb.dmaptr); + FIXUP(dfn->code, 27, 0x0000001c, (int)&rmesa->vb.vertex[3]); + FIXUP(dfn->code, 33, 0x00000020, (int)&rmesa->vb.vertex[4]); + FIXUP(dfn->code, 45, 0x00000024, (int)&rmesa->vb.vertex[5]); + FIXUP(dfn->code, 56, 0x00000000, (int)&rmesa->vb.dmaptr); + FIXUP(dfn->code, 61, 0x00000004, (int)&rmesa->vb.counter); + FIXUP(dfn->code, 67, 0x00000004, (int)&rmesa->vb.counter); + FIXUP(dfn->code, 76, 0x00000008, (int)&rmesa->vb.notify); break; } @@ -151,16 +151,16 @@ case 8: { DFN ( _x86_Vertex3fv_8, rmesa->vb.dfn_cache.Vertex3fv ); - FIXUP(dfn->code, 1, 0x00000000, (int)&vb.dmaptr); - FIXUP(dfn->code, 27, 0x0000001c, (int)&vb.vertex[3]); - FIXUP(dfn->code, 33, 0x00000020, (int)&vb.vertex[4]); - FIXUP(dfn->code, 45, 0x0000001c, (int)&vb.vertex[5]); - FIXUP(dfn->code, 51, 0x00000020, (int)&vb.vertex[6]); - FIXUP(dfn->code, 63, 0x00000024, (int)&vb.vertex[7]); - FIXUP(dfn->code, 74, 0x00000000, (int)&vb.dmaptr); - FIXUP(dfn->code, 79, 0x00000004, (int)&vb.counter); - FIXUP(dfn->code, 85, 0x00000004, (int)&vb.counter); - FIXUP(dfn->code, 94, 0x00000008, (int)&vb.notify); + FIXUP(dfn->code, 1, 0x00000000, (int)&rmesa->vb.dmaptr); + FIXUP(dfn->code, 27, 0x0000001c, (int)&rmesa->vb.vertex[3]); + FIXUP(dfn->code, 33, 0x00000020, (int)&rmesa->vb.vertex[4]); + FIXUP(dfn->code, 45, 0x0000001c, (int)&rmesa->vb.vertex[5]); + FIXUP(dfn->code, 51, 0x00000020, (int)&rmesa->vb.vertex[6]); + FIXUP(dfn->code, 63, 0x00000024, (int)&rmesa->vb.vertex[7]); + FIXUP(dfn->code, 74, 0x00000000, (int)&rmesa->vb.dmaptr); + FIXUP(dfn->code, 79, 0x00000004, (int)&rmesa->vb.counter); + FIXUP(dfn->code, 85, 0x00000004, (int)&rmesa->vb.counter); + FIXUP(dfn->code, 94, 0x00000008, (int)&rmesa->vb.notify); break; } @@ -169,13 +169,13 @@ default: { DFN ( _x86_Vertex3fv, rmesa->vb.dfn_cache.Vertex3fv ); - FIXUP(dfn->code, 8, 0x01010101, (int)&vb.dmaptr); - FIXUP(dfn->code, 32, 0x00000006, vb.vertex_size-3); - FIXUP(dfn->code, 37, 0x00000058, (int)&vb.vertex[3]); - FIXUP(dfn->code, 45, 0x01010101, (int)&vb.dmaptr); - FIXUP(dfn->code, 50, 0x02020202, (int)&vb.counter); - FIXUP(dfn->code, 58, 0x02020202, (int)&vb.counter); - FIXUP(dfn->code, 67, 0x0, (int)&vb.notify); + FIXUP(dfn->code, 8, 0x01010101, (int)&rmesa->vb.dmaptr); + FIXUP(dfn->code, 32, 0x00000006, rmesa->vb.vertex_size-3); + FIXUP(dfn->code, 37, 0x00000058, (int)&rmesa->vb.vertex[3]); + FIXUP(dfn->code, 45, 0x01010101, (int)&rmesa->vb.dmaptr); + FIXUP(dfn->code, 50, 0x02020202, (int)&rmesa->vb.counter); + FIXUP(dfn->code, 58, 0x02020202, (int)&rmesa->vb.counter); + FIXUP(dfn->code, 67, 0x0, (int)&rmesa->vb.notify); break; } } @@ -194,9 +194,9 @@ DFN ( _x86_Normal3fv, rmesa->vb.dfn_cache.Normal3fv ); - FIXUP2(dfn->code, i, 0x0, (int)vb.normalptr); - FIXUP2(dfn->code, i, 0x4, 4+(int)vb.normalptr); - FIXUP2(dfn->code, i, 0x8, 8+(int)vb.normalptr); + FIXUP2(dfn->code, i, 0x0, (int)rmesa->vb.normalptr); + FIXUP2(dfn->code, i, 0x4, 4+(int)rmesa->vb.normalptr); + FIXUP2(dfn->code, i, 0x8, 8+(int)rmesa->vb.normalptr); fprintf(stderr, "%s done\n", __FUNCTION__); return dfn; } @@ -210,7 +210,7 @@ fprintf(stderr, "%s 0x%08x\n", __FUNCTION__, key[0] ); DFN ( _x86_Normal3f, rmesa->vb.dfn_cache.Normal3f ); - FIXUP(dfn->code, 1, 0x12345678, (int)vb.normalptr); + FIXUP(dfn->code, 1, 0x12345678, (int)rmesa->vb.normalptr); return dfn; } @@ -225,17 +225,17 @@ if (VTX_COLOR(key[0],0) == R200_VTX_PK_RGBA) { DFN ( _x86_Color4ubv_ub, rmesa->vb.dfn_cache.Color4ubv); - FIXUP(dfn->code, 5, 0x12345678, (int)vb.colorptr); + FIXUP(dfn->code, 5, 0x12345678, (int)rmesa->vb.colorptr); return dfn; } else { DFN ( _x86_Color4ubv_4f, rmesa->vb.dfn_cache.Color4ubv); FIXUP(dfn->code, 2, 0x00000000, (int)_mesa_ubyte_to_float_color_tab); - FIXUP(dfn->code, 27, 0xdeadbeaf, (int)vb.floatcolorptr); - FIXUP(dfn->code, 33, 0xdeadbeaf, (int)vb.floatcolorptr+4); - FIXUP(dfn->code, 55, 0xdeadbeaf, (int)vb.floatcolorptr+8); - FIXUP(dfn->code, 61, 0xdeadbeaf, (int)vb.floatcolorptr+12); + FIXUP(dfn->code, 27, 0xdeadbeaf, (int)rmesa->vb.floatcolorptr); + FIXUP(dfn->code, 33, 0xdeadbeaf, (int)rmesa->vb.floatcolorptr+4); + FIXUP(dfn->code, 55, 0xdeadbeaf, (int)rmesa->vb.floatcolorptr+8); + FIXUP(dfn->code, 61, 0xdeadbeaf, (int)rmesa->vb.floatcolorptr+12); return dfn; } } @@ -250,10 +250,10 @@ r200ContextPtr rmesa = R200_CONTEXT(ctx); DFN ( _x86_Color4ub_ub, rmesa->vb.dfn_cache.Color4ub ); - 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); + FIXUP(dfn->code, 18, 0x0, (int)rmesa->vb.colorptr); + FIXUP(dfn->code, 24, 0x0, (int)rmesa->vb.colorptr+1); + FIXUP(dfn->code, 30, 0x0, (int)rmesa->vb.colorptr+2); + FIXUP(dfn->code, 36, 0x0, (int)rmesa->vb.colorptr+3); return dfn; } else @@ -274,7 +274,7 @@ fprintf(stderr, "%s 0x%08x\n", __FUNCTION__, key[0] ); DFN ( _x86_Color3fv_3f, rmesa->vb.dfn_cache.Color3fv ); - FIXUP(dfn->code, 5, 0x0, (int)vb.floatcolorptr); + FIXUP(dfn->code, 5, 0x0, (int)rmesa->vb.floatcolorptr); return dfn; } } @@ -292,7 +292,7 @@ fprintf(stderr, "%s 0x%08x\n", __FUNCTION__, key[0] ); DFN ( _x86_Color3f_3f, rmesa->vb.dfn_cache.Color3f ); - FIXUP(dfn->code, 1, 0x12345678, (int)vb.floatcolorptr); + FIXUP(dfn->code, 1, 0x12345678, (int)rmesa->vb.floatcolorptr); return dfn; } } @@ -309,7 +309,7 @@ fprintf(stderr, "%s 0x%08x 0x%08x\n", __FUNCTION__, key[0], key[1] ); DFN ( _x86_TexCoord2fv, rmesa->vb.dfn_cache.TexCoord2fv ); - FIXUP(dfn->code, 5, 0x12345678, (int)vb.texcoordptr[0]); + FIXUP(dfn->code, 5, 0x12345678, (int)rmesa->vb.texcoordptr[0]); return dfn; } @@ -323,7 +323,7 @@ fprintf(stderr, "%s 0x%08x 0x%08x\n", __FUNCTION__, key[0], key[1] ); DFN ( _x86_TexCoord2f, rmesa->vb.dfn_cache.TexCoord2f ); - FIXUP(dfn->code, 1, 0x12345678, (int)vb.texcoordptr[0]); + FIXUP(dfn->code, 1, 0x12345678, (int)rmesa->vb.texcoordptr[0]); return dfn; } @@ -362,13 +362,13 @@ if (R200_DEBUG & DEBUG_CODEGEN) fprintf(stderr, "%s 0x%08x 0x%08x\n", __FUNCTION__, key[0], key[1] ); - if (vb.texcoordptr[1] == vb.texcoordptr[0]+4) { + if (rmesa->vb.texcoordptr[1] == rmesa->vb.texcoordptr[0]+4) { DFN ( _x86_MultiTexCoord2fvARB, rmesa->vb.dfn_cache.MultiTexCoord2fvARB ); - FIXUP(dfn->code, 26, 0xdeadbeef, (int)vb.texcoordptr[0]); - FIXUP(dfn->code, 32, 0xdeadbeef, (int)vb.texcoordptr[0]+4); + FIXUP(dfn->code, 26, 0xdeadbeef, (int)rmesa->vb.texcoordptr[0]); + FIXUP(dfn->code, 32, 0xdeadbeef, (int)rmesa->vb.texcoordptr[0]+4); } else { DFN ( _x86_MultiTexCoord2fvARB_2, rmesa->vb.dfn_cache.MultiTexCoord2fvARB ); - FIXUP(dfn->code, 19, 0x0, (int)vb.texcoordptr); + FIXUP(dfn->code, 19, 0x0, (int)rmesa->vb.texcoordptr); } return dfn; } @@ -407,17 +407,17 @@ if (R200_DEBUG & DEBUG_CODEGEN) fprintf(stderr, "%s 0x%08x 0x%08x\n", __FUNCTION__, key[0], key[1] ); - if (vb.texcoordptr[1] == vb.texcoordptr[0]+4) { + if (rmesa->vb.texcoordptr[1] == rmesa->vb.texcoordptr[0]+4) { DFN ( _x86_MultiTexCoord2fARB, rmesa->vb.dfn_cache.MultiTexCoord2fARB ); - FIXUP(dfn->code, 25, 0xdeadbeef, (int)vb.texcoordptr[0]); - FIXUP(dfn->code, 31, 0xdeadbeef, (int)vb.texcoordptr[0]+4); + FIXUP(dfn->code, 25, 0xdeadbeef, (int)rmesa->vb.texcoordptr[0]); + FIXUP(dfn->code, 31, 0xdeadbeef, (int)rmesa->vb.texcoordptr[0]+4); } else { /* Note: this might get generated multiple times, even though the * actual emitted code is the same. */ DFN ( _x86_MultiTexCoord2fARB_2, rmesa->vb.dfn_cache.MultiTexCoord2fARB ); - FIXUP(dfn->code, 23, 0x0, (int)vb.texcoordptr); + FIXUP(dfn->code, 23, 0x0, (int)rmesa->vb.texcoordptr); } return dfn; }