From e97f0bca5fab4ddff3199470294d82d60fcc0b62 Mon Sep 17 00:00:00 2001 From: "Xiang, Haihao" Date: Mon, 30 May 2011 16:30:48 +0800 Subject: [PATCH] sampler/render/constant cache unit since Sandybridge since Sandybrdige, there isn't a single function unit for data port read/write. Instead sampler/render/constant cache unit is introduced, data port read/write can be specified in a SEND instruction with different cache unit. To keep compatibility, currently data port read always uses sampler cache unit however data port write uses render cache unit Signed-off-by: Xiang, Haihao --- assembler/src/brw_defines.h | 5 ++++- assembler/src/gram.y | 12 ++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/assembler/src/brw_defines.h b/assembler/src/brw_defines.h index 60ab7703..aba1b998 100644 --- a/assembler/src/brw_defines.h +++ b/assembler/src/brw_defines.h @@ -704,10 +704,13 @@ #define BRW_MESSAGE_TARGET_SAMPLER 2 #define BRW_MESSAGE_TARGET_GATEWAY 3 #define BRW_MESSAGE_TARGET_DATAPORT_READ 4 -#define BRW_MESSAGE_TARGET_DATAPORT_WRITE 5 +#define BRW_MESSAGE_TARGET_DP_SC 4 /* data port sampler cache */ +#define BRW_MESSAGE_TARGET_DATAPORT_WRITE 5 +#define BRW_MESSAGE_TARGET_DP_RC 5 /* data port render cache */ #define BRW_MESSAGE_TARGET_URB 6 #define BRW_MESSAGE_TARGET_THREAD_SPAWNER 7 #define BRW_MESSAGE_TARGET_VME 8 +#define BRW_MESSAGE_TARGET_DP_CC 9 /* data port constant cache */ #define BRW_SAMPLER_RETURN_FORMAT_FLOAT32 0 #define BRW_SAMPLER_RETURN_FORMAT_UINT32 2 diff --git a/assembler/src/gram.y b/assembler/src/gram.y index be4e1320..8e2249cd 100644 --- a/assembler/src/gram.y +++ b/assembler/src/gram.y @@ -1035,14 +1035,14 @@ msgtarget: NULL_TOKEN { if (gen_level == 7) { $$.bits2.send_gen5.sfid = - BRW_MESSAGE_TARGET_DATAPORT_READ; + BRW_MESSAGE_TARGET_DP_SC; $$.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; + BRW_MESSAGE_TARGET_DP_SC; $$.bits3.generic_gen5.header_present = 1; $$.bits3.dp_read_gen6.binding_table_index = $3; $$.bits3.dp_read_gen6.msg_control = $7; @@ -1069,14 +1069,14 @@ msgtarget: NULL_TOKEN { if (gen_level == 7) { $$.bits2.send_gen5.sfid = - BRW_MESSAGE_TARGET_DATAPORT_WRITE; + BRW_MESSAGE_TARGET_DP_RC; $$.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; } else if (gen_level == 6) { $$.bits2.send_gen5.sfid = - BRW_MESSAGE_TARGET_DATAPORT_WRITE; + BRW_MESSAGE_TARGET_DP_RC; /* Sandybridge supports headerlesss message for render target write. * Currently the GFX assembler doesn't support it. so the program must provide * message header @@ -1114,14 +1114,14 @@ msgtarget: NULL_TOKEN { if (gen_level == 7) { $$.bits2.send_gen5.sfid = - BRW_MESSAGE_TARGET_DATAPORT_WRITE; + BRW_MESSAGE_TARGET_DP_RC; $$.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; + BRW_MESSAGE_TARGET_DP_RC; $$.bits3.generic_gen5.header_present = ($11 != 0); $$.bits3.dp_write_gen6.binding_table_index = $3; $$.bits3.dp_write_gen6.msg_control = $5;