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);