Nuke s3v.
authorCorbin Simpson <MostAwesomeDude@gmail.com>
Thu, 22 Oct 2009 19:29:30 +0000 (12:29 -0700)
committerCorbin Simpson <MostAwesomeDude@gmail.com>
Thu, 22 Oct 2009 19:29:30 +0000 (12:29 -0700)
As per FDO #17889.

31 files changed:
configs/linux-dri
configs/linux-dri-xcb
configure.ac
src/mesa/drivers/dri/common/drirenderbuffer.h
src/mesa/drivers/dri/s3v/Makefile [deleted file]
src/mesa/drivers/dri/s3v/s3v_common.h [deleted file]
src/mesa/drivers/dri/s3v/s3v_context.c [deleted file]
src/mesa/drivers/dri/s3v/s3v_context.h [deleted file]
src/mesa/drivers/dri/s3v/s3v_dd.c [deleted file]
src/mesa/drivers/dri/s3v/s3v_dri.h [deleted file]
src/mesa/drivers/dri/s3v/s3v_inithw.c [deleted file]
src/mesa/drivers/dri/s3v/s3v_lock.c [deleted file]
src/mesa/drivers/dri/s3v/s3v_lock.h [deleted file]
src/mesa/drivers/dri/s3v/s3v_macros.h [deleted file]
src/mesa/drivers/dri/s3v/s3v_regs.h [deleted file]
src/mesa/drivers/dri/s3v/s3v_render.c [deleted file]
src/mesa/drivers/dri/s3v/s3v_screen.c [deleted file]
src/mesa/drivers/dri/s3v/s3v_screen.h [deleted file]
src/mesa/drivers/dri/s3v/s3v_span.c [deleted file]
src/mesa/drivers/dri/s3v/s3v_state.c [deleted file]
src/mesa/drivers/dri/s3v/s3v_tex.c [deleted file]
src/mesa/drivers/dri/s3v/s3v_tex.h [deleted file]
src/mesa/drivers/dri/s3v/s3v_texmem.c [deleted file]
src/mesa/drivers/dri/s3v/s3v_texstate.c [deleted file]
src/mesa/drivers/dri/s3v/s3v_tris.c [deleted file]
src/mesa/drivers/dri/s3v/s3v_tris.h [deleted file]
src/mesa/drivers/dri/s3v/s3v_tritmp.h [deleted file]
src/mesa/drivers/dri/s3v/s3v_vb.c [deleted file]
src/mesa/drivers/dri/s3v/s3v_vb.h [deleted file]
src/mesa/drivers/dri/s3v/s3v_xmesa.c [deleted file]
src/mesa/drivers/dri/s3v/s3virgetri.h [deleted file]

index 0998ba8549d9dc5a6ad741a48b350cb05d3cfaaf..89a7d07f45f694adf01a53ba10c9f3a9cd38cb13 100644 (file)
@@ -63,5 +63,5 @@ GALLIUM_WINSYS_DIRS = drm
 GALLIUM_WINSYS_DRM_DIRS = intel
 GALLIUM_STATE_TRACKERS_DIRS = egl
 
-DRI_DIRS = i810 i915 i965 mach64 mga r128 r200 r300 radeon s3v \
+DRI_DIRS = i810 i915 i965 mach64 mga r128 r200 r300 radeon \
        savage sis tdfx trident unichrome ffb swrast
index e9c15a82e4262f4a0f80a00173c24b364d2a6ca9..d97f0b477e3e690ed4f692083a8c26ec6b5a4ff2 100644 (file)
@@ -68,5 +68,5 @@ WINDOW_SYSTEM=dri
 
 # gamma are missing because they have not been converted to use the new
 # interface.
-DRI_DIRS = i810 i915 mach64 mga r128 r200 r300 radeon s3v \
+DRI_DIRS = i810 i915 mach64 mga r128 r200 r300 radeon \
        savage sis tdfx trident unichrome ffb 
index f8b9b538101c57e390942810666e62d0274ce17c..6622b0aa494ee14d7369178206b108b8bf8ea2f8 100644 (file)
@@ -768,7 +768,7 @@ if test "$mesa_driver" = dri; then
 
     # default drivers
     if test "x$DRI_DIRS" = "xyes"; then
-        DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon s3v \
+        DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon \
             savage sis tdfx trident unichrome ffb swrast"
     fi
 
index cf55286b30fd066e1302be52517db8b5d1e92cd3..5ae28cb53a0fd7cc3c32ab7f7979aaf9db299ecc 100644 (file)
@@ -56,7 +56,7 @@ typedef struct {
     * A handy flag to know if this is the back color buffer.
     * 
     * \note
-    * This is currently only used by s3v and tdfx.
+    * This is currently only used by tdfx.
     */
    GLboolean backBuffer;
 } driRenderbuffer;
diff --git a/src/mesa/drivers/dri/s3v/Makefile b/src/mesa/drivers/dri/s3v/Makefile
deleted file mode 100644 (file)
index da7e6cd..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-# src/mesa/drivers/dri/s3v/Makefile
-
-TOP = ../../../../..
-include $(TOP)/configs/current
-
-LIBNAME = s3v_dri.so
-
-# Doesn't exist yet.
-#MINIGLX_SOURCES = server/savage_dri.c 
-
-DRIVER_SOURCES = \
-       s3v_context.c \
-        s3v_dd.c \
-        s3v_inithw.c \
-        s3v_lock.c \
-        s3v_render.c \
-        s3v_screen.c \
-        s3v_span.c \
-        s3v_state.c \
-        s3v_tex.c \
-        s3v_texmem.c \
-        s3v_texstate.c \
-        s3v_tris.c \
-        s3v_vb.c \
-        s3v_xmesa.c
-
-C_SOURCES = \
-       $(COMMON_SOURCES) \
-       $(DRIVER_SOURCES) 
-
-ASM_SOURCES = 
-
-
-include ../Makefile.template
-
diff --git a/src/mesa/drivers/dri/s3v/s3v_common.h b/src/mesa/drivers/dri/s3v/s3v_common.h
deleted file mode 100644 (file)
index b66cdf1..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Author: Max Lingua <sunmax@libero.it>
- */
-
-/* WARNING: If you change any of these defines, make sure to change
- * the kernel include file as well (s3v_drm.h)
- */
-
-#ifndef _XF86DRI_S3V_H_
-#define _XF86DRI_S3V_H_
-
-#ifndef _S3V_DEFINES_
-#define _S3V_DEFINES_
-#define S3V_USE_BATCH 1
-
-/* #define S3V_BUF_4K 1 */
-
-#ifdef S3V_BUF_4K
-#define S3V_DMA_BUF_ORDER 12
-#define S3V_DMA_BUF_NR    256
-#else
-#define S3V_DMA_BUF_ORDER 16 /* -much- better */
-#define S3V_DMA_BUF_NR    16
-#endif
-/* on s3virge you can only choose between *
- * 4k (2^12) and 64k (2^16) dma bufs      */
-#define S3V_DMA_BUF_SZ        (1<<S3V_DMA_BUF_ORDER)
-
-#define S3V_NR_SAREA_CLIPRECTS 8
-
-/* Each region is a minimum of 16k (64*64@4bpp)
- * and there are at most 40 of them.
- */
-#define S3V_NR_TEX_REGIONS 64 /* was 40 */
-#define S3V_LOG_TEX_GRANULARITY 16 /* was 4 */
-/* 40 * (2 ^ 4) = 640k, that's all we have for tex on 4mb gfx card */
-/* FIXME: will it work with card with less than 4mb? */
-/* FIXME: we should set this at run time */
-
-#endif  /* _S3V_DEFINES */
-
-/*
- * WARNING: If you change any of these defines, make sure to change
- * the kernel include file as well (gamma_drm.h)
- */
-
-/* Driver specific DRM command indices
- * NOTE: these are not OS specific, but they are driver specific
- */
-#define DRM_S3V_INIT_DMA              0x00
-#define DRM_S3V_CLEANUP_DMA           0x01
-
-typedef struct _drmS3VInit {
-    enum {
-        S3V_INIT_DMA = 0x01,
-        S3V_CLEANUP_DMA = 0x02
-    } func;
-
-    unsigned int pcimode;   /* bool: 1=pci 0=agp */
-
-    unsigned int mmio_offset;
-    unsigned int buffers_offset;
-    unsigned int sarea_priv_offset;
-
-    unsigned int front_offset;
-    unsigned int front_width;
-    unsigned int front_height;
-    unsigned int front_pitch;
-
-    unsigned int back_offset;
-    unsigned int back_width;
-    unsigned int back_height;
-    unsigned int back_pitch;
-
-    unsigned int depth_offset;
-    unsigned int depth_width;
-    unsigned int depth_height;
-    unsigned int depth_pitch;
-
-    unsigned int texture_offset;
-} drmS3VInit;
-
-#endif
diff --git a/src/mesa/drivers/dri/s3v/s3v_context.c b/src/mesa/drivers/dri/s3v/s3v_context.c
deleted file mode 100644 (file)
index 0a3bf72..0000000
+++ /dev/null
@@ -1,260 +0,0 @@
-/*
- * Author: Max Lingua <sunmax@libero.it>
- */
-
-#include "s3v_context.h"
-
-#include "swrast/swrast.h"
-#include "swrast_setup/swrast_setup.h"
-#include "vbo/vbo.h"
-
-#include "tnl/tnl.h"
-#include "tnl/t_pipeline.h"
-
-#include "main/context.h"
-#include "main/simple_list.h"
-#include "main/matrix.h"
-#include "main/extensions.h"
-#if defined(USE_X86_ASM)
-#include "x86/common_x86_asm.h"
-#endif
-#include "main/simple_list.h"
-#include "main/mm.h"
-
-#include "drivers/common/driverfuncs.h"
-#include "s3v_vb.h"
-#include "s3v_tris.h"
-
-#if 0
-extern const struct tnl_pipeline_stage _s3v_render_stage;
-
-static const struct tnl_pipeline_stage *s3v_pipeline[] = {
-   &_tnl_vertex_transform_stage,
-   &_tnl_normal_transform_stage,
-   &_tnl_lighting_stage,
-   &_tnl_fog_coordinate_stage,
-   &_tnl_texgen_stage,
-   &_tnl_texture_transform_stage,
-                               /* REMOVE: point attenuation stage */
-#if 1
-   &_s3v_render_stage, /* ADD: unclipped rastersetup-to-dma */
-#endif
-   &_tnl_render_stage,
-   0,
-};
-#endif
-
-GLboolean s3vCreateContext(const __GLcontextModes *glVisual,
-                          __DRIcontextPrivate *driContextPriv,
-                          void *sharedContextPrivate)
-{
-       GLcontext *ctx, *shareCtx;
-       __DRIscreenPrivate *sPriv = driContextPriv->driScreenPriv;
-       s3vContextPtr vmesa;
-       s3vScreenPtr s3vScrn;
-       S3VSAREAPtr saPriv=(S3VSAREAPtr)(((char*)sPriv->pSAREA) + 
-                            sizeof(drm_sarea_t));
-        struct dd_function_table functions;
-
-       DEBUG_WHERE(("*** s3vCreateContext ***\n"));
-
-       vmesa = (s3vContextPtr) CALLOC( sizeof(*vmesa) );
-       if ( !vmesa ) return GL_FALSE;
-
-       /* Allocate the Mesa context */
-       if (sharedContextPrivate)
-               shareCtx = ((s3vContextPtr) sharedContextPrivate)->glCtx;
-       else
-               shareCtx = NULL;
-
-        _mesa_init_driver_functions(&functions);
-
-       vmesa->glCtx = _mesa_create_context(glVisual, shareCtx, &functions,
-                                            (void *)vmesa);
-       if (!vmesa->glCtx) {
-               FREE(vmesa);
-               return GL_FALSE;
-       }
-
-       vmesa->driContext = driContextPriv;
-       vmesa->driScreen = sPriv;
-       vmesa->driDrawable = NULL; /* Set by XMesaMakeCurrent */
-
-       vmesa->hHWContext = driContextPriv->hHWContext;
-       vmesa->driHwLock = (drmLock *)&sPriv->pSAREA->lock;
-       vmesa->driFd = sPriv->fd;
-       vmesa->sarea = saPriv;
-
-       s3vScrn = vmesa->s3vScreen = (s3vScreenPtr)(sPriv->private);
-
-       ctx = vmesa->glCtx;
-
-       ctx->Const.MaxTextureLevels = 11;  /* it is (11-1) -> 1024 * 1024 FIXME */
-
-       ctx->Const.MaxTextureUnits = 1; /* FIXME: or 2 ? */
-
-       /* No wide points.
-        */
-       ctx->Const.MinPointSize = 1.0;
-       ctx->Const.MinPointSizeAA = 1.0;
-       ctx->Const.MaxPointSize = 1.0;
-       ctx->Const.MaxPointSizeAA = 1.0;
-
-       /* No wide lines.
-        */
-       ctx->Const.MinLineWidth = 1.0;
-       ctx->Const.MinLineWidthAA = 1.0;
-       ctx->Const.MaxLineWidth = 1.0;
-       ctx->Const.MaxLineWidthAA = 1.0;
-       ctx->Const.LineWidthGranularity = 1.0;
-
-       ctx->Const.MaxDrawBuffers = 1;
-
-       vmesa->texHeap = mmInit( 0, vmesa->s3vScreen->textureSize );
-       DEBUG(("vmesa->s3vScreen->textureSize = 0x%x\n",
-               vmesa->s3vScreen->textureSize));
-       
-       /* NOTE */
-       /* mmInit(offset, size); */
-
-       /* allocates a structure like this:
-
-       struct mem_block_t {
-               struct mem_block_t *next;
-               struct mem_block_t *heap;
-               int ofs,size;
-               int align;
-               int free:1;
-               int reserved:1;
-       };
-
-       */
-
-       make_empty_list(&vmesa->TexObjList);
-       make_empty_list(&vmesa->SwappedOut);
-
-       vmesa->CurrentTexObj[0] = 0;
-       vmesa->CurrentTexObj[1] = 0; /* FIXME */
-
-       vmesa->RenderIndex = ~0;
-
-       /* Initialize the software rasterizer and helper modules.
-        */
-       _swrast_CreateContext( ctx );
-       _vbo_CreateContext( ctx );
-       _tnl_CreateContext( ctx );
-       _swsetup_CreateContext( ctx );
-
-       /* Install the customized pipeline:
-        */
-#if 0
-       _tnl_destroy_pipeline( ctx );
-       _tnl_install_pipeline( ctx, s3v_pipeline );
-#endif
-       /* Configure swrast to match hardware characteristics:
-        */
-#if 0
-       _swrast_allow_pixel_fog( ctx, GL_FALSE );
-       _swrast_allow_vertex_fog( ctx, GL_TRUE );
-#endif
-       vmesa->_3d_mode = 0;
-
-       /* 3D lines / gouraud tris */
-       vmesa->CMD = ( AUTO_EXEC_ON | HW_CLIP_ON | DEST_COL_1555
-                       | FOG_OFF | ALPHA_OFF | Z_OFF | Z_UPDATE_OFF
-                       | Z_LESS | TEX_WRAP_ON | TEX_MODULATE | LINEAR
-                       | TEX_COL_ARGB1555 | CMD_3D );
-
-       vmesa->_alpha[0] = vmesa->_alpha[1] = ALPHA_OFF;
-       vmesa->alpha_cmd = vmesa->_alpha[0];
-       vmesa->_tri[0] = DO_GOURAUD_TRI;
-       vmesa->_tri[1] = DO_TEX_LIT_TRI;
-       vmesa->prim_cmd = vmesa->_tri[0];
-
-       /* printf("first vmesa->CMD = 0x%x\n", vmesa->CMD); */
-
-       vmesa->TexOffset = vmesa->s3vScreen->texOffset;
-
-       s3vInitVB( ctx );
-       s3vInitExtensions( ctx );
-       s3vInitDriverFuncs( ctx );
-       s3vInitStateFuncs( ctx );
-       s3vInitSpanFuncs( ctx );
-       s3vInitTextureFuncs( ctx );
-       s3vInitTriFuncs( ctx );
-       s3vInitState( vmesa );
-
-       driContextPriv->driverPrivate = (void *)vmesa;
-
-       /* HACK */
-       vmesa->bufSize = S3V_DMA_BUF_SZ;
-
-       DEBUG(("vmesa->bufSize = %i\n", vmesa->bufSize));
-       DEBUG(("vmesa->bufCount = %i\n", vmesa->bufCount));
-
-
-       /* dma init */
-       DEBUG_BUFS(("GET_FIRST_DMA\n"));
-       
-       vmesa->_bufNum = 0;
-
-       GET_FIRST_DMA(vmesa->driFd, vmesa->hHWContext,
-       1, &(vmesa->bufIndex[0]), &(vmesa->bufSize),
-       &vmesa->_buf[0], &vmesa->bufCount, s3vScrn);
-
-       GET_FIRST_DMA(vmesa->driFd, vmesa->hHWContext,
-    1, &(vmesa->bufIndex[1]), &(vmesa->bufSize),
-    &vmesa->_buf[1], &vmesa->bufCount, s3vScrn);
-
-       vmesa->buf = vmesa->_buf[vmesa->_bufNum];
-       
-/*
-       vmesa->CMD = (AUTO_EXEC_ON | HW_CLIP_ON | DEST_COL_1555
-       | FOG_OFF | ALPHA_OFF | Z_OFF | Z_UPDATE_OFF
-       | DO_GOURAUD_TRI | CMD_3D);
-
-       vmesa->TexOffset = vmesa->s3vScreen->texOffset;
-*/
-
-/* ... but we should support only 15 bit in virge (out of 8/15/24)... */
-
-       DEBUG(("glVisual->depthBits = %i\n", glVisual->depthBits));
-
-       switch (glVisual->depthBits) {
-       case 8:
-               break;
-       
-       case 15:
-       case 16:
-               vmesa->depth_scale = 1.0f / 0xffff; 
-               break;
-       case 24:
-               vmesa->depth_scale = 1.0f / 0xffffff;
-               break;
-       default:
-               break;
-       }
-
-       vmesa->cull_zero = 0.0f;
-
-       vmesa->DepthSize = glVisual->depthBits;
-       vmesa->Flags  = S3V_FRONT_BUFFER;
-       vmesa->Flags |= (glVisual->doubleBufferMode ? S3V_BACK_BUFFER : 0);
-       vmesa->Flags |= (vmesa->DepthSize > 0 ? S3V_DEPTH_BUFFER : 0);
-
-       vmesa->EnabledFlags = S3V_FRONT_BUFFER;
-       vmesa->EnabledFlags |= (glVisual->doubleBufferMode ? S3V_BACK_BUFFER : 0);
-
-
-       if (vmesa->Flags & S3V_BACK_BUFFER) {
-               vmesa->readOffset = vmesa->drawOffset = vmesa->s3vScreen->backOffset;
-       } else {
-               vmesa->readOffset = vmesa->drawOffset = 0;
-       }
-
-       s3vInitHW( vmesa );
-
-       driContextPriv->driverPrivate = (void *)vmesa;
-
-       return GL_TRUE;
-}
diff --git a/src/mesa/drivers/dri/s3v/s3v_context.h b/src/mesa/drivers/dri/s3v/s3v_context.h
deleted file mode 100644 (file)
index 671ba90..0000000
+++ /dev/null
@@ -1,443 +0,0 @@
-/*
- * Author: Max Lingua <sunmax@libero.it>
- */
-
-#ifndef _S3V_CONTEXT_H_
-#define _S3V_CONTEXT_H_
-
-#include "dri_util.h"
-
-#include "s3v_dri.h"
-#include "s3v_regs.h"
-#include "s3v_macros.h"
-#include "s3v_screen.h"
-#include "main/colormac.h"
-#include "main/macros.h"
-#include "main/mtypes.h"
-#include "drm.h"
-#include "main/mm.h"
-#include "drirenderbuffer.h"
-
-/* Flags for context */
-#define S3V_FRONT_BUFFER    0x00000001
-#define S3V_BACK_BUFFER     0x00000002
-#define S3V_DEPTH_BUFFER    0x00000004
-
-       /* FIXME: check */
-#define S3V_MAX_TEXTURE_SIZE    2048
-
-/* These are the minimum requirements and should probably be increased */
-#define MAX_MODELVIEW_STACK    16
-#define MAX_PROJECTION_STACK    2
-#define MAX_TEXTURE_STACK       2
-
-extern void            s3vDDUpdateHWState(GLcontext *ctx);
-extern s3vScreenPtr    s3vCreateScreen(__DRIscreenPrivate *sPriv);
-extern void            s3vDestroyScreen(__DRIscreenPrivate *sPriv);
-extern GLboolean       s3vCreateContext(const __GLcontextModes *glVisual,
-                                     __DRIcontextPrivate *driContextPriv,
-                                     void *sharedContextPrivate);
-
-#define S3V_UPLOAD_ALL                 0xffffffff
-/* #define S3V_UPLOAD_CLIPRECTS                0x00000002 */
-#define S3V_UPLOAD_ALPHA               0x00000004
-#define S3V_UPLOAD_BLEND               0x00000008
-#define S3V_UPLOAD_DEPTH               0x00000010
-#define S3V_UPLOAD_VIEWPORT            0x00000020
-#define S3V_UPLOAD_SHADE               0x00000040
-#define S3V_UPLOAD_CLIP                        0x00000080
-#define S3V_UPLOAD_MASKS               0x00000100
-#define S3V_UPLOAD_WINDOW              0x00000200 /* defunct */
-#define S3V_UPLOAD_GEOMETRY            0x00000400
-#define S3V_UPLOAD_POLYGON             0x00000800
-#define S3V_UPLOAD_DITHER              0x00001000
-#define S3V_UPLOAD_LOGICOP             0x00002000
-#define S3V_UPLOAD_FOG                 0x00004000
-#define S3V_UPLOAD_LIGHT               0x00008000
-#define S3V_UPLOAD_CONTEXT             0x00010000
-#define S3V_UPLOAD_TEX0                        0x00020000
-#define S3V_UPLOAD_STIPPLE             0x00040000
-#define S3V_UPLOAD_TRANSFORM           0x00080000
-#define S3V_UPLOAD_LINEMODE            0x00100000
-#define S3V_UPLOAD_POINTMODE           0x00200000
-#define S3V_UPLOAD_TRIMODE             0x00400000
-
-#define S3V_NEW_CLIP                   0x00000001
-#define S3V_NEW_WINDOW                 0x00000002
-#define S3V_NEW_CONTEXT                        0x00000004
-#define S3V_NEW_TEXTURE                        0x00000008 /* defunct */
-#define S3V_NEW_ALPHA                  0x00000010
-#define S3V_NEW_DEPTH                  0x00000020
-#define S3V_NEW_MASKS                  0x00000040
-#define S3V_NEW_POLYGON                        0x00000080
-#define S3V_NEW_CULL                   0x00000100
-#define S3V_NEW_LOGICOP                        0x00000200
-#define S3V_NEW_FOG                    0x00000400
-#define S3V_NEW_LIGHT                  0x00000800
-#define S3V_NEW_STIPPLE                        0x00001000
-#define S3V_NEW_ALL                    0xffffffff
-
-#define S3V_FALLBACK_TRI               0x00000001
-#define S3V_FALLBACK_TEXTURE           0x00000002
-
-struct s3v_context;
-typedef struct s3v_context s3vContextRec;
-typedef struct s3v_context *s3vContextPtr;
-typedef struct s3v_texture_object_t *s3vTextureObjectPtr;
-
-#define VALID_S3V_TEXTURE_OBJECT(tobj)  (tobj) 
-
-#define S3V_TEX_MAXLEVELS 12
-
-/* For shared texture space managment, these texture objects may also
- * be used as proxies for regions of texture memory containing other
- * client's textures.  Such proxy textures (not to be confused with GL
- * proxy textures) are subject to the same LRU aging we use for our
- * own private textures, and thus we have a mechanism where we can
- * fairly decide between kicking out our own textures and those of
- * other clients.
- *
- * Non-local texture objects have a valid MemBlock to describe the
- * region managed by the other client, and can be identified by
- * 't->globj == 0' 
- */
-struct s3v_texture_object_t {
-       struct s3v_texture_object_t *next, *prev;
-
-       GLuint age;   
-       struct gl_texture_object *globj;
-     
-       int Pitch;
-       int Height;
-       int WidthLog2;
-       int texelBytes;
-       int totalSize;
-       int bound;
-
-       struct mem_block *MemBlock;   
-       GLuint BufAddr;
-   
-       GLuint min_level;
-       GLuint max_level;
-       GLuint dirty_images;
-
-       GLint firstLevel, lastLevel;  /* upload tObj->Image[first .. lastLevel] */
-
-       struct { 
-               const struct gl_texture_image *image;
-               int offset;             /* into BufAddr */
-               int height;
-               int internalFormat;
-       } image[S3V_TEX_MAXLEVELS];
-
-       GLuint TextureCMD;
-
-       GLuint TextureColorMode;
-       GLuint TextureFilterMode;
-       GLuint TextureBorderColor;
-       GLuint TextureWrap;
-       GLuint TextureMipSize;
-
-       GLuint TextureBaseAddr[S3V_TEX_MAXLEVELS];
-       GLuint TextureFormat;
-       GLuint TextureReadMode;
-};             
-
-#define S3V_NO_PALETTE        0x0
-#define S3V_USE_PALETTE       0x1
-#define S3V_UPDATE_PALETTE    0x2
-#define S3V_FALLBACK_PALETTE  0x4
-
-void s3vUpdateTextureState( GLcontext *ctx );
-
-void s3vDestroyTexObj( s3vContextPtr vmesa, s3vTextureObjectPtr t);
-void s3vUploadTexImages( s3vContextPtr vmesa, s3vTextureObjectPtr t );
-
-void s3vResetGlobalLRU( s3vContextPtr vmesa );
-void s3vTexturesGone( s3vContextPtr vmesa, 
-                      GLuint start, GLuint end, 
-                      GLuint in_use ); 
-
-void s3vEmitHwState( s3vContextPtr vmesa );
-void s3vGetLock( s3vContextPtr vmesa, GLuint flags );
-void s3vInitExtensions( GLcontext *ctx );
-void s3vInitDriverFuncs( GLcontext *ctx );
-void s3vSetSpanFunctions(driRenderbuffer *rb, const GLvisual *vis);
-void s3vInitState( s3vContextPtr vmesa );
-void s3vInitHW( s3vContextPtr vmesa );
-void s3vInitStateFuncs( GLcontext *ctx );
-void s3vInitTextureFuncs( GLcontext *ctx );
-void s3vInitTriFuncs( GLcontext *ctx );
-
-void s3vUpdateWindow( GLcontext *ctx );
-void s3vUpdateViewportOffset( GLcontext *ctx );
-
-void s3vPrintLocalLRU( s3vContextPtr vmesa );
-void s3vPrintGlobalLRU( s3vContextPtr vmesa );
-
-extern void s3vFallback( s3vContextPtr vmesa, GLuint bit, GLboolean mode );
-#define FALLBACK( imesa, bit, mode ) s3vFallback( imesa, bit, mode )
-
-/* Use the templated vertex formats.  Only one of these is used in s3v.
- */
-#define TAG(x) s3v##x
-#include "tnl_dd/t_dd_vertex.h"
-#undef TAG
-
-typedef void (*s3v_quad_func)( s3vContextPtr, 
-                               const s3vVertex *, 
-                               const s3vVertex *,
-                               const s3vVertex *,
-                               const s3vVertex * );
-typedef void (*s3v_tri_func)( s3vContextPtr, 
-                               const s3vVertex *, 
-                               const s3vVertex *,
-                               const s3vVertex * );
-typedef void (*s3v_line_func)( s3vContextPtr, 
-                               const s3vVertex *, 
-                               const s3vVertex * );
-typedef void (*s3v_point_func)( s3vContextPtr, 
-                                const s3vVertex * );
-
-
-/* static void s3v_lines_emit(GLcontext *ctx, GLuint start, GLuint end); */
-typedef void (*emit_func)( GLcontext *, GLuint, GLuint);
-
-struct s3v_context {
-       GLcontext               *glCtx;         /* Mesa context */
-
-       __DRIcontextPrivate     *driContext;
-       __DRIscreenPrivate      *driScreen;
-       __DRIdrawablePrivate    *driDrawable;
-
-       GLuint new_gl_state;
-       GLuint new_state;
-       GLuint dirty;
-
-       S3VSAREAPtr     sarea; 
-
-       /* Temporaries for translating away float colors
-        */
-       struct gl_client_array UbyteColor;
-       struct gl_client_array UbyteSecondaryColor;
-
-       /* Mirrors of some DRI state
-        */
-
-       drm_context_t hHWContext;
-       drmLock *driHwLock;
-       int driFd;
-
-       GLuint numClipRects;            /* Cliprects for the draw buffer */
-       drm_clip_rect_t *pClipRects;
-
-       GLuint* buf;                    /* FIXME */
-       GLuint* _buf[2];
-       int             _bufNum;
-       int             bufIndex[2];
-       int             bufSize;
-       int             bufCount;
-
-       s3vScreenPtr    s3vScreen;              /* Screen private DRI data */
-
-       int             drawOffset;
-       int             readOffset;
-
-       s3v_point_func  draw_point;
-       s3v_line_func   draw_line;
-       s3v_tri_func    draw_tri;
-       s3v_quad_func   draw_quad;
-
-       GLuint Fallback;
-       GLuint RenderIndex;
-       GLuint SetupNewInputs;
-       GLuint SetupIndex;
-
-       GLuint vertex_format;
-       GLuint vertex_size;
-       GLuint vertex_stride_shift;
-       char *verts;
-
-       GLfloat hw_viewport[16];
-       GLuint hw_primitive;
-       GLenum render_primitive;
-
-       GLfloat depth_scale;
-
-       s3vTextureObjectPtr CurrentTexObj[2];
-       struct s3v_texture_object_t TexObjList;
-       struct s3v_texture_object_t SwappedOut; 
-       GLenum TexEnvImageFmt[2];
-
-       struct mem_block *texHeap;
-
-       int lastSwap;
-       int texAge;
-       int ctxAge;
-       int dirtyAge;
-       int lastStamp;
-
-       /* max was here: don't touch */
-   
-       unsigned int S3V_REG[S3V_REGS_NUM];
-
-       GLuint texMode;
-       GLuint alphaMode;
-       GLuint lightMode;
-
-       GLuint SrcBase;
-       GLuint DestBase;
-       GLuint DestBlit;
-       GLuint ScissorLR;
-       GLuint ScissorTB;
-       GLuint ScissorWH; /* SubScissorWH */ /* RectWH */
-       GLuint FrontStride;
-       GLuint BackStride;
-       GLuint SrcStride;
-       GLuint DestStride;
-       GLuint SrcXY;
-       GLuint DestXY;
-
-       GLuint ClearColor;
-       GLuint Color;
-       GLuint DitherMode;
-       GLuint ClearDepth;
-
-       GLuint TextureBorderColor;
-       GLuint TexOffset;
-       GLuint TexStride;
-
-       GLuint CMD;
-       GLuint prim_cmd;
-       GLuint _tri[2]; /* 0 = gouraud; 1 = tex (lit or unlit) */
-       GLuint alpha_cmd; /* actual alpha cmd */
-       GLuint _alpha[2];
-       GLuint _alpha_tex; /* tex alpha type */
-       /* (3d_mode) 0 = 3d line/gourad tri; 1 = 3d tex tri */
-       GLuint _3d_mode;
-       
-       GLfloat backface_sign;
-       GLfloat cull_zero;
-
-       int restore_primitive;
-
-/* *** 2check *** */
-
-       GLuint          FogMode;
-       GLuint          AreaStippleMode;
-       GLuint          LBReadFormat;
-       GLuint          LBWriteFormat;
-       GLuint          LineMode;
-       GLuint          PointMode;
-       GLuint          TriangleMode;
-       GLuint          AntialiasMode;
-       GLfloat         ViewportScaleX;
-       GLfloat         ViewportScaleY;
-       GLfloat         ViewportScaleZ;
-       GLfloat         ViewportOffsetX;
-       GLfloat         ViewportOffsetY;
-       GLfloat         ViewportOffsetZ;
-       int             MatrixMode;
-       int             DepthMode;
-       int             TransformMode;
-       int             LBReadMode;
-       int             FBReadMode;
-       int             FBWindowBase;
-       int             LBWindowBase;
-       int             ColorDDAMode;
-       int             GeometryMode;
-       int             AlphaTestMode;
-       int             AlphaBlendMode;
-       int             AB_FBReadMode;
-       int             AB_FBReadMode_Save;
-       int             DeltaMode;
-       int             ColorMaterialMode;
-       int             FBHardwareWriteMask;
-       int             MaterialMode;
-       int             NormalizeMode;
-       int             LightingMode;
-       int             Light0Mode;
-       int             Light1Mode;
-       int             Light2Mode;
-       int             Light3Mode;
-       int             Light4Mode;
-       int             Light5Mode;
-       int             Light6Mode;
-       int             Light7Mode;
-       int             Light8Mode;
-       int             Light9Mode;
-       int             Light10Mode;
-       int             Light11Mode;
-       int             Light12Mode;
-       int             Light13Mode;
-       int             Light14Mode;
-       int             Light15Mode;
-       int             LogicalOpMode;
-       int             ScissorMode;
-       int             ScissorMaxXY;
-       int             ScissorMinXY;
-       int             Window; /* GID part probably should be in draw priv */
-       int             WindowOrigin;
-       int             x, y, w, h; /* Probably should be in drawable priv */
-       int             FrameCount; /* Probably should be in drawable priv */
-       int             NotClipped; /* Probably should be in drawable priv */
-       int             WindowChanged; /* Probably should be in drawabl... */
-       int             Flags;
-       int             EnabledFlags;
-       int             DepthSize;
-       int             Begin;
-       GLenum          ErrorValue;
-       int             Texture1DEnabled;
-       int             Texture2DEnabled;
-
-       float           ModelView[16];
-       float           Proj[16];
-       float           ModelViewProj[16];
-       float           Texture[16];
-
-       float           ModelViewStack[(MAX_MODELVIEW_STACK-1)*16];
-       int             ModelViewCount;
-       float           ProjStack[(MAX_PROJECTION_STACK-1)*16];
-       int             ProjCount;
-       float           TextureStack[(MAX_TEXTURE_STACK-1)*16];
-       int             TextureCount;
-};
-
-#define S3VIRGEPACKCOLOR555( r, g, b, a ) \
-    ((((r) & 0xf8) << 7) | (((g) & 0xf8) << 2) | (((b) & 0xf8) >> 3) | \
-     ((a) ? 0x8000 : 0))
-
-#define S3VIRGEPACKCOLOR565( r, g, b ) \
-    ((((r) & 0xf8) << 8) | (((g) & 0xfc) << 3) | (((b) & 0xf8) >> 3))
-
-#define S3VIRGEPACKCOLOR888( r, g, b ) \
-    (((r) << 16) | ((g) << 8) | (b))
-
-#define S3VIRGEPACKCOLOR8888( r, g, b, a ) \
-    (((a) << 24) | ((r) << 16) | ((g) << 8) | (b))
-
-#define S3VIRGEPACKCOLOR4444( r, g, b, a ) \
-    ((((a) & 0xf0) << 8) | (((r) & 0xf0) << 4) | ((g) & 0xf0) | ((b) >> 4))
-
-static INLINE GLuint s3vPackColor( GLuint cpp,
-                                   GLubyte r, GLubyte g,
-                                   GLubyte b, GLubyte a )
-{
-       unsigned int ret;
-       DEBUG(("cpp = %i, r=0x%x, g=0x%x, b=0x%x, a=0x%x\n", cpp, r, g, b, a));
-
-       switch ( cpp ) {
-       case 2:
-               ret = S3VIRGEPACKCOLOR555( r, g, b, a );
-               DEBUG(("ret = 0x%x\n", ret));
-               return ret;
-       case 4:
-               return PACK_COLOR_8888( a, r, g, b );
-       default:
-       return 0;
-       }
-}
-
-#define S3V_CONTEXT(ctx)       ((s3vContextPtr)(ctx->DriverCtx))
-
-#endif /* _S3V_CONTEXT_H_ */
diff --git a/src/mesa/drivers/dri/s3v/s3v_dd.c b/src/mesa/drivers/dri/s3v/s3v_dd.c
deleted file mode 100644 (file)
index e340116..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Author: Max Lingua <sunmax@libero.it>
- */
-
-#include "s3v_context.h"
-#include "s3v_vb.h"
-#include "s3v_lock.h"
-#if defined(USE_X86_ASM)
-#include "x86/common_x86_asm.h"
-#endif
-
-#include "main/context.h"
-#include "main/framebuffer.h"
-#include "swrast/swrast.h"
-
-#define S3V_DATE "20020207"
-
-
-/* Return the width and height of the current color buffer.
- */
-static void s3vDDGetBufferSize( GLframebuffer *buffer,
-                                GLuint *width, GLuint *height )
-{
-   GET_CURRENT_CONTEXT(ctx);
-   s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-
-/* S3VHW_LOCK( vmesa ); */
-   *width  = vmesa->driDrawable->w;
-   *height = vmesa->driDrawable->h;
-/* S3VHW_UNLOCK( vmesa ); */
-}
-
-
-/* Return various strings for glGetString().
- */
-static const GLubyte *s3vDDGetString( GLcontext *ctx, GLenum name )
-{
-   static char buffer[128];
-
-   switch ( name ) {
-   case GL_VENDOR:
-      return (GLubyte *)"Max Lingua (ladybug)";
-
-   case GL_RENDERER:
-      sprintf( buffer, "Mesa DRI S3 Virge " S3V_DATE );
-
-      /* Append any CPU-specific information.
-       */
-#ifdef USE_X86_ASM
-      if ( _mesa_x86_cpu_features ) {
-        strncat( buffer, " x86", 4 );
-      
-}
-#ifdef USE_MMX_ASM
-      if ( cpu_has_mmx ) {
-        strncat( buffer, "/MMX", 4 );
-      }
-#endif
-#ifdef USE_3DNOW_ASM
-      if ( cpu_has_3dnow ) {
-        strncat( buffer, "/3DNow!", 7 );
-      }
-#endif
-#ifdef USE_SSE_ASM
-      if ( cpu_has_xmm ) {
-        strncat( buffer, "/SSE", 4 );
-      }
-#endif
-#endif
-      return (GLubyte *)buffer;
-
-   default:
-      return NULL;
-   }
-}
-
-/* Enable the extensions supported by this driver.
- */
-void s3vInitExtensions( GLcontext *ctx )
-{
-   /* None... */
-}
-
-/* Initialize the driver's misc functions.
- */
-void s3vInitDriverFuncs( GLcontext *ctx )
-{
-   ctx->Driver.GetBufferSize = s3vDDGetBufferSize;
-   ctx->Driver.GetString = s3vDDGetString;
-}
diff --git a/src/mesa/drivers/dri/s3v/s3v_dri.h b/src/mesa/drivers/dri/s3v/s3v_dri.h
deleted file mode 100644 (file)
index 339c579..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Author: Max Lingua <sunmax@libero.it>
- */
-
-#ifndef _S3V_DRI
-#define _S3V_DRI
-
-#include "s3v_common.h"
-
-#define S3V_MAX_DRAWABLES (S3V_DMA_BUF_NR/2) /* 32 */ /* 256 */ /* FIXME */
-
-typedef struct
-{
-   int deviceID;
-   int width;
-   int height;
-   int mem;
-   int cpp;
-   int bitsPerPixel;
-
-   int fbOffset;
-   int fbStride;
-
-   int logTextureGranularity;
-   int textureOffset; 
-
-   drm_handle_t regs;
-   drmSize regsSize;
-
-   unsigned int sarea_priv_offset;
-/*
-   drmAddress regsMap;
-
-   drmSize textureSize;
-   drm_handle_t textures;
-*/
-
-#if 0
-   drm_handle_t agp_buffers;
-   drmSize agp_buf_size;
-#endif
-
-/*
-   drmBufMapPtr drmBufs;
-   int irq;
-   unsigned int sarea_priv_offset;
-*/
-
-/* FIXME: cleanup ! */
-
-   drmSize            registerSize; /* == S3V_MMIO_REGSIZE */
-   drm_handle_t       registerHandle;
-
-   drmSize            pciSize;
-   drm_handle_t       pciMemHandle;
-
-   drmSize            frontSize;    /* == videoRambytes */
-/* drm_handle_t       frontHandle; */
-   unsigned long      frontOffset;  /* == fbOffset */
-   int                frontPitch;
-/* unsigned char      *front; */
-
-   unsigned int       bufferSize; /* size of depth/back buffer */
-
-   drmSize            backSize;
-/* drm_handle_t       backHandle; */
-   unsigned long      backOffset;
-   int                backPitch;
-/* unsigned char      *back; */
-
-   drmSize            depthSize;
-/* drm_handle_t       depthHandle; */
-   unsigned long      depthOffset;
-   int                depthPitch;
-/* unsigned char      *depth; */
-
-   drmSize            texSize;
-/* drm_handle_t       texHandle; */
-   unsigned long      texOffset;
-   int                texPitch;
-/* unsigned char      *tex; */
-
-   drmSize            dmaBufSize;       /* Size of buffers (in bytes) */
-   drm_handle_t       dmaBufHandle;     /* Handle from drmAddMap */
-   unsigned long      dmaBufOffset;     /* Offset/Start */
-   int                dmaBufPitch;      /* Pitch */
-   unsigned char      *dmaBuf;          /* Map */
-   int                bufNumBufs;       /* Number of buffers */
-   drmBufMapPtr       buffers;          /* Buffer map */
-
-} S3VDRIRec, *S3VDRIPtr;
-
-/* WARNING: Do not change the SAREA structure without changing the kernel
- * as well */
-
-typedef struct {
-   unsigned char next, prev; /* indices to form a circular LRU  */
-   unsigned char in_use;   /* owned by a client, or free? */
-   int age;                /* tracked by clients to update local LRU's */
-} S3VTexRegionRec, *S3VTexRegionPtr;
-
-typedef struct {
-   unsigned int nbox;
-   drm_clip_rect_t boxes[S3V_NR_SAREA_CLIPRECTS];
-   
-   /* Maintain an LRU of contiguous regions of texture space.  If
-    * you think you own a region of texture memory, and it has an
-    * age different to the one you set, then you are mistaken and
-    * it has been stolen by another client.  If global texAge
-    * hasn't changed, there is no need to walk the list.
-    *
-    * These regions can be used as a proxy for the fine-grained
-    * texture information of other clients - by maintaining them
-    * in the same lru which is used to age their own textures,
-    * clients have an approximate lru for the whole of global
-    * texture space, and can make informed decisions as to which
-    * areas to kick out.  There is no need to choose whether to
-    * kick out your own texture or someone else's - simply eject
-    * them all in LRU order.  
-    */
-   S3VTexRegionRec texList[S3V_NR_TEX_REGIONS+1]; /* Last elt is sentinal */
-   
-   int texAge;             /* last time texture was uploaded */
-   
-   int last_enqueue;       /* last time a buffer was enqueued */
-   int last_dispatch;      /* age of the most recently dispatched buffer */
-   int last_quiescent;     /*  */
-   
-   int ctxOwner;           /* last context to upload state */
-} S3VSAREARec, *S3VSAREAPtr;
-
-typedef struct {
-  /* Nothing here yet */
-  int dummy;
-} S3VConfigPrivRec, *S3VConfigPrivPtr;
-
-typedef struct {
-  /* Nothing here yet */
-  int dummy;
-} S3VDRIContextRec, *S3VDRIContextPtr;
-
-
-#endif
diff --git a/src/mesa/drivers/dri/s3v/s3v_inithw.c b/src/mesa/drivers/dri/s3v/s3v_inithw.c
deleted file mode 100644 (file)
index bdc9eff..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Author: Max Lingua <sunmax@libero.it>
- */
-
-#include <sys/ioctl.h>
-
-#include "s3v_context.h"
-
-void s3vInitHW( s3vContextPtr vmesa )
-{
-       int i;
-       static short _reset = 1;
-
-       DEBUG(("vmesa->driDrawable = %p\n", vmesa->driDrawable));
-       DEBUG(("stride = %i\n",
-               vmesa->driScreen->fbWidth*vmesa->s3vScreen->cpp));
-       DEBUG(("frontOffset = 0x%x\n", vmesa->s3vScreen->frontOffset));
-       DEBUG(("backOffset = 0x%x\n", vmesa->s3vScreen->backOffset));
-       DEBUG(("depthOffset = 0x%x\n", vmesa->s3vScreen->depthOffset));
-       DEBUG(("textureOffset = 0x%x\n", vmesa->s3vScreen->texOffset));
-
-/*     if (_reset) { */
-/*     ioctl(vmesa->driFd, 0x4a); */
-               ioctl(vmesa->driFd, 0x41); /* reset */
-               _reset = 0;
-/*     ioctl(vmesa->driFd, 0x4c); */
-/*     } */
-
-       /* FIXME */
-       switch (vmesa->s3vScreen->cpp) {
-               case 2:
-                       break;
-               case 4:
-                       break;
-       }
-
-       /* FIXME for stencil, gid, etc */
-       switch (vmesa->DepthSize) {
-               case 15:
-               case 16:
-                       break;
-               case 24:
-                       break;
-               case 32:
-                       break;
-       }
-
-       vmesa->FogMode = 1;
-       vmesa->ClearDepth = 0xffff;
-       vmesa->x = 0;
-       vmesa->y = 0;
-       vmesa->w = 0;
-       vmesa->h = 0;
-       vmesa->FrameCount = 0;
-       vmesa->MatrixMode = GL_MODELVIEW;
-       vmesa->ModelViewCount = 0;
-       vmesa->ProjCount = 0;
-       vmesa->TextureCount = 0;
-
-
-       /* FIXME: do we need the following? */
-
-       for (i = 0; i < 16; i++)
-               if (i % 5 == 0)
-                       vmesa->ModelView[i] =
-                       vmesa->Proj[i] =
-                       vmesa->ModelViewProj[i] =
-                       vmesa->Texture[i] = 1.0;
-               else
-                       vmesa->ModelView[i] =
-                       vmesa->Proj[i] =
-                       vmesa->ModelViewProj[i] =
-                       vmesa->Texture[i] = 0.0;
-
-       vmesa->LBWindowBase = vmesa->driScreen->fbWidth *
-                               (vmesa->driScreen->fbHeight - 1);
-       vmesa->FBWindowBase = vmesa->driScreen->fbWidth * 
-                               (vmesa->driScreen->fbHeight - 1);
-}
diff --git a/src/mesa/drivers/dri/s3v/s3v_lock.c b/src/mesa/drivers/dri/s3v/s3v_lock.c
deleted file mode 100644 (file)
index 52bb87e..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Author: Max Lingua <sunmax@libero.it>
- */
-
-#include "s3v_context.h"
-
-#if DEBUG_LOCKING
-char *prevLockFile = NULL;
-int prevLockLine = 0;
-#endif
-
-
-/* Update the hardware state.  This is called if another context has
- * grabbed the hardware lock, which includes the X server.  This
- * function also updates the driver's window state after the X server
- * moves, resizes or restacks a window -- the change will be reflected
- * in the drawable position and clip rects.  Since the X server grabs
- * the hardware lock when it changes the window state, this routine will
- * automatically be called after such a change.
- */
-void s3vGetLock( s3vContextPtr vmesa, GLuint flags )
-{
-   __DRIdrawablePrivate *dPriv = vmesa->driDrawable;
-/*   __DRIscreenPrivate *sPriv = vmesa->driScreen; */
-
-   printf("s3vGetLock <- ***\n");
-
-   drmGetLock( vmesa->driFd, vmesa->hHWContext, flags );
-
-   /* The window might have moved, so we might need to get new clip
-    * rects.
-    *
-    * NOTE: This releases and regrabs the hw lock to allow the X server
-    * to respond to the DRI protocol request for new drawable info.
-    * Since the hardware state depends on having the latest drawable
-    * clip rects, all state checking must be done _after_ this call.
-    */
-   /* DRI_VALIDATE_DRAWABLE_INFO( vmesa->display, sPriv, dPriv ); */
-
-   if ( vmesa->lastStamp != dPriv->lastStamp ) {
-      vmesa->lastStamp = dPriv->lastStamp;
-      vmesa->new_state |= S3V_NEW_WINDOW | S3V_NEW_CLIP;
-   }
-
-   vmesa->numClipRects = dPriv->numClipRects;
-   vmesa->pClipRects = dPriv->pClipRects;
-
-#if 0
-   vmesa->dirty = ~0;
-
-   if ( sarea->ctxOwner != vmesa->hHWContext ) {
-      sarea->ctxOwner = vmesa->hHWContext;
-      vmesa->dirty = S3V_UPLOAD_ALL;
-   }
-
-   for ( i = 0 ; i < vmesa->lastTexHeap ; i++ ) {
-      if ( sarea->texAge[i] != vmesa->lastTexAge[i] ) {
-        s3vAgeTextures( vmesa, i );
-      }
-   }
-#endif
-}
diff --git a/src/mesa/drivers/dri/s3v/s3v_lock.h b/src/mesa/drivers/dri/s3v/s3v_lock.h
deleted file mode 100644 (file)
index c39d24a..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Author: Max Lingua <sunmax@libero.it>
- */
-
-#ifndef __S3V_LOCK_H__
-#define __S3V_LOCK_H__
-
-#include <sys/ioctl.h>
-
-extern void s3vGetLock( s3vContextPtr vmesa, GLuint flags );
-
-/* Turn DEBUG_LOCKING on to find locking conflicts.
- */
-#define DEBUG_LOCKING  0
-
-#if DEBUG_LOCKING
-extern char *prevLockFile;
-extern int prevLockLine;
-
-#define DEBUG_LOCK() \
-   do {        \
-      prevLockFile = (__FILE__); \
-      prevLockLine = (__LINE__); \
-   } while (0)
-
-#define DEBUG_RESET() \
-   do {        \
-      prevLockFile = 0;        \
-      prevLockLine = 0;        \
-   } while (0)
-
-#define DEBUG_CHECK_LOCK() \
-   do {        \
-      if ( prevLockFile ) { \
-        fprintf( stderr, \
-                 "LOCK SET!\n\tPrevious %s:%d\n\tCurrent: %s:%d\n", \
-                 prevLockFile, prevLockLine, __FILE__, __LINE__ );     \
-        exit(1); \
-      }        \
-   } while (0)
-
-#else
-
-#define DEBUG_LOCK()
-#define DEBUG_RESET()
-#define DEBUG_CHECK_LOCK()
-
-#endif
-
-/*
- * !!! We may want to separate locks from locks with validation.  This
- * could be used to improve performance for those things commands that
- * do not do any drawing !!!
- */
-
-/* Lock the hardware and validate our state.
- */
-#define LOCK_HARDWARE( vmesa ) \
-   do {        \
-      char __ret = 0; \
-      DEBUG_CHECK_LOCK(); \
-      DRM_CAS( vmesa->driHwLock, vmesa->hHWContext, \
-              (DRM_LOCK_HELD | vmesa->hHWContext), __ret ); \
-      if ( __ret ) \
-         s3vGetLock( vmesa, 0 ); \
-      DEBUG_LOCK(); \
-   } while (0)
-
-/* Unlock the hardware.
- */
-#define UNLOCK_HARDWARE( vmesa ) \
-   do { \
-      DRM_UNLOCK( vmesa->driFd, \
-                 vmesa->driHwLock, \
-                 vmesa->hHWContext ); \
-      DEBUG_RESET(); \
-   } while (0)
-
-#define S3VHW_LOCK( vmesa )    \
-   DRM_UNLOCK(vmesa->driFd, vmesa->driHwLock, vmesa->hHWContext); \
-   DRM_SPINLOCK(&vmesa->driScreen->pSAREA->drawable_lock, \
-                vmesa->driScreen->drawLockID); \
-   /* VALIDATE_DRAWABLE_INFO_NO_LOCK(vmesa); */
-
-#define S3VHW_UNLOCK( vmesa ) \
-    DRM_SPINUNLOCK(&vmesa->driScreen->pSAREA->drawable_lock, \
-                  vmesa->driScreen->drawLockID); \
-    /* VALIDATE_DRAWABLE_INFO_NO_LOCK_POST(vmesa); */
-
-#define S3V_SIMPLE_LOCK( vmesa ) \
-       ioctl(vmesa->driFd, 0x4a) 
-
-#define S3V_SIMPLE_FLUSH_LOCK( vmesa ) \
-       ioctl(vmesa->driFd, 0x4b) 
-
-#define S3V_SIMPLE_UNLOCK( vmesa ) \
-       ioctl(vmesa->driFd, 0x4c) 
-
-#endif /* __S3V_LOCK_H__ */
diff --git a/src/mesa/drivers/dri/s3v/s3v_macros.h b/src/mesa/drivers/dri/s3v/s3v_macros.h
deleted file mode 100644 (file)
index 7e9b452..0000000
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * Author: Max Lingua <sunmax@libero.it>
- */
-
-#ifndef _S3V_MACROS_H_
-#define _S3V_MACROS_H_
-
-/**************/
-/* DRI macros */
-/**************/
-
-#define GENERIC_DEBUG 0
-#define FLOW_DEBUG    0
-#define DMABUFS_DEBUG 0
-
-/* Note: The argument to DEBUG*() _must_ be enclosed in parenthesis */
-
-#if (GENERIC_DEBUG || FLOW_DEBUG || DMABUFS_DEBUG)
-#include <stdio.h>
-#endif
-
-#undef DEBUG
-#if GENERIC_DEBUG
-#define DEBUG(str) printf str
-#else
-#define DEBUG(str)
-#endif
-
-#if FLOW_DEBUG
-#define DEBUG_WHERE(str) printf str
-#else
-#define DEBUG_WHERE(str)
-#endif
-
-#if DMABUFS_DEBUG
-#define DEBUG_BUFS(str) printf str
-#else
-#define DEBUG_BUFS(str)
-#endif
-
-
-#if 0
-#define S3V_DMA_SEND_FLAGS    DRM_DMA_PRIORITY
-#define S3V_DMA_SEND_FLAGS    DRM_DMA_BLOCK
-#else
-#define S3V_DMA_SEND_FLAGS    0
-#endif
-
-#if 0
-#define S3V_DMA_GET_FLAGS     \
-    (DRM_DMA_SMALLER_OK | DRM_DMA_LARGER_OK | DRM_DMA_WAIT)
-#else
-#define S3V_DMA_GET_FLAGS     DRM_DMA_WAIT
-#endif
-
-
-#define DMAOUT_CHECK(reg,len) \
-do { \
-       DEBUG(("DMAOUT_CHECK: reg = 0x%x\n", S3V_##reg##_REG)); \
-       DEBUG_BUFS(("DMAOUT_CHECK (was): ")); \
-       DEBUG_BUFS(("vmesa->bufCount=%i of vmesa->bufSize=%i\n", \
-               vmesa->bufCount, vmesa->bufSize)); \
-       /* FIXME: > or >= */ \
-       if (vmesa->bufCount+(len+1) >= vmesa->bufSize) \
-               DMAFLUSH(); \
-\
-       vmesa->bufCount += (len+1); \
-       DEBUG_BUFS(("DMAOUT_CHECK (is): vmesa->bufCount=%i len=%i, reg=%x\n", \
-               vmesa->bufCount, len, S3V_##reg##_REG)); \
-       DMAOUT( ((len & 0xffff) | ((S3V_##reg##_REG & 0xfffc) << 14)) );  \
-} while (0)
-
-#define DMAOUT(val) \
-do { \
-       *(vmesa->buf++)=val; \
-       DEBUG_BUFS(("DMAOUT: val=0x%x\n", (unsigned int)val)); \
-} while(0)
-
-#define DMAFINISH()    \
-do { \
-       /* NOTE: it does nothing - it just prints some summary infos */ \
-       DEBUG(("DMAFINISH: vmesa->bufCount=%i\n", vmesa->bufCount)); \
-       DEBUG(("buf: index=%i; addr=%p\n", vmesa->bufIndex[vmesa->_bufNum], \
-       vmesa->s3vScreen->bufs->list[vmesa->bufIndex[vmesa->_bufNum]].address)); \
-} while(0)
-
-#define DMAFLUSH() \
-do { \
-       if (vmesa->bufCount) { \
-               SEND_DMA(vmesa->driFd, vmesa->hHWContext, 1, \
-                       &vmesa->bufIndex[vmesa->_bufNum], &vmesa->bufCount); \
-/*
-               GET_DMA(vmesa->driFd, vmesa->hHWContext, 1, \
-                       &vmesa->bufIndex, &vmesa->bufSize); \
-*/ \
-               vmesa->_bufNum = !(vmesa->_bufNum); \
-               vmesa->buf = vmesa->_buf[vmesa->_bufNum]; \
-/* 
-               vmesa->buf = \
-                       vmesa->s3vScreen->bufs->list[vmesa->bufIndex].address; \
-*/ \
-               vmesa->bufCount = 0; \
-       } \
-} while (0)
-
-#define CMDCHANGE() \
-do { \
-       DMAOUT_CHECK(3DTRI_CMDSET, 1); /* FIXME: TRI/LINE */ \
-               DMAOUT(vmesa->CMD); \
-       DMAFINISH(); \
-} while (0)
-
-#ifdef DONT_SEND_DMA
-#define GET_DMA(fd, hHWCtx, n, idx, size)
-#define SEND_DMA(fd, hHWCtx,n, idx, cnt)
-#else
-#define GET_DMA(fd, hHWCtx, n, idx, size) \
-do { \
-       drmDMAReq dma; \
-       int retcode, i; \
-\
-       DEBUG(("GET_DMA: ")); \
-       DEBUG(("req_count=%i; req_list[#0]=%i; req_size[#0]=%i\n", \
-               n, (idx)[n-1], (size)[n-1])); \
-\
-       dma.context       = (hHWCtx); \
-       dma.send_count    = 0; \
-       dma.send_list     = NULL; \
-       dma.send_sizes    = NULL; \
-       dma.flags         = S3V_DMA_GET_FLAGS; \
-       dma.request_count = (n); \
-       dma.request_size  = S3V_DMA_BUF_SZ; \
-       dma.request_list  = (idx); \
-       dma.request_sizes = (size); \
-\
-       do { \
-               if ((retcode = drmDMA((fd), &dma))) { \
-               DEBUG_BUFS(("drmDMA (get) returned %d\n", retcode)); \
-       } \
-} while (!(dma).granted_count); \
-\
-       for (i = 0; i < (n); i++) { \
-               DEBUG(("Got buffer %i (index #%i)\n", (idx)[i], i)); \
-               DEBUG(("of %i bytes (%i words) size\n", \
-                       (size)[i], (size)[i] >>2)); \
-               /* Convert from bytes to words */ \
-               (size)[i] >>= 2; \
-       } \
-} while (0)
-
-#define SEND_DMA(fd, hHWCtx, n, idx, cnt) \
-do { \
-       drmDMAReq dma; \
-       int retcode, i; \
-\
-       DEBUG(("SEND_DMA: ")); \
-       DEBUG(("send_count=%i; send_list[#0]=%i; send_sizes[#0]=%i\n", \
-               n, (idx)[n-1], (cnt)[n-1])); \
-\
-       for (i = 0; i < (n); i++) { \
-               /* Convert from words to bytes */ \
-               (cnt)[i] <<= 2; \
-       } \
-\
-       dma.context       = (hHWCtx); \
-       dma.send_count    = (n); \
-       dma.send_list     = (idx); \
-       dma.send_sizes    = (cnt); \
-       dma.flags         = S3V_DMA_SEND_FLAGS; \
-       dma.request_count = 0; \
-       dma.request_size  = 0; \
-       dma.request_list  = NULL; \
-       dma.request_sizes = NULL; \
-\
-       if ((retcode = drmDMA((fd), &dma))) { \
-               DEBUG_BUFS(("drmDMA (send) returned %d\n", retcode)); \
-       } \
-\
-       for (i = 0; i < (n); i++) { \
-               DEBUG(("Sent buffer %i (index #%i)\n", (idx)[i], i)); \
-               DEBUG(("of %i bytes (%i words) size\n", \
-                       (cnt)[i], (cnt)[i] >>2)); \
-               (cnt)[i] = 0; \
-       } \
-} while (0)
-#endif /* DONT_SEND_DMA */
-
-#define GET_FIRST_DMA(fd, hHWCtx, n, idx, size, buf, cnt, vPriv) \
-do { \
-       int i; \
-       DEBUG_BUFS(("GET_FIRST_DMA\n")); \
-       DEBUG_BUFS(("n=%i idx=%i size=%i\n", n, *idx, *size)); \
-       DEBUG_BUFS(("going to GET_DMA\n")); \
-       GET_DMA(fd, hHWCtx, n, idx, size); \
-       DEBUG_BUFS(("coming from GET_DMA\n")); \
-       DEBUG_BUFS(("n=%i idx=%i size=%i\n", n, (idx)[0], (size)[0])); \
-       for (i = 0; i < (n); i++) { \
-               DEBUG_BUFS(("buf #%i @%p\n", \
-                       i, (vPriv)->bufs->list[(idx)[i]].address)); \
-               (buf)[i] = (vPriv)->bufs->list[(idx)[i]].address; \
-               (cnt)[i] = 0; \
-       } \
-       DEBUG(("GOING HOME\n")); \
-} while (0)
-
-/**************************/
-/* generic, global macros */
-/**************************/
-
-#define CALC_LOG2(l2,s) \
-do { \
-       int __s = s; \
-       l2 = 0; \
-       while (__s > 1) { ++l2; __s >>= 1; } \
-} while (0)
-
-#define PrimType_Null               0x00000000
-#define PrimType_Points             0x10000000
-#define PrimType_Lines              0x20000000
-#define PrimType_LineLoop           0x30000000
-#define PrimType_LineStrip          0x40000000
-#define PrimType_Triangles          0x50000000
-#define PrimType_TriangleStrip      0x60000000
-#define PrimType_TriangleFan        0x70000000
-#define PrimType_Quads              0x80000000
-#define PrimType_QuadStrip          0x90000000
-#define PrimType_Polygon            0xa0000000
-#define PrimType_Mask               0xf0000000
-
-#endif /* _S3V_MACROS_H_ */
diff --git a/src/mesa/drivers/dri/s3v/s3v_regs.h b/src/mesa/drivers/dri/s3v/s3v_regs.h
deleted file mode 100644 (file)
index 26a7c54..0000000
+++ /dev/null
@@ -1,367 +0,0 @@
-/*
- * Author: Max Lingua <sunmax@libero.it>
- */
-
-#ifndef _S3V_REG_H
-#define _S3V_REG_H
-
-#define S3V_REGS_NUM 256
-
-/************
- * DMA REGS *
- ************/
-
-#define S3V_DMA_ID                             0
-#define S3V_DMA_REG                            0x8590
-#define S3V_DMA_WRITEP_ID                      1
-#define S3V_DMA_WRITEP_REG                     0x8594
-#define S3V_DMA_READP_ID                       2
-#define S3V_DMA_READP_REG                      0x8598
-#define S3V_DMA_ENABLE_ID                      3
-#define S3V_DMA_ENABLE_REG                     0x859C
-#define S3V_DMA_UPDATE_ID                      4
-#define S3V_DMA_UPDATE_REG                     0x10000
-
-/***************
- * STATUS REGS *
- ***************/
-
-#define S3V_STAT_ID                            10
-#define S3V_STAT_REG                           0x8504
-#define S3V_STAT_VSYNC_ID                      11
-#define S3V_STAT_VSYNC_REG                     0x8505
-#define S3V_STAT_3D_DONE_ID                    12
-#define S3V_STAT_3D_DONE_REG                   0x8506
-#define S3V_STAT_FIFO_OVER_ID                  13
-#define S3V_STAT_FIFO_OVER_REG                 0x8508
-#define S3V_STAT_FIFO_EMPTY_ID                 14
-#define S3V_STAT_FIFO_EMPTY_REG                        0x850C
-#define S3V_STAT_HDMA_DONE_ID                  15
-#define S3V_STAT_HDMA_DONE_REG                 0x8514
-#define S3V_STAT_CDMA_DONE_ID                  16
-#define S3V_STAT_CDMA_DONE_REG                 0x8524
-#define S3V_STAT_3D_FIFO_EMPTY_ID              17
-#define S3V_STAT_3D_FIFO_EMPTY_REG             0x8544
-#define S3V_STAT_LPB_ID                                18
-#define S3V_STAT_LPB_REG                       0x8584
-#define S3V_STAT_3D_BUSY_ID                    19
-#define S3V_STAT_3D_BUSY_REG                   0x8704
-
-/***********
- * 2D REGS *
- ***********/
-
-#define S3V_BITBLT_ID                          30
-#define S3V_BITBLT_REG                         0xA400
-#define S3V_BITBLT_SRC_BASE_ID                 31
-#define S3V_BITBLT_SRC_BASE_REG                        0xA4D4
-#define S3V_BITBLT_DEST_BASE_ID                        32
-#define S3V_BITBLT_DEST_BASE_REG               0xA4D8
-#define S3V_BITBLT_CLIP_L_R_ID                 33
-#define S3V_BITBLT_CLIP_L_R_REG                        0xA4DC
-#define S3V_BITBLT_CLIP_T_B_ID                 34
-#define S3V_BITBLT_CLIP_T_B_REG                        0xA4E0
-#define S3V_BITBLT_DEST_SRC_STRIDE_ID          35
-#define S3V_BITBLT_DEST_SRC_STRIDE_REG         0xA4E4
-#define S3V_BITBLT_MONO_PAT0_ID                        36
-#define S3V_BITBLT_MONO_PAT0_REG               0xA4E8
-#define S3V_BITBLT_MONO_PAT1_ID                        37
-#define S3V_BITBLT_MONO_PAT1_REG               0xA4EC
-#define S3V_BITBLT_PAT_BG_COLOR_ID             38
-#define S3V_BITBLT_PAT_BG_COLOR_REG            0xA4F0
-#define S3V_BITBLT_PAT_FG_COLOR_ID             39
-#define S3V_BITBLT_PAT_FG_COLOR_REG            0xA4F4
-#define S3V_BITBLT_CMDSET_ID                   40
-#define S3V_BITBLT_CMDSET_REG                  0xA500
-#define S3V_BITBLT_WIDTH_HEIGHT_ID             41
-#define S3V_BITBLT_WIDTH_HEIGHT_REG            0xA504
-#define S3V_BITBLT_SRC_X_Y_ID                  42
-#define S3V_BITBLT_SRC_X_Y_REG                 0xA508
-#define S3V_BITBLT_DEST_X_Y_ID                 43
-#define S3V_BITBLT_DEST_X_Y_REG                        0xA50C
-#define S3V_2DLINE_ID                          44
-#define S3V_2DLINE_REG                         0xA800
-#define S3V_2DPOLY_ID                          45
-#define S3V_2DPOLY_REG                         0xAC00
-
-/***************
- * 3DLINE REGS *
- ***************/
-/* base regs */
-#define S3V_3DLINE_ID                                  50
-#define S3V_3DLINE_REG                         0xB000
-#define S3V_3DLINE_Z_BASE_ID                           51
-#define S3V_3DLINE_Z_BASE_REG                  0xB0D4
-#define S3V_3DLINE_SRC_BASE_ID                         52   /* it is the same reg */
-#define S3V_3DLINE_SRC_BASE_REG                        0xB0D4
-#define S3V_3DLINE_DEST_BASE_ID                        53
-#define S3V_3DLINE_DEST_BASE_REG               0xB0D8
-#define S3V_3DLINE_CLIP_L_R_ID                         54
-#define S3V_3DLINE_CLIP_L_R_REG                        0xB0DC
-#define S3V_3DLINE_CLIP_T_B_ID                 55
-#define S3V_3DLINE_CLIP_T_B_REG                0xB0E0
-#define S3V_3DLINE_DEST_SRC_STRIDE_ID          56
-#define S3V_3DLINE_DEST_SRC_STRIDE_REG         0xB0E4
-#define S3V_3DLINE_Z_STRIDE_ID                 57
-#define S3V_3DLINE_Z_STRIDE_REG                0xB0E8
-#define S3V_3DLINE_TEX_BASE_ID                 58
-#define S3V_3DLINE_TEX_BASE_REG                0xB0EC
-#define S3V_3DLINE_TEX_B_COLOR_ID              59
-#define S3V_3DLINE_TEX_B_COLOR_REG             0xB0F0
-#define S3V_3DLINE_FOG_COLOR_ID                60
-#define S3V_3DLINE_FOG_COLOR_REG               0xB0F4
-#define S3V_3DLINE_COLOR0_ID                           61
-#define S3V_3DLINE_COLOR0_REG                  0xB0F8
-#define S3V_3DLINE_COLOR1_ID                   62
-#define S3V_3DLINE_COLOR1_REG                  0xB0FC
-#define S3V_3DLINE_CMDSET_ID                   63
-#define S3V_3DLINE_CMDSET_REG                  0xB100 /* special */
-/* tex regs */
-/* FIXME: shouldn't it be a 1D tex for lines? */
-#define S3V_3DLINE_BASEV_ID                    64
-#define S3V_3DLINE_BASEV_REG                   0xB104 
-#define S3V_3DLINE_BASEU_ID                    65
-#define S3V_3DLINE_BASEU_REG                   0xB108
-#define S3V_3DLINE_WXD_ID                      66
-#define S3V_3DLINE_WXD_REG                             0xB10C
-#define S3V_3DLINE_WYD_ID                      67
-#define S3V_3DLINE_WYD_REG                     0xB110
-#define S3V_3DLINE_WSTART_ID                   68
-#define S3V_3DLINE_WSTART_REG                          0xB114
-#define S3V_3DLINE_DXD_ID                      69
-#define S3V_3DLINE_DXD_REG                     0xB118
-#define S3V_3DLINE_VXD_ID                      70
-#define S3V_3DLINE_VXD_REG                     0xB11C
-#define S3V_3DLINE_UXD_ID                      71
-#define S3V_3DLINE_UXD_REG                     0xB120
-#define S3V_3DLINE_DYD_ID                      72
-#define S3V_3DLINE_DYD_REG                     0xB124
-#define S3V_3DLINE_VYD_ID                      73
-#define S3V_3DLINE_VYD_REG                     0xB128
-#define S3V_3DLINE_UYD_ID                      74
-#define S3V_3DLINE_UYD_REG                     0xB12C
-#define S3V_3DLINE_DSTART_ID                   75
-#define S3V_3DLINE_DSTART_REG                  0xB130
-#define S3V_3DLINE_VSTART_ID                   76
-#define S3V_3DLINE_VSTART_REG                  0xB134
-#define S3V_3DLINE_USTART_ID                   77
-#define S3V_3DLINE_USTART_REG                  0xB138
-/* gourad regs */
-#define S3V_3DLINE_GBD_ID                      78
-#define S3V_3DLINE_GBD_REG                     0xB144
-#define S3V_3DLINE_ARD_ID                      79
-#define S3V_3DLINE_ARD_REG                             0xB148
-#define S3V_3DLINE_GS_BS_ID                    80
-#define S3V_3DLINE_GS_BS_REG                   0xB14C
-#define S3V_3DLINE_AS_RS_ID                    81
-#define S3V_3DLINE_AS_RS_REG                   0xB150
-/* vertex regs */
-#define S3V_3DLINE_DZ_ID                       82
-#define S3V_3DLINE_DZ_REG                      0xB158
-#define S3V_3DLINE_ZSTART_ID                   83
-#define S3V_3DLINE_ZSTART_REG                  0xB15C
-#define S3V_3DLINE_XEND0_END1_ID               84
-#define S3V_3DLINE_XEND0_END1_REG              0xB16C
-#define S3V_3DLINE_DX_ID                       85
-#define S3V_3DLINE_DX_REG                      0xB170
-#define S3V_3DLINE_XSTART_ID                   86
-#define S3V_3DLINE_XSTART_REG                  0xB174
-#define S3V_3DLINE_YSTART_ID                   87
-#define S3V_3DLINE_YSTART_REG                          0xB178
-#define S3V_3DLINE_YCNT_ID                     88
-#define S3V_3DLINE_YCNT_REG                    0xB17C
-
-/**************
- * 3DTRI REGS *
- **************/
-/* base regs */
-#define S3V_3DTRI_ID                                   100
-#define S3V_3DTRI_REG                          0xB400
-#define S3V_3DTRI_Z_BASE_ID                    101
-#define S3V_3DTRI_Z_BASE_REG                   0xB4D4
-#define S3V_3DTRI_SRC_BASE_ID                          102 /* it is the same reg */
-#define S3V_3DTRI_SRC_BASE_REG                 0xB4D4
-#define S3V_3DTRI_DEST_BASE_ID                         103
-#define S3V_3DTRI_DEST_BASE_REG                        0xB4D8
-#define S3V_3DTRI_CLIP_L_R_ID                          104
-#define S3V_3DTRI_CLIP_L_R_REG                         0xB4DC
-#define S3V_3DTRI_CLIP_T_B_ID                          105
-#define S3V_3DTRI_CLIP_T_B_REG                 0xB4E0
-#define S3V_3DTRI_DEST_SRC_STRIDE_ID                   106
-#define S3V_3DTRI_DEST_SRC_STRIDE_REG          0xB4E4
-#define S3V_3DTRI_Z_STRIDE_ID                          107
-#define S3V_3DTRI_Z_STRIDE_REG                 0xB4E8
-#define S3V_3DTRI_TEX_BASE_ID                          108
-#define S3V_3DTRI_TEX_BASE_REG                 0xB4EC
-#define S3V_3DTRI_TEX_B_COLOR_ID                       109
-#define S3V_3DTRI_TEX_B_COLOR_REG              0xB4F0
-#define S3V_3DTRI_FOG_COLOR_ID                         110
-#define S3V_3DTRI_FOG_COLOR_REG                        0xB4F4
-#define S3V_3DTRI_COLOR0_ID                            111
-#define S3V_3DTRI_COLOR0_REG                   0xB4F8
-#define S3V_3DTRI_COLOR1_ID                            112
-#define S3V_3DTRI_COLOR1_REG                   0xB4FC
-#define S3V_3DTRI_CMDSET_ID                            113  /* special */
-#define S3V_3DTRI_CMDSET_REG                   0xB500
-/* tex regs */
-#define S3V_3DTRI_BASEV_ID                             114
-#define S3V_3DTRI_BASEV_REG                    0xB504
-#define S3V_3DTRI_BASEU_ID                             115
-#define S3V_3DTRI_BASEU_REG                    0xB508
-#define S3V_3DTRI_WXD_ID                               116
-#define S3V_3DTRI_WXD_REG                      0xB50C
-#define S3V_3DTRI_WYD_ID                               117
-#define S3V_3DTRI_WYD_REG                      0xB510
-#define S3V_3DTRI_WSTART_ID                            118
-#define S3V_3DTRI_WSTART_REG                   0xB514
-#define S3V_3DTRI_DXD_ID                               119
-#define S3V_3DTRI_DXD_REG                      0xB518
-#define S3V_3DTRI_VXD_ID                               120
-#define S3V_3DTRI_VXD_REG                      0xB51C
-#define S3V_3DTRI_UXD_ID                       121
-#define S3V_3DTRI_UXD_REG                      0xB520
-#define S3V_3DTRI_DYD_ID                       122
-#define S3V_3DTRI_DYD_REG                      0xB524
-#define S3V_3DTRI_VYD_ID                       123
-#define S3V_3DTRI_VYD_REG                      0xB528
-#define S3V_3DTRI_UYD_ID                       124
-#define S3V_3DTRI_UYD_REG                      0xB52C
-#define S3V_3DTRI_DSTART_ID                    125
-#define S3V_3DTRI_DSTART_REG                   0xB530
-#define S3V_3DTRI_VSTART_ID                    126
-#define S3V_3DTRI_VSTART_REG                   0xB534
-#define S3V_3DTRI_USTART_ID                    127
-#define S3V_3DTRI_USTART_REG                   0xB538
-/* gourad regs */
-#define S3V_3DTRI_GBX_ID                               128
-#define S3V_3DTRI_GBX_REG                      0xB53C
-#define S3V_3DTRI_ARX_ID                               129
-#define S3V_3DTRI_ARX_REG                      0xB540
-#define S3V_3DTRI_GBY_ID                       130
-#define S3V_3DTRI_GBY_REG                      0xB544
-#define S3V_3DTRI_ARY_ID                       131
-#define S3V_3DTRI_ARY_REG                      0xB548
-#define S3V_3DTRI_GS_BS_ID                     132
-#define S3V_3DTRI_GS_BS_REG                    0xB54C
-#define S3V_3DTRI_AS_RS_ID                     133
-#define S3V_3DTRI_AS_RS_REG                    0xB550
-/* vertex regs */
-#define S3V_3DTRI_ZXD_ID                               134
-#define S3V_3DTRI_ZXD_REG                      0xB554
-#define S3V_3DTRI_ZYD_ID                               135
-#define S3V_3DTRI_ZYD_REG                      0xB558
-#define S3V_3DTRI_ZSTART_ID                            136
-#define S3V_3DTRI_ZSTART_REG                   0xB55C
-#define S3V_3DTRI_TXDELTA12_ID                         137
-#define S3V_3DTRI_TXDELTA12_REG                        0xB560
-#define S3V_3DTRI_TXEND12_ID                           138
-#define S3V_3DTRI_TXEND12_REG                  0xB564
-#define S3V_3DTRI_TXDELTA01_ID                         139
-#define S3V_3DTRI_TXDELTA01_REG                        0xB568
-#define S3V_3DTRI_TXEND01_ID                           140
-#define S3V_3DTRI_TXEND01_REG                  0xB56C
-#define S3V_3DTRI_TXDELTA02_ID                         141
-#define S3V_3DTRI_TXDELTA02_REG                        0xB570
-#define S3V_3DTRI_TXSTART02_ID                         142
-#define S3V_3DTRI_TXSTART02_REG                        0xB574
-#define S3V_3DTRI_TYS_ID                               143
-#define S3V_3DTRI_TYS_REG                      0xB578
-#define S3V_3DTRI_TY01_Y12_ID                          144
-#define S3V_3DTRI_TY01_Y12_REG                 0xB57C
-
-/* COMMANDS (to 0xB100 [lines] or 0xB500 [tris]) */
-
-/* Auto execute */
-#define AUTO_EXEC_MASK         0x00000001
-#define AUTO_EXEC_OFF          (0x0)
-#define AUTO_EXEC_ON           (0x1)
-/* HW clipping */
-#define HW_CLIP_MASK           0x00000002
-#define HW_CLIP_OFF            (0x0 << 1)
-#define HW_CLIP_ON             (0x1 << 1)
-/* Destination color */
-#define DEST_COL_MASK          0x0000001c
-#define DEST_COL_PAL           (0x0 << 2)      /* 8 bpp - palettized */
-#define DEST_COL_1555          (0x1 << 2)      /* 16 bpp - ZRGB */
-#define DEST_COL_888           (0x2 << 2)      /* 24 bpp - RGB */
-/* Texture color */
-#define TEX_COL_MASK           0x000000e0
-#define TEX_COL_ARGB8888       (0x0 << 5)      /* 32 bpp - ARGB */
-#define TEX_COL_ARGB4444       (0x1 << 5)      /* 16 bpp - ARGB */
-#define TEX_COL_ARGB1555       (0x2 << 5)      /* 16 bpp - ARGB */
-#define TEX_COL_ALPHA4         (0x3 << 5)      /* 8 bpp - ALPHA4 */
-#define TEX_COL_BLEND4_LOW     (0x4 << 5)      /* 4 bpp - BLEND4 low nibble */
-#define TEX_COL_BLEND4_HIGH    (0x5 << 5)      /* 4 bpp - BLEND4 high nibble */
-#define TEX_COL_PAL            (0x6 << 5)      /* 8 bpp - palettized */
-#define TEX_COL_YUV            (0x7 << 5)      /* 16 bpp - YUV */
-/* Mipmap level */
-#define MIP_MASK               0x00000f00
-#define MIPMAP_LEVEL(s)                (s << 8)        /* 8 -> 11 bits */
-/* Texture filtering */
-#define TEX_FILTER_MASK                0x00007000
-#define MIP_NEAREST            (0x0 << 12)
-#define LINEAR_MIP_NEAREST     (0x1 << 12)
-#define MIP_LINEAR             (0x2 << 12)
-#define LINEAR_MIP_LINEAR      (0x3 << 12)
-#define NEAREST                        (0x4 << 12)
-#define FAST_BILINEAR          (0x5 << 12)
-#define LINEAR                 (0x6 << 12)
-/* Texture blending */
-#define TEX_BLEND_MAKS         0x00018000
-#define TEX_REFLECT            (0x0 << 15)
-#define TEX_MODULATE           (0x1 << 15)
-#define TEX_DECAL              (0x2 << 15)
-/* Fog */
-#define FOG_MASK               0x00020000
-#define FOG_OFF                        (0x0 << 17)
-#define FOG_ON                 (0x1 << 17)
-/* Alpha blending */
-#define ALPHA_BLEND_MASK       0x000c0000
-#define ALPHA_OFF              (0x0 << 18) | (0x0 << 19)
-#define ALPHA_TEX              (0x2 << 18)
-#define ALPHA_SRC              (0x3 << 18)
-/* Depth compare mode */
-#define Z_MODE_MASK            0x00700000
-#define Z_NEVER                (0x0 << 20)
-#define Z_GREATER              (0x1 << 20)
-#define Z_EQUAL                (0x2 << 20)
-#define Z_GEQUAL               (0x3 << 20)
-#define Z_LESS                 (0x4 << 20)
-#define Z_NOTEQUAL             (0x5 << 20)
-#define Z_LEQUAL               (0x6 << 20) 
-#define Z_ALWAYS               (0x7 << 20)
-/* Depth update */
-#define Z_UPDATE_MASK          0x00800000
-#define Z_UPDATE_OFF           (0x0 << 23)     /* disable z update */
-#define Z_UPDATE_ON            (0x1 << 23)
-/* Depth buffering mode */
-#define Z_BUFFER_MASK          0x03000000
-#define Z_BUFFER               (0x0 << 24) | (0x0 << 25)
-#define Z_MUX_BUF              (0x1 << 24) | (0x0 << 25)
-#define Z_MUX_DRAW             (0x2 << 24)
-#define Z_OFF                  (0x3 << 24) /* no z buffering */
-/* Texture wrapping */
-#define TEX_WRAP_MASK          0x04000000
-#define TEX_WRAP_OFF           (0x0 << 26)
-#define TEX_WRAP_ON            (0x1 << 26)
-/* 3d command */
-#define DO_MASK                        0x78000000
-#define DO_GOURAUD_TRI         (0x0 << 27)
-#define DO_TEX_LIT_TRI_OLD     (0x1 << 27) 
-#define DO_TEX_UNLIT_TRI_OLD   (0x2 << 27)
-#define DO_TEX_LIT_TRI         (0x5 << 27)
-#define DO_TEX_UNLIT_TRI       (0x6 << 27)
-#define DO_3D_LINE             (0x8 << 27)
-#define        DO_NOP                  (0xf << 27) /* turn on autoexec */
-/* status */
-#define CMD_MASK               0x80000000
-#define CMD_2D                 (0x0 << 31) /* execute a 2d cmd */
-#define CMD_3D                 (0x1 << 31) /* execute a 3d cmd */
-
-/* global masks */
-#define TEX_MASK               ( TEX_COL_MASK | TEX_WRAP_MASK | MIP_MASK \
-                               | TEX_FILTER_MASK | TEX_BLEND_MAKS \
-                               | TEX_WRAP_MASK )
-#define Z_MASK                 ( Z_MODE_MASK | Z_UPDATE_MASK | Z_BUFFER_MASK )
-
-#endif /* _S3V_REG_H */
diff --git a/src/mesa/drivers/dri/s3v/s3v_render.c b/src/mesa/drivers/dri/s3v/s3v_render.c
deleted file mode 100644 (file)
index 5023f3c..0000000
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Author: Max Lingua <sunmax@libero.it>
- */
-
-#include "main/glheader.h"
-#include "main/context.h"
-#include "main/macros.h"
-#include "main/mtypes.h"
-
-#include "tnl/t_context.h"
-
-#include "s3v_context.h"
-#include "s3v_tris.h"
-#include "s3v_vb.h"
-
-
-#define HAVE_POINTS      0
-#define HAVE_LINES       0
-#define HAVE_LINE_STRIPS 0
-#define HAVE_TRIANGLES   0
-#define HAVE_TRI_STRIPS  0
-#define HAVE_TRI_STRIP_1 0
-#define HAVE_TRI_FANS    0
-#define HAVE_QUADS       0
-#define HAVE_QUAD_STRIPS 0
-#define HAVE_POLYGONS    0
-
-#define HAVE_ELTS        0
-
-#if 0
-static void VERT_FALLBACK( GLcontext *ctx,
-                          GLuint start,
-                          GLuint count,
-                          GLuint flags )
-{
-       TNLcontext *tnl = TNL_CONTEXT(ctx);
-/*     s3vContextPtr vmesa = S3V_CONTEXT(ctx); */
-       int _flags;
-   
-       DEBUG(("VERT_FALLBACK: flags & PRIM_MODE_MASK = %i\n",
-               flags & PRIM_MODE_MASK));
-       DEBUG(("VERT_FALLBACK: flags=%i PRIM_MODE_MASK=%i\n",
-               flags, PRIM_MODE_MASK));
-#if 0
-       tnl->Driver.Render.PrimitiveNotify( ctx, flags & PRIM_MODE_MASK );
-#endif
-       tnl->Driver.Render.BuildVertices( ctx, start, count, ~0 );
-
-       _flags = flags & PRIM_MODE_MASK;
-
-       tnl->Driver.Render.PrimTabVerts[_flags]( ctx, start, count, flags );
-       S3V_CONTEXT(ctx)->SetupNewInputs = VERT_BIT_POS;
-}
-#endif
-
-static const GLuint hw_prim[GL_POLYGON+1] = {
-       PrimType_Points,
-       PrimType_Lines,
-       PrimType_LineLoop,
-       PrimType_LineStrip,
-       PrimType_Triangles,
-       PrimType_TriangleStrip,
-       PrimType_TriangleFan,
-       PrimType_Quads,
-       PrimType_QuadStrip,
-       PrimType_Polygon
-};
-
-static INLINE void s3vStartPrimitive( s3vContextPtr vmesa, GLenum prim )
-{
-       __DRIdrawablePrivate *dPriv = vmesa->driDrawable;
-
-       int _hw_prim = hw_prim[prim];
-
-       DEBUG(("s3vStartPrimitive (new #%i) ", prim));
-
-       if (_hw_prim != vmesa->restore_primitive) {
-
-               if (prim == 4) { /* TRI */
-                       DEBUG(("switching to tri\n"));
-                       vmesa->prim_cmd = vmesa->_tri[vmesa->_3d_mode];
-                       vmesa->alpha_cmd = vmesa->_alpha[vmesa->_3d_mode];
-                       DMAOUT_CHECK(3DTRI_Z_BASE, 12);
-               } else if (prim == 1) { /* LINE */
-                       DEBUG(("switching to line\n"));
-                       vmesa->prim_cmd = DO_3D_LINE;
-                       vmesa->alpha_cmd = vmesa->_alpha[0];
-                       DMAOUT_CHECK(3DLINE_Z_BASE, 12);
-               } else {
-                       DEBUG(("Never mind the bollocks!\n"));
-               }
-
-               DMAOUT(vmesa->s3vScreen->depthOffset & 0x003FFFF8);
-               DMAOUT(vmesa->DestBase);
-               /* DMAOUT(vmesa->ScissorLR); */
-               /* DMAOUT(vmesa->ScissorTB); */
-               DMAOUT( (0 << 16) | (dPriv->w-1) );
-               DMAOUT( (0 << 16) | (dPriv->h-1) );
-               DMAOUT( (vmesa->SrcStride << 16) | vmesa->TexStride );
-               DMAOUT(vmesa->SrcStride);
-               DMAOUT(vmesa->TexOffset);
-               DMAOUT(vmesa->TextureBorderColor);
-               DMAOUT(0); /* FOG */
-               DMAOUT(0);
-               DMAOUT(0);
-               DMAOUT(vmesa->CMD | vmesa->prim_cmd | vmesa->alpha_cmd);
-               DMAFINISH();
-       }
-
-       vmesa->restore_primitive = _hw_prim;
-}
-
-static INLINE void s3vEndPrimitive( s3vContextPtr vmesa )
-{
-/*     GLcontext *ctx = vmesa->glCtx; */
-       DEBUG(("s3vEndPrimitive\n"));
-}
-
-#define LOCAL_VARS s3vContextPtr vmesa = S3V_CONTEXT(ctx)
-#define INIT( prim ) s3vStartPrimitive( vmesa, prim )
-#define FINISH s3vEndPrimitive( vmesa )
-#define NEW_PRIMITIVE() (void) vmesa
-#define NEW_BUFFER() (void) vmesa
-#define FIRE_VERTICES() (void) vmesa
-#define GET_CURRENT_VB_MAX_VERTS() \
-       (vmesa->bufSize - vmesa->bufCount) / 2
-#define GET_SUBSEQUENT_VB_MAX_VERTS() \
-       S3V_DMA_BUF_SZ / 2
-/* XXX */
-#define ALLOC_VERTS(nr) NULL
-#define EMIT_VERTS(ctx, start, count, buf) NULL
-#define FLUSH() s3vEndPrimitive( vmesa )
-
-#define TAG(x) s3v_##x
-
-#include "tnl_dd/t_dd_dmatmp.h"
-
-/**********************************************************************/
-/*                          Render pipeline stage                     */
-/**********************************************************************/
-
-
-static GLboolean s3v_run_render( GLcontext *ctx,
-                                 struct tnl_pipeline_stage *stage )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-       TNLcontext *tnl = TNL_CONTEXT(ctx);
-       struct vertex_buffer *VB = &tnl->vb;
-       GLuint i;
-       tnl_render_func *tab;
-
-       DEBUG(("s3v_run_render\n"));
-       
-       /* FIXME: hw clip */
-       if (VB->ClipOrMask || vmesa->RenderIndex != 0) {
-               DEBUG(("*** CLIPPED in render ***\n"));
-#if 1
-               return GL_TRUE; /* don't handle clipping here */
-#endif
-       }
-
-
-       /* We don't do elts */
-       if (VB->Elts)
-               return GL_TRUE;
-
-       tab = TAG(render_tab_verts);
-
-       tnl->Driver.Render.Start( ctx );
-
-       for (i = 0 ; i < VB->PrimitiveCount ; i++ )
-       {
-               GLuint prim = _tnl_translate_prim(&VB->Primitive[i]);
-               GLuint start = VB->Primitive[i].start;
-               GLuint length = VB->Primitive[i].count;
-
-               DEBUG(("s3v_run_render (loop=%i) (lenght=%i)\n", i, length));
-
-               if (length) {
-                       tnl->Driver.Render.BuildVertices( ctx, start,
-                                start+length, ~0 /*stage->inputs*/); /* XXX */
-                       tnl->Driver.Render.PrimTabVerts[prim & PRIM_MODE_MASK]
-                               ( ctx, start, start + length, prim );
-                       vmesa->SetupNewInputs = VERT_BIT_POS;
-               }
-       }
-       
-       tnl->Driver.Render.Finish( ctx );
-
-       return GL_FALSE; /* finished the pipe */
-}
-
-
-
-const struct tnl_pipeline_stage _s3v_render_stage =
-{
-       "s3v render",
-       NULL,
-       NULL,
-       NULL,
-       NULL,
-        s3v_run_render         /* run */
-};
diff --git a/src/mesa/drivers/dri/s3v/s3v_screen.c b/src/mesa/drivers/dri/s3v/s3v_screen.c
deleted file mode 100644 (file)
index f181059..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Author: Max Lingua <sunmax@libero.it>
- */
-
-#include "s3v_context.h"
-#include "s3v_vb.h"
-#include "s3v_dri.h" 
-
-s3vScreenPtr s3vCreateScreen( __DRIscreenPrivate *sPriv )
-{
-   s3vScreenPtr s3vScreen;
-   S3VDRIPtr vDRIPriv = (S3VDRIPtr)sPriv->pDevPriv;
-
-/*   int i; */
-
-   DEBUG(("s3vCreateScreen\n"));
-   DEBUG(("sPriv->pDevPriv at %p\n", sPriv->pDevPriv));
-   DEBUG(("size = %i\n", sizeof(*vDRIPriv)));
-
-   if (sPriv->devPrivSize != sizeof(S3VDRIRec)) {
-      fprintf(stderr,"\nERROR!  sizeof(S3VDRIRec) does not match passed size from device driver\n");
-      return GL_FALSE;
-   }
-
-   /* Allocate the private area */
-   s3vScreen = (s3vScreenPtr) CALLOC( sizeof(*s3vScreen) );
-   if ( !s3vScreen ) return NULL;
-
-   s3vScreen->regionCount  = 4;        /* Magic number.  Can we fix this? */
-    
-   s3vScreen->regions = _mesa_malloc(s3vScreen->regionCount * 
-                                                       sizeof(s3vRegion));
-   DEBUG(("sPriv->fd = %i\nvDRIPriv->dmaBufHandle = %x\n",
-      sPriv->fd, vDRIPriv->dmaBufHandle));
-
-   DEBUG(("vDRIPriv->dmaBufSize=%i\nvDRIPriv->dmaBuf=%p\n",
-      vDRIPriv->dmaBufSize, vDRIPriv->dmaBuf));
-
-
-   /* Get the list of dma buffers */
-   s3vScreen->bufs = drmMapBufs(sPriv->fd);
-
-   if (!s3vScreen->bufs) {
-      DEBUG(("Helter/skelter with drmMapBufs\n"));
-      return GL_FALSE; 
-   }
-
-   s3vScreen->textureSize                  = vDRIPriv->texSize;
-   s3vScreen->logTextureGranularity = vDRIPriv->logTextureGranularity;
-   s3vScreen->cpp                                      = vDRIPriv->cpp;
-   s3vScreen->frontOffset                      = vDRIPriv->frontOffset;
-   s3vScreen->frontPitch                       = vDRIPriv->frontPitch;
-   s3vScreen->backOffset                       = vDRIPriv->backOffset;
-   s3vScreen->backPitch                                = vDRIPriv->frontPitch; /* FIXME: check */
-   s3vScreen->depthOffset                      = vDRIPriv->depthOffset;
-   s3vScreen->depthPitch                       = vDRIPriv->frontPitch;
-   s3vScreen->texOffset                                = vDRIPriv->texOffset;
-
-   s3vScreen->driScreen = sPriv;
-
-   DEBUG(("vDRIPriv->width =%i; vDRIPriv->deviceID =%x\n", vDRIPriv->width,
-                 vDRIPriv->deviceID));
-   DEBUG(("vDRIPriv->mem =%i\n", vDRIPriv->mem));
-   DEBUG(("vDRIPriv->fbOffset =%i\n", vDRIPriv->fbOffset));
-   DEBUG((" ps3vDRI->fbStride =%i\n", vDRIPriv->fbStride));
-   DEBUG(("s3vScreen->cpp = %i\n", s3vScreen->cpp));
-   DEBUG(("s3vScreen->backOffset = %x\n", s3vScreen->backOffset));
-   DEBUG(("s3vScreen->depthOffset = %x\n", s3vScreen->depthOffset));
-   DEBUG(("s3vScreen->texOffset = %x\n", s3vScreen->texOffset));
-   DEBUG(("I will return from s3vCreateScreen now\n"));
-   
-   DEBUG(("s3vScreen->bufs = 0x%x\n", s3vScreen->bufs));
-   return s3vScreen;
-}
-
-/* Destroy the device specific screen private data struct.
- */
-void s3vDestroyScreen( __DRIscreenPrivate *sPriv )
-{
-    s3vScreenPtr s3vScreen = (s3vScreenPtr)sPriv->private;
-
-    DEBUG(("s3vDestroyScreen\n"));
-
-    /* First, unmap the dma buffers */
-/*
-    drmUnmapBufs( s3vScreen->bufs );
-*/
-    /* Next, unmap all the regions */
-/*    while (s3vScreen->regionCount > 0) { 
-
-       (void)drmUnmap(s3vScreen->regions[s3vScreen->regionCount].map,
-                      s3vScreen->regions[s3vScreen->regionCount].size);
-       s3vScreen->regionCount--;
-
-    }
-    FREE(s3vScreen->regions); */
-       if (s3vScreen)
-           FREE(s3vScreen);
-}
diff --git a/src/mesa/drivers/dri/s3v/s3v_screen.h b/src/mesa/drivers/dri/s3v/s3v_screen.h
deleted file mode 100644 (file)
index c49bc85..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Author: Max Lingua <sunmax@libero.it>
- */
-
-#include "main/mtypes.h"
-
-typedef struct _s3vRegion {
-    drm_handle_t  handle;
-    drmSize    size;
-    drmAddress map;
-} s3vRegion, *s3vRegionPtr;
-
-typedef struct {
-
-    int          regionCount;             /* Count of register regions */
-    s3vRegion           *regions;         /* Vector of mapped region info */
-
-    drmBufMapPtr bufs;             /* Map of DMA buffers */
-
-    __DRIscreenPrivate *driScreen; /* Back pointer to DRI screen */
-
-    int                cpp;
-    int                frontPitch;
-    int                frontOffset;
-
-    int                backPitch;
-    int                backOffset;
-    int                backX;
-    int                backY;
-
-    int                depthOffset;
-    int                depthPitch;
-
-    int                texOffset;
-    int                textureOffset;
-    int                textureSize;
-    int                logTextureGranularity;
-} s3vScreenRec, *s3vScreenPtr;
-
diff --git a/src/mesa/drivers/dri/s3v/s3v_span.c b/src/mesa/drivers/dri/s3v/s3v_span.c
deleted file mode 100644 (file)
index f9f7c0d..0000000
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- * Author: Max Lingua <sunmax@libero.it>
- */
-
-#include "s3v_context.h"
-#include "s3v_lock.h"
-
-#include "swrast/swrast.h"
-
-#define _SPANLOCK 1
-#define DBG 0
-
-#define LOCAL_VARS \
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx);                         \
-       __DRIscreenPrivate *sPriv = vmesa->driScreen;                   \
-       __DRIdrawablePrivate *dPriv = vmesa->driDrawable;               \
-       driRenderbuffer *drb = (driRenderbuffer *) rb;                  \
-       GLuint cpp = drb->cpp;                                          \
-       GLuint pitch = ( (drb->backBuffer) ?                            \
-                       ((dPriv->w+31)&~31) * cpp                       \
-                       : sPriv->fbWidth * cpp);                        \
-       GLuint height = dPriv->h;                                       \
-       char *buf = (char *)(sPriv->pFB + drb->offset                   \
-          + (drb->backBuffer ? 0 : dPriv->x * cpp + dPriv->y * pitch));\
-       GLuint p; \
-       (void) p
-
-/* FIXME! Depth/Stencil read/writes don't work ! */
-#define LOCAL_DEPTH_VARS                                       \
-       __DRIdrawablePrivate *dPriv = vmesa->driDrawable;       \
-       __DRIscreenPrivate *sPriv = vmesa->driScreen;           \
-       driRenderbuffer *drb = (driRenderbuffer *) rb;          \
-       GLuint pitch = drb->pitch;                              \
-       GLuint height = dPriv->h;                               \
-       char *buf = (char *)(sPriv->pFB + drb->offset);         \
-       (void) pitch
-
-#define LOCAL_STENCIL_VARS     LOCAL_DEPTH_VARS
-
-#define Y_FLIP( _y )   (height - _y - 1)
-
-#if _SPANLOCK  /* OK, we lock */
-
-#define HW_LOCK() \
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx); \
-       (void) vmesa; \
-       DMAFLUSH(); \
-       S3V_SIMPLE_FLUSH_LOCK(vmesa);
-#define HW_UNLOCK() S3V_SIMPLE_UNLOCK(vmesa);
-
-#else                  /* plz, don't lock */
-
-#define HW_LOCK() \
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx); \
-    (void) vmesa; \
-       DMAFLUSH(); 
-#define HW_UNLOCK()
-
-#endif
-
-
-/* ================================================================
- * Color buffer
- */
-
-/* 16 bit, RGB565 color spanline and pixel functions
- */
-#define INIT_MONO_PIXEL(p, color) \
-  p = S3VIRGEPACKCOLOR555( color[0], color[1], color[2], color[3] )
-
-#define WRITE_RGBA( _x, _y, r, g, b, a ) \
-do { \
-   *(GLushort *)(buf + _x*2 + _y*pitch) = ((((int)r & 0xf8) << 7) | \
-                                          (((int)g & 0xf8) << 2) | \
-                                          (((int)b & 0xf8) >> 3)); \
-   DEBUG(("buf=0x%x drawOffset=0x%x dPriv->x=%i drb->cpp=%i dPriv->y=%i pitch=%i\n", \
-       sPriv->pFB, vmesa->drawOffset, dPriv->x, drb->cpp, dPriv->y, pitch)); \
-   DEBUG(("dPriv->w = %i\n", dPriv->w)); \
-} while(0)
-
-#define WRITE_PIXEL( _x, _y, p ) \
-   *(GLushort *)(buf + _x*2 + _y*pitch) = p
-
-#define READ_RGBA( rgba, _x, _y ) \
-   do { \
-      GLushort p = *(GLushort *)(buf + _x*2 + _y*pitch); \
-      rgba[0] = (p >> 7) & 0xf8; \
-      rgba[1] = (p >> 2) & 0xf8; \
-      rgba[2] = (p << 3) & 0xf8; \
-      rgba[3] = 0xff; /*
-      if ( rgba[0] & 0x08 ) rgba[0] |= 0x07; \ 
-      if ( rgba[1] & 0x04 ) rgba[1] |= 0x03; \
-      if ( rgba[2] & 0x08 ) rgba[2] |= 0x07; */ \
-   } while (0)
-
-#define TAG(x) s3v##x##_RGB555
-#include "spantmp.h"
-
-
-/* 32 bit, ARGB8888 color spanline and pixel functions
- */
-
-#undef INIT_MONO_PIXEL
-#define INIT_MONO_PIXEL(p, color) \
-  p = PACK_COLOR_8888( color[3], color[0], color[1], color[2] )
-
-#define WRITE_RGBA( _x, _y, r, g, b, a ) \
-   *(GLuint *)(buf + _x*4 + _y*pitch) = ((b <<  0) | \
-                                        (g <<  8) | \
-                                        (r << 16) | \
-                                        (a << 24) )
-
-#define WRITE_PIXEL( _x, _y, p ) \
-   *(GLuint *)(buf + _x*4 + _y*pitch) = p
-
-#define READ_RGBA( rgba, _x, _y ) \
-do { \
-   GLuint p = *(GLuint *)(buf + _x*4 + _y*pitch); \
-   rgba[0] = (p >> 16) & 0xff; \
-   rgba[1] = (p >>  8) & 0xff; \
-   rgba[2] = (p >>  0) & 0xff; \
-   rgba[3] = (p >> 24) & 0xff; \
-} while (0)
-
-#define TAG(x) s3v##x##_ARGB8888
-#include "spantmp.h"
-
-
-/* 16 bit depthbuffer functions.
- */
-#define VALUE_TYPE GLushort
-
-#define WRITE_DEPTH( _x, _y, d ) \
-   *(GLushort *)(buf + _x*2 + _y*dPriv->w*2) = d
-
-#define READ_DEPTH( d, _x, _y ) \
-   d = *(GLushort *)(buf + _x*2 + _y*dPriv->w*2);
-
-#define TAG(x) s3v##x##_z16
-#include "depthtmp.h"
-
-
-
-
-/* 32 bit depthbuffer functions.
- */
-#if 0
-#define VALUE_TYPE GLuint
-
-#define WRITE_DEPTH( _x, _y, d )       \
-   *(GLuint *)(buf + _x*4 + _y*pitch) = d;
-
-#define READ_DEPTH( d, _x, _y )                \
-   d = *(GLuint *)(buf + _x*4 + _y*pitch);     
-
-#define TAG(x) s3v##x##_32
-#include "depthtmp.h"
-#endif
-
-
-/* 24/8 bit interleaved depth/stencil functions
- */
-#if 0
-#define VALUE_TYPE GLuint
-
-#define WRITE_DEPTH( _x, _y, d ) { \
-   GLuint tmp = *(GLuint *)(buf + _x*4 + _y*pitch);    \
-   tmp &= 0xff; \
-   tmp |= (d) & 0xffffff00; \
-   *(GLuint *)(buf + _x*4 + _y*pitch) = tmp; \
-}
-
-#define READ_DEPTH( d, _x, _y ) \
-   d = *(GLuint *)(buf + _x*4 + _y*pitch) & ~0xff      
-
-
-#define TAG(x) s3v##x##_24_8
-#include "depthtmp.h"
-
-#define WRITE_STENCIL( _x, _y, d ) { \
-   GLuint tmp = *(GLuint *)(buf + _x*4 + _y*pitch);    \
-   tmp &= 0xffffff00; \
-   tmp |= d & 0xff; \
-   *(GLuint *)(buf + _x*4 + _y*pitch) = tmp; \
-}
-
-#define READ_STENCIL( d, _x, _y ) \
-   d = *(GLuint *)(buf + _x*4 + _y*pitch) & 0xff       
-
-#define TAG(x) s3v##x##_24_8
-#include "stenciltmp.h"
-
-#endif
-
-
-/**
- * Plug in the Get/Put routines for the given driRenderbuffer.
- */
-void
-s3vSetSpanFunctions(driRenderbuffer *drb, const GLvisual *vis)
-{
-   if (drb->Base.InternalFormat == GL_RGBA) {
-      if (vis->redBits == 5 && vis->greenBits == 6 && vis->blueBits == 5) {
-         s3vInitPointers_RGB555(&drb->Base);
-      }
-      else {
-         s3vInitPointers_ARGB8888(&drb->Base);
-      }
-   }
-   else if (drb->Base.InternalFormat == GL_DEPTH_COMPONENT16) {
-      s3vInitDepthPointers_z16(&drb->Base);
-   }
-   else if (drb->Base.InternalFormat == GL_DEPTH_COMPONENT24) {
-      /* not done yet */
-   }
-   else if (drb->Base.InternalFormat == GL_STENCIL_INDEX8_EXT) {
-      /* not done yet */
-   }
-}
diff --git a/src/mesa/drivers/dri/s3v/s3v_state.c b/src/mesa/drivers/dri/s3v/s3v_state.c
deleted file mode 100644 (file)
index 561f42c..0000000
+++ /dev/null
@@ -1,888 +0,0 @@
-/*
- * Author: Max Lingua <sunmax@libero.it>
- */
-
-#include "s3v_context.h"
-#include "s3v_macros.h"
-#include "s3v_dri.h"
-#include "main/macros.h"
-#include "main/colormac.h"
-#include "swrast/swrast.h"
-#include "swrast_setup/swrast_setup.h"
-#include "vbo/vbo.h"
-#include "tnl/tnl.h"
-
-/* #define DEBUG(str) printf str */
-#define ENABLELIGHTING 0
-
-
-/* =============================================================
- * Alpha blending
- */
-
-static void s3vUpdateAlphaMode( GLcontext *ctx )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-       uint32_t cmd = vmesa->CMD;
-       cmd &= ~ALPHA_BLEND_MASK;
-
-       if ( ctx->Color.BlendEnabled ) {
-               DEBUG(("ctx->Color.AlphaEnabled = 1"));
-               vmesa->_alpha[0] = ALPHA_SRC;
-               vmesa->_alpha[1] = vmesa->_alpha_tex; /* FIXME: not all tex modes
-                                                        support alpha */
-       } else {
-               DEBUG(("ctx->Color.AlphaEnabled = 0"));
-               vmesa->_alpha[0] = vmesa->_alpha[1] = ALPHA_OFF;
-       }
-#if 1
-       if ((cmd & DO_MASK) & DO_3D_LINE) {     /* we are drawing 3d lines */
-                                               /* which don't support tex */
-               cmd |= vmesa->_alpha[0];
-       } else {
-               cmd |= vmesa->_alpha[vmesa->_3d_mode];
-       }
-
-       vmesa->CMD = cmd; /* FIXME: enough? */
-#else
-       vmesa->restore_primitive = -1;
-#endif
-       
-}
-
-static void s3vDDAlphaFunc( GLcontext *ctx, GLenum func, GLfloat ref )
-{
-   s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-
-   DEBUG(("s3vDDAlphaFunc\n"));
-
-   vmesa->new_state |= S3V_NEW_ALPHA;
-}
-
-static void s3vDDBlendFunc( GLcontext *ctx, GLenum sfactor, GLenum dfactor )
-{
-   s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-
-   DEBUG(("s3vDDBlendFunc\n"));
-
-   vmesa->new_state |= S3V_NEW_ALPHA;
-}
-
-/* ================================================================
- * Buffer clear
- */
-
-static void s3vDDClear( GLcontext *ctx, GLbitfield mask )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-       unsigned int _stride;
-        GLint cx = ctx->DrawBuffer->_Xmin;
-        GLint cy = ctx->DrawBuffer->_Ymin;
-        GLint cw = ctx->DrawBuffer->_Xmax - cx;
-        GLint ch = ctx->DrawBuffer->_Ymax - cy;
-
-        /* XXX FIX ME: the cx,cy,cw,ch vars are currently ignored! */
-
-       vmesa->restore_primitive = -1;
-
-       /* Update and emit any new state.  We need to do this here to catch
-        * changes to the masks.
-        * FIXME: Just update the masks?
-        */
-
-       if ( vmesa->new_state )
-               s3vDDUpdateHWState( ctx );
-
-/*     s3vUpdateMasks( ctx ); */
-/*     s3vUpdateClipping( ctx ); */
-/*     s3vEmitHwState( vmesa ); */
-       
-
-#if 1 /* soft (0)/hw (1)*/
-
-       DEBUG(("*** s3vDDClear ***\n"));
-
-       DMAOUT_CHECK(BITBLT_SRC_BASE, 15);
-               DMAOUT(vmesa->SrcBase);
-               DMAOUT(vmesa->DestBlit);
-               DMAOUT( vmesa->ScissorLR );
-               DMAOUT( vmesa->ScissorTB );
-               DMAOUT( (vmesa->SrcStride << 16) | vmesa->SrcStride );  /* FIXME: unify */
-               DMAOUT( (~(0)) ); /* masks */
-               DMAOUT( (~(0)) );
-               DMAOUT(0);
-               DMAOUT(vmesa->ClearColor);
-               DMAOUT(0);
-               DMAOUT(0);
-               /* FIXME */
-               DMAOUT(0x16000122 | 0x5 | (0xF0 << 17));    /* black magic to me */
-               DMAOUT(vmesa->ScissorWH);
-               DMAOUT(vmesa->SrcXY);
-               DMAOUT(vmesa->DestXY);
-       DMAFINISH();
-
-       if (mask & BUFFER_BIT_DEPTH) { /* depth */
-               DEBUG(("BUFFER_BIT_DEPTH\n"));
-               
-               _stride = ((cw+31)&~31) * 2; /* XXX cw or Buffer->Width??? */
-
-               DMAOUT_CHECK(BITBLT_SRC_BASE, 15);
-                       DMAOUT(0);
-                       DMAOUT(vmesa->s3vScreen->depthOffset);
-                       DMAOUT( (0 << 16) | cw );
-                       DMAOUT( (0 << 16) | ch );
-                       DMAOUT( (vmesa->SrcStride << 16) | vmesa->DestStride );
-                       DMAOUT( (~(0)) ); /* masks */
-                       DMAOUT( (~(0)) );
-                       DMAOUT(0);
-                       DMAOUT(vmesa->ClearDepth); /* 0x7FFF */
-                       /* FIXME */
-                       DMAOUT(0);
-                       DMAOUT(0);
-                       DMAOUT(0x16000122 | 0x5 | (0xF0 << 17));
-                       DMAOUT( ((cw-1) << 16) | (ch-1) );
-                       DMAOUT(0);
-                       DMAOUT( (0 << 16) | 0 );
-               DMAFINISH();            
-
-               DEBUG(("vmesa->ClearDepth = 0x%x\n", vmesa->ClearDepth));
-               mask &= ~BUFFER_BIT_DEPTH;
-       }
-
-       if (!vmesa->NotClipped) {
-               DEBUG(("vmesa->NotClipped\n")); /* yes */
-       }
-
-       if (!(vmesa->EnabledFlags & S3V_BACK_BUFFER)) {
-               DEBUG(("!S3V_BACK_BUFFER -> flush\n"));
-               DMAFLUSH();
-       }
-/*
-       if ( mask )
-               DEBUG(("still masked ;3(\n")); */ /* yes */
-#else
-      _swrast_Clear( ctx, mask );
-#endif
-}
-
-/* =============================================================
- * Depth testing
- */
-
-static void s3vUpdateZMode( GLcontext *ctx )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-       uint32_t cmd = vmesa->CMD;
-
-       DEBUG(("Depth.Test = %i\n", ctx->Depth.Test));
-       DEBUG(("CMD was = 0x%x ", cmd));
-
-/*     printf("depth --- CMD was = 0x%x \n", cmd); */
-
-       cmd &= ~Z_MASK; /*  0xfc0fffff; */
-       /* Z_BUFFER */ /* 000 mode */ /* Z_UPDATE_OFF */
-
-       if (!ctx->Depth.Test)
-               cmd |= Z_OFF;
-
-       if ( ctx->Depth.Mask )
-               cmd |= Z_UPDATE_ON;
-                       
-       switch ( ctx->Depth.Func ) {
-               case GL_NEVER:
-                       cmd |= Z_NEVER;
-                       break;
-               case GL_ALWAYS:
-                       cmd |= Z_ALWAYS;
-                       break;
-               case GL_LESS:
-                       cmd |= Z_LESS;
-                       break;
-               case GL_LEQUAL:
-                       cmd |= Z_LEQUAL;
-                       break;
-               case GL_EQUAL:
-                       cmd |= Z_EQUAL;
-                       break;
-               case GL_GEQUAL:
-                       cmd |= Z_GEQUAL;
-                       break;
-               case GL_GREATER:
-                       cmd |= Z_GREATER;
-                       break;
-               case GL_NOTEQUAL:
-                       cmd |= Z_NOTEQUAL;
-                       break;
-       }
-
-       DEBUG(("CMD is 0x%x\n", cmd));
-
-       vmesa->dirty |= S3V_UPLOAD_DEPTH;
-       vmesa->CMD = cmd;
-}
-
-static void s3vDDDepthFunc( GLcontext *ctx, GLenum func )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-
-/*     FLUSH_BATCH( vmesa ); */
-       DEBUG(("s3vDDDepthFunc\n"));
-       vmesa->new_state |= S3V_NEW_DEPTH;
-}
-
-static void s3vDDDepthMask( GLcontext *ctx, GLboolean flag )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-
-       /* FLUSH_BATCH( vmesa ); */
-       DEBUG(("s3vDDDepthMask\n"));
-       vmesa->new_state |= S3V_NEW_DEPTH;
-}
-
-static void s3vDDClearDepth( GLcontext *ctx, GLclampd d )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-
-       switch ( vmesa->DepthSize ) {
-       case 15:
-       case 16:
-               vmesa->ClearDepth = d * 0x0000ffff;     /* 65536 */
-               DEBUG(("GLclampd d = %f\n", d));
-               DEBUG(("ctx->Depth.Clear = %f\n", ctx->Depth.Clear));
-               DEBUG(("(They should be the same)\n"));
-               break;
-       case 24:
-               vmesa->ClearDepth = d * 0x00ffffff;
-               break;
-       case 32:
-               vmesa->ClearDepth = d * 0xffffffff;
-               break;
-   }
-}
-
-static void s3vDDFinish( GLcontext *ctx )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-       DMAFLUSH(); 
-}
-
-static void s3vDDFlush( GLcontext *ctx )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-       DMAFLUSH();
-}
-
-/* =============================================================
- * Fog
- */
-
-static void s3vUpdateFogAttrib( GLcontext *ctx )
-{
-/*     s3vContextPtr vmesa = S3V_CONTEXT(ctx); */
-
-       if (ctx->Fog.Enabled) {
-       } else {
-       }
-
-       switch (ctx->Fog.Mode) {
-               case GL_LINEAR:
-                       break;
-               case GL_EXP:
-                       break;
-               case GL_EXP2:
-                       break;
-       }
-}
-
-static void s3vDDFogfv( GLcontext *ctx, GLenum pname, const GLfloat *param )
-{
-   s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-   vmesa->new_state |= S3V_NEW_FOG;
-}
-
-/* =============================================================
- * Lines
- */
-static void s3vDDLineWidth( GLcontext *ctx, GLfloat width )
-{
-       /* FIXME: on virge you only have one size of 3d lines    *
-        * if we wanted more, we should start using tris instead *
-        * but virge has problem with some tris when all of the  *
-        * vertices stay on a line */
-}
-
-/* =============================================================
- * Points
- */
-static void s3vDDPointSize( GLcontext *ctx, GLfloat size )
-{
-       /* FIXME: we use 3d line to fake points. So same limitations
-        * as above apply */
-}
-
-/* =============================================================
- * Polygon 
- */
-
-static void s3vUpdatePolygon( GLcontext *ctx )
-{
-       /* FIXME: I don't think we could do much here */
-
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-       vmesa->dirty |= S3V_UPLOAD_POLYGON;
-}
-
-/* =============================================================
- * Clipping
- */
-
-static void s3vUpdateClipping( GLcontext *ctx )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-       __DRIdrawablePrivate *dPriv = vmesa->driDrawable;
-
-       int x0,y0,x1,y1;
-
-       DEBUG((">>> s3vUpdateClipping <<<\n"));
-/*
-       if ( vmesa->driDrawable ) {
-               DEBUG(("s3vUpdateClipping\n"));
-*/
-       if (vmesa->EnabledFlags & S3V_BACK_BUFFER) {
-               DEBUG(("S3V_BACK_BUFFER\n"));
-
-               x0 = 0;
-               y0 = 0;
-               x1 = dPriv->w - 1;
-               y1 = dPriv->h - 1;
-
-               vmesa->SrcBase = 0;
-               vmesa->DestBase =  vmesa->s3vScreen->backOffset;
-               vmesa->DestBlit = vmesa->DestBase;
-               vmesa->ScissorLR = ( (0 << 16) | (dPriv->w-1) );
-               vmesa->ScissorTB = ( (0 << 16) | (dPriv->h-1) );
-/*
-               vmesa->ScissorLR = ( (x0 << 16) | x1 );
-               vmesa->ScissorTB = ( (y0 << 16) | y1 );
-*/
-               vmesa->SrcStride = ( ((dPriv->w+31)&~31) * vmesa->s3vScreen->cpp );
-               vmesa->DestStride = vmesa->driScreen->fbWidth*vmesa->s3vScreen->cpp;
-               vmesa->ScissorWH = ( (dPriv->w << 16) | dPriv->h );
-               vmesa->SrcXY = 0;
-/*             vmesa->DestXY = ( (dPriv->x << 16) | dPriv->y );  */
-               vmesa->DestXY = ( (0 << 16) | 0 );
-       } else {
-               DEBUG(("S3V_FRONT_BUFFER\n"));
-
-               x0 = dPriv->x;
-               y0 = dPriv->y;
-               x1 = x0 + dPriv->w - 1;
-               y1 = y0 + dPriv->h - 1;
-
-               vmesa->SrcBase = 0;
-               vmesa->DestBase = 0;
-               vmesa->ScissorLR = ( (x0 << 16) | x1 );
-               vmesa->ScissorTB = ( (y0 << 16) | y1 );
-               vmesa->DestStride = vmesa->driScreen->fbWidth*vmesa->s3vScreen->cpp;
-               vmesa->SrcStride = vmesa->DestStride;
-               vmesa->DestBase = (y0 * vmesa->DestStride)
-                               + x0*vmesa->s3vScreen->cpp;
-               vmesa->DestBlit = 0;
-               vmesa->ScissorWH = ( (x1 << 16) | y1 );
-               vmesa->SrcXY = 0;
-               vmesa->DestXY = ( (0 << 16) | 0 );
-/*             vmesa->DestXY = ( (dPriv->x << 16) | dPriv->y ); */
-       }
-
-       DEBUG(("x0=%i y0=%i x1=%i y1=%i\n", x0, y0, x1, y1));
-       DEBUG(("stride=%i rectWH=0x%x\n\n", vmesa->DestStride, vmesa->ScissorWH));
-
-       /* FIXME: how could we use the following info? */
-       /* if (ctx->Scissor.Enabled) {} */
-
-       vmesa->dirty |= S3V_UPLOAD_CLIP; 
-/*     }  */
-}
-
-static void s3vDDScissor( GLcontext *ctx,
-                          GLint x, GLint y, GLsizei w, GLsizei h )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-
-       DEBUG((">>> s3vDDScissor <<<"));
-       /* FLUSH_BATCH( vmesa ); */
-       vmesa->new_state |= S3V_NEW_CLIP;
-}
-
-/* =============================================================
- * Culling
- */
-
-static void s3vUpdateCull( GLcontext *ctx )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-       GLfloat backface_sign = 1;
-
-       DEBUG(("s3vUpdateCull\n"));
-       /* FIXME: GL_FRONT_AND_BACK */
-
-       switch ( ctx->Polygon.CullFaceMode ) {
-       case GL_BACK:
-               if (ctx->Polygon.FrontFace == GL_CCW)
-                       backface_sign = -1;
-               break;
-
-       case GL_FRONT:
-               if (ctx->Polygon.FrontFace != GL_CCW)
-                       backface_sign = -1;
-               break;
-
-       default:
-               break;
-       }
-
-       vmesa->backface_sign = backface_sign;
-       vmesa->dirty |= S3V_UPLOAD_GEOMETRY;
-}
-
-
-static void s3vDDCullFace( GLcontext *ctx, GLenum mode )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-       /* FLUSH_BATCH( vmesa ); */
-       vmesa->new_state |= S3V_NEW_CULL;
-}
-
-static void s3vDDFrontFace( GLcontext *ctx, GLenum mode )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-       /* FLUSH_BATCH( vmesa ); */
-       vmesa->new_state |= S3V_NEW_CULL;
-}
-
-/* =============================================================
- * Masks
- */
-
-static void s3vUpdateMasks( GLcontext *ctx )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-
-       GLuint mask = s3vPackColor( vmesa->s3vScreen->cpp,
-                               ctx->Color.ColorMask[RCOMP],
-                               ctx->Color.ColorMask[GCOMP],
-                               ctx->Color.ColorMask[BCOMP],
-                               ctx->Color.ColorMask[ACOMP] );
-
-       if (vmesa->s3vScreen->cpp == 2) mask |= mask << 16;
-
-       /* FIXME: can we do something in virge? */
-}
-/*
-static void s3vDDColorMask( GLcontext *ctx, GLboolean r, GLboolean g,
-                             GLboolean b, GLboolean a)
-{
-   s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-
-   FLUSH_BATCH( vmesa );
-   vmesa->new_state |= S3V_NEW_MASKS;
-}
-*/
-/* =============================================================
- * Rendering attributes
- */
-
-/* =============================================================
- * Miscellaneous
- */
-
-static void s3vDDClearColor( GLcontext *ctx, const GLfloat color[4])
-{
-   s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-
-   DEBUG(("*** s3vDDClearColor\n"));
-
-   vmesa->ClearColor = s3vPackColor( 2, /* vmesa->s3vScreen->cpp, */
-                                     color[0], color[1], color[2], color[3] );
-
-#if 0
-   if (vmesa->s3vScreen->cpp == 2) vmesa->ClearColor |= vmesa->ClearColor<<16;
-#endif
-}
-
-static void s3vDDSetDrawBuffer( GLcontext *ctx, GLenum mode )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-       int found = GL_TRUE;
-
-       DEBUG(("*** s3vDDSetDrawBuffer ***\n"));
-
-       /* FLUSH_BATCH( vmesa ); */
-
-       switch ( mode ) {
-               case GL_FRONT_LEFT:
-                       vmesa->drawOffset = vmesa->s3vScreen->frontOffset;
-                       break;
-               case GL_BACK_LEFT:
-                       vmesa->drawOffset = vmesa->s3vScreen->backOffset;
-                       /* vmesa->driScreen->fbHeight *
-                        * vmesa->driScreen->fbWidth *
-                        * vmesa->s3vScreen->cpp; */
-                       break;
-               default:
-                       found = GL_FALSE;
-                       break;
-       }
-
-       DEBUG(("vmesa->drawOffset = 0x%x\n", vmesa->drawOffset));
-/*     return GL_TRUE; */
-}
-
-/* =============================================================
- * Window position and viewport transformation
- */
-
-void s3vUpdateWindow( GLcontext *ctx )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-       __DRIdrawablePrivate *dPriv = vmesa->driDrawable;
-       GLfloat xoffset = (GLfloat)dPriv->x;
-       GLfloat yoffset =
-               vmesa->driScreen->fbHeight - (GLfloat)dPriv->y - dPriv->h;
-       const GLfloat *v = ctx->Viewport._WindowMap.m;
-
-       GLfloat sx = v[MAT_SX];
-       GLfloat tx = v[MAT_TX] + xoffset;
-       GLfloat sy = v[MAT_SY];
-       GLfloat ty = v[MAT_TY] + yoffset;
-       GLfloat sz = v[MAT_SZ] * vmesa->depth_scale;
-       GLfloat tz = v[MAT_TZ] * vmesa->depth_scale;
-
-       vmesa->dirty |= S3V_UPLOAD_VIEWPORT;
-
-       vmesa->ViewportScaleX = sx;
-       vmesa->ViewportScaleY = sy;
-       vmesa->ViewportScaleZ = sz;
-       vmesa->ViewportOffsetX = tx;
-       vmesa->ViewportOffsetY = ty;
-       vmesa->ViewportOffsetZ = tz;
-}
-
-
-/*
-static void s3vDDViewport( GLcontext *ctx, GLint x, GLint y,
-                           GLsizei width, GLsizei height )
-{
-       s3vUpdateWindow( ctx );
-}
-
-static void s3vDDDepthRange( GLcontext *ctx, GLclampd nearval,
-                             GLclampd farval )
-{
-       s3vUpdateWindow( ctx );
-}
-*/
-void s3vUpdateViewportOffset( GLcontext *ctx )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-       __DRIdrawablePrivate *dPriv = vmesa->driDrawable;
-       GLfloat xoffset = (GLfloat)dPriv->x;
-       GLfloat yoffset =
-               vmesa->driScreen->fbHeight - (GLfloat)dPriv->y - dPriv->h;
-       const GLfloat *v = ctx->Viewport._WindowMap.m;
-
-       GLfloat tx = v[MAT_TX] + xoffset;
-       GLfloat ty = v[MAT_TY] + yoffset;
-
-       DEBUG(("*** s3vUpdateViewportOffset ***\n"));
-
-       if ( vmesa->ViewportOffsetX != tx ||
-               vmesa->ViewportOffsetY != ty )
-       {
-               vmesa->ViewportOffsetX = tx;
-               vmesa->ViewportOffsetY = ty;
-
-               vmesa->new_state |= S3V_NEW_WINDOW;
-       }
-
-/*     vmesa->new_state |= S3V_NEW_CLIP; */
-}
-
-/* =============================================================
- * State enable/disable
- */
-
-static void s3vDDEnable( GLcontext *ctx, GLenum cap, GLboolean state )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-
-       switch ( cap ) {
-       case GL_ALPHA_TEST:
-       case GL_BLEND:
-               vmesa->new_state |= S3V_NEW_ALPHA;
-               DEBUG(("s3vDDEnable: GL_BLEND\n"));
-       break;
-
-       case GL_CULL_FACE:
-               vmesa->new_state |= S3V_NEW_CULL;
-               DEBUG(("s3vDDEnable: GL_CULL_FACE\n"));
-       break;
-
-       case GL_DEPTH_TEST:
-               vmesa->new_state |= S3V_NEW_DEPTH;
-               DEBUG(("s3vDDEnable: GL_DEPTH\n"));
-       break;
-#if 0
-       case GL_FOG:
-               vmesa->new_state |= S3V_NEW_FOG;
-       break;
-#endif
-
-       case GL_SCISSOR_TEST:
-               vmesa->new_state |= S3V_NEW_CLIP;
-       break;
-
-       case GL_TEXTURE_2D:
-               DEBUG(("*** GL_TEXTURE_2D: %i\n", state));
-               vmesa->_3d_mode = state;
-               vmesa->restore_primitive = -1;
-       break;
-       
-       default:
-               return;
-       }
-}
-
-/* =============================================================
- * State initialization, management
- */
-
-
-/*
- * Load the current context's state into the hardware.
- *
- * NOTE: Be VERY careful about ensuring the context state is marked for
- * upload, the only place it shouldn't be uploaded is when the setup
- * state has changed in ReducedPrimitiveChange as this comes right after
- * a state update.
- *
- * Blits of any type should always upload the context and masks after
- * they are done.
- */
-void s3vEmitHwState( s3vContextPtr vmesa )
-{
-    if (!vmesa->driDrawable) return;
-    if (!vmesa->dirty) return; 
-
-       DEBUG(("**********************\n"));
-       DEBUG(("*** s3vEmitHwState ***\n"));
-       DEBUG(("**********************\n"));
-
-    if (vmesa->dirty & S3V_UPLOAD_VIEWPORT) {
-       vmesa->dirty &= ~S3V_UPLOAD_VIEWPORT;
-       DEBUG(("S3V_UPLOAD_VIEWPORT\n"));
-    }
-   
-    if ( (vmesa->dirty & S3V_UPLOAD_POINTMODE) ||
-        (vmesa->dirty & S3V_UPLOAD_LINEMODE) ||
-        (vmesa->dirty & S3V_UPLOAD_TRIMODE) ) {
-
-    }
-    
-    if (vmesa->dirty & S3V_UPLOAD_POINTMODE) {
-       vmesa->dirty &= ~S3V_UPLOAD_POINTMODE;
-    }
-
-    if (vmesa->dirty & S3V_UPLOAD_LINEMODE) {
-       vmesa->dirty &= ~S3V_UPLOAD_LINEMODE;
-    }
-    
-    if (vmesa->dirty & S3V_UPLOAD_TRIMODE) {
-       vmesa->dirty &= ~S3V_UPLOAD_TRIMODE;
-    }
-
-    if (vmesa->dirty & S3V_UPLOAD_FOG) {
-       GLchan c[3], col;
-       UNCLAMPED_FLOAT_TO_RGB_CHAN( c, vmesa->glCtx->Fog.Color );
-       DEBUG(("uploading ** FOG **\n"));
-       col = s3vPackColor(2, c[0], c[1], c[2], 0);
-       vmesa->dirty &= ~S3V_UPLOAD_FOG;
-    }
-    
-    if (vmesa->dirty & S3V_UPLOAD_DITHER) {
-       vmesa->dirty &= ~S3V_UPLOAD_DITHER;
-    }
-    
-    if (vmesa->dirty & S3V_UPLOAD_LOGICOP) {
-       vmesa->dirty &= ~S3V_UPLOAD_LOGICOP;
-    }
-    
-    if (vmesa->dirty & S3V_UPLOAD_CLIP) {
-       vmesa->dirty &= ~S3V_UPLOAD_CLIP;
-       DEBUG(("S3V_UPLOAD_CLIP\n"));
-       DEBUG(("vmesa->ScissorLR: %i\n",  vmesa->ScissorLR));
-       DEBUG(("vmesa->ScissorTB: %i\n",  vmesa->ScissorTB));
-    }
-
-    if (vmesa->dirty & S3V_UPLOAD_MASKS) {
-       vmesa->dirty &= ~S3V_UPLOAD_MASKS;
-       DEBUG(("S3V_UPLOAD_BLEND\n"));
-    }
-    
-    if (vmesa->dirty & S3V_UPLOAD_ALPHA) {
-       vmesa->dirty &= ~S3V_UPLOAD_ALPHA;
-       DEBUG(("S3V_UPLOAD_ALPHA\n"));
-    }
-    
-    if (vmesa->dirty & S3V_UPLOAD_SHADE) {
-       vmesa->dirty &= ~S3V_UPLOAD_SHADE;
-    }
-    
-    if (vmesa->dirty & S3V_UPLOAD_POLYGON) {
-       vmesa->dirty &= ~S3V_UPLOAD_POLYGON;
-    }
-    
-    if (vmesa->dirty & S3V_UPLOAD_DEPTH) {
-       vmesa->dirty &= ~S3V_UPLOAD_DEPTH;
-       DEBUG(("S3V_UPLOAD_DEPTH: DepthMode = 0x%x08\n", vmesa->DepthMode));
-    }
-    
-    if (vmesa->dirty & S3V_UPLOAD_GEOMETRY) {
-       vmesa->dirty &= ~S3V_UPLOAD_GEOMETRY;
-    }
-
-    if (vmesa->dirty & S3V_UPLOAD_TRANSFORM) {
-       vmesa->dirty &= ~S3V_UPLOAD_TRANSFORM;
-    }
-    
-    if (vmesa->dirty & S3V_UPLOAD_TEX0) {
-       s3vTextureObjectPtr curTex = vmesa->CurrentTexObj[0];
-       vmesa->dirty &= ~S3V_UPLOAD_TEX0;
-       DEBUG(("S3V_UPLOAD_TEX0\n"));
-       if (curTex) {
-               DEBUG(("S3V_UPLOAD_TEX0: curTex\n"));
-       } else {
-               DEBUG(("S3V_UPLOAD_TEX0: !curTex\n"));
-       }
-    }
-}
-
-void s3vDDUpdateHWState( GLcontext *ctx )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-
-       int new_state = vmesa->new_state;
-
-       /* s3vUpdateClipping( ctx ); */
-
-       if ( new_state )
-       {
-
-               vmesa->new_state = 0;
-
-               /* Update the various parts of the context's state.
-                */
-               if ( new_state & S3V_NEW_ALPHA )
-                       s3vUpdateAlphaMode( ctx );
-
-               if ( new_state & S3V_NEW_DEPTH )
-                       s3vUpdateZMode( ctx );
-
-               if ( new_state & S3V_NEW_FOG )
-                       s3vUpdateFogAttrib( ctx );
-
-               if ( new_state & S3V_NEW_CLIP )
-               {
-                       DEBUG(("---> going to s3vUpdateClipping\n"));
-                       s3vUpdateClipping( ctx );
-               }
-
-               if ( new_state & S3V_NEW_POLYGON )
-                       s3vUpdatePolygon( ctx );
-
-               if ( new_state & S3V_NEW_CULL )
-                       s3vUpdateCull( ctx );
-
-               if ( new_state & S3V_NEW_MASKS )
-                       s3vUpdateMasks( ctx );
-
-               if ( new_state & S3V_NEW_WINDOW )
-                       s3vUpdateWindow( ctx );
-/*
-               if ( new_state & S3_NEW_TEXTURE )
-                       s3vUpdateTextureState( ctx );           
-*/
-               CMDCHANGE();
-       }
-
-       /* HACK ! */
-       s3vEmitHwState( vmesa );
-}
-
-
-static void s3vDDUpdateState( GLcontext *ctx, GLuint new_state )
-{
-       _swrast_InvalidateState( ctx, new_state );
-       _swsetup_InvalidateState( ctx, new_state );
-       _vbo_InvalidateState( ctx, new_state );
-       _tnl_InvalidateState( ctx, new_state );
-       S3V_CONTEXT(ctx)->new_gl_state |= new_state;
-}
-
-
-/* Initialize the context's hardware state.
- */
-void s3vInitState( s3vContextPtr vmesa )
-{
-       vmesa->new_state = 0;
-}
-
-/* Initialize the driver's state functions.
- */
-void s3vInitStateFuncs( GLcontext *ctx )
-{
-   ctx->Driver.UpdateState             = s3vDDUpdateState;
-
-   ctx->Driver.Clear                   = s3vDDClear;
-   ctx->Driver.ClearIndex              = NULL;
-   ctx->Driver.ClearColor              = s3vDDClearColor;
-   ctx->Driver.DrawBuffer              = s3vDDSetDrawBuffer; 
-   ctx->Driver.ReadBuffer               = NULL; /* XXX */
-
-   ctx->Driver.IndexMask               = NULL;
-   ctx->Driver.ColorMask               = NULL; /* s3vDDColorMask; */ /* FIXME */
-
-   ctx->Driver.AlphaFunc               = s3vDDAlphaFunc; /* FIXME */
-#if 0
-   ctx->Driver.BlendEquation           = NULL; /* s3vDDBlendEquation; */
-   ctx->Driver.BlendFunc               = s3vDDBlendFunc; /* FIXME */
-#endif
-   ctx->Driver.BlendFuncSeparate       = NULL; /* s3vDDBlendFuncSeparate; */
-   ctx->Driver.ClearDepth              = s3vDDClearDepth;
-   ctx->Driver.CullFace                        = s3vDDCullFace; 
-   ctx->Driver.FrontFace               = s3vDDFrontFace;
-   ctx->Driver.DepthFunc               = s3vDDDepthFunc;       /* FIXME */
-   ctx->Driver.DepthMask               = s3vDDDepthMask;       /* FIXME */
-   ctx->Driver.DepthRange              = NULL; /* s3vDDDepthRange; */
-   ctx->Driver.Enable                  = s3vDDEnable;          /* FIXME */
-   ctx->Driver.Finish                  = s3vDDFinish;
-   ctx->Driver.Flush                   = s3vDDFlush;
-#if 1
-   ctx->Driver.Fogfv                   = NULL; /* s3vDDFogfv; */
-#endif
-   ctx->Driver.Hint                    = NULL;
-   ctx->Driver.LineWidth               = NULL; /* s3vDDLineWidth; */
-   ctx->Driver.LineStipple             = NULL; /* s3vDDLineStipple; */
-#if ENABLELIGHTING
-   ctx->Driver.Lightfv                 = NULL; /* s3vDDLightfv; */
-
-   ctx->Driver.LightModelfv            = NULL; /* s3vDDLightModelfv; */
-#endif
-   ctx->Driver.LogicOpcode             = NULL; /* s3vDDLogicalOpcode; */
-   ctx->Driver.PointSize               = NULL; /* s3vDDPointSize; */
-   ctx->Driver.PolygonMode             = NULL; /* s3vDDPolygonMode; */
-   ctx->Driver.PolygonStipple          = NULL; /* s3vDDPolygonStipple; */
-   ctx->Driver.Scissor                 = s3vDDScissor; /* ScissorLR / ScissorTB */
-   ctx->Driver.ShadeModel              = NULL; /* s3vDDShadeModel; */
-   ctx->Driver.Viewport                        = NULL; /* s3vDDViewport; */
-}
diff --git a/src/mesa/drivers/dri/s3v/s3v_tex.c b/src/mesa/drivers/dri/s3v/s3v_tex.c
deleted file mode 100644 (file)
index ec1182f..0000000
+++ /dev/null
@@ -1,548 +0,0 @@
-/*
- * Author: Max Lingua <sunmax@libero.it>
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#include "main/glheader.h"
-#include "main/mtypes.h"
-#include "main/simple_list.h"
-#include "main/enums.h"
-#include "main/mm.h"
-#include "main/texstore.h"
-#include "main/texformat.h"
-#include "main/teximage.h"
-#include "swrast/swrast.h"
-
-#include "s3v_context.h"
-#include "s3v_tex.h"
-
-
-extern void s3vSwapOutTexObj(s3vContextPtr vmesa, s3vTextureObjectPtr t);
-extern void s3vDestroyTexObj(s3vContextPtr vmesa, s3vTextureObjectPtr t);
-
-/*
-static GLuint s3vComputeLodBias(GLfloat bias)
-{
-#if TEX_DEBUG_ON
-       DEBUG_TEX(("*** s3vComputeLodBias ***\n"));
-#endif
-       return bias;
-}
-*/
-
-static void s3vSetTexWrapping(s3vContextPtr vmesa,
-                               s3vTextureObjectPtr t, 
-                              GLenum wraps, GLenum wrapt)
-{
-       GLuint t0 = t->TextureCMD;
-       GLuint cmd = vmesa->CMD;
-#if TEX_DEBUG_ON
-       static unsigned int times=0;
-       DEBUG_TEX(("*** s3vSetTexWrapping: #%i ***\n", ++times));
-#endif
-
-
-       t0 &= ~TEX_WRAP_MASK;
-       cmd &= ~TEX_WRAP_MASK;
-
-       if ((wraps != GL_CLAMP) || (wrapt != GL_CLAMP)) {
-               DEBUG(("TEX_WRAP_ON\n"));
-               t0 |= TEX_WRAP_ON;
-               cmd |= TEX_WRAP_ON; 
-       }
-
-       cmd |= TEX_WRAP_ON; /* FIXME: broken if off */
-       t->TextureCMD = t0;
-       vmesa->CMD = cmd;
-}
-
-
-static void s3vSetTexFilter(s3vContextPtr vmesa, 
-                            s3vTextureObjectPtr t, 
-                            GLenum minf, GLenum magf)
-{
-       GLuint t0 = t->TextureCMD;
-       GLuint cmd = vmesa->CMD;
-#if TEX_DEBUG_ON
-       static unsigned int times=0;
-       DEBUG_TEX(("*** s3vSetTexFilter: #%i ***\n", ++times));
-#endif
-
-       t0 &= ~TEX_FILTER_MASK;
-       cmd &= ~TEX_FILTER_MASK;
-
-       switch (minf) {
-               case GL_NEAREST:
-                       DEBUG(("GL_NEAREST\n"));
-                       t0 |= NEAREST;
-                       cmd |= NEAREST;
-                       break;
-               case GL_LINEAR:
-                       DEBUG(("GL_LINEAR\n"));
-                       t0 |= LINEAR;
-                       cmd |= LINEAR;
-                       break;
-               case GL_NEAREST_MIPMAP_NEAREST:
-                       DEBUG(("GL_MIPMAP_NEAREST\n"));
-                       t0 |= MIP_NEAREST;
-                       cmd |= MIP_NEAREST;
-                       break;
-               case GL_LINEAR_MIPMAP_NEAREST:
-                       DEBUG(("GL_LINEAR_MIPMAP_NEAREST\n"));
-                       t0 |= LINEAR_MIP_NEAREST;
-                       cmd |= LINEAR_MIP_NEAREST;
-                       break;
-               case GL_NEAREST_MIPMAP_LINEAR:
-                       DEBUG(("GL_NEAREST_MIPMAP_LINEAR\n"));
-                       t0 |= MIP_LINEAR;
-                       cmd |= MIP_LINEAR;
-                       break;
-               case GL_LINEAR_MIPMAP_LINEAR:
-                       DEBUG(("GL_LINEAR_MIPMAP_LINEAR\n"));
-                       t0 |= LINEAR_MIP_LINEAR;
-                       cmd |= LINEAR_MIP_LINEAR;
-                       break;
-               default:
-                       break;
-       }
-       /* FIXME: bilinear? */
-
-#if 0
-       switch (magf) {
-               case GL_NEAREST:
-                       break;
-               case GL_LINEAR:
-                       break;
-               default:
-                       break;
-       }  
-#endif
-
-       t->TextureCMD = t0;
-
-       DEBUG(("CMD was = 0x%x\n", vmesa->CMD));
-       DEBUG(("CMD is = 0x%x\n", cmd));
-
-       vmesa->CMD = cmd; 
-       /* CMDCHANGE(); */
-}
-
-
-static void s3vSetTexBorderColor(s3vContextPtr vmesa,
-                                 s3vTextureObjectPtr t, 
-                                 const GLfloat color[4])
-{
-       GLubyte c[4];
-       CLAMPED_FLOAT_TO_UBYTE(c[0], color[0]);
-       CLAMPED_FLOAT_TO_UBYTE(c[1], color[1]);
-       CLAMPED_FLOAT_TO_UBYTE(c[2], color[2]);
-       CLAMPED_FLOAT_TO_UBYTE(c[3], color[3]);
-
-#if TEX_DEBUG_ON
-       static unsigned int times=0;
-       DEBUG_TEX(("*** s3vSetTexBorderColor: #%i ***\n", ++times));
-#endif
-
-       /*FIXME: it should depend on tex col format */
-       /* switch(t0 ... t->TextureColorMode) */
-
-       /* case TEX_COL_ARGB1555: */
-       t->TextureBorderColor = S3VIRGEPACKCOLOR555(c[0], c[1], c[2], c[3]);
-
-       DEBUG(("TextureBorderColor = 0x%x\n", t->TextureBorderColor));
-
-       vmesa->TextureBorderColor = t->TextureBorderColor;
-}
-
-static void s3vTexParameter( GLcontext *ctx, GLenum target,
-                             struct gl_texture_object *tObj,
-                             GLenum pname, const GLfloat *params )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-       s3vTextureObjectPtr t = (s3vTextureObjectPtr) tObj->DriverData;
-#if TEX_DEBUG_ON
-       static unsigned int times=0;
-       DEBUG_TEX(("*** s3vTexParameter: #%i ***\n", ++times));
-#endif
-   
-       if (!t) return;
-
-       /* Can't do the update now as we don't know whether to flush
-        * vertices or not.  Setting vmesa->new_state means that
-        * s3vUpdateTextureState() will be called before any triangles are
-        * rendered.  If a statechange has occurred, it will be detected at
-        * that point, and buffered vertices flushed.  
-       */
-       switch (pname) {
-       case GL_TEXTURE_MIN_FILTER:
-       case GL_TEXTURE_MAG_FILTER:
-               s3vSetTexFilter( vmesa, t, tObj->MinFilter, tObj->MagFilter );
-               break;
-
-       case GL_TEXTURE_WRAP_S:
-       case GL_TEXTURE_WRAP_T:
-               s3vSetTexWrapping( vmesa, t, tObj->WrapS, tObj->WrapT );
-               break;
-  
-       case GL_TEXTURE_BORDER_COLOR:
-               s3vSetTexBorderColor( vmesa, t, tObj->BorderColor );
-               break;
-
-       case GL_TEXTURE_BASE_LEVEL:
-       case GL_TEXTURE_MAX_LEVEL:
-       case GL_TEXTURE_MIN_LOD:
-       case GL_TEXTURE_MAX_LOD:
-       /* This isn't the most efficient solution but there doesn't appear to
-        * be a nice alternative for Virge.  Since there's no LOD clamping,
-        * we just have to rely on loading the right subset of mipmap levels
-        * to simulate a clamped LOD.
-        */
-               s3vSwapOutTexObj( vmesa, t ); 
-               break;
-
-       default:
-               return;
-       }
-
-       if (t == vmesa->CurrentTexObj[0])
-               vmesa->dirty |= S3V_UPLOAD_TEX0;
-
-#if 0
-       if (t == vmesa->CurrentTexObj[1]) {
-               vmesa->dirty |= S3V_UPLOAD_TEX1;
-       }
-#endif
-}
-
-
-static void s3vTexEnv( GLcontext *ctx, GLenum target, 
-                       GLenum pname, const GLfloat *param )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT( ctx );
-       GLuint unit = ctx->Texture.CurrentUnit;
-#if TEX_DEBUG_ON
-       static unsigned int times=0;
-       DEBUG_TEX(("*** s3vTexEnv: #%i ***\n", ++times));
-#endif
-
-       /* Only one env color.  Need a fallback if env colors are different
-        * and texture setup references env color in both units.  
-        */
-       switch (pname) {
-       case GL_TEXTURE_ENV_COLOR: {
-               struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit];
-               GLfloat *fc = texUnit->EnvColor;
-               GLuint r, g, b, a, col;
-               CLAMPED_FLOAT_TO_UBYTE(r, fc[0]);
-               CLAMPED_FLOAT_TO_UBYTE(g, fc[1]);
-               CLAMPED_FLOAT_TO_UBYTE(b, fc[2]);
-               CLAMPED_FLOAT_TO_UBYTE(a, fc[3]);
-
-               col =  ((a << 24) | 
-                       (r << 16) | 
-                       (g <<  8) | 
-                       (b <<  0));
-
-               break;
-       }
-       case GL_TEXTURE_ENV_MODE:
-               vmesa->TexEnvImageFmt[unit] = 0; /* force recalc of env state */
-               break;
-       case GL_TEXTURE_LOD_BIAS_EXT: {
-/*
-               struct gl_texture_object *tObj =
-                       ctx->Texture.Unit[unit]._Current;
-
-               s3vTextureObjectPtr t = (s3vTextureObjectPtr) tObj->DriverData;
-*/
-               break;
-       }
-       default:
-               break;
-       }
-} 
-
-static void s3vTexImage1D( GLcontext *ctx, GLenum target, GLint level,
-                           GLint internalFormat,
-                           GLint width, GLint border,
-                           GLenum format, GLenum type, 
-                           const GLvoid *pixels,
-                           const struct gl_pixelstore_attrib *pack,
-                           struct gl_texture_object *texObj,
-                           struct gl_texture_image *texImage )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT( ctx );
-       s3vTextureObjectPtr t = (s3vTextureObjectPtr) texObj->DriverData;
-#if TEX_DEBUG_ON
-       static unsigned int times=0;
-       DEBUG_TEX(("*** s3vTexImage1D: #%i ***\n", ++times));
-#endif
-
-#if 1 
-       if (t) {
-#if _TEXFLUSH
-               DMAFLUSH();
-#endif
-               s3vSwapOutTexObj( vmesa, t );
-/*
-               s3vDestroyTexObj( vmesa, t );
-               texObj->DriverData = 0;
-*/
-       }
-#endif
-       _mesa_store_teximage1d( ctx, target, level, internalFormat,
-                               width, border, format, type,
-                               pixels, pack, texObj, texImage );
-}
-
-static void s3vTexSubImage1D( GLcontext *ctx, 
-                              GLenum target,
-                              GLint level,     
-                              GLint xoffset,
-                              GLsizei width,
-                              GLenum format, GLenum type,
-                              const GLvoid *pixels,
-                              const struct gl_pixelstore_attrib *pack,
-                              struct gl_texture_object *texObj,
-                              struct gl_texture_image *texImage )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT( ctx );
-       s3vTextureObjectPtr t = (s3vTextureObjectPtr) texObj->DriverData;
-#if TEX_DEBUG_ON
-       static unsigned int times=0;
-       DEBUG_TEX(("*** s3vTexSubImage1D: #%i ***\n", ++times));
-#endif
-
-#if 1
-       if (t) {
-#if _TEXFLUSH
-               DMAFLUSH();
-#endif
-               s3vSwapOutTexObj( vmesa, t );
-/*
-               s3vDestroyTexObj( vmesa, t );
-               texObj->DriverData = 0;
-*/
-       }
-#endif
-       _mesa_store_texsubimage1d(ctx, target, level, xoffset, width, 
-                               format, type, pixels, pack, texObj,
-                               texImage);
-}
-
-static void s3vTexImage2D( GLcontext *ctx, GLenum target, GLint level,
-                           GLint internalFormat,
-                           GLint width, GLint height, GLint border,
-                           GLenum format, GLenum type, const GLvoid *pixels,
-                           const struct gl_pixelstore_attrib *packing,
-                           struct gl_texture_object *texObj,
-                           struct gl_texture_image *texImage )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT( ctx );
-       s3vTextureObjectPtr t = (s3vTextureObjectPtr) texObj->DriverData;
-
-#if TEX_DEBUG_ON
-       static unsigned int times=0;
-       DEBUG_TEX(("*** s3vTexImage2D: #%i ***\n", ++times));
-#endif
-
-#if 1 
-       if (t) {
-#if _TEXFLUSH
-               DMAFLUSH();
-#endif
-               s3vSwapOutTexObj( vmesa, t ); 
-/*
-               s3vDestroyTexObj( vmesa, t );
-               texObj->DriverData = 0;
-*/
-       }
-#endif
-       _mesa_store_teximage2d( ctx, target, level, internalFormat,
-                               width, height, border, format, type,
-                               pixels, packing, texObj, texImage );
-}
-
-static void s3vTexSubImage2D( GLcontext *ctx, 
-                              GLenum target,
-                              GLint level,     
-                              GLint xoffset, GLint yoffset,
-                              GLsizei width, GLsizei height,
-                              GLenum format, GLenum type,
-                              const GLvoid *pixels,
-                              const struct gl_pixelstore_attrib *packing,
-                              struct gl_texture_object *texObj,
-                              struct gl_texture_image *texImage )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT( ctx );
-       s3vTextureObjectPtr t = (s3vTextureObjectPtr) texObj->DriverData;
-#if TEX_DEBUG_ON
-       static unsigned int times=0;
-       DEBUG_TEX(("*** s3vTexSubImage2D: #%i ***\n", ++times));
-#endif
-
-#if 1
-       if (t) {
-#if _TEXFLUSH
-               DMAFLUSH();
-#endif
-               s3vSwapOutTexObj( vmesa, t );
-/* 
-               s3vDestroyTexObj( vmesa, t );
-               texObj->DriverData = 0;
-*/
-       }
-#endif
-       _mesa_store_texsubimage2d(ctx, target, level, xoffset, yoffset, width, 
-                               height, format, type, pixels, packing, texObj,
-                               texImage);
-}
-
-
-static void s3vBindTexture( GLcontext *ctx, GLenum target,
-                            struct gl_texture_object *tObj )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT( ctx );
-       s3vTextureObjectPtr t = (s3vTextureObjectPtr) tObj->DriverData;
-       GLuint cmd = vmesa->CMD;
-#if TEX_DEBUG_ON
-       static unsigned int times=0;
-       DEBUG_TEX(("*** s3vBindTexture: #%i ***\n", ++times));
-#endif
-
-       if (!t) {
-/*
-               GLfloat bias = ctx->Texture.Unit[ctx->Texture.CurrentUnit].LodBias;
-*/
-               t = CALLOC_STRUCT(s3v_texture_object_t);
-
-               /* Initialize non-image-dependent parts of the state:
-                */
-               t->globj = tObj;
-#if 0
-               if (target == GL_TEXTURE_2D) {
-               } else
-               if (target == GL_TEXTURE_1D) {
-               }
-
-#if X_BYTE_ORDER == X_LITTLE_ENDIAN
-               t->TextureFormat = (TF_LittleEndian |
-#else
-               t->TextureFormat = (TF_BigEndian |
-#endif
-#endif
-               t->dirty_images = ~0;
-
-               tObj->DriverData = t;
-               make_empty_list( t );
-#if 0
-               s3vSetTexWrapping( vmesa, t, tObj->WrapS, tObj->WrapT );
-               s3vSetTexFilter( vmesa, t, tObj->MinFilter, tObj->MagFilter );
-               s3vSetTexBorderColor( vmesa, t, tObj->BorderColor );
-#endif
-       }
-
-       cmd = vmesa->CMD & ~MIP_MASK;
-    vmesa->dirty |= S3V_UPLOAD_TEX0;
-    vmesa->TexOffset = t->TextureBaseAddr[tObj->BaseLevel];
-    vmesa->TexStride = t->Pitch;
-    cmd |= MIPMAP_LEVEL(t->WidthLog2);
-       vmesa->CMD = cmd;
-       vmesa->restore_primitive = -1;
-#if 0
-       printf("t->TextureBaseAddr[0] = 0x%x\n", t->TextureBaseAddr[0]);
-       printf("t->TextureBaseAddr[1] = 0x%x\n", t->TextureBaseAddr[1]);
-       printf("t->TextureBaseAddr[2] = 0x%x\n", t->TextureBaseAddr[2]);
-#endif
-}
-
-
-static void s3vDeleteTexture( GLcontext *ctx, struct gl_texture_object *tObj )
-{
-       s3vTextureObjectPtr t = (s3vTextureObjectPtr)tObj->DriverData;
-#if TEX_DEBUG_ON
-       static unsigned int times=0;
-       DEBUG_TEX(("*** s3vDeleteTexture: #%i ***\n", ++times));
-#endif
-
-       if (t) {
-               s3vContextPtr vmesa = S3V_CONTEXT( ctx );
-
-#if _TEXFLUSH
-               if (vmesa) {
-                       DMAFLUSH();
-               }
-#endif
-
-               s3vDestroyTexObj( vmesa, t );
-               tObj->DriverData = 0;
-
-       }
-}
-
-static GLboolean s3vIsTextureResident( GLcontext *ctx, 
-                                       struct gl_texture_object *tObj )
-{
-       s3vTextureObjectPtr t = (s3vTextureObjectPtr)tObj->DriverData;
-#if TEX_DEBUG_ON
-       static unsigned int times=0;
-       DEBUG_TEX(("*** s3vIsTextureResident: #%i ***\n", ++times));
-#endif
-   
-       return (t && t->MemBlock);
-}
-
-static void s3vInitTextureObjects( GLcontext *ctx )
-{
-       /* s3vContextPtr vmesa = S3V_CONTEXT(ctx); */
-       struct gl_texture_object *texObj;
-       GLuint tmp = ctx->Texture.CurrentUnit;
-#if TEX_DEBUG_ON
-       static unsigned int times=0;
-       DEBUG_TEX(("*** s3vInitTextureObjects: #%i ***\n", ++times));
-#endif
-
-#if 1
-       ctx->Texture.CurrentUnit = 0;
-
-       texObj = ctx->Texture.Unit[0].CurrentTex[TEXTURE_1D_INDEX];
-       s3vBindTexture( ctx, GL_TEXTURE_1D, texObj );
-
-       texObj = ctx->Texture.Unit[0].CurrentTex[TEXTURE_2D_INDEX];
-       s3vBindTexture( ctx, GL_TEXTURE_2D, texObj );
-#endif
-
-#if 0
-       ctx->Texture.CurrentUnit = 1;
-
-       texObj = ctx->Texture.Unit[1].CurrentTex[TEXTURE_1D_INDEX];
-       s3vBindTexture( ctx, GL_TEXTURE_1D, texObj );
-
-       texObj = ctx->Texture.Unit[1].CurrentTex[TEXTURE_2D_INDEX];
-       s3vBindTexture( ctx, GL_TEXTURE_2D, texObj );
-#endif
-
-       ctx->Texture.CurrentUnit = tmp;
-}
-
-
-void s3vInitTextureFuncs( GLcontext *ctx )
-{
-#if TEX_DEBUG_ON
-       static unsigned int times=0;
-       DEBUG_TEX(("*** s3vInitTextureFuncs: #%i ***\n", ++times));
-#endif
-
-       ctx->Driver.TexEnv = s3vTexEnv;
-       ctx->Driver.TexImage2D = s3vTexImage2D;
-       ctx->Driver.TexSubImage2D = s3vTexSubImage2D;
-       ctx->Driver.BindTexture = s3vBindTexture;
-       ctx->Driver.DeleteTexture = s3vDeleteTexture;
-       ctx->Driver.TexParameter = s3vTexParameter;
-       ctx->Driver.UpdateTexturePalette = 0;
-       ctx->Driver.IsTextureResident = s3vIsTextureResident;
-
-       s3vInitTextureObjects( ctx );
-}
diff --git a/src/mesa/drivers/dri/s3v/s3v_tex.h b/src/mesa/drivers/dri/s3v/s3v_tex.h
deleted file mode 100644 (file)
index a823fe2..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Author: Max Lingua <sunmax@libero.it>
- */
-
-#ifndef _S3V_TEX_H
-#define _S3V_TEX_H
-
-#define TEX_DEBUG_ON 0
-
-extern void s3vUpdateTexLRU( s3vContextPtr vmesa, s3vTextureObjectPtr t );
-
-#if TEX_DEBUG_ON
-#define DEBUG_TEX(str) printf str
-#else
-#define DEBUG_TEX(str) /* str */
-#endif
-
-#define _TEXFLUSH 1 /* flush before uploading */
-#define _TEXLOCK  1 /* lock before writing new texures to card mem */
-                                       /*      if you turn it on you will gain stability and image
-                                               quality, but you will loose performance (~10%) */
-#define _TEXFALLBACK 0 /* fallback to software for -big- textures (slow) */
-                                       /* turning this off, you will lose some tex (e.g. mountains
-                                          on tuxracer) but you will increase average playability */
-
-#define _TEXALIGN 0x00000007
-
-#endif
diff --git a/src/mesa/drivers/dri/s3v/s3v_texmem.c b/src/mesa/drivers/dri/s3v/s3v_texmem.c
deleted file mode 100644 (file)
index 705d105..0000000
+++ /dev/null
@@ -1,582 +0,0 @@
-/*
- * Author: Max Lingua <sunmax@libero.it>
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#include "main/glheader.h"
-#include "main/macros.h"
-#include "main/mtypes.h"
-#include "main/simple_list.h"
-#include "main/enums.h"
-
-#include "main/mm.h"
-#include "s3v_context.h"
-#include "s3v_lock.h"
-#include "s3v_tex.h"
-
-void s3vSwapOutTexObj(s3vContextPtr vmesa, s3vTextureObjectPtr t);
-void s3vUpdateTexLRU( s3vContextPtr vmesa, s3vTextureObjectPtr t );
-
-
-void s3vDestroyTexObj(s3vContextPtr vmesa, s3vTextureObjectPtr t)
-{
-#if TEX_DEBUG_ON
-   static unsigned int times=0;
-   DEBUG_TEX(("*** s3vDestroyTexObj: #%i ***\n", ++times));
-#endif
-
-   if (!t) return;
-
-/* FIXME: useful? */
-#if _TEXFLUSH
-       if (vmesa)
-               DMAFLUSH();
-#endif
-
-   /* This is sad - need to sync *in case* we upload a texture
-    * to this newly free memory...
-    */
-   if (t->MemBlock) {
-      mmFreeMem(t->MemBlock);
-      t->MemBlock = 0;
-
-      if (vmesa && t->age > vmesa->dirtyAge)
-            vmesa->dirtyAge = t->age;
-   }
-
-   if (t->globj)
-      t->globj->DriverData = NULL;
-
-   if (vmesa) {
-      if (vmesa->CurrentTexObj[0] == t) {
-               vmesa->CurrentTexObj[0] = 0;
-               vmesa->dirty &= ~S3V_UPLOAD_TEX0;
-      }
-
-#if 0
-      if (vmesa->CurrentTexObj[1] == t) {
-         vmesa->CurrentTexObj[1] = 0;
-         vmesa->dirty &= ~S3V_UPLOAD_TEX1;
-      }
-#endif
-   }
-
-   remove_from_list(t);
-   FREE(t);
-}
-
-
-void s3vSwapOutTexObj(s3vContextPtr vmesa, s3vTextureObjectPtr t)
-{
-/*   int i; */
-#if TEX_DEBUG_ON
-   static unsigned int times=0;
-   DEBUG_TEX(("*** s3vSwapOutTexObj: #%i ***\n", ++times));
-#endif
-
-   if (t->MemBlock) {
-
-      mmFreeMem(t->MemBlock);
-      t->MemBlock = 0;
-
-      if (t->age > vmesa->dirtyAge)
-         vmesa->dirtyAge = t->age;
-   
-      t->dirty_images = ~0; 
-      move_to_tail(&(vmesa->SwappedOut), t);
-   }
-}
-
-
-/* Upload an image from mesa's internal copy.
- */
-
-static void s3vUploadTexLevel( s3vContextPtr vmesa, s3vTextureObjectPtr t,
-                               int level )
-{
-       __DRIscreenPrivate *sPriv = vmesa->driScreen;
-       const struct gl_texture_image *image = t->image[level].image;
-       int i,j;
-       int l2d;
-       /* int offset = 0; */
-       int words;
-       GLuint* dest;
-#if TEX_DEBUG_ON
-       static unsigned int times=0;
-#endif
-       if ( !image ) return;
-       if (image->Data == 0) return;
-
-       DEBUG_TEX(("*** s3vUploadTexLevel: #%i ***\n", ++times));
-       DEBUG_TEX(("level = %i\n", level));
-
-       l2d = 5; /* 32bits per texel == 1<<5 */
-/*
-       if (level == 0) 
-               ;
-*/
-       DEBUG_TEX(("t->image[%i].offset = 0x%x\n",
-               level, t->image[level].offset));
-               
-       t->TextureBaseAddr[level] = (GLuint)(t->BufAddr + t->image[level].offset
-               + _TEXALIGN) & (GLuint)(~_TEXALIGN);
-       dest = (GLuint*)(sPriv->pFB + t->TextureBaseAddr[level]); 
-
-       DEBUG_TEX(("sPriv->pFB = 0x%x\n", sPriv->pFB));
-       DEBUG_TEX(("dest = 0x%x\n", dest));
-       DEBUG_TEX(("dest - sPriv->pFB = 0x%x\n", ((int)dest - (int)sPriv->pFB)));
-
-       /* NOTE: we implicitly suppose t->texelBytes == 2 */
-
-       words = (image->Width * image->Height) >> 1;
-
-       DEBUG_TEX(("\n\n"));
-
-       switch (t->image[level].internalFormat) {
-       case GL_RGB:
-       case 3:
-       {
-               GLubyte *src = (GLubyte *)image->Data;
-
-               DEBUG_TEX(("GL_RGB:\n"));
-/*
-               if (level == 0)
-                       ;
-*/
-               /* The UGLY way, and SLOW : use DMA FIXME ! */
-
-               for (i = 0; i < words; i++) {
-               unsigned int data;
-               /* data = PACK_COLOR_565(src[0],src[1],src[2]); */
-               data = S3VIRGEPACKCOLOR555(src[0],src[1],src[2],255)
-                       |(S3VIRGEPACKCOLOR555(src[3],src[4],src[5],255)<<16);
-
-               *dest++ = data;
-               /* src += 3; */
-               src +=6;
-       }
-       }
-       break;
-
-       case GL_RGBA:
-       case 4:
-       {
-               GLubyte *src = (GLubyte *)image->Data;
-
-               DEBUG_TEX(("GL_RGBA:\n"));
-/*
-               if (level == 0)
-                       ;
-*/
-               for (i = 0; i < words; i++) {           
-               unsigned int data;
-               
-               /* data = PACK_COLOR_8888(src[0],src[1],src[2],src[3]); */
-               data = S3VIRGEPACKCOLOR4444(src[0], src[1],src[2], src[3])
-               | (S3VIRGEPACKCOLOR4444(src[4], src[5], src[6], src[7]) << 16);
-               
-               *dest++ = data;
-               /* src += 4; */
-               src += 8;
-               }
-       }
-       break;
-
-       case GL_LUMINANCE:
-       {
-               GLubyte *src = (GLubyte *)image->Data;
-
-               DEBUG_TEX(("GL_LUMINANCE:\n"));
-/*
-               if (level == 0)
-                       ;
-*/
-               for (i = 0; i < words; i++) {
-               unsigned int data;
-               
-               /* data = PACK_COLOR_888(src[0],src[0],src[0]); */
-               data = S3VIRGEPACKCOLOR4444(src[0],src[0],src[0],src[0])
-               | (S3VIRGEPACKCOLOR4444(src[1],src[1],src[1],src[1]) << 16);
-                
-               *dest++ = data;
-               /* src ++; */
-               src +=2;
-               }
-       }
-       break;
-
-       case GL_INTENSITY:
-       {
-               GLubyte *src = (GLubyte *)image->Data;
-
-               DEBUG_TEX(("GL_INTENSITY:\n"));
-/*     
-               if (level == 0)
-                       ;
-*/
-               for (i = 0; i < words; i++) {
-               unsigned int data;
-               
-               /* data = PACK_COLOR_8888(src[0],src[0],src[0],src[0]); */
-               data = S3VIRGEPACKCOLOR4444(src[0],src[0],src[0],src[0])
-               | (S3VIRGEPACKCOLOR4444(src[1],src[1],src[1],src[1]) << 16);
-
-               *dest++ = data; 
-               /* src ++; */
-               src += 2;
-               }
-       }
-       break;
-
-       case GL_LUMINANCE_ALPHA:
-       {
-               GLubyte *src = (GLubyte *)image->Data;
-
-               DEBUG_TEX(("GL_LUMINANCE_ALPHA:\n"));
-/*
-               if (level == 0)
-                       ;
-*/
-               for (i = 0; i < words; i++) {
-               unsigned int data;
-               
-               /* data = PACK_COLOR_8888(src[0],src[0],src[0],src[1]); */
-               data = S3VIRGEPACKCOLOR4444(src[0],src[0],src[0],src[1])
-               | (S3VIRGEPACKCOLOR4444(src[2],src[2],src[2],src[3]) << 16);
-               
-               *dest++ = data;
-               /* src += 2; */
-               src += 4;
-               }
-       }
-       break;
-
-       case GL_ALPHA:
-       {
-               GLubyte *src = (GLubyte *)image->Data;
-
-               DEBUG_TEX(("GL_ALPHA:\n"));
-/*
-               if (level == 0)
-                       ;
-*/
-               for (i = 0; i < words; i++) {
-               unsigned int data;
-               
-               /* data = PACK_COLOR_8888(255,255,255,src[0]); */
-               data = S3VIRGEPACKCOLOR4444(255,255,255,src[0])
-               | (S3VIRGEPACKCOLOR4444(255,255,255,src[1]) << 16);
-               
-               *dest++ = data;
-               /* src += 1; */
-               src += 2;
-               }
-       }
-       break;
-
-       /* TODO: Translate color indices *now*:
-        */
-       case GL_COLOR_INDEX:
-       {
-       
-               GLubyte *dst = (GLubyte *)(t->BufAddr + t->image[level].offset);
-               GLubyte *src = (GLubyte *)image->Data;
-
-               DEBUG_TEX(("GL_COLOR_INDEX:\n"));
-
-               for (j = 0 ; j < image->Height ; j++, dst += t->Pitch) {
-                       for (i = 0 ; i < image->Width ; i++) {
-                               dst[i] = src[0];
-                               src += 1;
-                       }
-               }
-       }
-       break;
-
-       default:
-               fprintf(stderr, "Not supported texture format %s\n",
-                       _mesa_lookup_enum_by_nr(image->_BaseFormat));
-       }
-
-       DEBUG_TEX(("words = %i\n\n", words));
-}
-
-void s3vPrintLocalLRU( s3vContextPtr vmesa )
-{
-   s3vTextureObjectPtr t;
-   int sz = 1 << (vmesa->s3vScreen->logTextureGranularity);
-
-#if TEX_DEBUG_ON
-   static unsigned int times=0;
-   DEBUG_TEX(("*** s3vPrintLocalLRU: #%i ***\n", ++times));
-#endif
-
-   foreach( t, &vmesa->TexObjList ) {
-      if (!t->globj)
-         fprintf(stderr, "Placeholder %d at %x sz %x\n",
-                   t->MemBlock->ofs / sz,
-                   t->MemBlock->ofs,
-                   t->MemBlock->size);
-      else
-         fprintf(stderr, "Texture at %x sz %x\n",
-                   t->MemBlock->ofs,
-                   t->MemBlock->size);
-
-   }
-}
-
-void s3vPrintGlobalLRU( s3vContextPtr vmesa )
-{
-   int i, j;
-   S3VTexRegionPtr list = vmesa->sarea->texList;
-#if TEX_DEBUG_ON
-   static unsigned int times=0;
-   DEBUG_TEX(("*** s3vPrintGlobalLRU: #%i ***\n", ++times));
-#endif
-
-   for (i = 0, j = S3V_NR_TEX_REGIONS ; i < S3V_NR_TEX_REGIONS ; i++) {
-      fprintf(stderr, "list[%d] age %d next %d prev %d\n",
-             j, list[j].age, list[j].next, list[j].prev);
-      j = list[j].next;
-      if (j == S3V_NR_TEX_REGIONS) break;
-   }
-
-   if (j != S3V_NR_TEX_REGIONS)
-      fprintf(stderr, "Loop detected in global LRU\n");
-}
-
-
-void s3vResetGlobalLRU( s3vContextPtr vmesa )
-{
-   S3VTexRegionPtr list = vmesa->sarea->texList;
-   int sz = 1 << vmesa->s3vScreen->logTextureGranularity;
-   int i;
-
-#if TEX_DEBUG_ON
-   static unsigned int times=0;
-   DEBUG_TEX(("*** s3vResetGlobalLRU: #%i ***\n", ++times));
-#endif
-
-   /* (Re)initialize the global circular LRU list.  The last element
-    * in the array (S3V_NR_TEX_REGIONS) is the sentinal.  Keeping it
-    * at the end of the array allows it to be addressed rationally
-    * when looking up objects at a particular location in texture
-    * memory.
-    */
-   for (i = 0 ; (i+1) * sz <= vmesa->s3vScreen->textureSize ; i++) {
-      list[i].prev = i-1;
-      list[i].next = i+1;
-      list[i].age = 0;
-   }
-
-   i--;
-   list[0].prev = S3V_NR_TEX_REGIONS;
-   list[i].prev = i-1;
-   list[i].next = S3V_NR_TEX_REGIONS;
-   list[S3V_NR_TEX_REGIONS].prev = i;
-   list[S3V_NR_TEX_REGIONS].next = 0;
-   vmesa->sarea->texAge = 0;
-}
-
-
-void s3vUpdateTexLRU( s3vContextPtr vmesa, s3vTextureObjectPtr t )
-{
-/*
-   int i;
-   int logsz = vmesa->s3vScreen->logTextureGranularity;
-   int start = t->MemBlock->ofs >> logsz;
-   int end = (t->MemBlock->ofs + t->MemBlock->size - 1) >> logsz;
-   S3VTexRegionPtr list = vmesa->sarea->texList;
-*/
-
-#if TEX_DEBUG_ON
-   static unsigned int times=0;
-   DEBUG_TEX(("*** s3vUpdateTexLRU: #%i ***\n", ++times));
-#endif
-
-   vmesa->texAge = ++vmesa->sarea->texAge;
-
-   /* Update our local LRU
-    */
-   move_to_head( &(vmesa->TexObjList), t );
-
-   /* Update the global LRU
-    */
-#if 0
-   for (i = start ; i <= end ; i++) {
-
-      list[i].in_use = 1;
-      list[i].age = vmesa->texAge;
-
-      /* remove_from_list(i)
-       */
-      list[(unsigned)list[i].next].prev = list[i].prev;
-      list[(unsigned)list[i].prev].next = list[i].next;
-
-      /* insert_at_head(list, i)
-       */
-      list[i].prev = S3V_NR_TEX_REGIONS;
-      list[i].next = list[S3V_NR_TEX_REGIONS].next;
-      list[(unsigned)list[S3V_NR_TEX_REGIONS].next].prev = i;
-      list[S3V_NR_TEX_REGIONS].next = i;
-   }
-#endif
-}
-
-
-/* Called for every shared texture region which has increased in age
- * since we last held the lock.
- *
- * Figures out which of our textures have been ejected by other clients,
- * and pushes a placeholder texture onto the LRU list to represent
- * the other client's textures.
- */
-void s3vTexturesGone( s3vContextPtr vmesa,
-                      GLuint offset,
-                      GLuint size,
-                      GLuint in_use )
-{
-   s3vTextureObjectPtr t, tmp;
-#if TEX_DEBUG_ON
-   static unsigned int times=0;
-   DEBUG_TEX(("*** s3vTexturesGone: #%i ***\n", ++times));
-#endif
-
-   foreach_s ( t, tmp, &vmesa->TexObjList ) {
-
-      if (t->MemBlock->ofs >= offset + size ||
-         t->MemBlock->ofs + t->MemBlock->size <= offset)
-         continue;
-
-      /* It overlaps - kick it off.  Need to hold onto the currently bound
-       * objects, however.
-       */
-         s3vSwapOutTexObj( vmesa, t );
-   }
-
-   if (in_use) {
-                  t = (s3vTextureObjectPtr) calloc(1,sizeof(*t));
-                  if (!t) return;
-
-                  t->MemBlock = mmAllocMem( vmesa->texHeap, size, 0, offset);
-                  insert_at_head( &vmesa->TexObjList, t );
-   }
-
-   /* Reload any lost textures referenced by current vertex buffer.
-       */
-#if 0
-   if (vmesa->vertex_buffer) {
-                  int i, j;
-
-                  fprintf(stderr, "\n\nreload tex\n");
-
-                  for (i = 0 ; i < vmesa->statenr ; i++) {
-                                  for (j = 0 ; j < 2 ; j++) {
-                                                  s3vTextureObjectPtr t = vmesa->state_tex[j][i];
-                                                  if (t) {
-                                                                  if (t->MemBlock == 0)
-                                                                                  s3vUploadTexImages( vmesa, t );
-                                                  }
-                                  }
-                  }
-
-                  /* Hard to do this with the lock held:
-                       */
-                  /*        S3V_FIREVERTICES( vmesa ); */
-   }
-#endif
-}
-
-
-/* This is called with the lock held.  May have to eject our own and/or
- * other client's texture objects to make room for the upload.
- */
-void s3vUploadTexImages( s3vContextPtr vmesa, s3vTextureObjectPtr t )
-{
-       int i;
-       int ofs;
-       int numLevels;
-#if TEX_DEBUG_ON
-       static unsigned int times=0;
-       static unsigned int try=0;
-
-       DEBUG_TEX(("*** s3vUploadTexImages: #%i ***\n", ++times));
-       DEBUG_TEX(("vmesa->texHeap = 0x%x; t->totalSize = %i\n",
-               (unsigned int)vmesa->texHeap, t->totalSize));
-#endif
-
-       /* Do we need to eject LRU texture objects?
-        */
-       if (!t->MemBlock) {
-
-               while (1)
-               {
-                       /* int try = 0; */
-                       DEBUG_TEX(("trying to alloc mem for tex (try %i)\n", ++try));
-
-                       t->MemBlock = mmAllocMem( vmesa->texHeap, t->totalSize, 12, 0 );
-
-                       if (t->MemBlock)
-                               break;
-
-                       if (vmesa->TexObjList.prev == vmesa->CurrentTexObj[0]) {
-/*                         || vmesa->TexObjList.prev == vmesa->CurrentTexObj[1]) {
-                               fprintf(stderr, "Hit bound texture in upload\n");
-                               s3vPrintLocalLRU( vmesa ); */
-                               return;
-                       }
-
-                       if (vmesa->TexObjList.prev == &(vmesa->TexObjList)) {
-/*                             fprintf(stderr, "Failed to upload texture, sz %d\n",
-                                       t->totalSize);
-                               mmDumpMemInfo( vmesa->texHeap ); */
-                               return;
-                       }
-
-                       DEBUG_TEX(("swapping out: %p\n", vmesa->TexObjList.prev));
-                       s3vSwapOutTexObj( vmesa, vmesa->TexObjList.prev );
-               }
-
-       ofs = t->MemBlock->ofs;
-
-       t->BufAddr = vmesa->s3vScreen->texOffset + ofs;
-
-       DEBUG_TEX(("ofs = 0x%x\n", ofs));
-       DEBUG_TEX(("t->BufAddr = 0x%x\n", t->BufAddr));
-
-/* FIXME: check if we need it */
-#if 0
-       if (t == vmesa->CurrentTexObj[0]) {
-               vmesa->dirty |= S3V_UPLOAD_TEX0; 
-               vmesa->restore_primitive = -1; 
-       }
-#endif
-
-#if 0
-       if (t == vmesa->CurrentTexObj[1])
-               vmesa->dirty |= S3V_UPLOAD_TEX1;
-#endif
-
-       s3vUpdateTexLRU( vmesa, t );
-       }
-
-#if 0
-       if (vmesa->dirtyAge >= GET_DISPATCH_AGE(vmesa))
-               s3vWaitAgeLocked( vmesa, vmesa->dirtyAge );
-#endif
-
-#if _TEXLOCK
-       S3V_SIMPLE_FLUSH_LOCK(vmesa);
-#endif
-       numLevels = t->lastLevel - t->firstLevel + 1;
-       for (i = 0 ; i < numLevels ; i++)
-               if (t->dirty_images & (1<<i))
-                       s3vUploadTexLevel( vmesa, t, i );
-
-       t->dirty_images = 0;
-#if _TEXLOCK
-       S3V_SIMPLE_UNLOCK(vmesa);
-#endif
-}
diff --git a/src/mesa/drivers/dri/s3v/s3v_texstate.c b/src/mesa/drivers/dri/s3v/s3v_texstate.c
deleted file mode 100644 (file)
index 455bae6..0000000
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
- * Author: Max Lingua <sunmax@libero.it>
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#include "main/glheader.h"
-#include "main/macros.h"
-#include "main/mtypes.h"
-#include "main/simple_list.h"
-#include "main/enums.h"
-
-#include "main/mm.h"
-#include "s3v_context.h"
-#include "s3v_tex.h"
-
-
-static void s3vSetTexImages( s3vContextPtr vmesa, 
-                             struct gl_texture_object *tObj )
-{
-   GLuint height, width, pitch, i, /*textureFormat,*/ log_pitch;
-   s3vTextureObjectPtr t = (s3vTextureObjectPtr) tObj->DriverData;
-   const struct gl_texture_image *baseImage = tObj->Image[0][tObj->BaseLevel];
-   GLint firstLevel, lastLevel, numLevels;
-   GLint log2Width, log2Height;
-#if TEX_DEBUG_ON
-   static unsigned int times=0;
-   DEBUG_TEX(("*** s3vSetTexImages: #%i ***\n", ++times));
-#endif
-
-   t->texelBytes = 2; /* FIXME: always 2 ? */
-
-   /* Compute which mipmap levels we really want to send to the hardware.
-    * This depends on the base image size, GL_TEXTURE_MIN_LOD,
-    * GL_TEXTURE_MAX_LOD, GL_TEXTURE_BASE_LEVEL, and GL_TEXTURE_MAX_LEVEL.
-    * Yes, this looks overly complicated, but it's all needed.
-    */
-   if (tObj->MinFilter == GL_LINEAR || tObj->MinFilter == GL_NEAREST) {
-      firstLevel = lastLevel = tObj->BaseLevel;
-   }
-   else {
-      firstLevel = tObj->BaseLevel + (GLint) (tObj->MinLod + 0.5);
-      firstLevel = MAX2(firstLevel, tObj->BaseLevel);
-      lastLevel = tObj->BaseLevel + (GLint) (tObj->MaxLod + 0.5);
-         lastLevel = MAX2(lastLevel, tObj->BaseLevel);
-      lastLevel = MIN2(lastLevel, tObj->BaseLevel + baseImage->MaxLog2);
-      lastLevel = MIN2(lastLevel, tObj->MaxLevel);
-      lastLevel = MAX2(firstLevel, lastLevel); /* need at least one level */
-   }
-
-   /* save these values */
-   t->firstLevel = firstLevel;
-   t->lastLevel = lastLevel;
-
-   numLevels = lastLevel - firstLevel + 1;
-
-   log2Width = tObj->Image[0][firstLevel]->WidthLog2;
-   log2Height = tObj->Image[0][firstLevel]->HeightLog2;
-
-
-   /* Figure out the amount of memory required to hold all the mipmap
-    * levels.  Choose the smallest pitch to accomodate the largest
-    * mipmap:
-    */
-   width = tObj->Image[0][firstLevel]->Width * t->texelBytes;
-   for (pitch = 32, log_pitch=2 ; pitch < width ; pitch *= 2 )
-      log_pitch++;
-   
-   /* All images must be loaded at this pitch.  Count the number of
-    * lines required:
-    */
-   for ( height = i = 0 ; i < numLevels ; i++ ) {
-      t->image[i].image = tObj->Image[0][firstLevel + i];
-      t->image[i].offset = height * pitch;
-      t->image[i].internalFormat = baseImage->_BaseFormat;
-      height += t->image[i].image->Height;
-      t->TextureBaseAddr[i] = (t->BufAddr + t->image[i].offset +
-         _TEXALIGN) & (GLuint)(~_TEXALIGN);
-   }
-
-   t->Pitch = pitch;
-   t->WidthLog2 = log2Width;
-   t->totalSize = height*pitch;
-   t->max_level = i-1;
-   vmesa->dirty |= S3V_UPLOAD_TEX0 /* | S3V_UPLOAD_TEX1*/;   
-   vmesa->restore_primitive = -1;
-   DEBUG(("<><>pitch = TexStride = %i\n", pitch));
-   DEBUG(("log2Width = %i\n", log2Width));
-
-   s3vUploadTexImages( vmesa, t );
-}
-
-static void s3vUpdateTexEnv( GLcontext *ctx, GLuint unit )
-{
-   s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-   const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit];
-   const struct gl_texture_object *tObj = texUnit->_Current;
-   const GLuint format = tObj->Image[0][tObj->BaseLevel]->_BaseFormat;
-/*
-   s3vTextureObjectPtr t = (s3vTextureObjectPtr)tObj->DriverData;
-   GLuint tc;
-*/
-   GLuint alpha = 0;
-   GLuint cmd = vmesa->CMD;
-#if TEX_DEBUG_ON
-   static unsigned int times=0;
-   DEBUG_TEX(("*** s3vUpdateTexEnv: %i ***\n", ++times));
-#endif
-
-   cmd &= ~TEX_COL_MASK;
-   cmd &= ~TEX_BLEND_MAKS;
-/*   cmd &= ~ALPHA_BLEND_MASK; */
-
-   DEBUG(("format = "));
-
-   switch (format) {
-   case GL_RGB:
-      DEBUG_TEX(("GL_RGB\n"));
-      cmd |= TEX_COL_ARGB1555;
-      break;
-   case GL_LUMINANCE:
-      DEBUG_TEX(("GL_LUMINANCE\n"));
-      cmd |= TEX_COL_ARGB4444;
-      alpha = 1; /* FIXME: check */
-      break;
-   case GL_ALPHA:
-      DEBUG_TEX(("GL_ALPHA\n"));
-      cmd |= TEX_COL_ARGB4444;
-      alpha = 1;
-      break;
-   case GL_LUMINANCE_ALPHA:
-      DEBUG_TEX(("GL_LUMINANCE_ALPHA\n"));
-      cmd |= TEX_COL_ARGB4444;
-      alpha = 1;
-      break;
-   case GL_INTENSITY:
-      DEBUG_TEX(("GL_INTENSITY\n"));
-      cmd |= TEX_COL_ARGB4444;
-      alpha = 1;
-      break;
-   case GL_RGBA:
-      DEBUG_TEX(("GL_RGBA\n"));
-      cmd |= TEX_COL_ARGB4444;
-      alpha = 1;
-      break;
-   case GL_COLOR_INDEX:
-      DEBUG_TEX(("GL_COLOR_INDEX\n"));
-      cmd |= TEX_COL_PAL;
-      break;
-   }
-
-   DEBUG_TEX(("EnvMode = "));
-
-   switch (texUnit->EnvMode) {
-   case GL_REPLACE:
-      DEBUG_TEX(("GL_REPLACE\n"));
-      cmd |= TEX_REFLECT; /* FIXME */
-      vmesa->_tri[1] = DO_TEX_UNLIT_TRI; /* FIXME: white tri hack */
-      vmesa->_alpha_tex = ALPHA_TEX /* * alpha */;
-      break;
-   case GL_MODULATE:
-      DEBUG_TEX(("GL_MODULATE\n"));
-      cmd |= TEX_MODULATE;
-      vmesa->_tri[1] = DO_TEX_LIT_TRI;
-#if 0
-       if (alpha)
-               vmesa->_alpha_tex = ALPHA_TEX /* * alpha */;
-       else
-               vmesa->_alpha_tex = ALPHA_SRC /* * alpha */;
-#else
-       vmesa->_alpha_tex = ALPHA_TEX ;
-#endif
-      break;
-   case GL_ADD:
-      DEBUG_TEX(("DEBUG_TEX\n"));
-      /* do nothing ???*/
-      break;
-   case GL_DECAL:
-      DEBUG_TEX(("GL_DECAL\n"));
-      cmd |= TEX_DECAL;
-      vmesa->_tri[1] = DO_TEX_LIT_TRI;
-      vmesa->_alpha_tex = ALPHA_OFF;
-      break;
-   case GL_BLEND:
-      DEBUG_TEX(("GL_BLEND\n"));
-      cmd |= TEX_DECAL;
-      vmesa->_tri[1] = DO_TEX_LIT_TRI;
-      vmesa->_alpha_tex = ALPHA_OFF; /* FIXME: sure? */
-      break;
-   default:
-      fprintf(stderr, "unknown tex env mode");
-      return;
-   }
-  
-   DEBUG_TEX(("\n\n    vmesa->CMD was 0x%x\n", vmesa->CMD));   
-   DEBUG_TEX((   "    vmesa->CMD is 0x%x\n\n", cmd ));
-
-   vmesa->_alpha[1] = vmesa->_alpha_tex;
-   vmesa->CMD = cmd; /* | MIPMAP_LEVEL(8); */
-   vmesa->restore_primitive = -1; 
-}
-
-static void s3vUpdateTexUnit( GLcontext *ctx, GLuint unit )
-{
-   s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-   struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit];
-   GLuint cmd = vmesa->CMD;
-#if TEX_DEBUG_ON
-   static unsigned int times=0;
-   DEBUG_TEX(("*** s3vUpdateTexUnit: %i ***\n", ++times));
-   DEBUG_TEX(("and vmesa->CMD was 0x%x\n", vmesa->CMD));
-#endif
-
-   if (texUnit->_ReallyEnabled == TEXTURE_2D_BIT) 
-   {
-      struct gl_texture_object *tObj = texUnit->_Current;
-      s3vTextureObjectPtr t = (s3vTextureObjectPtr)tObj->DriverData;
-
-      /* Upload teximages (not pipelined)
-       */
-      if (t->dirty_images) {
-#if _TEXFLUSH
-         DMAFLUSH();
-#endif
-         s3vSetTexImages( vmesa, tObj ); 
-         if (!t->MemBlock) {
-#if _TEXFALLBACK
-            FALLBACK( vmesa, S3V_FALLBACK_TEXTURE, GL_TRUE );
-#endif
-            return;
-         }
-      }
-
-      /* Update state if this is a different texture object to last
-       * time.
-       */
-#if 1
-      if (vmesa->CurrentTexObj[unit] != t) {
-         vmesa->dirty |= S3V_UPLOAD_TEX0 /* << unit */;
-         vmesa->CurrentTexObj[unit] = t;
-         s3vUpdateTexLRU( vmesa, t ); /* done too often */
-      }
-#endif
-      
-      /* Update texture environment if texture object image format or 
-       * texture environment state has changed.
-       */
-      if (tObj->Image[0][tObj->BaseLevel]->_BaseFormat !=
-          vmesa->TexEnvImageFmt[unit]) {
-         vmesa->TexEnvImageFmt[unit] = tObj->Image[0][tObj->BaseLevel]->_BaseFormat;
-         s3vUpdateTexEnv( ctx, unit );
-      }
-#if 1
-      cmd = vmesa->CMD & ~MIP_MASK;
-      vmesa->dirty |= S3V_UPLOAD_TEX0 /* << unit */;
-      vmesa->CurrentTexObj[unit] = t;
-      vmesa->TexOffset = t->TextureBaseAddr[tObj->BaseLevel];
-      vmesa->TexStride = t->Pitch;
-      cmd |= MIPMAP_LEVEL(t->WidthLog2);
-       
-      DEBUG_TEX(("\n\n>>  vmesa->CMD was 0x%x\n", vmesa->CMD));
-      DEBUG_TEX((    ">>  vmesa->CMD is 0x%x\n\n", cmd ));
-      DEBUG_TEX(("t->WidthLog2 = %i\n", t->WidthLog2));
-      DEBUG_TEX(("MIPMAP_LEVEL(t->WidthLog2) = 0x%x\n", MIPMAP_LEVEL(t->WidthLog2)));
-
-      vmesa->CMD = cmd;
-      vmesa->restore_primitive = -1;
-#endif
-   }
-   else if (texUnit->_ReallyEnabled) { /* _ReallyEnabled but != TEXTURE0_2D */
-#if _TEXFALLBACK
-      FALLBACK( vmesa, S3V_FALLBACK_TEXTURE, GL_TRUE );
-#endif
-   }
-   else /*if (vmesa->CurrentTexObj[unit])*/ { /* !_ReallyEnabled */
-      vmesa->CurrentTexObj[unit] = 0;
-      vmesa->TexEnvImageFmt[unit] = 0; 
-      vmesa->dirty &= ~(S3V_UPLOAD_TEX0<<unit); 
-   }
-}
-
-
-void s3vUpdateTextureState( GLcontext *ctx )
-{
-   s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-   (void) vmesa;
-#if TEX_DEBUG_ON
-   static unsigned int times=0;
-   DEBUG_TEX(("*** s3vUpdateTextureState: #%i ***\n", ++times));
-#endif
-
-#if _TEXFALLBACK   
-   FALLBACK( vmesa, S3V_FALLBACK_TEXTURE, GL_FALSE );
-#endif
-   s3vUpdateTexUnit( ctx, 0 );
-#if 0
-   s3vUpdateTexUnit( ctx, 1 );
-#endif
-}
diff --git a/src/mesa/drivers/dri/s3v/s3v_tris.c b/src/mesa/drivers/dri/s3v/s3v_tris.c
deleted file mode 100644 (file)
index fafd384..0000000
+++ /dev/null
@@ -1,850 +0,0 @@
-/*
- * Author: Max Lingua <sunmax@libero.it>
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <sys/ioctl.h>
-
-#include "s3v_context.h"
-#include "s3v_vb.h"
-#include "s3v_tris.h"
-
-#include "main/glheader.h"
-#include "main/mtypes.h"
-#include "main/macros.h"
-#include "main/colormac.h"
-
-#include "swrast/swrast.h"
-#include "swrast_setup/swrast_setup.h"
-#include "tnl/tnl.h"
-#include "tnl/t_context.h"
-#include "tnl/t_pipeline.h"
-
-
-/***********************************************************************
- *                   Build hardware rasterization functions            *
- ***********************************************************************/
-
-#define DO_TRI                 1
-#define HAVE_RGBA              1
-#define HAVE_SPEC              0
-#define HAVE_BACK_COLORS       0
-#define HAVE_HW_FLATSHADE      1
-#define VERTEX                 s3vVertex
-#define TAB                    rast_tab
-
-#define VERT_SET_RGBA( v, c ) \
-do { \
-       UNCLAMPED_FLOAT_TO_RGBA_CHAN( v->ub4[4], c); \
-/*     *(v->ub4[4]) = c; \ */ \
-} while (0)
-#define VERT_COPY_RGBA( v0, v1 ) v0->ui[4] = v1->ui[4]
-/*
-#define VERT_COPY_RGBA1( v0, v1 ) v0->ui[4] = v1->ui[4]
-*/
-#define VERT_SAVE_RGBA( idx )    color[idx] = v[idx]->ui[4]
-#define VERT_RESTORE_RGBA( idx ) v[idx]->ui[4] = color[idx]
-
-#define S3V_OFFSET_BIT         0x01
-#define S3V_TWOSIDE_BIT        0x02
-#define S3V_UNFILLED_BIT        0x04
-#define S3V_FALLBACK_BIT        0x08
-#define S3V_MAX_TRIFUNC        0x10
-
-
-static struct {
-       tnl_points_func         points;
-       tnl_line_func           line;
-       tnl_triangle_func       triangle;
-       tnl_quad_func           quad;
-} rast_tab[S3V_MAX_TRIFUNC];
-
-#define S3V_RAST_CULL_BIT      0x01
-#define S3V_RAST_FLAT_BIT      0x02
-#define S3V_RAST_TEX_BIT       0x04
-
-static s3v_point_func s3v_point_tab[0x8];
-static s3v_line_func s3v_line_tab[0x8];
-static s3v_tri_func s3v_tri_tab[0x8];
-static s3v_quad_func s3v_quad_tab[0x8];
-
-#define IND (0)
-#define TAG(x) x
-#include "s3v_tritmp.h"
-
-#define IND (S3V_RAST_CULL_BIT)
-#define TAG(x) x##_cull
-#include "s3v_tritmp.h"
-
-#define IND (S3V_RAST_FLAT_BIT)
-#define TAG(x) x##_flat
-#include "s3v_tritmp.h"
-
-#define IND (S3V_RAST_CULL_BIT|S3V_RAST_FLAT_BIT)
-#define TAG(x) x##_cull_flat
-#include "s3v_tritmp.h"
-
-#define IND (S3V_RAST_TEX_BIT)
-#define TAG(x) x##_tex
-#include "s3v_tritmp.h"
-
-#define IND (S3V_RAST_CULL_BIT|S3V_RAST_TEX_BIT)
-#define TAG(x) x##_cull_tex
-#include "s3v_tritmp.h"
-
-#define IND (S3V_RAST_FLAT_BIT|S3V_RAST_TEX_BIT)
-#define TAG(x) x##_flat_tex
-#include "s3v_tritmp.h"
-
-#define IND (S3V_RAST_CULL_BIT|S3V_RAST_FLAT_BIT|S3V_RAST_TEX_BIT)
-#define TAG(x) x##_cull_flat_tex
-#include "s3v_tritmp.h"
-
-static void init_rast_tab( void )
-{
-       DEBUG(("*** init_rast_tab ***\n"));
-
-       s3v_init();
-       s3v_init_cull();
-       s3v_init_flat();
-       s3v_init_cull_flat();
-       s3v_init_tex();
-       s3v_init_cull_tex();
-       s3v_init_flat_tex();
-       s3v_init_cull_flat_tex();
-}
-
-/***********************************************************************
- *                    Rasterization fallback helpers                   *
- ***********************************************************************/
-
-
-/* This code is hit only when a mix of accelerated and unaccelerated
- * primitives are being drawn, and only for the unaccelerated
- * primitives.  
- */
-
-#if 0
-static void 
-s3v_fallback_quad( s3vContextPtr vmesa, 
-                   const s3vVertex *v0, 
-                   const s3vVertex *v1, 
-                   const s3vVertex *v2, 
-                   const s3vVertex *v3 )
-{
-   GLcontext *ctx = vmesa->glCtx;
-   SWvertex v[4];
-   s3v_translate_vertex( ctx, v0, &v[0] );
-   s3v_translate_vertex( ctx, v1, &v[1] );
-   s3v_translate_vertex( ctx, v2, &v[2] );
-   s3v_translate_vertex( ctx, v3, &v[3] );
-   DEBUG(("s3v_fallback_quad\n"));
-/*   _swrast_Quad( ctx, &v[0], &v[1], &v[2], &v[3] ); */
-}
-
-static void 
-s3v_fallback_tri( s3vContextPtr vmesa, 
-                   const s3vVertex *v0, 
-                   const s3vVertex *v1, 
-                   const s3vVertex *v2 )
-{
-   GLcontext *ctx = vmesa->glCtx;
-   SWvertex v[3];
-   s3v_translate_vertex( ctx, v0, &v[0] );
-   s3v_translate_vertex( ctx, v1, &v[1] );
-   s3v_translate_vertex( ctx, v2, &v[2] );
-   DEBUG(("s3v_fallback_tri\n"));
-/*   _swrast_Triangle( ctx, &v[0], &v[1], &v[2] ); */
-}
-
-static void
-s3v_fallback_line( s3vContextPtr vmesa,
-                    const s3vVertex *v0,
-                    const s3vVertex *v1 )
-{
-   GLcontext *ctx = vmesa->glCtx;
-   SWvertex v[2];
-   s3v_translate_vertex( ctx, v0, &v[0] );
-   s3v_translate_vertex( ctx, v1, &v[1] );
-   DEBUG(("s3v_fallback_line\n"));
-   _swrast_Line( ctx, &v[0], &v[1] );
-}
-
-/*
-static void 
-s3v_fallback_point( s3vContextPtr vmesa, 
-                     const s3vVertex *v0 )
-{
-   GLcontext *ctx = vmesa->glCtx;
-   SWvertex v[1];
-   s3v_translate_vertex( ctx, v0, &v[0] );
-   _swrast_Point( ctx, &v[0] );
-}
-*/
-#endif
-
-/***********************************************************************
- *                    Choose rasterization functions                   *
- ***********************************************************************/
-
-#define _S3V_NEW_RASTER_STATE  (_NEW_FOG | \
-                                _NEW_TEXTURE | \
-                                _DD_NEW_TRI_SMOOTH | \
-                                _DD_NEW_LINE_SMOOTH | \
-                                _DD_NEW_POINT_SMOOTH | \
-                                _DD_NEW_TRI_STIPPLE | \
-                                _DD_NEW_LINE_STIPPLE)
-
-#define LINE_FALLBACK (0)
-#define TRI_FALLBACK (0)
-
-static void s3v_nodraw_triangle(GLcontext *ctx, s3vVertex *v0,
-                                s3vVertex *v1, s3vVertex *v2)
-{
-       (void) (ctx && v0 && v1 && v2);
-}
-
-static void s3v_nodraw_quad(GLcontext *ctx,
-                            s3vVertex *v0, s3vVertex *v1,
-                            s3vVertex *v2, s3vVertex *v3)
-{
-       (void) (ctx && v0 && v1 && v2 && v3);
-}
-
-void s3vChooseRasterState(GLcontext *ctx);
-
-void s3vChooseRasterState(GLcontext *ctx)
-{
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-       GLuint flags = ctx->_TriangleCaps;
-       GLuint ind = 0;
-
-       DEBUG(("*** s3vChooseRasterState ***\n"));
-
-       if (ctx->Polygon.CullFlag) {
-               if (ctx->Polygon.CullFaceMode == GL_FRONT_AND_BACK) {
-                       vmesa->draw_tri = (s3v_tri_func)s3v_nodraw_triangle;
-                       vmesa->draw_quad = (s3v_quad_func)s3v_nodraw_quad;
-                       return;
-               }
-               ind |= S3V_RAST_CULL_BIT;
-               /* s3v_update_cullsign(ctx); */
-       } /* else vmesa->backface_sign = 0; */
-
-       if ( flags & DD_FLATSHADE )
-               ind |= S3V_RAST_FLAT_BIT;
-
-       if ( ctx->Texture.Unit[0]._ReallyEnabled ) {
-               ind |= S3V_RAST_TEX_BIT;
-       }
-
-       DEBUG(("ind = %i\n", ind));
-
-       vmesa->draw_line = s3v_line_tab[ind];
-       vmesa->draw_tri = s3v_tri_tab[ind];
-       vmesa->draw_quad = s3v_quad_tab[ind];
-       vmesa->draw_point = s3v_point_tab[ind];
-
-#if 0
-       /* Hook in fallbacks for specific primitives.  CURRENTLY DISABLED
-        */
-       
-       if (flags & LINE_FALLBACK) 
-               vmesa->draw_line = s3v_fallback_line;
-        
-       if (flags & TRI_FALLBACK) {
-               DEBUG(("TRI_FALLBACK\n"));
-               vmesa->draw_tri = s3v_fallback_tri;
-               vmesa->draw_quad = s3v_fallback_quad;
-       }
-#endif
-}
-
-
-
-
-/***********************************************************************
- *          Macros for t_dd_tritmp.h to draw basic primitives          *
- ***********************************************************************/
-
-#define TRI( v0, v1, v2 ) \
-do { \
-       /*
-       if (DO_FALLBACK) \
-               vmesa->draw_tri( vmesa, v0, v1, v2 ); \
-       else */ \
-       DEBUG(("TRI: max was here\n")); /* \
-       s3v_draw_tex_triangle( vmesa, v0, v1, v2 ); */ \
-       vmesa->draw_tri( vmesa, v0, v1, v2 ); \
-} while (0)
-
-#define QUAD( v0, v1, v2, v3 ) \
-do { \
-       DEBUG(("QUAD: max was here\n")); \
-       vmesa->draw_quad( vmesa, v0, v1, v2, v3 ); \
-} while (0)
-
-#define LINE( v0, v1 ) \
-do { \
-       DEBUG(("LINE: max was here\n")); \
-       vmesa->draw_line( vmesa, v0, v1 ); \
-} while (0)
-
-#define POINT( v0 ) \
-do { \
-       vmesa->draw_point( vmesa, v0 ); \
-} while (0)
-
-
-/***********************************************************************
- *              Build render functions from dd templates               *
- ***********************************************************************/
-
-/*
-#define S3V_OFFSET_BIT         0x01
-#define S3V_TWOSIDE_BIT        0x02
-#define S3V_UNFILLED_BIT       0x04
-#define S3V_FALLBACK_BIT       0x08
-#define S3V_MAX_TRIFUNC        0x10
-
-
-static struct {
-   points_func         points;
-   line_func           line;
-   triangle_func       triangle;
-   quad_func           quad;
-} rast_tab[S3V_MAX_TRIFUNC];
-*/
-
-#define DO_FALLBACK  (IND & S3V_FALLBACK_BIT)
-#define DO_OFFSET    (IND & S3V_OFFSET_BIT)
-#define DO_UNFILLED  (IND & S3V_UNFILLED_BIT)
-#define DO_TWOSIDE   (IND & S3V_TWOSIDE_BIT)
-#define DO_FLAT      0
-#define DO_TRI       1
-#define DO_QUAD      1
-#define DO_LINE      1
-#define DO_POINTS    1
-#define DO_FULL_QUAD 1
-
-#define HAVE_RGBA         1
-#define HAVE_SPEC         0
-#define HAVE_BACK_COLORS  0
-#define HAVE_HW_FLATSHADE 1
-#define VERTEX            s3vVertex
-#define TAB               rast_tab
-
-#define DEPTH_SCALE 1.0
-#define UNFILLED_TRI unfilled_tri
-#define UNFILLED_QUAD unfilled_quad
-#define VERT_X(_v) _v->v.x
-#define VERT_Y(_v) _v->v.y
-#define VERT_Z(_v) _v->v.z
-#define AREA_IS_CCW( a ) (a > 0)
-#define GET_VERTEX(e) (vmesa->verts + (e<<vmesa->vertex_stride_shift))
-
-#if 0
-#define VERT_SET_RGBA( v, c ) \
-do { \
-/*    UNCLAMPED_FLOAT_TO_RGBA_CHAN( v->ub4[4], c) */ \
-} while (0)
-
-#define VERT_COPY_RGBA( v0, v1 ) v0->ui[4] = v1->ui[4]
-/*
-#define VERT_COPY_RGBA1( v0, v1 ) v0->ui[4] = v1->ui[4]
-*/
-#define VERT_SAVE_RGBA( idx )    color[idx] = v[idx]->ui[4]
-#define VERT_RESTORE_RGBA( idx ) v[idx]->ui[4] = color[idx]   
-#endif
-
-#define LOCAL_VARS(n) \
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx); \
-       GLuint color[n]; \
-       (void) color;
-
-
-/***********************************************************************
- *                Helpers for rendering unfilled primitives            *
- ***********************************************************************/
-
-static const GLuint hw_prim[GL_POLYGON+1] = {
-       PrimType_Points,
-       PrimType_Lines,
-       PrimType_Lines,
-       PrimType_Lines,
-       PrimType_Triangles,
-       PrimType_Triangles,
-       PrimType_Triangles,
-       PrimType_Triangles,
-       PrimType_Triangles,
-       PrimType_Triangles
-};
-
-static void s3vResetLineStipple( GLcontext *ctx );
-static void s3vRasterPrimitive( GLcontext *ctx, GLuint hwprim );
-static void s3vRenderPrimitive( GLcontext *ctx, GLenum prim );
-/*
-extern static void s3v_lines_emit(GLcontext *ctx, GLuint start, GLuint end);
-extern static void s3v_tris_emit(GLcontext *ctx, GLuint start, GLuint end);
-*/
-#define RASTERIZE(x) if (vmesa->hw_primitive != hw_prim[x]) \
-                        s3vRasterPrimitive( ctx, hw_prim[x] )
-#define RENDER_PRIMITIVE vmesa->render_primitive
-#define TAG(x) x
-#define IND S3V_FALLBACK_BIT
-#include "tnl_dd/t_dd_unfilled.h"
-#undef IND
-
-/***********************************************************************
- *                      Generate GL render functions                   *
- ***********************************************************************/
-
-#define IND (0)
-#define TAG(x) x
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (S3V_OFFSET_BIT)
-#define TAG(x) x##_offset
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (S3V_TWOSIDE_BIT)
-#define TAG(x) x##_twoside
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (S3V_TWOSIDE_BIT|S3V_OFFSET_BIT)
-#define TAG(x) x##_twoside_offset
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (S3V_UNFILLED_BIT)
-#define TAG(x) x##_unfilled
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (S3V_OFFSET_BIT|S3V_UNFILLED_BIT)
-#define TAG(x) x##_offset_unfilled
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (S3V_TWOSIDE_BIT|S3V_UNFILLED_BIT)
-#define TAG(x) x##_twoside_unfilled
-#include "tnl_dd/t_dd_tritmp.h"
-
-#define IND (S3V_TWOSIDE_BIT|S3V_OFFSET_BIT|S3V_UNFILLED_BIT)
-#define TAG(x) x##_twoside_offset_unfilled
-#include "tnl_dd/t_dd_tritmp.h"
-
-
-static void init_render_tab( void )
-{
-       DEBUG(("*** init_render_tab ***\n"));
-
-       init();
-       init_offset();
-       init_twoside();
-       init_twoside_offset();
-       init_unfilled();
-       init_offset_unfilled();
-       init_twoside_unfilled();
-       init_twoside_offset_unfilled();
-}
-
-
-/**********************************************************************/
-/*               Render unclipped begin/end objects                   */
-/**********************************************************************/
-
-#define VERT(x) (s3vVertex *)(s3vverts + (x << shift))
-
-#define RENDER_POINTS( start, count ) \
-       DEBUG(("RENDER_POINTS...(ok)\n")); \
-       for ( ; start < count ; start++) \
-               vmesa->draw_line( vmesa, VERT(start), VERT(start) )
-       /*      vmesa->draw_point( vmesa, VERT(start) ) */
-
-#define RENDER_LINE( v0, v1 ) \
-       /* DEBUG(("RENDER_LINE...(ok)\n")); \ */ \
-       vmesa->draw_line( vmesa, VERT(v0), VERT(v1) ); \
-       DEBUG(("RENDER_LINE...(ok)\n"))
-
-#define RENDER_TRI( v0, v1, v2 )  \
-       DEBUG(("RENDER_TRI...(ok)\n")); \
-       vmesa->draw_tri( vmesa, VERT(v0), VERT(v1), VERT(v2) )
-
-#define RENDER_QUAD( v0, v1, v2, v3 ) \
-       DEBUG(("RENDER_QUAD...(ok)\n")); \
-       /* s3v_draw_quad( vmesa, VERT(v0), VERT(v1), VERT(v2),VERT(v3) ) */\
-       /* s3v_draw_triangle( vmesa, VERT(v0), VERT(v1), VERT(v2) ); \
-       s3v_draw_triangle( vmesa, VERT(v0), VERT(v2), VERT(v3) ) */ \
-       vmesa->draw_quad( vmesa, VERT(v0), VERT(v1), VERT(v2), VERT(v3) ) 
-       
-#define INIT(x) s3vRenderPrimitive( ctx, x );
-#undef LOCAL_VARS
-#define LOCAL_VARS                                             \
-   s3vContextPtr vmesa = S3V_CONTEXT(ctx);             \
-   const GLuint shift = vmesa->vertex_stride_shift;            \
-   const char *s3vverts = (char *)vmesa->verts;                \
-   const GLboolean stipple = ctx->Line.StippleFlag;            \
-   (void) stipple;
-#define RESET_STIPPLE  if ( stipple ) s3vResetLineStipple( ctx );
-#define RESET_OCCLUSION
-#define PRESERVE_VB_DEFS
-#define ELT(x) (x)
-#define TAG(x) s3v_##x##_verts
-#include "tnl_dd/t_dd_rendertmp.h"
-
-
-/**********************************************************************/
-/*                   Render clipped primitives                        */
-/**********************************************************************/
-
-static void s3vRenderClippedPoly( GLcontext *ctx, const GLuint *elts, 
-                                  GLuint n )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-       struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
-       TNLcontext *tnl = TNL_CONTEXT(ctx);
-       GLuint prim = vmesa->render_primitive;
-
-       DEBUG(("I AM in: s3vRenderClippedPoly\n"));
-
-       /* Render the new vertices as an unclipped polygon. 
-        */
-       if (1)
-       {
-       GLuint *tmp = VB->Elts;
-       VB->Elts = (GLuint *)elts;
-       tnl->Driver.Render.PrimTabElts[GL_POLYGON]
-               ( ctx, 0, n, PRIM_BEGIN|PRIM_END );
-
-       VB->Elts = tmp;
-       }
-
-       /* Restore the render primitive
-        */
-#if 1
-       if (prim != GL_POLYGON) {
-               DEBUG(("and prim != GL_POLYGON\n"));
-               tnl->Driver.Render.PrimitiveNotify( ctx, prim );
-       }
-       
-#endif
-}
-
-static void s3vRenderClippedLine( GLcontext *ctx, GLuint ii, GLuint jj )
-{
-   TNLcontext *tnl = TNL_CONTEXT(ctx);
-   /*tnl->Driver.LineFunc = s3v_line_tab[2];*/ /* _swsetup_Line; */
-
-   DEBUG(("I AM in: s3vRenderClippedLine\n"));
-   tnl->Driver.Render.Line( ctx, ii, jj );
-}
-
-
-/**********************************************************************/
-/*                    Choose render functions                         */
-/**********************************************************************/
-
-
-
-#define _S3V_NEW_RENDERSTATE (_DD_NEW_TRI_UNFILLED |           \
-                              _DD_NEW_TRI_LIGHT_TWOSIDE |      \
-                              _DD_NEW_TRI_OFFSET)
-
-#define ANY_RASTER_FLAGS (DD_TRI_LIGHT_TWOSIDE|DD_TRI_OFFSET|DD_TRI_UNFILLED)
-
-static void s3vChooseRenderState(GLcontext *ctx)
-{
-   s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-   TNLcontext *tnl = TNL_CONTEXT(ctx);
-   GLuint flags = ctx->_TriangleCaps;
-   GLuint index = 0;
-
-   DEBUG(("s3vChooseRenderState\n"));
-
-   if (flags & ANY_RASTER_FLAGS) {
-      if (flags & DD_TRI_LIGHT_TWOSIDE)       index |= S3V_TWOSIDE_BIT;
-      if (flags & DD_TRI_OFFSET)             index |= S3V_OFFSET_BIT;
-      if (flags & DD_TRI_UNFILLED)           index |= S3V_UNFILLED_BIT;
-   }
-
-   DEBUG(("vmesa->RenderIndex = %i\n", vmesa->RenderIndex));
-   DEBUG(("index = %i\n", index));
-
-   if (vmesa->RenderIndex != index) {
-      vmesa->RenderIndex = index;
-
-      tnl->Driver.Render.Points = rast_tab[index].points;
-      tnl->Driver.Render.Line = rast_tab[index].line;
-      tnl->Driver.Render.Triangle = rast_tab[index].triangle;
-      tnl->Driver.Render.Quad = rast_tab[index].quad;
-
-      if (vmesa->RenderIndex == 0)
-         tnl->Driver.Render.PrimTabVerts = s3v_render_tab_verts;
-      else
-         tnl->Driver.Render.PrimTabVerts = _tnl_render_tab_verts;
-      tnl->Driver.Render.PrimTabElts = _tnl_render_tab_elts;
-      tnl->Driver.Render.ClippedLine = s3vRenderClippedLine;
-      tnl->Driver.Render.ClippedPolygon = s3vRenderClippedPoly;
-   }
-}
-
-
-/**********************************************************************/
-/*                 High level hooks for t_vb_render.c                 */
-/**********************************************************************/
-
-
-
-/* Determine the rasterized primitive when not drawing unfilled 
- * polygons.
- *
- * Used only for the default render stage which always decomposes
- * primitives to trianges/lines/points.  For the accelerated stage,
- * which renders strips as strips, the equivalent calculations are
- * performed in s3v_render.c.
- */
-
-static void s3vRasterPrimitive( GLcontext *ctx, GLuint hwprim )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-/*     __DRIdrawablePrivate *dPriv = vmesa->driDrawable; */
-       GLuint cmd = vmesa->CMD;
-       
-       unsigned int _hw_prim = hwprim;
-
-       DEBUG(("s3vRasterPrimitive: hwprim = 0x%x ", _hw_prim));
-
-/*     printf("* vmesa->CMD = 0x%x\n", vmesa->CMD); */
-
-       if (vmesa->hw_primitive != _hw_prim)
-       {
-               DEBUG(("(new one) ***\n"));
-               cmd &= ~DO_MASK;
-               cmd &= ~ALPHA_BLEND_MASK;
-               vmesa->hw_primitive = _hw_prim;
-
-               if (_hw_prim == PrimType_Triangles) {
-               /* TRI */
-                       DEBUG(("->switching to tri\n"));
-                       cmd |= (vmesa->_tri[vmesa->_3d_mode] | vmesa->_alpha[vmesa->_3d_mode]);
-               } else if (_hw_prim == PrimType_Lines
-                       || _hw_prim == PrimType_Points) {
-               /* LINE */
-                       DEBUG(("->switching to line\n"));
-                       cmd |= (DO_3D_LINE | vmesa->_alpha[0]);
-               } else  {
-               /* ugh? */
-                       DEBUG(("->switching to your sis'ass\n"));
-               }
-        
-               DEBUG(("\n"));
-
-               vmesa->restore_primitive = _hw_prim;
-               /* 0xacc16827: good value -> lightened newave!!! */
-               vmesa->CMD = cmd;
-               CMDCHANGE();
-       }
-}
-
-static void s3vRenderPrimitive( GLcontext *ctx, GLenum prim )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-       __DRIdrawablePrivate *dPriv = vmesa->driDrawable;
-       GLuint cmd = vmesa->CMD;
-
-       unsigned int _hw_prim = hw_prim[prim];
-
-       vmesa->render_primitive = prim;
-       vmesa->hw_primitive = _hw_prim;
-   
-       DEBUG(("s3vRenderPrimitive #%i ", prim));
-       DEBUG(("_hw_prim = 0x%x\n", _hw_prim));
-
-/*     printf(" vmesa->CMD = 0x%x\n", vmesa->CMD); */
-
-       if (_hw_prim != vmesa->restore_primitive) {
-               DEBUG(("_hw_prim != vmesa->restore_primitive (was 0x%x)\n",
-                       vmesa->restore_primitive));
-#if 1
-               cmd &= ~DO_MASK;
-               cmd &= ~ALPHA_BLEND_MASK;
-/*             
-               printf(" cmd = 0x%x\n", cmd);
-               printf(" vmesa->_3d_mode=%i; vmesa->_tri[vmesa->_3d_mode]=0x%x\n",
-                       vmesa->_3d_mode, vmesa->_tri[vmesa->_3d_mode]);
-               printf("vmesa->alpha[0] = 0x%x; vmesa->alpha[1] = 0x%x\n",
-                       vmesa->_alpha[0], vmesa->_alpha[1]);
-*/             
-               if (_hw_prim == PrimType_Triangles) { /* TRI */
-                       DEBUG(("->switching to tri\n"));
-                       cmd |= (vmesa->_tri[vmesa->_3d_mode] | vmesa->_alpha[vmesa->_3d_mode]);
-                       DEBUG(("vmesa->TexStride = %i\n", vmesa->TexStride));
-                       DEBUG(("vmesa->TexOffset = %i\n", vmesa->TexOffset));
-                       DMAOUT_CHECK(3DTRI_Z_BASE, 12);
-               } else { /* LINE */
-                       DEBUG(("->switching to line\n"));
-                       cmd |= (DO_3D_LINE | vmesa->_alpha[0]);
-                       DMAOUT_CHECK(3DLINE_Z_BASE, 12);
-               }
-
-               DMAOUT(vmesa->s3vScreen->depthOffset & 0x003FFFF8);
-               DMAOUT(vmesa->DestBase);
-               /* DMAOUT(vmesa->ScissorLR); */
-               /* DMAOUT(vmesa->ScissorTB); */
-
-               /* NOTE: we need to restore all these values since we
-                * are coming back from a vmesa->restore_primitive */
-               DMAOUT( (0 << 16) | (dPriv->w-1) );
-               DMAOUT( (0 << 16) | (dPriv->h-1) );
-               DMAOUT( (vmesa->SrcStride << 16) | vmesa->TexStride );
-               DMAOUT(vmesa->SrcStride);
-               DMAOUT(vmesa->TexOffset);
-               DMAOUT(vmesa->TextureBorderColor);
-               DMAOUT(0); /* FOG */
-               DMAOUT(0);
-               DMAOUT(0);
-               DMAOUT(cmd);
-               /* 0xacc16827: good value -> lightened newave!!! */
-        DMAFINISH();
-
-       vmesa->CMD = cmd;
-#endif
-       }
-
-       DEBUG(("\n"));
-
-       vmesa->restore_primitive = _hw_prim;
-}
-
-static void s3vRunPipeline( GLcontext *ctx )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-
-       DEBUG(("*** s3vRunPipeline ***\n"));
-
-       if ( vmesa->new_state )
-               s3vDDUpdateHWState( ctx );
-
-       if (vmesa->new_gl_state) {
-
-               if (vmesa->new_gl_state & _NEW_TEXTURE) {
-                       s3vUpdateTextureState( ctx );
-               }
-
-               if (!vmesa->Fallback) {
-                       if (vmesa->new_gl_state & _S3V_NEW_VERTEX)
-                               s3vChooseVertexState( ctx );
-      
-                       if (vmesa->new_gl_state & _S3V_NEW_RASTER_STATE)
-                               s3vChooseRasterState( ctx );
-      
-                       if (vmesa->new_gl_state & _S3V_NEW_RENDERSTATE)
-                               s3vChooseRenderState( ctx );
-               }
-
-       vmesa->new_gl_state = 0;
-       
-       }
-
-       _tnl_run_pipeline( ctx );
-}
-
-static void s3vRenderStart( GLcontext *ctx )
-{
-       /* Check for projective texturing.  Make sure all texcoord
-        * pointers point to something.  (fix in mesa?)  
-        */
-
-       DEBUG(("s3vRenderStart\n"));
-       /* s3vCheckTexSizes( ctx ); */
-}
-
-static void s3vRenderFinish( GLcontext *ctx )
-{
-   if (0)
-      _swrast_flush( ctx );    /* never needed */
-}
-
-static void s3vResetLineStipple( GLcontext *ctx )
-{
-/*   s3vContextPtr vmesa = S3V_CONTEXT(ctx); */
-
-   /* Reset the hardware stipple counter.
-    */
-/*
-   CHECK_DMA_BUFFER(vmesa, 1);
-   WRITE(vmesa->buf, UpdateLineStippleCounters, 0);
-*/
-}
-
-
-/**********************************************************************/
-/*           Transition to/from hardware rasterization.               */
-/**********************************************************************/
-
-
-void s3vFallback( s3vContextPtr vmesa, GLuint bit, GLboolean mode )
-{
-   GLcontext *ctx = vmesa->glCtx;
-   TNLcontext *tnl = TNL_CONTEXT(ctx);
-   GLuint oldfallback = vmesa->Fallback;
-
-   DEBUG(("*** s3vFallback: "));
-
-   if (mode) {
-      vmesa->Fallback |= bit;
-      if (oldfallback == 0) {
-                DEBUG(("oldfallback == 0 ***\n"));
-                _swsetup_Wakeup( ctx );
-                _tnl_need_projected_coords( ctx, GL_TRUE );
-                vmesa->RenderIndex = ~0;
-      }
-   }
-   else {
-      DEBUG(("***\n"));
-      vmesa->Fallback &= ~bit;
-      if (oldfallback == bit) {
-               _swrast_flush( ctx );
-               tnl->Driver.Render.Start = s3vRenderStart;
-               tnl->Driver.Render.PrimitiveNotify = s3vRenderPrimitive;
-               tnl->Driver.Render.Finish = s3vRenderFinish;
-               tnl->Driver.Render.BuildVertices = s3vBuildVertices;
-               tnl->Driver.Render.ResetLineStipple = s3vResetLineStipple;
-               vmesa->new_gl_state |= (_S3V_NEW_RENDERSTATE|
-                                       _S3V_NEW_RASTER_STATE|
-                                       _S3V_NEW_VERTEX);
-      }
-   }
-}
-
-
-/**********************************************************************/
-/*                            Initialization.                         */
-/**********************************************************************/
-
-
-void s3vInitTriFuncs( GLcontext *ctx )
-{
-   s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-   TNLcontext *tnl = TNL_CONTEXT(ctx);
-   static int firsttime = 1;
-
-   if (firsttime) {
-      init_rast_tab();
-      init_render_tab();
-      firsttime = 0;
-   }
-   
-   vmesa->RenderIndex = ~0;
-
-   tnl->Driver.RunPipeline = s3vRunPipeline;
-   tnl->Driver.Render.Start = s3vRenderStart;
-   tnl->Driver.Render.Finish = s3vRenderFinish; 
-   tnl->Driver.Render.PrimitiveNotify = s3vRenderPrimitive;
-   tnl->Driver.Render.ResetLineStipple = s3vResetLineStipple;
-/*
-   tnl->Driver.RenderInterp = _swsetup_RenderInterp;
-   tnl->Driver.RenderCopyPV = _swsetup_RenderCopyPV;
-*/
-   tnl->Driver.Render.BuildVertices = s3vBuildVertices;
-}
diff --git a/src/mesa/drivers/dri/s3v/s3v_tris.h b/src/mesa/drivers/dri/s3v/s3v_tris.h
deleted file mode 100644 (file)
index 0010a7f..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-/*
- * Author: Max Lingua <sunmax@libero.it>
- */
-
-#ifndef _S3V_TRIS_H
-#define _S3V_TRIS_H
-
-extern void s3vDDTrifuncInit(void);
-extern void s3vDDChooseTriRenderState(GLcontext *);
-
-#endif /* !(_S3V_TRIS_H) */
diff --git a/src/mesa/drivers/dri/s3v/s3v_tritmp.h b/src/mesa/drivers/dri/s3v/s3v_tritmp.h
deleted file mode 100644 (file)
index 2321bd4..0000000
+++ /dev/null
@@ -1,958 +0,0 @@
-/*
- * Author: Max Lingua <sunmax@libero.it>
- */
-
-/**** MACROS start ****/
-
-/* point/line macros */
-
-#define LINE_VERT_VARS \
-        SWvertex v[3]; \
-       s3vVertex* vvv[2]; \
-        int x[3], y[3], z[3]; \
-        int idx[3]; \
-        int dx01, dy01; \
-        int delt02; \
-        int deltzy, zstart; \
-        int start02, end01; \
-        int ystart, y01y12; \
-        int i, tmp, tmp2, tmp3; \
-        GLfloat ydiff, fy[3]
-#define LINE_VERT_VARS_VOIDS \
-        (void) v; (void) vvv; (void) x; (void) y; (void) z; (void) idx; \
-        (void) dx01; (void) dy01; (void) delt02; (void) deltzy; \
-        (void) zstart; (void) start02; (void) ystart; (void) y01y12; \
-        (void) i; (void) tmp; (void) tmp2; (void) tmp3; (void) ydiff; (void) fy
-
-#define LINE_FLAT_VARS \
-        int arstart, gbstart; \
-        int deltarx, deltgbx, deltary, deltgby; \
-        GLubyte *(col)[3]
-#define LINE_FLAT_VARS_VOIDS \
-        (void) arstart; (void) gbstart; (void) deltarx; (void) deltgbx; \
-        (void) deltary; (void) deltgby; (void) col
-
-#define LINE_GOURAUD_VARS \
-        int arstart, gbstart; \
-        int deltary, deltgby; \
-        int ctmp, ctmp2, ctmp3, ctmp4; \
-        GLubyte *(col)[3]
-#define LINE_GOURAUD_VARS_VOIDS \
-        (void) arstart; (void) gbstart; (void) deltary; (void) deltgby; \
-        (void) ctmp; (void) ctmp2; (void) ctmp3; (void) ctmp4; (void) col
-
-#define SORT_LINE_VERT() \
-do { \
-       if(v[0].attrib[FRAG_ATTRIB_WPOS][1] <= v[1].attrib[FRAG_ATTRIB_WPOS][1]) { \
-\
-                idx[0] = 0; \
-                idx[1] = 1; \
-\
-        } else if (v[0].attrib[FRAG_ATTRIB_WPOS][1] > v[1].attrib[FRAG_ATTRIB_WPOS][1]) { \
-\
-                idx[0] = 1; \
-                idx[1] = 0; \
-\
-        } \
-} while(0)
-
-#define SET_LINE_VERT() \
-do { \
-        x[0] = (v[idx[0]].attrib[FRAG_ATTRIB_WPOS][0] * 1024.0f * 1024.0f); /* 0x100000 */ \
-        y[0] = fy[0] = dPriv->h - v[idx[0]].attrib[FRAG_ATTRIB_WPOS][1]; \
-        z[0] = (v[idx[0]].attrib[FRAG_ATTRIB_WPOS][2]) * 1024.0f * 32.0f; /* 0x8000; */ \
-\
-        x[1] = (v[idx[1]].attrib[FRAG_ATTRIB_WPOS][0] * 1024.0f * 1024.0f); /* 0x100000 */ \
-        y[1] = dPriv->h - v[idx[1]].attrib[FRAG_ATTRIB_WPOS][1]; \
-        z[1] = (v[idx[1]].attrib[FRAG_ATTRIB_WPOS][2]) * 1024.0f * 32.0f; /* 0x8000 */ \
-} while(0)
-
-#define SET_LINE_XY() \
-do { \
-       tmp = v[idx[0]].attrib[FRAG_ATTRIB_WPOS][0]; \
-        tmp2 = v[idx[1]].attrib[FRAG_ATTRIB_WPOS][0]; \
-\
-       dx01 = x[0] - x[1]; \
-        dy01 = y[0] - y[1]; \
-\
-        ydiff = fy[0] - (float)y[0]; \
-        ystart = y[0]; \
-        y01y12 = dy01 + 1; \
-} while (0)
-
-#define SET_LINE_DIR() \
-do { \
-        if (tmp2 > tmp) { \
-                y01y12 |= 0x80000000; \
-                tmp3 = tmp2-tmp; \
-        } else { \
-                tmp3 = tmp-tmp2; \
-        } \
-\
-        end01 = ((tmp << 16) | tmp2); \
-\
-       if (dy01) \
-                delt02 = -(dx01/dy01); \
-        else \
-               delt02 = 0; \
-\
-        if (dy01 > tmp3) { /* Y MAJ */ \
-       /* NOTE: tmp3 always >=0 */ \
-                start02 = x[0]; \
-        } else if (delt02 >= 0){ /* X MAJ - positive delta */ \
-                start02 = x[0] + delt02/2; \
-                dy01 = tmp3; /* could be 0 */ \
-        } else { /* X MAJ - negative delta */ \
-                start02 = x[0] + delt02/2 + ((1 << 20) - 1); \
-                dy01 = tmp3; /* could be 0 */ \
-        } \
-} while(0)
-
-#define SET_LINE_Z() \
-do { \
-       zstart = z[0]; \
-\
-       if (dy01) { \
-                deltzy = (z[1] - z[0])/dy01; \
-        } else { \
-                deltzy = 0; /* dy01 = tmp3 = 0 (it's a point)*/ \
-        } \
-} while (0)
-
-#define SET_LINE_FLAT_COL() \
-do { \
-        col[0] = &(v[idx[0]].color[0]); \
-        deltarx = deltary = deltgbx = deltgby = 0; \
-        gbstart = (((col[0][1]) << 23) | ((col[0][2]) << 7)); \
-        arstart = (((col[0][3]) << 23) | ((col[0][0]) << 7)); \
-} while(0)
-
-#define SET_LINE_GOURAUD_COL() \
-do { \
-        col[0] = &(v[idx[0]].color[0]); \
-        col[1] = &(v[idx[1]].color[0]); \
-\
-        vvv[0] = _v0; \
-        vvv[1] = _v1; \
-\
-        for (i=0; i<2; i++) { \
-       /* FIXME: swapped ! */ \
-                col[i][0] = vvv[!idx[i]]->v.color.red; \
-                col[i][1] = vvv[!idx[i]]->v.color.green; \
-                col[i][2] = vvv[!idx[i]]->v.color.blue; \
-                col[i][3] = vvv[!idx[i]]->v.color.alpha; \
-        } \
-\
-       if (dy01) { \
-\
-        ctmp = ((col[0][1] - col[1][1]) << 7) / dy01; \
-        ctmp2 = ((col[0][2] - col[1][2]) << 7) / dy01; \
-        deltgby = ((ctmp << 16) & 0xFFFF0000) | (ctmp2 & 0xFFFF); \
-\
-        ctmp3 = ((col[0][3] - col[1][3]) << 7) / dy01; \
-        ctmp4 = ((col[0][0] - col[1][0]) << 7) / dy01; \
-        deltary = ((ctmp3 << 16) & 0xFFFF0000) | (ctmp4 & 0xFFFF); \
-        } else { \
-        ctmp = ((col[1][1] - col[0][1]) << 7); \
-        ctmp2 = ((col[1][2] - col[0][2]) << 7); \
-        deltgby = ((ctmp << 16) & 0xFFFF0000) | (ctmp2 & 0xFFFF); \
-\
-        ctmp3 = ((col[1][3] - col[0][3]) << 7); \
-        ctmp4 = ((col[1][0] - col[0][0]) << 7); \
-        deltary = ((ctmp3 << 16) & 0xFFFF0000) | (ctmp4 & 0xFFFF); \
-        deltgby = deltary = 0; \
-        } \
-\
-       idx[0] = 1; /* FIXME: swapped */ \
-\
-        gbstart = \
-       (((int)((ydiff * ctmp) + (col[idx[0]][1] << 7)) << 16) & 0x7FFF0000) \
-       | ((int)((ydiff * ctmp2) + (col[idx[0]][2] << 7)) & 0x7FFF); \
-        arstart = \
-       (((int)((ydiff * ctmp3) + (col[idx[0]][3] << 7)) << 16) & 0x7FFF0000) \
-       | ((int)((ydiff * ctmp4) + (col[idx[0]][0] << 7)) & 0x7FFF); \
-} while(0)
-
-#define SEND_LINE_COL() \
-do { \
-       DMAOUT(deltgby); \
-       DMAOUT(deltary); \
-       DMAOUT(gbstart); \
-       DMAOUT(arstart); \
-} while (0)
-
-#define SEND_LINE_VERT() \
-do { \
-       DMAOUT(deltzy); \
-       DMAOUT(zstart); \
-       DMAOUT(0); \
-       DMAOUT(0); \
-       DMAOUT(0); \
-       DMAOUT(end01); \
-       DMAOUT(delt02); \
-       DMAOUT(start02); \
-       DMAOUT(ystart); \
-       DMAOUT(y01y12); \
-} while (0)
-
-
-/* tri macros (mostly stolen from utah-glx...) */
-
-#define VERT_VARS \
-        SWvertex v[3]; \
-        int x[3], y[3], z[3]; \
-        int idx[3]; \
-        int dx01, dy01; \
-        int dx02, dy02; \
-        int dx12, dy12; \
-        int delt01, delt02, delt12; \
-        int deltzx, deltzy, zstart; \
-        int start02, end01, end12; \
-        int ystart, y01y12; \
-        int i, tmp, lr; \
-        GLfloat ydiff, fy[3]
-#define VERT_VARS_VOIDS \
-        (void) v; (void) x; (void) y; (void) z; (void) idx; (void) dx01; \
-        (void) dy01; (void) dx02; (void) dy02; (void) dx12; (void) dy12; \
-        (void) delt01; (void) delt02; (void) delt12; (void) deltzx; \
-        (void) deltzy; (void) zstart; (void) start02; (void) end01; \
-        (void) end12; (void) ystart; (void) y01y12; (void) i; (void) tmp; \
-        (void) lr; (void) ydiff; (void) fy
-
-#define GOURAUD_VARS \
-        int arstart, gbstart; \
-        int deltarx, deltgbx, deltary, deltgby; \
-        int ctmp, ctmp2, ctmp3, ctmp4; \
-        GLubyte *(col)[3]
-#define GOURAUD_VARS_VOIDS \
-        (void) arstart; (void) gbstart; (void) deltarx; (void) deltgbx; \
-        (void) deltary; (void) deltgby; (void) ctmp; (void) ctmp2; \
-        (void) ctmp3; (void) ctmp4; (void) col
-
-#define FLAT_VARS \
-        int arstart, gbstart; \
-        int deltarx, deltgbx, deltary, deltgby; \
-        GLubyte *(col)[3]
-#define FLAT_VARS_VOIDS \
-        (void) arstart; (void) gbstart; (void) deltarx; (void) deltgbx; \
-        (void) deltary; (void) deltgby; (void) col
-
-#define TEX_VARS \
-        int u0, u1, u2; \
-        GLfloat ru0, ru1, ru2; \
-        int v0, v1, v2; \
-        GLfloat rv0, rv1, rv2; \
-        GLfloat w0, w1, w2; \
-        GLfloat rw0, rw1, rw2; \
-        int baseu, basev; \
-        int d0, d1, d2; \
-        int deltdx, deltvx, deltux, deltdy, deltvy, deltuy; \
-        int deltwx, deltwy; \
-        int rbaseu, rbasev; \
-        int dstart, ustart, wstart, vstart; \
-        static int stmp = 0; \
-        s3vTextureObjectPtr t
-#define TEX_VARS_VOIDS \
-        (void) u0; (void) u1; (void) u2; (void) ru0; (void) ru1; (void) ru2; \
-        (void) v0; (void) v1; (void) v2; (void) rv0; (void) rv1; (void) rv2; \
-        (void) w0; (void) w1; (void) w2; (void) rw0; (void) rw1; (void) rw2; \
-        (void) baseu; (void) basev; (void) d0; (void) d1; (void) d2; \
-        (void) deltdx; (void) deltvx; (void) deltux; (void) deltdy; \
-        (void) deltuy; (void) deltwx; (void) deltwy; (void) rbaseu; \
-        (void) rbasev; (void) dstart; (void) ustart; (void) wstart; \
-        (void) vstart; (void) stmp; (void) t
-
-#define SORT_VERT() \
-do { \
-       for (i=0; i<3; i++) \
-               fy[i] = v[i].attrib[FRAG_ATTRIB_WPOS][1]; \
-\
-               if (fy[1] > fy[0]) {  /* (fy[1] > fy[0]) */ \
-\
-                       if (fy[2] > fy[0]) { \
-                               idx[0] = 0; \
-                               if (fy[1] > fy[2]) { \
-                                       idx[1] = 2; \
-                                       idx[2] = 1; \
-                               } else { \
-                                       idx[1] = 1; \
-                                       idx[2] = 2; \
-                               } \
-                       } else { \
-                               idx[0] = 2; \
-                               idx[1] = 0; \
-                               idx[2] = 1; \
-                       } \
-               } else { /* (fy[1] < y[0]) */ \
-                       if (fy[2] > fy[0]) { \
-                               idx[0] = 1; \
-                               idx[1] = 0; \
-                               idx[2] = 2; \
-               } else { \
-                       idx[2] = 0; \
-                       if (fy[2] > fy[1]) { \
-                               idx[0] = 1; \
-                               idx[1] = 2; \
-                       } else { \
-                               idx[0] = 2; \
-                               idx[1] = 1; \
-                       } \
-               } \
-       } \
-} while(0)
-
-#define SET_VERT() \
-do { \
-       for (i=0; i<3; i++) \
-       { \
-               x[i] = ((v[idx[i]].attrib[FRAG_ATTRIB_WPOS][0]) * /* 0x100000*/  1024.0 * 1024.0); \
-               y[i] = fy[i] = (dPriv->h - v[idx[i]].attrib[FRAG_ATTRIB_WPOS][1]); \
-               z[i] = ((v[idx[i]].attrib[FRAG_ATTRIB_WPOS][2]) * /* 0x8000 */ 1024.0 * 32.0); \
-       } \
-\
-       ydiff = fy[0] - (float)y[0]; \
-\
-       ystart = y[0]; \
-\
-       dx12 = x[2] - x[1]; \
-       dy12 = y[1] - y[2]; \
-       dx01 = x[1] - x[0]; \
-       dy01 = y[0] - y[1]; \
-       dx02 = x[2] - x[0]; \
-       dy02 = y[0] - y[2]; \
-\
-       delt01 = delt02 = delt12 = 0; \
-} while (0)
-
-
-#define SET_XY() \
-do { \
-       if (dy01) delt01 = dx01 / dy01; \
-       if (dy12) delt12 = dx12 / dy12; \
-       delt02 = dx02 / dy02; \
-\
-       start02 = x[0] + (ydiff * delt02); \
-       end01 = x[0] + (ydiff * delt01); \
-       end12 = x[1] + ((fy[1] - (GLfloat)y[1]) * delt12); \
-} while (0)
-
-#define SET_DIR() \
-do { \
-       tmp = x[1] - (dy01 * delt02 + x[0]); \
-       if (tmp > 0) { \
-               lr = 0x80000000; \
-       } else { \
-               tmp *= -1; \
-               lr = 0; \
-       } \
-       tmp >>= 20; \
-\
-        y01y12 = ((((y[0] - y[1]) & 0x7FF) << 16) \
-                 | ((y[1] - y[2]) & 0x7FF) | lr); \
-} while (0)
-
-#define SET_Z() \
-do { \
-       deltzy = (z[2] - z[0]) / dy02; \
-       if (tmp) { \
-               deltzx = (z[1] - (dy01 * deltzy + z[0])) / tmp; \
-       } else { \
-               deltzx = 0; \
-       } \
-       zstart = (deltzy * ydiff) + z[0]; \
-} while (0)
-
-#define SET_FLAT_COL() \
-do { \
-       col[0] = &(v[0].color[0]); \
-       deltarx = deltary = deltgbx = deltgby = 0; \
-       gbstart = (((col[0][1]) << 23) | ((col[0][2]) << 7)); \
-       arstart = (((col[0][3]) << 23) | ((col[0][0]) << 7)); \
-} while(0)
-
-#define SET_GOURAUD_COL() \
-do { \
-       col[0] = &(v[idx[0]].color[0]); \
-       col[1] = &(v[idx[1]].color[0]); \
-       col[2] = &(v[idx[2]].color[0]); \
-\
-       ctmp = ((col[2][3] - col[0][3]) << 7) / dy02; \
-       ctmp2 = ((col[2][0] - col[0][0]) << 7) / dy02; \
-       deltary = ((ctmp << 16) & 0xFFFF0000) | (ctmp2 & 0xFFFF); \
-       ctmp3 = ((col[2][1] - col[0][1]) << 7) / dy02; \
-       ctmp4 = ((col[2][2] - col[0][2]) << 7) / dy02; \
-       deltgby = ((ctmp3 << 16) & 0xFFFF0000) | (ctmp4 & 0xFFFF); \
-       gbstart = \
-       (((int)((ydiff * ctmp3) + (col[0][1] << 7)) << 16) & 0x7FFF0000) \
-       | ((int)((ydiff * ctmp4) + (col[0][2] << 7)) & 0x7FFF); \
-       arstart = \
-       (((int)((ydiff * ctmp) + (col[0][3] << 7)) << 16) & 0x7FFF0000) \
-       | ((int)((ydiff * ctmp2) + (col[0][0] << 7)) & 0x7FFF); \
-       if (tmp) { \
-       int ax, rx, gx, bx; \
-       ax = ((col[1][3] << 7) - (dy01 * ctmp + (col[0][3] << 7))) / tmp; \
-       rx = ((col[1][0] << 7) - (dy01 * ctmp2 + (col[0][0] << 7))) / tmp; \
-       gx = ((col[1][1] << 7) - (dy01 * ctmp3 + (col[0][1] << 7))) / tmp; \
-       bx = ((col[1][2] << 7) - (dy01 * ctmp4 + (col[0][2] << 7))) / tmp; \
-       deltarx = ((ax << 16) & 0xFFFF0000) | (rx & 0xFFFF); \
-       deltgbx = ((gx << 16) & 0xFFFF0000) | (bx & 0xFFFF); \
-       } else { \
-       deltgbx = deltarx = 0; \
-       } \
-} while (0)
-
-#define SET_TEX_VERT() \
-do { \
-        t = ((s3vTextureObjectPtr) \
-                ctx->Texture.Unit[0]._Current->DriverData); \
-        deltwx = deltwy = wstart = deltdx = deltdy = dstart = 0; \
-\
-        u0 = (v[idx[0]].attrib[FRAG_ATTRIB_TEX0][0] \
-                * (GLfloat)(t->image[0].image->Width) * 256.0); \
-        u1 = (v[idx[1]].attrib[FRAG_ATTRIB_TEX0][0] \
-                * (GLfloat)(t->globj->Image[0][0]->Width) * 256.0); \
-        u2 = (v[idx[2]].attrib[FRAG_ATTRIB_TEX0][0] \
-                * (GLfloat)(t->globj->Image[0][0]->Width) * 256.0); \
-        v0 = (v[idx[0]].attrib[FRAG_ATTRIB_TEX0][1] \
-                * (GLfloat)(t->globj->Image[0][0]->Height) * 256.0); \
-        v1 = (v[idx[1]].attrib[FRAG_ATTRIB_TEX0][1] \
-                * (GLfloat)(t->globj->Image[0][0]->Height) * 256.0); \
-        v2 = (v[idx[2]].attrib[FRAG_ATTRIB_TEX0][1] \
-                * (GLfloat)(t->globj->Image[0][0]->Height) * 256.0); \
-\
-        w0 = (v[idx[0]].attrib[FRAG_ATTRIB_WPOS][3]); \
-        w1 = (v[idx[1]].attrib[FRAG_ATTRIB_WPOS][3]); \
-        w2 = (v[idx[2]].attrib[FRAG_ATTRIB_WPOS][3]); \
-} while (0)
-
-#define SET_BASEUV() \
-do { \
-        if (u0 < u1) { \
-                if (u0 < u2) { \
-                        baseu = u0; \
-                } else { \
-                        baseu = u2; \
-                } \
-        } else { \
-                if (u1 < u2) { \
-                        baseu = u1; \
-                } else { \
-                        baseu = u2; \
-                } \
-        } \
-\
-        if (v0 < v1) { \
-                if (v0 < v2) { \
-                        basev = v0; \
-                } else { \
-                        basev = v2; \
-                } \
-        } else { \
-                if (v1 < v2) { \
-                        basev = v1; \
-                } else { \
-                        basev = v2; \
-                } \
-        } \
-} while (0)
-
-
-#define SET_RW() \
-do { \
-        /* GLfloat minW; \
-\
-        if (w0 < w1) { \
-                if (w0 < w2) { \
-                        minW = w0; \
-                } else { \
-                        minW = w2; \
-                } \
-        } else { \
-                if (w1 < w2) { \
-                        minW = w1; \
-                } else { \
-                        minW = w2; \
-                } \
-        } */ \
-\
-        rw0 = (512.0 * w0); \
-        rw1 = (512.0 * w1); \
-        rw2 = (512.0 * w2); \
-} while (0)
-
-#define SET_D() \
-do { \
-        GLfloat sxy, suv; \
-        int lev; \
-\
-        suv = (v[idx[0]].attrib[FRAG_ATTRIB_TEX0][0] - \
-                v[idx[2]].attrib[FRAG_ATTRIB_TEX0][0]) * \
-                (v[idx[1]].attrib[FRAG_ATTRIB_TEX0][1] - \
-                v[idx[2]].attrib[FRAG_ATTRIB_TEX0][1]) - \
-                (v[idx[1]].attrib[FRAG_ATTRIB_TEX0][0] - \
-                v[idx[2]].attrib[FRAG_ATTRIB_TEX0][0]) * \
-                (v[idx[0]].attrib[FRAG_ATTRIB_TEX0][1] - \
-                v[idx[2]].attrib[FRAG_ATTRIB_TEX0][2]); \
-\
-        sxy = (v[idx[0]].attrib[FRAG_ATTRIB_TEX0][0] - \
-                v[idx[2]].attrib[FRAG_ATTRIB_TEX0][0]) * \
-                (v[idx[1]].attrib[FRAG_ATTRIB_TEX0][1] - \
-                v[idx[2]].attrib[FRAG_ATTRIB_TEX0][1]) - \
-                (v[idx[1]].attrib[FRAG_ATTRIB_TEX0][0] - \
-                v[idx[2]].attrib[FRAG_ATTRIB_TEX0][0]) * \
-                (v[idx[0]].attrib[FRAG_ATTRIB_TEX0][1] - \
-                v[idx[2]].attrib[FRAG_ATTRIB_TEX0][2]); \
-\
-       if (sxy < 0) sxy *= -1.0; \
-       if (suv < 0) suv *= -1.0; \
-\
-       lev = *(int*)&suv - *(int *)&sxy; \
-       if (lev < 0) \
-               lev = 0; \
-       else \
-               lev >>=23; \
-       dstart = (lev << 27); \
-} while (0)
-
-#define SET_UVWD() \
-do { \
-        SET_BASEUV(); \
-        SET_RW(); \
-        SET_D(); \
-        ru0 = (((u0 - baseu) * rw0)); \
-        ru1 = (((u1 - baseu) * rw1)); \
-        ru2 = (((u2 - baseu) * rw2)); \
-        rv0 = (((v0 - basev) * rw0)); \
-        rv1 = (((v1 - basev) * rw1)); \
-        rv2 = (((v2 - basev) * rw2)); \
-\
-        while (baseu < 0) { baseu += (t->globj->Image[0][0]->Width << 8); } \
-        while (basev < 0) { basev += (t->globj->Image[0][0]->Height << 8); } \
-\
-        if (!(baseu & 0xFF)) \
-                { baseu = (baseu >> 8); } \
-        else \
-                { baseu = (baseu >> 8) + 1; } \
-\
-        if ((basev & 0x80) || !(basev & 0xFF)) \
-                { basev = (basev >> 8); } \
-        else \
-                { basev = (basev >> 8) - 1; } \
-\
-        rbaseu = (baseu) << (16 - t->globj->Image[0][0]->WidthLog2); \
-        rbasev = (basev) << (16 - t->globj->Image[0][0]->WidthLog2); \
-        deltuy = (((ru2 - ru0) / dy02)); \
-        deltvy = (((rv2 - rv0) / dy02)); \
-        rw0 *= (1024.0 * 512.0); \
-        rw1 *= (1024.0 * 512.0); \
-        rw2 *= (1024.0 * 512.0); \
-        deltwy = ((rw2 - rw0) / dy02); \
-        if (tmp) { \
-                deltux = ((ru1 - (dy01 * deltuy + ru0)) / tmp); \
-                deltvx = ((rv1 - (dy01 * deltvy + rv0)) / tmp); \
-                deltwx = ((rw1 - (dy01 * deltwy + rw0)) / tmp); \
-        } else { deltux = deltvx = deltwx = 0; } \
-                ustart = (deltuy * ydiff) + (ru0); \
-                vstart = (deltvy * ydiff) + (rv0); \
-                wstart = (deltwy * ydiff) + (rw0); \
-} while (0)
-
-#define SEND_UVWD() \
-do { \
-        DMAOUT((rbasev & 0xFFFF)); \
-        DMAOUT((0xa0000000 | (rbaseu & 0xFFFF))); \
-        DMAOUT(deltwx); \
-        DMAOUT(deltwy); \
-        DMAOUT(wstart); \
-        DMAOUT(deltdx); \
-        DMAOUT(deltvx); \
-        DMAOUT(deltux); \
-        DMAOUT(deltdy); \
-        DMAOUT(deltvy); \
-        DMAOUT(deltuy); \
-        DMAOUT(dstart); \
-        DMAOUT(vstart); \
-        DMAOUT(ustart); \
-} while (0)
-
-#define SEND_VERT() \
-do { \
-       DMAOUT(deltzx); \
-       DMAOUT(deltzy); \
-       DMAOUT(zstart); \
-       DMAOUT(delt12); \
-       DMAOUT(end12); \
-       DMAOUT(delt01); \
-       DMAOUT(end01); \
-       DMAOUT(delt02); \
-       DMAOUT(start02); \
-       DMAOUT(ystart); \
-       DMAOUT(y01y12); \
-} while (0)
-
-#define SEND_COL() \
-do { \
-       DMAOUT(deltgbx); \
-       DMAOUT(deltarx); \
-       DMAOUT(deltgby); \
-       DMAOUT(deltary); \
-       DMAOUT(gbstart); \
-       DMAOUT(arstart); \
-} while (0)
-
-/**** MACROS end ****/
-
-
-
-
-static void TAG(s3v_point)( s3vContextPtr vmesa, 
-                            const s3vVertex *_v0 )
-{
-}
-
-static void TAG(s3v_line)( s3vContextPtr vmesa, 
-                            const s3vVertex *_v0,
-                            const s3vVertex *_v1 )
-{
-       GLcontext *ctx = vmesa->glCtx;
-       __DRIdrawablePrivate *dPriv = vmesa->driDrawable;
-
-       LINE_VERT_VARS;
-#if (IND & S3V_RAST_FLAT_BIT)
-       LINE_FLAT_VARS;
-#else
-       LINE_GOURAUD_VARS;
-#endif
-#if (IND & S3V_RAST_CULL_BIT)
-       GLfloat cull;
-        (void) cull;
-#endif
-       LINE_VERT_VARS_VOIDS;
-#if (IND & S3V_RAST_FLAT_BIT)
-       LINE_FLAT_VARS_VOIDS;
-#else
-       LINE_GOURAUD_VARS_VOIDS;
-#endif
-
-       DEBUG(("*** s3v_line: "));
-#if (IND & S3V_RAST_CULL_BIT)
-       DEBUG(("cull "));
-#endif
-#if (IND & S3V_RAST_FLAT_BIT)
-        DEBUG(("flat "));
-#endif
-
-       DEBUG(("***\n"));
-
-#if 0
-       s3v_print_vertex(ctx, _v0);
-       s3v_print_vertex(ctx, _v1);
-#endif
-
-       s3v_translate_vertex( ctx, _v0, &v[0] );
-       s3v_translate_vertex( ctx, _v1, &v[1] );
-
-#if (IND & S3V_RAST_CULL_BIT)
-       /* FIXME: should we cull lines too? */
-#endif
-       (void)v; /* v[0]; v[1]; */
-
-       SORT_LINE_VERT();
-       SET_LINE_VERT();
-
-       SET_LINE_XY();
-       SET_LINE_DIR();
-       SET_LINE_Z();
-
-#if (IND & S3V_RAST_FLAT_BIT)
-       SET_LINE_FLAT_COL();
-#else
-       SET_LINE_GOURAUD_COL();
-#endif
-
-       DMAOUT_CHECK(3DLINE_GBD, 15);
-               SEND_LINE_COL();
-               DMAOUT(0);
-               SEND_LINE_VERT();
-       DMAFINISH();
-}
-
-static void TAG(s3v_triangle)( s3vContextPtr vmesa,
-                                const s3vVertex *_v0,
-                                const s3vVertex *_v1, 
-                                const s3vVertex *_v2 )
-{
-       GLcontext *ctx = vmesa->glCtx;
-       __DRIdrawablePrivate *dPriv = vmesa->driDrawable;
-
-       VERT_VARS;
-#if (IND & S3v_RAST_FLAT_BIT)
-       FLAT_VARS;
-#else
-       GOURAUD_VARS;
-#endif
-#if (IND & S3V_RAST_TEX_BIT)
-       TEX_VARS;
-#endif
-#if (IND & S3V_RAST_CULL_BIT)
-       GLfloat cull;
-#endif
-       VERT_VARS_VOIDS;
-#if (IND & S3v_RAST_FLAT_BIT)
-       FLAT_VARS_VOIDS;
-#else
-       GOURAUD_VARS_VOIDS;
-#endif
-#if (IND & S3V_RAST_TEX_BIT)
-       TEX_VARS_VOIDS;
-#endif
-
-       DEBUG(("*** s3v_triangle: "));
-#if (IND & S3V_RAST_CULL_BIT)
-       DEBUG(("cull "));
-#endif
-#if (IND & S3V_RAST_FLAT_BIT)
-        DEBUG(("flat "));
-#endif
-#if (IND & S3V_RAST_TEX_BIT)
-        DEBUG(("tex "));
-#endif
-
-DEBUG(("***\n"));
-
-#if 0
-       s3v_print_vertex(ctx, _v0);
-       s3v_print_vertex(ctx, _v1);
-       s3v_print_vertex(ctx, _v2);
-#endif
-
-       s3v_translate_vertex( ctx, _v0, &v[0] );
-       s3v_translate_vertex( ctx, _v1, &v[1] );
-       s3v_translate_vertex( ctx, _v2, &v[2] );
-
-#if (IND & S3V_RAST_CULL_BIT)
-       cull = vmesa->backface_sign *
-               ((v[1].attrib[FRAG_ATTRIB_WPOS][0] - v[0].attrib[FRAG_ATTRIB_WPOS][0]) * (v[0].attrib[FRAG_ATTRIB_WPOS][1] - v[2].attrib[FRAG_ATTRIB_WPOS][1]) +
-                (v[1].attrib[FRAG_ATTRIB_WPOS][1] - v[0].attrib[FRAG_ATTRIB_WPOS][1]) * (v[2].attrib[FRAG_ATTRIB_WPOS][0] - v[0].attrib[FRAG_ATTRIB_WPOS][0]));
-
-       if (cull < vmesa->cull_zero /* -0.02f */) return;
-#endif
-
-       (void)v; /* v[0]; v[1]; v[2]; */
-
-       SORT_VERT();
-       SET_VERT();
-
-       if (dy02 == 0) return;
-
-       SET_XY();
-       SET_DIR();
-       SET_Z();
-       
-#if (IND & S3V_RAST_TEX_BIT)
-       SET_TEX_VERT();
-       SET_UVWD();
-#endif
-
-#if (IND & S3V_RAST_FLAT_BIT)
-       SET_FLAT_COL();
-#else
-       SET_GOURAUD_COL();
-#endif
-
-#if (IND & S3V_RAST_TEX_BIT)
-        DMAOUT_CHECK(3DTRI_BASEV, 31);
-               SEND_UVWD();
-               SEND_COL();
-               SEND_VERT();
-       DMAFINISH();
-#else
-       DMAOUT_CHECK(3DTRI_GBX, 17);
-               SEND_COL();
-               SEND_VERT();
-       DMAFINISH();
-#endif
-}
-
-static void TAG(s3v_quad)( s3vContextPtr vmesa,
-                           const s3vVertex *_v0,
-                           const s3vVertex *_v1,
-                           const s3vVertex *_v2,
-                           const s3vVertex *_v3 )
-{
-       GLcontext *ctx = vmesa->glCtx;
-        __DRIdrawablePrivate *dPriv = vmesa->driDrawable;
-
-       SWvertex temp_v[4];
-        VERT_VARS;
-#if (IND & S3v_RAST_FLAT_BIT)
-        FLAT_VARS;
-#else
-        GOURAUD_VARS;
-#endif
-#if (IND & S3V_RAST_TEX_BIT)
-        TEX_VARS;
-#endif
-#if (IND & S3V_RAST_CULL_BIT)
-        GLfloat cull;
-#endif
-        VERT_VARS_VOIDS;
-#if (IND & S3v_RAST_FLAT_BIT)
-        FLAT_VARS_VOIDS;
-#else
-        GOURAUD_VARS_VOIDS;
-#endif
-#if (IND & S3V_RAST_TEX_BIT)
-        TEX_VARS_VOIDS;
-#endif
-
-       DEBUG(("*** s3v_quad: "));
-#if (IND & S3V_RAST_CULL_BIT)
-        DEBUG(("cull "));
-               /* printf(""); */ /* speed trick */
-#endif
-#if (IND & S3V_RAST_FLAT_BIT)
-        DEBUG(("flat "));
-#endif
-#if (IND & S3V_RAST_TEX_BIT)
-        DEBUG(("tex "));
-#endif
-
-       DEBUG(("***\n"));
-
-#if 0
-       s3v_print_vertex(ctx, _v0);
-       s3v_print_vertex(ctx, _v1);
-       s3v_print_vertex(ctx, _v2);
-       s3v_print_vertex(ctx, _v3);
-#endif
-       s3v_translate_vertex( ctx, _v0, &temp_v[0] );
-       s3v_translate_vertex( ctx, _v1, &temp_v[1] );
-       s3v_translate_vertex( ctx, _v2, &temp_v[2] );
-       s3v_translate_vertex( ctx, _v3, &temp_v[3] );
-
-       /* FIRST TRI (0,1,2) */
-
-       /* ROMEO */
-       /* printf(""); */ /* speed trick (a) [turn on if (a) is return]*/
-
-       v[0] = temp_v[0];
-       v[1] = temp_v[1];
-       v[2] = temp_v[2];
-
-#if (IND & S3V_RAST_CULL_BIT)
-       cull = vmesa->backface_sign *
-               ((v[1].attrib[FRAG_ATTRIB_WPOS][0] - v[0].attrib[FRAG_ATTRIB_WPOS][0]) * (v[0].attrib[FRAG_ATTRIB_WPOS][1] - v[2].attrib[FRAG_ATTRIB_WPOS][1]) +
-                (v[1].attrib[FRAG_ATTRIB_WPOS][1] - v[0].attrib[FRAG_ATTRIB_WPOS][1]) * (v[2].attrib[FRAG_ATTRIB_WPOS][0] - v[0].attrib[FRAG_ATTRIB_WPOS][0]));
-
-       if (cull < vmesa->cull_zero /* -0.02f */) goto second; /* return; */ /* (a) */
-#endif
-       
-#if 0
-        v[0] = temp_v[0];
-       v[1] = temp_v[1];
-       v[2] = temp_v[2];
-#else
-        (void) v;
-#endif
-       SORT_VERT();
-       SET_VERT();
-
-       if (dy02 == 0) goto second;
-
-        SET_XY();
-        SET_DIR();
-        SET_Z();
-
-#if (IND & S3V_RAST_TEX_BIT)
-       SET_TEX_VERT();
-       SET_UVWD();
-#endif
-
-#if (IND & S3V_RAST_FLAT_BIT)
-       SET_FLAT_COL();
-#else
-       SET_GOURAUD_COL();
-#endif
-
-#if (IND & S3V_RAST_TEX_BIT)
-       DMAOUT_CHECK(3DTRI_BASEV, 31);
-               SEND_UVWD();
-               SEND_COL();
-               SEND_VERT();
-       DMAFINISH();
-#else
-       DMAOUT_CHECK(3DTRI_GBX, 17);
-               SEND_COL();
-               SEND_VERT();
-       DMAFINISH();
-#endif
-
-       /* SECOND TRI (0,2,3) */
-
-second:
-       v[0] = temp_v[0];
-       v[1] = temp_v[2];
-       v[2] = temp_v[3];
-
-#if (IND & S3V_RAST_CULL_BIT)
-       cull = vmesa->backface_sign *
-               ((v[1].attrib[FRAG_ATTRIB_WPOS][0] - v[0].attrib[FRAG_ATTRIB_WPOS][0]) * (v[0].attrib[FRAG_ATTRIB_WPOS][1] - v[2].attrib[FRAG_ATTRIB_WPOS][1]) +
-                (v[1].attrib[FRAG_ATTRIB_WPOS][1] - v[0].attrib[FRAG_ATTRIB_WPOS][1]) * (v[2].attrib[FRAG_ATTRIB_WPOS][0] - v[0].attrib[FRAG_ATTRIB_WPOS][0]));
-                
-       if (cull < /* -0.02f */ vmesa->cull_zero) return;
-#endif
-
-/* second: */
-
-       /* ROMEO */
-       /* printf(""); */ /* speed trick */
-
-       v[0] = temp_v[0];
-       v[1] = temp_v[2];
-       v[2] = temp_v[3];
-
-       SORT_VERT();
-       SET_VERT();
-
-       if (dy02 == 0) return;
-
-       SET_XY();
-       SET_DIR();
-       SET_Z();
-
-#if (IND & S3V_RAST_TEX_BIT)
-       SET_TEX_VERT();
-       SET_UVWD();
-#endif
-
-#if (IND & S3V_RAST_FLAT_BIT)
-       SET_FLAT_COL();
-#else
-       SET_GOURAUD_COL();
-#endif
-
-#if (IND & S3V_RAST_TEX_BIT)
-       DMAOUT_CHECK(3DTRI_BASEV, 31);
-               SEND_UVWD();
-               SEND_COL();
-               SEND_VERT();
-       DMAFINISH();
-#else
-       DMAOUT_CHECK(3DTRI_GBX, 17);
-               SEND_COL();
-               SEND_VERT();
-       DMAFINISH();
-#endif
-}
-
-static void TAG(s3v_init)(void)
-{
-       s3v_point_tab[IND]      = TAG(s3v_point);
-       s3v_line_tab[IND]       = TAG(s3v_line);
-       s3v_tri_tab[IND]        = TAG(s3v_triangle);
-       s3v_quad_tab[IND]       = TAG(s3v_quad);
-}
-
-#undef IND
-#undef TAG
diff --git a/src/mesa/drivers/dri/s3v/s3v_vb.c b/src/mesa/drivers/dri/s3v/s3v_vb.c
deleted file mode 100644 (file)
index 00e375c..0000000
+++ /dev/null
@@ -1,339 +0,0 @@
-/*
- * Author: Max Lingua <sunmax@libero.it>
- */
-
-#include "main/glheader.h"
-#include "main/mtypes.h"
-#include "main/macros.h"
-#include "main/colormac.h"
-
-#include "swrast_setup/swrast_setup.h"
-#include "tnl/t_context.h"
-#include "tnl/tnl.h"
-
-#include "s3v_context.h"
-#include "s3v_vb.h"
-#include "s3v_tris.h"
-
-#define S3V_XYZW_BIT       0x1
-#define S3V_RGBA_BIT       0x2
-#define S3V_TEX0_BIT       0x4
-#define S3V_PTEX_BIT       0x8
-#define S3V_FOG_BIT        0x10
-#define S3V_MAX_SETUP      0x20
-
-static struct {
-   void                (*emit)( GLcontext *, GLuint, GLuint, void *, GLuint );
-   tnl_interp_func     interp;
-   tnl_copy_pv_func    copy_pv;
-   GLboolean           (*check_tex_sizes)( GLcontext *ctx );
-   GLuint               vertex_size;
-   GLuint               vertex_stride_shift;
-   GLuint               vertex_format;
-} setup_tab[S3V_MAX_SETUP];
-
-
-/* Only one vertex format, atm, so no need to give them names:
- */
-#define TINY_VERTEX_FORMAT      1
-#define NOTEX_VERTEX_FORMAT     0
-#define TEX0_VERTEX_FORMAT      0
-#define TEX1_VERTEX_FORMAT      0
-#define PROJ_TEX1_VERTEX_FORMAT 0
-#define TEX2_VERTEX_FORMAT      0
-#define TEX3_VERTEX_FORMAT      0
-#define PROJ_TEX3_VERTEX_FORMAT 0
-
-#define DO_XYZW (IND & S3V_XYZW_BIT)
-#define DO_RGBA (IND & S3V_RGBA_BIT)
-#define DO_SPEC 0
-#define DO_FOG  (IND & S3V_FOG_BIT)
-#define DO_TEX0 (IND & S3V_TEX0_BIT)
-#define DO_TEX1 0
-#define DO_TEX2 0
-#define DO_TEX3 0
-#define DO_PTEX (IND & S3V_PTEX_BIT)
-                              
-#define VERTEX s3vVertex
-#define LOCALVARS /* s3vContextPtr vmesa = S3V_CONTEXT(ctx); */
-#define GET_VIEWPORT_MAT() 0 /* vmesa->hw_viewport */
-#define GET_TEXSOURCE(n)  n
-#define GET_VERTEX_FORMAT() 0
-#define GET_VERTEX_SIZE() S3V_CONTEXT(ctx)->vertex_size * sizeof(GLuint)
-#define GET_VERTEX_STORE() S3V_CONTEXT(ctx)->verts
-#define GET_VERTEX_STRIDE_SHIFT() S3V_CONTEXT(ctx)->vertex_stride_shift
-#define INVALIDATE_STORED_VERTICES()
-#define GET_UBYTE_COLOR_STORE() &S3V_CONTEXT(ctx)->UbyteColor
-#define GET_UBYTE_SPEC_COLOR_STORE() &S3V_CONTEXT(ctx)->UbyteSecondaryColor
-
-#define HAVE_HW_VIEWPORT    1  /* FIXME */
-#define HAVE_HW_DIVIDE      1
-#define HAVE_RGBA_COLOR     0  /* we're BGRA */
-#define HAVE_TINY_VERTICES  1
-#define HAVE_NOTEX_VERTICES 0
-#define HAVE_TEX0_VERTICES  0
-#define HAVE_TEX1_VERTICES  0
-#define HAVE_TEX2_VERTICES  0
-#define HAVE_TEX3_VERTICES  0
-#define HAVE_PTEX_VERTICES  1
-
-/*
-#define SUBPIXEL_X -.5
-#define SUBPIXEL_Y -.5
-#define UNVIEWPORT_VARS  GLfloat h = S3V_CONTEXT(ctx)->driDrawable->h
-#define UNVIEWPORT_X(x)  x - SUBPIXEL_X
-#define UNVIEWPORT_Y(y)  - y + h + SUBPIXEL_Y
-#define UNVIEWPORT_Z(z)  z / vmesa->depth_scale
-*/
-
-#define PTEX_FALLBACK()                /* never needed */
-
-#define IMPORT_QUALIFIER
-#define IMPORT_FLOAT_COLORS s3v_import_float_colors
-#define IMPORT_FLOAT_SPEC_COLORS s3v_import_float_spec_colors
-
-#define INTERP_VERTEX setup_tab[S3V_CONTEXT(ctx)->SetupIndex].interp
-#define COPY_PV_VERTEX setup_tab[S3V_CONTEXT(ctx)->SetupIndex].copy_pv
-
-
-
-/***********************************************************************
- *         Generate  pv-copying and translation functions              *
- ***********************************************************************/
-
-#define TAG(x) s3v_##x
-#include "tnl_dd/t_dd_vb.c"
-
-/***********************************************************************
- *             Generate vertex emit and interp functions               *
- ***********************************************************************/
-
-
-#define IND (S3V_XYZW_BIT|S3V_RGBA_BIT)
-#define TAG(x) x##_wg
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (S3V_XYZW_BIT|S3V_RGBA_BIT|S3V_TEX0_BIT)
-#define TAG(x) x##_wgt0
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (S3V_XYZW_BIT|S3V_RGBA_BIT|S3V_TEX0_BIT|S3V_PTEX_BIT)
-#define TAG(x) x##_wgpt0
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (S3V_TEX0_BIT)
-#define TAG(x) x##_t0
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (S3V_RGBA_BIT)
-#define TAG(x) x##_g
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (S3V_RGBA_BIT|S3V_TEX0_BIT)
-#define TAG(x) x##_gt0
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (S3V_XYZW_BIT|S3V_RGBA_BIT|S3V_FOG_BIT)
-#define TAG(x) x##_wgf
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (S3V_XYZW_BIT|S3V_RGBA_BIT|S3V_FOG_BIT|S3V_TEX0_BIT)
-#define TAG(x) x##_wgft0
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (S3V_XYZW_BIT|S3V_RGBA_BIT|S3V_FOG_BIT|S3V_TEX0_BIT|S3V_PTEX_BIT)
-#define TAG(x) x##_wgfpt0
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (S3V_FOG_BIT)
-#define TAG(x) x##_f
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (S3V_RGBA_BIT | S3V_FOG_BIT)
-#define TAG(x) x##_gf
-#include "tnl_dd/t_dd_vbtmp.h"
-
-#define IND (S3V_RGBA_BIT | S3V_FOG_BIT | S3V_TEX0_BIT)
-#define TAG(x) x##_gft0
-#include "tnl_dd/t_dd_vbtmp.h"
-
-static void init_setup_tab( void )
-{
-   init_wg();          /* pos + col */
-   init_wgt0();                /* pos + col + tex0 */
-   init_wgpt0();       /* pos + col + p-tex0 (?) */
-   init_t0();          /* tex0 */
-   init_g();           /* col */
-   init_gt0();         /* col + tex */
-   init_wgf();
-   init_wgft0();
-   init_wgfpt0();
-   init_f();
-   init_gf();
-   init_gft0();
-}
-
-
-#if 0
-void s3vPrintSetupFlags(char *msg, GLuint flags )
-{
-   fprintf(stderr, "%s(%x): %s%s%s%s%s%s\n",
-          msg,
-          (int)flags,
-          (flags & S3V_XYZW_BIT)      ? " xyzw," : "", 
-          (flags & S3V_RGBA_BIT)     ? " rgba," : "",
-          (flags & S3V_SPEC_BIT)     ? " spec," : "",
-          (flags & S3V_FOG_BIT)      ? " fog," : "",
-          (flags & S3V_TEX0_BIT)     ? " tex-0," : "",
-          (flags & S3V_TEX1_BIT)     ? " tex-1," : "");
-}
-#endif
-
-
-void s3vCheckTexSizes( GLcontext *ctx )
-{
-   TNLcontext *tnl = TNL_CONTEXT(ctx);
-   s3vContextPtr vmesa = S3V_CONTEXT( ctx );
-
-   if (!setup_tab[vmesa->SetupIndex].check_tex_sizes(ctx)) {
-
-      vmesa->SetupIndex |= (S3V_PTEX_BIT|S3V_RGBA_BIT);
-
-      if (1 || !(ctx->_TriangleCaps & (DD_TRI_LIGHT_TWOSIDE|DD_TRI_UNFILLED))) {
-         tnl->Driver.Render.Interp = setup_tab[vmesa->SetupIndex].interp;
-         tnl->Driver.Render.CopyPV = setup_tab[vmesa->SetupIndex].copy_pv;
-      }
-   }
-}
-
-void s3vBuildVertices( GLcontext *ctx, 
-                        GLuint start, 
-                        GLuint count,
-                        GLuint newinputs )
-{
-       s3vContextPtr vmesa = S3V_CONTEXT( ctx );
-       GLubyte *v = ((GLubyte *)vmesa->verts +
-               (start<<vmesa->vertex_stride_shift));
-       GLuint stride = 1<<vmesa->vertex_stride_shift;
-
-       DEBUG(("*** s3vBuildVertices ***\n"));
-       DEBUG(("vmesa->SetupNewInputs = 0x%x\n", vmesa->SetupNewInputs));
-       DEBUG(("vmesa->SetupIndex = 0x%x\n", vmesa->SetupIndex));
-
-#if 1
-       setup_tab[vmesa->SetupIndex].emit( ctx, start, count, v, stride );
-#else
-       newinputs |= vmesa->SetupNewInputs;
-       vmesa->SetupNewInputs = 0;
-
-       DEBUG(("newinputs is 0x%x\n", newinputs));
-
-       if (!newinputs) {
-               DEBUG(("!newinputs\n"));
-               return;
-       }
-
-       if (newinputs & VERT_CLIP) {
-       setup_tab[vmesa->SetupIndex].emit( ctx, start, count, v, stride );
-       DEBUG(("newinputs & VERT_CLIP\n"));
-       return;
-       } /* else { */
-/*      GLuint ind = 0; */
-
-       if (newinputs & VERT_RGBA) {
-               DEBUG(("newinputs & VERT_RGBA\n"));
-               ind |= S3V_RGBA_BIT;
-       }
-       if (newinputs & VERT_TEX0) {
-               DEBUG(("newinputs & VERT_TEX0\n"));
-               ind |= S3V_TEX0_BIT;
-       }
-
-    if (newinputs & VERT_FOG_COORD)
-        ind |= S3V_FOG_BIT;
-
-       if (vmesa->SetupIndex & S3V_PTEX_BIT)
-               ind = ~0;
-
-    ind &= vmesa->SetupIndex;
-
-       DEBUG(("vmesa->SetupIndex = 0x%x\n", vmesa->SetupIndex));
-       DEBUG(("ind = 0x%x\n", ind));
-       DEBUG(("ind & vmesa->SetupIndex = 0x%x\n", (ind & vmesa->SetupIndex)));
-
-       if (ind) {
-               setup_tab[ind].emit( ctx, start, count, v, stride );   
-       }
-#endif
-}
-
-void s3vChooseVertexState( GLcontext *ctx )
-{
-   s3vContextPtr vmesa = S3V_CONTEXT( ctx );
-   TNLcontext *tnl = TNL_CONTEXT(ctx);
-
-   GLuint ind = S3V_XYZW_BIT | S3V_RGBA_BIT;
-
-   /* FIXME: will segv in tnl_dd/t_dd_vbtmp.h (line 196) on some demos */
-/*
-   if (ctx->Fog.Enabled)
-      ind |= S3V_FOG_BIT;
-*/
-
-
-   if (ctx->Texture.Unit[0]._ReallyEnabled) {
-      _tnl_need_projected_coords( ctx, GL_FALSE );
-      ind |= S3V_TEX0_BIT;
-   } else {
-      _tnl_need_projected_coords( ctx, GL_TRUE );
-   }
-
-   vmesa->SetupIndex = ind;
-
-   if (ctx->_TriangleCaps & (DD_TRI_LIGHT_TWOSIDE|DD_TRI_UNFILLED)) {
-      tnl->Driver.Render.Interp = s3v_interp_extras;
-      tnl->Driver.Render.CopyPV = s3v_copy_pv_extras;
-   } else {
-      tnl->Driver.Render.Interp = setup_tab[ind].interp;
-      tnl->Driver.Render.CopyPV = setup_tab[ind].copy_pv;
-   }
-}
-
-
-void s3vInitVB( GLcontext *ctx )
-{
-   s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-   GLuint size = TNL_CONTEXT(ctx)->vb.Size;
-
-   vmesa->verts = (char *)ALIGN_MALLOC(size * 4 * 16, 32);
-
-   {
-      static int firsttime = 1;
-      if (firsttime) {
-        init_setup_tab();
-        firsttime = 0;
-        vmesa->vertex_stride_shift = 6 /* 4 */; /* FIXME - only one vertex setup */
-      }
-   }
-}
-
-
-void s3vFreeVB( GLcontext *ctx )
-{
-   s3vContextPtr vmesa = S3V_CONTEXT(ctx);
-   if (vmesa->verts) {
-      ALIGN_FREE(vmesa->verts);
-      vmesa->verts = 0;
-   }
-
-   if (vmesa->UbyteSecondaryColor.Ptr) {
-      ALIGN_FREE((void *)vmesa->UbyteSecondaryColor.Ptr);
-      vmesa->UbyteSecondaryColor.Ptr = 0;
-   }
-
-   if (vmesa->UbyteColor.Ptr) {
-      ALIGN_FREE((void *)vmesa->UbyteColor.Ptr);
-      vmesa->UbyteColor.Ptr = 0;
-   }
-}
diff --git a/src/mesa/drivers/dri/s3v/s3v_vb.h b/src/mesa/drivers/dri/s3v/s3v_vb.h
deleted file mode 100644 (file)
index 0fd5437..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Author: Max Lingua <sunmax@libero.it>
- */
-
-#ifndef S3VVB_INC
-#define S3VVB_INC
-
-#include "main/mtypes.h"
-#include "swrast/swrast.h"
-
-#define _S3V_NEW_VERTEX (_NEW_TEXTURE |                \
-                          _DD_NEW_TRI_UNFILLED |       \
-                          _DD_NEW_TRI_LIGHT_TWOSIDE)
-
-
-extern void s3vChooseVertexState( GLcontext *ctx );
-extern void s3vCheckTexSizes( GLcontext *ctx );
-extern void s3vBuildVertices( GLcontext *ctx, 
-                               GLuint start, 
-                               GLuint count,
-                               GLuint newinputs );
-
-
-extern void s3v_import_float_colors( GLcontext *ctx );
-extern void s3v_import_float_spec_colors( GLcontext *ctx );
-
-extern void s3v_translate_vertex( GLcontext *ctx, 
-                                   const s3vVertex *src, 
-                                   SWvertex *dst );
-
-extern void s3vInitVB( GLcontext *ctx );
-extern void s3vFreeVB( GLcontext *ctx );
-
-extern void s3v_print_vertex( GLcontext *ctx, const s3vVertex *v );
-#if 0
-extern void s3vPrintSetupFlags(char *msg, GLuint flags );
-#endif
-
-#endif
diff --git a/src/mesa/drivers/dri/s3v/s3v_xmesa.c b/src/mesa/drivers/dri/s3v/s3v_xmesa.c
deleted file mode 100644 (file)
index 85f1481..0000000
+++ /dev/null
@@ -1,341 +0,0 @@
-/*
- * Author: Max Lingua <sunmax@libero.it>
- */
-
-#include "s3v_context.h"
-#include "s3v_vb.h"
-#include "s3v_dri.h"
-#include "main/context.h"
-#include "main/matrix.h"
-#include "main/framebuffer.h"
-#include "main/renderbuffer.h"
-#include "main/viewport.h"
-
-#include "swrast/swrast.h"
-#include "swrast_setup/swrast_setup.h"
-#include "tnl/tnl.h"
-#include "vbo/vbo.h"
-
-/* #define DEBUG(str) printf str */
-
-static const __DRIconfig **
-s3vInitScreen(__DRIscreen *sPriv)
-{
-    sPriv->private = (void *) s3vCreateScreen( sPriv );
-
-    if (!sPriv->private) {
-       s3vDestroyScreen( sPriv );
-       return GL_FALSE;
-    }
-
-   return NULL;
-}
-
-static void 
-s3vDestroyContext(__DRIcontextPrivate *driContextPriv)
-{
-    s3vContextPtr vmesa = (s3vContextPtr)driContextPriv->driverPrivate;
-
-    if (vmesa) {
-      _swsetup_DestroyContext( vmesa->glCtx );
-      _tnl_DestroyContext( vmesa->glCtx );
-      _vbo_DestroyContext( vmesa->glCtx );
-      _swrast_DestroyContext( vmesa->glCtx );
-
-      s3vFreeVB( vmesa->glCtx );
-
-      /* free the Mesa context */
-      vmesa->glCtx->DriverCtx = NULL;
-      _mesa_destroy_context(vmesa->glCtx);
-
-      _mesa_free(vmesa);
-      driContextPriv->driverPrivate = NULL;
-    }
-}
-
-
-static GLboolean
-s3vCreateBuffer( __DRIscreenPrivate *driScrnPriv,
-                   __DRIdrawablePrivate *driDrawPriv,
-                   const __GLcontextModes *mesaVis,
-                   GLboolean isPixmap )
-{
-   s3vScreenPtr screen = (s3vScreenPtr) driScrnPriv->private;
-
-   if (isPixmap) {
-      return GL_FALSE; /* not implemented */
-   }
-   else {
-      struct gl_framebuffer *fb = _mesa_create_framebuffer(mesaVis);
-
-      {
-         driRenderbuffer *frontRb
-            = driNewRenderbuffer(GL_RGBA, NULL, screen->cpp,
-                                 screen->frontOffset, screen->frontPitch,
-                                 driDrawPriv);
-         s3vSetSpanFunctions(frontRb, mesaVis);
-         _mesa_add_renderbuffer(fb, BUFFER_FRONT_LEFT, &frontRb->Base);
-      }
-
-      if (mesaVis->doubleBufferMode) {
-         driRenderbuffer *backRb
-            = driNewRenderbuffer(GL_RGBA, NULL, screen->cpp,
-                                 screen->backOffset, screen->backPitch,
-                                 driDrawPriv);
-         s3vSetSpanFunctions(backRb, mesaVis);
-         _mesa_add_renderbuffer(fb, BUFFER_BACK_LEFT, &backRb->Base);
-         backRb->backBuffer = GL_TRUE;
-      }
-
-      if (mesaVis->depthBits == 16) {
-         driRenderbuffer *depthRb
-            = driNewRenderbuffer(GL_DEPTH_COMPONENT16, NULL, screen->cpp,
-                                 screen->depthOffset, screen->depthPitch,
-                                 driDrawPriv);
-         s3vSetSpanFunctions(depthRb, mesaVis);
-         _mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
-      }
-      else if (mesaVis->depthBits == 24) {
-         driRenderbuffer *depthRb
-            = driNewRenderbuffer(GL_DEPTH_COMPONENT24, NULL, screen->cpp,
-                                 screen->depthOffset, screen->depthPitch,
-                                 driDrawPriv);
-         s3vSetSpanFunctions(depthRb, mesaVis);
-         _mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
-      }
-
-      /* no h/w stencil yet?
-      if (mesaVis->stencilBits > 0) {
-         driRenderbuffer *stencilRb
-            = driNewRenderbuffer(GL_STENCIL_INDEX8_EXT, NULL,
-                                 screen->cpp, screen->depthOffset,
-                                 screen->depthPitch, driDrawPriv);
-         s3vSetSpanFunctions(stencilRb, mesaVis);
-         _mesa_add_renderbuffer(fb, BUFFER_STENCIL, &stencilRb->Base);
-      }
-      */
-
-      _mesa_add_soft_renderbuffers(fb,
-                                   GL_FALSE, /* color */
-                                   GL_FALSE, /* depth */
-                                   mesaVis->stencilBits > 0,
-                                   mesaVis->accumRedBits > 0,
-                                   GL_FALSE, /* alpha */
-                                   GL_FALSE /* aux */);
-      driDrawPriv->driverPrivate = (void *) fb;
-
-      return (driDrawPriv->driverPrivate != NULL);
-   }
-}
-
-
-static void
-s3vDestroyBuffer(__DRIdrawablePrivate *driDrawPriv)
-{
-   _mesa_reference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate)), NULL);
-}
-
-static void
-s3vSwapBuffers(__DRIdrawablePrivate *drawablePrivate)
-{
-   __DRIdrawablePrivate *dPriv = (__DRIdrawablePrivate *) drawablePrivate;
-   __DRIscreenPrivate *sPriv;
-   GLcontext *ctx;
-   s3vContextPtr vmesa;
-   s3vScreenPtr s3vscrn;
-   
-   vmesa = (s3vContextPtr) dPriv->driContextPriv->driverPrivate;
-   sPriv = vmesa->driScreen;
-   s3vscrn = vmesa->s3vScreen;
-   ctx = vmesa->glCtx;
-
-   DEBUG(("*** s3vSwapBuffers ***\n"));
-
-/* DMAFLUSH(); */
-
-   _mesa_notifySwapBuffers( ctx );
-
-   vmesa = (s3vContextPtr) dPriv->driContextPriv->driverPrivate;
-/*    driScrnPriv = vmesa->driScreen; */
-
-/*    if (vmesa->EnabledFlags & S3V_BACK_BUFFER) */
-
-/*     _mesa_notifySwapBuffers( ctx );  */
-#if 1
-{      
-       int x0, y0, x1, y1;
-/*     
-       int nRect = dPriv->numClipRects;
-       XF86DRIClipRectPtr pRect = dPriv->pClipRects;
-
-       __DRIscreenPrivate *driScrnPriv = vmesa->driScreen;
-*/
-
-/*     
-       DEBUG(("s3vSwapBuffers: S3V_BACK_BUFFER = 1 - nClip = %i\n", nRect));
-*/
-/*     vmesa->drawOffset=vmesa->s3vScreen->backOffset; */
-
-       x0 = dPriv->x;
-       y0 = dPriv->y;
-
-       x1 = x0 + dPriv->w - 1;
-       y1 = y0 + dPriv->h - 1;
-
-       DMAOUT_CHECK(BITBLT_SRC_BASE, 15);
-               DMAOUT(vmesa->s3vScreen->backOffset);
-               DMAOUT(0); /* 0xc0000000 */
-               DMAOUT( ((x0 << 16) | x1) );
-               DMAOUT( ((y0 << 16) | y1) );
-               DMAOUT( (vmesa->DestStride << 16) | vmesa->SrcStride );
-               DMAOUT( (~(0)) );
-               DMAOUT( (~(0)) );
-               DMAOUT(0);
-               DMAOUT(0);
-       /* FIXME */
-               DMAOUT(0);
-               DMAOUT(0);
-               DMAOUT( (0x01 | /* Autoexecute */
-                        0x02 | /* clip */
-                        0x04 | /* 16 bit */
-                        0x20 | /* draw */
-                       0x400 | /* word alignment (bit 10=1) */
-                       (0x2 << 11) | /*  offset = 1 byte */
-                       (0xCC << 17) |  /* rop #204 */
-                       (0x3 << 25)) ); /* l-r, t-b */
-               DMAOUT(vmesa->ScissorWH);
-               DMAOUT( /* 0 */ vmesa->SrcXY );
-               DMAOUT( (dPriv->x << 16) | dPriv->y );
-       DMAFINISH();
-
-       DMAFLUSH();
-
-       vmesa->restore_primitive = -1;
-
-}
-#endif
-}
-
-static GLboolean 
-s3vMakeCurrent(__DRIcontextPrivate *driContextPriv,
-                __DRIdrawablePrivate *driDrawPriv,
-                __DRIdrawablePrivate *driReadPriv)
-{
-       int x1,x2,y1,y2;
-       int cx, cy, cw, ch;
-       unsigned int src_stride, dest_stride;
-       int cl;
-
-       s3vContextPtr vmesa;
-       __DRIdrawablePrivate *dPriv = driDrawPriv;
-       vmesa = (s3vContextPtr) dPriv->driContextPriv->driverPrivate;
-       
-       DEBUG(("s3vMakeCurrent\n"));
-
-       DEBUG(("dPriv->x=%i y=%i w=%i h=%i\n", dPriv->x, dPriv->y,
-               dPriv->w, dPriv->h));
-
-       if (driContextPriv) {
-       GET_CURRENT_CONTEXT(ctx);
-       s3vContextPtr oldVirgeCtx = ctx ? S3V_CONTEXT(ctx) : NULL;
-       s3vContextPtr newVirgeCtx = (s3vContextPtr) driContextPriv->driverPrivate;
-
-       if ( newVirgeCtx != oldVirgeCtx ) {
-
-               newVirgeCtx->dirty = ~0;
-               cl = 1;
-               DEBUG(("newVirgeCtx != oldVirgeCtx\n"));
-/*             s3vUpdateClipping(newVirgeCtx->glCtx ); */
-       }
-
-       if (newVirgeCtx->driDrawable != driDrawPriv) {
-           newVirgeCtx->driDrawable = driDrawPriv;
-               DEBUG(("driDrawable != driDrawPriv\n"));
-               s3vUpdateWindow ( newVirgeCtx->glCtx );
-               s3vUpdateViewportOffset( newVirgeCtx->glCtx );
-/*             s3vUpdateClipping(newVirgeCtx->glCtx ); */
-       }
-/*
-       s3vUpdateWindow ( newVirgeCtx->glCtx );
-       s3vUpdateViewportOffset( newVirgeCtx->glCtx );
-*/
-
-/*
-       _mesa_make_current( newVirgeCtx->glCtx,
-                          (GLframebuffer *) driDrawPriv->driverPrivate,
-                          (GLframebuffer *) driReadPriv->driverPrivate );
-
-       _mesa_set_viewport(newVirgeCtx->glCtx, 0, 0,
-                         newVirgeCtx->driDrawable->w,
-                         newVirgeCtx->driDrawable->h);
-*/
-
-#if 0
-       newVirgeCtx->Window &= ~W_GIDMask;
-       newVirgeCtx->Window |= (driDrawPriv->index << 5);
-       CHECK_DMA_BUFFER(newVirgeCtx,1);
-       WRITE(newVirgeCtx->buf, S3VWindow, newVirgeCtx->Window);
-#endif
-
-       newVirgeCtx->new_state |= S3V_NEW_WINDOW; /* FIXME */
-
-       _mesa_make_current( newVirgeCtx->glCtx, 
-                            (GLframebuffer *) driDrawPriv->driverPrivate,
-                            (GLframebuffer *) driReadPriv->driverPrivate );
-
-       if (!newVirgeCtx->glCtx->Viewport.Width) {
-           _mesa_set_viewport(newVirgeCtx->glCtx, 0, 0, 
-                                       driDrawPriv->w, driDrawPriv->h);
-
-/*             s3vUpdateClipping(newVirgeCtx->glCtx ); */
-       }
-
-/*
-       if (cl) {
-               s3vUpdateClipping(newVirgeCtx->glCtx );
-               cl =0;
-       }
-*/
-
-       newVirgeCtx->new_state |= S3V_NEW_CLIP;
-
-        if (1) {
-           cx = dPriv->x;
-           cw = dPriv->w;
-           cy = dPriv->y;
-           ch = dPriv->h;
-        }
-        
-        x1 = y1 = 0;
-        x2 = cw-1;
-        y2 = ch-1;
-
-        /*  src_stride = vmesa->s3vScreen->w * vmesa->s3vScreen->cpp; 
-            dest_stride = ((x2+31)&~31) * vmesa->s3vScreen->cpp; */
-        src_stride = vmesa->driScreen->fbWidth * 2;
-        dest_stride = ((x2+31)&~31) * 2;
-    } else {
-       _mesa_make_current( NULL, NULL, NULL );
-    }
-
-    return GL_TRUE;
-}
-
-
-static GLboolean 
-s3vUnbindContext( __DRIcontextPrivate *driContextPriv )
-{
-   return GL_TRUE;
-}
-
-const struct __DriverAPIRec driDriverAPI = {
-   .InitScreen    = s3vInitScreen,
-   .DestroyScreen  = s3vDestroyScreen,
-   .CreateContext  = s3vCreateContext,
-   .DestroyContext = s3vDestroyContext,
-   .CreateBuffer   = s3vCreateBuffer,
-   .DestroyBuffer  = s3vDestroyBuffer,
-   .SwapBuffers           = s3vSwapBuffers,
-   .MakeCurrent           = s3vMakeCurrent,
-   .UnbindContext  = s3vUnbindContext,
-};
diff --git a/src/mesa/drivers/dri/s3v/s3virgetri.h b/src/mesa/drivers/dri/s3v/s3virgetri.h
deleted file mode 100644 (file)
index 5519cfd..0000000
+++ /dev/null
@@ -1,383 +0,0 @@
-/*
- * Author: Max Lingua <sunmax@libero.it>
- */
-
-#define LOCAL_VARS \
-       int vert0, vert1, vert2; \
-       GLfloat y0, y1, y2, ydiff; \
-       int iy0, iy1, iy2; \
-       int x0, x1, x2, z0, z1, z2; \
-       int dy01, dy02, dy12, dx01, dx02, dx12; \
-       int delt02, delt01, delt12, end01, end12, start02; \
-       int zstart, arstart, gbstart; \
-       int deltzy, deltzx, deltarx, deltgbx, deltary, deltgby; \
-       GLubyte (*colours)[4]; \
-       GLubyte (*scolours)[4]; \
-       static int tp = 0; \
-       int tmp, lr
-
-#define LOCAL_TEX_VARS \
-       int u0, u1, u2; \
-       GLfloat ru0, ru1, ru2; \
-       int v0, v1, v2; \
-       GLfloat rv0, rv1, rv2; \
-       GLfloat w0, w1, w2; \
-       GLfloat rw0, rw1, rw2; \
-       int baseu, basev; \
-       int d0, d1, d2; \
-       int deltdx, deltvx, deltux, deltdy, deltvy, deltuy; \
-       int deltwx, deltwy; \
-       int rbaseu, rbasev; \
-       int dstart, ustart, wstart, vstart; \
-       static int stmp = 0; \
-       s3virgeTextureObject_t *t
-
-#define CULL_BACKFACE() \
-       do { \
-               GLfloat *w0 = VB->Win.data[e0]; \
-               GLfloat *w1 = VB->Win.data[e1]; \
-               GLfloat *w2 = VB->Win.data[e2]; \
-               float cull; \
-               cull = ctx->backface_sign * ((w1[0] - w0[0]) * (w0[1] - w2[1]) + \
-                       (w1[1] - w0[1]) * (w2[0] - w0[0])); \
-               if (cull < 0) \
-                       return; \
-       } while (0)
-       
-#define SORT_VERTICES() \
-       do { \
-               y0 = VB->Win.data[e0][1]; \
-               y1 = VB->Win.data[e1][1]; \
-               y2 = VB->Win.data[e2][1]; \
-               if (y1 > y0) { \
-                       if (y2 > y0) {  \
-                               vert0 = e0; \
-                               if (y1 > y2) { vert2 = e1; vert1 = e2; } else { vert2 = e2; vert1 = e1; } \
-                       } else { vert0 = e2; vert1 = e0; vert2 = e1; } \
-               } else { \
-                       if (y2 > y0) { vert0 = e1; vert1 = e0; vert2 = e2; } else { \
-                               vert2 = e0; \
-                               if (y2 > y1) { vert0 = e1; vert1 = e2; } else { vert0 = e2; vert1 = e1; } \
-                       } \
-               } \
-       } while (0)
-
-#define SET_VARIABLES() \
-       do { \
-               iy0 = y0 = ((s3virgeDB->height - (VB->Win.data[vert0][1]))); \
-               iy1 = y1 = ((s3virgeDB->height - (VB->Win.data[vert1][1]))); \
-               iy2 = y2 = ((s3virgeDB->height - (VB->Win.data[vert2][1]))); \
-               if (iy0 == iy2) { return; } \
-               ydiff = y0 - (float)iy0; \
-               x0 = ((VB->Win.data[vert0][0]) * 1024.0 * 1024.0); \
-               x1 = ((VB->Win.data[vert1][0]) * 1024.0 * 1024.0); \
-               x2 = ((VB->Win.data[vert2][0]) * 1024.0 * 1024.0); \
-               z0 = (VB->Win.data[vert0][2] * 1024.0 * 32.0); \
-               z1 = (VB->Win.data[vert1][2] * 1024.0 * 32.0); \
-               z2 = (VB->Win.data[vert2][2] * 1024.0 * 32.0); \
-               dx12 = x2 - x1; \
-               dy12 = iy1 - iy2; \
-               dx01 = x1 - x0; \
-               dy01 = iy0 - iy1; \
-               dx02 = x2 - x0; \
-               dy02 = iy0 - iy2; \
-               delt12 = delt02 = delt01 = 0; \
-       } while (0)
-       
-#define SET_TEX_VARIABLES() \
-       do { \
-               t = ((s3virgeTextureObject_t *)ctx->Texture.Unit[0].Current->DriverData); \
-               deltwx = deltwy = wstart = deltdx = deltdy = dstart = 0; \
-               u0 = (VB->TexCoordPtr[0]->data[vert0][0] * (GLfloat)(t->tObj->Image[0]->Width) * 256.0); \
-               u1 = (VB->TexCoordPtr[0]->data[vert1][0] * (GLfloat)(t->tObj->Image[0]->Width) * 256.0); \
-               u2 = (VB->TexCoordPtr[0]->data[vert2][0] * (GLfloat)(t->tObj->Image[0]->Width) * 256.0); \
-               v0 = (VB->TexCoordPtr[0]->data[vert0][1] * (GLfloat)(t->tObj->Image[0]->Height) * 256.0); \
-               v1 = (VB->TexCoordPtr[0]->data[vert1][1] * (GLfloat)(t->tObj->Image[0]->Height) * 256.0); \
-               v2 = (VB->TexCoordPtr[0]->data[vert2][1] * (GLfloat)(t->tObj->Image[0]->Height) * 256.0); \
-               w0 = (VB->Win.data[vert0][3]); \
-               w1 = (VB->Win.data[vert1][3]); \
-               w2 = (VB->Win.data[vert2][3]); \
-       } while (0)
-
-#define FLATSHADE_COLORS() \
-       do { \
-               GLubyte *col = &(colours[pv][0]); \
-               deltarx = deltary = deltgbx = deltgby = 0; \
-               gbstart = (((col[1]) << 23) | ((col[2]) << 7)); \
-               arstart = (((col[3]) << 23) | ((col[0]) << 7)); \
-       } while (0)
-
-#define GOURAUD_COLORS() \
-       do { \
-               int ctmp, ctmp2, ctmp3, ctmp4; \
-               GLubyte *col0, *col1, *col2; \
-               col0 = &(colours[vert0][0]); \
-               col1 = &(colours[vert1][0]); \
-               col2 = &(colours[vert2][0]); \
-               ctmp = ((col2[3] - col0[3]) << 7) / dy02; \
-               ctmp2 = ((col2[0] - col0[0]) << 7) / dy02; \
-               deltary = ((ctmp << 16) & 0xFFFF0000) | (ctmp2 & 0xFFFF); \
-               ctmp3 = ((col2[1] - col0[1]) << 7) / dy02; \
-               ctmp4 = ((col2[2] - col0[2]) << 7) / dy02; \
-               deltgby = ((ctmp3 << 16) & 0xFFFF0000) | (ctmp4 & 0xFFFF); \
-               gbstart = (((int)((ydiff * ctmp3) + (col0[1] << 7)) << 16) & 0x7FFF0000) | \
-                         ((int)((ydiff * ctmp4) + (col0[2] << 7)) & 0x7FFF); \
-               arstart = (((int)((ydiff * ctmp) + (col0[3] << 7)) << 16) & 0x7FFF0000) | \
-                         ((int)((ydiff * ctmp2) + (col0[0] << 7)) & 0x7FFF); \
-               if (tmp) { \
-                       int ax, rx, gx, bx; \
-                       ax = ((col1[3] << 7) - (dy01 * ctmp + (col0[3] << 7))) / tmp; \
-                       rx = ((col1[0] << 7) - (dy01 * ctmp2 + (col0[0] << 7))) / tmp; \
-                       gx = ((col1[1] << 7) - (dy01 * ctmp3 + (col0[1] << 7))) / tmp; \
-                       bx = ((col1[2] << 7) - (dy01 * ctmp4 + (col0[2] << 7))) / tmp; \
-                       deltarx = ((ax << 16) & 0xFFFF0000) | (rx & 0xFFFF); \
-                       deltgbx = ((gx << 16) & 0xFFFF0000) | (bx & 0xFFFF); \
-               } else { \
-                       deltgbx = deltarx = 0; \
-               } \
-       } while (0)
-
-#define SET_XY() \
-       do { \
-               delt02 = dx02 / dy02; \
-               if (dy12) delt12 = dx12 / dy12; \
-               if (dy01) delt01 = dx01 / dy01; \
-               start02 = (ydiff * delt02) + x0; \
-               end01 = (ydiff * delt01) + x0; \
-               end12 = ((y1 - (GLfloat)iy1) * delt12) + x1; \
-       } while (0)
-
-#define SET_DIR() \
-       do { \
-               tmp = x1 - (dy01 * delt02 + x0); \
-               if (tmp > 0) { \
-                       lr = 0x80000000; \
-               } else { \
-                       tmp *= -1; \
-                       lr = 0; \
-               } \
-               tmp >>= 20; \
-       } while (0)
-
-#define SET_Z() \
-       do { \
-               deltzy = (z2 - z0) / dy02; \
-               if (tmp) { \
-                       deltzx = (z1 - (dy01 * deltzy + z0)) / tmp; \
-               } else { deltzx = 0; } \
-               zstart = (deltzy * ydiff) + z0; \
-       } while (0)
-
-#define SET_BASEUV() \
-       do { \
-               if (u0 < u1) { \
-                       if (u0 < u2) { \
-                               baseu = u0; \
-                       } else { \
-                               baseu = u2; \
-                       } \
-               } else { \
-                       if (u1 < u2) { \
-                               baseu = u1; \
-                       } else { \
-                               baseu = u2; \
-                       } \
-               } \
-               if (v0 < v1) { \
-                       if (v0 < v2) { \
-                               basev = v0; \
-                       } else { \
-                               basev = v2; \
-                       } \
-               } else { \
-                       if (v1 < v2) { \
-                               basev = v1; \
-                       } else { \
-                               basev = v2; \
-                       } \
-               } \
-       } while (0)
-
-#define SET_RW() \
-       do { \
-               /* GLfloat minW; \
-               if (w0 < w1) { \
-                       if (w0 < w2) { \
-                               minW = w0; \
-                       } else { \
-                               minW = w2; \
-                       } \
-               } else { \
-                       if (w1 < w2) { \
-                               minW = w1; \
-                       } else { \
-                               minW = w2; \
-                       } \
-               } */ \
-               rw0 = (512.0 * w0); \
-               rw1 = (512.0 * w1); \
-               rw2 = (512.0 * w2); \
-       } while (0)
-
-
-#define SET_D() \
-       do { \
-               GLfloat sxy, suv; \
-               int lev; \
-               suv = (VB->TexCoordPtr[0]->data[vert0][0] - \
-                      VB->TexCoordPtr[0]->data[vert2][0]) * \
-                     (VB->TexCoordPtr[0]->data[vert1][1] - \
-                      VB->TexCoordPtr[0]->data[vert2][1]) - \
-                     (VB->TexCoordPtr[0]->data[vert1][0] - \
-                      VB->TexCoordPtr[0]->data[vert2][0]) * \
-                     (VB->TexCoordPtr[0]->data[vert0][1] - \
-                      VB->TexCoordPtr[0]->data[vert2][2]); \
-               sxy = (VB->Win.data[vert0][0] - \
-                      VB->Win.data[vert2][0]) * \
-                     (VB->Win.data[vert1][1] - \
-                      VB->Win.data[vert2][1]) - \
-                     (VB->Win.data[vert1][0] - \
-                      VB->Win.data[vert2][0]) * \
-                     (VB->Win.data[vert0][1] - \
-                      VB->Win.data[vert2][2]); \
-               if (sxy < 0) sxy *= -1.0; \
-               if (suv < 0) suv *= -1.0; \
-               lev = *(int*)&suv - *(int *)&sxy; \
-               if (lev < 0) \
-                       lev = 0; \
-               else \
-                       lev >>=23; \
-               dstart = (lev << 27); \
-       } while (0)
-               
-
-
-#define SET_UVWD() \
-       do { \
-               SET_BASEUV(); \
-               SET_RW(); \
-               SET_D(); \
-               ru0 = (((u0 - baseu) * rw0)); \
-               ru1 = (((u1 - baseu) * rw1)); \
-               ru2 = (((u2 - baseu) * rw2)); \
-               rv0 = (((v0 - basev) * rw0)); \
-               rv1 = (((v1 - basev) * rw1)); \
-               rv2 = (((v2 - basev) * rw2)); \
-               while (baseu < 0) { baseu += (t->tObj->Image[0]->Width << 8); } \
-               while (basev < 0) { basev += (t->tObj->Image[0]->Height << 8); } \
-               if (!(baseu & 0xFF)) { baseu = (baseu >> 8); } else { baseu = (baseu >> 8) + 1; } \
-               if ((basev & 0x80) || !(basev & 0xFF)) { basev = (basev >> 8); } else { basev = (basev >> 8) - 1; } \
-               rbaseu = (baseu) << (16 - t->widthLog2); \
-               rbasev = (basev) << (16 - t->widthLog2); \
-               deltuy = (((ru2 - ru0) / dy02)); \
-               deltvy = (((rv2 - rv0) / dy02)); \
-               rw0 *= (1024.0 * 512.0); \
-               rw1 *= (1024.0 * 512.0); \
-               rw2 *= (1024.0 * 512.0); \
-               deltwy = ((rw2 - rw0) / dy02); \
-               if (tmp) { \
-                       deltux = ((ru1 - (dy01 * deltuy + ru0)) / tmp); \
-                       deltvx = ((rv1 - (dy01 * deltvy + rv0)) / tmp); \
-                       deltwx = ((rw1 - (dy01 * deltwy + rw0)) / tmp); \
-               } else { deltux = deltvx = deltwx = 0; } \
-               ustart = (deltuy * ydiff) + (ru0); \
-               vstart = (deltvy * ydiff) + (rv0); \
-               wstart = (deltwy * ydiff) + (rw0); \
-       } while (0)
-
-
-#define SEND_COLORS() \
-       do { \
-               WAITFIFOEMPTY(6); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_GBX), deltgbx); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_ARX), deltarx); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_GBY), deltgby); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_ARY), deltary); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_GS_BS), gbstart); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_AS_RS), arstart); \
-       } while (0)
-
-#define SEND_VERTICES() \
-       do { \
-               WAITFIFOEMPTY(6); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_ZSTART), zstart); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_ZXD), deltzx); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_ZYD), deltzy); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_TXDELTA12), delt12); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_TXEND12), end12); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_TXDELTA01), delt01); \
-               WAITFIFOEMPTY(5); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_TXEND01), end01); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_TXDELTA02), delt02); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_TXSTART02), start02); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_TYS), iy0); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_TY01_Y12), \
-                               ((((iy0 - iy1) & 0x7FF) << 16) | \
-                               ((iy1 - iy2) & 0x7FF) | lr)); \
-       } while (0)
-
-#define SEND_UVWD() \
-       do { \
-               WAITFIFOEMPTY(7); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_BASEV), (rbasev & 0xFFFF)); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_BASEU), (0xa0000000 | (rbaseu & 0xFFFF))); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_WXD), deltwx); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_WYD), deltwy); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_WSTART), wstart); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_DXD), deltdx); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_VXD), deltvx); \
-               WAITFIFOEMPTY(7); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_UXD), deltux); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_DYD), deltdy); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_VYD), deltvy); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_UYD), deltuy); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_DSTART), dstart); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_VSTART), vstart); \
-               OUTREG( (S3VIRGE_3DTRI_REG | S3VIRGE_3DTRI_USTART), ustart); \
-       } while (0)
-
-#define DMA_SEND_UVWD() \
-       do { \
-               DMAOUT((rbasev & 0xFFFF)); \
-               DMAOUT((0xa0000000 | (rbaseu & 0xFFFF))); \
-               DMAOUT(deltwx); \
-               DMAOUT(deltwy); \
-               DMAOUT(wstart); \
-               DMAOUT(deltdx); \
-               DMAOUT(deltvx); \
-               DMAOUT(deltux); \
-               DMAOUT(deltdy); \
-               DMAOUT(deltvy); \
-               DMAOUT(deltuy); \
-               DMAOUT(dstart); \
-               DMAOUT(vstart); \
-               DMAOUT(ustart); \
-       } while (0)
-
-
-#define DMA_SEND_COLORS() \
-       do { \
-               DMAOUT(deltgbx); \
-               DMAOUT(deltarx); \
-               DMAOUT(deltgby); \
-               DMAOUT(deltary); \
-               DMAOUT(gbstart); \
-               DMAOUT(arstart); \
-       } while (0)
-
-#define DMA_SEND_VERTICES() \
-       do { \
-               DMAOUT(deltzx); \
-               DMAOUT(deltzy); \
-               DMAOUT(zstart); \
-               DMAOUT(delt12); \
-               DMAOUT(end12); \
-               DMAOUT(delt01); \
-               DMAOUT(end01); \
-               DMAOUT(delt02); \
-               DMAOUT(start02); \
-               DMAOUT(iy0); \
-               DMAOUT(((((iy0 - iy1) & 0x7FF) << 16) | \
-                       ((iy1 - iy2) & 0x7FF) | lr)); \
-       } while (0)
-