intel_batchbuffer_flush: Don't assert cliprects when lock is not held.
authorMichel Dänzer <michel@tungstengraphics.com>
Thu, 14 Dec 2006 09:49:26 +0000 (10:49 +0100)
committerMichel Dänzer <michel@tungstengraphics.com>
Thu, 14 Dec 2006 10:01:39 +0000 (11:01 +0100)
This is a legitimate situation when copying texture data between mipmap trees.

src/mesa/drivers/dri/i915tex/intel_batchbuffer.c

index b4e0b74..be2750d 100644 (file)
@@ -252,6 +252,7 @@ intel_batchbuffer_flush(struct intel_batchbuffer *batch)
 {
    struct intel_context *intel = batch->intel;
    GLuint used = batch->ptr - batch->map;
+   GLboolean was_locked = intel->locked;
 
    if (used == 0)
       return batch->last_fence;
@@ -278,17 +279,14 @@ intel_batchbuffer_flush(struct intel_batchbuffer *batch)
    /* TODO: Just pass the relocation list and dma buffer up to the
     * kernel.
     */
-   if (!intel->locked) {
-      assert(!(batch->flags & INTEL_BATCH_NO_CLIPRECTS));
-
+   if (!was_locked)
       LOCK_HARDWARE(intel);
-      do_flush_locked(batch, used, GL_FALSE, GL_TRUE);
+
+   do_flush_locked(batch, used, !(batch->flags & INTEL_BATCH_CLIPRECTS),
+                  GL_FALSE);
+
+   if (!was_locked)
       UNLOCK_HARDWARE(intel);
-   }
-   else {
-      GLboolean ignore_cliprects = !(batch->flags & INTEL_BATCH_CLIPRECTS);
-      do_flush_locked(batch, used, ignore_cliprects, GL_FALSE);
-   }
 
    /* Reset the buffer:
     */