diff --git a/assembler/src/brw_structs.h b/assembler/src/brw_structs.h index cb421661..045b729a 100644 --- a/assembler/src/brw_structs.h +++ b/assembler/src/brw_structs.h @@ -1389,6 +1389,18 @@ struct brw_instruction GLuint end_of_thread:1; } sampler_gen5; + struct { + GLuint binding_table_index:8; + GLuint sampler:4; + GLuint msg_type:5; + GLuint simd_mode:2; + GLuint header_present:1; + GLuint response_length:5; + GLuint msg_length:4; + GLuint pad1:2; + GLuint end_of_thread:1; + } sampler_gen7; + struct { GLuint binding_table_index:8; GLuint msg_control:4; diff --git a/assembler/src/gram.y b/assembler/src/gram.y index b3120be6..014b403a 100644 --- a/assembler/src/gram.y +++ b/assembler/src/gram.y @@ -951,7 +951,13 @@ msgtarget: NULL_TOKEN | SAMPLER LPAREN INTEGER COMMA INTEGER COMMA sampler_datatype RPAREN { - if (gen_level >= 5) { + if (gen_level >= 7) { + $$.bits2.send_gen5.sfid = BRW_MESSAGE_TARGET_SAMPLER; + $$.bits3.generic_gen5.header_present = 1; /* ??? */ + $$.bits3.sampler_gen7.binding_table_index = $3; + $$.bits3.sampler_gen7.sampler = $5; + $$.bits3.sampler_gen7.simd_mode = 2; /* SIMD16, maybe we should add a new parameter */ + } else if (gen_level >= 5) { $$.bits2.send_gen5.sfid = BRW_MESSAGE_TARGET_SAMPLER; $$.bits3.generic_gen5.header_present = 1; /* ??? */ $$.bits3.sampler_gen5.binding_table_index = $3;