i965: don't emit state when dri_bufmgr_check_aperture_space fails.
authorXiang, Haihao <haihao.xiang@intel.com>
Fri, 24 Oct 2008 08:05:48 +0000 (16:05 +0800)
committerXiang, Haihao <haihao.xiang@intel.com>
Fri, 24 Oct 2008 08:05:48 +0000 (16:05 +0800)
This ensures there is an unfilled batchbuffer used for emitting states again. Partial fix for #17964.

src/mesa/drivers/dri/i965/brw_curbe.c
src/mesa/drivers/dri/i965/brw_misc_state.c

index 7cddd3a7dee10713ec042ecbebb0c8abe093fca5..6ffa221d66999fa701f862f58ddf1591a6aa8ccc 100644 (file)
@@ -333,8 +333,10 @@ static void emit_constant_buffer(struct brw_context *brw)
       brw->curbe.curbe_bo,
    };
 
-   if (dri_bufmgr_check_aperture_space(aper_array, ARRAY_SIZE(aper_array)))
+   if (dri_bufmgr_check_aperture_space(aper_array, ARRAY_SIZE(aper_array))) {
       intel_batchbuffer_flush(intel->batch);
+      return;
+   }
 
    BEGIN_BATCH(2, IGNORE_CLIPRECTS);
    if (sz == 0) {
index 487c638ce21f44c5475dbbdfa343c4bfef12e892..afa8694ebb38f65794b4096ede71b5a7c159721e 100644 (file)
@@ -86,8 +86,10 @@ static void upload_binding_table_pointers(struct brw_context *brw)
       brw->wm.bind_bo,
    };
 
-   if (dri_bufmgr_check_aperture_space(aper_array, ARRAY_SIZE(aper_array)))
+   if (dri_bufmgr_check_aperture_space(aper_array, ARRAY_SIZE(aper_array))) {
       intel_batchbuffer_flush(intel->batch);
+      return;
+   }
 
    BEGIN_BATCH(6, IGNORE_CLIPRECTS);
    OUT_BATCH(CMD_BINDING_TABLE_PTRS << 16 | (6 - 2));
@@ -152,8 +154,10 @@ static void upload_psp_urb_cbs(struct brw_context *brw )
       brw->cc.state_bo,
    };
 
-   if (dri_bufmgr_check_aperture_space(aper_array, ARRAY_SIZE(aper_array)))
+   if (dri_bufmgr_check_aperture_space(aper_array, ARRAY_SIZE(aper_array))) {
       intel_batchbuffer_flush(intel->batch);
+      return;
+   }
 
    upload_pipelined_state_pointers(brw);
    brw_upload_urb_fence(brw);
@@ -216,8 +220,10 @@ static void emit_depthbuffer(struct brw_context *brw)
         return;
       }
 
-      if (dri_bufmgr_check_aperture_space(aper_array, ARRAY_SIZE(aper_array)))
+      if (dri_bufmgr_check_aperture_space(aper_array, ARRAY_SIZE(aper_array))) {
         intel_batchbuffer_flush(intel->batch);
+        return;
+      }
 
       BEGIN_BATCH(len, IGNORE_CLIPRECTS);
       OUT_BATCH(CMD_DEPTH_BUFFER << 16 | (len - 2));