Module: Mesa
Branch: master
Commit: 38707e1478a4b6f4687c583d06fbd68e22900735
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=38707e1478a4b6f4687c583d06fbd68e22900735

Author: Ben Widawsky <benjamin.widaw...@intel.com>
Date:   Tue Mar 31 15:49:42 2015 -0700

i965/fs: Create a has_side_effects for fs_inst

When an instruction has a side effect, it impacts the available options when
reordering an instruction. As the EOT flag is an implied write to the render
target in the FS, it can be considered a side effect.

This patch shouldn't actually have any impact on the current code since the EOT
flag implies that the opcode is already one with side effects,
FS_OPCODE_FB_WRITE. The next patch however will introduce an optimization
whereby the EOT flag can occur with an opcode SHADER_OPCODE_TEX, and as that
instruction will perform the same implied write to the render target, it cannot
be reordered.

v2: Remove extra whitespace (Matt)

Signed-off-by: Ben Widawsky <b...@bwidawsk.net>
Reviewed-by: Kenneth Graunke <kenn...@whitecape.org>
Reviewed-by: Matt Turner <matts...@gmail.com>

---

 src/mesa/drivers/dri/i965/brw_fs.cpp  |    6 ++++++
 src/mesa/drivers/dri/i965/brw_ir_fs.h |    1 +
 2 files changed, 7 insertions(+)

diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp 
b/src/mesa/drivers/dri/i965/brw_fs.cpp
index 8bd8da2..aea1ebb 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
@@ -531,6 +531,12 @@ fs_inst::can_do_source_mods(struct brw_context *brw)
    return true;
 }
 
+bool
+fs_inst::has_side_effects() const
+{
+   return this->eot || backend_instruction::has_side_effects();
+}
+
 void
 fs_reg::init()
 {
diff --git a/src/mesa/drivers/dri/i965/brw_ir_fs.h 
b/src/mesa/drivers/dri/i965/brw_ir_fs.h
index 9ef1261..30c19f4 100644
--- a/src/mesa/drivers/dri/i965/brw_ir_fs.h
+++ b/src/mesa/drivers/dri/i965/brw_ir_fs.h
@@ -225,6 +225,7 @@ public:
    bool is_partial_write() const;
    int regs_read(int arg) const;
    bool can_do_source_mods(struct brw_context *brw);
+   bool has_side_effects() const;
 
    bool reads_flag() const;
    bool writes_flag() const;

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to