From c8d6bf353eb46ac109baeba3bd053e31a6a7835f Mon Sep 17 00:00:00 2001 From: "Xiang, Haihao" Date: Mon, 23 May 2011 13:32:32 +0800 Subject: [PATCH] Add support for data port read/write on Ivybridge Signed-off-by: Xiang, Haihao --- assembler/src/brw_structs.h | 12 ++++++++++++ assembler/src/gram.y | 27 ++++++++++++++++++++++++--- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/assembler/src/brw_structs.h b/assembler/src/brw_structs.h index 1618cf3b..cb421661 100644 --- a/assembler/src/brw_structs.h +++ b/assembler/src/brw_structs.h @@ -1441,6 +1441,18 @@ struct brw_instruction GLuint end_of_thread:1; } dp_write_gen6; + struct { + GLuint binding_table_index:8; + GLuint msg_control:6; + GLuint msg_type:4; + GLuint pad0:1; + GLuint header_present:1; + GLuint response_length:5; + GLuint msg_length:4; + GLuint pad1:2; + GLuint end_of_thread:1; + } dp_gen7; + struct { GLuint opcode:1; GLuint requester_type:1; diff --git a/assembler/src/gram.y b/assembler/src/gram.y index 61aa17e2..b3120be6 100644 --- a/assembler/src/gram.y +++ b/assembler/src/gram.y @@ -1017,7 +1017,14 @@ msgtarget: NULL_TOKEN | READ LPAREN INTEGER COMMA INTEGER COMMA INTEGER COMMA INTEGER RPAREN { - if (gen_level == 6) { + if (gen_level == 7) { + $$.bits2.send_gen5.sfid = + BRW_MESSAGE_TARGET_DATAPORT_READ; + $$.bits3.generic_gen5.header_present = 1; + $$.bits3.dp_gen7.binding_table_index = $3; + $$.bits3.dp_gen7.msg_control = $7; + $$.bits3.dp_gen7.msg_type = $9; + } else if (gen_level == 6) { $$.bits2.send_gen5.sfid = BRW_MESSAGE_TARGET_DATAPORT_READ; $$.bits3.generic_gen5.header_present = 1; @@ -1044,7 +1051,14 @@ msgtarget: NULL_TOKEN | WRITE LPAREN INTEGER COMMA INTEGER COMMA INTEGER COMMA INTEGER RPAREN { - if (gen_level == 6) { + if (gen_level == 7) { + $$.bits2.send_gen5.sfid = + BRW_MESSAGE_TARGET_DATAPORT_WRITE; + $$.bits3.generic_gen5.header_present = 1; + $$.bits3.dp_gen7.binding_table_index = $3; + $$.bits3.dp_gen7.msg_control = $5; + $$.bits3.dp_gen7.msg_type = $7; + } if (gen_level == 6) { $$.bits2.send_gen5.sfid = BRW_MESSAGE_TARGET_DATAPORT_WRITE; /* Sandybridge supports headerlesss message for render target write. @@ -1082,7 +1096,14 @@ msgtarget: NULL_TOKEN | WRITE LPAREN INTEGER COMMA INTEGER COMMA INTEGER COMMA INTEGER COMMA INTEGER RPAREN { - if (gen_level == 6) { + if (gen_level == 7) { + $$.bits2.send_gen5.sfid = + BRW_MESSAGE_TARGET_DATAPORT_WRITE; + $$.bits3.generic_gen5.header_present = ($11 != 0); + $$.bits3.dp_gen7.binding_table_index = $3; + $$.bits3.dp_gen7.msg_control = $5; + $$.bits3.dp_gen7.msg_type = $7; + } else if (gen_level == 6) { $$.bits2.send_gen5.sfid = BRW_MESSAGE_TARGET_DATAPORT_WRITE; $$.bits3.generic_gen5.header_present = ($11 != 0);