r200: Remove unnecessary calls to rcommonEnsureCmdBufSpace.
authorPauli Nieminen <suokkos@gmail.com>
Tue, 11 Aug 2009 21:13:00 +0000 (00:13 +0300)
committerPauli Nieminen <suokkos@gmail.com>
Fri, 21 Aug 2009 16:12:29 +0000 (19:12 +0300)
Calling EnsureCmdBufSpace is not required because rendering pipeline has to quarentee free space.

Signed-off-by: Pauli Nieminen <suokkos@gmail.com>
src/mesa/drivers/dri/r200/r200_tcl.c
src/mesa/drivers/dri/radeon/radeon_common.c

index 455a4bbd6b1871bc8df37d93f3e35aa118be4c14..196cc2ab629fb359dd91d6856e54802301553811 100644 (file)
@@ -156,8 +156,6 @@ static GLushort *r200AllocElts( r200ContextPtr rmesa, GLuint nr )
       if (rmesa->radeon.dma.flush)
         rmesa->radeon.dma.flush( rmesa->radeon.glCtx );
 
-      rcommonEnsureCmdBufSpace(&rmesa->radeon, AOS_BUFSZ(rmesa->radeon.tcl.aos_count), __FUNCTION__);
-
       r200EmitAOS( rmesa,
                   rmesa->radeon.tcl.aos_count, 0 );
 
@@ -187,9 +185,6 @@ static void r200EmitPrim( GLcontext *ctx,
    r200TclPrimitive( ctx, prim, hwprim );
    
    //   fprintf(stderr,"Emit prim %d\n", rmesa->radeon.tcl.aos_count);
-   rcommonEnsureCmdBufSpace( &rmesa->radeon,
-                            AOS_BUFSZ(rmesa->radeon.tcl.aos_count) +
-                            rmesa->radeon.hw.max_state_size + VBUF_BUFSZ, __FUNCTION__ );
 
    r200EmitAOS( rmesa,
                rmesa->radeon.tcl.aos_count,
index 4240ec5f18a580c9d348eb334b697802abafe6a8..f0cf31c55f04be32ff0b336ce531fa0feda34a02 100644 (file)
@@ -1032,12 +1032,6 @@ void radeonEmitState(radeonContextPtr radeon)
        if (radeon->cmdbuf.cs->cdw && !radeon->hw.is_dirty && !radeon->hw.all_dirty)
                return;
 
-       /* To avoid going across the entire set of states multiple times, just check
-        * for enough space for the case of emitting all state, and inline the
-        * radeonAllocCmdBuf code here without all the checks.
-        */
-       rcommonEnsureCmdBufSpace(radeon, radeon->hw.max_state_size, __FUNCTION__);
-
        if (!radeon->cmdbuf.cs->cdw) {
                if (RADEON_DEBUG & DEBUG_STATE)
                        fprintf(stderr, "Begin reemit state\n");
@@ -1197,10 +1191,12 @@ int rcommonFlushCmdBuf(radeonContextPtr rmesa, const char *caller)
  */
 void rcommonEnsureCmdBufSpace(radeonContextPtr rmesa, int dwords, const char *caller)
 {
-       if ((rmesa->cmdbuf.cs->cdw + dwords + 128) > rmesa->cmdbuf.size ||
-           radeon_cs_need_flush(rmesa->cmdbuf.cs)) {
-               rcommonFlushCmdBuf(rmesa, caller);
-       }
+   if ((rmesa->cmdbuf.cs->cdw + dwords + 128) > rmesa->cmdbuf.size
+        || radeon_cs_need_flush(rmesa->cmdbuf.cs)) {
+      /* If we try to flush empty buffer there is too big rendering operation. */
+      assert(rmesa->cmdbuf.cs->cdw);
+      rcommonFlushCmdBuf(rmesa, caller);
+   }
 }
 
 void rcommonInitCmdBuf(radeonContextPtr rmesa)
@@ -1275,7 +1271,6 @@ void rcommonBeginBatch(radeonContextPtr rmesa, int n,
                       const char *function,
                       int line)
 {
-       rcommonEnsureCmdBufSpace(rmesa, n, function);
        if (!rmesa->cmdbuf.cs->cdw && dostate) {
                if (RADEON_DEBUG & DEBUG_IOCTL)
                        fprintf(stderr, "Reemit state after flush (from %s)\n", function);