aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2012-11-09 11:17:48 -0800
committerEric Anholt <[email protected]>2012-12-04 16:27:53 -0800
commit78e9c57a3ec6930e818b83af960dcb40d09daa5a (patch)
treee1f8f734a4161fdcad54a30c07088a70f8bf3680
parent8f05b2f2b022cb80c9e49d2ceb212d3b4f23905b (diff)
i965: Add a header_present flag for setting up dp read messages.
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.
-rw-r--r--src/mesa/drivers/dri/i965/brw_eu.h1
-rw-r--r--src/mesa/drivers/dri/i965/brw_eu_emit.c5
-rw-r--r--src/mesa/drivers/dri/i965/brw_vec4_emit.cpp2
3 files changed, 7 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_eu.h b/src/mesa/drivers/dri/i965/brw_eu.h
index fce4f15fbab..8c3a634e2cc 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 72fb5c5ae2c..8a629ff0b40 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 5637b220672..7609d92a72f 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_emit.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_emit.cpp
@@ -463,6 +463,7 @@ vec4_generator::generate_scratch_read(vec4_instruction *inst,
msg_type,
BRW_DATAPORT_READ_TARGET_RENDER_CACHE,
2, /* mlen */
+ true, /* header_present */
1 /* rlen */);
}
@@ -596,6 +597,7 @@ vec4_generator::generate_pull_constant_load(vec4_instruction *inst,
msg_type,
BRW_DATAPORT_READ_TARGET_DATA_CACHE,
2, /* mlen */
+ true, /* header_present */
1 /* rlen */);
}