Subversion Repositories Kolibri OS

Rev

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