r200: fix up swtcl/tcl flushes
authorDave Airlie <airlied@linux.ie>
Thu, 22 Jan 2009 12:49:16 +0000 (22:49 +1000)
committerDave Airlie <airlied@linux.ie>
Thu, 22 Jan 2009 12:50:36 +0000 (22:50 +1000)
src/mesa/drivers/dri/r200/r200_cmdbuf.c
src/mesa/drivers/dri/r200/r200_context.h
src/mesa/drivers/dri/r200/r200_ioctl.c
src/mesa/drivers/dri/r200/r200_ioctl.h
src/mesa/drivers/dri/r200/r200_swtcl.c
src/mesa/drivers/dri/r200/r200_tcl.c

index 5768f39..fb8ddda 100644 (file)
@@ -272,8 +272,9 @@ static void r200FireEB(r200ContextPtr rmesa, int vertex_count, int type)
        }
 }
 
-void r200FlushElts( r200ContextPtr rmesa )
+void r200FlushElts(GLcontext *ctx)
 {
+  r200ContextPtr rmesa = R200_CONTEXT(ctx);
    int dwords;
    int nr, elt_used = rmesa->tcl.elt_used;
 
index 607997f..62847be 100644 (file)
@@ -548,7 +548,7 @@ struct r200_tcl_info {
    int elt_dma_offset; /** Offset into this buffer object, in bytes */
    int elt_used;
 
-   void (*flush) (r200ContextPtr);
+   void (*flush) (GLcontext *ctx);
    struct radeon_dma_region vertex_data[15];
 };
 
@@ -606,7 +606,7 @@ struct r200_swtcl_info {
    GLboolean needproj;
 
    struct radeon_bo *bo;
-   void (*flush) (r200ContextPtr);
+   void (*flush) (GLcontext *ctx);
 };
 
 
index 65786be..744a2d8 100644 (file)
@@ -277,11 +277,11 @@ void r200Flush( GLcontext *ctx )
    if (R200_DEBUG & DEBUG_IOCTL)
       fprintf(stderr, "%s\n", __FUNCTION__);
 
-   if (rmesa->dma.flush)
-      rmesa->dma.flush( ctx );
+   if (rmesa->swtcl.flush)
+      rmesa->swtcl.flush( ctx );
 
    if (rmesa->tcl.flush)
-      rmesa->tcl.flush( rmesa );
+      rmesa->tcl.flush( ctx );
 
    r200EmitState( rmesa );
 
index e3f0b66..ccc15c5 100644 (file)
@@ -53,8 +53,7 @@ extern void r200EmitVbufPrim( r200ContextPtr rmesa,
                                GLuint primitive,
                                GLuint vertex_nr );
 
-extern void r200FlushElts(r200ContextPtr rmesa);
-
+extern void r200FlushElts(GLcontext *ctx);
 
 extern GLushort *r200AllocEltsOpenEnded( r200ContextPtr rmesa,
                                           GLuint primitive,
@@ -113,8 +112,8 @@ void r200SetUpAtomList( r200ContextPtr rmesa );
  */
 #define R200_NEWPRIM( rmesa )                  \
 do {                                           \
-   if ( rmesa->dma.flush )                     \
-      rmesa->dma.flush( rmesa->radeon.glCtx ); \
+   if ( rmesa->swtcl.flush )                   \
+      rmesa->swtcl.flush( rmesa->radeon.glCtx );       \
 } while (0)
 
 /* Can accomodate several state changes and primitive changes without
@@ -154,7 +153,7 @@ static INLINE int R200_DB_STATECHANGE(
  */
 #define R200_FIREVERTICES( rmesa )                     \
 do {                                                   \
-   if ( rmesa->store.cmd_used || rmesa->dma.flush ) {  \
+   if ( rmesa->swtcl.flush || rmesa->tcl.flush ) {     \
       r200Flush( rmesa->radeon.glCtx );                        \
    }                                                   \
 } while (0)
index 7275886..663e4ae 100644 (file)
@@ -210,10 +210,6 @@ static void r200RenderStart( GLcontext *ctx )
    r200ContextPtr rmesa = R200_CONTEXT( ctx );
 
    r200SetVertexFormat( ctx );
-
-   if (rmesa->dma.flush != 0 && 
-       rmesa->dma.flush != flush_last_swtcl_prim)
-      rmesa->dma.flush( ctx );
 }
 
 
@@ -283,7 +279,7 @@ static void flush_last_swtcl_prim(GLcontext *ctx)
    if (R200_DEBUG & DEBUG_IOCTL)
       fprintf(stderr, "%s\n", __FUNCTION__);
 
-   rmesa->dma.flush = NULL;
+   rmesa->swtcl.flush = NULL;
 
    radeon_bo_unmap(rmesa->swtcl.bo);
    rcommonEnsureCmdBufSpace(rmesa,
index 10c0dac..9562c8b 100644 (file)
@@ -155,7 +155,7 @@ static GLushort *r200AllocElts( r200ContextPtr rmesa, GLuint nr )
    }
    else {
       if (rmesa->tcl.flush)
-        rmesa->tcl.flush( rmesa );
+        rmesa->tcl.flush( rmesa->radeon.glCtx );
 
       rcommonEnsureCmdBufSpace(rmesa, AOS_BUFSZ(rmesa->tcl.nr_aos_components));
 
@@ -564,10 +564,10 @@ static void transition_to_hwtnl( GLcontext *ctx )
 
    tnl->Driver.NotifyMaterialChange = r200UpdateMaterial;
 
-   if ( rmesa->dma.flush )                     
-      rmesa->dma.flush( rmesa->radeon.glCtx ); 
+   if ( rmesa->swtcl.flush )                   
+      rmesa->swtcl.flush( rmesa->radeon.glCtx );       
 
-   rmesa->dma.flush = NULL;
+   rmesa->swtcl.flush = NULL;
    
    R200_STATECHANGE( rmesa, vap );
    rmesa->hw.vap.cmd[VAP_SE_VAP_CNTL] |= R200_VAP_TCL_ENABLE;