From 78e9c57a3ec6930e818b83af960dcb40d09daa5a Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Fri, 9 Nov 2012 11:17:48 -0800 Subject: [PATCH] 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. --- 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 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 */); } -- 2.30.2