i965: Remove my "safety counter" code from loops.
authorEric Anholt <eric@anholt.net>
Wed, 29 Sep 2010 23:20:48 +0000 (16:20 -0700)
committerEric Anholt <eric@anholt.net>
Wed, 29 Sep 2010 23:40:31 +0000 (16:40 -0700)
I've screwed this up enough times that I don't think it's worth it.
This time, it was that I was doing it once per top-level body
instruction instead of just once at the end of the loop body.

src/mesa/drivers/dri/i965/brw_fs.cpp

index b00930d5cf4feb69d16f82207e8c3dba6353e262..efbb4c6692066b5471f7e2e2ba02084f935d36f2 100644 (file)
@@ -1400,12 +1400,6 @@ fs_visitor::visit(ir_loop *ir)
       }
    }
 
-   /* Start a safety counter.  If the user messed up their loop
-    * counting, we don't want to hang the GPU.
-    */
-   fs_reg max_iter = fs_reg(this, glsl_type::int_type);
-   emit(fs_inst(BRW_OPCODE_MOV, max_iter, fs_reg(10000)));
-
    emit(fs_inst(BRW_OPCODE_DO));
 
    if (ir->to) {
@@ -1445,17 +1439,9 @@ fs_visitor::visit(ir_loop *ir)
 
    foreach_iter(exec_list_iterator, iter, ir->body_instructions) {
       ir_instruction *ir = (ir_instruction *)iter.get();
-      fs_inst *inst;
 
       this->base_ir = ir;
       ir->accept(this);
-
-      /* Check the maximum loop iters counter. */
-      inst = emit(fs_inst(BRW_OPCODE_ADD, max_iter, max_iter, fs_reg(-1)));
-      inst->conditional_mod = BRW_CONDITIONAL_Z;
-
-      inst = emit(fs_inst(BRW_OPCODE_BREAK));
-      inst->predicated = true;
    }
 
    if (ir->increment) {