77cd8f1588b31198eaa221735cdea6c8805079a7
[mesa.git] / src / gallium / drivers / r600 / evergreend.h
1 /*
2 * Copyright 2010 Jerome Glisse <glisse@freedesktop.org>
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * on the rights to use, copy, modify, merge, publish, distribute, sub
8 * license, and/or sell copies of the Software, and to permit persons to whom
9 * the Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice (including the next
12 * paragraph) shall be included in all copies or substantial portions of the
13 * Software.
14 *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
18 * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
19 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
20 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
21 * USE OR OTHER DEALINGS IN THE SOFTWARE.
22 *
23 * Authors:
24 * Jerome Glisse
25 */
26 #ifndef EVERGREEND_H
27 #define EVERGREEND_H
28
29 #define R600_TEXEL_PITCH_ALIGNMENT_MASK 0x7
30
31 #define PKT3_NOP 0x10
32 #define PKT3_INDIRECT_BUFFER_END 0x17
33 #define PKT3_SET_PREDICATION 0x20
34 #define PKT3_REG_RMW 0x21
35 #define PKT3_COND_EXEC 0x22
36 #define PKT3_PRED_EXEC 0x23
37 #define PKT3_START_3D_CMDBUF 0x24
38 #define PKT3_DRAW_INDEX_2 0x27
39 #define PKT3_CONTEXT_CONTROL 0x28
40 #define PKT3_DRAW_INDEX_IMMD_BE 0x29
41 #define PKT3_INDEX_TYPE 0x2A
42 #define PKT3_DRAW_INDEX 0x2B
43 #define PKT3_DRAW_INDEX_AUTO 0x2D
44 #define PKT3_DRAW_INDEX_IMMD 0x2E
45 #define PKT3_NUM_INSTANCES 0x2F
46 #define PKT3_STRMOUT_BUFFER_UPDATE 0x34
47 #define PKT3_INDIRECT_BUFFER_MP 0x38
48 #define PKT3_MEM_SEMAPHORE 0x39
49 #define PKT3_MPEG_INDEX 0x3A
50 #define PKT3_WAIT_REG_MEM 0x3C
51 #define PKT3_MEM_WRITE 0x3D
52 #define PKT3_INDIRECT_BUFFER 0x32
53 #define PKT3_CP_INTERRUPT 0x40
54 #define PKT3_SURFACE_SYNC 0x43
55 #define PKT3_ME_INITIALIZE 0x44
56 #define PKT3_COND_WRITE 0x45
57 #define PKT3_EVENT_WRITE 0x46
58 #define PKT3_EVENT_WRITE_EOP 0x47
59 #define PKT3_ONE_REG_WRITE 0x57
60 #define PKT3_SET_CONFIG_REG 0x68
61 #define PKT3_SET_CONTEXT_REG 0x69
62 #define PKT3_SET_ALU_CONST 0x6A
63 #define PKT3_SET_BOOL_CONST 0x6B
64 #define PKT3_SET_LOOP_CONST 0x6C
65 #define PKT3_SET_RESOURCE 0x6D
66 #define PKT3_SET_SAMPLER 0x6E
67 #define PKT3_SET_CTL_CONST 0x6F
68 #define PKT3_SURFACE_BASE_UPDATE 0x73
69
70 #define PKT_TYPE_S(x) (((x) & 0x3) << 30)
71 #define PKT_TYPE_G(x) (((x) >> 30) & 0x3)
72 #define PKT_TYPE_C 0x3FFFFFFF
73 #define PKT_COUNT_S(x) (((x) & 0x3FFF) << 16)
74 #define PKT_COUNT_G(x) (((x) >> 16) & 0x3FFF)
75 #define PKT_COUNT_C 0xC000FFFF
76 #define PKT0_BASE_INDEX_S(x) (((x) & 0xFFFF) << 0)
77 #define PKT0_BASE_INDEX_G(x) (((x) >> 0) & 0xFFFF)
78 #define PKT0_BASE_INDEX_C 0xFFFF0000
79 #define PKT3_IT_OPCODE_S(x) (((x) & 0xFF) << 8)
80 #define PKT3_IT_OPCODE_G(x) (((x) >> 8) & 0xFF)
81 #define PKT3_IT_OPCODE_C 0xFFFF00FF
82 #define PKT0(index, count) (PKT_TYPE_S(0) | PKT0_BASE_INDEX_S(index) | PKT_COUNT_S(count))
83 #define PKT3(op, count) (PKT_TYPE_S(3) | PKT3_IT_OPCODE_S(op) | PKT_COUNT_S(count))
84
85 /* Registers */
86 #define R_008C00_SQ_CONFIG 0x00008C00
87 #define S_008C00_VC_ENABLE(x) (((x) & 0x1) << 0)
88 #define G_008C00_VC_ENABLE(x) (((x) >> 0) & 0x1)
89 #define C_008C00_VC_ENABLE(x) 0xFFFFFFFE
90 #define S_008C00_EXPORT_SRC_C(x) (((x) & 0x1) << 1)
91 #define G_008C00_EXPORT_SRC_C(x) (((x) >> 1) & 0x1)
92 #define C_008C00_EXPORT_SRC_C(x) 0xFFFFFFFD
93 /* different */
94 #define S_008C00_CS_PRIO(x) (((x) & 0x3) << 18)
95 #define G_008C00_CS_PRIO(x) (((x) >> 18) & 0x3)
96 #define C_008C00_CS_PRIO(x) 0xFFF3FFFF
97 #define S_008C00_LS_PRIO(x) (((x) & 0x3) << 20)
98 #define G_008C00_LS_PRIO(x) (((x) >> 20) & 0x3)
99 #define C_008C00_LS_PRIO(x) 0xFFCFFFFF
100 #define S_008C00_HS_PRIO(x) (((x) & 0x3) << 22)
101 #define G_008C00_HS_PRIO(x) (((x) >> 22) & 0x3)
102 #define C_008C00_HS_PRIO(x) 0xFF3FFFFF
103 #define S_008C00_PS_PRIO(x) (((x) & 0x3) << 24)
104 #define G_008C00_PS_PRIO(x) (((x) >> 24) & 0x3)
105 #define C_008C00_PS_PRIO(x) 0xFCFFFFFF
106 #define S_008C00_VS_PRIO(x) (((x) & 0x3) << 26)
107 #define G_008C00_VS_PRIO(x) (((x) >> 26) & 0x3)
108 #define C_008C00_VS_PRIO(x) 0xF3FFFFFF
109 #define S_008C00_GS_PRIO(x) (((x) & 0x3) << 28)
110 #define G_008C00_GS_PRIO(x) (((x) >> 28) & 0x3)
111 #define C_008C00_GS_PRIO(x) 0xCFFFFFFF
112 #define S_008C00_ES_PRIO(x) (((x) & 0x3) << 30)
113 #define G_008C00_ES_PRIO(x) (((x) >> 30) & 0x3)
114 #define C_008C00_ES_PRIO(x) 0x3FFFFFFF
115 #define R_008C04_SQ_GPR_RESOURCE_MGMT_1 0x00008C04
116 #define S_008C04_NUM_PS_GPRS(x) (((x) & 0xFF) << 0)
117 #define G_008C04_NUM_PS_GPRS(x) (((x) >> 0) & 0xFF)
118 #define C_008C04_NUM_PS_GPRS(x) 0xFFFFFF00
119 #define S_008C04_NUM_VS_GPRS(x) (((x) & 0xFF) << 16)
120 #define G_008C04_NUM_VS_GPRS(x) (((x) >> 16) & 0xFF)
121 #define C_008C04_NUM_VS_GPRS(x) 0xFF00FFFF
122 #define S_008C04_NUM_CLAUSE_TEMP_GPRS(x) (((x) & 0xF) << 28)
123 #define G_008C04_NUM_CLAUSE_TEMP_GPRS(x) (((x) >> 28) & 0xF)
124 #define C_008C04_NUM_CLAUSE_TEMP_GPRS(x) 0x0FFFFFFF
125 #define R_008C08_SQ_GPR_RESOURCE_MGMT_2 0x00008C08
126 #define S_008C08_NUM_GS_GPRS(x) (((x) & 0xFF) << 0)
127 #define G_008C08_NUM_GS_GPRS(x) (((x) >> 0) & 0xFF)
128 #define C_008C08_NUM_GS_GPRS(x) 0xFFFFFF00
129 #define S_008C08_NUM_ES_GPRS(x) (((x) & 0xFF) << 16)
130 #define G_008C08_NUM_ES_GPRS(x) (((x) >> 16) & 0xFF)
131 #define C_008C08_NUM_ES_GPRS(x) 0xFF00FFFF
132 #define R_008C0C_SQ_GPR_RESOURCE_MGMT_3 0x00008C0C
133 #define S_008C0C_NUM_HS_GPRS(x) (((x) & 0xFF) << 0)
134 #define G_008C0C_NUM_HS_GPRS(x) (((x) >> 0) & 0xFF)
135 #define C_008C0C_NUM_HS_GPRS(x) 0xFFFFFF00
136 #define S_008C0C_NUM_LS_GPRS(x) (((x) & 0xFF) << 16)
137 #define G_008C0C_NUM_LS_GPRS(x) (((x) >> 16) & 0xFF)
138 #define C_008C0C_NUM_LS_GPRS(x) 0xFF00FFFF
139 #define R_008C18_SQ_THREAD_RESOURCE_MGMT_1 0x00008C18
140 #define S_008C18_NUM_PS_THREADS(x) (((x) & 0xFF) << 0)
141 #define G_008C18_NUM_PS_THREADS(x) (((x) >> 0) & 0xFF)
142 #define C_008C18_NUM_PS_THREADS(x) 0xFFFFFF00
143 #define S_008C18_NUM_VS_THREADS(x) (((x) & 0xFF) << 8)
144 #define G_008C18_NUM_VS_THREADS(x) (((x) >> 8) & 0xFF)
145 #define C_008C18_NUM_VS_THREADS(x) 0xFFFF00FF
146 #define S_008C18_NUM_GS_THREADS(x) (((x) & 0xFF) << 16)
147 #define G_008C18_NUM_GS_THREADS(x) (((x) >> 16) & 0xFF)
148 #define C_008C18_NUM_GS_THREADS(x) 0xFF00FFFF
149 #define S_008C18_NUM_ES_THREADS(x) (((x) & 0xFF) << 24)
150 #define G_008C18_NUM_ES_THREADS(x) (((x) >> 24) & 0xFF)
151 #define C_008C18_NUM_ES_THREADS(x) 0x00FFFFFF
152 #define R_008C1C_SQ_THREAD_RESOURCE_MGMT_2 0x00008C1C
153 #define S_008C1C_NUM_HS_THREADS(x) (((x) & 0xFF) << 0)
154 #define G_008C1C_NUM_HS_THREADS(x) (((x) >> 0) & 0xFF)
155 #define C_008C1C_NUM_HS_THREADS(x) 0xFFFFFF00
156 #define S_008C1C_NUM_LS_THREADS(x) (((x) & 0xFF) << 8)
157 #define G_008C1C_NUM_LS_THREADS(x) (((x) >> 8) & 0xFF)
158 #define C_008C1C_NUM_LS_THREADS(x) 0xFFFF00FF
159 #define R_008C20_SQ_STACK_RESOURCE_MGMT_1 0x00008C20
160 #define S_008C20_NUM_PS_STACK_ENTRIES(x) (((x) & 0xFFF) << 0)
161 #define G_008C20_NUM_PS_STACK_ENTRIES(x) (((x) >> 0) & 0xFFF)
162 #define C_008C20_NUM_PS_STACK_ENTRIES(x) 0xFFFFF000
163 #define S_008C20_NUM_VS_STACK_ENTRIES(x) (((x) & 0xFFF) << 16)
164 #define G_008C20_NUM_VS_STACK_ENTRIES(x) (((x) >> 16) & 0xFFF)
165 #define C_008C20_NUM_VS_STACK_ENTRIES(x) 0xF000FFFF
166 #define R_008C24_SQ_STACK_RESOURCE_MGMT_2 0x00008C24
167 #define S_008C24_NUM_GS_STACK_ENTRIES(x) (((x) & 0xFFF) << 0)
168 #define G_008C24_NUM_GS_STACK_ENTRIES(x) (((x) >> 0) & 0xFFF)
169 #define C_008C24_NUM_GS_STACK_ENTRIES(x) 0xFFFFF000
170 #define S_008C24_NUM_ES_STACK_ENTRIES(x) (((x) & 0xFFF) << 16)
171 #define G_008C24_NUM_ES_STACK_ENTRIES(x) (((x) >> 16) & 0xFFF)
172 #define C_008C24_NUM_ES_STACK_ENTRIES(x) 0xF000FFFF
173 #define R_008C28_SQ_STACK_RESOURCE_MGMT_3 0x00008C28
174 #define S_008C28_NUM_HS_STACK_ENTRIES(x) (((x) & 0xFFF) << 0)
175 #define G_008C28_NUM_HS_STACK_ENTRIES(x) (((x) >> 0) & 0xFFF)
176 #define C_008C28_NUM_HS_STACK_ENTRIES(x) 0xFFFFF000
177 #define S_008C28_NUM_LS_STACK_ENTRIES(x) (((x) & 0xFFF) << 16)
178 #define G_008C28_NUM_LS_STACK_ENTRIES(x) (((x) >> 16) & 0xFFF)
179 #define C_008C28_NUM_LS_STACK_ENTRIES(x) 0xF000FFFF
180
181 #define R_008CF0_SQ_MS_FIFO_SIZES 0x00008CF0
182 #define S_008CF0_CACHE_FIFO_SIZE(x) (((x) & 0xFF) << 0)
183 #define G_008CF0_CACHE_FIFO_SIZE(x) (((x) >> 0) & 0xFF)
184 #define C_008CF0_CACHE_FIFO_SIZE(x) 0xFFFFFF00
185 #define S_008CF0_FETCH_FIFO_HIWATER(x) (((x) & 0x1F) << 8)
186 #define G_008CF0_FETCH_FIFO_HIWATER(x) (((x) >> 8) & 0x1F)
187 #define C_008CF0_FETCH_FIFO_HIWATER(x) 0xFFFFE0FF
188 #define S_008CF0_DONE_FIFO_HIWATER(x) (((x) & 0xFF) << 16)
189 #define G_008CF0_DONE_FIFO_HIWATER(x) (((x) >> 16) & 0xFF)
190 #define C_008CF0_DONE_FIFO_HIWATER(x) 0xFF00FFFF
191 #define S_008CF0_ALU_UPDATE_FIFO_HIWATER(x) (((x) & 0x1F) << 24)
192 #define G_008CF0_ALU_UPDATE_FIFO_HIWATER(x) (((x) >> 24) & 0x1F)
193 #define C_008CF0_ALU_UPDATE_FIFO_HIWATER(x) 0xE0FFFFFF
194
195 #define R_009100_SPI_CONFIG_CNTL 0x00009100
196 #define R_00913C_SPI_CONFIG_CNTL_1 0x0000913C
197 #define S_00913C_VTX_DONE_DELAY(x) (((x) & 0xF) << 0)
198 #define G_00913C_VTX_DONE_DELAY(x) (((x) >> 0) & 0xF )
199 #define C_00913C_VTX_DONE_DELAY(x) 0xFFFFFFF0
200
201
202 #define R_028C64_CB_COLOR0_PITCH 0x028C64
203 #define S_028C64_PITCH_TILE_MAX(x) (((x) & 0x7FF) << 0)
204 #define G_028C64_PITCH_TILE_MAX(x) (((x) >> 0) & 0x7FF)
205 #define C_028C64_PITCH_TILE_MAX 0xFFFFF800
206 #define R_028C68_CB_COLOR0_SLICE 0x028C68
207 #define S_028C68_SLICE_TILE_MAX(x) (((x) & 0x3FFFFF) << 0)
208 #define G_028C68_SLICE_TILE_MAX(x) (((x) >> 0) & 0x3FFFFF)
209 #define C_028C68_SLICE_TILE_MAX 0xFFC00000
210 #define R_028C70_CB_COLOR0_INFO 0x028C70
211 #define S_028C70_ENDIAN(x) (((x) & 0x3) << 0)
212 #define G_028C70_ENDIAN(x) (((x) >> 0) & 0x3)
213 #define C_028C70_ENDIAN 0xFFFFFFFC
214 #define S_028C70_FORMAT(x) (((x) & 0x3F) << 2)
215 #define G_028C70_FORMAT(x) (((x) >> 2) & 0x3F)
216 #define C_028C70_FORMAT 0xFFFFFF03
217 #define V_028C70_COLOR_INVALID 0x00000000
218 #define V_028C70_COLOR_8 0x00000001
219 #define V_028C70_COLOR_4_4 0x00000002
220 #define V_028C70_COLOR_3_3_2 0x00000003
221 #define V_028C70_COLOR_16 0x00000005
222 #define V_028C70_COLOR_16_FLOAT 0x00000006
223 #define V_028C70_COLOR_8_8 0x00000007
224 #define V_028C70_COLOR_5_6_5 0x00000008
225 #define V_028C70_COLOR_6_5_5 0x00000009
226 #define V_028C70_COLOR_1_5_5_5 0x0000000A
227 #define V_028C70_COLOR_4_4_4_4 0x0000000B
228 #define V_028C70_COLOR_5_5_5_1 0x0000000C
229 #define V_028C70_COLOR_32 0x0000000D
230 #define V_028C70_COLOR_32_FLOAT 0x0000000E
231 #define V_028C70_COLOR_16_16 0x0000000F
232 #define V_028C70_COLOR_16_16_FLOAT 0x00000010
233 #define V_028C70_COLOR_8_24 0x00000011
234 #define V_028C70_COLOR_8_24_FLOAT 0x00000012
235 #define V_028C70_COLOR_24_8 0x00000013
236 #define V_028C70_COLOR_24_8_FLOAT 0x00000014
237 #define V_028C70_COLOR_10_11_11 0x00000015
238 #define V_028C70_COLOR_10_11_11_FLOAT 0x00000016
239 #define V_028C70_COLOR_11_11_10 0x00000017
240 #define V_028C70_COLOR_11_11_10_FLOAT 0x00000018
241 #define V_028C70_COLOR_2_10_10_10 0x00000019
242 #define V_028C70_COLOR_8_8_8_8 0x0000001A
243 #define V_028C70_COLOR_10_10_10_2 0x0000001B
244 #define V_028C70_COLOR_X24_8_32_FLOAT 0x0000001C
245 #define V_028C70_COLOR_32_32 0x0000001D
246 #define V_028C70_COLOR_32_32_FLOAT 0x0000001E
247 #define V_028C70_COLOR_16_16_16_16 0x0000001F
248 #define V_028C70_COLOR_16_16_16_16_FLOAT 0x00000020
249 #define V_028C70_COLOR_32_32_32_32 0x00000022
250 #define V_028C70_COLOR_32_32_32_32_FLOAT 0x00000023
251 #define V_028C70_COLOR_32_32_32_FLOAT 0x00000030
252 #define S_028C70_ARRAY_MODE(x) (((x) & 0xF) << 8)
253 #define G_028C70_ARRAY_MODE(x) (((x) >> 8) & 0xF)
254 #define C_028C70_ARRAY_MODE 0xFFFFF0FF
255 #define V_028C70_ARRAY_LINEAR_GENERAL 0x00000000
256 #define V_028C70_ARRAY_LINEAR_ALIGNED 0x00000001
257 #define V_028C70_ARRAY_1D_TILED_THIN1 0x00000002
258 #define V_028C70_ARRAY_2D_TILED_THIN1 0x00000004
259 #define S_028C70_NUMBER_TYPE(x) (((x) & 0x7) << 12)
260 #define G_028C70_NUMBER_TYPE(x) (((x) >> 12) & 0x7)
261 #define C_028C70_NUMBER_TYPE 0xFFFF8FFF
262 #define V_028C70_NUMBER_UNORM 0x00000000
263 #define V_028C70_NUMBER_SNORM 0x00000001
264 #define V_028C70_NUMBER_USCALED 0x00000002
265 #define V_028C70_NUMBER_SSCALED 0x00000003
266 #define V_028C70_NUMBER_UINT 0x00000004
267 #define V_028C70_NUMBER_SINT 0x00000005
268 #define V_028C70_NUMBER_SRGB 0x00000006
269 #define V_028C70_NUMBER_FLOAT 0x00000007
270 #define S_028C70_COMP_SWAP(x) (((x) & 0x3) << 15)
271 #define G_028C70_COMP_SWAP(x) (((x) >> 15) & 0x3)
272 #define C_028C70_COMP_SWAP 0xFFFE7FFF
273 #define V_028C70_SWAP_STD 0x00000000
274 #define V_028C70_SWAP_ALT 0x00000001
275 #define V_028C70_SWAP_STD_REV 0x00000002
276 #define V_028C70_SWAP_ALT_REV 0x00000003
277 #define S_028C70_FAST_CLEAR(x) (((x) & 0x1) << 17)
278 #define G_028C70_FAST_CLEAR(x) (((x) >> 17) & 0x1)
279 #define C_028C70_FAST_CLEAR 0xFFFDFFFF
280 #define S_028C70_COMPRESSION(x) (((x) & 0x3) << 18)
281 #define G_028C70_COMPRESSION(x) (((x) >> 18) & 0x3)
282 #define C_028C70_COMPRESSION 0xFFF3FFFF
283 #define S_028C70_BLEND_CLAMP(x) (((x) & 0x1) << 19)
284 #define G_028C70_BLEND_CLAMP(x) (((x) >> 19) & 0x1)
285 #define C_028C70_BLEND_CLAMP 0xFFF7FFFF
286 #define S_028C70_BLEND_BYPASS(x) (((x) & 0x1) << 20)
287 #define G_028C70_BLEND_BYPASS(x) (((x) >> 20) & 0x1)
288 #define C_028C70_BLEND_BYPASS 0xFFEFFFFF
289 #define S_028C70_SIMPLE_FLOAT(x) (((x) & 0x1) << 21)
290 #define G_028C70_SIMPLE_FLOAT(x) (((x) >> 21) & 0x1)
291 #define C_028C70_SIMPLE_FLOAT 0xFFDFFFFF
292 #define S_028C70_ROUND_MODE(x) (((x) & 0x1) << 22)
293 #define G_028C70_ROUND_MODE(x) (((x) >> 22) & 0x1)
294 #define C_028C70_ROUND_MODE 0xFFBFFFFF
295 #define S_028C70_TILE_COMPACT(x) (((x) & 0x1) << 23)
296 #define G_028C70_TILE_COMPACT(x) (((x) >> 23) & 0x1)
297 #define C_028C70_TILE_COMPACT 0xFF7FFFFF
298 #define S_028C70_SOURCE_FORMAT(x) (((x) & 0x3) << 24)
299 #define G_028C70_SOURCE_FORMAT(x) (((x) >> 24) & 0x3)
300 #define C_028C70_SOURCE_FORMAT 0xFCFFFFFF
301 #define S_028C70_RAT(x) (((x) & 0x1) << 26)
302 #define G_028C70_RAT(x) (((x) >> 26) & 0x1)
303 #define C_028C70_RAT 0xFBFFFFFF
304 #define S_028C70_RESOURCE_TYPE(x) (((x) & 0x7) << 27)
305 #define G_028C70_RESOURCE_TYPE(x) (((x) >> 27) & 0x7)
306 #define C_028C70_RESOURCE_TYPE 0xC7FFFFFF
307
308 #define R_028C74_CB_COLOR0_ATTRIB 0x028C74
309 #define S_028C74_NON_DISP_TILING_ORDER(x) (((x) & 0x1) << 4)
310 #define G_028C74_NON_DISP_TILING_ORDER(x) (((x) >> 4) & 0x1)
311 #define C_028C74_NON_DISP_TILING_ORDER 0xFFFFFFEF
312
313 #define R_028C78_CB_COLOR0_DIM 0x028C78
314 #define S_028C78_WIDTH_MAX(x) (((x) & 0xFFFF) << 0)
315 #define G_028C78_WIDTH_MAX(x) (((x) >> 0) & 0xFFFF)
316 #define C_028C78_WIDTH_MAX 0xFFFF0000
317 #define S_028C78_HEIGHT_MAX(x) (((x) & 0xFFFF) << 16)
318 #define G_028C78_HEIGHT_MAX(x) (((x) >> 16) & 0xFFFF)
319 #define C_028C78_HEIGHT_MAX 0x0000FFFF
320
321 #define R_028C7C_CB_COLOR0_CMASK 0x028C7C
322 #define R_028C80_CB_COLOR0_CMASK_SLICE 0x028C80
323 #define R_028C84_CB_COLOR0_FMASK 0x028C84
324 #define R_028C88_CB_COLOR0_FMASK_SLICE 0x028C88
325
326 #define R_028C8C_CB_COLOR0_CLEAR_WORD0 0x028C8C
327 #define R_028C90_CB_COLOR0_CLEAR_WORD1 0x028C90
328 #define R_028C94_CB_COLOR0_CLEAR_WORD2 0x028C94
329 #define R_028C98_CB_COLOR0_CLEAR_WORD3 0x028C98
330
331 /* alpha same */
332 #define R_028410_SX_ALPHA_TEST_CONTROL 0x028410
333 #define S_028410_ALPHA_FUNC(x) (((x) & 0x7) << 0)
334 #define G_028410_ALPHA_FUNC(x) (((x) >> 0) & 0x7)
335 #define C_028410_ALPHA_FUNC 0xFFFFFFF8
336 #define S_028410_ALPHA_TEST_ENABLE(x) (((x) & 0x1) << 3)
337 #define G_028410_ALPHA_TEST_ENABLE(x) (((x) >> 3) & 0x1)
338 #define C_028410_ALPHA_TEST_ENABLE 0xFFFFFFF7
339 #define S_028410_ALPHA_TEST_BYPASS(x) (((x) & 0x1) << 8)
340 #define G_028410_ALPHA_TEST_BYPASS(x) (((x) >> 8) & 0x1)
341 #define C_028410_ALPHA_TEST_BYPASS 0xFFFFFEFF
342
343 #define R_028800_DB_DEPTH_CONTROL 0x028800
344 #define S_028800_STENCIL_ENABLE(x) (((x) & 0x1) << 0)
345 #define G_028800_STENCIL_ENABLE(x) (((x) >> 0) & 0x1)
346 #define C_028800_STENCIL_ENABLE 0xFFFFFFFE
347 #define S_028800_Z_ENABLE(x) (((x) & 0x1) << 1)
348 #define G_028800_Z_ENABLE(x) (((x) >> 1) & 0x1)
349 #define C_028800_Z_ENABLE 0xFFFFFFFD
350 #define S_028800_Z_WRITE_ENABLE(x) (((x) & 0x1) << 2)
351 #define G_028800_Z_WRITE_ENABLE(x) (((x) >> 2) & 0x1)
352 #define C_028800_Z_WRITE_ENABLE 0xFFFFFFFB
353 #define S_028800_ZFUNC(x) (((x) & 0x7) << 4)
354 #define G_028800_ZFUNC(x) (((x) >> 4) & 0x7)
355 #define C_028800_ZFUNC 0xFFFFFF8F
356 #define S_028800_BACKFACE_ENABLE(x) (((x) & 0x1) << 7)
357 #define G_028800_BACKFACE_ENABLE(x) (((x) >> 7) & 0x1)
358 #define C_028800_BACKFACE_ENABLE 0xFFFFFF7F
359 #define S_028800_STENCILFUNC(x) (((x) & 0x7) << 8)
360 #define G_028800_STENCILFUNC(x) (((x) >> 8) & 0x7)
361 #define C_028800_STENCILFUNC 0xFFFFF8FF
362 #define V_028800_STENCILFUNC_NEVER 0x00000000
363 #define V_028800_STENCILFUNC_LESS 0x00000001
364 #define V_028800_STENCILFUNC_EQUAL 0x00000002
365 #define V_028800_STENCILFUNC_LEQUAL 0x00000003
366 #define V_028800_STENCILFUNC_GREATER 0x00000004
367 #define V_028800_STENCILFUNC_NOTEQUAL 0x00000005
368 #define V_028800_STENCILFUNC_GEQUAL 0x00000006
369 #define V_028800_STENCILFUNC_ALWAYS 0x00000007
370 #define S_028800_STENCILFAIL(x) (((x) & 0x7) << 11)
371 #define G_028800_STENCILFAIL(x) (((x) >> 11) & 0x7)
372 #define C_028800_STENCILFAIL 0xFFFFC7FF
373 #define V_028800_STENCIL_KEEP 0x00000000
374 #define V_028800_STENCIL_ZERO 0x00000001
375 #define V_028800_STENCIL_REPLACE 0x00000002
376 #define V_028800_STENCIL_INCR 0x00000003
377 #define V_028800_STENCIL_DECR 0x00000004
378 #define V_028800_STENCIL_INVERT 0x00000005
379 #define V_028800_STENCIL_INCR_WRAP 0x00000006
380 #define V_028800_STENCIL_DECR_WRAP 0x00000007
381 #define S_028800_STENCILZPASS(x) (((x) & 0x7) << 14)
382 #define G_028800_STENCILZPASS(x) (((x) >> 14) & 0x7)
383 #define C_028800_STENCILZPASS 0xFFFE3FFF
384 #define S_028800_STENCILZFAIL(x) (((x) & 0x7) << 17)
385 #define G_028800_STENCILZFAIL(x) (((x) >> 17) & 0x7)
386 #define C_028800_STENCILZFAIL 0xFFF1FFFF
387 #define S_028800_STENCILFUNC_BF(x) (((x) & 0x7) << 20)
388 #define G_028800_STENCILFUNC_BF(x) (((x) >> 20) & 0x7)
389 #define C_028800_STENCILFUNC_BF 0xFF8FFFFF
390 #define S_028800_STENCILFAIL_BF(x) (((x) & 0x7) << 23)
391 #define G_028800_STENCILFAIL_BF(x) (((x) >> 23) & 0x7)
392 #define C_028800_STENCILFAIL_BF 0xFC7FFFFF
393 #define S_028800_STENCILZPASS_BF(x) (((x) & 0x7) << 26)
394 #define G_028800_STENCILZPASS_BF(x) (((x) >> 26) & 0x7)
395 #define C_028800_STENCILZPASS_BF 0xE3FFFFFF
396 #define S_028800_STENCILZFAIL_BF(x) (((x) & 0x7) << 29)
397 #define G_028800_STENCILZFAIL_BF(x) (((x) >> 29) & 0x7)
398 #define C_028800_STENCILZFAIL_BF 0x1FFFFFFF
399
400 #define R_028808_CB_COLOR_CONTROL 0x028808
401 #define S_028808_FOG_ENABLE(x) (((x) & 0x1) << 0)
402 #define G_028808_FOG_ENABLE(x) (((x) >> 0) & 0x1)
403 #define C_028808_FOG_ENABLE 0xFFFFFFFE
404 #define S_028808_MULTIWRITE_ENABLE(x) (((x) & 0x1) << 1)
405 #define G_028808_MULTIWRITE_ENABLE(x) (((x) >> 1) & 0x1)
406 #define C_028808_MULTIWRITE_ENABLE 0xFFFFFFFD
407 #define S_028808_DITHER_ENABLE(x) (((x) & 0x1) << 2)
408 #define G_028808_DITHER_ENABLE(x) (((x) >> 2) & 0x1)
409 #define C_028808_DITHER_ENABLE 0xFFFFFFFB
410 #define S_028808_DEGAMMA_ENABLE(x) (((x) & 0x1) << 3)
411 #define G_028808_DEGAMMA_ENABLE(x) (((x) >> 3) & 0x1)
412 #define C_028808_DEGAMMA_ENABLE 0xFFFFFFF7
413 #define S_028808_MODE(x) (((x) & 0x7) << 4)
414 #define G_028808_MODE(x) (((x) >> 4) & 0x7)
415 #define C_028808_MODE 0xFFFFFF8F
416 #define S_028808_ROP3(x) (((x) & 0xFF) << 16)
417 #define G_028808_ROP3(x) (((x) >> 16) & 0xFF)
418 #define C_028808_ROP3 0xFF00FFFF
419 #define R_028810_PA_CL_CLIP_CNTL 0x028810
420 #define S_028810_UCP_ENA_0(x) (((x) & 0x1) << 0)
421 #define G_028810_UCP_ENA_0(x) (((x) >> 0) & 0x1)
422 #define C_028810_UCP_ENA_0 0xFFFFFFFE
423 #define S_028810_UCP_ENA_1(x) (((x) & 0x1) << 1)
424 #define G_028810_UCP_ENA_1(x) (((x) >> 1) & 0x1)
425 #define C_028810_UCP_ENA_1 0xFFFFFFFD
426 #define S_028810_UCP_ENA_2(x) (((x) & 0x1) << 2)
427 #define G_028810_UCP_ENA_2(x) (((x) >> 2) & 0x1)
428 #define C_028810_UCP_ENA_2 0xFFFFFFFB
429 #define S_028810_UCP_ENA_3(x) (((x) & 0x1) << 3)
430 #define G_028810_UCP_ENA_3(x) (((x) >> 3) & 0x1)
431 #define C_028810_UCP_ENA_3 0xFFFFFFF7
432 #define S_028810_UCP_ENA_4(x) (((x) & 0x1) << 4)
433 #define G_028810_UCP_ENA_4(x) (((x) >> 4) & 0x1)
434 #define C_028810_UCP_ENA_4 0xFFFFFFEF
435 #define S_028810_UCP_ENA_5(x) (((x) & 0x1) << 5)
436 #define G_028810_UCP_ENA_5(x) (((x) >> 5) & 0x1)
437 #define C_028810_UCP_ENA_5 0xFFFFFFDF
438 #define S_028810_PS_UCP_Y_SCALE_NEG(x) (((x) & 0x1) << 13)
439 #define G_028810_PS_UCP_Y_SCALE_NEG(x) (((x) >> 13) & 0x1)
440 #define C_028810_PS_UCP_Y_SCALE_NEG 0xFFFFDFFF
441 #define S_028810_PS_UCP_MODE(x) (((x) & 0x3) << 14)
442 #define G_028810_PS_UCP_MODE(x) (((x) >> 14) & 0x3)
443 #define C_028810_PS_UCP_MODE 0xFFFF3FFF
444 #define S_028810_CLIP_DISABLE(x) (((x) & 0x1) << 16)
445 #define G_028810_CLIP_DISABLE(x) (((x) >> 16) & 0x1)
446 #define C_028810_CLIP_DISABLE 0xFFFEFFFF
447 #define S_028810_UCP_CULL_ONLY_ENA(x) (((x) & 0x1) << 17)
448 #define G_028810_UCP_CULL_ONLY_ENA(x) (((x) >> 17) & 0x1)
449 #define C_028810_UCP_CULL_ONLY_ENA 0xFFFDFFFF
450 #define S_028810_BOUNDARY_EDGE_FLAG_ENA(x) (((x) & 0x1) << 18)
451 #define G_028810_BOUNDARY_EDGE_FLAG_ENA(x) (((x) >> 18) & 0x1)
452 #define C_028810_BOUNDARY_EDGE_FLAG_ENA 0xFFFBFFFF
453 #define S_028810_DX_CLIP_SPACE_DEF(x) (((x) & 0x1) << 19)
454 #define G_028810_DX_CLIP_SPACE_DEF(x) (((x) >> 19) & 0x1)
455 #define C_028810_DX_CLIP_SPACE_DEF 0xFFF7FFFF
456 #define S_028810_DIS_CLIP_ERR_DETECT(x) (((x) & 0x1) << 20)
457 #define G_028810_DIS_CLIP_ERR_DETECT(x) (((x) >> 20) & 0x1)
458 #define C_028810_DIS_CLIP_ERR_DETECT 0xFFEFFFFF
459 #define S_028810_VTX_KILL_OR(x) (((x) & 0x1) << 21)
460 #define G_028810_VTX_KILL_OR(x) (((x) >> 21) & 0x1)
461 #define C_028810_VTX_KILL_OR 0xFFDFFFFF
462 #define S_028810_DX_LINEAR_ATTR_CLIP_ENA(x) (((x) & 0x1) << 24)
463 #define G_028810_DX_LINEAR_ATTR_CLIP_ENA(x) (((x) >> 24) & 0x1)
464 #define C_028810_DX_LINEAR_ATTR_CLIP_ENA 0xFEFFFFFF
465 #define S_028810_VTE_VPORT_PROVOKE_DISABLE(x) (((x) & 0x1) << 25)
466 #define G_028810_VTE_VPORT_PROVOKE_DISABLE(x) (((x) >> 25) & 0x1)
467 #define C_028810_VTE_VPORT_PROVOKE_DISABLE 0xFDFFFFFF
468 #define S_028810_ZCLIP_NEAR_DISABLE(x) (((x) & 0x1) << 26)
469 #define G_028810_ZCLIP_NEAR_DISABLE(x) (((x) >> 26) & 0x1)
470 #define C_028810_ZCLIP_NEAR_DISABLE 0xFBFFFFFF
471 #define S_028810_ZCLIP_FAR_DISABLE(x) (((x) & 0x1) << 27)
472 #define G_028810_ZCLIP_FAR_DISABLE(x) (((x) >> 27) & 0x1)
473 #define C_028810_ZCLIP_FAR_DISABLE 0xF7FFFFFF
474
475 #define R_028040_DB_Z_INFO 0x028040
476 #define S_028040_FORMAT(x) (((x) & 0x3) << 0)
477 #define G_028040_FORMAT(x) (((x) >> 0) & 0x3)
478 #define C_028040_FORMAT 0xFFFFFFFC
479 #define V_028040_Z_INVALID 0x00000000
480 #define V_028040_Z_16 0x00000001
481 #define V_028040_Z_24 0x00000002
482 #define V_028040_Z_32_FLOAT 0x00000003
483 #define S_028040_ARRAY_MODE(x) (((x) & 0xF) << 4)
484 #define G_028040_ARRAY_MODE(x) (((x) >> 4) & 0xF)
485 #define C_028040_ARRAY_MODE 0xFFFFFF0F
486 #define S_028040_READ_SIZE(x) (((x) & 0x1) << 28)
487 #define G_028040_READ_SIZE(x) (((x) >> 28) & 0x1)
488 #define C_028040_READ_SIZE 0xEFFFFFFF
489 #define S_028040_TILE_SURFACE_ENABLE(x) (((x) & 0x1) << 29)
490 #define G_028040_TILE_SURFACE_ENABLE(x) (((x) >> 29) & 0x1)
491 #define C_028040_TILE_SURFACE_ENABLE 0xDFFFFFFF
492 #define S_028040_ZRANGE_PRECISION(x) (((x) & 0x1) << 31)
493 #define G_028040_ZRANGE_PRECISION(x) (((x) >> 31) & 0x1)
494 #define C_028040_ZRANGE_PRECISION 0x7FFFFFFF
495
496 #define R_028044_DB_STENCIL_INFO 0x028044
497 #define S_028044_FORMAT(x) (((x) & 0x1) << 0)
498 #define G_028044_FORMAT(x) (((x) >> 0) & 0x1)
499 #define C_028044_FORMAT 0xFFFFFFFE
500
501 #define R_028058_DB_DEPTH_SIZE 0x028058
502 #define S_028058_PITCH_TILE_MAX(x) (((x) & 0x7FF) << 0)
503 #define G_028058_PITCH_TILE_MAX(x) (((x) >> 0) & 0x7FF)
504 #define C_028058_PITCH_TILE_MAX 0xFFFFF800
505 #define S_028058_HEIGHT_TILE_MAX(x) (((x) & 0x7FF) << 11)
506 #define G_028058_HEIGHT_TILE_MAX(x) (((x) >> 11) & 0x7FF)
507 #define C_028058_HEIGHT_TILE_MAX 0xFFC007FF
508
509 #define R_02805C_DB_DEPTH_SLICE 0x02805C
510 #define S_02805C_SLICE_TILE_MAX(x) (((x) & 0x3FFFFF) << 0)
511 #define G_02805C_SLICE_TILE_MAX(x) (((x) >> 0) & 0x3FFFFF)
512 #define C_02805C_SLICE_TILE_MAX 0xFFC00000
513
514 #define R_028430_DB_STENCILREFMASK 0x028430
515 #define S_028430_STENCILREF(x) (((x) & 0xFF) << 0)
516 #define G_028430_STENCILREF(x) (((x) >> 0) & 0xFF)
517 #define C_028430_STENCILREF 0xFFFFFF00
518 #define S_028430_STENCILMASK(x) (((x) & 0xFF) << 8)
519 #define G_028430_STENCILMASK(x) (((x) >> 8) & 0xFF)
520 #define C_028430_STENCILMASK 0xFFFF00FF
521 #define S_028430_STENCILWRITEMASK(x) (((x) & 0xFF) << 16)
522 #define G_028430_STENCILWRITEMASK(x) (((x) >> 16) & 0xFF)
523 #define C_028430_STENCILWRITEMASK 0xFF00FFFF
524 #define R_028434_DB_STENCILREFMASK_BF 0x028434
525 #define S_028434_STENCILREF_BF(x) (((x) & 0xFF) << 0)
526 #define G_028434_STENCILREF_BF(x) (((x) >> 0) & 0xFF)
527 #define C_028434_STENCILREF_BF 0xFFFFFF00
528 #define S_028434_STENCILMASK_BF(x) (((x) & 0xFF) << 8)
529 #define G_028434_STENCILMASK_BF(x) (((x) >> 8) & 0xFF)
530 #define C_028434_STENCILMASK_BF 0xFFFF00FF
531 #define S_028434_STENCILWRITEMASK_BF(x) (((x) & 0xFF) << 16)
532 #define G_028434_STENCILWRITEMASK_BF(x) (((x) >> 16) & 0xFF)
533 #define C_028434_STENCILWRITEMASK_BF 0xFF00FFFF
534 #define R_028780_CB_BLEND_CONTROL 0x028780
535 #define S_028780_COLOR_SRCBLEND(x) (((x) & 0x1F) << 0)
536 #define G_028780_COLOR_SRCBLEND(x) (((x) >> 0) & 0x1F)
537 #define C_028780_COLOR_SRCBLEND 0xFFFFFFE0
538 #define V_028780_BLEND_ZERO 0x00000000
539 #define V_028780_BLEND_ONE 0x00000001
540 #define V_028780_BLEND_SRC_COLOR 0x00000002
541 #define V_028780_BLEND_ONE_MINUS_SRC_COLOR 0x00000003
542 #define V_028780_BLEND_SRC_ALPHA 0x00000004
543 #define V_028780_BLEND_ONE_MINUS_SRC_ALPHA 0x00000005
544 #define V_028780_BLEND_DST_ALPHA 0x00000006
545 #define V_028780_BLEND_ONE_MINUS_DST_ALPHA 0x00000007
546 #define V_028780_BLEND_DST_COLOR 0x00000008
547 #define V_028780_BLEND_ONE_MINUS_DST_COLOR 0x00000009
548 #define V_028780_BLEND_SRC_ALPHA_SATURATE 0x0000000A
549 #define V_028780_BLEND_BOTH_SRC_ALPHA 0x0000000B
550 #define V_028780_BLEND_BOTH_INV_SRC_ALPHA 0x0000000C
551 #define V_028780_BLEND_CONST_COLOR 0x0000000D
552 #define V_028780_BLEND_ONE_MINUS_CONST_COLOR 0x0000000E
553 #define V_028780_BLEND_SRC1_COLOR 0x0000000F
554 #define V_028780_BLEND_INV_SRC1_COLOR 0x00000010
555 #define V_028780_BLEND_SRC1_ALPHA 0x00000011
556 #define V_028780_BLEND_INV_SRC1_ALPHA 0x00000012
557 #define V_028780_BLEND_CONST_ALPHA 0x00000013
558 #define V_028780_BLEND_ONE_MINUS_CONST_ALPHA 0x00000014
559 #define S_028780_COLOR_COMB_FCN(x) (((x) & 0x7) << 5)
560 #define G_028780_COLOR_COMB_FCN(x) (((x) >> 5) & 0x7)
561 #define C_028780_COLOR_COMB_FCN 0xFFFFFF1F
562 #define V_028780_COMB_DST_PLUS_SRC 0x00000000
563 #define V_028780_COMB_SRC_MINUS_DST 0x00000001
564 #define V_028780_COMB_MIN_DST_SRC 0x00000002
565 #define V_028780_COMB_MAX_DST_SRC 0x00000003
566 #define V_028780_COMB_DST_MINUS_SRC 0x00000004
567 #define S_028780_COLOR_DESTBLEND(x) (((x) & 0x1F) << 8)
568 #define G_028780_COLOR_DESTBLEND(x) (((x) >> 8) & 0x1F)
569 #define C_028780_COLOR_DESTBLEND 0xFFFFE0FF
570 #define S_028780_OPACITY_WEIGHT(x) (((x) & 0x1) << 13)
571 #define G_028780_OPACITY_WEIGHT(x) (((x) >> 13) & 0x1)
572 #define C_028780_OPACITY_WEIGHT 0xFFFFDFFF
573 #define S_028780_ALPHA_SRCBLEND(x) (((x) & 0x1F) << 16)
574 #define G_028780_ALPHA_SRCBLEND(x) (((x) >> 16) & 0x1F)
575 #define C_028780_ALPHA_SRCBLEND 0xFFE0FFFF
576 #define S_028780_ALPHA_COMB_FCN(x) (((x) & 0x7) << 21)
577 #define G_028780_ALPHA_COMB_FCN(x) (((x) >> 21) & 0x7)
578 #define C_028780_ALPHA_COMB_FCN 0xFF1FFFFF
579 #define S_028780_ALPHA_DESTBLEND(x) (((x) & 0x1F) << 24)
580 #define G_028780_ALPHA_DESTBLEND(x) (((x) >> 24) & 0x1F)
581 #define C_028780_ALPHA_DESTBLEND 0xE0FFFFFF
582 #define S_028780_SEPARATE_ALPHA_BLEND(x) (((x) & 0x1) << 29)
583 #define G_028780_SEPARATE_ALPHA_BLEND(x) (((x) >> 29) & 0x1)
584 #define C_028780_SEPARATE_ALPHA_BLEND 0xDFFFFFFF
585 #define S_028780_BLEND_CONTROL_ENABLE(x) (((x) & 0x1) << 30)
586 #define G_028780_BLEND_CONTROL_ENABLE(x) (((x) >> 30) & 0x1)
587 #define C_028780_BLEND_CONTROL_ENABLE 0xEFFFFFFF
588 #define R_028814_PA_SU_SC_MODE_CNTL 0x028814
589 #define S_028814_CULL_FRONT(x) (((x) & 0x1) << 0)
590 #define G_028814_CULL_FRONT(x) (((x) >> 0) & 0x1)
591 #define C_028814_CULL_FRONT 0xFFFFFFFE
592 #define S_028814_CULL_BACK(x) (((x) & 0x1) << 1)
593 #define G_028814_CULL_BACK(x) (((x) >> 1) & 0x1)
594 #define C_028814_CULL_BACK 0xFFFFFFFD
595 #define S_028814_FACE(x) (((x) & 0x1) << 2)
596 #define G_028814_FACE(x) (((x) >> 2) & 0x1)
597 #define C_028814_FACE 0xFFFFFFFB
598 #define S_028814_POLY_MODE(x) (((x) & 0x3) << 3)
599 #define G_028814_POLY_MODE(x) (((x) >> 3) & 0x3)
600 #define C_028814_POLY_MODE 0xFFFFFFE7
601 #define S_028814_POLYMODE_FRONT_PTYPE(x) (((x) & 0x7) << 5)
602 #define G_028814_POLYMODE_FRONT_PTYPE(x) (((x) >> 5) & 0x7)
603 #define C_028814_POLYMODE_FRONT_PTYPE 0xFFFFFF1F
604 #define S_028814_POLYMODE_BACK_PTYPE(x) (((x) & 0x7) << 8)
605 #define G_028814_POLYMODE_BACK_PTYPE(x) (((x) >> 8) & 0x7)
606 #define C_028814_POLYMODE_BACK_PTYPE 0xFFFFF8FF
607 #define S_028814_POLY_OFFSET_FRONT_ENABLE(x) (((x) & 0x1) << 11)
608 #define G_028814_POLY_OFFSET_FRONT_ENABLE(x) (((x) >> 11) & 0x1)
609 #define C_028814_POLY_OFFSET_FRONT_ENABLE 0xFFFFF7FF
610 #define S_028814_POLY_OFFSET_BACK_ENABLE(x) (((x) & 0x1) << 12)
611 #define G_028814_POLY_OFFSET_BACK_ENABLE(x) (((x) >> 12) & 0x1)
612 #define C_028814_POLY_OFFSET_BACK_ENABLE 0xFFFFEFFF
613 #define S_028814_POLY_OFFSET_PARA_ENABLE(x) (((x) & 0x1) << 13)
614 #define G_028814_POLY_OFFSET_PARA_ENABLE(x) (((x) >> 13) & 0x1)
615 #define C_028814_POLY_OFFSET_PARA_ENABLE 0xFFFFDFFF
616 #define S_028814_VTX_WINDOW_OFFSET_ENABLE(x) (((x) & 0x1) << 16)
617 #define G_028814_VTX_WINDOW_OFFSET_ENABLE(x) (((x) >> 16) & 0x1)
618 #define C_028814_VTX_WINDOW_OFFSET_ENABLE 0xFFFEFFFF
619 #define S_028814_PROVOKING_VTX_LAST(x) (((x) & 0x1) << 19)
620 #define G_028814_PROVOKING_VTX_LAST(x) (((x) >> 19) & 0x1)
621 #define C_028814_PROVOKING_VTX_LAST 0xFFF7FFFF
622 #define S_028814_PERSP_CORR_DIS(x) (((x) & 0x1) << 20)
623 #define G_028814_PERSP_CORR_DIS(x) (((x) >> 20) & 0x1)
624 #define C_028814_PERSP_CORR_DIS 0xFFEFFFFF
625 #define S_028814_MULTI_PRIM_IB_ENA(x) (((x) & 0x1) << 21)
626 #define G_028814_MULTI_PRIM_IB_ENA(x) (((x) >> 21) & 0x1)
627 #define C_028814_MULTI_PRIM_IB_ENA 0xFFDFFFFF
628
629 #define R_028004_DB_DEPTH_VIEW 0x028004
630 #define S_028004_SLICE_START(x) (((x) & 0x7FF) << 0)
631 #define G_028004_SLICE_START(x) (((x) >> 0) & 0x7FF)
632 #define C_028004_SLICE_START 0xFFFFF800
633 #define S_028004_SLICE_MAX(x) (((x) & 0x7FF) << 13)
634 #define G_028004_SLICE_MAX(x) (((x) >> 13) & 0x7FF)
635 #define C_028004_SLICE_MAX 0xFF001FFF
636 #define R_028D24_DB_HTILE_SURFACE 0x028D24
637 #define S_028D24_HTILE_WIDTH(x) (((x) & 0x1) << 0)
638 #define G_028D24_HTILE_WIDTH(x) (((x) >> 0) & 0x1)
639 #define C_028D24_HTILE_WIDTH 0xFFFFFFFE
640 #define S_028D24_HTILE_HEIGHT(x) (((x) & 0x1) << 1)
641 #define G_028D24_HTILE_HEIGHT(x) (((x) >> 1) & 0x1)
642 #define C_028D24_HTILE_HEIGHT 0xFFFFFFFD
643 #define S_028D24_LINEAR(x) (((x) & 0x1) << 2)
644 #define G_028D24_LINEAR(x) (((x) >> 2) & 0x1)
645 #define C_028D24_LINEAR 0xFFFFFFFB
646 #define S_028D24_FULL_CACHE(x) (((x) & 0x1) << 3)
647 #define G_028D24_FULL_CACHE(x) (((x) >> 3) & 0x1)
648 #define C_028D24_FULL_CACHE 0xFFFFFFF7
649 #define S_028D24_HTILE_USES_PRELOAD_WIN(x) (((x) & 0x1) << 4)
650 #define G_028D24_HTILE_USES_PRELOAD_WIN(x) (((x) >> 4) & 0x1)
651 #define C_028D24_HTILE_USES_PRELOAD_WIN 0xFFFFFFEF
652 #define S_028D24_PRELOAD(x) (((x) & 0x1) << 5)
653 #define G_028D24_PRELOAD(x) (((x) >> 5) & 0x1)
654 #define C_028D24_PRELOAD 0xFFFFFFDF
655 #define S_028D24_PREFETCH_WIDTH(x) (((x) & 0x3F) << 6)
656 #define G_028D24_PREFETCH_WIDTH(x) (((x) >> 6) & 0x3F)
657 #define C_028D24_PREFETCH_WIDTH 0xFFFFF03F
658 #define S_028D24_PREFETCH_HEIGHT(x) (((x) & 0x3F) << 12)
659 #define G_028D24_PREFETCH_HEIGHT(x) (((x) >> 12) & 0x3F)
660 #define C_028D24_PREFETCH_HEIGHT 0xFFFC0FFF
661 #define R_028D34_DB_PREFETCH_LIMIT 0x028D34
662 #define S_028D34_DEPTH_HEIGHT_TILE_MAX(x) (((x) & 0x3FF) << 0)
663 #define G_028D34_DEPTH_HEIGHT_TILE_MAX(x) (((x) >> 0) & 0x3FF)
664 #define C_028D34_DEPTH_HEIGHT_TILE_MAX 0xFFFFFC00
665 #define R_028D0C_DB_RENDER_CONTROL 0x028D0C
666 #define S_028D0C_STENCIL_COMPRESS_DISABLE(x) (((x) & 0x1) << 5)
667 #define S_028D0C_DEPTH_COMPRESS_DISABLE(x) (((x) & 0x1) << 6)
668 #define S_028D0C_PERFECT_ZPASS_COUNTS(x) (((x) & 0x1) << 15)
669 #define R_028D10_DB_RENDER_OVERRIDE 0x028D10
670 #define V_028D10_FORCE_OFF 0
671 #define V_028D10_FORCE_ENABLE 1
672 #define V_028D10_FORCE_DISABLE 2
673 #define S_028D10_FORCE_HIZ_ENABLE(x) (((x) & 0x3) << 0)
674 #define G_028D10_FORCE_HIZ_ENABLE(x) (((x) >> 0) & 0x3)
675 #define C_028D10_FORCE_HIZ_ENABLE 0xFFFFFFFC
676 #define S_028D10_FORCE_HIS_ENABLE0(x) (((x) & 0x3) << 2)
677 #define G_028D10_FORCE_HIS_ENABLE0(x) (((x) >> 2) & 0x3)
678 #define C_028D10_FORCE_HIS_ENABLE0 0xFFFFFFF3
679 #define S_028D10_FORCE_HIS_ENABLE1(x) (((x) & 0x3) << 4)
680 #define G_028D10_FORCE_HIS_ENABLE1(x) (((x) >> 4) & 0x3)
681 #define C_028D10_FORCE_HIS_ENABLE1 0xFFFFFFCF
682 #define S_028D10_FORCE_SHADER_Z_ORDER(x) (((x) & 0x1) << 6)
683 #define G_028D10_FORCE_SHADER_Z_ORDER(x) (((x) >> 6) & 0x1)
684 #define C_028D10_FORCE_SHADER_Z_ORDER 0xFFFFFFBF
685 #define S_028D10_FAST_Z_DISABLE(x) (((x) & 0x1) << 7)
686 #define G_028D10_FAST_Z_DISABLE(x) (((x) >> 7) & 0x1)
687 #define C_028D10_FAST_Z_DISABLE 0xFFFFFF7F
688 #define S_028D10_FAST_STENCIL_DISABLE(x) (((x) & 0x1) << 8)
689 #define G_028D10_FAST_STENCIL_DISABLE(x) (((x) >> 8) & 0x1)
690 #define C_028D10_FAST_STENCIL_DISABLE 0xFFFFFEFF
691 #define S_028D10_NOOP_CULL_DISABLE(x) (((x) & 0x1) << 9)
692 #define G_028D10_NOOP_CULL_DISABLE(x) (((x) >> 9) & 0x1)
693 #define C_028D10_NOOP_CULL_DISABLE 0xFFFFFDFF
694 #define S_028D10_FORCE_COLOR_KILL(x) (((x) & 0x1) << 10)
695 #define G_028D10_FORCE_COLOR_KILL(x) (((x) >> 10) & 0x1)
696 #define C_028D10_FORCE_COLOR_KILL 0xFFFFFBFF
697 #define S_028D10_FORCE_Z_READ(x) (((x) & 0x1) << 11)
698 #define G_028D10_FORCE_Z_READ(x) (((x) >> 11) & 0x1)
699 #define C_028D10_FORCE_Z_READ 0xFFFFF7FF
700 #define S_028D10_FORCE_STENCIL_READ(x) (((x) & 0x1) << 12)
701 #define G_028D10_FORCE_STENCIL_READ(x) (((x) >> 12) & 0x1)
702 #define C_028D10_FORCE_STENCIL_READ 0xFFFFEFFF
703 #define S_028D10_FORCE_FULL_Z_RANGE(x) (((x) & 0x3) << 13)
704 #define G_028D10_FORCE_FULL_Z_RANGE(x) (((x) >> 13) & 0x3)
705 #define C_028D10_FORCE_FULL_Z_RANGE 0xFFFF9FFF
706 #define S_028D10_FORCE_QC_SMASK_CONFLICT(x) (((x) & 0x1) << 15)
707 #define G_028D10_FORCE_QC_SMASK_CONFLICT(x) (((x) >> 15) & 0x1)
708 #define C_028D10_FORCE_QC_SMASK_CONFLICT 0xFFFF7FFF
709 #define S_028D10_DISABLE_VIEWPORT_CLAMP(x) (((x) & 0x1) << 16)
710 #define G_028D10_DISABLE_VIEWPORT_CLAMP(x) (((x) >> 16) & 0x1)
711 #define C_028D10_DISABLE_VIEWPORT_CLAMP 0xFFFEFFFF
712 #define S_028D10_IGNORE_SC_ZRANGE(x) (((x) & 0x1) << 17)
713 #define G_028D10_IGNORE_SC_ZRANGE(x) (((x) >> 17) & 0x1)
714 #define C_028D10_IGNORE_SC_ZRANGE 0xFFFDFFFF
715 #define R_02880C_DB_SHADER_CONTROL 0x02880C
716 #define S_02880C_Z_EXPORT_ENABLE(x) (((x) & 0x1) << 0)
717 #define G_02880C_Z_EXPORT_ENABLE(x) (((x) >> 0) & 0x1)
718 #define C_02880C_Z_EXPORT_ENABLE 0xFFFFFFFE
719 #define S_02880C_Z_ORDER(x) (((x) & 0x3) << 4)
720 #define G_02880C_Z_ORDER(x) (((x) >> 4) & 0x3)
721 #define C_02880C_Z_ORDER 0xFFFFFCFF
722 #define V_02880C_LATE_Z 0
723 #define V_02880C_EARLY_Z_THEN_LATE_Z 1
724 #define V_02880C_RE_Z 2
725 #define V_02880C_EARLY_Z_THEN_RE_Z 3
726 #define S_02880C_KILL_ENABLE(x) (((x) & 0x1) << 6)
727 #define G_02880C_KILL_ENABLE(x) (((x) >> 6) & 0x1)
728 #define C_02880C_KILL_ENABLE 0xFFFFFFBF
729 #define S_02880C_DUAL_EXPORT_ENABLE(x) (((x) & 0x1) << 9)
730 #define G_02880C_DUAL_EXPORT_ENABLE(x) (((x) >> 9) & 0x1)
731 #define C_02880C_DUAL_EXPORT_ENABLE 0xFFFFFDFF
732 #define R_028DF8_PA_SU_POLY_OFFSET_DB_FMT_CNTL 0x028DF8
733 #define S_028DF8_POLY_OFFSET_NEG_NUM_DB_BITS(x) (((x) & 0xFF) << 0)
734 #define G_028DF8_POLY_OFFSET_NEG_NUM_DB_BITS(x) (((x) >> 0) & 0xFF)
735 #define C_028DF8_POLY_OFFSET_NEG_NUM_DB_BITS 0xFFFFFF00
736 #define S_028DF8_POLY_OFFSET_DB_IS_FLOAT_FMT(x) (((x) & 0x1) << 8)
737 #define G_028DF8_POLY_OFFSET_DB_IS_FLOAT_FMT(x) (((x) >> 8) & 0x1)
738 #define C_028DF8_POLY_OFFSET_DB_IS_FLOAT_FMT 0xFFFFFEFF
739 #define R_028E00_PA_SU_POLY_OFFSET_FRONT_SCALE 0x028E00
740 #define S_028E00_SCALE(x) (((x) & 0xFFFFFFFF) << 0)
741 #define G_028E00_SCALE(x) (((x) >> 0) & 0xFFFFFFFF)
742 #define C_028E00_SCALE 0x00000000
743 #define R_028E04_PA_SU_POLY_OFFSET_FRONT_OFFSET 0x028E04
744 #define S_028E04_OFFSET(x) (((x) & 0xFFFFFFFF) << 0)
745 #define G_028E04_OFFSET(x) (((x) >> 0) & 0xFFFFFFFF)
746 #define C_028E04_OFFSET 0x00000000
747 #define R_028E08_PA_SU_POLY_OFFSET_BACK_SCALE 0x028E08
748 #define S_028E08_SCALE(x) (((x) & 0xFFFFFFFF) << 0)
749 #define G_028E08_SCALE(x) (((x) >> 0) & 0xFFFFFFFF)
750 #define C_028E08_SCALE 0x00000000
751 #define R_028E0C_PA_SU_POLY_OFFSET_BACK_OFFSET 0x028E0C
752 #define S_028E0C_OFFSET(x) (((x) & 0xFFFFFFFF) << 0)
753 #define G_028E0C_OFFSET(x) (((x) >> 0) & 0xFFFFFFFF)
754 #define C_028E0C_OFFSET 0x00000000
755 #define R_028A00_PA_SU_POINT_SIZE 0x028A00
756 #define S_028A00_HEIGHT(x) (((x) & 0xFFFF) << 0)
757 #define G_028A00_HEIGHT(x) (((x) >> 0) & 0xFFFF)
758 #define C_028A00_HEIGHT 0xFFFF0000
759 #define S_028A00_WIDTH(x) (((x) & 0xFFFF) << 16)
760 #define G_028A00_WIDTH(x) (((x) >> 16) & 0xFFFF)
761 #define C_028A00_WIDTH 0x0000FFFF
762 #define R_028A40_VGT_GS_MODE 0x028A40
763 #define S_028A40_MODE(x) (((x) & 0x3) << 0)
764 #define G_028A40_MODE(x) (((x) >> 0) & 0x3)
765 #define C_028A40_MODE 0xFFFFFFFC
766 #define S_028A40_ES_PASSTHRU(x) (((x) & 0x1) << 2)
767 #define G_028A40_ES_PASSTHRU(x) (((x) >> 2) & 0x1)
768 #define C_028A40_ES_PASSTHRU 0xFFFFFFFB
769 #define S_028A40_CUT_MODE(x) (((x) & 0x3) << 3)
770 #define G_028A40_CUT_MODE(x) (((x) >> 3) & 0x3)
771 #define C_028A40_CUT_MODE 0xFFFFFFE7
772 #define R_008040_WAIT_UNTIL 0x008040
773 #define S_008040_WAIT_CP_DMA_IDLE(x) (((x) & 0x1) << 8)
774 #define G_008040_WAIT_CP_DMA_IDLE(x) (((x) >> 8) & 0x1)
775 #define C_008040_WAIT_CP_DMA_IDLE 0xFFFFFEFF
776 #define S_008040_WAIT_CMDFIFO(x) (((x) & 0x1) << 10)
777 #define G_008040_WAIT_CMDFIFO(x) (((x) >> 10) & 0x1)
778 #define C_008040_WAIT_CMDFIFO 0xFFFFFBFF
779 #define S_008040_WAIT_2D_IDLE(x) (((x) & 0x1) << 14)
780 #define G_008040_WAIT_2D_IDLE(x) (((x) >> 14) & 0x1)
781 #define C_008040_WAIT_2D_IDLE 0xFFFFBFFF
782 #define S_008040_WAIT_3D_IDLE(x) (((x) & 0x1) << 15)
783 #define G_008040_WAIT_3D_IDLE(x) (((x) >> 15) & 0x1)
784 #define C_008040_WAIT_3D_IDLE 0xFFFF7FFF
785 #define S_008040_WAIT_2D_IDLECLEAN(x) (((x) & 0x1) << 16)
786 #define G_008040_WAIT_2D_IDLECLEAN(x) (((x) >> 16) & 0x1)
787 #define C_008040_WAIT_2D_IDLECLEAN 0xFFFEFFFF
788 #define S_008040_WAIT_3D_IDLECLEAN(x) (((x) & 0x1) << 17)
789 #define G_008040_WAIT_3D_IDLECLEAN(x) (((x) >> 17) & 0x1)
790 #define C_008040_WAIT_3D_IDLECLEAN 0xFFFDFFFF
791 #define S_008040_WAIT_EXTERN_SIG(x) (((x) & 0x1) << 19)
792 #define G_008040_WAIT_EXTERN_SIG(x) (((x) >> 19) & 0x1)
793 #define C_008040_WAIT_EXTERN_SIG 0xFFF7FFFF
794 #define S_008040_CMDFIFO_ENTRIES(x) (((x) & 0x1F) << 20)
795 #define G_008040_CMDFIFO_ENTRIES(x) (((x) >> 20) & 0x1F)
796 #define C_008040_CMDFIFO_ENTRIES 0xFE0FFFFF
797
798 /* diff */
799 #define R_0286CC_SPI_PS_IN_CONTROL_0 0x0286CC
800 #define S_0286CC_NUM_INTERP(x) (((x) & 0x3F) << 0)
801 #define G_0286CC_NUM_INTERP(x) (((x) >> 0) & 0x3F)
802 #define C_0286CC_NUM_INTERP 0xFFFFFFC0
803 #define S_0286CC_POSITION_ENA(x) (((x) & 0x1) << 8)
804 #define G_0286CC_POSITION_ENA(x) (((x) >> 8) & 0x1)
805 #define C_0286CC_POSITION_ENA 0xFFFFFEFF
806 #define S_0286CC_POSITION_CENTROID(x) (((x) & 0x1) << 9)
807 #define G_0286CC_POSITION_CENTROID(x) (((x) >> 9) & 0x1)
808 #define C_0286CC_POSITION_CENTROID 0xFFFFFDFF
809 #define S_0286CC_POSITION_ADDR(x) (((x) & 0x1F) << 10)
810 #define G_0286CC_POSITION_ADDR(x) (((x) >> 10) & 0x1F)
811 #define C_0286CC_POSITION_ADDR 0xFFFF83FF
812 #define S_0286CC_PARAM_GEN(x) (((x) & 0xF) << 15)
813 #define G_0286CC_PARAM_GEN(x) (((x) >> 15) & 0xF)
814 #define C_0286CC_PARAM_GEN 0xFFF87FFF
815 #define S_0286CC_PERSP_GRADIENT_ENA(x) (((x) & 0x1) << 28)
816 #define G_0286CC_PERSP_GRADIENT_ENA(x) (((x) >> 28) & 0x1)
817 #define C_0286CC_PERSP_GRADIENT_ENA 0xEFFFFFFF
818 #define S_0286CC_LINEAR_GRADIENT_ENA(x) (((x) & 0x1) << 29)
819 #define G_0286CC_LINEAR_GRADIENT_ENA(x) (((x) >> 29) & 0x1)
820 #define C_0286CC_LINEAR_GRADIENT_ENA 0xDFFFFFFF
821 #define S_0286CC_POSITION_SAMPLE(x) (((x) & 0x1) << 30)
822 #define G_0286CC_POSITION_SAMPLE(x) (((x) >> 30) & 0x1)
823 #define C_0286CC_POSITION_SAMPLE 0xBFFFFFFF
824 #define R_0286D0_SPI_PS_IN_CONTROL_1 0x0286D0
825 #define S_0286D0_FRONT_FACE_ENA(x) (((x) & 0x1) << 8)
826 #define G_0286D0_FRONT_FACE_ENA(x) (((x) >> 8) & 0x1)
827 #define C_0286D0_FRONT_FACE_ENA 0xFFFFFEFF
828 #define S_0286D0_FRONT_FACE_CHAN(x) (((x) & 0x3) << 9)
829 #define G_0286D0_FRONT_FACE_CHAN(x) (((x) >> 9) & 0x3)
830 #define C_0286D0_FRONT_FACE_CHAN 0xFFFFF9FF
831 #define S_0286D0_FRONT_FACE_ALL_BITS(x) (((x) & 0x1) << 11)
832 #define G_0286D0_FRONT_FACE_ALL_BITS(x) (((x) >> 11) & 0x1)
833 #define C_0286D0_FRONT_FACE_ALL_BITS 0xFFFFF7FF
834 #define S_0286D0_FRONT_FACE_ADDR(x) (((x) & 0x1F) << 12)
835 #define G_0286D0_FRONT_FACE_ADDR(x) (((x) >> 12) & 0x1F)
836 #define C_0286D0_FRONT_FACE_ADDR 0xFFFE0FFF
837 #define S_0286D0_FOG_ADDR(x) (((x) & 0x7F) << 17)
838 #define G_0286D0_FOG_ADDR(x) (((x) >> 17) & 0x7F)
839 #define C_0286D0_FOG_ADDR 0xFF01FFFF
840 #define S_0286D0_FIXED_PT_POSITION_ENA(x) (((x) & 0x1) << 24)
841 #define G_0286D0_FIXED_PT_POSITION_ENA(x) (((x) >> 24) & 0x1)
842 #define C_0286D0_FIXED_PT_POSITION_ENA 0xFEFFFFFF
843 #define S_0286D0_FIXED_PT_POSITION_ADDR(x) (((x) & 0x1F) << 25)
844 #define G_0286D0_FIXED_PT_POSITION_ADDR(x) (((x) >> 25) & 0x1F)
845 #define C_0286D0_FIXED_PT_POSITION_ADDR 0xC1FFFFFF
846 #define R_0286C4_SPI_VS_OUT_CONFIG 0x0286C4
847 #define S_0286C4_VS_PER_COMPONENT(x) (((x) & 0x1) << 0)
848 #define G_0286C4_VS_PER_COMPONENT(x) (((x) >> 0) & 0x1)
849 #define C_0286C4_VS_PER_COMPONENT 0xFFFFFFFE
850 #define S_0286C4_VS_EXPORT_COUNT(x) (((x) & 0x1F) << 1)
851 #define G_0286C4_VS_EXPORT_COUNT(x) (((x) >> 1) & 0x1F)
852 #define C_0286C4_VS_EXPORT_COUNT 0xFFFFFFC1
853 #define S_0286C4_VS_EXPORTS_FOG(x) (((x) & 0x1) << 8)
854 #define G_0286C4_VS_EXPORTS_FOG(x) (((x) >> 8) & 0x1)
855 #define C_0286C4_VS_EXPORTS_FOG 0xFFFFFEFF
856 #define S_0286C4_VS_OUT_FOG_VEC_ADDR(x) (((x) & 0x1F) << 9)
857 #define G_0286C4_VS_OUT_FOG_VEC_ADDR(x) (((x) >> 9) & 0x1F)
858 #define C_0286C4_VS_OUT_FOG_VEC_ADDR 0xFFFFC1FF
859
860 #define R_0286E0_SPI_BARYC_CNTL 0x0286E0
861 #define S_0286E0_PERSP_CENTER_ENA(x) (((x) & 0x3) << 0)
862 #define G_0286E0_PERSP_CENTER_ENA(x) (((x) >> 0) & 0x3)
863 #define C_0286E0_PERSP_CENTER_ENA 0xFFFFFFFC
864 #define S_0286E0_PERSP_CENTROID_ENA(x) (((x) & 0x3) << 4)
865 #define G_0286E0_PERSP_CENTROID_ENA(x) (((x) >> 4) & 0x3)
866 #define C_0286E0_PERSP_CENTROID_ENA 0xFFFFFFCF
867 #define S_0286E0_PERSP_SAMPLE_ENA(x) (((x) & 0x3) << 8)
868 #define G_0286E0_PERSP_SAMPLE_ENA(x) (((x) >> 8) & 0x3)
869 #define C_0286E0_PERSP_SAMPLE_ENA 0xFFFFFCFF
870 #define S_0286E0_PERSP_PULL_MODEL_ENA(x) (((x) & 0x3) << 12)
871 #define G_0286E0_PERSP_PULL_MODEL_ENA(x) (((x) >> 12) & 0x3)
872 #define C_0286E0_PERSP_PULL_MODEL_ENA 0xFFFFCFFF
873 #define S_0286E0_LINEAR_CENTER_ENA(x) (((x) & 0x3) << 16)
874 #define G_0286E0_LINEAR_CENTER_ENA(x) (((x) >> 16) & 0x3)
875 #define C_0286E0_LINEAR_CENTER_ENA 0xFFFCFFFF
876 #define S_0286E0_LINEAR_CENTROID_ENA(x) (((x) & 0x3) << 20)
877 #define G_0286E0_LINEAR_CENTROID_ENA(x) (((x) >> 20) & 0x3)
878 #define C_0286E0_LINEAR_CENTROID_ENA 0xFFCFFFFF
879 #define S_0286E0_LINEAR_SAMPLE_ENA(x) (((x) & 0x3) << 24)
880 #define G_0286E0_LINEAR_SAMPLE_ENA(x) (((x) >> 24) & 0x3)
881 #define C_0286E0_LINEAR_SAMPLE_ENA 0xFCFFFFFF
882
883
884 /* new - diff */
885 #define R_028250_PA_SC_VPORT_SCISSOR_TL 0x028250
886 #define S_028250_TL_X(x) (((x) & 0x7FFF) << 0)
887 #define G_028250_TL_X(x) (((x) >> 0) & 0x7FFF)
888 #define C_028250_TL_X 0xFFFF8000
889 #define S_028250_TL_Y(x) (((x) & 0x7FFF) << 16)
890 #define G_028250_TL_Y(x) (((x) >> 16) & 0x7FFF)
891 #define C_028250_TL_Y 0x8000FFFF
892 #define S_028250_WINDOW_OFFSET_DISABLE(x) (((x) & 0x1) << 31)
893 #define G_028250_WINDOW_OFFSET_DISABLE(x) (((x) >> 31) & 0x1)
894 #define C_028250_WINDOW_OFFSET_DISABLE 0x7FFFFFFF
895 #define R_028254_PA_SC_VPORT_SCISSOR_BR 0x028254
896 #define S_028254_BR_X(x) (((x) & 0x7FFF) << 0)
897 #define G_028254_BR_X(x) (((x) >> 0) & 0x7FFF)
898 #define C_028254_BR_X 0xFFFF8000
899 #define S_028254_BR_Y(x) (((x) & 0x7FFF) << 16)
900 #define G_028254_BR_Y(x) (((x) >> 16) & 0x7FFF)
901 #define C_028254_BR_Y 0x8000FFFF
902 /* diff */
903 #define R_028240_PA_SC_GENERIC_SCISSOR_TL 0x028240
904 #define S_028240_TL_X(x) (((x) & 0x7FFF) << 0)
905 #define G_028240_TL_X(x) (((x) >> 0) & 0x7FFF)
906 #define C_028240_TL_X 0xFFFF8000
907 #define S_028240_TL_Y(x) (((x) & 0x7FFF) << 16)
908 #define G_028240_TL_Y(x) (((x) >> 16) & 0x7FFF)
909 #define C_028240_TL_Y 0x8000FFFF
910 #define S_028240_WINDOW_OFFSET_DISABLE(x) (((x) & 0x1) << 31)
911 #define G_028240_WINDOW_OFFSET_DISABLE(x) (((x) >> 31) & 0x1)
912 #define C_028240_WINDOW_OFFSET_DISABLE 0x7FFFFFFF
913 #define R_028244_PA_SC_GENERIC_SCISSOR_BR 0x028244
914 #define S_028244_BR_X(x) (((x) & 0x7FFF) << 0)
915 #define G_028244_BR_X(x) (((x) >> 0) & 0x7FFF)
916 #define C_028244_BR_X 0xFFFF8000
917 #define S_028244_BR_Y(x) (((x) & 0x7FFF) << 16)
918 #define G_028244_BR_Y(x) (((x) >> 16) & 0x7FFF)
919 #define C_028244_BR_Y 0x8000FFFF
920 /* diff */
921 #define R_028030_PA_SC_SCREEN_SCISSOR_TL 0x028030
922 #define S_028030_TL_X(x) (((x) & 0xFFFF) << 0)
923 #define G_028030_TL_X(x) (((x) >> 0) & 0xFFFF)
924 #define C_028030_TL_X 0xFFFF0000
925 #define S_028030_TL_Y(x) (((x) & 0xFFFF) << 16)
926 #define G_028030_TL_Y(x) (((x) >> 16) & 0xFFFF)
927 #define C_028030_TL_Y 0x0000FFFF
928 #define R_028034_PA_SC_SCREEN_SCISSOR_BR 0x028034
929 #define S_028034_BR_X(x) (((x) & 0xFFFF) << 0)
930 #define G_028034_BR_X(x) (((x) >> 0) & 0xFFFF)
931 #define C_028034_BR_X 0xFFFF0000
932 #define S_028034_BR_Y(x) (((x) & 0xFFFF) << 16)
933 #define G_028034_BR_Y(x) (((x) >> 16) & 0xFFFF)
934 #define C_028034_BR_Y 0x0000FFFF
935 /* diff */
936 #define R_028204_PA_SC_WINDOW_SCISSOR_TL 0x028204
937 #define S_028204_TL_X(x) (((x) & 0x7FFF) << 0)
938 #define G_028204_TL_X(x) (((x) >> 0) & 0x7FFF)
939 #define C_028204_TL_X 0xFFFF8000
940 #define S_028204_TL_Y(x) (((x) & 0x7FFF) << 16)
941 #define G_028204_TL_Y(x) (((x) >> 16) & 0x7FFF)
942 #define C_028204_TL_Y 0x8000FFFF
943 #define S_028204_WINDOW_OFFSET_DISABLE(x) (((x) & 0x1) << 31)
944 #define G_028204_WINDOW_OFFSET_DISABLE(x) (((x) >> 31) & 0x1)
945 #define C_028204_WINDOW_OFFSET_DISABLE 0x7FFFFFFF
946 #define R_028208_PA_SC_WINDOW_SCISSOR_BR 0x028208
947 #define S_028208_BR_X(x) (((x) & 0x7FFF) << 0)
948 #define G_028208_BR_X(x) (((x) >> 0) & 0x7FFF)
949 #define C_028208_BR_X 0xFFFF8000
950 #define S_028208_BR_Y(x) (((x) & 0x7FFF) << 16)
951 #define G_028208_BR_Y(x) (((x) >> 16) & 0x7FFF)
952 #define C_028208_BR_Y 0x8000FFFF
953
954 #define R_0287F0_VGT_DRAW_INITIATOR 0x0287F0
955 #define S_0287F0_SOURCE_SELECT(x) (((x) & 0x3) << 0)
956 #define G_0287F0_SOURCE_SELECT(x) (((x) >> 0) & 0x3)
957 #define C_0287F0_SOURCE_SELECT 0xFFFFFFFC
958 #define S_0287F0_MAJOR_MODE(x) (((x) & 0x3) << 2)
959 #define G_0287F0_MAJOR_MODE(x) (((x) >> 2) & 0x3)
960 #define C_0287F0_MAJOR_MODE 0xFFFFFFF3
961 #define S_0287F0_SPRITE_EN(x) (((x) & 0x1) << 4)
962 #define G_0287F0_SPRITE_EN(x) (((x) >> 4) & 0x1)
963 #define C_0287F0_SPRITE_EN 0xFFFFFFEF
964 #define S_0287F0_NOT_EOP(x) (((x) & 0x1) << 5)
965 #define G_0287F0_NOT_EOP(x) (((x) >> 5) & 0x1)
966 #define C_0287F0_NOT_EOP 0xFFFFFFDF
967 #define S_0287F0_USE_OPAQUE(x) (((x) & 0x1) << 6)
968 #define G_0287F0_USE_OPAQUE(x) (((x) >> 6) & 0x1)
969 #define C_0287F0_USE_OPAQUE 0xFFFFFFBF
970
971 #define R_030000_SQ_TEX_RESOURCE_WORD0_0 0x030000
972 #define S_030000_DIM(x) (((x) & 0x7) << 0)
973 #define G_030000_DIM(x) (((x) >> 0) & 0x7)
974 #define C_030000_DIM 0xFFFFFFF8
975 #define V_030000_SQ_TEX_DIM_1D 0x00000000
976 #define V_030000_SQ_TEX_DIM_2D 0x00000001
977 #define V_030000_SQ_TEX_DIM_3D 0x00000002
978 #define V_030000_SQ_TEX_DIM_CUBEMAP 0x00000003
979 #define V_030000_SQ_TEX_DIM_1D_ARRAY 0x00000004
980 #define V_030000_SQ_TEX_DIM_2D_ARRAY 0x00000005
981 #define V_030000_SQ_TEX_DIM_2D_MSAA 0x00000006
982 #define V_030000_SQ_TEX_DIM_2D_ARRAY_MSAA 0x00000007
983 #define S_030000_PITCH(x) (((x) & 0xFFF) << 6)
984 #define G_030000_PITCH(x) (((x) >> 6) & 0xFFF)
985 #define C_030000_PITCH 0xFFFC003F
986 #define S_030000_TEX_WIDTH(x) (((x) & 0x3FFF) << 18)
987 #define G_030000_TEX_WIDTH(x) (((x) >> 18) & 0x3FFF)
988 #define C_030000_TEX_WIDTH 0x0003FFFF
989 #define R_030004_SQ_TEX_RESOURCE_WORD1_0 0x030004
990 #define S_030004_TEX_HEIGHT(x) (((x) & 0x3FFF) << 0)
991 #define G_030004_TEX_HEIGHT(x) (((x) >> 0) & 0x3FFF)
992 #define C_030004_TEX_HEIGHT 0xFFFFC000
993 #define S_030004_TEX_DEPTH(x) (((x) & 0x1FFF) << 14)
994 #define G_030004_TEX_DEPTH(x) (((x) >> 14) & 0x1FFF)
995 #define C_030004_TEX_DEPTH 0xF8003FFF
996 #define S_030004_ARRAY_MODE(x) (((x) & 0xF) << 28)
997 #define G_030004_ARRAY_MODE(x) (((x) >> 28) & 0xF)
998 #define C_030004_ARRAY_MODE 0x0FFFFFFF
999 #define R_030008_SQ_TEX_RESOURCE_WORD2_0 0x030008
1000 #define S_030008_BASE_ADDRESS(x) (((x) & 0xFFFFFFFF) << 0)
1001 #define G_030008_BASE_ADDRESS(x) (((x) >> 0) & 0xFFFFFFFF)
1002 #define C_030008_BASE_ADDRESS 0x00000000
1003 #define R_03000C_SQ_TEX_RESOURCE_WORD3_0 0x03000C
1004 #define S_03000C_MIP_ADDRESS(x) (((x) & 0xFFFFFFFF) << 0)
1005 #define G_03000C_MIP_ADDRESS(x) (((x) >> 0) & 0xFFFFFFFF)
1006 #define C_03000C_MIP_ADDRESS 0x00000000
1007 #define R_030010_SQ_TEX_RESOURCE_WORD4_0 0x030010
1008 #define S_030010_FORMAT_COMP_X(x) (((x) & 0x3) << 0)
1009 #define G_030010_FORMAT_COMP_X(x) (((x) >> 0) & 0x3)
1010 #define C_030010_FORMAT_COMP_X 0xFFFFFFFC
1011 #define V_030010_SQ_FORMAT_COMP_UNSIGNED 0x00000000
1012 #define V_030010_SQ_FORMAT_COMP_SIGNED 0x00000001
1013 #define V_030010_SQ_FORMAT_COMP_UNSIGNED_BIASED 0x00000002
1014 #define S_030010_FORMAT_COMP_Y(x) (((x) & 0x3) << 2)
1015 #define G_030010_FORMAT_COMP_Y(x) (((x) >> 2) & 0x3)
1016 #define C_030010_FORMAT_COMP_Y 0xFFFFFFF3
1017 #define S_030010_FORMAT_COMP_Z(x) (((x) & 0x3) << 4)
1018 #define G_030010_FORMAT_COMP_Z(x) (((x) >> 4) & 0x3)
1019 #define C_030010_FORMAT_COMP_Z 0xFFFFFFCF
1020 #define S_030010_FORMAT_COMP_W(x) (((x) & 0x3) << 6)
1021 #define G_030010_FORMAT_COMP_W(x) (((x) >> 6) & 0x3)
1022 #define C_030010_FORMAT_COMP_W 0xFFFFFF3F
1023 #define S_030010_NUM_FORMAT_ALL(x) (((x) & 0x3) << 8)
1024 #define G_030010_NUM_FORMAT_ALL(x) (((x) >> 8) & 0x3)
1025 #define C_030010_NUM_FORMAT_ALL 0xFFFFFCFF
1026 #define V_030010_SQ_NUM_FORMAT_NORM 0x00000000
1027 #define V_030010_SQ_NUM_FORMAT_INT 0x00000001
1028 #define V_030010_SQ_NUM_FORMAT_SCALED 0x00000002
1029 #define S_030010_SRF_MODE_ALL(x) (((x) & 0x1) << 10)
1030 #define G_030010_SRF_MODE_ALL(x) (((x) >> 10) & 0x1)
1031 #define C_030010_SRF_MODE_ALL 0xFFFFFBFF
1032 #define V_030010_SFR_MODE_ZERO_CLAMP_MINUS_ONE 0x00000000
1033 #define V_030010_SFR_MODE_NO_ZERO 0x00000001
1034 #define S_030010_FORCE_DEGAMMA(x) (((x) & 0x1) << 11)
1035 #define G_030010_FORCE_DEGAMMA(x) (((x) >> 11) & 0x1)
1036 #define C_030010_FORCE_DEGAMMA 0xFFFFF7FF
1037 #define S_030010_ENDIAN_SWAP(x) (((x) & 0x3) << 12)
1038 #define G_030010_ENDIAN_SWAP(x) (((x) >> 12) & 0x3)
1039 #define C_030010_ENDIAN_SWAP 0xFFFFCFFF
1040 #define S_030010_REQUEST_SIZE(x) (((x) & 0x3) << 14)
1041 #define G_030010_REQUEST_SIZE(x) (((x) >> 14) & 0x3)
1042 #define C_030010_REQUEST_SIZE 0xFFFF3FFF
1043 #define S_030010_DST_SEL_X(x) (((x) & 0x7) << 16)
1044 #define G_030010_DST_SEL_X(x) (((x) >> 16) & 0x7)
1045 #define C_030010_DST_SEL_X 0xFFF8FFFF
1046 #define V_030010_SQ_SEL_X 0x00000000
1047 #define V_030010_SQ_SEL_Y 0x00000001
1048 #define V_030010_SQ_SEL_Z 0x00000002
1049 #define V_030010_SQ_SEL_W 0x00000003
1050 #define V_030010_SQ_SEL_0 0x00000004
1051 #define V_030010_SQ_SEL_1 0x00000005
1052 #define S_030010_DST_SEL_Y(x) (((x) & 0x7) << 19)
1053 #define G_030010_DST_SEL_Y(x) (((x) >> 19) & 0x7)
1054 #define C_030010_DST_SEL_Y 0xFFC7FFFF
1055 #define S_030010_DST_SEL_Z(x) (((x) & 0x7) << 22)
1056 #define G_030010_DST_SEL_Z(x) (((x) >> 22) & 0x7)
1057 #define C_030010_DST_SEL_Z 0xFE3FFFFF
1058 #define S_030010_DST_SEL_W(x) (((x) & 0x7) << 25)
1059 #define G_030010_DST_SEL_W(x) (((x) >> 25) & 0x7)
1060 #define C_030010_DST_SEL_W 0xF1FFFFFF
1061 #define S_030010_BASE_LEVEL(x) (((x) & 0xF) << 28)
1062 #define G_030010_BASE_LEVEL(x) (((x) >> 28) & 0xF)
1063 #define C_030010_BASE_LEVEL 0x0FFFFFFF
1064 #define R_030014_SQ_TEX_RESOURCE_WORD5_0 0x030014
1065 #define S_030014_LAST_LEVEL(x) (((x) & 0xF) << 0)
1066 #define G_030014_LAST_LEVEL(x) (((x) >> 0) & 0xF)
1067 #define C_030014_LAST_LEVEL 0xFFFFFFF0
1068 #define S_030014_BASE_ARRAY(x) (((x) & 0x1FFF) << 4)
1069 #define G_030014_BASE_ARRAY(x) (((x) >> 4) & 0x1FFF)
1070 #define C_030014_BASE_ARRAY 0xFFFE000F
1071 #define S_030014_LAST_ARRAY(x) (((x) & 0x1FFF) << 17)
1072 #define G_030014_LAST_ARRAY(x) (((x) >> 17) & 0x1FFF)
1073 #define C_030014_LAST_ARRAY 0xC001FFFF
1074 #define R_030018_SQ_TEX_RESOURCE_WORD6_0 0x030018
1075 #define S_030018_PERF_MODULATION(x) (((x) & 0x7) << 3)
1076 #define G_030018_PERF_MODULATION(x) (((x) >> 3) & 0x7)
1077 #define C_030018_PERF_MODULATION 0xFFFFFFC7
1078 #define S_030018_INTERLACED(x) (((x) & 0x1) << 6)
1079 #define G_030018_INTERLACED(x) (((x) >> 6) & 0x1)
1080 #define C_030018_INTERLACED 0xFFFFFFBF
1081 #define R_03001C_SQ_TEX_RESOURCE_WORD7_0 0x03001C
1082 #define S_03001C_TYPE(x) (((x) & 0x3) << 30)
1083 #define G_03001C_TYPE(x) (((x) >> 30) & 0x3)
1084 #define C_03001C_TYPE 0x3FFFFFFF
1085 #define V_03001C_SQ_TEX_VTX_INVALID_TEXTURE 0x00000000
1086 #define V_03001C_SQ_TEX_VTX_INVALID_BUFFER 0x00000001
1087 #define V_03001C_SQ_TEX_VTX_VALID_TEXTURE 0x00000002
1088 #define V_03001C_SQ_TEX_VTX_VALID_BUFFER 0x00000003
1089 #define S_03001C_DATA_FORMAT(x) (((x) & 0x3F) << 0)
1090 #define G_03001C_DATA_FORMAT(x) (((x) >> 0) & 0x3F)
1091 #define C_03001C_DATA_FORMAT 0xFFFFFFC0
1092
1093 #define R_030008_SQ_VTX_CONSTANT_WORD2_0 0x030008
1094 #define S_030008_BASE_ADDRESS_HI(x) (((x) & 0xFF) << 0)
1095 #define G_030008_BASE_ADDRESS_HI(x) (((x) >> 0) & 0xFF)
1096 #define C_030008_BASE_ADDRESS_HI 0xFFFFFF00
1097 #define S_030008_STRIDE(x) (((x) & 0x7FF) << 8)
1098 #define G_030008_STRIDE(x) (((x) >> 8) & 0x7FF)
1099 #define C_030008_STRIDE 0xFFF800FF
1100 #define S_030008_CLAMP_X(x) (((x) & 0x1) << 19)
1101 #define G_030008_CLAMP_X(x) (((x) >> 19) & 0x1)
1102 #define C_030008_CLAMP_X 0xFFF7FFFF
1103 #define S_030008_DATA_FORMAT(x) (((x) & 0x3F) << 20)
1104 #define G_030008_DATA_FORMAT(x) (((x) >> 20) & 0x3F)
1105 #define C_030008_DATA_FORMAT 0xFC0FFFFF
1106 #define V_030008_COLOR_INVALID 0x00000000
1107 #define V_030008_COLOR_8 0x00000001
1108 #define V_030008_COLOR_4_4 0x00000002
1109 #define V_030008_COLOR_3_3_2 0x00000003
1110 #define V_030008_COLOR_16 0x00000005
1111 #define V_030008_COLOR_16_FLOAT 0x00000006
1112 #define V_030008_COLOR_8_8 0x00000007
1113 #define V_030008_COLOR_5_6_5 0x00000008
1114 #define V_030008_COLOR_6_5_5 0x00000009
1115 #define V_030008_COLOR_1_5_5_5 0x0000000A
1116 #define V_030008_COLOR_4_4_4_4 0x0000000B
1117 #define V_030008_COLOR_5_5_5_1 0x0000000C
1118 #define V_030008_COLOR_32 0x0000000D
1119 #define V_030008_COLOR_32_FLOAT 0x0000000E
1120 #define V_030008_COLOR_16_16 0x0000000F
1121 #define V_030008_COLOR_16_16_FLOAT 0x00000010
1122 #define V_030008_COLOR_8_24 0x00000011
1123 #define V_030008_COLOR_8_24_FLOAT 0x00000012
1124 #define V_030008_COLOR_24_8 0x00000013
1125 #define V_030008_COLOR_24_8_FLOAT 0x00000014
1126 #define V_030008_COLOR_10_11_11 0x00000015
1127 #define V_030008_COLOR_10_11_11_FLOAT 0x00000016
1128 #define V_030008_COLOR_11_11_10 0x00000017
1129 #define V_030008_COLOR_11_11_10_FLOAT 0x00000018
1130 #define V_030008_COLOR_2_10_10_10 0x00000019
1131 #define V_030008_COLOR_8_8_8_8 0x0000001A
1132 #define V_030008_COLOR_10_10_10_2 0x0000001B
1133 #define V_030008_COLOR_X24_8_32_FLOAT 0x0000001C
1134 #define V_030008_COLOR_32_32 0x0000001D
1135 #define V_030008_COLOR_32_32_FLOAT 0x0000001E
1136 #define V_030008_COLOR_16_16_16_16 0x0000001F
1137 #define V_030008_COLOR_16_16_16_16_FLOAT 0x00000020
1138 #define V_030008_COLOR_32_32_32_32 0x00000022
1139 #define V_030008_COLOR_32_32_32_32_FLOAT 0x00000023
1140 #define S_030008_NUM_FORMAT_ALL(x) (((x) & 0x3) << 26)
1141 #define G_030008_NUM_FORMAT_ALL(x) (((x) >> 26) & 0x3)
1142 #define C_030008_NUM_FORMAT_ALL 0xF3FFFFFF
1143 #define S_030008_FORMAT_COMP_ALL(x) (((x) & 0x1) << 28)
1144 #define G_030008_FORMAT_COMP_ALL(x) (((x) >> 28) & 0x1)
1145 #define C_030008_FORMAT_COMP_ALL 0xEFFFFFFF
1146 #define S_030008_SRF_MODE_ALL(x) (((x) & 0x1) << 29)
1147 #define G_030008_SRF_MODE_ALL(x) (((x) >> 29) & 0x1)
1148 #define C_030008_SRF_MODE_ALL 0xDFFFFFFF
1149 #define S_030008_ENDIAN_SWAP(x) (((x) & 0x3) << 30)
1150 #define G_030008_ENDIAN_SWAP(x) (((x) >> 30) & 0x3)
1151 #define C_030008_ENDIAN_SWAP 0x3FFFFFFF
1152
1153 #define R_03000C_SQ_VTX_CONSTANT_WORD3_0 0x03000C
1154 #define S_03000C_DST_SEL_X(x) (((x) & 0x7) << 3)
1155 #define G_03000C_DST_SEL_X(x) (((x) >> 3) & 0x7)
1156 #define V_03000C_SQ_SEL_X 0x00000000
1157 #define V_03000C_SQ_SEL_Y 0x00000001
1158 #define V_03000C_SQ_SEL_Z 0x00000002
1159 #define V_03000C_SQ_SEL_W 0x00000003
1160 #define V_03000C_SQ_SEL_0 0x00000004
1161 #define V_03000C_SQ_SEL_1 0x00000005
1162 #define S_03000C_DST_SEL_Y(x) (((x) & 0x7) << 6)
1163 #define G_03000C_DST_SEL_Y(x) (((x) >> 6) & 0x7)
1164 #define S_03000C_DST_SEL_Z(x) (((x) & 0x7) << 9)
1165 #define G_03000C_DST_SEL_Z(x) (((x) >> 9) & 0x7)
1166 #define S_03000C_DST_SEL_W(x) (((x) & 0x7) << 12)
1167 #define G_03000C_DST_SEL_W(x) (((x) >> 12) & 0x7)
1168
1169 #define R_03C000_SQ_TEX_SAMPLER_WORD0_0 0x03C000
1170 #define S_03C000_CLAMP_X(x) (((x) & 0x7) << 0)
1171 #define G_03C000_CLAMP_X(x) (((x) >> 0) & 0x7)
1172 #define C_03C000_CLAMP_X 0xFFFFFFF8
1173 #define V_03C000_SQ_TEX_WRAP 0x00000000
1174 #define V_03C000_SQ_TEX_MIRROR 0x00000001
1175 #define V_03C000_SQ_TEX_CLAMP_LAST_TEXEL 0x00000002
1176 #define V_03C000_SQ_TEX_MIRROR_ONCE_LAST_TEXEL 0x00000003
1177 #define V_03C000_SQ_TEX_CLAMP_HALF_BORDER 0x00000004
1178 #define V_03C000_SQ_TEX_MIRROR_ONCE_HALF_BORDER 0x00000005
1179 #define V_03C000_SQ_TEX_CLAMP_BORDER 0x00000006
1180 #define V_03C000_SQ_TEX_MIRROR_ONCE_BORDER 0x00000007
1181 #define S_03C000_CLAMP_Y(x) (((x) & 0x7) << 3)
1182 #define G_03C000_CLAMP_Y(x) (((x) >> 3) & 0x7)
1183 #define C_03C000_CLAMP_Y 0xFFFFFFC7
1184 #define S_03C000_CLAMP_Z(x) (((x) & 0x7) << 6)
1185 #define G_03C000_CLAMP_Z(x) (((x) >> 6) & 0x7)
1186 #define C_03C000_CLAMP_Z 0xFFFFFE3F
1187 #define S_03C000_XY_MAG_FILTER(x) (((x) & 0x3) << 9)
1188 #define G_03C000_XY_MAG_FILTER(x) (((x) >> 9) & 0x3)
1189 #define C_03C000_XY_MAG_FILTER 0xFFFFF9FF
1190 #define V_03C000_SQ_TEX_XY_FILTER_POINT 0x00000000
1191 #define V_03C000_SQ_TEX_XY_FILTER_BILINEAR 0x00000001
1192 #define S_03C000_XY_MIN_FILTER(x) (((x) & 0x3) << 11)
1193 #define G_03C000_XY_MIN_FILTER(x) (((x) >> 11) & 0x3)
1194 #define C_03C000_XY_MIN_FILTER 0xFFFFE7FF
1195 #define S_03C000_Z_FILTER(x) (((x) & 0x3) << 13)
1196 #define G_03C000_Z_FILTER(x) (((x) >> 13) & 0x3)
1197 #define C_03C000_Z_FILTER 0xFFFF9FFF
1198 #define V_03C000_SQ_TEX_Z_FILTER_NONE 0x00000000
1199 #define V_03C000_SQ_TEX_Z_FILTER_POINT 0x00000001
1200 #define V_03C000_SQ_TEX_Z_FILTER_LINEAR 0x00000002
1201 #define S_03C000_MIP_FILTER(x) (((x) & 0x3) << 15)
1202 #define G_03C000_MIP_FILTER(x) (((x) >> 15) & 0x3)
1203 #define C_03C000_MIP_FILTER 0xFFFE7FFF
1204 #define S_03C000_BORDER_COLOR_TYPE(x) (((x) & 0x3) << 20)
1205 #define G_03C000_BORDER_COLOR_TYPE(x) (((x) >> 20) & 0x3)
1206 #define C_03C000_BORDER_COLOR_TYPE 0xFFCFFFFF
1207 #define V_03C000_SQ_TEX_BORDER_COLOR_TRANS_BLACK 0x00000000
1208 #define V_03C000_SQ_TEX_BORDER_COLOR_OPAQUE_BLACK 0x00000001
1209 #define V_03C000_SQ_TEX_BORDER_COLOR_OPAQUE_WHITE 0x00000002
1210 #define V_03C000_SQ_TEX_BORDER_COLOR_REGISTER 0x00000003
1211 #define S_03C000_DEPTH_COMPARE_FUNCTION(x) (((x) & 0x7) << 22)
1212 #define G_03C000_DEPTH_COMPARE_FUNCTION(x) (((x) >> 22) & 0x7)
1213 #define C_03C000_DEPTH_COMPARE_FUNCTION 0xFE3FFFFF
1214 #define V_03C000_SQ_TEX_DEPTH_COMPARE_NEVER 0x00000000
1215 #define V_03C000_SQ_TEX_DEPTH_COMPARE_LESS 0x00000001
1216 #define V_03C000_SQ_TEX_DEPTH_COMPARE_EQUAL 0x00000002
1217 #define V_03C000_SQ_TEX_DEPTH_COMPARE_LESSEQUAL 0x00000003
1218 #define V_03C000_SQ_TEX_DEPTH_COMPARE_GREATER 0x00000004
1219 #define V_03C000_SQ_TEX_DEPTH_COMPARE_NOTEQUAL 0x00000005
1220 #define V_03C000_SQ_TEX_DEPTH_COMPARE_GREATEREQUAL 0x00000006
1221 #define V_03C000_SQ_TEX_DEPTH_COMPARE_ALWAYS 0x00000007
1222 #define S_03C000_CHROMA_KEY(x) (((x) & 0x3) << 25)
1223 #define G_03C000_CHROMA_KEY(x) (((x) >> 25) & 0x3)
1224 #define C_03C000_CHROMA_KEY 0xF9FFFFFF
1225 #define V_03C000_SQ_TEX_CHROMA_KEY_DISABLE 0x00000000
1226 #define V_03C000_SQ_TEX_CHROMA_KEY_KILL 0x00000001
1227 #define V_03C000_SQ_TEX_CHROMA_KEY_BLEND 0x00000002
1228
1229 #define R_03C004_SQ_TEX_SAMPLER_WORD1_0 0x03C004
1230 #define S_03C004_MIN_LOD(x) (((x) & 0xFFF) << 0)
1231 #define G_03C004_MIN_LOD(x) (((x) >> 0) & 0xFFF)
1232 #define C_03C004_MIN_LOD 0xFFFFF000
1233 #define S_03C004_MAX_LOD(x) (((x) & 0xFFF) << 12)
1234 #define G_03C004_MAX_LOD(x) (((x) >> 12) & 0xFFF)
1235 #define C_03C004_MAX_LOD 0xFF000FFF
1236
1237 #define S_03C004_PERF_MIP(x) (((x) & 0xF) << 24)
1238 #define G_03C004_PERF_MIP(x) (((x) >> 24) & 0xF)
1239 #define C_03C004_PERF_MIP 0xF0FFFFFF
1240 #define S_03C004_PERF_Z(x) (((x) & 0xF) << 28)
1241 #define G_03C004_PERF_Z(x) (((x) >> 24) & 0xF)
1242 #define C_03C004_PERF_Z 0x0FFFFFFF
1243
1244 #define R_03C008_SQ_TEX_SAMPLER_WORD2_0 0x03C008
1245 #define S_03C008_LOD_BIAS(x) (((x) & 0x3FFF) << 0)
1246 #define G_03C008_LOD_BIAS(x) (((x) >> 0) & 0x3FFF)
1247 #define C_03C008_LOD_BIAS 0xFFFFC000
1248 #define S_03C008_LOD_BIAS_SEC(x) (((x) & 0x3F) << 14)
1249 #define G_03C008_LOD_BIAS_SEC(x) (((x) >> 14) & 0x3F)
1250 #define C_03C008_LOD_BIAS_SEC 0xFFF03FFF
1251 #define S_03C008_MC_COORD_TRUNCATE(x) (((x) & 0x1) << 20)
1252 #define G_03C008_MC_COORD_TRUNCATE(x) (((x) >> 20) & 0x1)
1253 #define C_03C008_MC_COORD_TRUNCATE 0xFFEFFFFF
1254 #define S_03C008_FORCE_DEGAMMA(x) (((x) & 0x1) << 21)
1255 #define G_03C008_FORCE_DEGAMMA(x) (((x) >> 21) & 0x1)
1256 #define C_03C008_FORCE_DEGAMMA 0xFFDFFFFF
1257 #define S_03C008_TYPE(x) (((x) & 0x1) << 31)
1258 #define G_03C008_TYPE(x) (((x) >> 31) & 0x1)
1259 #define C_03C008_TYPE 0x7FFFFFFF
1260
1261 #define R_008958_VGT_PRIMITIVE_TYPE 0x008958
1262 #define S_008958_PRIM_TYPE(x) (((x) & 0x3F) << 0)
1263 #define G_008958_PRIM_TYPE(x) (((x) >> 0) & 0x3F)
1264 #define C_008958_PRIM_TYPE 0xFFFFFFC0
1265 #define V_008958_DI_PT_NONE 0x00000000
1266 #define V_008958_DI_PT_POINTLIST 0x00000001
1267 #define V_008958_DI_PT_LINELIST 0x00000002
1268 #define V_008958_DI_PT_LINESTRIP 0x00000003
1269 #define V_008958_DI_PT_TRILIST 0x00000004
1270 #define V_008958_DI_PT_TRIFAN 0x00000005
1271 #define V_008958_DI_PT_TRISTRIP 0x00000006
1272 #define V_008958_DI_PT_UNUSED_0 0x00000007
1273 #define V_008958_DI_PT_UNUSED_1 0x00000008
1274 #define V_008958_DI_PT_UNUSED_2 0x00000009
1275 #define V_008958_DI_PT_LINELIST_ADJ 0x0000000A
1276 #define V_008958_DI_PT_LINESTRIP_ADJ 0x0000000B
1277 #define V_008958_DI_PT_TRILIST_ADJ 0x0000000C
1278 #define V_008958_DI_PT_TRISTRIP_ADJ 0x0000000D
1279 #define V_008958_DI_PT_UNUSED_3 0x0000000E
1280 #define V_008958_DI_PT_UNUSED_4 0x0000000F
1281 #define V_008958_DI_PT_TRI_WITH_WFLAGS 0x00000010
1282 #define V_008958_DI_PT_RECTLIST 0x00000011
1283 #define V_008958_DI_PT_LINELOOP 0x00000012
1284 #define V_008958_DI_PT_QUADLIST 0x00000013
1285 #define V_008958_DI_PT_QUADSTRIP 0x00000014
1286 #define V_008958_DI_PT_POLYGON 0x00000015
1287 #define V_008958_DI_PT_2D_COPY_RECT_LIST_V0 0x00000016
1288 #define V_008958_DI_PT_2D_COPY_RECT_LIST_V1 0x00000017
1289 #define V_008958_DI_PT_2D_COPY_RECT_LIST_V2 0x00000018
1290 #define V_008958_DI_PT_2D_COPY_RECT_LIST_V3 0x00000019
1291 #define V_008958_DI_PT_2D_FILL_RECT_LIST 0x0000001A
1292 #define V_008958_DI_PT_2D_LINE_STRIP 0x0000001B
1293 #define V_008958_DI_PT_2D_TRI_STRIP 0x0000001C
1294 #define R_02881C_PA_CL_VS_OUT_CNTL 0x02881C
1295 #define S_02881C_CLIP_DIST_ENA_0(x) (((x) & 0x1) << 0)
1296 #define G_02881C_CLIP_DIST_ENA_0(x) (((x) >> 0) & 0x1)
1297 #define C_02881C_CLIP_DIST_ENA_0 0xFFFFFFFE
1298 #define S_02881C_CLIP_DIST_ENA_1(x) (((x) & 0x1) << 1)
1299 #define G_02881C_CLIP_DIST_ENA_1(x) (((x) >> 1) & 0x1)
1300 #define C_02881C_CLIP_DIST_ENA_1 0xFFFFFFFD
1301 #define S_02881C_CLIP_DIST_ENA_2(x) (((x) & 0x1) << 2)
1302 #define G_02881C_CLIP_DIST_ENA_2(x) (((x) >> 2) & 0x1)
1303 #define C_02881C_CLIP_DIST_ENA_2 0xFFFFFFFB
1304 #define S_02881C_CLIP_DIST_ENA_3(x) (((x) & 0x1) << 3)
1305 #define G_02881C_CLIP_DIST_ENA_3(x) (((x) >> 3) & 0x1)
1306 #define C_02881C_CLIP_DIST_ENA_3 0xFFFFFFF7
1307 #define S_02881C_CLIP_DIST_ENA_4(x) (((x) & 0x1) << 4)
1308 #define G_02881C_CLIP_DIST_ENA_4(x) (((x) >> 4) & 0x1)
1309 #define C_02881C_CLIP_DIST_ENA_4 0xFFFFFFEF
1310 #define S_02881C_CLIP_DIST_ENA_5(x) (((x) & 0x1) << 5)
1311 #define G_02881C_CLIP_DIST_ENA_5(x) (((x) >> 5) & 0x1)
1312 #define C_02881C_CLIP_DIST_ENA_5 0xFFFFFFDF
1313 #define S_02881C_CLIP_DIST_ENA_6(x) (((x) & 0x1) << 6)
1314 #define G_02881C_CLIP_DIST_ENA_6(x) (((x) >> 6) & 0x1)
1315 #define C_02881C_CLIP_DIST_ENA_6 0xFFFFFFBF
1316 #define S_02881C_CLIP_DIST_ENA_7(x) (((x) & 0x1) << 7)
1317 #define G_02881C_CLIP_DIST_ENA_7(x) (((x) >> 7) & 0x1)
1318 #define C_02881C_CLIP_DIST_ENA_7 0xFFFFFF7F
1319 #define S_02881C_CULL_DIST_ENA_0(x) (((x) & 0x1) << 8)
1320 #define G_02881C_CULL_DIST_ENA_0(x) (((x) >> 8) & 0x1)
1321 #define C_02881C_CULL_DIST_ENA_0 0xFFFFFEFF
1322 #define S_02881C_CULL_DIST_ENA_1(x) (((x) & 0x1) << 9)
1323 #define G_02881C_CULL_DIST_ENA_1(x) (((x) >> 9) & 0x1)
1324 #define C_02881C_CULL_DIST_ENA_1 0xFFFFFDFF
1325 #define S_02881C_CULL_DIST_ENA_2(x) (((x) & 0x1) << 10)
1326 #define G_02881C_CULL_DIST_ENA_2(x) (((x) >> 10) & 0x1)
1327 #define C_02881C_CULL_DIST_ENA_2 0xFFFFFBFF
1328 #define S_02881C_CULL_DIST_ENA_3(x) (((x) & 0x1) << 11)
1329 #define G_02881C_CULL_DIST_ENA_3(x) (((x) >> 11) & 0x1)
1330 #define C_02881C_CULL_DIST_ENA_3 0xFFFFF7FF
1331 #define S_02881C_CULL_DIST_ENA_4(x) (((x) & 0x1) << 12)
1332 #define G_02881C_CULL_DIST_ENA_4(x) (((x) >> 12) & 0x1)
1333 #define C_02881C_CULL_DIST_ENA_4 0xFFFFEFFF
1334 #define S_02881C_CULL_DIST_ENA_5(x) (((x) & 0x1) << 13)
1335 #define G_02881C_CULL_DIST_ENA_5(x) (((x) >> 13) & 0x1)
1336 #define C_02881C_CULL_DIST_ENA_5 0xFFFFDFFF
1337 #define S_02881C_CULL_DIST_ENA_6(x) (((x) & 0x1) << 14)
1338 #define G_02881C_CULL_DIST_ENA_6(x) (((x) >> 14) & 0x1)
1339 #define C_02881C_CULL_DIST_ENA_6 0xFFFFBFFF
1340 #define S_02881C_CULL_DIST_ENA_7(x) (((x) & 0x1) << 15)
1341 #define G_02881C_CULL_DIST_ENA_7(x) (((x) >> 15) & 0x1)
1342 #define C_02881C_CULL_DIST_ENA_7 0xFFFF7FFF
1343 #define S_02881C_USE_VTX_POINT_SIZE(x) (((x) & 0x1) << 16)
1344 #define G_02881C_USE_VTX_POINT_SIZE(x) (((x) >> 16) & 0x1)
1345 #define C_02881C_USE_VTX_POINT_SIZE 0xFFFEFFFF
1346 #define S_02881C_USE_VTX_EDGE_FLAG(x) (((x) & 0x1) << 17)
1347 #define G_02881C_USE_VTX_EDGE_FLAG(x) (((x) >> 17) & 0x1)
1348 #define C_02881C_USE_VTX_EDGE_FLAG 0xFFFDFFFF
1349 #define S_02881C_USE_VTX_RENDER_TARGET_INDX(x) (((x) & 0x1) << 18)
1350 #define G_02881C_USE_VTX_RENDER_TARGET_INDX(x) (((x) >> 18) & 0x1)
1351 #define C_02881C_USE_VTX_RENDER_TARGET_INDX 0xFFFBFFFF
1352 #define S_02881C_USE_VTX_VIEWPORT_INDX(x) (((x) & 0x1) << 19)
1353 #define G_02881C_USE_VTX_VIEWPORT_INDX(x) (((x) >> 19) & 0x1)
1354 #define C_02881C_USE_VTX_VIEWPORT_INDX 0xFFF7FFFF
1355 #define S_02881C_USE_VTX_KILL_FLAG(x) (((x) & 0x1) << 20)
1356 #define G_02881C_USE_VTX_KILL_FLAG(x) (((x) >> 20) & 0x1)
1357 #define C_02881C_USE_VTX_KILL_FLAG 0xFFEFFFFF
1358 #define S_02881C_VS_OUT_MISC_VEC_ENA(x) (((x) & 0x1) << 21)
1359 #define G_02881C_VS_OUT_MISC_VEC_ENA(x) (((x) >> 21) & 0x1)
1360 #define C_02881C_VS_OUT_MISC_VEC_ENA 0xFFDFFFFF
1361 #define S_02881C_VS_OUT_CCDIST0_VEC_ENA(x) (((x) & 0x1) << 22)
1362 #define G_02881C_VS_OUT_CCDIST0_VEC_ENA(x) (((x) >> 22) & 0x1)
1363 #define C_02881C_VS_OUT_CCDIST0_VEC_ENA 0xFFBFFFFF
1364 #define S_02881C_VS_OUT_CCDIST1_VEC_ENA(x) (((x) & 0x1) << 23)
1365 #define G_02881C_VS_OUT_CCDIST1_VEC_ENA(x) (((x) >> 23) & 0x1)
1366 #define C_02881C_VS_OUT_CCDIST1_VEC_ENA 0xFF7FFFFF
1367 /* diff */
1368 #define R_028860_SQ_PGM_RESOURCES_VS 0x028860
1369 #define S_028860_NUM_GPRS(x) (((x) & 0xFF) << 0)
1370 #define G_028860_NUM_GPRS(x) (((x) >> 0) & 0xFF)
1371 #define C_028860_NUM_GPRS 0xFFFFFF00
1372 #define S_028860_STACK_SIZE(x) (((x) & 0xFF) << 8)
1373 #define G_028860_STACK_SIZE(x) (((x) >> 8) & 0xFF)
1374 #define C_028860_STACK_SIZE 0xFFFF00FF
1375 #define S_028860_DX10_CLAMP(x) (((x) & 0x1) << 21)
1376 #define G_028860_DX10_CLAMP(x) (((x) >> 21) & 0x1)
1377 #define C_028860_DX10_CLAMP 0xFFDFFFFF
1378 #define S_028860_UNCACHED_FIRST_INST(x) (((x) & 0x1) << 28)
1379 #define G_028860_UNCACHED_FIRST_INST(x) (((x) >> 28) & 0x1)
1380 #define C_028860_UNCACHED_FIRST_INST 0xEFFFFFFF
1381 #define R_028864_SQ_PGM_RESOURCES_2_VS 0x028864
1382
1383 #define R_028844_SQ_PGM_RESOURCES_PS 0x028844
1384 #define S_028844_NUM_GPRS(x) (((x) & 0xFF) << 0)
1385 #define G_028844_NUM_GPRS(x) (((x) >> 0) & 0xFF)
1386 #define C_028844_NUM_GPRS 0xFFFFFF00
1387 #define S_028844_STACK_SIZE(x) (((x) & 0xFF) << 8)
1388 #define G_028844_STACK_SIZE(x) (((x) >> 8) & 0xFF)
1389 #define C_028844_STACK_SIZE 0xFFFF00FF
1390 #define S_028844_DX10_CLAMP(x) (((x) & 0x1) << 21)
1391 #define G_028844_DX10_CLAMP(x) (((x) >> 21) & 0x1)
1392 #define C_028844_DX10_CLAMP 0xFFDFFFFF
1393 #define S_028844_PRIME_CACHE_ON_DRAW(x) (((x) & 0x1) << 23)
1394 #define G_028844_PRIME_CACHE_ON_DRAW(x) (((x) >> 23) & 0x1)
1395
1396 #define S_028844_UNCACHED_FIRST_INST(x) (((x) & 0x1) << 28)
1397 #define G_028844_UNCACHED_FIRST_INST(x) (((x) >> 28) & 0x1)
1398 #define C_028844_UNCACHED_FIRST_INST 0xEFFFFFFF
1399 #define S_028844_CLAMP_CONSTS(x) (((x) & 0x1) << 31)
1400 #define G_028844_CLAMP_CONSTS(x) (((x) >> 31) & 0x1)
1401 #define C_028844_CLAMP_CONSTS 0x7FFFFFFF
1402 #define R_028848_SQ_PGM_RESOURCES_2_PS 0x028848
1403
1404 #define R_028644_SPI_PS_INPUT_CNTL_0 0x028644
1405 #define S_028644_SEMANTIC(x) (((x) & 0xFF) << 0)
1406 #define G_028644_SEMANTIC(x) (((x) >> 0) & 0xFF)
1407 #define C_028644_SEMANTIC 0xFFFFFF00
1408 #define S_028644_DEFAULT_VAL(x) (((x) & 0x3) << 8)
1409 #define G_028644_DEFAULT_VAL(x) (((x) >> 8) & 0x3)
1410 #define C_028644_DEFAULT_VAL 0xFFFFFCFF
1411 #define S_028644_FLAT_SHADE(x) (((x) & 0x1) << 10)
1412 #define G_028644_FLAT_SHADE(x) (((x) >> 10) & 0x1)
1413 #define C_028644_FLAT_SHADE 0xFFFFFBFF
1414 #define S_028644_SEL_CENTROID(x) (((x) & 0x1) << 11)
1415 #define G_028644_SEL_CENTROID(x) (((x) >> 11) & 0x1)
1416 #define C_028644_SEL_CENTROID 0xFFFFF7FF
1417 #define S_028644_SEL_LINEAR(x) (((x) & 0x1) << 12)
1418 #define G_028644_SEL_LINEAR(x) (((x) >> 12) & 0x1)
1419 #define C_028644_SEL_LINEAR 0xFFFFEFFF
1420 #define S_028644_CYL_WRAP(x) (((x) & 0xF) << 13)
1421 #define G_028644_CYL_WRAP(x) (((x) >> 13) & 0xF)
1422 #define C_028644_CYL_WRAP 0xFFFE1FFF
1423 #define S_028644_PT_SPRITE_TEX(x) (((x) & 0x1) << 17)
1424 #define G_028644_PT_SPRITE_TEX(x) (((x) >> 17) & 0x1)
1425 #define C_028644_PT_SPRITE_TEX 0xFFFDFFFF
1426 #define S_028644_SEL_SAMPLE(x) (((x) & 0x1) << 18)
1427 #define G_028644_SEL_SAMPLE(x) (((x) >> 18) & 0x1)
1428 #define C_028644_SEL_SAMPLE 0xFFFBFFFF
1429 #define R_0286D4_SPI_INTERP_CONTROL_0 0x0286D4
1430 #define S_0286D4_FLAT_SHADE_ENA(x) (((x) & 0x1) << 0)
1431 #define G_0286D4_FLAT_SHADE_ENA(x) (((x) >> 0) & 0x1)
1432 #define C_0286D4_FLAT_SHADE_ENA 0xFFFFFFFE
1433 #define S_0286D4_PNT_SPRITE_ENA(x) (((x) & 0x1) << 1)
1434 #define G_0286D4_PNT_SPRITE_ENA(x) (((x) >> 1) & 0x1)
1435 #define C_0286D4_PNT_SPRITE_ENA 0xFFFFFFFD
1436 #define S_0286D4_PNT_SPRITE_OVRD_X(x) (((x) & 0x7) << 2)
1437 #define G_0286D4_PNT_SPRITE_OVRD_X(x) (((x) >> 2) & 0x7)
1438 #define C_0286D4_PNT_SPRITE_OVRD_X 0xFFFFFFE3
1439 #define S_0286D4_PNT_SPRITE_OVRD_Y(x) (((x) & 0x7) << 5)
1440 #define G_0286D4_PNT_SPRITE_OVRD_Y(x) (((x) >> 5) & 0x7)
1441 #define C_0286D4_PNT_SPRITE_OVRD_Y 0xFFFFFF1F
1442 #define S_0286D4_PNT_SPRITE_OVRD_Z(x) (((x) & 0x7) << 8)
1443 #define G_0286D4_PNT_SPRITE_OVRD_Z(x) (((x) >> 8) & 0x7)
1444 #define C_0286D4_PNT_SPRITE_OVRD_Z 0xFFFFF8FF
1445 #define S_0286D4_PNT_SPRITE_OVRD_W(x) (((x) & 0x7) << 11)
1446 #define G_0286D4_PNT_SPRITE_OVRD_W(x) (((x) >> 11) & 0x7)
1447 #define C_0286D4_PNT_SPRITE_OVRD_W 0xFFFFC7FF
1448 #define S_0286D4_PNT_SPRITE_TOP_1(x) (((x) & 0x1) << 14)
1449 #define G_0286D4_PNT_SPRITE_TOP_1(x) (((x) >> 14) & 0x1)
1450 #define C_0286D4_PNT_SPRITE_TOP_1 0xFFFFBFFF
1451
1452 #define SQ_TEX_INST_LD 0x03
1453 #define SQ_TEX_INST_GET_GRADIENTS_H 0x7
1454 #define SQ_TEX_INST_GET_GRADIENTS_V 0x8
1455
1456 #define SQ_TEX_INST_SAMPLE 0x10
1457 #define SQ_TEX_INST_SAMPLE_L 0x11
1458 #define SQ_TEX_INST_SAMPLE_C 0x18
1459 #endif