Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
2176 | serge | 1 | |
2 | |||
3 | |||
4 | #include "drm.h" |
||
5 | #include "radeon_drm.h" |
||
6 | #include "radeon.h" |
||
7 | |||
8 | |||
9 | #include "r600_reg.h" |
||
10 | #include "r600_reg_auto_r6xx.h" |
||
11 | #include "r600_reg_r6xx.h" |
||
12 | #include "r600_reg_r7xx.h" |
||
13 | |||
14 | |||
15 | |||
16 | |||
17 | vertex format |
||
18 | |||
19 | |||
20 | { |
||
21 | float x, y; |
||
22 | float s, t; |
||
23 | }; |
||
24 | |||
25 | |||
26 | |||
27 | |||
28 | FETCH R0 |
||
29 | EXP_DONE POS0, R0.XY01 |
||
30 | EXT_DONE PARAM0, R0.ZW01 |
||
31 | */ |
||
32 | |||
33 | |||
34 | { |
||
35 | |||
36 | |||
37 | CF_DWORD0(ADDR(4)), |
||
38 | CF_DWORD1(POP_COUNT(0), |
||
39 | CF_CONST(0), |
||
40 | COND(SQ_CF_COND_ACTIVE), |
||
41 | /* I_COUNT(1),*/ 0, |
||
42 | CALL_COUNT(0), |
||
43 | END_OF_PROGRAM(0), |
||
44 | VALID_PIXEL_MODE(0), |
||
45 | CF_INST(SQ_CF_INST_VTX), |
||
46 | WHOLE_QUAD_MODE(0), |
||
47 | BARRIER(1)), |
||
48 | /* 1 */ |
||
49 | CF_ALLOC_IMP_EXP_DWORD0( |
||
50 | ARRAY_BASE(CF_POS0), |
||
51 | TYPE(SQ_EXPORT_POS), |
||
52 | RW_GPR(0), |
||
53 | RW_REL(ABSOLUTE), |
||
54 | INDEX_GPR(0), |
||
55 | ELEM_SIZE(0)), |
||
56 | CF_ALLOC_IMP_EXP_DWORD1_SWIZ( |
||
57 | SRC_SEL_X(SQ_SEL_X), |
||
58 | SRC_SEL_Y(SQ_SEL_Y), |
||
59 | SRC_SEL_Z(SQ_SEL_0), |
||
60 | SRC_SEL_W(SQ_SEL_1), |
||
61 | R6xx_ELEM_LOOP(0), |
||
62 | BURST_COUNT(0), |
||
63 | END_OF_PROGRAM(0), |
||
64 | VALID_PIXEL_MODE(0), |
||
65 | CF_INST(SQ_CF_INST_EXPORT_DONE), |
||
66 | WHOLE_QUAD_MODE(0), |
||
67 | BARRIER(1)), |
||
68 | /* 2 */ |
||
69 | CF_ALLOC_IMP_EXP_DWORD0( |
||
70 | ARRAY_BASE(0), |
||
71 | TYPE(SQ_EXPORT_PARAM), |
||
72 | RW_GPR(0), |
||
73 | RW_REL(ABSOLUTE), |
||
74 | INDEX_GPR(0), |
||
75 | ELEM_SIZE(0)), |
||
76 | CF_ALLOC_IMP_EXP_DWORD1_SWIZ( |
||
77 | SRC_SEL_X(SQ_SEL_Z), |
||
78 | SRC_SEL_Y(SQ_SEL_W), |
||
79 | SRC_SEL_Z(SQ_SEL_0), |
||
80 | SRC_SEL_W(SQ_SEL_1), |
||
81 | R6xx_ELEM_LOOP(0), |
||
82 | BURST_COUNT(0), |
||
83 | END_OF_PROGRAM(1), |
||
84 | VALID_PIXEL_MODE(0), |
||
85 | CF_INST(SQ_CF_INST_EXPORT_DONE), |
||
86 | WHOLE_QUAD_MODE(0), |
||
87 | BARRIER(0)), |
||
88 | /* 3 */ |
||
89 | 0x00000000, |
||
90 | 0x00000000, |
||
91 | /* 4/5 */ |
||
92 | VTX_DWORD0(VTX_INST(SQ_VTX_INST_FETCH), |
||
93 | FETCH_TYPE(SQ_VTX_FETCH_VERTEX_DATA), |
||
94 | FETCH_WHOLE_QUAD(0), |
||
95 | BUFFER_ID(0), |
||
96 | SRC_GPR(0), |
||
97 | SRC_REL(ABSOLUTE), |
||
98 | SRC_SEL_X(SQ_SEL_X), |
||
99 | MEGA_FETCH_COUNT(16)), |
||
100 | VTX_DWORD1_GPR(DST_GPR(0), |
||
101 | DST_REL(0), |
||
102 | DST_SEL_X(SQ_SEL_X), |
||
103 | DST_SEL_Y(SQ_SEL_Y), |
||
104 | DST_SEL_Z(SQ_SEL_Z), |
||
105 | DST_SEL_W(SQ_SEL_W), |
||
106 | USE_CONST_FIELDS(0), |
||
107 | DATA_FORMAT(FMT_32_32_32_32_FLOAT), |
||
108 | NUM_FORMAT_ALL(SQ_NUM_FORMAT_SCALED), |
||
109 | FORMAT_COMP_ALL(SQ_FORMAT_COMP_SIGNED), |
||
110 | SRF_MODE_ALL(SRF_MODE_ZERO_CLAMP_MINUS_ONE)), |
||
111 | VTX_DWORD2(OFFSET(0), |
||
112 | ENDIAN_SWAP(SQ_ENDIAN_NONE), |
||
113 | CONST_BUF_NO_STRIDE(0), |
||
114 | MEGA_FETCH(1)), |
||
115 | VTX_DWORD_PAD |
||
116 | }; |
||
117 | |||
118 | |||
119 | |||
120 | pixel shader |
||
121 | |||
122 | |||
123 | 0 SAMPLE R0, v0.xy01, t0, s0 |
||
124 | |||
125 | |||
126 | |||
127 | |||
128 | |||
129 | 2 KILLNE ____, R1.x___, c0.x___ |
||
130 | |||
131 | |||
132 | |||
133 | |||
134 | |||
135 | |||
136 | uint32_t R600_video_ps[]= |
||
137 | { |
||
138 | /* CF INST 0 */ |
||
139 | CF_DWORD0(ADDR(2)), |
||
140 | CF_DWORD1(POP_COUNT(0), |
||
141 | CF_CONST(0), |
||
142 | COND(SQ_CF_COND_ACTIVE), |
||
143 | /* I_COUNT(1), */ 0, |
||
144 | CALL_COUNT(0), |
||
145 | END_OF_PROGRAM(0), |
||
146 | VALID_PIXEL_MODE(0), |
||
147 | CF_INST(SQ_CF_INST_TEX), |
||
148 | WHOLE_QUAD_MODE(0), |
||
149 | BARRIER(1)), |
||
150 | |||
151 | |||
152 | /* CF INST 1 */ |
||
153 | CF_ALU_DWORD0(ADDR( ), |
||
154 | KCACHE_BANK0(0), |
||
155 | KCACHE_BANK1(0), |
||
156 | KCACHE_MODE0(SQ_CF_KCACHE_NOP)); |
||
157 | CF_ALU_DWORD1(KCACHE_MODE1(SQ_CF_KCACHE_NOP), |
||
158 | KCACHE_ADDR0(0), |
||
159 | KCACHE_ADDR1(0), |
||
160 | I_COUNT(1), |
||
161 | USES_WATERFALL(0), |
||
162 | CF_INST(SQ_CF_INST_ALU), |
||
163 | WHOLE_QUAD_MODE(0), |
||
164 | BARRIER(1)); |
||
165 | #endif |
||
166 | |||
167 | |||
168 | CF_ALLOC_IMP_EXP_DWORD0(ARRAY_BASE(CF_PIXEL_MRT0), |
||
169 | TYPE(SQ_EXPORT_PIXEL), |
||
170 | RW_GPR(0), |
||
171 | RW_REL(ABSOLUTE), |
||
172 | INDEX_GPR(0), |
||
173 | ELEM_SIZE(1)), |
||
174 | CF_ALLOC_IMP_EXP_DWORD1_SWIZ(SRC_SEL_X(SQ_SEL_X), |
||
175 | SRC_SEL_Y(SQ_SEL_Y), |
||
176 | SRC_SEL_Z(SQ_SEL_Z), |
||
177 | SRC_SEL_W(SQ_SEL_W), |
||
178 | R6xx_ELEM_LOOP(0), |
||
179 | BURST_COUNT(1), |
||
180 | END_OF_PROGRAM(1), |
||
181 | VALID_PIXEL_MODE(0), |
||
182 | CF_INST(SQ_CF_INST_EXPORT_DONE), |
||
183 | WHOLE_QUAD_MODE(0), |
||
184 | BARRIER(1)), |
||
185 | |||
186 | |||
187 | /* KILLNE c0.x, r1.x */ |
||
188 | ALU_DWORD0(SRC0_SEL(ALU_SRC_CFILE_BASE + 0), |
||
189 | SRC0_REL(ABSOLUTE), |
||
190 | SRC0_ELEM(ELEM_X), |
||
191 | SRC0_NEG(0), |
||
192 | SRC1_SEL(ALU_SRC_GPR_BASE + 1), |
||
193 | SRC1_REL(ABSOLUTE), |
||
194 | SRC1_ELEM(ELEM_X), |
||
195 | SRC1_NEG(0), |
||
196 | INDEX_MODE(SQ_INDEX_LOOP), |
||
197 | PRED_SEL(SQ_PRED_SEL_OFF), |
||
198 | LAST(1)), |
||
199 | R7xx_ALU_DWORD1_OP2(SRC0_ABS(0), |
||
200 | SRC1_ABS(0), |
||
201 | UPDATE_EXECUTE_MASK(0), |
||
202 | UPDATE_PRED(0), |
||
203 | WRITE_MASK(0), |
||
204 | FOG_MERGE(0), |
||
205 | OMOD(SQ_ALU_OMOD_OFF), |
||
206 | ALU_INST(SQ_OP2_INST_KILLNE), |
||
207 | BANK_SWIZZLE(SQ_ALU_VEC_012), |
||
208 | DST_GPR(0), |
||
209 | DST_REL(ABSOLUTE), |
||
210 | DST_ELEM(ELEM_X), |
||
211 | CLAMP(0)), |
||
212 | |||
213 | |||
214 | |||
215 | |||
216 | TEX_DWORD0(TEX_INST(SQ_TEX_INST_SAMPLE), |
||
217 | BC_FRAC_MODE(0), |
||
218 | FETCH_WHOLE_QUAD(0), |
||
219 | RESOURCE_ID(0), |
||
220 | SRC_GPR(0), |
||
221 | SRC_REL(ABSOLUTE), |
||
222 | R7xx_ALT_CONST(0)), |
||
223 | TEX_DWORD1(DST_GPR(0), |
||
224 | DST_REL(ABSOLUTE), |
||
225 | DST_SEL_X(SQ_SEL_X), /* R */ |
||
226 | DST_SEL_Y(SQ_SEL_Y), /* G */ |
||
227 | DST_SEL_Z(SQ_SEL_Z), /* B */ |
||
228 | DST_SEL_W(SQ_SEL_W), /* A */ |
||
229 | LOD_BIAS(0), |
||
230 | COORD_TYPE_X(TEX_UNNORMALIZED), |
||
231 | COORD_TYPE_Y(TEX_UNNORMALIZED), |
||
232 | COORD_TYPE_Z(TEX_UNNORMALIZED), |
||
233 | COORD_TYPE_W(TEX_UNNORMALIZED)), |
||
234 | TEX_DWORD2(OFFSET_X(0), |
||
235 | OFFSET_Y(0), |
||
236 | OFFSET_Z(0), |
||
237 | SAMPLER_ID(0), |
||
238 | SRC_SEL_X(SQ_SEL_X), |
||
239 | SRC_SEL_Y(SQ_SEL_Y), |
||
240 | SRC_SEL_Z(SQ_SEL_0), |
||
241 | SRC_SEL_W(SQ_SEL_1)), |
||
242 | TEX_DWORD_PAD |
||
243 | |||
244 | |||
245 | TEX_DWORD0(TEX_INST(SQ_TEX_INST_SAMPLE), |
||
246 | BC_FRAC_MODE(0), |
||
247 | FETCH_WHOLE_QUAD(0), |
||
248 | RESOURCE_ID(1), |
||
249 | SRC_GPR(0), |
||
250 | SRC_REL(ABSOLUTE), |
||
251 | R7xx_ALT_CONST(0)), |
||
252 | TEX_DWORD1(DST_GPR(1), |
||
253 | DST_REL(ABSOLUTE), |
||
254 | DST_SEL_X(SQ_SEL_X), /* R */ |
||
255 | DST_SEL_Y(SQ_SEL_MASK), /* G */ |
||
256 | DST_SEL_Z(SQ_SEL_MASK), /* B */ |
||
257 | DST_SEL_W(SQ_SEL_MASK), /* A */ |
||
258 | LOD_BIAS(0), |
||
259 | COORD_TYPE_X(TEX_UNNORMALIZED), |
||
260 | COORD_TYPE_Y(TEX_UNNORMALIZED), |
||
261 | COORD_TYPE_Z(TEX_UNNORMALIZED), |
||
262 | COORD_TYPE_W(TEX_UNNORMALIZED)), |
||
263 | TEX_DWORD2(OFFSET_X(0), |
||
264 | OFFSET_Y(0), |
||
265 | OFFSET_Z(0), |
||
266 | SAMPLER_ID(0), |
||
267 | SRC_SEL_X(SQ_SEL_X), |
||
268 | SRC_SEL_Y(SQ_SEL_Y), |
||
269 | SRC_SEL_Z(SQ_SEL_0), |
||
270 | SRC_SEL_W(SQ_SEL_1)), |
||
271 | TEX_DWORD_PAD |
||
272 | |||
273 | |||
274 | }; |
||
275 | |||
276 | |||
277 | const u32 r600_video_vs_size = ARRAY_SIZE(R600_video_vs); |
||
278 |