Add no_rast option.
authorEric Anholt <anholt@FreeBSD.org>
Wed, 1 Jun 2005 07:44:52 +0000 (07:44 +0000)
committerEric Anholt <anholt@FreeBSD.org>
Wed, 1 Jun 2005 07:44:52 +0000 (07:44 +0000)
src/mesa/drivers/dri/tdfx/tdfx_context.c
src/mesa/drivers/dri/tdfx/tdfx_context.h
src/mesa/drivers/dri/tdfx/tdfx_screen.c
src/mesa/drivers/dri/tdfx/tdfx_screen.h
src/mesa/drivers/dri/tdfx/tdfx_tris.c

index 654ada5980463e99f8dea6b29fffc78320c788c8..12e35d7c2bfe47d5799739110190e5a27c490019 100644 (file)
@@ -62,9 +62,6 @@
 
 #include "utils.h"
 
-PUBLIC const char __driConfigOptions[] = { 0 };
-const GLuint __driNConfigOptions = 0;
-
 /**
  * Common extension strings exported by all cards
  */
@@ -155,7 +152,6 @@ static const struct tnl_pipeline_stage *tdfx_pipeline[] = {
    0,
 };
 
-
 GLboolean tdfxCreateContext( const __GLcontextModes *mesaVis,
                             __DRIcontextPrivate *driContextPriv,
                              void *sharedContextPrivate )
@@ -221,6 +217,10 @@ GLboolean tdfxCreateContext( const __GLcontextModes *mesaVis,
    fxMesa->new_state = ~0;
    fxMesa->dirty = ~0;
 
+   /* Parse configuration files */
+   driParseConfigFiles (&fxMesa->optionCache, &fxScreen->optionCache,
+                        fxMesa->driScreen->myNum, "tdfx");
+
    /* NOTE: This must be here before any Glide calls! */
    if (!tdfxInitGlide( fxMesa )) {
       FREE(fxMesa);
@@ -320,6 +320,11 @@ GLboolean tdfxCreateContext( const __GLcontextModes *mesaVis,
    tdfxInitVB( ctx );
    tdfxInitState( fxMesa );
 
+   if (driQueryOptionb(&fxMesa->optionCache, "no_rast")) {
+      fprintf(stderr, "disabling 3D acceleration\n");
+      FALLBACK(fxMesa, TDFX_FALLBACK_DISABLE, 1);
+   }
+
    return GL_TRUE;
 }
 
index 7d18e77c4df4bf32338319d345bc8eb81d968cfe..42a38f3bf0e72a82a776a2ae757a7faab6b7a5b0 100644 (file)
@@ -54,6 +54,7 @@
 #include "drm.h"
 #include "drm_sarea.h"
 #include "tdfx_glide.h"
+#include "xmlconfig.h"
 
 #include "clip.h"
 #include "context.h"
 #define TDFX_FALLBACK_COLORMASK                0x0100
 #define TDFX_FALLBACK_BLEND            0x0200
 #define TDFX_FALLBACK_LINE_STIPPLE     0x0400
+#define TDFX_FALLBACK_DISABLE          0x0800
 
 /* Different Glide vertex layouts
  */
@@ -918,6 +920,10 @@ struct tdfx_context {
    tdfxStats stats;
 
    GLboolean debugFallbacks;
+
+   /* Configuration cache
+    */
+   driOptionCache optionCache;
 };
 
 #define TDFX_CONTEXT(ctx)      ((tdfxContextPtr)((ctx)->DriverCtx))
index b911668b4ef532327ba7e8176199131cb183a056..fde17f1a87ee6a141026eed5573e56796f99d412 100644 (file)
 #include "tdfx_vb.h"
 #include "tdfx_span.h"
 #include "tdfx_tris.h"
-#include "utils.h"
+
 #include "framebuffer.h"
 #include "renderbuffer.h"
+#include "xmlpool.h"
+
+#include "utils.h"
 
 #ifdef DEBUG_LOCKING
 char *prevLockFile = 0;
@@ -61,7 +64,14 @@ int TDFX_DEBUG = (0
    );
 #endif
 
+PUBLIC const char __driConfigOptions[] =
+DRI_CONF_BEGIN
+    DRI_CONF_SECTION_DEBUG
+        DRI_CONF_NO_RAST(false)
+    DRI_CONF_SECTION_END
+DRI_CONF_END;
 
+static const GLuint __driNConfigOptions = 1;
 
 static GLboolean
 tdfxCreateScreen( __DRIscreenPrivate *sPriv )
@@ -74,6 +84,10 @@ tdfxCreateScreen( __DRIscreenPrivate *sPriv )
    if ( !fxScreen )
       return GL_FALSE;
 
+   /* parse information in __driConfigOptions */
+   driParseOptionInfo (&fxScreen->optionCache,
+                      __driConfigOptions, __driNConfigOptions);
+
    fxScreen->driScrnPriv = sPriv;
    sPriv->private = (void *) fxScreen;
 
@@ -108,12 +122,16 @@ tdfxDestroyScreen( __DRIscreenPrivate *sPriv )
 {
    tdfxScreenPrivate *fxScreen = (tdfxScreenPrivate *) sPriv->private;
 
-   if ( fxScreen ) {
-      drmUnmap( fxScreen->regs.map, fxScreen->regs.size );
+   if (!fxScreen)
+      return;
 
-      FREE( fxScreen );
-      sPriv->private = NULL;
-   }
+   drmUnmap( fxScreen->regs.map, fxScreen->regs.size );
+
+   /* free all option information */
+   driDestroyOptionInfo (&fxScreen->optionCache);
+
+   FREE( fxScreen );
+   sPriv->private = NULL;
 }
 
 
index f6c2e8ee3aeed3704539a7c484b399f31f6bf2be..90be89a352c754b6be35f88c7fafd53f407a3ac6 100644 (file)
@@ -64,6 +64,9 @@ typedef struct {
 
    __DRIscreenPrivate *driScrnPriv;
    unsigned int sarea_priv_offset;
+
+   /* Configuration cache with default values for all contexts */
+   driOptionCache optionCache;
 } tdfxScreenPrivate;
 
 
index d1933068219f563aeffe925e9ecb511f3065cea6..7909350a13d8e1355e6e40eb71939ecd41d25725 100644 (file)
@@ -1214,6 +1214,7 @@ static char *fallbackStrings[] = {
    "glColorMask",
    "blend mode",
    "line stipple"
+   "Rasterization disable"
 };