diff options
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_fs.cpp | 3 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_fs_visitor.cpp | 17 |
2 files changed, 15 insertions, 5 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp index 9ea7339f581..273761b0d22 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp @@ -2784,9 +2784,6 @@ fs_visitor::run() if (failed) return false; - if (INTEL_DEBUG & DEBUG_SHADER_TIME) - emit_shader_time_end(); - emit_fb_writes(); split_virtual_grfs(); diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp index 735a33d856b..857f956232e 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp @@ -2263,6 +2263,9 @@ fs_visitor::emit_fb_writes() inst->saturate = c->key.clamp_fragment_color; } + if (INTEL_DEBUG & DEBUG_SHADER_TIME) + emit_shader_time_end(); + fs_inst *inst = emit(FS_OPCODE_FB_WRITE); inst->target = 0; inst->base_mrf = base_mrf; @@ -2297,6 +2300,14 @@ fs_visitor::emit_fb_writes() for (unsigned i = 0; i < this->output_components[target]; i++) emit_color_write(target, i, write_color_mrf); + bool eot = false; + if (target == c->key.nr_color_regions - 1) { + eot = true; + + if (INTEL_DEBUG & DEBUG_SHADER_TIME) + emit_shader_time_end(); + } + fs_inst *inst = emit(FS_OPCODE_FB_WRITE); inst->target = target; inst->base_mrf = base_mrf; @@ -2304,8 +2315,7 @@ fs_visitor::emit_fb_writes() inst->mlen = nr - base_mrf - reg_width; else inst->mlen = nr - base_mrf; - if (target == c->key.nr_color_regions - 1) - inst->eot = true; + inst->eot = eot; inst->header_present = header_present; } @@ -2316,6 +2326,9 @@ fs_visitor::emit_fb_writes() */ emit_color_write(0, 3, color_mrf); + if (INTEL_DEBUG & DEBUG_SHADER_TIME) + emit_shader_time_end(); + fs_inst *inst = emit(FS_OPCODE_FB_WRITE); inst->base_mrf = base_mrf; inst->mlen = nr - base_mrf; |