BIG FAT NOTE: Theres a nasty bug somewhere thats causing vb color buffer clears and...
authorAapo Tahkola <aet@rasterburn.org>
Tue, 8 Feb 2005 07:05:25 +0000 (07:05 +0000)
committerAapo Tahkola <aet@rasterburn.org>
Tue, 8 Feb 2005 07:05:25 +0000 (07:05 +0000)
src/mesa/drivers/dri/r300/r300_cmdbuf.c
src/mesa/drivers/dri/r300/r300_context.h
src/mesa/drivers/dri/r300/r300_ioctl.c
src/mesa/drivers/dri/r300/r300_render.c
src/mesa/drivers/dri/r300/r300_state.c

index 67ec2fedc51103df9466fee8ccb46ce69d3624f6..0142db2d0fd886d6c0a3ef2a34f604b9698033e0 100644 (file)
@@ -349,10 +349,14 @@ void r300InitCmdBuf(r300ContextPtr r300)
                r300->hw.unk4288.cmd[0] = cmducs(0x4288, 5);
        ALLOC_STATE( unk42A0, always, 2, "unk42A0", 0 );
                r300->hw.unk42A0.cmd[0] = cmducs(0x42A0, 1);
+#ifdef HAVE_ZBS                
        ALLOC_STATE( zbs, always, R300_ZBS_CMDSIZE, "zbs", 0 );
                r300->hw.zbs.cmd[R300_ZBS_CMD_0] = cmducs(R300_RE_ZBIAS_T_FACTOR, 4);
+#endif
+#ifdef GA                              
        ALLOC_STATE( unk42B4, always, 2, "unk42B4", 0 );
                r300->hw.unk42B4.cmd[0] = cmducs(0x42B4, 1);
+#endif         
        ALLOC_STATE( cul, always, R300_CUL_CMDSIZE, "cul", 0 );
                r300->hw.cul.cmd[R300_CUL_CMD_0] = cmducs(R300_RE_CULL_CNTL, 1);
        ALLOC_STATE( unk42C0, always, 3, "unk42C0", 0 );
@@ -486,8 +490,12 @@ void r300InitCmdBuf(r300ContextPtr r300)
        insert_at_tail(&r300->hw.atomlist, &r300->hw.unk4274);
        insert_at_tail(&r300->hw.atomlist, &r300->hw.unk4288);
        insert_at_tail(&r300->hw.atomlist, &r300->hw.unk42A0);
+#ifdef HAVE_ZBS        
        insert_at_tail(&r300->hw.atomlist, &r300->hw.zbs);
+#endif
+#ifdef GA              
        insert_at_tail(&r300->hw.atomlist, &r300->hw.unk42B4);
+#endif 
        insert_at_tail(&r300->hw.atomlist, &r300->hw.cul);
        insert_at_tail(&r300->hw.atomlist, &r300->hw.unk42C0);
        insert_at_tail(&r300->hw.atomlist, &r300->hw.rc);
index 428614b7a657b86d7c45f70d508a508f55c3dc52..eaec08d602791ddebc14938ea1f7e9019bbedf59 100644 (file)
@@ -407,8 +407,10 @@ struct r300_hw_state {
        struct r300_state_atom unk4274; /* (4274) */
        struct r300_state_atom unk4288; /* (4288) */
        struct r300_state_atom unk42A0; /* (42A0) */
-       struct r300_state_atom zbs;     /* zbias (42A4) */
-       struct r300_state_atom unk42B4; /* (42B4) */
+#ifdef HAVE_ZBS
+#endif
+       //struct r300_state_atom zbs;   /* zbias (42A4) */
+       //struct r300_state_atom unk42B4; /* (42B4) */
        struct r300_state_atom cul;     /* cull cntl (42B8) */
        struct r300_state_atom unk42C0; /* (42C0) */
        struct r300_state_atom rc;      /* rs control (4300) */
index e7e1d37b681504aa9add2dfe69056e29564b907b..84b475d064cb4d3dbcab38824dfc87636ebd9ef1 100644 (file)
@@ -281,7 +281,7 @@ static void r300Clear(GLcontext * ctx, GLbitfield mask, GLboolean all,
                if (dPriv->numClipRects == 0)
                        return;
        }
-       
+#ifdef HAVE_ZBS
        /* When unk42B4==0 z-bias is still on for vb mode with points ... */
        R300_STATECHANGE(r300, zbs);
        zbs[0]=r300->hw.zbs.cmd[R300_ZBS_T_FACTOR];
@@ -297,8 +297,8 @@ static void r300Clear(GLcontext * ctx, GLbitfield mask, GLboolean all,
        /* Make sure z-bias isnt on */
        R300_STATECHANGE(r300, unk42B4);
        unk42B4=r300->hw.unk42B4.cmd[1];
-       r300->hw.unk42B4.cmd[1]=3;
-
+       r300->hw.unk42B4.cmd[1]=0;//3;
+#endif
        if (mask & DD_FRONT_LEFT_BIT) {
                flags |= DD_FRONT_LEFT_BIT;
                mask &= ~DD_FRONT_LEFT_BIT;
@@ -340,7 +340,7 @@ static void r300Clear(GLcontext * ctx, GLbitfield mask, GLboolean all,
         * but do keep it like this for now.
         */
        r300ResetHwState(r300);
-       
+#ifdef HAVE_ZBS
        R300_STATECHANGE(r300, unk42B4);
        r300->hw.unk42B4.cmd[1]=unk42B4;
        
@@ -350,7 +350,7 @@ static void r300Clear(GLcontext * ctx, GLbitfield mask, GLboolean all,
        r300->hw.zbs.cmd[R300_ZBS_T_CONSTANT] = zbs[1];
        r300->hw.zbs.cmd[R300_ZBS_W_FACTOR] = zbs[2];
        r300->hw.zbs.cmd[R300_ZBS_W_CONSTANT] = zbs[3];
-
+#endif
        /* r300ClearBuffer has trampled all over the hardware state.. */
        r300->hw.all_dirty=GL_TRUE;
 }
index c6d57a35517bf96af462aae12f7b6de7aab905fc..cbe7d91d1af5bccf8f72a34783fe5e969a2f940c 100644 (file)
@@ -58,9 +58,10 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 #include "r300_emit.h"
 
-#if 0
+
+#ifdef HAVE_ZBS
 /* Turns out we might not need this after all... */
-static void update_zbias(GLcontext * ctx, int prim)
+void update_zbias(GLcontext * ctx, int prim)
 {
     r300ContextPtr rmesa = R300_CONTEXT(ctx);
     int enabled = 0;
@@ -690,7 +691,7 @@ static GLboolean r300_run_render(GLcontext *ctx,
 
    #if 1
        
-       #if 1
+       #if 0
        
         return r300_run_immediate_render(ctx, stage);
        #else 
index 0dc3293ab23df4ad55d7fec1e49d0c8ff7f507e3..f31c9f0aa338a35e4c2b80fa6ee52ebb3a604d2e 100644 (file)
@@ -498,7 +498,7 @@ static void r300Enable(GLcontext* ctx, GLenum cap, GLboolean state)
        case GL_CULL_FACE:
                r300UpdateCulling(ctx);
                break;
-               
+#ifdef HAVE_ZBS        
        case GL_POLYGON_OFFSET_POINT:
        case GL_POLYGON_OFFSET_LINE:
                WARN_ONCE("Don't know how to enable polygon offset point/line. Help me !\n");
@@ -512,6 +512,7 @@ static void r300Enable(GLcontext* ctx, GLenum cap, GLboolean state)
                        r300->hw.unk42B4.cmd[1] &= ~3;
                        }
                break;
+#endif         
        case GL_VERTEX_PROGRAM_ARB:
                //TCL_FALLBACK(rmesa->glCtx, R200_TCL_FALLBACK_TCL_DISABLE, state);
        break;
@@ -816,7 +817,7 @@ static void r300DepthRange(GLcontext * ctx, GLclampd nearval, GLclampd farval)
 /* =============================================================
  * Polygon state
  */
-
+#ifdef HAVE_ZBS
 static void r300PolygonOffset(GLcontext * ctx, GLfloat factor, GLfloat units)
 {
        r300ContextPtr rmesa = R300_CONTEXT(ctx);
@@ -832,7 +833,7 @@ static void r300PolygonOffset(GLcontext * ctx, GLfloat factor, GLfloat units)
        rmesa->hw.zbs.cmd[R300_ZBS_W_FACTOR] = r300PackFloat32(factor);
        rmesa->hw.zbs.cmd[R300_ZBS_W_CONSTANT] = r300PackFloat32(constant);
 }
-
+#endif
 
 /* Routing and texture-related */
 
@@ -1634,6 +1635,7 @@ static void r300InvalidateState(GLcontext * ctx, GLuint new_state)
        r300ResetHwState(r300);
 }
 
+void update_zbias(GLcontext * ctx, int prim);
 
 /**
  * Completely recalculates hardware state based on the Mesa state.
@@ -1790,11 +1792,11 @@ void r300ResetHwState(r300ContextPtr r300)
        r300->hw.unk4288.cmd[5] = 0x00000000;
 
        r300->hw.unk42A0.cmd[1] = 0x00000000;
-       
-#if 0
+#ifdef GA      
+#ifndef HAVE_ZBS
        r300->hw.unk42B4.cmd[1] = 0x00000000;
 #endif
-               
+#endif 
        r300->hw.unk42C0.cmd[1] = 0x4B7FFFFF;
        r300->hw.unk42C0.cmd[2] = 0x00000000;
 
@@ -1993,6 +1995,7 @@ void r300InitStateFuncs(struct dd_function_table* functions)
        functions->DepthRange = r300DepthRange;
        functions->PointSize = r300PointSize;
        
-       
+#ifdef HAVE_ZBS        
        functions->PolygonOffset = r300PolygonOffset;
+#endif
 }