i965/fs: Remove force_sechalf stack
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 1 Jan 2013 23:09:26 +0000 (15:09 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Sat, 16 Nov 2013 17:12:57 +0000 (09:12 -0800)
Only Gen4 color write setup uses the force_sechalf flag, and it only
sets it on a single instruction.  It also already has to get a pointer
to the instruction and manually set the saturate flag, so we may as well
just set force_sechalf the same way and avoid the complexity of a stack.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
Acked-by: Anuj Phogat <anuj.phogat@gmail.com>
src/mesa/drivers/dri/i965/brw_fs.cpp
src/mesa/drivers/dri/i965/brw_fs.h
src/mesa/drivers/dri/i965/brw_fs_visitor.cpp

index 795e01efdfbf4fa5b3787d1076c9280a39f63cbd..8b3f8df26f923b7d002027fe4e71c517418c8975 100644 (file)
@@ -691,19 +691,6 @@ fs_visitor::pop_force_uncompressed()
    assert(force_uncompressed_stack >= 0);
 }
 
-void
-fs_visitor::push_force_sechalf()
-{
-   force_sechalf_stack++;
-}
-
-void
-fs_visitor::pop_force_sechalf()
-{
-   force_sechalf_stack--;
-   assert(force_sechalf_stack >= 0);
-}
-
 /**
  * Returns true if the instruction has a flag that means it won't
  * update an entire destination register.
@@ -3311,7 +3298,6 @@ fs_visitor::run()
       }
    }
    assert(force_uncompressed_stack == 0);
-   assert(force_sechalf_stack == 0);
 
    /* This must come after all optimization and register allocation, since
     * it inserts dead code that happens to have side effects, and it does
index 529bd3a558acbab86f3ada4f372ece8a3d5b41b1..7991b870a995d37cb23d2b08ccc99f8549537c4c 100644 (file)
@@ -331,8 +331,6 @@ public:
 
    void push_force_uncompressed();
    void pop_force_uncompressed();
-   void push_force_sechalf();
-   void pop_force_sechalf();
 
    void emit_dummy_fs();
    fs_reg *emit_fragcoord_interpolation(ir_variable *ir);
@@ -489,7 +487,6 @@ public:
    const unsigned dispatch_width; /**< 8 or 16 */
 
    int force_uncompressed_stack;
-   int force_sechalf_stack;
 };
 
 /**
index 4f1036a12cb98310c694bef14d464338e49b7408..9eb9a9d07acac39548ab22a7fce041857f04651c 100644 (file)
@@ -2393,8 +2393,6 @@ fs_visitor::emit(fs_inst *inst)
 {
    if (force_uncompressed_stack > 0)
       inst->force_uncompressed = true;
-   else if (force_sechalf_stack > 0)
-      inst->force_sechalf = true;
 
    inst->annotation = this->current_annotation;
    inst->ir = this->base_ir;
@@ -2599,12 +2597,11 @@ fs_visitor::emit_color_write(int target, int index, int first_color_mrf)
         inst->saturate = c->key.clamp_fragment_color;
         pop_force_uncompressed();
 
-        push_force_sechalf();
         color.sechalf = true;
         inst = emit(MOV(fs_reg(MRF, first_color_mrf + index + 4, color.type),
                          color));
+        inst->force_sechalf = true;
         inst->saturate = c->key.clamp_fragment_color;
-        pop_force_sechalf();
         color.sechalf = false;
       }
    }
@@ -2923,7 +2920,6 @@ fs_visitor::fs_visitor(struct brw_context *brw,
    this->nr_params_remap = 0;
 
    this->force_uncompressed_stack = 0;
-   this->force_sechalf_stack = 0;
 
    this->spilled_any_registers = false;