diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/drivers/dri/trident/Makefile | 36 | ||||
-rw-r--r-- | src/mesa/drivers/dri/trident/trident_context.c | 99 | ||||
-rw-r--r-- | src/mesa/drivers/dri/trident/trident_context.h | 37 | ||||
-rw-r--r-- | src/mesa/drivers/dri/trident/trident_dd.c | 3 | ||||
-rw-r--r-- | src/mesa/drivers/dri/trident/trident_dri.h | 28 | ||||
-rw-r--r-- | src/mesa/drivers/dri/trident/trident_lock.h | 11 | ||||
-rw-r--r-- | src/mesa/drivers/dri/trident/trident_state.c | 28 | ||||
-rw-r--r-- | src/mesa/drivers/dri/trident/trident_tris.c | 25 | ||||
-rw-r--r-- | src/mesa/drivers/dri/trident/trident_vb.c | 29 |
9 files changed, 211 insertions, 85 deletions
diff --git a/src/mesa/drivers/dri/trident/Makefile b/src/mesa/drivers/dri/trident/Makefile new file mode 100644 index 00000000000..f895500940a --- /dev/null +++ b/src/mesa/drivers/dri/trident/Makefile @@ -0,0 +1,36 @@ +# src/mesa/drivers/dri/trident/Makefile + +TOP = ../../../../.. +include $(TOP)/configs/current + +LIBNAME = trident_dri.so + +# Not yet +# MINIGLX_SOURCES = server/trident_dri.c + +COMMON_SOURCES = \ + ../../common/driverfuncs.c \ + ../common/mm.c \ + ../common/utils.c \ + ../common/texmem.c \ + ../common/vblank.c \ + ../common/xmlconfig.c \ + ../common/dri_util.c \ + ../common/glcontextmodes.c + +DRIVER_SOURCES = \ + trident_context.c \ + trident_state.c \ + trident_vb.c \ + trident_dd.c \ + trident_tris.c + +C_SOURCES = \ + $(COMMON_SOURCES) \ + $(DRIVER_SOURCES) + +ASM_SOURCES = + +include ../Makefile.template + +symlinks: diff --git a/src/mesa/drivers/dri/trident/trident_context.c b/src/mesa/drivers/dri/trident/trident_context.c index 168e7d1fc43..76240668d76 100644 --- a/src/mesa/drivers/dri/trident/trident_context.c +++ b/src/mesa/drivers/dri/trident/trident_context.c @@ -37,17 +37,18 @@ #include "context.h" #include "simple_list.h" -#include "mem.h" #include "matrix.h" #include "extensions.h" #if defined(USE_X86_ASM) #include "X86/common_x86_asm.h" #endif #include "simple_list.h" -#include "mem.h" #include "mm.h" -static const struct gl_pipeline_stage *trident_pipeline[] = { +#include "drivers/common/driverfuncs.h" +#include "dri_util.h" + +static const struct tnl_pipeline_stage *trident_pipeline[] = { &_tnl_vertex_transform_stage, &_tnl_normal_transform_stage, &_tnl_lighting_stage, @@ -58,7 +59,7 @@ static const struct gl_pipeline_stage *trident_pipeline[] = { }; -GLboolean tridentCreateContext( Display *dpy, const __GLcontextModes *glVisual, +GLboolean tridentCreateContext( const __GLcontextModes *glVisual, __DRIcontextPrivate *driContextPriv, void *sharedContextPrivate) { @@ -66,6 +67,7 @@ GLboolean tridentCreateContext( Display *dpy, const __GLcontextModes *glVisual, __DRIscreenPrivate *sPriv = driContextPriv->driScreenPriv; tridentContextPtr tmesa; tridentScreenPtr tridentscrn; + struct dd_function_table functions; #if 0 drm_trident_sarea_t *saPriv=(drm_trident_sarea_t *)(((char*)sPriv->pSAREA)+ sizeof(XF86DRISAREARec)); @@ -80,20 +82,22 @@ GLboolean tridentCreateContext( Display *dpy, const __GLcontextModes *glVisual, else shareCtx = NULL; - tmesa->glCtx = _mesa_create_context(glVisual, shareCtx, tmesa, GL_TRUE); + _mesa_init_driver_functions(&functions); + + tmesa->glCtx = + _mesa_create_context(glVisual, shareCtx, &functions, (void *)tmesa); + if (!tmesa->glCtx) { FREE(tmesa); return GL_FALSE; } - tmesa->display = dpy; - tmesa->driContext = driContextPriv; tmesa->driScreen = sPriv; tmesa->driDrawable = NULL; /* Set by XMesaMakeCurrent */ tmesa->hHWContext = driContextPriv->hHWContext; - tmesa->driHwLock = &sPriv->pSAREA->lock; + tmesa->driHwLock = (drmLock *)&sPriv->pSAREA->lock; tmesa->driFd = sPriv->fd; #if 0 tmesa->sarea = saPriv; @@ -159,11 +163,11 @@ GLboolean tridentCreateContext( Display *dpy, const __GLcontextModes *glVisual, tridentDDInitTriFuncs( ctx ); tridentDDInitState( tmesa ); - driContextPriv->driverPrivate = (void *)tmesa; + driContextPriv->driverPrivate = (void *)tmesa; UNLOCK_HARDWARE(tmesa); - return GL_TRUE; + return GL_TRUE; } static void @@ -181,15 +185,14 @@ tridentDestroyContext(__DRIcontextPrivate *driContextPriv) tmesa->glCtx->DriverCtx = NULL; _mesa_destroy_context(tmesa->glCtx); - Xfree(tmesa); + _mesa_free(tmesa); driContextPriv->driverPrivate = NULL; } } static GLboolean -tridentCreateBuffer( Display *dpy, - __DRIscreenPrivate *driScrnPriv, +tridentCreateBuffer( __DRIscreenPrivate *driScrnPriv, __DRIdrawablePrivate *driDrawPriv, const __GLcontextModes *mesaVis, GLboolean isPixmap ) @@ -217,10 +220,9 @@ tridentDestroyBuffer(__DRIdrawablePrivate *driDrawPriv) } static void -tridentSwapBuffers(Display *dpy, void *drawablePrivate) +tridentSwapBuffers(__DRIdrawablePrivate *drawablePrivate) { __DRIdrawablePrivate *dPriv = (__DRIdrawablePrivate *) drawablePrivate; - (void) dpy; if (dPriv->driContextPriv && dPriv->driContextPriv->driverPrivate) { tridentContextPtr tmesa; @@ -228,7 +230,7 @@ tridentSwapBuffers(Display *dpy, void *drawablePrivate) tmesa = (tridentContextPtr) dPriv->driContextPriv->driverPrivate; ctx = tmesa->glCtx; if (ctx->Visual.doubleBufferMode) { - _mesa_swapbuffers( ctx ); /* flush pending rendering comands */ + _mesa_notifySwapBuffers( ctx ); /* flush pending rendering comands */ tridentCopyBuffer( dPriv ); } } @@ -284,24 +286,11 @@ tridentUnbindContext( __DRIcontextPrivate *driContextPriv ) return GL_TRUE; } -static GLboolean -tridentOpenFullScreen(__DRIcontextPrivate *driContextPriv) -{ - return GL_TRUE; -} - -static GLboolean -tridentCloseFullScreen(__DRIcontextPrivate *driContextPriv) -{ - return GL_TRUE; -} - tridentScreenPtr tridentCreateScreen( __DRIscreenPrivate *sPriv ) { TRIDENTDRIPtr tDRIPriv = (TRIDENTDRIPtr)sPriv->pDevPriv; tridentScreenPtr tridentScreen; - int i; #if 0 /* Check the DRI version */ @@ -360,7 +349,7 @@ printf("offset 0x%x 0x%x\n",tridentScreen->backOffset,tridentScreen->depthOffset FREE(tridentScreen); return GL_FALSE; } -printf("MAPPED at 0x%x\n",tridentScreen->mmio.map); +printf("MAPPED at %p\n", tridentScreen->mmio.map); return tridentScreen; } @@ -396,23 +385,49 @@ static struct __DriverAPIRec tridentAPI = { tridentSwapBuffers, tridentMakeCurrent, tridentUnbindContext, - tridentOpenFullScreen, - tridentCloseFullScreen }; -/* - * This is the bootstrap function for the driver. - * The __driCreateScreen name is the symbol that libGL.so fetches. - * Return: pointer to a __DRIscreenPrivate. - */ -void *__driCreateScreen(Display *dpy, int scrn, __DRIscreen *psc, - int numConfigs, __GLXvisualConfig *config) +#ifndef USE_NEW_INTERFACE +#error trident_dri.so is new-interface only. +#else + +static PFNGLXCREATECONTEXTMODES create_context_modes = NULL; + +PUBLIC void *__driCreateNewScreen( __DRInativeDisplay *dpy, int scrn, + __DRIscreen *psc, + const __GLcontextModes * modes, + const __DRIversion * ddx_version, + const __DRIversion * dri_version, + const __DRIversion * drm_version, + const __DRIframebuffer * frame_buffer, + drmAddress pSAREA, int fd, + int internal_api_version, + __GLcontextModes ** driver_modes ) { - __DRIscreenPrivate *psp; - psp = __driUtilCreateScreen(dpy, scrn, psc, numConfigs, config, &tridentAPI); - return (void *) psp; + __DRIscreenPrivate *psp; + /* XXX version checks */ + + psp = __driUtilCreateNewScreen(dpy, scrn, psc, NULL, + ddx_version, dri_version, drm_version, + frame_buffer, pSAREA, fd, + internal_api_version, &tridentAPI); + + if ( psp != NULL ) { + create_context_modes = (PFNGLXCREATECONTEXTMODES) + glXGetProcAddress( (const GLubyte *) "__glXCreateContextModes" ); +#if 0 + if ( create_context_modes != NULL ) { + TRIDENTDRIPtr dri_priv = (TRIDENTDRIPtr) psp->pDevPriv; + *driver_modes = tridentFillInModes( dri_priv->bytesPerPixel * 8, + GL_TRUE ); + } +#endif + } + return (void *) psp; } +#endif + void __driRegisterExtensions(void) { /* No extensions */ diff --git a/src/mesa/drivers/dri/trident/trident_context.h b/src/mesa/drivers/dri/trident/trident_context.h index ee098e5e7da..74a3acb2ce1 100644 --- a/src/mesa/drivers/dri/trident/trident_context.h +++ b/src/mesa/drivers/dri/trident/trident_context.h @@ -27,7 +27,6 @@ #ifndef _TRIDENT_CONTEXT_H_ #define _TRIDENT_CONTEXT_H_ -#include "compiler.h" #include "dri_util.h" #include "macros.h" #include "mtypes.h" @@ -54,6 +53,23 @@ #include "tnl_dd/t_dd_vertex.h" #undef TAG +/* these require that base be dword-aligned */ +static inline void MMIO_OUT32(unsigned char *base, unsigned int offset, + unsigned int val) +{ + unsigned int *addr = (unsigned int *)(base + offset); + *addr = val; +} + +static inline unsigned int MMIO_IN32(unsigned char *base, unsigned int offset) +{ + unsigned int *addr = (unsigned int *)(base + offset); + return *addr; +} + +#define MMIO_OUT8(base, offset, val) *((base) + (offset)) = (val) +#define MMIO_IN8(base, offset) *((base) + (offset)) + struct trident_context; typedef struct trident_context tridentContextRec; typedef struct trident_context *tridentContextPtr; @@ -74,7 +90,7 @@ typedef void (*trident_point_func)( tridentContextPtr, const tridentVertex * ); typedef struct { - drmHandle handle; /* Handle to the DRM region */ + drm_handle_t handle; /* Handle to the DRM region */ drmSize size; /* Size of the DRM region */ unsigned char *map; /* Mapping of the DRM region */ } tridentRegionRec, *tridentRegionPtr; @@ -123,11 +139,9 @@ struct trident_context { /* Mirrors of some DRI state */ - Display *display; /* X server display */ - int lastStamp; /* mirror driDrawable->lastStamp */ - drmContext hHWContext; + drm_context_t hHWContext; drmLock *driHwLock; int driFd; @@ -141,10 +155,10 @@ struct trident_context { GLint readOffset, readPitch; GLuint numClipRects; /* Cliprects for the draw buffer */ - XF86DRIClipRectPtr pClipRects; + drm_clip_rect_t *pClipRects; GLint scissor; - XF86DRIClipRectRec ScissorRect; /* Current software scissor */ + drm_clip_rect_t ScissorRect; /* Current software scissor */ GLuint Fallback; GLuint RenderIndex; @@ -199,10 +213,19 @@ void tridentInitHW( tridentContextPtr tmesa ); void tridentDDInitStateFuncs( GLcontext *ctx ); void tridentDDInitTextureFuncs( GLcontext *ctx ); void tridentDDInitTriFuncs( GLcontext *ctx ); + extern void tridentBuildVertices( GLcontext *ctx, GLuint start, GLuint count, GLuint newinputs ); +extern void tridentInitVB( GLcontext *ctx ); +extern void tridentCopyBuffer( const __DRIdrawablePrivate *dPriv ); +extern void tridentFallback( tridentContextPtr tmesa, GLuint bit, + GLboolean mode ); +extern void tridentCheckTexSizes( GLcontext *ctx ); +extern void tridentChooseVertexState( GLcontext *ctx ); +extern void tridentDDUpdateHWState( GLcontext *ctx ); +extern void tridentUploadHwStateLocked( tridentContextPtr tmesa ); #define TRIDENT_CONTEXT(ctx) ((tridentContextPtr)(ctx->DriverCtx)) diff --git a/src/mesa/drivers/dri/trident/trident_dd.c b/src/mesa/drivers/dri/trident/trident_dd.c index 2f79ffcf6af..35e1cf0035f 100644 --- a/src/mesa/drivers/dri/trident/trident_dd.c +++ b/src/mesa/drivers/dri/trident/trident_dd.c @@ -33,8 +33,7 @@ #include "swrast/swrast.h" #include "context.h" -#define TRIDENT_DATE "20020318" - +#define TRIDENT_DATE "20041223" /* Return the width and height of the current color buffer. */ diff --git a/src/mesa/drivers/dri/trident/trident_dri.h b/src/mesa/drivers/dri/trident/trident_dri.h new file mode 100644 index 00000000000..c1ce3c46827 --- /dev/null +++ b/src/mesa/drivers/dri/trident/trident_dri.h @@ -0,0 +1,28 @@ +#ifndef _TRIDENT_DRI_ +#define _TRIDENT_DRI_ + +#include "xf86drm.h" + +typedef struct { + drm_handle_t regs; + drmSize regsSize; + drmAddress regsMap; + int deviceID; + int width; + int height; + int mem; + int frontOffset; + int frontPitch; + int backOffset; + int backPitch; + int depthOffset; + int depthPitch; + int cpp; +#if 0 + int textureOffset; + int textureSize; +#endif + unsigned int sarea_priv_offset; +} TRIDENTDRIRec, *TRIDENTDRIPtr; + +#endif diff --git a/src/mesa/drivers/dri/trident/trident_lock.h b/src/mesa/drivers/dri/trident/trident_lock.h new file mode 100644 index 00000000000..ee0819f5caa --- /dev/null +++ b/src/mesa/drivers/dri/trident/trident_lock.h @@ -0,0 +1,11 @@ +/* XXX tridentGetLock doesn't exist... */ + +#define LOCK_HARDWARE(tmesa) \ + do { \ + char __ret = 0; \ + DRM_CAS(tmesa->driHwLock, tmesa->hHWContext, \ + DRM_LOCK_HELD | tmesa->hHWContext, __ret); \ + } while (0) + +#define UNLOCK_HARDWARE(tmesa) \ + DRM_UNLOCK(tmesa->driFd, tmesa->driHwLock, tmesa->hHWContext) diff --git a/src/mesa/drivers/dri/trident/trident_state.c b/src/mesa/drivers/dri/trident/trident_state.c index 49318824f5c..2b9323f9912 100644 --- a/src/mesa/drivers/dri/trident/trident_state.c +++ b/src/mesa/drivers/dri/trident/trident_state.c @@ -26,7 +26,10 @@ */ #include "trident_context.h" #include "trident_lock.h" +#include "array_cache/acache.h" #include "swrast/swrast.h" +#include "swrast_setup/swrast_setup.h" +#include "tnl/tnl.h" #define TRIDENTPACKCOLOR332(r, g, b) \ (((r) & 0xe0) | (((g) & 0xe0) >> 3) | (((b) & 0xc0) >> 6)) @@ -90,9 +93,9 @@ void tridentCopyBuffer( const __DRIdrawablePrivate *dPriv ) { unsigned char *MMIO; tridentContextPtr tmesa; - GLint nbox, i, ret; + GLint nbox, i; int busy; - XF86DRIClipRectPtr pbox; + drm_clip_rect_t *pbox; assert(dPriv); assert(dPriv->driContextPriv); @@ -110,7 +113,7 @@ void tridentCopyBuffer( const __DRIdrawablePrivate *dPriv ) for ( i = 0 ; i < nbox ; i++ ) { #if 0 GLint nr = MIN2( i + MACH64_NR_SAREA_CLIPRECTS , nbox ); - XF86DRIClipRectPtr b = tmesa->sarea->boxes; + drm_clip_rect_t *b = tmesa->sarea->boxes; GLint n = 0; for ( ; i < nr ; i++ ) { @@ -151,11 +154,9 @@ static void tridentDDClear( GLcontext *ctx, GLbitfield mask, GLboolean all, { tridentContextPtr tmesa = TRIDENT_CONTEXT(ctx); unsigned char *MMIO = tmesa->tridentScreen->mmio.map; - __DRIdrawablePrivate *dPriv = tmesa->driDrawable; int busy; GLuint flags = 0; GLint i; - GLint ret; #define DRM_TRIDENT_FRONT 0x01 #define DRM_TRIDENT_BACK 0x02 @@ -195,8 +196,8 @@ static void tridentDDClear( GLcontext *ctx, GLbitfield mask, GLboolean all, for ( i = 0 ; i < tmesa->numClipRects ; i++ ) { #if 0 int nr = MIN2( i + TRIDENT_NR_SAREA_CLIPRECTS, tmesa->numClipRects ); - XF86DRIClipRectPtr box = tmesa->pClipRects; - XF86DRIClipRectPtr b = tmesa->sarea->boxes; + drm_clip_rect_t *box = tmesa->pClipRects; + drm_clip_rect_t *b = tmesa->sarea->boxes; GLint n = 0; if ( !all ) { @@ -363,12 +364,12 @@ void tridentSetCliprects( tridentContextPtr tmesa, GLenum mode ) switch ( mode ) { case GL_FRONT_LEFT: if (dPriv->numClipRects == 0) { - static XF86DRIClipRectRec zeroareacliprect = {0,0,0,0}; + static drm_clip_rect_t zeroareacliprect = {0,0,0,0}; tmesa->numClipRects = 1; tmesa->pClipRects = &zeroareacliprect; } else { tmesa->numClipRects = dPriv->numClipRects; - tmesa->pClipRects = (XF86DRIClipRectPtr)dPriv->pClipRects; + tmesa->pClipRects = (drm_clip_rect_t *)dPriv->pClipRects; } tmesa->drawX = dPriv->x; tmesa->drawY = dPriv->y; @@ -376,19 +377,19 @@ void tridentSetCliprects( tridentContextPtr tmesa, GLenum mode ) case GL_BACK_LEFT: if ( dPriv->numBackClipRects == 0 ) { if (dPriv->numClipRects == 0) { - static XF86DRIClipRectRec zeroareacliprect = {0,0,0,0}; + static drm_clip_rect_t zeroareacliprect = {0,0,0,0}; tmesa->numClipRects = 1; tmesa->pClipRects = &zeroareacliprect; } else { tmesa->numClipRects = dPriv->numClipRects; - tmesa->pClipRects = (XF86DRIClipRectPtr)dPriv->pClipRects; + tmesa->pClipRects = (drm_clip_rect_t *)dPriv->pClipRects; tmesa->drawX = dPriv->x; tmesa->drawY = dPriv->y; } } else { tmesa->numClipRects = dPriv->numBackClipRects; - tmesa->pClipRects = (XF86DRIClipRectPtr)dPriv->pBackClipRects; + tmesa->pClipRects = (drm_clip_rect_t *)dPriv->pBackClipRects; tmesa->drawX = dPriv->backX; tmesa->drawY = dPriv->backY; } @@ -402,6 +403,7 @@ void tridentSetCliprects( tridentContextPtr tmesa, GLenum mode ) #endif } +#if 0 static GLboolean tridentDDSetDrawBuffer( GLcontext *ctx, GLenum mode ) { tridentContextPtr tmesa = TRIDENT_CONTEXT(ctx); @@ -450,7 +452,7 @@ static void tridentDDClearColor( GLcontext *ctx, color[0], color[1], color[2], color[3] ); } - +#endif void tridentDDUpdateState( GLcontext *ctx, GLuint new_state ) { diff --git a/src/mesa/drivers/dri/trident/trident_tris.c b/src/mesa/drivers/dri/trident/trident_tris.c index 890e34ed910..ee85ab482cd 100644 --- a/src/mesa/drivers/dri/trident/trident_tris.c +++ b/src/mesa/drivers/dri/trident/trident_tris.c @@ -31,6 +31,7 @@ #include "tnl/t_context.h" #include "tnl/t_pipeline.h" #include "swrast/swrast.h" +#include "swrast_setup/swrast_setup.h" static int first = 1; @@ -277,7 +278,7 @@ void Init3D( tridentContextPtr tmesa ) int DrawTriangle( tridentContextPtr tmesa) { - volatile unsigned char *MMIO = tmesa->tridentScreen->mmio.map; + unsigned char *MMIO = tmesa->tridentScreen->mmio.map; dmaBufRec clr; printf("DRAW TRI\n"); @@ -416,6 +417,7 @@ static INLINE void trident_draw_point(tridentContextPtr tmesa, const tridentVertex *v0 ) { unsigned char *MMIO = tmesa->tridentScreen->mmio.map; + (void) MMIO; } static INLINE void trident_draw_line( tridentContextPtr tmesa, @@ -423,6 +425,7 @@ static INLINE void trident_draw_line( tridentContextPtr tmesa, const tridentVertex *v1 ) { unsigned char *MMIO = tmesa->tridentScreen->mmio.map; + (void) MMIO; } static INLINE void trident_draw_triangle( tridentContextPtr tmesa, @@ -547,6 +550,7 @@ if (vertsize == 4) { * primitives are being drawn, and only for the unaccelerated * primitives. */ +#if 0 static void trident_fallback_quad( tridentContextPtr tmesa, const tridentVertex *v0, @@ -562,6 +566,11 @@ trident_fallback_quad( tridentContextPtr tmesa, trident_translate_vertex( ctx, v3, &v[3] ); _swrast_Quad( ctx, &v[0], &v[1], &v[2], &v[3] ); } +#endif + +/* XXX hack to get the prototype defined in time... */ +void trident_translate_vertex(GLcontext *ctx, const tridentVertex *src, + SWvertex *dst); static void trident_fallback_tri( tridentContextPtr tmesa, @@ -649,10 +658,10 @@ do { \ static struct { - points_func points; - line_func line; - triangle_func triangle; - quad_func quad; + tnl_points_func points; + tnl_line_func line; + tnl_triangle_func triangle; + tnl_quad_func quad; } rast_tab[TRIDENT_MAX_TRIFUNC]; @@ -733,7 +742,9 @@ static const GLuint hw_prim[GL_POLYGON+1] = { #endif static void tridentResetLineStipple( GLcontext *ctx ); +#if 0 static void tridentRasterPrimitive( GLcontext *ctx, GLuint hwprim ); +#endif static void tridentRenderPrimitive( GLcontext *ctx, GLenum prim ); #define RASTERIZE(x) /*if (tmesa->hw_primitive != hw_prim[x]) \ @@ -985,13 +996,14 @@ static void tridentChooseRenderState(GLcontext *ctx) * which renders strips as strips, the equivalent calculations are * performed in tridentrender.c. */ - +#if 0 static void tridentRasterPrimitive( GLcontext *ctx, GLuint hwprim ) { tridentContextPtr tmesa = TRIDENT_CONTEXT(ctx); if (tmesa->hw_primitive != hwprim) tmesa->hw_primitive = hwprim; } +#endif static void tridentRenderPrimitive( GLcontext *ctx, GLenum prim ) { @@ -1043,6 +1055,7 @@ static void tridentRenderFinish( GLcontext *ctx ) static void tridentResetLineStipple( GLcontext *ctx ) { tridentContextPtr tmesa = TRIDENT_CONTEXT(ctx); + (void) tmesa; /* Reset the hardware stipple counter. */ diff --git a/src/mesa/drivers/dri/trident/trident_vb.c b/src/mesa/drivers/dri/trident/trident_vb.c index 4c6e088da46..77e4d9b76e0 100644 --- a/src/mesa/drivers/dri/trident/trident_vb.c +++ b/src/mesa/drivers/dri/trident/trident_vb.c @@ -26,10 +26,8 @@ */ #include "glheader.h" #include "mtypes.h" -#include "mem.h" #include "macros.h" #include "colormac.h" -#include "mmath.h" #include "swrast_setup/swrast_setup.h" #include "swrast/swrast.h" @@ -49,8 +47,8 @@ static struct { void (*emit)( GLcontext *, GLuint, GLuint, void *, GLuint ); - interp_func interp; - copy_pv_func copy_pv; + tnl_interp_func interp; + tnl_copy_pv_func copy_pv; GLboolean (*check_tex_sizes)( GLcontext *ctx ); GLuint vertex_size; GLuint vertex_stride_shift; @@ -77,10 +75,12 @@ static struct { #define DO_PTEX (IND & TRIDENT_PTEX_BIT) #define VERTEX tridentVertex +#define VERTEX_COLOR trident_color_t #define LOCALVARS tridentContextPtr tmesa = TRIDENT_CONTEXT(ctx); #define GET_VIEWPORT_MAT() tmesa->hw_viewport #define GET_TEXSOURCE(n) tmesa->tmu_source[n] #define GET_VERTEX_FORMAT() tmesa->vertex_format +#define GET_VERTEX_SIZE() tmesa->vertex_size #define GET_VERTEX_STORE() tmesa->verts #define GET_VERTEX_STRIDE_SHIFT() tmesa->vertex_stride_shift #define GET_UBYTE_COLOR_STORE() &tmesa->UbyteColor @@ -310,24 +310,24 @@ void tridentBuildVertices( GLcontext *ctx, if (!newinputs) return; - if (newinputs & VERT_CLIP) { + if (newinputs & VERT_BIT_POS) { setup_tab[tmesa->SetupIndex].emit( ctx, start, count, v, stride ); } else { GLuint ind = 0; - if (newinputs & VERT_RGBA) + if (newinputs & VERT_BIT_COLOR0) ind |= TRIDENT_RGBA_BIT; - if (newinputs & VERT_SPEC_RGB) + if (newinputs & VERT_BIT_COLOR1) ind |= TRIDENT_SPEC_BIT; - if (newinputs & VERT_TEX0) + if (newinputs & VERT_BIT_TEX0) ind |= TRIDENT_TEX0_BIT; - if (newinputs & VERT_TEX1) + if (newinputs & VERT_BIT_TEX1) ind |= TRIDENT_TEX1_BIT; - if (newinputs & VERT_FOG_COORD) + if (newinputs & VERT_BIT_FOG) ind |= TRIDENT_FOG_BIT; if (tmesa->SetupIndex & TRIDENT_PTEX_BIT) @@ -373,10 +373,9 @@ void tridentChooseVertexState( GLcontext *ctx ) if (ctx->Fog.Enabled) ind |= TRIDENT_FOG_BIT; - if (ctx->Texture._ReallyEnabled) { + if (ctx->Texture.Unit[0]._ReallyEnabled) { ind |= TRIDENT_TEX0_BIT; - if (ctx->Texture.Unit[0]._ReallyEnabled && - ctx->Texture.Unit[1]._ReallyEnabled) { + if (ctx->Texture.Unit[1]._ReallyEnabled) { ind |= TRIDENT_TEX1_BIT; } } @@ -424,12 +423,12 @@ void tridentFreeVB( GLcontext *ctx ) } if (tmesa->UbyteSecondaryColor.Ptr) { - ALIGN_FREE(tmesa->UbyteSecondaryColor.Ptr); + ALIGN_FREE((void *)tmesa->UbyteSecondaryColor.Ptr); tmesa->UbyteSecondaryColor.Ptr = 0; } if (tmesa->UbyteColor.Ptr) { - ALIGN_FREE(tmesa->UbyteColor.Ptr); + ALIGN_FREE((void *)tmesa->UbyteColor.Ptr); tmesa->UbyteColor.Ptr = 0; } } |