As of gen7, we can skip the header on some messages, and this can make
optimization on those messages much nicer when you've got GRFs instead of MRFs
as the source.
---
 src/mesa/drivers/dri/i965/brw_eu.h          |    1 +
 src/mesa/drivers/dri/i965/brw_eu_emit.c     |    5 ++++-
 src/mesa/drivers/dri/i965/brw_vec4_emit.cpp |    2 ++
 3 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/mesa/drivers/dri/i965/brw_eu.h 
b/src/mesa/drivers/dri/i965/brw_eu.h
index fce4f15..8c3a634 100644
--- a/src/mesa/drivers/dri/i965/brw_eu.h
+++ b/src/mesa/drivers/dri/i965/brw_eu.h
@@ -907,6 +907,7 @@ void brw_set_dp_read_message(struct brw_compile *p,
                             GLuint msg_type,
                             GLuint target_cache,
                             GLuint msg_length,
+                             bool header_present,
                             GLuint response_length);
 
 void brw_set_dp_write_message(struct brw_compile *p,
diff --git a/src/mesa/drivers/dri/i965/brw_eu_emit.c 
b/src/mesa/drivers/dri/i965/brw_eu_emit.c
index 72fb5c5..8a629ff 100644
--- a/src/mesa/drivers/dri/i965/brw_eu_emit.c
+++ b/src/mesa/drivers/dri/i965/brw_eu_emit.c
@@ -620,6 +620,7 @@ brw_set_dp_read_message(struct brw_compile *p,
                        GLuint msg_type,
                        GLuint target_cache,
                        GLuint msg_length,
+                        bool header_present,
                        GLuint response_length)
 {
    struct brw_context *brw = p->brw;
@@ -638,7 +639,7 @@ brw_set_dp_read_message(struct brw_compile *p,
    }
 
    brw_set_message_descriptor(p, insn, sfid, msg_length, response_length,
-                             true, false);
+                             header_present, false);
 
    if (intel->gen >= 7) {
       insn->bits3.gen7_dp.binding_table_index = binding_table_index;
@@ -1967,6 +1968,7 @@ brw_oword_block_read_scratch(struct brw_compile *p,
                              BRW_DATAPORT_READ_MESSAGE_OWORD_BLOCK_READ, /* 
msg_type */
                              BRW_DATAPORT_READ_TARGET_RENDER_CACHE,
                              1, /* msg_length */
+                              true, /* header_present */
                              rlen);
    }
 }
@@ -2024,6 +2026,7 @@ void brw_oword_block_read(struct brw_compile *p,
                           BRW_DATAPORT_READ_MESSAGE_OWORD_BLOCK_READ,
                           BRW_DATAPORT_READ_TARGET_DATA_CACHE,
                           1, /* msg_length */
+                           true, /* header_present */
                           1); /* response_length (1 reg, 2 owords!) */
 
    brw_pop_insn_state(p);
diff --git a/src/mesa/drivers/dri/i965/brw_vec4_emit.cpp 
b/src/mesa/drivers/dri/i965/brw_vec4_emit.cpp
index 812fa47..baffdb6 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_emit.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_emit.cpp
@@ -567,6 +567,7 @@ vec4_visitor::generate_scratch_read(vec4_instruction *inst,
                           msg_type,
                           BRW_DATAPORT_READ_TARGET_RENDER_CACHE,
                           2, /* mlen */
+                           true, /* header_present */
                           1 /* rlen */);
 }
 
@@ -700,6 +701,7 @@ vec4_visitor::generate_pull_constant_load(vec4_instruction 
*inst,
                           msg_type,
                           BRW_DATAPORT_READ_TARGET_DATA_CACHE,
                           2, /* mlen */
+                           true, /* header_present */
                           1 /* rlen */);
 }
 
-- 
1.7.10.4

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

Reply via email to