[Mesa-dev] [PATCH 1/3] r600: add missing RAT registers and operations.

Dave Airlie airlied at gmail.com
Mon Jun 5 03:26:27 UTC 2017


From: Dave Airlie <airlied at redhat.com>

This just documents in the headers the RAT operation list,
and the RAT encoding for exports.

The immediate registers are used to point to buffers for the
RAT return values (_RTN instructions).
---
 src/gallium/drivers/r600/eg_sq.h      | 12 ++++++++++++
 src/gallium/drivers/r600/evergreend.h | 12 ++++++++++++
 src/gallium/drivers/r600/r600_sq.h    | 35 +++++++++++++++++++++++++++++++++++
 3 files changed, 59 insertions(+)

diff --git a/src/gallium/drivers/r600/eg_sq.h b/src/gallium/drivers/r600/eg_sq.h
index f542a0c..e56fdd6 100644
--- a/src/gallium/drivers/r600/eg_sq.h
+++ b/src/gallium/drivers/r600/eg_sq.h
@@ -176,6 +176,18 @@
 #define   G_SQ_CF_ALLOC_EXPORT_WORD0_ELEM_SIZE(x)                    (((x) >> 30) & 0x3)
 #define   C_SQ_CF_ALLOC_EXPORT_WORD0_ELEM_SIZE                       0x3FFFFFFF
 /* done */
+
+#define P_SQ_CF_ALLOC_EXPORT_WORD0_RAT
+#define   S_SQ_CF_ALLOC_EXPORT_WORD0_RAT_RAT_ID(x)                   (((x) & 0xF) << 0)
+#define   G_SQ_CF_ALLOC_EXPORT_WORD0_RAT_RAT_ID(x)                   (((x) >> 0) & 0xF)
+#define   C_SQ_CF_ALLOC_EXPORT_WORD0_RAT_RAT_ID                      0xFFFFFFF0
+#define   S_SQ_CF_ALLOC_EXPORT_WORD0_RAT_RAT_INST(x)                 (((x) & 0x3F) << 4)
+#define   G_SQ_CF_ALLOC_EXPORT_WORD0_RAT_RAT_INST(x)                 (((x) >> 4) & 0x3F)
+#define   C_SQ_CF_ALLOC_EXPORT_WORD0_RAT_RAT_INST                    0xFFFFFC0F
+#define   S_SQ_CF_ALLOC_EXPORT_WORD0_RAT_RAT_INDEX_MODE(x)           (((x) & 0x3) << 11)
+#define   G_SQ_CF_ALLOC_EXPORT_WORD0_RAT_RAT_INDEX_MODE(x)           (((x) >> 11) & 0x3)
+#define   C_SQ_CF_ALLOC_EXPORT_WORD0_RAT_RAT_INDEX_MODE              0xFFFFE7FF
+
 #define P_SQ_CF_ALLOC_EXPORT_WORD1
 #define   S_SQ_CF_ALLOC_EXPORT_WORD1_BURST_COUNT(x)                  (((unsigned)(x) & 0xF) << 16)
 #define   G_SQ_CF_ALLOC_EXPORT_WORD1_BURST_COUNT(x)                  (((x) >> 16) & 0xF)
diff --git a/src/gallium/drivers/r600/evergreend.h b/src/gallium/drivers/r600/evergreend.h
index 09ff320..cbcf801 100644
--- a/src/gallium/drivers/r600/evergreend.h
+++ b/src/gallium/drivers/r600/evergreend.h
@@ -2230,6 +2230,18 @@
 #define   S_028B98_STREAM_1_BUFFER_EN(x)		(((unsigned)(x) & 0x0F) << 4)
 #define   S_028B98_STREAM_2_BUFFER_EN(x)		(((unsigned)(x) & 0x0F) << 8)
 #define   S_028B98_STREAM_3_BUFFER_EN(x)		(((unsigned)(x) & 0x0F) << 12)
+#define R_028B9C_CB_IMMED0_BASE                      0x00028B9C
+#define R_028BA0_CB_IMMED1_BASE                      0x00028BA0
+#define R_028BA4_CB_IMMED2_BASE                      0x00028BA4
+#define R_028BA4_CB_IMMED3_BASE                      0x00028BA8
+#define R_028BA4_CB_IMMED4_BASE                      0x00028BAC
+#define R_028BA4_CB_IMMED5_BASE                      0x00028BB0
+#define R_028BA4_CB_IMMED6_BASE                      0x00028BB4
+#define R_028BA4_CB_IMMED7_BASE                      0x00028BB8
+#define R_028BA4_CB_IMMED8_BASE                      0x00028BBC
+#define R_028BA4_CB_IMMED9_BASE                      0x00028BC0
+#define R_028BA4_CB_IMMED10_BASE                     0x00028BC4
+#define R_028BA4_CB_IMMED11_BASE                     0x00028BC8
 #define R_028C00_PA_SC_LINE_CNTL                     0x00028C00
 #define   S_028C00_EXPAND_LINE_WIDTH(x)                (((unsigned)(x) & 0x1) << 9)
 #define   G_028C00_EXPAND_LINE_WIDTH(x)                (((x) >> 9) & 0x1)
diff --git a/src/gallium/drivers/r600/r600_sq.h b/src/gallium/drivers/r600/r600_sq.h
index d58c6f9..3526668 100644
--- a/src/gallium/drivers/r600/r600_sq.h
+++ b/src/gallium/drivers/r600/r600_sq.h
@@ -493,4 +493,39 @@
 #define SQ_VTX_FETCH_INSTANCE_DATA 1
 #define SQ_VTX_FETCH_NO_INDEX_OFFSET 2
 
+/* EG RAT functions */
+#define       V_RAT_INST_NOP                                         0
+#define       V_RAT_INST_STORE_TYPED                                 1
+#define       V_RAT_INST_CMPXCHG_INT                                 4
+#define       V_RAT_INST_ADD                                         7
+#define       V_RAT_INST_SUB                                         8
+#define       V_RAT_INST_RSUB                                        9
+#define       V_RAT_INST_MIN_INT                                     10
+#define       V_RAT_INST_MIN_UINT                                    11
+#define       V_RAT_INST_MAX_INT                                     12
+#define       V_RAT_INST_MAX_UINT                                    13
+#define       V_RAT_INST_AND                                         14
+#define       V_RAT_INST_OR                                          15
+#define       V_RAT_INST_XOR                                         16
+#define       V_RAT_INST_INC_UINT                                    18
+#define       V_RAT_INST_DEC_UINT                                    19
+#define       V_RAT_INST_STORE_DWORD                                 20
+#define       V_RAT_INST_STORE_SHORT                                 21
+#define       V_RAT_INST_STORE_BYTE                                  22
+#define       V_RAT_INST_NOP_RTN                                     32
+#define       V_RAT_INST_XCHG_RTN                                    34
+#define       V_RAT_INST_CMPXCHG_INT_RTN                             36
+#define       V_RAT_INST_ADD_RTN                                     39
+#define       V_RAT_INST_SUB_RTN                                     40
+#define       V_RAT_INST_RSUB_RTN                                    41
+#define       V_RAT_INST_MIN_INT_RTN                                 42
+#define       V_RAT_INST_MIN_UINT_RTN                                43
+#define       V_RAT_INST_MAX_INT_RTN                                 44
+#define       V_RAT_INST_MAX_UINT_RTN                                45
+#define       V_RAT_INST_AND_RTN                                     46
+#define       V_RAT_INST_OR_RTN                                      47
+#define       V_RAT_INST_XOR_RTN                                     48
+#define       V_RAT_INST_INC_UINT_RTN                                50
+#define       V_RAT_INST_DEC_UINT_RTN                                51
+
 #endif
-- 
2.9.3



More information about the mesa-dev mailing list