Make line stipple a fallback.
authorKeith Whitwell <keith@tungstengraphics.com>
Wed, 29 Dec 2004 14:06:09 +0000 (14:06 +0000)
committerKeith Whitwell <keith@tungstengraphics.com>
Wed, 29 Dec 2004 14:06:09 +0000 (14:06 +0000)
Make sure fallbacks are wrapped by SpanRenderStart/SpanRenderFinish

src/mesa/drivers/dri/unichrome/via_context.c
src/mesa/drivers/dri/unichrome/via_span.c
src/mesa/drivers/dri/unichrome/via_span.h
src/mesa/drivers/dri/unichrome/via_state.c
src/mesa/drivers/dri/unichrome/via_tris.c

index e41aa286f24e04a475eb3b2a077ece842e407df9..ba78477f36ebbcccf4ec7d2f97d027efeed0c2cd 100644 (file)
@@ -522,7 +522,6 @@ viaCreateContext(const __GLcontextModes *mesaVis,
     vmesa->glBuffer = NULL;
 
     vmesa->texHeap = mmInit(0, viaScreen->textureSize);
-    vmesa->stippleInHw = 1;
     vmesa->renderIndex = ~0;
 
     make_empty_list(&vmesa->TexObjList);
index 8ae62256e7e14eee3c485cda79641cc5f9c34495..9578af3b657668c7023306318b71dd6ea5023503 100644 (file)
@@ -251,17 +251,16 @@ static void viaSetBuffer(GLcontext *ctx, GLframebuffer *colorBuffer,
 
 /* Move locking out to get reasonable span performance.
  */
-static void viaSpanRenderStart( GLcontext *ctx )
+void viaSpanRenderStart( GLcontext *ctx )
 {
    viaContextPtr vmesa = VIA_CONTEXT(ctx);     
    VIA_FINISH_PRIM(vmesa);
    LOCK_HARDWARE(vmesa);
    viaFlushPrimsLocked(vmesa);
    WAIT_IDLE(vmesa);
-    
 }
 
-static void viaSpanRenderFinish( GLcontext *ctx )
+void viaSpanRenderFinish( GLcontext *ctx )
 {
    viaContextPtr vmesa = VIA_CONTEXT(ctx);
    _swrast_flush( ctx );
index 6045f2ce7ea016590234ae5dd6c3d4f15b562035..71b3f82c03abcd49537342abb42add4c3f3b075b 100644 (file)
@@ -26,5 +26,7 @@
 #define _VIA_SPAN_H
 
 extern void viaInitSpanFuncs(GLcontext *ctx);
+extern void viaSpanRenderStart( GLcontext *ctx );
+extern void viaSpanRenderFinish( GLcontext *ctx );
 
 #endif
index 92d76dd9b44a9829a884ac453142860bd25b176b..e9f0d6682f97a6205c7251a8a04b6a78faa65bb4 100644 (file)
@@ -163,7 +163,7 @@ static void via_emit_state(viaContextPtr vmesa)
       ADVANCE_RING();
    }
     
-   if (ctx->Line.StippleFlag) {
+   if (0 && ctx->Line.StippleFlag) {
       BEGIN_RING(2);
       OUT_RING( ((HC_SubA_HLP << 24) | ctx->Line.StipplePattern) );           
       OUT_RING( ((HC_SubA_HLPRF << 24) | ctx->Line.StippleFactor) );                  
@@ -1345,7 +1345,7 @@ static void viaChooseLineState(GLcontext *ctx)
         }
     }
 
-    if (ctx->Line.StippleFlag) {
+    if (0 && ctx->Line.StippleFlag) {
         vmesa->regEnable |= HC_HenLP_MASK;
         vmesa->regHLP = ctx->Line.StipplePattern;
         vmesa->regHLPRF = ctx->Line.StippleFactor;
@@ -1513,18 +1513,6 @@ void viaValidateState( GLcontext *ctx )
     struct gl_texture_unit *texUnit1 = &ctx->Texture.Unit[1];
     if (VIA_DEBUG) fprintf(stderr, "%s - in\n", __FUNCTION__);    
 
-#if 0
-    if (!(vmesa->newState & (_NEW_COLOR |
-                            _NEW_TEXTURE |
-                            _NEW_DEPTH |
-                            _NEW_FOG |
-                            _NEW_LIGHT |
-                            _NEW_LINE |
-                            _NEW_POLYGON |
-                            _NEW_POLYGONSTIPPLE |
-                            _NEW_STENCIL)))
-        return;
-#endif
 
     if (texUnit0->_ReallyEnabled || texUnit1->_ReallyEnabled || ctx->Fog.Enabled) {
        vmesa->regCmdB |= HC_HVPMSK_Cs;
index 4f9a9647716e0596543d79e9b30ab2e1b72cda99..b936760dc3284ca68ffa69c1972b25cb4ffe50d9 100644 (file)
@@ -411,7 +411,9 @@ via_fallback_tri(viaContextPtr vmesa,
     via_translate_vertex(ctx, v0, &v[0]);
     via_translate_vertex(ctx, v1, &v[1]);
     via_translate_vertex(ctx, v2, &v[2]);
+    viaSpanRenderStart( ctx );
     _swrast_Triangle(ctx, &v[0], &v[1], &v[2]);
+    viaSpanRenderFinish( ctx );
 }
 
 
@@ -424,7 +426,9 @@ via_fallback_line(viaContextPtr vmesa,
     SWvertex v[2];
     via_translate_vertex(ctx, v0, &v[0]);
     via_translate_vertex(ctx, v1, &v[1]);
+    viaSpanRenderStart( ctx );
     _swrast_Line(ctx, &v[0], &v[1]);
+    viaSpanRenderFinish( ctx );
 }
 
 
@@ -435,7 +439,9 @@ via_fallback_point(viaContextPtr vmesa,
     GLcontext *ctx = vmesa->glCtx;
     SWvertex v[1];
     via_translate_vertex(ctx, v0, &v[0]);
+    viaSpanRenderStart( ctx );
     _swrast_Point(ctx, &v[0]);
+    viaSpanRenderFinish( ctx );
 }
 
 /**********************************************************************/
@@ -540,10 +546,11 @@ static void viaFastRenderClippedPoly(GLcontext *ctx, const GLuint *elts,
                               _DD_NEW_TRI_STIPPLE |             \
                               _NEW_POLYGONSTIPPLE)
 
+/* Via does support line stipple in hardware, and it is partially
+ * working in the older versions of this driver:
+ */
+#define LINE_FALLBACK (DD_LINE_STIPPLE)
 #define POINT_FALLBACK (0)
-/*#define LINE_FALLBACK (DD_LINE_STIPPLE)
-*/
-#define LINE_FALLBACK (0)
 #define TRI_FALLBACK (0)
 #define ANY_FALLBACK_FLAGS (POINT_FALLBACK|LINE_FALLBACK|TRI_FALLBACK)
 #define ANY_RASTER_FLAGS (DD_TRI_LIGHT_TWOSIDE|DD_TRI_OFFSET|DD_TRI_UNFILLED)