highleveltest
6.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
Relative priority
General DP testing
hsa - XY, CVG
rmoore - Attr precision
random cs/ms stalls in verilog DP
XY,CVG pixel coverage sample test
===============================================================================
some small test cases that bothered the AS (not that i have the data).
0) null triangles
2 coincident points
apps/rdpcov/test021:
Null triangles: single point, one line, "really small"
zero-area triangles (single point and single line)
get completely rejected. (nothing drawn)
"really small" triangles correctly cover a couple points.
(THIS TEST PASSES, 10/21)
1) basic triangles, shared edges between 2 triangles should
sum to full coverage.
apps/rdpcov/test000:
4 triangle quad, interior edges should be full
coverage.
(THIS TEST PASSES, 10/21)
apps/rdpcov/test022:
6 pairs of triangles, testing all combinations of
edge types meeting each other. Interior (meeting)
edges should be full coverage.
(THIS TEST PASSES, 10/21)
2) horizontal top and bottom edge
horiz, shallow (<1 pixel) top and bottom edge
shared between 2 triangles with sum to full coverage
apps/rdpcov/test023:
3 pairs of triangles, testing horizontal and
nearly horizontal shared edges, should be full coverage.
(THIS TEST PASSES, 10/21)
apps/rdpcov/test026
big diamond with horizontal (or nearly so) edges.
(THIS TEST PASSES, 10/24)
3) quad mesh subpixel vertex (6 triangles meeting)
at and between pixel grid
horiz/vert, shallow, near 1 slopes
sum to full coverage
apps/rdpcov/test024:
8 triangles in a mesh, testing horizontal and
vertical (and nearly so) shared edges, plus
meeting pont of 6 triangles. Should sum to full
coverage.
Slight rotation okay, too.
(THIS TEST PASSES, 10/21)
apps/rdpcov/test027
6 triangles meeting at a shared vertex
(THIS TEST PASSES, 10/24)
apps/rdpcov/test029
small triangle mesh
(THIS TEST PASSES, 10/24)
4) pinwheel subpixel vertex (pole of quad mesh sphere)
many triangles, some of which are null (repeated vertex)
sum to full coverage
apps/rdpcov/test009:
8 triangles in a pinwheel, overlayed by
8 more triangles in a smaller pinwheel.
Slight rotation okay, too.
(THIS TEST PASSES, 10/21)
apps/rdpcov/test030
21 triangles in a pinwheel.
(THIS TEST PASSES, 10/24)
5) subpixel triangles (sillohuette of sphere, horizon of landscape)
triangle area is subpixel (small)
triangle width is subpixel (long and skinny)
horiz/vert, shallow, near 1 slopes
sum to full coverage
apps/bigtest (the famous donut)
apps/rdpcov/test005
apps/rdpcov/test028
long skinny triangles.
(THIS TEST FAILS, 10/24)
apps/rdpcov/test029
small triangle mesh
(THIS TEST PASSES, 10/24)
6) overlapped spans
full coverage can be tested by
- run Kevin's backend/filter program, examining pseudo-color
coverage image.
- XOR the mask on output, look for zeros
add the coverage value unclamped, look for not 1
the above can be tested in 2D (if no backfaces or overlap).
testing in 3D introduces Z merge conditionals
*** should run "animation" tests on all these cases. Rotate 0-90 degrees,
etc.
Attribute iteration precision testing
===============================================================================
5) attribute error, texture coords
screen size quad, black/white texture with transition
crossing shared edge, eg stripes
vertices to make shared edge be
major/major L-R, R-L
major/minor L-L, R-R
minor/minor L-R, R-L
horiz/vert, shallow, near 1 slopes
visual inspection for discontinuity on shared edge
5a) same as 5, but look for adjacent pixel color and depth
values along shared edge differing by > abs dx,dy
6) attribute error, depth
shallow dz edge merge with large dz edge
(sillohuette of coarse torus)
horiz/vert, shallow, near 1 slopes
sum to full coverage
7) attribute error, color and depth
rapid color change in subpixel sillohette triangles
horiz/vert, shallow, near 1 slopes
look for color and depth values outside of vertex values
General RDP modes testing
===============================================================================
1 clock pixels (all unit doing useful work, ie textured pixels)
2 clock pixels (all unit doing useful work, ie textured pixels)
make sure no units are doing similar data thru datapaths between the
clocks. IE. don't let the combiner do the same op in 2 clocks
copy
fill
attribute/primitive synchonization
random stalls in cs input and memspan i/o
only meaningfull in verilog RDP
pipe/load/tile/full syncs
Texture modes
===============================================================================
format: all RGB and CI formats
type: mipmaped, detailed ...
Color Indexed pixels
===============================================================================
copy mode + CI framebuffer
1 or 2 clock mode and CI framebuffer
32 bit pixels?
===============================================================================
textures
===============================================================================
LOD
---
0) 1-cycle mode, lod disabled (point sample / filter)
1) mipmaps, 2-cycle mode, lod enabled, filter enabled, verify trilerp
2) magnify with sharpen enabled
3) magnify with detail enabled
4) magnify with texture edge enabled
5) magnify with no special modes enabled
6) 2-cycle mode, lod disabled => combine 2 arbitrary textures
7) 1-cycle/2-cycle sparse mipmaps (do this last. not a priority)
PERSPECTIVE CORRECTION
----------------------
0) ground face(s) with checkerboard pattern off to the horizon.
(with and without lod enabled)
1) the maximum %error of the persective divide should be < 0.1% but watch
for lsb noise when the texture coordinates are large.
2) perspective correction across shared edge of big quad.
COORDINATE ADJUSTMENT
---------------------
0) for both s and t verify clamp, wrap, mirror, clamp && wrap, clamp && mirror.
repeat with copy enabled.
TIMING
------
0) verify timing of interleaved primitives/loads/syncs etc. watch for potential
pipeline timing problems.
1) verify timing of all input data (attribute, primitive, pixel)
2) verify that 2-cycle delta due to tlut_en is handled correctly
3) watch for collisions on the copy_load bus. make sure tm and ms agree on the
tristate control.
OTHER
-----
0) verify all 10 texel types and sizes
1) verify load_tile, load_block, load_tlut