diff options
author | Eric Anholt <[email protected]> | 2012-11-09 11:17:48 -0800 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2012-12-04 16:27:53 -0800 |
commit | 78e9c57a3ec6930e818b83af960dcb40d09daa5a (patch) | |
tree | e1f8f734a4161fdcad54a30c07088a70f8bf3680 | |
parent | 8f05b2f2b022cb80c9e49d2ceb212d3b4f23905b (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.h | 1 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_eu_emit.c | 5 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_vec4_emit.cpp | 2 |
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 */); } |