| fixed | depth bounds 0.125 to 0.375 reject a pixel whose buffer holds 0.5, its fragment at 0.25 | exact | a quad over the target at 0.25 over a buffer of 0.5, the bounds test against the buffer: 4096 wrong pixels, 4096 drawn where the target should keep its clear, 0 left clear where something should be drawn; the first at (0, 0) is ff 00 00 ff, expected 00 00 ff ff |
| fixed | depth bounds 0.625 to 0.875 reject a pixel whose buffer holds 0.5, its fragment at 0.25 | exact | a quad over the target at 0.25 over a buffer of 0.5, the bounds test against the buffer: 4096 wrong pixels, 4096 drawn where the target should keep its clear, 0 left clear where something should be drawn; the first at (0, 0) is ff 00 00 ff, expected 00 00 ff ff |
| coverage | four raster samples write 0xf where a pixel is covered | exact | |
| coverage | the standard four samples split a pixel at its centre as 0x5 | exact | |
| coverage | two raster samples write 0x3, and 0x2 where a pixel's centre cuts them | exact | |
| coverage | eight raster samples write 0xff, and 0x3a where a pixel's centre cuts them | exact | |
| coverage | the sample mask is in the mask written | exact | |
| coverage | positions the list sets split a pixel as 0x3 where the standard give 0x5 | exact | |
| coverage | every sample at the centre leaves a pixel cut a quarter in unwritten | exact | |
| coverage | odd columns of the 2 by 2 grid take their own positions | exact | |
| coverage | alpha to coverage at one covers every sample | exact | |
| coverage | alpha to coverage at one keeps to the sample mask | exact | |
| coverage | alpha to one keeps the coverage the shader's alpha gave | exact | |
| coverage | rgba modulation scales every channel by the share of samples covered | exact | |
| coverage | rgb modulation leaves alpha whole | exact | |
| coverage | alpha modulation leaves the colour whole | exact | |
| coverage | a second target is modulated and keeps its own write mask | exact | |
| coverage | the modulation table takes the place of the share | exact | |
| coverage | a pixel cut at its centre is modulated by the two samples it covers | exact | |
| coverage | over a four sample depth image a one sample target receives the coverage the depth test left | exact | |
| coverage | a four sample texture fetches the sample it names | exact | |
| coverage | coverage to color writes each sample the coverage left after the depth test | exact | |
| msaa | a 4x ZF32 target cleared to 0.75 holds the float at every sample | exact | |
| msaa | a conservative triangle covers every sample of each pixel it crosses | exact | |
| sampling | the minimum reduction takes the lesser texel | exact | |
| sampling | the maximum reduction takes the greater texel | exact | |
| order | a block of 64 uses all 48 KiB of its shared memory | exact | 64 of 64 words wrong (64 still hold the value from before), first at 0 is 0x00000000, expected 0x20a8c400 |
| order | a barrier hands each of 64 invocations the shared words another wrote | exact | 64 of 64 words wrong (64 still hold the value from before), first at 0 is 0x00000000, expected 0x3cc5f800 |
| topology | a quad takes its flat colour from its fourth vertex | exact | |
| topology | a quad strip's quads each take their last vertex's colour | exact | |
| topology | indexed quads restart at index 8 | exact | |
| topology | a line loop closes from its last vertex to its first | exact | |
| topology | a quad drawn as lines shows its four sides and no diagonal | exact | |
| topology | a polygon drawn as lines shows its outline and no diagonal | exact | |
| topology | two triangles drawn as lines show the diagonal they share | exact | |
| vertex | a stride of 69 bytes, no multiple of four, reads each RGBA32F vertex from its own place | exact | |
| vertex | a stride of 48 reads 16 bytes at offset 8 of each vertex and none of the poison around them | exact | |
| vertex | an attribute at offset 40 of a 32 byte stride reads into the next vertex's bytes | exact | |
| vertex | an RGB32F attribute reads one in the w it lacks | exact | |
| vertex | an RG32F attribute reads nought and one in the z and w it lacks | exact | |
| vertex | an R32F attribute reads nought, nought and one in the y, z and w it lacks | exact | |
| vertex | an RGBA8 attribute in BGRA order takes red from the third byte | exact | |
| vertex | 16-bit signed scaled attributes read whole numbers of both signs | exact | |
| vertex | 8-bit unsigned scaled attributes read whole numbers to 255 | exact | |
| vertex | a 10_10_10_2 unsigned normalised attribute reads nought and one in each field | exact | |
| vertex | a per instance attribute with divisor 3 steps every third instance | exact | |
| geometry | a geometry shader turns each of four points into its 8 by 8 square | exact | 256 pixels wrong where something is drawn, 0 where nothing is; first at (12,12) is 00000000 |
| geometry | a point the geometry shader emits nothing for draws nothing | exact | 128 pixels wrong where something is drawn, 0 where nothing is; first at (12,12) is 00000000 |
| geometry | a patch tessellated at level 4 covers its rectangle, and says 4 | exact | 2304 pixels wrong where something is drawn, 0 where nothing is; first at (8,8) is 00000000 |
| geometry | the same patch at level 7 covers the same rectangle, and says 7 | exact | 2304 pixels wrong where something is drawn, 0 where nothing is; first at (8,8) is 00000000 |
| geometry | a geometry shader with no early return squares the shown points only | exact | 128 pixels wrong where something is drawn, 0 where nothing is; first at (12,12) is 00000000 |
| geometry | a patch whose evaluation stage reads no level covers its rectangle at 4 | exact | 2304 pixels wrong where something is drawn, 0 where nothing is; first at (8,8) is 00000000 |
| geometry | a patch with no control stage covers its rectangle at the list's level 5 | exact | 2304 pixels wrong where something is drawn, 0 where nothing is; first at (8,8) is 00000000 |
| geometry | an evaluation stage with no control stage reads the list's level 5 | exact | 2304 pixels wrong where something is drawn, 0 where nothing is; first at (8,8) is 00000000 |
| geometry | a positive first clip distance passed on by the evaluation stage clips nothing | exact | 2304 pixels wrong where something is drawn, 0 where nothing is; first at (8,8) is 00000000 |
| geometry | a geometry stage's stores land beside the word the vertex stage reads in one buffer | exact | 4096 of 4096 pixels wrong, the first 0x00000000 where the colour is 0xff2a6b19; 16 of 64 words wrong, the first, word 0, 0x5a000000 where 0xc0de0000 belongs |
| geometry | the fragment stage samples the texel an evaluation stage storing into its image left alone | exact | 2304 pixels wrong where something is drawn, 0 where nothing is; first at (8,8) is 00000000 |
| geometry | an evaluation stage's stores land in its image | exact | the texels hold 11 22 33 44, wanted a0 a1 a2 44 |
| geometry | a draw after a barrier fetches what the evaluation stage stored | exact | 2448 pixels wrong where something is drawn, 0 where nothing is; first at (8,8) is 00000000 |
| geometry | the vertex stage's stores land in its image | exact | the texels hold 11 22 33 44, wanted b0 b1 b2 b3 |
| xfb | a capture of one triangle writes its three positions, 48 bytes | exact | |
| xfb | the primitives written counter counts the captured triangle | exact | |
| bindless | a handle index below 128 samples its own texture | exact | 508 of 512 pixels wrong; column 1 holds 01ff0bff, texture 0's texel (-1: none of the 256) |
| bindless | a handle index from 128 to 255 samples its own texture | exact | 512 of 512 pixels wrong; column 128 holds 01ff0bff, texture 0's texel (-1: none of the 256) |
| bindless | a handle at a dynamic index to a four sample texture fetches the sample it names | exact | 16 of 16 fetches wrong; handle 0, sample 0 read 0x3f800000, wanted 0x100 (0x1nn is the first image, 0x2nn the second, nn the sample) |
| astc | an HDR partition is the error colour and the LDR one after it decodes | exact | hdrfirst 4x4: 11 of 16 texels wrong, worst channel 255 away; texel 0 is 00000000, the specification's ff00ffff |
| astc | an illegal block is the error colour | exact | error 4x4: 16 of 16 texels wrong, worst channel 255 away; texel 0 is 00000000, the specification's ff00ffff |
| bcn | a BC1 block of four colours decodes 255 0 0, 0 0 255, 170 0 85 and 85 0 170 | exact | 3 of 4 texels wrong; the first, (1, 0) is 0.200000003 0 0.866666675 1, expected 0 0 255 255 of 255 |
| bcn | a BC1 block of three colours decodes its midpoint as 127 and index 3 transparent | exact | 1 of 2 texels wrong; the first, (2, 0) is 0.749019623 0 0 1, expected 127 0 127 255 of 255 |
| bcn | a BC2 block decodes alphas 15 and 8 as 255 and 136 and its colours as four | exact | 2 of 3 texels wrong; the first, (1, 0) is 0.866666675 0 0.200000003 0.533333361, expected 255 0 0 136 of 255 |
| bcn | a BC3 block of eight alphas decodes 219 and 36 | exact | 1 of 2 texels wrong; the first, (0, 0) is 1 0 0 0.854901969, expected 255 0 0 219 of 255 |
| bcn | a BC3 block of six alphas decodes 48, 0 and 255 | exact | 1 of 3 texels wrong; the first, (0, 0) is 1 0 0 0.196078435, expected 255 0 0 48 of 255 |
| bcn | a BC4 block decodes index 2 between 255 and 0 as 56355 of 65535 | exact | 1 of 2 texels wrong; the first, (0, 0) is 0.861753285 0 0 1, expected 56355 0 0 65535 of 65535 |
| bcn | a signed BC4 block decodes index 2 as 23623 of 32767 and -128 as -1 | exact | 1 of 2 texels wrong; the first, (0, 0) is 0.719473839 0 0 1, expected 23623 0 0 32767 of 32767 |
| bcn | a BC7 mode 6 block decodes 255 1 1, 1 255 1 and 120 136 1 | exact | 3 of 3 texels wrong; the first, (0, 0) is 1 0 0 1, expected 255 1 1 255 of 255 |
| bcn | a BC7 mode 5 block with rotation 1 swaps alpha and red | exact | 1 of 1 texels wrong; the first, (0, 0) is 0.788235307 0 0 0, expected 200 0 0 0 of 255 |
| zeta | a Z24S8 texture the processor wrote samples its stencil from the low byte | exact | 64 of 64 texels wrong; the first is 45ba4144, expected 5a5a5a5a (word 0x00ff005a) |
| zeta | a ZF32_X24S8 texture the processor wrote samples its stencil from the next word | exact | 64 of 64 texels wrong; the first is 7fbf7f7f, expected 5a5a5a5a (word 0x3f400000) |
| zeta | a Z24S8 target cleared to 0.75 over 0x5a holds 0xbfffff5a in memory | exact | 64 of 64 texels wrong; the first holds 0xa5a5a5a5 0x00000000, expected 0xbfffff5a 0x00000000 under the masks 0xffffffff 0x00000000 |
| zeta | a Z24X8 target cleared to 0.75 holds 0xbfffff above its low byte | exact | 64 of 64 texels wrong; the first holds 0xa5a5a5a5 0x00000000, expected 0xbfffff00 0x00000000 under the masks 0xffffff00 0x00000000 |
| zeta | a Z16 target cleared to 0.75 holds 0xbfff in memory | exact | 64 of 64 texels wrong; the first holds 0x0000a5a5 0x00000000, expected 0x0000bfff 0x00000000 under the masks 0x0000ffff 0x00000000 |
| zeta | a ZF32 target cleared to 0.75 holds its float in memory | exact | 64 of 64 texels wrong; the first holds 0xa5a5a5a5 0x00000000, expected 0x3f400000 0x00000000 under the masks 0xffffffff 0x00000000 |
| zeta | a ZF32_X24S8 target cleared to 0.75 over 0x5a holds the float, then 0x5a | exact | 64 of 64 texels wrong; the first holds 0xa5a5a5a5 0xa5a5a5a5, expected 0x3f400000 0x0000005a under the masks 0xffffffff 0x000000ff |
| zeta | an S8 target cleared to 0x5a holds 0x5a in memory | exact | 64 of 64 texels wrong; the first holds 0x000000a5 0x00000000, expected 0x0000005a 0x00000000 under the masks 0x000000ff 0x00000000 |
| occlusion | 320 quads counted one by one are all drawn | exact | 320 of 320 cells wrong, the first cell 0 holding 00000000 |
| occlusion | 320 quads counted one by one pass 64 samples each | exact | 320 of 320 reports are not 64, the first report 0 holding 0 |
| occlusion | 320 cells cleared one by one between reports are cleared | exact | 320 of 320 cells wrong, the first cell 0 holding 00000000 |
| drawtex | a draw texture copies its texture onto its rectangle | exact | 256 of 256 pixels wrong; (40, 24) holds 00000000, wanted c02040ff |
| drawtex | a draw after a draw texture binds the pipeline the draw before it bound | exact | 2816 of 4096 pixels wrong; (0, 0) holds 00000000, wanted 306090ff |
| drawtex | a draw with another pipeline after a draw texture sets its own viewport | exact | 2816 of 4096 pixels wrong; (0, 0) holds 00000000, wanted 306090ff |
| drawtex | a draw texture blends with the blend state bound | exact | 4096 of 4096 pixels wrong; (0, 0) holds 00000000, wanted 30405060 |
| drawtex | a draw texture writes only the channels the write mask opens | exact | 4096 of 4096 pixels wrong; (0, 0) holds 00000000, wanted 30405060 |
| drawtex | the alpha test rejects a draw texture's texels, and passes them flipped | exact | 4096 of 4096 pixels wrong; (0, 0) holds 00000000, wanted 30405060 |
| drawtex | a draw texture from left of its texture clamps through a clamping sampler | exact | 4096 of 4096 pixels wrong; (0, 0) holds 00000000, wanted 30405060 |
| drawtex | a draw texture from left of its texture wraps through a repeating sampler | exact | 4096 of 4096 pixels wrong; (0, 0) holds 00000000, wanted 30405060 |
| query | a 32 by 300 pixel quad passes 9600 samples | exact | counted 0, expected 9600 |
| query | a second quad of 1600 pixels adds to the count, 11200 | exact | counted 0, expected 11200 |
| query | render enable FALSE skips the draw | exact | neither happened nor left alone: 0 pixels changed, 19733 as before, first other at (0,0) is 0849d258 |
| query | render enable TRUE draws | exact | neither happened nor left alone: 0 pixels changed, 19733 as before, first other at (0,0) is 0849d258 |
| query | IF_EQUAL draws over two equal values whose timestamps differ | exact | neither happened nor left alone: 0 pixels changed, 19733 as before, first other at (0,0) is 0849d258 |
| query | IF_NOT_EQUAL skips the same two values | exact | neither happened nor left alone: 0 pixels changed, 19733 as before, first other at (0,0) is 0849d258 |
| query | IF_EQUAL skips values that differ in the low word | exact | neither happened nor left alone: 0 pixels changed, 19733 as before, first other at (0,0) is 0849d258 |
| query | IF_NOT_EQUAL draws over values that differ in the low word | exact | neither happened nor left alone: 0 pixels changed, 19733 as before, first other at (0,0) is 0849d258 |
| query | IF_EQUAL skips values that differ only in the high word | exact | neither happened nor left alone: 0 pixels changed, 19733 as before, first other at (0,0) is 0849d258 |
| query | IF_NOT_EQUAL draws over values that differ only in the high word | exact | neither happened nor left alone: 0 pixels changed, 19733 as before, first other at (0,0) is 0849d258 |
| query | IF_EQUAL draws after two reports of the same count in the same list | exact | neither happened nor left alone: 0 pixels changed, 19733 as before, first other at (0,0) is 0849d258 |
| query | IF_NOT_EQUAL skips after two reports of the same count | exact | neither happened nor left alone: 0 pixels changed, 19733 as before, first other at (0,0) is 0849d258 |
| query | IF_EQUAL skips after a report of 9600 and one of nought | exact | neither happened nor left alone: 0 pixels changed, 19733 as before, first other at (0,0) is 0849d258 |
| query | IF_NOT_EQUAL draws after a report of 9600 and one of nought | exact | neither happened nor left alone: 0 pixels changed, 19733 as before, first other at (0,0) is 0849d258 |
| query | IF_EQUAL draws after two equal reports from a list that finished before | exact | neither happened nor left alone: 0 pixels changed, 19733 as before, first other at (0,0) is 0849d258 |
| query | IF_NOT_EQUAL skips after two equal reports from a list before | exact | neither happened nor left alone: 0 pixels changed, 19733 as before, first other at (0,0) is 0849d258 |
| query | IF_EQUAL skips after 9600 and nought reported in a list before | exact | neither happened nor left alone: 0 pixels changed, 19733 as before, first other at (0,0) is 0849d258 |
| query | IF_NOT_EQUAL draws after 9600 and nought reported in a list before | exact | neither happened nor left alone: 0 pixels changed, 19733 as before, first other at (0,0) is 0849d258 |
| query | a full target clear under IF_EQUAL after 9600 and nought is skipped too | exact | neither happened nor left alone: 0 pixels changed, 0 as before, first other at (0,0) is 0849d258 |
| query | a full target clear under IF_NOT_EQUAL after 9600 and nought happens | exact | neither happened nor left alone: 0 pixels changed, 0 as before, first other at (0,0) is 0849d258 |
| query | a full target clear under IF_EQUAL over two values that differ is skipped | exact | neither happened nor left alone: 0 pixels changed, 0 as before, first other at (0,0) is 0849d258 |
| query | a full target clear under IF_EQUAL over two equal values happens | exact | neither happened nor left alone: 0 pixels changed, 0 as before, first other at (0,0) is 0849d258 |
| copy | a copy from a buffer with FlipY writes the rows bottom up | exact | |
| copy | a copy to a buffer with FlipY writes the rows bottom up | exact | |
| copy | a blit from RGBA8 to BGRA8 swaps red and blue | exact | |
| copy | a blit from RGBA8 to RGB565 keeps nought and full in every channel | exact | |
| copy | a blit from RGBA8 to RGBA16F makes full channels one | exact | |
| copy | a blit from RGBA16F to RGBA8 makes channels of one full | exact | |