diff options
author | idr <idr> | 2003-04-04 02:59:44 +0000 |
---|---|---|
committer | idr <idr> | 2003-04-04 02:59:44 +0000 |
commit | b4822972522a7bc360e36b924785ce1a0b348771 (patch) | |
tree | e11b082416fa11eba9c4b56800cacaaa9dcc1e02 | |
parent | b75e30d125b52a3b02d7c7f4e4e175b504d1bb37 (diff) |
Second part of trunk-to-branch merge.
-rw-r--r-- | xc/config/cf/NetBSD.cf | 2 | ||||
-rw-r--r-- | xc/config/cf/X11.tmpl | 16 | ||||
-rw-r--r-- | xc/config/cf/host.def | 3 | ||||
-rw-r--r-- | xc/lib/GL/mesa/src/drv/r200/r200_context.h | 24 | ||||
-rw-r--r-- | xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt.c | 275 | ||||
-rw-r--r-- | xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt.h | 3 | ||||
-rw-r--r-- | xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt_c.c | 276 | ||||
-rw-r--r-- | xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt_sse.c | 36 | ||||
-rw-r--r-- | xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt_x86.c | 159 | ||||
-rw-r--r-- | xc/lib/GL/mesa/src/drv/radeon/radeon_context.c | 8 | ||||
-rw-r--r-- | xc/lib/GL/mesa/src/drv/radeon/radeon_context.h | 27 | ||||
-rw-r--r-- | xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt.c | 255 | ||||
-rw-r--r-- | xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt.h | 6 | ||||
-rw-r--r-- | xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt_c.c | 273 | ||||
-rw-r--r-- | xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt_sse.c | 32 | ||||
-rw-r--r-- | xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt_x86.c | 155 | ||||
-rw-r--r-- | xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_vm.h | 5 |
17 files changed, 827 insertions, 728 deletions
diff --git a/xc/config/cf/NetBSD.cf b/xc/config/cf/NetBSD.cf index 9594cc38d..fb2ba8965 100644 --- a/xc/config/cf/NetBSD.cf +++ b/xc/config/cf/NetBSD.cf @@ -553,7 +553,9 @@ InstallManPageAliasesBase(file,destdir,aliases) #endif /* HasSharedLibraries */ /* Always build the XInput library, regardless of server support on this plattform */ +#ifndef BuildXInputLib #define BuildXInputLib YES +#endif #if defined(i386Architecture) || defined(Arm32Architecture) || defined(AlphaArchitecture) || defined(PpcArchitecture) # include <xfree86.cf> diff --git a/xc/config/cf/X11.tmpl b/xc/config/cf/X11.tmpl index a6943eb7b..9358be60b 100644 --- a/xc/config/cf/X11.tmpl +++ b/xc/config/cf/X11.tmpl @@ -2181,14 +2181,14 @@ ProjectUnsharedLibReferences(XTHRSTUB,XThrStub,$(XTHRSTUBSRC),XBuildLibDir) #define GLwUseXmStubs NO /* create stub (weak) Motif symbols */ #endif #else -#undef SharedLibGlw -#define SharedLibGlw NO -#undef NormalLibGlw -#define NormalLibGlw NO -#undef DebugLibGlw -#define DebugLibGlw NO -#undef ProfileLibGlw -#define ProfileLibGlw NO +#undef SharedLibGLw +#define SharedLibGLw NO +#undef NormalLibGLw +#define NormalLibGLw NO +#undef DebugLibGLw +#define DebugLibGLw NO +#undef ProfileLibGLw +#define ProfileLibGLw NO #endif #ifndef SharedLibXext diff --git a/xc/config/cf/host.def b/xc/config/cf/host.def index f0f41a99a..eb2c3eb55 100644 --- a/xc/config/cf/host.def +++ b/xc/config/cf/host.def @@ -62,7 +62,7 @@ /* #define GlxBuiltInMga YES */ /* #define GlxBuiltInR128 YES */ /* #define GlxBuiltInRadeon YES */ -/* #define DoLoadableServer NO */ +#define DoLoadableServer YES /* Optionally turn this on to change the place where you install the build. * Warning: trailing blanks will cause build failures. @@ -88,6 +88,7 @@ #define BuildLibrariesForXServers NO #define BuildLibrariesForConfigTools NO #define BuildGLXLibrary YES +#define BuildXInputLib NO #define BuildXIE NO #define BuildPexExt NO #define XprtServer NO diff --git a/xc/lib/GL/mesa/src/drv/r200/r200_context.h b/xc/lib/GL/mesa/src/drv/r200/r200_context.h index 7ef17c32d..3c04c0cd8 100644 --- a/xc/lib/GL/mesa/src/drv/r200/r200_context.h +++ b/xc/lib/GL/mesa/src/drv/r200/r200_context.h @@ -46,6 +46,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "macros.h" #include "mtypes.h" +#include "colormac.h" #include "r200_reg.h" #define ENABLE_HW_3D_TEXTURE 0 /* XXX this is temporary! */ @@ -682,8 +683,6 @@ struct dfn_lists { struct dynfn MultiTexCoord1fvARB; }; -struct _vb; - struct dfn_generators { struct dynfn *(*Vertex2f)( GLcontext *, const int * ); struct dynfn *(*Vertex2fv)( GLcontext *, const int * ); @@ -714,9 +713,14 @@ struct dfn_generators { }; -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 ); @@ -741,23 +745,13 @@ struct r200_vb { 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; /* *_NO_VTXFMT / *_NO_TCL env vars */ GLboolean installed; GLboolean fell_back; GLboolean recheck; - GLint initial_counter; GLint nrverts; GLuint vtxfmt_0, vtxfmt_1; diff --git a/xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt.c b/xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt.c index c0f70436e..81d2bfab1 100644 --- a/xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt.c +++ b/xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt.c @@ -47,7 +47,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "api_noop.h" #include "api_arrayelt.h" #include "context.h" -#include "mmath.h" #include "mtypes.h" #include "enums.h" #include "glapi.h" @@ -60,8 +59,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #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 ) @@ -108,33 +105,32 @@ void r200_copy_to_current( GLcontext *ctx ) r200ContextPtr rmesa = R200_CONTEXT(ctx); assert(ctx->Driver.NeedFlush & FLUSH_UPDATE_CURRENT); - assert(vb.context == ctx); if (rmesa->vb.vtxfmt_0 & R200_VTX_N0) { - ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0] = vb.normalptr[0]; - ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1] = vb.normalptr[1]; - ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2] = vb.normalptr[2]; + ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0] = rmesa->vb.normalptr[0]; + ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1] = rmesa->vb.normalptr[1]; + ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2] = rmesa->vb.normalptr[2]; } switch( VTX_COLOR(rmesa->vb.vtxfmt_0, 0) ) { case R200_VTX_PK_RGBA: - ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0] = UBYTE_TO_FLOAT( vb.colorptr->red ); - ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1] = UBYTE_TO_FLOAT( vb.colorptr->green ); - ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2] = UBYTE_TO_FLOAT( vb.colorptr->blue ); - ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3] = UBYTE_TO_FLOAT( vb.colorptr->alpha ); + ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0] = UBYTE_TO_FLOAT( rmesa->vb.colorptr->red ); + ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1] = UBYTE_TO_FLOAT( rmesa->vb.colorptr->green ); + ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2] = UBYTE_TO_FLOAT( rmesa->vb.colorptr->blue ); + ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3] = UBYTE_TO_FLOAT( rmesa->vb.colorptr->alpha ); break; case R200_VTX_FP_RGB: - ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0] = vb.floatcolorptr[0]; - ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1] = vb.floatcolorptr[1]; - ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2] = vb.floatcolorptr[2]; + ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0] = rmesa->vb.floatcolorptr[0]; + ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1] = rmesa->vb.floatcolorptr[1]; + ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2] = rmesa->vb.floatcolorptr[2]; break; case R200_VTX_FP_RGBA: - ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0] = vb.floatcolorptr[0]; - ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1] = vb.floatcolorptr[1]; - ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2] = vb.floatcolorptr[2]; - ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3] = vb.floatcolorptr[3]; + ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0] = rmesa->vb.floatcolorptr[0]; + ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1] = rmesa->vb.floatcolorptr[1]; + ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2] = rmesa->vb.floatcolorptr[2]; + ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3] = rmesa->vb.floatcolorptr[3]; break; default: @@ -142,21 +138,21 @@ void r200_copy_to_current( GLcontext *ctx ) } if (VTX_COLOR(rmesa->vb.vtxfmt_0, 1) == R200_VTX_PK_RGBA) { - ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0] = UBYTE_TO_FLOAT( vb.specptr->red ); - ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1] = UBYTE_TO_FLOAT( vb.specptr->green ); - ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2] = UBYTE_TO_FLOAT( vb.specptr->blue ); + ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0] = UBYTE_TO_FLOAT( rmesa->vb.specptr->red ); + ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1] = UBYTE_TO_FLOAT( rmesa->vb.specptr->green ); + ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2] = UBYTE_TO_FLOAT( rmesa->vb.specptr->blue ); } if (rmesa->vb.vtxfmt_1 & (7 << R200_VTX_TEX0_COMP_CNT_SHIFT)) { - ctx->Current.Attrib[VERT_ATTRIB_TEX0][0] = vb.texcoordptr[0][0]; - ctx->Current.Attrib[VERT_ATTRIB_TEX0][1] = vb.texcoordptr[0][1]; + ctx->Current.Attrib[VERT_ATTRIB_TEX0][0] = rmesa->vb.texcoordptr[0][0]; + ctx->Current.Attrib[VERT_ATTRIB_TEX0][1] = rmesa->vb.texcoordptr[0][1]; ctx->Current.Attrib[VERT_ATTRIB_TEX0][2] = 0.0F; ctx->Current.Attrib[VERT_ATTRIB_TEX0][3] = 1.0F; } if (rmesa->vb.vtxfmt_1 & (7 << R200_VTX_TEX1_COMP_CNT_SHIFT)) { - ctx->Current.Attrib[VERT_ATTRIB_TEX1][0] = vb.texcoordptr[1][0]; - ctx->Current.Attrib[VERT_ATTRIB_TEX1][1] = vb.texcoordptr[1][1]; + ctx->Current.Attrib[VERT_ATTRIB_TEX1][0] = rmesa->vb.texcoordptr[1][0]; + ctx->Current.Attrib[VERT_ATTRIB_TEX1][1] = rmesa->vb.texcoordptr[1][1]; ctx->Current.Attrib[VERT_ATTRIB_TEX1][2] = 0.0F; ctx->Current.Attrib[VERT_ATTRIB_TEX1][3] = 1.0F; } @@ -183,12 +179,13 @@ static void flush_prims( r200ContextPtr rmesa ) 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; @@ -231,7 +228,7 @@ static void flush_prims( r200ContextPtr rmesa ) 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 ); @@ -245,20 +242,24 @@ static void flush_prims( r200ContextPtr rmesa ) 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 ); @@ -272,12 +273,12 @@ static void copy_vertex( r200ContextPtr rmesa, GLuint n, GLfloat *dst ) 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]; } } @@ -289,7 +290,8 @@ static void copy_vertex( r200ContextPtr rmesa, GLuint n, GLfloat *dst ) 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); @@ -353,7 +355,7 @@ static GLuint copy_dma_verts( r200ContextPtr rmesa, GLfloat (*tmp)[15] ) 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)) @@ -371,13 +373,12 @@ static void VFMT_FALLBACK_OUTSIDE_BEGIN_END( const char *caller ) 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; @@ -413,7 +414,6 @@ static void VFMT_FALLBACK( const char *caller ) 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) @@ -462,50 +462,51 @@ static void VFMT_FALLBACK( const char *caller ) /* 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; } @@ -534,12 +535,12 @@ static void wrap_buffer( void ) /* 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; @@ -554,15 +555,15 @@ static void wrap_buffer( void ) 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--; } } @@ -650,71 +651,71 @@ static GLboolean check_vtx_fmt( GLcontext *ctx ) rmesa->vb.vtxfmt_1 = ind1; rmesa->vb.prim = &ctx->Driver.CurrentExecPrimitive; - vb.vertex_size = 3; - vb.normalptr = ctx->Current.Attrib[VERT_ATTRIB_NORMAL]; - vb.colorptr = NULL; - vb.floatcolorptr = ctx->Current.Attrib[VERT_ATTRIB_COLOR0]; - vb.specptr = NULL; - vb.floatspecptr = ctx->Current.Attrib[VERT_ATTRIB_COLOR1]; - vb.texcoordptr[0] = ctx->Current.Attrib[VERT_ATTRIB_TEX0]; - vb.texcoordptr[1] = ctx->Current.Attrib[VERT_ATTRIB_TEX1]; + rmesa->vb.vertex_size = 3; + rmesa->vb.normalptr = ctx->Current.Attrib[VERT_ATTRIB_NORMAL]; + rmesa->vb.colorptr = NULL; + rmesa->vb.floatcolorptr = ctx->Current.Attrib[VERT_ATTRIB_COLOR0]; + rmesa->vb.specptr = NULL; + rmesa->vb.floatspecptr = ctx->Current.Attrib[VERT_ATTRIB_COLOR1]; + rmesa->vb.texcoordptr[0] = ctx->Current.Attrib[VERT_ATTRIB_TEX0]; + rmesa->vb.texcoordptr[1] = ctx->Current.Attrib[VERT_ATTRIB_TEX1]; /* 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.Attrib[VERT_ATTRIB_NORMAL][0]; - vb.normalptr[1] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]; - vb.normalptr[2] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]; + rmesa->vb.normalptr = &rmesa->vb.vertex[rmesa->vb.vertex_size].f; + rmesa->vb.vertex_size += 3; + rmesa->vb.normalptr[0] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]; + rmesa->vb.normalptr[1] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]; + rmesa->vb.normalptr[2] = ctx->Current.Attrib[VERT_ATTRIB_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.Attrib[VERT_ATTRIB_COLOR0][0] ); - UNCLAMPED_FLOAT_TO_CHAN( vb.colorptr->green, ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1] ); - UNCLAMPED_FLOAT_TO_CHAN( vb.colorptr->blue, ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2] ); - UNCLAMPED_FLOAT_TO_CHAN( vb.colorptr->alpha, ctx->Current.Attrib[VERT_ATTRIB_COLOR0][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.Attrib[VERT_ATTRIB_COLOR0][0] ); + UNCLAMPED_FLOAT_TO_CHAN( rmesa->vb.colorptr->green, ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1] ); + UNCLAMPED_FLOAT_TO_CHAN( rmesa->vb.colorptr->blue, ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2] ); + UNCLAMPED_FLOAT_TO_CHAN( rmesa->vb.colorptr->alpha, ctx->Current.Attrib[VERT_ATTRIB_COLOR0][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.Attrib[VERT_ATTRIB_COLOR0][0]; - vb.floatcolorptr[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]; - vb.floatcolorptr[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]; - vb.floatcolorptr[3] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]; + rmesa->vb.floatcolorptr = &rmesa->vb.vertex[rmesa->vb.vertex_size].f; + rmesa->vb.vertex_size += 4; + rmesa->vb.floatcolorptr[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]; + rmesa->vb.floatcolorptr[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]; + rmesa->vb.floatcolorptr[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]; + rmesa->vb.floatcolorptr[3] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][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.Attrib[VERT_ATTRIB_COLOR0][0]; - vb.floatcolorptr[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]; - vb.floatcolorptr[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]; + rmesa->vb.floatcolorptr = &rmesa->vb.vertex[rmesa->vb.vertex_size].f; + rmesa->vb.vertex_size += 3; + rmesa->vb.floatcolorptr[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]; + rmesa->vb.floatcolorptr[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]; + rmesa->vb.floatcolorptr[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][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.Attrib[VERT_ATTRIB_COLOR1][0] ); - UNCLAMPED_FLOAT_TO_CHAN( vb.specptr->green, ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1] ); - UNCLAMPED_FLOAT_TO_CHAN( vb.specptr->blue, ctx->Current.Attrib[VERT_ATTRIB_COLOR1][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.Attrib[VERT_ATTRIB_COLOR1][0] ); + UNCLAMPED_FLOAT_TO_CHAN( rmesa->vb.specptr->green, ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1] ); + UNCLAMPED_FLOAT_TO_CHAN( rmesa->vb.specptr->blue, ctx->Current.Attrib[VERT_ATTRIB_COLOR1][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.Attrib[VERT_ATTRIB_TEX0][0]; - vb.texcoordptr[0][1] = ctx->Current.Attrib[VERT_ATTRIB_TEX0][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.Attrib[VERT_ATTRIB_TEX0][0]; + rmesa->vb.texcoordptr[0][1] = ctx->Current.Attrib[VERT_ATTRIB_TEX0][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.Attrib[VERT_ATTRIB_TEX1][0]; - vb.texcoordptr[1][1] = ctx->Current.Attrib[VERT_ATTRIB_TEX1][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.Attrib[VERT_ATTRIB_TEX1][0]; + rmesa->vb.texcoordptr[1][1] = ctx->Current.Attrib[VERT_ATTRIB_TEX1][1]; } if (rmesa->vb.installed_vertex_format != rmesa->vb.vtxfmt_0) { @@ -767,7 +768,6 @@ static void r200VtxfmtValidate( GLcontext *ctx ) 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__); @@ -782,7 +782,6 @@ static void r200VtxfmtValidate( GLcontext *ctx ) _tnl_wakeup_exec( ctx ); ctx->Driver.FlushVertices = r200FlushVertices; rmesa->vb.installed = GL_FALSE; - vb.context = 0; } } } @@ -794,7 +793,7 @@ static void r200VtxfmtValidate( GLcontext *ctx ) 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) @@ -806,7 +805,7 @@ static void r200_Materialfv( GLenum face, GLenum pname, return; } _mesa_noop_Materialfv( face, pname, params ); - r200UpdateMaterial( vb.context ); + r200UpdateMaterial( ctx ); } @@ -814,7 +813,7 @@ static void r200_Materialfv( GLenum face, GLenum pname, */ static void r200_Begin( GLenum mode ) { - GLcontext *ctx = vb.context; + GET_CURRENT_CONTEXT(ctx); r200ContextPtr rmesa = R200_CONTEXT(ctx); if (R200_DEBUG & DEBUG_VFMT) @@ -846,7 +845,7 @@ static void r200_Begin( GLenum mode ) } - 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 ); @@ -855,20 +854,20 @@ static void r200_Begin( GLenum mode ) /* 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; } @@ -880,7 +879,7 @@ static void r200_Begin( GLenum mode ) static void r200_End( void ) { - GLcontext *ctx = vb.context; + GET_CURRENT_CONTEXT(ctx); r200ContextPtr rmesa = R200_CONTEXT(ctx); if (R200_DEBUG & DEBUG_VFMT) @@ -948,7 +947,6 @@ static void r200VtxFmtFlushVertices( GLcontext *ctx, GLuint flags ) fprintf(stderr, "%s\n", __FUNCTION__); assert(rmesa->vb.installed); - assert(vb.context == ctx); if (flags & FLUSH_UPDATE_CURRENT) { r200_copy_to_current( ctx ); @@ -959,11 +957,10 @@ static void r200VtxFmtFlushVertices( GLcontext *ctx, GLuint flags ) } 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; } } @@ -1041,7 +1038,6 @@ void r200VtxfmtInit( GLcontext *ctx ) TNL_CONTEXT(ctx)->Driver.NotifyBegin = r200NotifyBegin; - vb.context = ctx; rmesa->vb.enabled = 1; rmesa->vb.prim = &ctx->Driver.CurrentExecPrimitive; rmesa->vb.primflags = 0; @@ -1088,34 +1084,11 @@ static void free_funcs( struct dynfn *l ) 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) - /* Insider knowledge: this value is zero when multithreading has - * been detected. - */ - if (_glapi_Context == 0) { - if (R200_DEBUG & (DEBUG_DRI|DEBUG_VFMT)) - fprintf(stderr, "**** Multithreading: disabling vtxfmt!\n"); - TNL_CONTEXT(ctx)->Driver.NotifyBegin = 0; - return; - } -#endif - - if (rmesa->vb.enabled) { - TNL_CONTEXT(ctx)->Driver.NotifyBegin = r200NotifyBegin; - } } diff --git a/xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt.h b/xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt.h index 4f0aeb8c6..fde3eca46 100644 --- a/xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt.h +++ b/xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt.h @@ -43,9 +43,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -extern struct r200_vb vb; - - extern void r200VtxfmtUpdate( GLcontext *ctx ); extern void r200VtxfmtInit( GLcontext *ctx ); extern void r200VtxfmtInvalidate( GLcontext *ctx ); diff --git a/xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt_c.c b/xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt_c.c index 759cf696c..b7f3fec43 100644 --- a/xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt_c.c +++ b/xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt_c.c @@ -50,65 +50,73 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ 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; + + *rmesa->vb.dmaptr++ = *(int *)&x; + *rmesa->vb.dmaptr++ = *(int *)&y; + *rmesa->vb.dmaptr++ = 0; - *vb.dmaptr++ = *(int *)&x; - *vb.dmaptr++ = *(int *)&y; - *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(); } @@ -117,7 +125,9 @@ static void r200_Vertex2fv( const GLfloat *v ) */ 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; @@ -126,7 +136,9 @@ static void r200_Color3ub_ub( GLubyte r, GLubyte g, GLubyte b ) 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]; @@ -135,7 +147,9 @@ static void r200_Color3ubv_ub( const GLubyte *v ) 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; @@ -144,13 +158,17 @@ static void r200_Color4ub_ub( GLubyte r, GLubyte g, GLubyte b, GLubyte a ) 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 ); @@ -159,7 +177,9 @@ static void r200_Color3f_ub( GLfloat r, GLfloat g, GLfloat b ) 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] ); @@ -168,7 +188,9 @@ static void r200_Color3fv_ub( const GLfloat *v ) 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 ); @@ -177,7 +199,9 @@ static void r200_Color4f_ub( GLfloat r, GLfloat g, GLfloat b, GLfloat a ) 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] ); @@ -189,7 +213,9 @@ static void r200_Color4fv_ub( const GLfloat *v ) */ 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); @@ -198,7 +224,9 @@ static void r200_Color3ub_4f( GLubyte r, GLubyte g, GLubyte b ) 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]); @@ -207,7 +235,9 @@ static void r200_Color3ubv_4f( const GLubyte *v ) 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); @@ -216,7 +246,9 @@ static void r200_Color4ub_4f( GLubyte r, GLubyte g, GLubyte b, GLubyte a ) 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]); @@ -226,7 +258,9 @@ static void r200_Color4ubv_4f( const GLubyte *v ) 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; @@ -235,7 +269,9 @@ static void r200_Color3f_4f( GLfloat r, GLfloat g, GLfloat b ) 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]; @@ -244,7 +280,9 @@ static void r200_Color3fv_4f( const GLfloat *v ) 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; @@ -253,7 +291,9 @@ static void r200_Color4f_4f( GLfloat r, GLfloat g, GLfloat b, GLfloat a ) 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]; @@ -265,7 +305,9 @@ static void r200_Color4fv_4f( const GLfloat *v ) */ 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); @@ -273,7 +315,9 @@ static void r200_Color3ub_3f( GLubyte r, GLubyte g, GLubyte b ) 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]); @@ -281,26 +325,32 @@ static void r200_Color3ubv_3f( const GLubyte *v ) 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.Attrib[VERT_ATTRIB_COLOR0][3] = UBYTE_TO_FLOAT(a); + ctx->Current.Attrib[VERT_ATTRIB_COLOR0][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.Attrib[VERT_ATTRIB_COLOR0][3] = UBYTE_TO_FLOAT(v[3]); + ctx->Current.Attrib[VERT_ATTRIB_COLOR0][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; @@ -308,7 +358,9 @@ static void r200_Color3f_3f( GLfloat r, GLfloat g, GLfloat b ) 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]; @@ -316,20 +368,24 @@ static void r200_Color3fv_3f( const GLfloat *v ) 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.Attrib[VERT_ATTRIB_COLOR0][3] = a; + ctx->Current.Attrib[VERT_ATTRIB_COLOR0][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.Attrib[VERT_ATTRIB_COLOR0][3] = v[3]; + ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3] = v[3]; } @@ -337,7 +393,9 @@ static void r200_Color4fv_3f( const GLfloat *v ) */ 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; @@ -346,7 +404,9 @@ static void r200_SecondaryColor3ubEXT_ub( GLubyte r, GLubyte g, GLubyte b ) 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]; @@ -355,7 +415,9 @@ static void r200_SecondaryColor3ubvEXT_ub( const GLubyte *v ) 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 ); @@ -364,7 +426,9 @@ static void r200_SecondaryColor3fEXT_ub( GLfloat r, GLfloat g, GLfloat b ) 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] ); @@ -373,7 +437,9 @@ static void r200_SecondaryColor3fvEXT_ub( const GLfloat *v ) 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); @@ -382,7 +448,9 @@ static void r200_SecondaryColor3ubEXT_3f( GLubyte r, GLubyte g, GLubyte b ) 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]); @@ -391,7 +459,9 @@ static void r200_SecondaryColor3ubvEXT_3f( const GLubyte *v ) 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; @@ -400,7 +470,9 @@ static void r200_SecondaryColor3fEXT_3f( GLfloat r, GLfloat g, GLfloat b ) 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]; @@ -413,7 +485,9 @@ static void r200_SecondaryColor3fvEXT_3f( const GLfloat *v ) */ 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; @@ -421,7 +495,9 @@ static void r200_Normal3f( GLfloat n0, GLfloat n1, GLfloat n2 ) 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]; @@ -432,28 +508,36 @@ static void r200_Normal3fv( const GLfloat *v ) */ 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]; } @@ -471,28 +555,36 @@ static void r200_TexCoord2fv( const GLfloat *v ) static void r200_MultiTexCoord1fARB( GLenum target, GLfloat s ) { - GLfloat *dest = vb.texcoordptr[target & 1]; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.texcoordptr[target & 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 & 1]; dest[0] = v[0]; dest[1] = 0; } static void r200_MultiTexCoord2fARB( GLenum target, GLfloat s, GLfloat t ) { - GLfloat *dest = vb.texcoordptr[target & 1]; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.texcoordptr[target & 1]; dest[0] = s; dest[1] = t; } static void r200_MultiTexCoord2fvARB( GLenum target, const GLfloat *v ) { - GLfloat *dest = vb.texcoordptr[target & 1]; + GET_CURRENT_CONTEXT(ctx); + r200ContextPtr rmesa = R200_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.texcoordptr[target & 1]; dest[0] = v[0]; dest[1] = v[1]; } @@ -515,29 +607,30 @@ static struct dynfn *lookup( struct dynfn *l, const int *key ) #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; \ } @@ -552,8 +645,8 @@ static void choose_##FN ARGS1 \ #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; \ \ @@ -609,7 +702,8 @@ static void choose_##FN ARGS1 \ #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; \ \ @@ -618,21 +712,21 @@ static void choose_##FN ARGS1 \ \ 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 --git a/xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt_sse.c b/xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt_sse.c index 0b9470ee0..83eb3e13b 100644 --- a/xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt_sse.c +++ b/xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt_sse.c @@ -117,16 +117,16 @@ static struct dynfn *r200_makeSSENormal3fv( GLcontext *ctx, const int *key ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); - return r200_makeSSEAttribute3fv( & rmesa->vb.dfn_cache.Normal3fv, - key, __FUNCTION__, vb.normalptr ); + return r200_makeSSEAttribute3fv( & rmesa->vb.dfn_cache.Normal3fv, key, + __FUNCTION__, rmesa->vb.normalptr ); } static struct dynfn *r200_makeSSENormal3f( GLcontext *ctx, const int * key ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); - return r200_makeSSEAttribute3f( & rmesa->vb.dfn_cache.Normal3f, - key, __FUNCTION__, vb.normalptr ); + return r200_makeSSEAttribute3f( & rmesa->vb.dfn_cache.Normal3f, key, + __FUNCTION__, rmesa->vb.normalptr ); } static struct dynfn *r200_makeSSEColor3fv( GLcontext *ctx, const int * key ) @@ -137,8 +137,8 @@ static struct dynfn *r200_makeSSEColor3fv( GLcontext *ctx, const int * key ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); - return r200_makeSSEAttribute3fv( & rmesa->vb.dfn_cache.Color3fv, - key, __FUNCTION__, vb.floatcolorptr ); + return r200_makeSSEAttribute3fv( & rmesa->vb.dfn_cache.Color3fv, key, + __FUNCTION__, rmesa->vb.floatcolorptr ); } } @@ -150,8 +150,8 @@ static struct dynfn *r200_makeSSEColor3f( GLcontext *ctx, const int * key ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); - return r200_makeSSEAttribute3f( & rmesa->vb.dfn_cache.Color3f, - key, __FUNCTION__, vb.floatcolorptr ); + return r200_makeSSEAttribute3f( & rmesa->vb.dfn_cache.Color3f, key, + __FUNCTION__, rmesa->vb.floatcolorptr ); } } @@ -159,16 +159,16 @@ static struct dynfn *r200_makeSSETexCoord2fv( GLcontext *ctx, const int * key ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); - return r200_makeSSEAttribute2fv( & rmesa->vb.dfn_cache.TexCoord2fv, - key, __FUNCTION__, vb.texcoordptr[0] ); + return r200_makeSSEAttribute2fv( & rmesa->vb.dfn_cache.TexCoord2fv, key, + __FUNCTION__, rmesa->vb.texcoordptr[0] ); } static struct dynfn *r200_makeSSETexCoord2f( GLcontext *ctx, const int * key ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); - return r200_makeSSEAttribute2f( & rmesa->vb.dfn_cache.TexCoord2f, - key, __FUNCTION__, vb.texcoordptr[0] ); + return r200_makeSSEAttribute2f( & rmesa->vb.dfn_cache.TexCoord2f, key, + __FUNCTION__, rmesa->vb.texcoordptr[0] ); } static struct dynfn *r200_makeSSEMultiTexCoord2fv( GLcontext *ctx, const int * key ) @@ -179,12 +179,12 @@ static struct dynfn *r200_makeSSEMultiTexCoord2fv( GLcontext *ctx, const int * k if (R200_DEBUG & DEBUG_CODEGEN) fprintf(stderr, "%s 0x%08x\n", __FUNCTION__, key[0] ); - if (vb.texcoordptr[1] == vb.texcoordptr[0]+4) { + if (rmesa->vb.texcoordptr[1] == rmesa->vb.texcoordptr[0]+4) { DFN ( _sse_MultiTexCoord2fv, rmesa->vb.dfn_cache.MultiTexCoord2fvARB ); - FIXUP(dfn->code, 18, 0xdeadbeef, (int)vb.texcoordptr[0]); + FIXUP(dfn->code, 18, 0xdeadbeef, (int)rmesa->vb.texcoordptr[0]); } else { DFN ( _sse_MultiTexCoord2fv_2, rmesa->vb.dfn_cache.MultiTexCoord2fvARB ); - FIXUP(dfn->code, 14, 0x0, (int)vb.texcoordptr); + FIXUP(dfn->code, 14, 0x0, (int)rmesa->vb.texcoordptr); } return dfn; } @@ -197,12 +197,12 @@ static struct dynfn *r200_makeSSEMultiTexCoord2f( GLcontext *ctx, const int * ke if (R200_DEBUG & DEBUG_CODEGEN) fprintf(stderr, "%s 0x%08x\n", __FUNCTION__, key[0] ); - if (vb.texcoordptr[1] == vb.texcoordptr[0]+4) { + if (rmesa->vb.texcoordptr[1] == rmesa->vb.texcoordptr[0]+4) { DFN ( _sse_MultiTexCoord2f, rmesa->vb.dfn_cache.MultiTexCoord2fARB ); - FIXUP(dfn->code, 16, 0xdeadbeef, (int)vb.texcoordptr[0]); + FIXUP(dfn->code, 16, 0xdeadbeef, (int)rmesa->vb.texcoordptr[0]); } else { DFN ( _sse_MultiTexCoord2f_2, rmesa->vb.dfn_cache.MultiTexCoord2fARB ); - FIXUP(dfn->code, 15, 0x0, (int)vb.texcoordptr); + FIXUP(dfn->code, 15, 0x0, (int)rmesa->vb.texcoordptr); } return dfn; } diff --git a/xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt_x86.c b/xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt_x86.c index 67e5ac966..a806eca0b 100644 --- a/xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt_x86.c +++ b/xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt_x86.c @@ -36,7 +36,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "glheader.h" #include "imports.h" -#include "mmath.h" #include "simple_list.h" #include "r200_vtxfmt.h" @@ -76,43 +75,43 @@ struct dynfn *r200_makeX86Vertex3f( GLcontext *ctx, const int *key ) 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; } } @@ -129,20 +128,20 @@ struct dynfn *r200_makeX86Vertex3fv( GLcontext *ctx, const int *key ) 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; } @@ -150,16 +149,16 @@ struct dynfn *r200_makeX86Vertex3fv( GLcontext *ctx, const int *key ) 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; } @@ -168,13 +167,13 @@ struct dynfn *r200_makeX86Vertex3fv( GLcontext *ctx, const int *key ) 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; } } @@ -252,16 +251,16 @@ struct dynfn *r200_makeX86Normal3fv( GLcontext *ctx, const int *key ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); - return r200_makeX86Attribute3fv( & rmesa->vb.dfn_cache.Normal3fv, - key, __FUNCTION__, vb.normalptr ); + return r200_makeX86Attribute3fv( & rmesa->vb.dfn_cache.Normal3fv, key, + __FUNCTION__, rmesa->vb.normalptr ); } struct dynfn *r200_makeX86Normal3f( GLcontext *ctx, const int *key ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); - return r200_makeX86Attribute3f( & rmesa->vb.dfn_cache.Normal3f, - key, __FUNCTION__, vb.normalptr ); + return r200_makeX86Attribute3f( & rmesa->vb.dfn_cache.Normal3f, key, + __FUNCTION__, rmesa->vb.normalptr ); } struct dynfn *r200_makeX86Color4ubv( GLcontext *ctx, const int *key ) @@ -275,17 +274,17 @@ struct dynfn *r200_makeX86Color4ubv( GLcontext *ctx, const int *key ) 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; } } @@ -300,10 +299,10 @@ struct dynfn *r200_makeX86Color4ub( GLcontext *ctx, const int *key ) 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 @@ -319,8 +318,8 @@ struct dynfn *r200_makeX86Color3fv( GLcontext *ctx, const int *key ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); - return r200_makeX86Attribute3fv( & rmesa->vb.dfn_cache.Color3fv, - key, __FUNCTION__, vb.floatcolorptr ); + return r200_makeX86Attribute3fv( & rmesa->vb.dfn_cache.Color3fv, key, + __FUNCTION__, rmesa->vb.floatcolorptr ); } } @@ -332,8 +331,8 @@ struct dynfn *r200_makeX86Color3f( GLcontext *ctx, const int *key ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); - return r200_makeX86Attribute3f( & rmesa->vb.dfn_cache.Color3f, - key, __FUNCTION__, vb.floatcolorptr ); + return r200_makeX86Attribute3f( & rmesa->vb.dfn_cache.Color3f, key, + __FUNCTION__, rmesa->vb.floatcolorptr ); } } @@ -343,16 +342,16 @@ struct dynfn *r200_makeX86TexCoord2fv( GLcontext *ctx, const int *key ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); - return r200_makeX86Attribute2fv( & rmesa->vb.dfn_cache.TexCoord2fv, - key, __FUNCTION__, vb.texcoordptr[0] ); + return r200_makeX86Attribute2fv( & rmesa->vb.dfn_cache.TexCoord2fv, key, + __FUNCTION__, rmesa->vb.texcoordptr[0] ); } struct dynfn *r200_makeX86TexCoord2f( GLcontext *ctx, const int *key ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); - return r200_makeX86Attribute2f( & rmesa->vb.dfn_cache.TexCoord2f, - key, __FUNCTION__, vb.texcoordptr[0] ); + return r200_makeX86Attribute2f( & rmesa->vb.dfn_cache.TexCoord2f, key, + __FUNCTION__, rmesa->vb.texcoordptr[0] ); } struct dynfn *r200_makeX86MultiTexCoord2fvARB( GLcontext *ctx, const int *key ) @@ -363,13 +362,13 @@ struct dynfn *r200_makeX86MultiTexCoord2fvARB( GLcontext *ctx, const int *key ) 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_MultiTexCoord2fv, rmesa->vb.dfn_cache.MultiTexCoord2fvARB ); - FIXUP(dfn->code, 21, 0xdeadbeef, (int)vb.texcoordptr[0]); - FIXUP(dfn->code, 27, 0xdeadbeef, (int)vb.texcoordptr[0]+4); + FIXUP(dfn->code, 21, 0xdeadbeef, (int)rmesa->vb.texcoordptr[0]); + FIXUP(dfn->code, 27, 0xdeadbeef, (int)rmesa->vb.texcoordptr[0]+4); } else { DFN ( _x86_MultiTexCoord2fv_2, rmesa->vb.dfn_cache.MultiTexCoord2fvARB ); - FIXUP(dfn->code, 14, 0x0, (int)vb.texcoordptr); + FIXUP(dfn->code, 14, 0x0, (int)rmesa->vb.texcoordptr); } return dfn; } @@ -383,17 +382,17 @@ struct dynfn *r200_makeX86MultiTexCoord2fARB( GLcontext *ctx, 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_MultiTexCoord2f, rmesa->vb.dfn_cache.MultiTexCoord2fARB ); - FIXUP(dfn->code, 20, 0xdeadbeef, (int)vb.texcoordptr[0]); - FIXUP(dfn->code, 26, 0xdeadbeef, (int)vb.texcoordptr[0]+4); + FIXUP(dfn->code, 20, 0xdeadbeef, (int)rmesa->vb.texcoordptr[0]); + FIXUP(dfn->code, 26, 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_MultiTexCoord2f_2, rmesa->vb.dfn_cache.MultiTexCoord2fARB ); - FIXUP(dfn->code, 18, 0x0, (int)vb.texcoordptr); + FIXUP(dfn->code, 18, 0x0, (int)rmesa->vb.texcoordptr); } return dfn; } diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_context.c b/xc/lib/GL/mesa/src/drv/radeon/radeon_context.c index 6afc7309a..169be3dea 100644 --- a/xc/lib/GL/mesa/src/drv/radeon/radeon_context.c +++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_context.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_context.c,v 1.4 2002/09/10 00:39:39 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_context.c,v 1.7 2003/02/08 21:26:45 dawes Exp $ */ /************************************************************************** Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and @@ -343,8 +343,8 @@ radeonCreateContext( const __GLcontextModes *glVisual, * etc. */ ctx->Const.MaxArrayLockSize = - MIN2( ctx->Const.MaxArrayLockSize, - RADEON_BUFFER_SIZE / RADEON_MAX_TCL_VERTSIZE ); + MIN2( ctx->Const.MaxArrayLockSize, + RADEON_BUFFER_SIZE / RADEON_MAX_TCL_VERTSIZE ); rmesa->boxes = (getenv("LIBGL_PERFORMANCE_BOXES") != NULL); @@ -470,7 +470,6 @@ void radeonDestroyContext( __DRIcontextPrivate *driContextPriv ) radeonDestroySwtcl( rmesa->glCtx ); radeonReleaseArrays( rmesa->glCtx, ~0 ); - if (rmesa->dma.current.buf) { radeonReleaseDmaRegion( rmesa, &rmesa->dma.current, __FUNCTION__ ); radeonFlushCmdBuf( rmesa, __FUNCTION__ ); @@ -591,6 +590,5 @@ radeonUnbindContext( __DRIcontextPrivate *driContextPriv ) if (RADEON_DEBUG & DEBUG_DRI) fprintf(stderr, "%s ctx %p\n", __FUNCTION__, rmesa->glCtx); - radeonVtxfmtUnbindContext( rmesa->glCtx ); return GL_TRUE; } 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 11095c9f5..4004d3fe5 100644 --- a/xc/lib/GL/mesa/src/drv/radeon/radeon_context.h +++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_context.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_context.h,v 1.4 2002/09/10 00:39:39 dawes Exp $ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_context.h,v 1.6 2002/12/16 16:18:58 dawes Exp $ */ /************************************************************************** Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and @@ -51,6 +51,7 @@ typedef struct radeon_context *radeonContextPtr; #include "radeon_screen.h" #include "mm.h" #include "texmem.h" +#include "colormac.h" /* Flags for software fallback cases */ /* See correponding strings in radeon_swtcl.c */ @@ -584,8 +585,6 @@ struct dfn_lists { struct dynfn MultiTexCoord1fvARB; }; -struct _vb; - struct dfn_generators { struct dynfn *(*Vertex2f)( GLcontext *, int ); struct dynfn *(*Vertex2fv)( GLcontext *, int ); @@ -616,9 +615,14 @@ struct dfn_generators { }; -struct radeon_vb { - /* Keep these first: referenced from codegen templates: - */ + +struct radeon_prim { + GLuint start; + GLuint end; + GLuint prim; +}; + +struct radeon_vbinfo { GLint counter, initial_counter; GLint *dmaptr; void (*notify)( void ); @@ -643,23 +647,12 @@ struct radeon_vb { radeon_color_t *specptr; GLfloat *texcoordptr[2]; - GLcontext *context; /* current context : Single thread only! */ -}; - -struct radeon_prim { - GLuint start; - GLuint end; - GLuint prim; -}; - -struct radeon_vbinfo { GLenum *prim; /* &ctx->Driver.CurrentExecPrimitive */ GLuint primflags; GLboolean enabled; /* *_NO_VTXFMT / *_NO_TCL env vars */ GLboolean installed; GLboolean fell_back; GLboolean recheck; - GLint initial_counter; GLint nrverts; GLuint vertex_format; 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 e42d116d5..3d11518c1 100644 --- a/xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt.c +++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt.c @@ -37,7 +37,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "api_noop.h" #include "api_arrayelt.h" #include "context.h" -#include "mmath.h" #include "mtypes.h" #include "enums.h" #include "glapi.h" @@ -58,8 +57,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "radeon_swtcl.h" #include "radeon_vtxfmt.h" -struct radeon_vb vb; - static void radeonVtxfmtFlushVertices( GLcontext *, GLuint ); static void count_func( const char *name, struct dynfn *l ) @@ -106,46 +103,45 @@ void radeon_copy_to_current( GLcontext *ctx ) radeonContextPtr rmesa = RADEON_CONTEXT(ctx); assert(ctx->Driver.NeedFlush & FLUSH_UPDATE_CURRENT); - assert(vb.context == ctx); if (rmesa->vb.vertex_format & RADEON_CP_VC_FRMT_N0) { - ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0] = vb.normalptr[0]; - ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1] = vb.normalptr[1]; - ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2] = vb.normalptr[2]; + ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0] = rmesa->vb.normalptr[0]; + ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1] = rmesa->vb.normalptr[1]; + ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2] = rmesa->vb.normalptr[2]; } if (rmesa->vb.vertex_format & RADEON_CP_VC_FRMT_PKCOLOR) { - ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0] = UBYTE_TO_FLOAT( vb.colorptr->red ); - ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1] = UBYTE_TO_FLOAT( vb.colorptr->green ); - ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2] = UBYTE_TO_FLOAT( vb.colorptr->blue ); - ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3] = UBYTE_TO_FLOAT( vb.colorptr->alpha ); + ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0] = UBYTE_TO_FLOAT( rmesa->vb.colorptr->red ); + ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1] = UBYTE_TO_FLOAT( rmesa->vb.colorptr->green ); + ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2] = UBYTE_TO_FLOAT( rmesa->vb.colorptr->blue ); + ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3] = UBYTE_TO_FLOAT( rmesa->vb.colorptr->alpha ); } if (rmesa->vb.vertex_format & RADEON_CP_VC_FRMT_FPCOLOR) { - ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0] = vb.floatcolorptr[0]; - ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1] = vb.floatcolorptr[1]; - ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2] = vb.floatcolorptr[2]; + ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0] = rmesa->vb.floatcolorptr[0]; + ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1] = rmesa->vb.floatcolorptr[1]; + ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2] = rmesa->vb.floatcolorptr[2]; } if (rmesa->vb.vertex_format & RADEON_CP_VC_FRMT_FPALPHA) - ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3] = vb.floatcolorptr[3]; + ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3] = rmesa->vb.floatcolorptr[3]; if (rmesa->vb.vertex_format & RADEON_CP_VC_FRMT_PKSPEC) { - ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0] = UBYTE_TO_FLOAT( vb.specptr->red ); - ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1] = UBYTE_TO_FLOAT( vb.specptr->green ); - ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2] = UBYTE_TO_FLOAT( vb.specptr->blue ); + ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0] = UBYTE_TO_FLOAT( rmesa->vb.specptr->red ); + ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1] = UBYTE_TO_FLOAT( rmesa->vb.specptr->green ); + ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2] = UBYTE_TO_FLOAT( rmesa->vb.specptr->blue ); } if (rmesa->vb.vertex_format & RADEON_CP_VC_FRMT_ST0) { - ctx->Current.Attrib[VERT_ATTRIB_TEX0][0] = vb.texcoordptr[0][0]; - ctx->Current.Attrib[VERT_ATTRIB_TEX0][1] = vb.texcoordptr[0][1]; + ctx->Current.Attrib[VERT_ATTRIB_TEX0][0] = rmesa->vb.texcoordptr[0][0]; + ctx->Current.Attrib[VERT_ATTRIB_TEX0][1] = rmesa->vb.texcoordptr[0][1]; ctx->Current.Attrib[VERT_ATTRIB_TEX0][2] = 0.0F; ctx->Current.Attrib[VERT_ATTRIB_TEX0][3] = 1.0F; } if (rmesa->vb.vertex_format & RADEON_CP_VC_FRMT_ST1) { - ctx->Current.Attrib[VERT_ATTRIB_TEX1][0] = vb.texcoordptr[1][0]; - ctx->Current.Attrib[VERT_ATTRIB_TEX1][1] = vb.texcoordptr[1][1]; + ctx->Current.Attrib[VERT_ATTRIB_TEX1][0] = rmesa->vb.texcoordptr[1][0]; + ctx->Current.Attrib[VERT_ATTRIB_TEX1][1] = rmesa->vb.texcoordptr[1][1]; ctx->Current.Attrib[VERT_ATTRIB_TEX1][2] = 0.0F; ctx->Current.Attrib[VERT_ATTRIB_TEX1][3] = 1.0F; } @@ -172,12 +168,12 @@ static void flush_prims( radeonContextPtr rmesa ) struct radeon_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.vertex_format; rmesa->tcl.aos_components[0] = &tmp; @@ -211,7 +207,7 @@ static void flush_prims( radeonContextPtr rmesa ) rmesa->vb.primlist[i].start, rmesa->vb.primlist[i].end); - radeonEmitPrimitive( vb.context, + radeonEmitPrimitive( rmesa->glCtx, rmesa->vb.primlist[i].start, rmesa->vb.primlist[i].end, rmesa->vb.primlist[i].prim ); @@ -225,20 +221,20 @@ static void flush_prims( radeonContextPtr rmesa ) static void start_prim( radeonContextPtr rmesa, GLuint mode ) { if (RADEON_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( radeonContextPtr rmesa, GLuint flags ) { if (RADEON_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) == RADEON_MAX_PRIMS) flush_prims( rmesa ); @@ -252,12 +248,12 @@ static void copy_vertex( radeonContextPtr rmesa, GLuint n, GLfloat *dst ) 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 (RADEON_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]; } } @@ -269,7 +265,7 @@ static void copy_vertex( radeonContextPtr rmesa, GLuint n, GLfloat *dst ) static GLuint copy_dma_verts( radeonContextPtr 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 (RADEON_DEBUG & DEBUG_VFMT) fprintf(stderr, "%s %d verts\n", __FUNCTION__, nr); @@ -333,7 +329,7 @@ static GLuint copy_dma_verts( radeonContextPtr rmesa, GLfloat (*tmp)[15] ) static void VFMT_FALLBACK_OUTSIDE_BEGIN_END( const char *caller ) { - GLcontext *ctx = vb.context; + GET_CURRENT_CONTEXT(ctx); radeonContextPtr rmesa = RADEON_CONTEXT(ctx); if (RADEON_DEBUG & (DEBUG_VFMT|DEBUG_FALLBACKS)) @@ -351,13 +347,12 @@ static void VFMT_FALLBACK_OUTSIDE_BEGIN_END( const char *caller ) 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); radeonContextPtr rmesa = RADEON_CONTEXT(ctx); GLfloat tmp[3][15]; GLuint i, prim; @@ -392,7 +387,6 @@ static void VFMT_FALLBACK( const char *caller ) 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) @@ -442,50 +436,50 @@ static void VFMT_FALLBACK( const char *caller ) /* Replay current vertex */ if (ind & RADEON_CP_VC_FRMT_N0) - glNormal3fv( vb.normalptr ); + glNormal3fv( rmesa->vb.normalptr ); if (ind & RADEON_CP_VC_FRMT_PKCOLOR) - 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 (ind & RADEON_CP_VC_FRMT_FPALPHA) - glColor4fv( vb.floatcolorptr ); + glColor4fv( rmesa->vb.floatcolorptr ); else if (ind & RADEON_CP_VC_FRMT_FPCOLOR) { 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 (ind & RADEON_CP_VC_FRMT_PKSPEC) - _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 (ind & RADEON_CP_VC_FRMT_ST0) - glTexCoord2fv( vb.texcoordptr[0] ); + glTexCoord2fv( rmesa->vb.texcoordptr[0] ); if (ind & RADEON_CP_VC_FRMT_ST1) - 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); radeonContextPtr rmesa = RADEON_CONTEXT(ctx); GLfloat tmp[3][15]; GLuint i, nrverts; if (RADEON_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; } @@ -514,12 +508,12 @@ static void wrap_buffer( void ) /* 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; @@ -533,15 +527,15 @@ static void wrap_buffer( void ) for (i = 0 ; i < nrverts; i++) { if (RADEON_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 (RADEON_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--; } } @@ -625,71 +619,71 @@ static GLboolean check_vtx_fmt( GLcontext *ctx ) RADEON_NEWPRIM(rmesa); rmesa->vb.vertex_format = ind; - vb.vertex_size = 3; + rmesa->vb.vertex_size = 3; rmesa->vb.prim = &ctx->Driver.CurrentExecPrimitive; - vb.normalptr = ctx->Current.Attrib[VERT_ATTRIB_NORMAL]; - vb.colorptr = NULL; - vb.floatcolorptr = ctx->Current.Attrib[VERT_ATTRIB_COLOR0]; - vb.specptr = NULL; - vb.floatspecptr = ctx->Current.Attrib[VERT_ATTRIB_COLOR1]; - vb.texcoordptr[0] = ctx->Current.Attrib[VERT_ATTRIB_TEX0]; - vb.texcoordptr[1] = ctx->Current.Attrib[VERT_ATTRIB_TEX1]; + rmesa->vb.normalptr = ctx->Current.Attrib[VERT_ATTRIB_NORMAL]; + rmesa->vb.colorptr = NULL; + rmesa->vb.floatcolorptr = ctx->Current.Attrib[VERT_ATTRIB_COLOR0]; + rmesa->vb.specptr = NULL; + rmesa->vb.floatspecptr = ctx->Current.Attrib[VERT_ATTRIB_COLOR1]; + rmesa->vb.texcoordptr[0] = ctx->Current.Attrib[VERT_ATTRIB_TEX0]; + rmesa->vb.texcoordptr[1] = ctx->Current.Attrib[VERT_ATTRIB_TEX1]; /* Run through and initialize the vertex components in the order * the hardware understands: */ if (ind & RADEON_CP_VC_FRMT_N0) { - vb.normalptr = &vb.vertex[vb.vertex_size].f; - vb.vertex_size += 3; - vb.normalptr[0] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]; - vb.normalptr[1] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]; - vb.normalptr[2] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]; + rmesa->vb.normalptr = &rmesa->vb.vertex[rmesa->vb.vertex_size].f; + rmesa->vb.vertex_size += 3; + rmesa->vb.normalptr[0] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]; + rmesa->vb.normalptr[1] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]; + rmesa->vb.normalptr[2] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]; } if (ind & RADEON_CP_VC_FRMT_PKCOLOR) { - vb.colorptr = &vb.vertex[vb.vertex_size].color; - vb.vertex_size += 1; - UNCLAMPED_FLOAT_TO_CHAN( vb.colorptr->red, ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0] ); - UNCLAMPED_FLOAT_TO_CHAN( vb.colorptr->green, ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1] ); - UNCLAMPED_FLOAT_TO_CHAN( vb.colorptr->blue, ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2] ); - UNCLAMPED_FLOAT_TO_CHAN( vb.colorptr->alpha, ctx->Current.Attrib[VERT_ATTRIB_COLOR0][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.Attrib[VERT_ATTRIB_COLOR0][0] ); + UNCLAMPED_FLOAT_TO_CHAN( rmesa->vb.colorptr->green, ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1] ); + UNCLAMPED_FLOAT_TO_CHAN( rmesa->vb.colorptr->blue, ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2] ); + UNCLAMPED_FLOAT_TO_CHAN( rmesa->vb.colorptr->alpha, ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3] ); } if (ind & RADEON_CP_VC_FRMT_FPCOLOR) { assert(!(ind & RADEON_CP_VC_FRMT_PKCOLOR)); - vb.floatcolorptr = &vb.vertex[vb.vertex_size].f; - vb.vertex_size += 3; - vb.floatcolorptr[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]; - vb.floatcolorptr[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]; - vb.floatcolorptr[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]; + rmesa->vb.floatcolorptr = &rmesa->vb.vertex[rmesa->vb.vertex_size].f; + rmesa->vb.vertex_size += 3; + rmesa->vb.floatcolorptr[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]; + rmesa->vb.floatcolorptr[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]; + rmesa->vb.floatcolorptr[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]; if (ind & RADEON_CP_VC_FRMT_FPALPHA) { - vb.vertex_size += 1; - vb.floatcolorptr[3] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]; + rmesa->vb.vertex_size += 1; + rmesa->vb.floatcolorptr[3] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]; } } if (ind & RADEON_CP_VC_FRMT_PKSPEC) { - vb.specptr = &vb.vertex[vb.vertex_size].color; - vb.vertex_size += 1; - UNCLAMPED_FLOAT_TO_CHAN( vb.specptr->red, ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0] ); - UNCLAMPED_FLOAT_TO_CHAN( vb.specptr->green, ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1] ); - UNCLAMPED_FLOAT_TO_CHAN( vb.specptr->blue, ctx->Current.Attrib[VERT_ATTRIB_COLOR1][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.Attrib[VERT_ATTRIB_COLOR1][0] ); + UNCLAMPED_FLOAT_TO_CHAN( rmesa->vb.specptr->green, ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1] ); + UNCLAMPED_FLOAT_TO_CHAN( rmesa->vb.specptr->blue, ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2] ); } if (ind & RADEON_CP_VC_FRMT_ST0) { - vb.texcoordptr[0] = &vb.vertex[vb.vertex_size].f; - vb.vertex_size += 2; - vb.texcoordptr[0][0] = ctx->Current.Attrib[VERT_ATTRIB_TEX0][0]; - vb.texcoordptr[0][1] = ctx->Current.Attrib[VERT_ATTRIB_TEX0][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.Attrib[VERT_ATTRIB_TEX0][0]; + rmesa->vb.texcoordptr[0][1] = ctx->Current.Attrib[VERT_ATTRIB_TEX0][1]; } if (ind & RADEON_CP_VC_FRMT_ST1) { - vb.texcoordptr[1] = &vb.vertex[vb.vertex_size].f; - vb.vertex_size += 2; - vb.texcoordptr[1][0] = ctx->Current.Attrib[VERT_ATTRIB_TEX1][0]; - vb.texcoordptr[1][1] = ctx->Current.Attrib[VERT_ATTRIB_TEX1][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.Attrib[VERT_ATTRIB_TEX1][0]; + rmesa->vb.texcoordptr[1][1] = ctx->Current.Attrib[VERT_ATTRIB_TEX1][1]; } if (rmesa->vb.installed_vertex_format != rmesa->vb.vertex_format) { @@ -741,7 +735,6 @@ static void radeonVtxfmtValidate( GLcontext *ctx ) ctx->Driver.FlushVertices = radeonVtxfmtFlushVertices; ctx->Driver.NewList = radeonNewList; rmesa->vb.installed = GL_TRUE; - vb.context = ctx; } else if (RADEON_DEBUG & DEBUG_VFMT) fprintf(stderr, "%s: already installed", __FUNCTION__); @@ -756,7 +749,6 @@ static void radeonVtxfmtValidate( GLcontext *ctx ) _tnl_wakeup_exec( ctx ); ctx->Driver.FlushVertices = radeonFlushVertices; rmesa->vb.installed = GL_FALSE; - vb.context = 0; } } } @@ -768,7 +760,7 @@ static void radeonVtxfmtValidate( GLcontext *ctx ) static void radeon_Materialfv( GLenum face, GLenum pname, const GLfloat *params ) { - GLcontext *ctx = vb.context; + GET_CURRENT_CONTEXT(ctx); radeonContextPtr rmesa = RADEON_CONTEXT( ctx ); if (RADEON_DEBUG & DEBUG_VFMT) @@ -780,7 +772,7 @@ static void radeon_Materialfv( GLenum face, GLenum pname, return; } _mesa_noop_Materialfv( face, pname, params ); - radeonUpdateMaterial( vb.context ); + radeonUpdateMaterial( ctx ); } @@ -788,7 +780,7 @@ static void radeon_Materialfv( GLenum face, GLenum pname, */ static void radeon_Begin( GLenum mode ) { - GLcontext *ctx = vb.context; + GET_CURRENT_CONTEXT(ctx); radeonContextPtr rmesa = RADEON_CONTEXT(ctx); if (RADEON_DEBUG & DEBUG_VFMT) @@ -820,7 +812,7 @@ static void radeon_Begin( GLenum mode ) } - if (rmesa->dma.flush && vb.counter < 12) { + if (rmesa->dma.flush && rmesa->vb.counter < 12) { if (RADEON_DEBUG & DEBUG_VFMT) fprintf(stderr, "%s: flush almost-empty buffers\n", __FUNCTION__); flush_prims( rmesa ); @@ -829,20 +821,20 @@ static void radeon_Begin( GLenum mode ) /* 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) { RADEON_NEWPRIM( rmesa ); radeonRefillCurrentDmaRegion( 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; } @@ -854,7 +846,7 @@ static void radeon_Begin( GLenum mode ) static void radeon_End( void ) { - GLcontext *ctx = vb.context; + GET_CURRENT_CONTEXT(ctx); radeonContextPtr rmesa = RADEON_CONTEXT(ctx); if (RADEON_DEBUG & DEBUG_VFMT) @@ -922,7 +914,6 @@ static void radeonVtxfmtFlushVertices( GLcontext *ctx, GLuint flags ) fprintf(stderr, "%s\n", __FUNCTION__); assert(rmesa->vb.installed); - assert(vb.context == ctx); if (flags & FLUSH_UPDATE_CURRENT) { radeon_copy_to_current( ctx ); @@ -1015,7 +1006,6 @@ void radeonVtxfmtInit( GLcontext *ctx ) TNL_CONTEXT(ctx)->Driver.NotifyBegin = radeonNotifyBegin; - vb.context = ctx; rmesa->vb.enabled = 1; rmesa->vb.prim = &ctx->Driver.CurrentExecPrimitive; rmesa->vb.primflags = 0; @@ -1060,37 +1050,10 @@ static void free_funcs( struct dynfn *l ) } } -void radeonVtxfmtUnbindContext( GLcontext *ctx ) -{ - if (RADEON_CONTEXT(ctx)->vb.installed) { - assert(vb.context == ctx); - VFMT_FALLBACK_OUTSIDE_BEGIN_END( __FUNCTION__ ); - } - - TNL_CONTEXT(ctx)->Driver.NotifyBegin = 0; -} void radeonVtxfmtMakeCurrent( GLcontext *ctx ) { - radeonContextPtr rmesa = RADEON_CONTEXT( ctx ); - -#if defined(THREADS) - /* Insider knowledge: this value is zero when multithreading has - * been detected. - */ - if (_glapi_Context == 0) { - if (RADEON_DEBUG & (DEBUG_DRI|DEBUG_VFMT)) - fprintf(stderr, "**** Multithreading: disabling vtxfmt!\n"); - TNL_CONTEXT(ctx)->Driver.NotifyBegin = 0; - return; - } -#endif - - - if (rmesa->vb.enabled) { - TNL_CONTEXT(ctx)->Driver.NotifyBegin = radeonNotifyBegin; - } } diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt.h b/xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt.h index 1a765aaa7..9792fcbb7 100644 --- a/xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt.h +++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt.h @@ -1,4 +1,4 @@ -/* $XFree86$ */ +/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt.h,v 1.3 2002/12/21 17:02:16 dawes Exp $ */ /************************************************************************** Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and @@ -41,10 +41,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "radeon_context.h" - -extern struct radeon_vb vb; - - extern void radeonVtxfmtUpdate( GLcontext *ctx ); extern void radeonVtxfmtInit( GLcontext *ctx ); extern void radeonVtxfmtInvalidate( GLcontext *ctx ); 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 39d57a4f1..188e34a42 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 @@ -47,65 +47,73 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ static void radeon_Vertex3f( GLfloat x, GLfloat y, GLfloat z ) { + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_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 radeon_Vertex3fv( const GLfloat *v ) { + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_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 radeon_Vertex2f( GLfloat x, GLfloat y ) { + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_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; - - if (--vb.counter == 0) - vb.notify(); + for (i = 3; i < rmesa->vb.vertex_size; i++) + *rmesa->vb.dmaptr++ = *(int *)&rmesa->vb.vertex[i]; + + if (--rmesa->vb.counter == 0) + rmesa->vb.notify(); } static void radeon_Vertex2fv( const GLfloat *v ) { + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_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(); } @@ -114,7 +122,9 @@ static void radeon_Vertex2fv( const GLfloat *v ) */ static void radeon_Color3ub_ub( GLubyte r, GLubyte g, GLubyte b ) { - radeon_color_t *dest = vb.colorptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + radeon_color_t *dest = rmesa->vb.colorptr; dest->red = r; dest->green = g; dest->blue = b; @@ -123,7 +133,9 @@ static void radeon_Color3ub_ub( GLubyte r, GLubyte g, GLubyte b ) static void radeon_Color3ubv_ub( const GLubyte *v ) { - radeon_color_t *dest = vb.colorptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + radeon_color_t *dest = rmesa->vb.colorptr; dest->red = v[0]; dest->green = v[1]; dest->blue = v[2]; @@ -132,7 +144,9 @@ static void radeon_Color3ubv_ub( const GLubyte *v ) static void radeon_Color4ub_ub( GLubyte r, GLubyte g, GLubyte b, GLubyte a ) { - radeon_color_t *dest = vb.colorptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + radeon_color_t *dest = rmesa->vb.colorptr; dest->red = r; dest->green = g; dest->blue = b; @@ -141,13 +155,17 @@ static void radeon_Color4ub_ub( GLubyte r, GLubyte g, GLubyte b, GLubyte a ) static void radeon_Color4ubv_ub( const GLubyte *v ) { - *(GLuint *)vb.colorptr = LE32_TO_CPU(*(GLuint *)v); + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + *(GLuint *)rmesa->vb.colorptr = LE32_TO_CPU(*(GLuint *)v); } static void radeon_Color3f_ub( GLfloat r, GLfloat g, GLfloat b ) { - radeon_color_t *dest = vb.colorptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + radeon_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 ); @@ -156,7 +174,9 @@ static void radeon_Color3f_ub( GLfloat r, GLfloat g, GLfloat b ) static void radeon_Color3fv_ub( const GLfloat *v ) { - radeon_color_t *dest = vb.colorptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + radeon_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] ); @@ -165,7 +185,9 @@ static void radeon_Color3fv_ub( const GLfloat *v ) static void radeon_Color4f_ub( GLfloat r, GLfloat g, GLfloat b, GLfloat a ) { - radeon_color_t *dest = vb.colorptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + radeon_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 ); @@ -174,7 +196,9 @@ static void radeon_Color4f_ub( GLfloat r, GLfloat g, GLfloat b, GLfloat a ) static void radeon_Color4fv_ub( const GLfloat *v ) { - radeon_color_t *dest = vb.colorptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + radeon_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] ); @@ -186,7 +210,9 @@ static void radeon_Color4fv_ub( const GLfloat *v ) */ static void radeon_Color3ub_4f( GLubyte r, GLubyte g, GLubyte b ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_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); @@ -195,7 +221,9 @@ static void radeon_Color3ub_4f( GLubyte r, GLubyte g, GLubyte b ) static void radeon_Color3ubv_4f( const GLubyte *v ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_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]); @@ -204,7 +232,9 @@ static void radeon_Color3ubv_4f( const GLubyte *v ) static void radeon_Color4ub_4f( GLubyte r, GLubyte g, GLubyte b, GLubyte a ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_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); @@ -213,7 +243,9 @@ static void radeon_Color4ub_4f( GLubyte r, GLubyte g, GLubyte b, GLubyte a ) static void radeon_Color4ubv_4f( const GLubyte *v ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_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]); @@ -223,7 +255,9 @@ static void radeon_Color4ubv_4f( const GLubyte *v ) static void radeon_Color3f_4f( GLfloat r, GLfloat g, GLfloat b ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.floatcolorptr; dest[0] = r; dest[1] = g; dest[2] = b; @@ -232,7 +266,9 @@ static void radeon_Color3f_4f( GLfloat r, GLfloat g, GLfloat b ) static void radeon_Color3fv_4f( const GLfloat *v ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.floatcolorptr; dest[0] = v[0]; dest[1] = v[1]; dest[2] = v[2]; @@ -241,7 +277,9 @@ static void radeon_Color3fv_4f( const GLfloat *v ) static void radeon_Color4f_4f( GLfloat r, GLfloat g, GLfloat b, GLfloat a ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.floatcolorptr; dest[0] = r; dest[1] = g; dest[2] = b; @@ -250,7 +288,9 @@ static void radeon_Color4f_4f( GLfloat r, GLfloat g, GLfloat b, GLfloat a ) static void radeon_Color4fv_4f( const GLfloat *v ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.floatcolorptr; dest[0] = v[0]; dest[1] = v[1]; dest[2] = v[2]; @@ -262,7 +302,9 @@ static void radeon_Color4fv_4f( const GLfloat *v ) */ static void radeon_Color3ub_3f( GLubyte r, GLubyte g, GLubyte b ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_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); @@ -270,7 +312,9 @@ static void radeon_Color3ub_3f( GLubyte r, GLubyte g, GLubyte b ) static void radeon_Color3ubv_3f( const GLubyte *v ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_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]); @@ -278,26 +322,32 @@ static void radeon_Color3ubv_3f( const GLubyte *v ) static void radeon_Color4ub_3f( GLubyte r, GLubyte g, GLubyte b, GLubyte a ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_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.Attrib[VERT_ATTRIB_COLOR0][3] = UBYTE_TO_FLOAT(a); + ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3] = UBYTE_TO_FLOAT(a); } static void radeon_Color4ubv_3f( const GLubyte *v ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_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.Attrib[VERT_ATTRIB_COLOR0][3] = UBYTE_TO_FLOAT(v[3]); + ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3] = UBYTE_TO_FLOAT(v[3]); } static void radeon_Color3f_3f( GLfloat r, GLfloat g, GLfloat b ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.floatcolorptr; dest[0] = r; dest[1] = g; dest[2] = b; @@ -305,7 +355,9 @@ static void radeon_Color3f_3f( GLfloat r, GLfloat g, GLfloat b ) static void radeon_Color3fv_3f( const GLfloat *v ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.floatcolorptr; dest[0] = v[0]; dest[1] = v[1]; dest[2] = v[2]; @@ -313,20 +365,24 @@ static void radeon_Color3fv_3f( const GLfloat *v ) static void radeon_Color4f_3f( GLfloat r, GLfloat g, GLfloat b, GLfloat a ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.floatcolorptr; dest[0] = r; dest[1] = g; dest[2] = b; - vb.context->Current.Attrib[VERT_ATTRIB_COLOR0][3] = a; + ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3] = a; } static void radeon_Color4fv_3f( const GLfloat *v ) { - GLfloat *dest = vb.floatcolorptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.floatcolorptr; dest[0] = v[0]; dest[1] = v[1]; dest[2] = v[2]; - vb.context->Current.Attrib[VERT_ATTRIB_COLOR0][3] = v[3]; + ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3] = v[3]; } @@ -334,7 +390,9 @@ static void radeon_Color4fv_3f( const GLfloat *v ) */ static void radeon_SecondaryColor3ubEXT_ub( GLubyte r, GLubyte g, GLubyte b ) { - radeon_color_t *dest = vb.specptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + radeon_color_t *dest = rmesa->vb.specptr; dest->red = r; dest->green = g; dest->blue = b; @@ -343,7 +401,9 @@ static void radeon_SecondaryColor3ubEXT_ub( GLubyte r, GLubyte g, GLubyte b ) static void radeon_SecondaryColor3ubvEXT_ub( const GLubyte *v ) { - radeon_color_t *dest = vb.specptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + radeon_color_t *dest = rmesa->vb.specptr; dest->red = v[0]; dest->green = v[1]; dest->blue = v[2]; @@ -352,7 +412,9 @@ static void radeon_SecondaryColor3ubvEXT_ub( const GLubyte *v ) static void radeon_SecondaryColor3fEXT_ub( GLfloat r, GLfloat g, GLfloat b ) { - radeon_color_t *dest = vb.specptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + radeon_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 ); @@ -361,7 +423,9 @@ static void radeon_SecondaryColor3fEXT_ub( GLfloat r, GLfloat g, GLfloat b ) static void radeon_SecondaryColor3fvEXT_ub( const GLfloat *v ) { - radeon_color_t *dest = vb.specptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + radeon_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] ); @@ -370,7 +434,9 @@ static void radeon_SecondaryColor3fvEXT_ub( const GLfloat *v ) static void radeon_SecondaryColor3ubEXT_3f( GLubyte r, GLubyte g, GLubyte b ) { - GLfloat *dest = vb.floatspecptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_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); @@ -379,7 +445,9 @@ static void radeon_SecondaryColor3ubEXT_3f( GLubyte r, GLubyte g, GLubyte b ) static void radeon_SecondaryColor3ubvEXT_3f( const GLubyte *v ) { - GLfloat *dest = vb.floatspecptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_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]); @@ -388,7 +456,9 @@ static void radeon_SecondaryColor3ubvEXT_3f( const GLubyte *v ) static void radeon_SecondaryColor3fEXT_3f( GLfloat r, GLfloat g, GLfloat b ) { - GLfloat *dest = vb.floatspecptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.floatspecptr; dest[0] = r; dest[1] = g; dest[2] = b; @@ -397,7 +467,9 @@ static void radeon_SecondaryColor3fEXT_3f( GLfloat r, GLfloat g, GLfloat b ) static void radeon_SecondaryColor3fvEXT_3f( const GLfloat *v ) { - GLfloat *dest = vb.floatspecptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.floatspecptr; dest[0] = v[0]; dest[1] = v[1]; dest[2] = v[2]; @@ -405,12 +477,13 @@ static void radeon_SecondaryColor3fvEXT_3f( const GLfloat *v ) } - /* Normal */ static void radeon_Normal3f( GLfloat n0, GLfloat n1, GLfloat n2 ) { - GLfloat *dest = vb.normalptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.normalptr; dest[0] = n0; dest[1] = n1; dest[2] = n2; @@ -418,7 +491,9 @@ static void radeon_Normal3f( GLfloat n0, GLfloat n1, GLfloat n2 ) static void radeon_Normal3fv( const GLfloat *v ) { - GLfloat *dest = vb.normalptr; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.normalptr; dest[0] = v[0]; dest[1] = v[1]; dest[2] = v[2]; @@ -429,28 +504,36 @@ static void radeon_Normal3fv( const GLfloat *v ) */ static void radeon_TexCoord1f( GLfloat s ) { - GLfloat *dest = vb.texcoordptr[0]; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.texcoordptr[0]; dest[0] = s; dest[1] = 0; } static void radeon_TexCoord1fv( const GLfloat *v ) { - GLfloat *dest = vb.texcoordptr[0]; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.texcoordptr[0]; dest[0] = v[0]; dest[1] = 0; } static void radeon_TexCoord2f( GLfloat s, GLfloat t ) { - GLfloat *dest = vb.texcoordptr[0]; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.texcoordptr[0]; dest[0] = s; dest[1] = t; } static void radeon_TexCoord2fv( const GLfloat *v ) { - GLfloat *dest = vb.texcoordptr[0]; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.texcoordptr[0]; dest[0] = v[0]; dest[1] = v[1]; } @@ -468,28 +551,36 @@ static void radeon_TexCoord2fv( const GLfloat *v ) static void radeon_MultiTexCoord1fARB( GLenum target, GLfloat s ) { - GLfloat *dest = vb.texcoordptr[target & 1]; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.texcoordptr[target & 1]; dest[0] = s; dest[1] = 0; } static void radeon_MultiTexCoord1fvARB( GLenum target, const GLfloat *v ) { - GLfloat *dest = vb.texcoordptr[target & 1]; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.texcoordptr[target & 1]; dest[0] = v[0]; dest[1] = 0; } static void radeon_MultiTexCoord2fARB( GLenum target, GLfloat s, GLfloat t ) { - GLfloat *dest = vb.texcoordptr[target & 1]; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.texcoordptr[target & 1]; dest[0] = s; dest[1] = t; } static void radeon_MultiTexCoord2fvARB( GLenum target, const GLfloat *v ) { - GLfloat *dest = vb.texcoordptr[target & 1]; + GET_CURRENT_CONTEXT(ctx); + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); + GLfloat *dest = rmesa->vb.texcoordptr[target & 1]; dest[0] = v[0]; dest[1] = v[1]; } @@ -512,26 +603,27 @@ static struct dynfn *lookup( struct dynfn *l, int key ) #define CHOOSE(FN, FNTYPE, MASK, ACTIVE, ARGS1, ARGS2 ) \ static void choose_##FN ARGS1 \ { \ - radeonContextPtr rmesa = RADEON_CONTEXT(vb.context); \ + GET_CURRENT_CONTEXT(ctx); \ + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); \ int key = rmesa->vb.vertex_format & (MASK|ACTIVE); \ struct dynfn *dfn; \ \ 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 (RADEON_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 (RADEON_DEBUG & DEBUG_CODEGEN) \ fprintf(stderr, "%s -- generic version\n", __FUNCTION__ ); \ - vb.context->Exec->FN = radeon_##FN; \ + ctx->Exec->FN = radeon_##FN; \ } \ \ - vb.context->Driver.NeedFlush |= FLUSH_UPDATE_CURRENT; \ - vb.context->Exec->FN ARGS2; \ + ctx->Driver.NeedFlush |= FLUSH_UPDATE_CURRENT; \ + ctx->Exec->FN ARGS2; \ } @@ -546,8 +638,8 @@ static void choose_##FN ARGS1 \ #define CHOOSE_COLOR(FN, FNTYPE, NR, MASK, ACTIVE, ARGS1, ARGS2 ) \ static void choose_##FN ARGS1 \ { \ - GLcontext *ctx = vb.context; \ - radeonContextPtr rmesa = RADEON_CONTEXT(vb.context); \ + GET_CURRENT_CONTEXT(ctx); \ + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); \ int key = rmesa->vb.vertex_format & (MASK|ACTIVE); \ struct dynfn *dfn; \ \ @@ -601,23 +693,22 @@ static void choose_##FN ARGS1 \ #define CHOOSE_SECONDARY_COLOR(FN, FNTYPE, MASK, ACTIVE, ARGS1, ARGS2 ) \ static void choose_##FN ARGS1 \ { \ - GLcontext *ctx = vb.context; \ - radeonContextPtr rmesa = RADEON_CONTEXT(vb.context); \ + GET_CURRENT_CONTEXT(ctx); \ + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); \ int key = rmesa->vb.vertex_format & (MASK|ACTIVE); \ - struct dynfn *dfn; \ + struct dynfn *dfn = lookup( &rmesa->vb.dfn_cache.FN, key ); \ \ - 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 (RADEON_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 (RADEON_DEBUG & DEBUG_CODEGEN) \ fprintf(stderr, "%s -- generic version\n", __FUNCTION__ ); \ - vb.context->Exec->FN = ((rmesa->vb.vertex_format & ACTIVE_PKSPEC) != 0) \ + ctx->Exec->FN = ((rmesa->vb.vertex_format & ACTIVE_PKSPEC) != 0) \ ? radeon_##FN##_ub : radeon_##FN##_3f; \ } \ \ diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt_sse.c b/xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt_sse.c index b8bcc0cd1..0f2c82bd8 100644 --- a/xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt_sse.c +++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt_sse.c @@ -116,16 +116,16 @@ static struct dynfn * radeon_makeSSENormal3fv( GLcontext *ctx, int key ) { radeonContextPtr rmesa = RADEON_CONTEXT(ctx); - return radeon_makeSSEAttribute3fv( & rmesa->vb.dfn_cache.Normal3fv, - key, __FUNCTION__, vb.normalptr ); + return radeon_makeSSEAttribute3fv( & rmesa->vb.dfn_cache.Normal3fv, key, + __FUNCTION__, rmesa->vb.normalptr ); } static struct dynfn *radeon_makeSSENormal3f( GLcontext *ctx, int key ) { radeonContextPtr rmesa = RADEON_CONTEXT(ctx); - return radeon_makeSSEAttribute3f( & rmesa->vb.dfn_cache.Normal3f, - key, __FUNCTION__, vb.normalptr ); + return radeon_makeSSEAttribute3f( & rmesa->vb.dfn_cache.Normal3f, key, + __FUNCTION__, rmesa->vb.normalptr ); } static struct dynfn *radeon_makeSSEColor3fv( GLcontext *ctx, int key ) @@ -136,8 +136,8 @@ static struct dynfn *radeon_makeSSEColor3fv( GLcontext *ctx, int key ) { radeonContextPtr rmesa = RADEON_CONTEXT(ctx); - return radeon_makeSSEAttribute3fv( & rmesa->vb.dfn_cache.Color3fv, - key, __FUNCTION__, vb.floatcolorptr ); + return radeon_makeSSEAttribute3fv( & rmesa->vb.dfn_cache.Color3fv, key, + __FUNCTION__, rmesa->vb.floatcolorptr ); } } @@ -149,8 +149,8 @@ static struct dynfn *radeon_makeSSEColor3f( GLcontext *ctx, int key ) { radeonContextPtr rmesa = RADEON_CONTEXT(ctx); - return radeon_makeSSEAttribute3f( & rmesa->vb.dfn_cache.Color3f, - key, __FUNCTION__, vb.floatcolorptr ); + return radeon_makeSSEAttribute3f( & rmesa->vb.dfn_cache.Color3f, key, + __FUNCTION__, rmesa->vb.floatcolorptr ); } } @@ -158,16 +158,16 @@ static struct dynfn *radeon_makeSSETexCoord2fv( GLcontext *ctx, int key ) { radeonContextPtr rmesa = RADEON_CONTEXT(ctx); - return radeon_makeSSEAttribute2fv( & rmesa->vb.dfn_cache.TexCoord2fv, - key, __FUNCTION__, vb.texcoordptr[0] ); + return radeon_makeSSEAttribute2fv( & rmesa->vb.dfn_cache.TexCoord2fv, key, + __FUNCTION__, rmesa->vb.texcoordptr[0] ); } static struct dynfn *radeon_makeSSETexCoord2f( GLcontext *ctx, int key ) { radeonContextPtr rmesa = RADEON_CONTEXT(ctx); - return radeon_makeSSEAttribute2f( & rmesa->vb.dfn_cache.TexCoord2f, - key, __FUNCTION__, vb.texcoordptr[0] ); + return radeon_makeSSEAttribute2f( & rmesa->vb.dfn_cache.TexCoord2f, key, + __FUNCTION__, rmesa->vb.texcoordptr[0] ); } static struct dynfn *radeon_makeSSEMultiTexCoord2fv( GLcontext *ctx, int key ) @@ -181,10 +181,10 @@ static struct dynfn *radeon_makeSSEMultiTexCoord2fv( GLcontext *ctx, int key ) if ((key & (RADEON_CP_VC_FRMT_ST0|RADEON_CP_VC_FRMT_ST1)) == (RADEON_CP_VC_FRMT_ST0|RADEON_CP_VC_FRMT_ST1)) { DFN ( _sse_MultiTexCoord2fv, rmesa->vb.dfn_cache.MultiTexCoord2fvARB ); - FIXUP(dfn->code, 18, 0xdeadbeef, (int)vb.texcoordptr[0]); + FIXUP(dfn->code, 18, 0xdeadbeef, (int)rmesa->vb.texcoordptr[0]); } else { DFN ( _sse_MultiTexCoord2fv_2, rmesa->vb.dfn_cache.MultiTexCoord2fvARB ); - FIXUP(dfn->code, 14, 0x0, (int)vb.texcoordptr); + FIXUP(dfn->code, 14, 0x0, (int)rmesa->vb.texcoordptr); } return dfn; } @@ -200,10 +200,10 @@ static struct dynfn *radeon_makeSSEMultiTexCoord2f( GLcontext *ctx, int key ) if ((key & (RADEON_CP_VC_FRMT_ST0|RADEON_CP_VC_FRMT_ST1)) == (RADEON_CP_VC_FRMT_ST0|RADEON_CP_VC_FRMT_ST1)) { DFN ( _sse_MultiTexCoord2f, rmesa->vb.dfn_cache.MultiTexCoord2fARB ); - FIXUP(dfn->code, 16, 0xdeadbeef, (int)vb.texcoordptr[0]); + FIXUP(dfn->code, 16, 0xdeadbeef, (int)rmesa->vb.texcoordptr[0]); } else { DFN ( _sse_MultiTexCoord2f_2, rmesa->vb.dfn_cache.MultiTexCoord2fARB ); - FIXUP(dfn->code, 15, 0x0, (int)vb.texcoordptr); + FIXUP(dfn->code, 15, 0x0, (int)rmesa->vb.texcoordptr); } return dfn; } 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 fa56e4572..92941ca5f 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 @@ -35,7 +35,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "glheader.h" #include "imports.h" -#include "mmath.h" #include "simple_list.h" #include "radeon_vtxfmt.h" @@ -74,43 +73,43 @@ struct dynfn *radeon_makeX86Vertex3f( GLcontext *ctx, int key ) struct dynfn *dfn = MALLOC_STRUCT( dynfn ); if (RADEON_DEBUG & DEBUG_CODEGEN) - fprintf(stderr, "%s 0x%08x %d\n", __FUNCTION__, key, vb.vertex_size ); + fprintf(stderr, "%s 0x%08x %d\n", __FUNCTION__, key, 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; } } @@ -126,20 +125,20 @@ struct dynfn *radeon_makeX86Vertex3fv( GLcontext *ctx, int key ) struct dynfn *dfn = MALLOC_STRUCT( dynfn ); if (RADEON_DEBUG & DEBUG_CODEGEN) - fprintf(stderr, "%s 0x%08x %d\n", __FUNCTION__, key, vb.vertex_size ); + fprintf(stderr, "%s 0x%08x %d\n", __FUNCTION__, key, 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; } @@ -147,16 +146,16 @@ struct dynfn *radeon_makeX86Vertex3fv( GLcontext *ctx, int key ) 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; } @@ -165,13 +164,13 @@ struct dynfn *radeon_makeX86Vertex3fv( GLcontext *ctx, int key ) 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; } } @@ -249,16 +248,16 @@ struct dynfn *radeon_makeX86Normal3fv( GLcontext *ctx, int key ) { radeonContextPtr rmesa = RADEON_CONTEXT(ctx); - return radeon_makeX86Attribute3fv( & rmesa->vb.dfn_cache.Normal3fv, - key, __FUNCTION__, vb.normalptr ); + return radeon_makeX86Attribute3fv( & rmesa->vb.dfn_cache.Normal3fv, key, + __FUNCTION__, rmesa->vb.normalptr ); } struct dynfn *radeon_makeX86Normal3f( GLcontext *ctx, int key ) { radeonContextPtr rmesa = RADEON_CONTEXT(ctx); - return radeon_makeX86Attribute3f( & rmesa->vb.dfn_cache.Normal3f, - key, __FUNCTION__, vb.normalptr ); + return radeon_makeX86Attribute3f( & rmesa->vb.dfn_cache.Normal3f, key, + __FUNCTION__, rmesa->vb.normalptr ); } struct dynfn *radeon_makeX86Color4ubv( GLcontext *ctx, int key ) @@ -272,17 +271,17 @@ 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.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; } } @@ -297,10 +296,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.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 @@ -316,8 +315,8 @@ struct dynfn *radeon_makeX86Color3fv( GLcontext *ctx, int key ) { radeonContextPtr rmesa = RADEON_CONTEXT(ctx); - return radeon_makeX86Attribute3fv( & rmesa->vb.dfn_cache.Color3fv, - key, __FUNCTION__, vb.floatcolorptr ); + return radeon_makeX86Attribute3fv( & rmesa->vb.dfn_cache.Color3fv, key, + __FUNCTION__, rmesa->vb.floatcolorptr ); } } @@ -329,8 +328,8 @@ struct dynfn *radeon_makeX86Color3f( GLcontext *ctx, int key ) { radeonContextPtr rmesa = RADEON_CONTEXT(ctx); - return radeon_makeX86Attribute3f( & rmesa->vb.dfn_cache.Color3f, - key, __FUNCTION__, vb.floatcolorptr ); + return radeon_makeX86Attribute3f( & rmesa->vb.dfn_cache.Color3f, key, + __FUNCTION__, rmesa->vb.floatcolorptr ); } } @@ -340,16 +339,16 @@ struct dynfn *radeon_makeX86TexCoord2fv( GLcontext *ctx, int key ) { radeonContextPtr rmesa = RADEON_CONTEXT(ctx); - return radeon_makeX86Attribute2fv( & rmesa->vb.dfn_cache.TexCoord2fv, - key, __FUNCTION__, vb.texcoordptr[0] ); + return radeon_makeX86Attribute2fv( & rmesa->vb.dfn_cache.TexCoord2fv, key, + __FUNCTION__, rmesa->vb.texcoordptr[0] ); } struct dynfn *radeon_makeX86TexCoord2f( GLcontext *ctx, int key ) { radeonContextPtr rmesa = RADEON_CONTEXT(ctx); - return radeon_makeX86Attribute2f( & rmesa->vb.dfn_cache.TexCoord2f, - key, __FUNCTION__, vb.texcoordptr[0] ); + return radeon_makeX86Attribute2f( & rmesa->vb.dfn_cache.TexCoord2f, key, + __FUNCTION__, rmesa->vb.texcoordptr[0] ); } struct dynfn *radeon_makeX86MultiTexCoord2fvARB( GLcontext *ctx, int key ) @@ -363,11 +362,11 @@ struct dynfn *radeon_makeX86MultiTexCoord2fvARB( GLcontext *ctx, int key ) if ((key & (RADEON_CP_VC_FRMT_ST0|RADEON_CP_VC_FRMT_ST1)) == (RADEON_CP_VC_FRMT_ST0|RADEON_CP_VC_FRMT_ST1)) { DFN ( _x86_MultiTexCoord2fv, rmesa->vb.dfn_cache.MultiTexCoord2fvARB ); - FIXUP(dfn->code, 21, 0xdeadbeef, (int)vb.texcoordptr[0]); - FIXUP(dfn->code, 27, 0xdeadbeef, (int)vb.texcoordptr[0]+4); + FIXUP(dfn->code, 21, 0xdeadbeef, (int)rmesa->vb.texcoordptr[0]); + FIXUP(dfn->code, 27, 0xdeadbeef, (int)rmesa->vb.texcoordptr[0]+4); } else { DFN ( _x86_MultiTexCoord2fv_2, rmesa->vb.dfn_cache.MultiTexCoord2fvARB ); - FIXUP(dfn->code, 14, 0x0, (int)vb.texcoordptr); + FIXUP(dfn->code, 14, 0x0, (int)rmesa->vb.texcoordptr); } return dfn; } @@ -384,15 +383,15 @@ struct dynfn *radeon_makeX86MultiTexCoord2fARB( GLcontext *ctx, if ((key & (RADEON_CP_VC_FRMT_ST0|RADEON_CP_VC_FRMT_ST1)) == (RADEON_CP_VC_FRMT_ST0|RADEON_CP_VC_FRMT_ST1)) { DFN ( _x86_MultiTexCoord2f, rmesa->vb.dfn_cache.MultiTexCoord2fARB ); - FIXUP(dfn->code, 20, 0xdeadbeef, (int)vb.texcoordptr[0]); - FIXUP(dfn->code, 26, 0xdeadbeef, (int)vb.texcoordptr[0]+4); + FIXUP(dfn->code, 20, 0xdeadbeef, (int)rmesa->vb.texcoordptr[0]); + FIXUP(dfn->code, 26, 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_MultiTexCoord2f_2, rmesa->vb.dfn_cache.MultiTexCoord2fARB ); - FIXUP(dfn->code, 18, 0x0, (int)vb.texcoordptr); + FIXUP(dfn->code, 18, 0x0, (int)rmesa->vb.texcoordptr); } return dfn; } diff --git a/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_vm.h b/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_vm.h index 1ce0efab3..5355b740d 100644 --- a/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_vm.h +++ b/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/kernel/drm_vm.h @@ -45,15 +45,14 @@ paddr_t DRM(mmap)(dev_t kdev, off_t offset, int prot) drm_map_list_entry_t *listentry=NULL; drm_file_t *priv; -/* DRM_DEBUG("offset = 0x%x\n", offset);*/ - priv = DRM(find_file_by_proc)(dev, DRM_CURPROC); if (!priv) { DRM_DEBUG("can't find authenticator\n"); return EINVAL; } - if (!priv->authenticated) return DRM_ERR(EACCES); + if (!priv->authenticated) + return DRM_ERR(EACCES); if (dev->dma && offset >= 0 |