highleveltest 6.28 KB

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