i965: Don't emit state if fall back to software rendering. fix #14116
authorXiang, Haihao <haihao.xiang@intel.com>
Fri, 1 Feb 2008 08:46:41 +0000 (16:46 +0800)
committerXiang, Haihao <haihao.xiang@intel.com>
Fri, 1 Feb 2008 08:48:16 +0000 (16:48 +0800)
src/mesa/drivers/dri/i965/brw_state_upload.c

index d35f94e620d02105c749325f658b60bb1ac5c0f3..73a6cee75ba84135cbb30ef1ff109a9901761db9 100644 (file)
@@ -207,6 +207,8 @@ void brw_validate_state( struct brw_context *brw )
    if (brw->state.dirty.brw & BRW_NEW_CONTEXT)
       brw_clear_batch_cache_flush(brw);
 
+   brw->intel.Fallback = 0;
+
    if (INTEL_DEBUG) {
       /* Debug version which enforces various sanity checks on the
        * state flags which are generated and checked to help ensure
@@ -225,6 +227,9 @@ void brw_validate_state( struct brw_context *brw )
                atom->dirty.cache);
         assert(atom->update);
 
+    if (brw->intel.Fallback)
+       break;
+
         if (check_state(state, &atom->dirty)) {
            atom->update( brw );
            
@@ -246,10 +251,14 @@ void brw_validate_state( struct brw_context *brw )
       for (i = 0; i < Elements(atoms); i++) {   
         const struct brw_tracked_state *atom = brw->state.atoms[i];
 
-        if (check_state(state, &atom->dirty))
+    if (brw->intel.Fallback)
+       break;
+        
+    if (check_state(state, &atom->dirty))
            atom->update( brw );
       }
    }
 
-   memset(state, 0, sizeof(*state));
+   if (!brw->intel.Fallback)
+      memset(state, 0, sizeof(*state));
 }