diff options
author | Wladimir J. van der Laan <laanwj@gmail.com> | 2013-08-14 13:49:11 +0200 |
---|---|---|
committer | Wladimir J. van der Laan <laanwj@gmail.com> | 2013-08-14 13:49:11 +0200 |
commit | 17339e4491d03f6ef482444ac4938248411d2964 (patch) | |
tree | 01e398f12db50aec531240940c4db624344c2a27 /doc | |
parent | 0ccbf50fdc51c94b24dbc5cf4712a3fe2bde808b (diff) |
test2d: bitblt with 90 degree rotate
Diffstat (limited to 'doc')
-rw-r--r-- | doc/2d.md | 49 | ||||
-rw-r--r-- | doc/gpus_comparison.html | 330 | ||||
-rw-r--r-- | doc/hardware.md | 2 | ||||
-rw-r--r-- | doc/kernel_bugs.md | 21 |
4 files changed, 226 insertions, 176 deletions
@@ -1,11 +1,11 @@ 2D engine documentation ======================== -Make sure to set the PIPE to 2D before using the 2D engine. +Important: make sure to set the PIPE to 2D before using the 2D engine. Otherwise, the device will hang. As the complete state footprint is pretty small, it is recommended to program all relevant -2D engine state for an operation (before flusing) at once before a command instead -of relying on a context being maintained as with 3D rendering. +2D engine state for an operation (before flushing) at once before a command instead +of relying on a context to be maintained as with 3D rendering (although this is still a possibility). 2D commands ----------------- @@ -25,17 +25,20 @@ Video rasterizer Monochrome blits ----------------- - + +Mono expansion can be used for primitive font rendering or b/w patterns such as checkerboards. + When blitting from `LOCATION_STREAM` make sure that there are enough bytes available in the stream. Source size is ignored in the case of monochrome blits. -Mono expansion uses -`SRC_COLOR_FG` -`SRC_COLOR_BG` +Mono expansion uses registers +`SRC_COLOR_FG` and `SRC_COLOR_BG` to determine the colors to use for 0 and 1 pixels respectively. -In case of `LOCATION_STREAM` source can only draw one rectangle at a time. +Restrictions: + +- In case of `LOCATION_STREAM` source can only draw one rectangle at a time. Raster operations ------------------ @@ -47,7 +50,7 @@ operation and the correct decision is essential for the engine to complete the operation as expected. ROP builds a lookup table for a logical operation with 2, 3 or 4 inputs -(depending on ROP type). So for a ROP3, for example, the rop pattern will be +(depending on ROP type). So for a ROP3, for example, the ROP pattern will be 2^3=8 bits. `ROP2_PATTERN` [untested] @@ -75,15 +78,37 @@ ROP3/4 examples: 01010101 0x55 !destination 11001100 0xcc source 00110011 0x33 !source - 11110000 0xf0 pattern (8x8) - 00001111 0x0f !pattern (8x8) + 11110000 0xf0 pattern + 00001111 0x0f !pattern Patterns --------- An repeated 8x8 pattern can be used with 2D engine operations `LINE` and `BIT_BLT`. +This pattern can be combined with the color using ROP. + +Alpha blending +--------------- +- The blend equation is always akin OpenGL's `GL_FUNC_ADD`, source and destination (multiplied by blend factor) are added. + +- Alpha values can come from the source/destination per pixel or a global value defined in the state. + +Rotation and mirroring +----------------------- + +- There are two ways to do source and destination rotation: through register `ROT_ANGLE` and through +register `SOURCE_ROTATION_CONFIG` / `DEST_ROTATION_CONFIG`. +The former is more flexible and can rotate (0, 90, 180, 270) as well as flip in X and Y. However it is not supported +on every GPU (which ones?). + +- There are also two ways to do mirroring: though register `ROT_ANGLE` and through +register `CONFIG` (enable "mirror blit"). Both methods seem roughly equivalent, but hardware support may be +different. Mirroring seems to be `ROT_ANGLE` is supported with the `NEW_2D` capability ("mirror blit extension"). +This is only available in very new hardware (gc880, gc2000). PE10/PE20 ========== GPUs with feature bit `PE20` have various different features from GPUs without the bit -(considered `PE10`). Also the registers that are used can be different. +(considered `PE10`). Also the registers that are used for the same features can be different. `PE20` registers +are usually a superset of the `PE10` equivalent. Make sure to use the right registers according to the PE type or +it will not work. diff --git a/doc/gpus_comparison.html b/doc/gpus_comparison.html index 7aa0c6f..019f83c 100644 --- a/doc/gpus_comparison.html +++ b/doc/gpus_comparison.html @@ -11,16 +11,18 @@ table.gpu-comparison tr:nth-child(odd) td { table.gpu-comparison tr:nth-child(even) td { background-color: #d0d0ff; } -table.gpu-comparison td.header { text-align: left; width: 15em; } -table.gpu-comparison td.subheader { text-align: left; padding-left: 20px; } -table.gpu-comparison td.category { text-align: left; font-style: italic; } +table.gpu-comparison tr td.firstrow { text-align: left; background-color: #F0F0F0; } +table.gpu-comparison tr td.header { text-align: left; width: 15em; } +table.gpu-comparison tr td.subheader { text-align: left; } +table.gpu-comparison tr td.category { text-align: left; font-style: italic; background-color: #F0F0F0; } table.gpu-comparison td.minus { color: #808080; } table.gpu-comparison td.plus { } +table.gpu-comparison .featurename { font-family:monospace; font-size: 10px; } </style> </head> <body> <table class="gpu-comparison"> -<tr><td class="header">Platform</td><td>Rockchip 2918</td><td>Marvell Armada 510 (88AP510)</td><td colspan="2">Marvell Armada 620 (88AP2128-B0)</td><td>Marvell Armada XXX (OLPC XO-1.75, model: 1C2)</td><td>Ingenic JZ4770 MIPS</td><td>Marvell 88SV331x</td><td colspan="3">Freescale i.MX 6 Quad</td><td colspan="2">Freescale i.MX 6 DualLite</td></tr> +<tr><td class="header firstrow">Platform</td><td class="firstrow">Rockchip 2918</td><td class="firstrow">Marvell Armada 510 (88AP510)</td><td colspan="2" class="firstrow">Marvell Armada 620 (88AP2128-B0)</td><td class="firstrow">Marvell Armada XXX (OLPC XO-1.75, model: 1C2)</td><td class="firstrow">Ingenic JZ4770 MIPS</td><td class="firstrow">Marvell 88SV331x</td><td colspan="3" class="firstrow">Freescale i.MX 6 Quad</td><td colspan="2" class="firstrow">Freescale i.MX 6 DualLite</td></tr> <tr><td class="header">Type</td><td>GC800</td><td>GC600</td><td>GC2000</td><td>GC300</td><td>GC860</td><td>GC860</td><td>GC530</td><td>GC2000</td><td>GC320</td><td>GC355</td><td>GC880</td><td>GC320</td></tr> <tr><td class="header">Revision</td><td>0x4604</td><td>0x0019</td><td>0x5026</td><td>0x4634</td><td>0x4603</td><td>0x4621</td><td>0x4303</td><td>0x5108</td><td>0x5007</td><td>0x1215</td><td>0x5106</td><td>0x5007</td></tr> <tr><td colspan="13" class="category">Specs</td></tr> @@ -31,166 +33,166 @@ table.gpu-comparison td.plus { } <tr><td class="subheader">vertexCacheSize</td><td>8</td><td>8</td><td>?</td><td>?</td><td>8</td><td>8</td><td>8</td><td>16</td><td>16</td><td>0</td><td>8</td><td>16</td></tr> <tr><td class="subheader">vertexOutputBufferSize</td><td>512</td><td>512</td><td>?</td><td>?</td><td>512</td><td>512</td><td>128</td><td>512</td><td>1024</td><td>0</td><td>512</td><td>1024</td></tr> <tr><td colspan="13" class="category">Features</td></tr> -<tr><td class="subheader">FAST_CLEAR</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> -<tr><td class="subheader">SPECIAL_ANTI_ALIASING</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td></tr> -<tr><td class="subheader">PIPE_3D</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> -<tr><td class="subheader">DXT_TEXTURE_COMPRESSION</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">DEBUG_MODE</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">Z_COMPRESSION</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> -<tr><td class="subheader">YUV420_SCALER</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td></tr> -<tr><td class="subheader">MSAA</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">DC</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">PIPE_2D</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td></tr> -<tr><td class="subheader">ETC1_TEXTURE_COMPRESSION</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">FAST_SCALER</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td></tr> -<tr><td class="subheader">HIGH_DYNAMIC_RANGE</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td></tr> -<tr><td class="subheader">YUV420_TILER</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">MODULE_CG</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">MIN_AREA</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">NO_EARLY_Z</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">NO_422_TEXTURE</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">BUFFER_INTERLEAVING</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td></tr> -<tr><td class="subheader">BYTE_WRITE_2D</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">NO_SCALER</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">YUY2_AVERAGING</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">HALF_PE_CACHE</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">HALF_TX_CACHE</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">YUY2_RENDER_TARGET</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">MEM32</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">PIPE_VG</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">VGTS</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">FE20</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">BYTE_WRITE_3D</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">RS_YUV_TARGET</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">32_BIT_INDICES</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">FLIP_Y</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">DUAL_RETURN_BUS</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">ENDIANNESS_CONFIG</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">TEXTURE_8K</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">CORRECT_TEXTURE_CONVERTER</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">SPECIAL_MSAA_LOD</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">FAST_CLEAR_FLUSH</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">2DPE20</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">CORRECT_AUTO_DISABLE</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">RENDERTARGET_8K</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">2BITPERTILE</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">SEPARATE_TILE_STATUS_WHEN_INTERLEAVED</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">SUPER_TILED</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">VG_20</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">TS_EXTENDED_COMMANDS</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">COMPRESSION_FIFO_FIXED</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">HAS_SIGN_FLOOR_CEIL</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">VG_FILTER</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">VG_21</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">SHADER_HAS_W</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">HAS_SQRT_TRIG</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">MORE_MINOR_FEATURES</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">MC20</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> -<tr><td class="subheader">MSAA_SIDEBAND</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> -<tr><td class="subheader">BUG_FIXES0</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">VAA</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">BYPASS_IN_MSAA</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">HZ</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">NEW_TEXTURE</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">2D_A8_TARGET</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">CORRECT_STENCIL</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">ENHANCE_VR</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">RSUV_SWIZZLE</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">V2_COMPRESSION</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td></tr> -<tr><td class="subheader">VG_DOUBLE_BUFFER</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">EXTRA_EVENT_STATES</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">NO_STRIPING_NEEDED</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">TEXTURE_STRIDE</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">BUG_FIXES3</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">AUTO_DISABLE</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">AUTO_RESTART_TS</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">DISABLE_PE_GATING</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">L2_WINDOWING</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">HALF_FLOAT</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">PIXEL_DITHER</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">TWO_STENCIL_REFERENCE</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">EXTENDED_PIXEL_FORMAT</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> -<tr><td class="subheader">CORRECT_MIN_MAX_DEPTH</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">2D_DITHER</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">BUG_FIXES5</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">NEW_2D</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td></tr> -<tr><td class="subheader">NEW_FP</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">TEXTURE_HALIGN</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> -<tr><td class="subheader">NON_POWER_OF_TWO</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> -<tr><td class="subheader">LINEAR_TEXTURE_SUPPORT</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> -<tr><td class="subheader">HALTI0</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> -<tr><td class="subheader">CORRECT_OVERFLOW_VG</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">NEGATIVE_LOG_FIX</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> -<tr><td class="subheader">RESOLVE_OFFSET</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> -<tr><td class="subheader">OK_TO_GATE_AXI_CLOCK</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> -<tr><td class="subheader">MMU_VERSION</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">WIDE_LINE</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> -<tr><td class="subheader">BUG_FIXES6</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> -<tr><td class="subheader">FC_FLUSH_STALL</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> -<tr><td class="subheader">LINE_LOOP</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">LOGIC_OP</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK2</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td></tr> -<tr><td class="subheader">SUPERTILED_TEXTURE</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK4</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">RECT_PRIMITIVE</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">COMPOSITION</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">CORRECT_AUTO_DISABLE_COUNT</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK8</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK9</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK10</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">SAMPLERBASE_16</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK12</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK13</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK14</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">EXTRA_TEXTURE_STATE</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">FULL_DIRECTFB</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">2D_TILING</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">THREAD_WALKER_IN_PS</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">TILE_FILLER</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK20</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> -<tr><td class="subheader">2D_MULTI_SOURCE_BLIT</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK22</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK23</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK24</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">MIXED_STREAMS</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> -<tr><td class="subheader">2D_420_L2CACHE</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK27</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">2D_NO_INDEX8_BRUSH</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">TEXTURE_TILED_READ</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK30</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK31</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">ROTATION_STALL_FIX</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK1</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">2D_MULTI_SOURCE_BLT_EX</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK3</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK4</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK5</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK6</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK7</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK8</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK9</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">BUG_FIXES10</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK11</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">BUG_FIXES11</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK13</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK14</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK15</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK16</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK17</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK18</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK19</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK20</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK21</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK22</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK23</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK24</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK25</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK26</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK27</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK28</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK29</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK30</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> -<tr><td class="subheader">UNK31</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">FAST_CLEAR</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">SPECIAL_ANTI_ALIASING</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">PIPE_3D</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">DXT_TEXTURE_COMPRESSION</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">DEBUG_MODE</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">Z_COMPRESSION</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">YUV420_SCALER</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">MSAA</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">DC</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">PIPE_2D</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">ETC1_TEXTURE_COMPRESSION</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">FAST_SCALER</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">HIGH_DYNAMIC_RANGE</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">YUV420_TILER</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">MODULE_CG</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">MIN_AREA</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">NO_EARLY_Z</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">NO_422_TEXTURE</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">BUFFER_INTERLEAVING</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">BYTE_WRITE_2D</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">NO_SCALER</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">YUY2_AVERAGING</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">HALF_PE_CACHE</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">HALF_TX_CACHE</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">YUY2_RENDER_TARGET</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">MEM32</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">PIPE_VG</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">VGTS</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">FE20</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">BYTE_WRITE_3D</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">RS_YUV_TARGET</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">32_BIT_INDICES</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">FLIP_Y</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">DUAL_RETURN_BUS</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">ENDIANNESS_CONFIG</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">TEXTURE_8K</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">CORRECT_TEXTURE_CONVERTER</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">SPECIAL_MSAA_LOD</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">FAST_CLEAR_FLUSH</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">2DPE20</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">CORRECT_AUTO_DISABLE</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">RENDERTARGET_8K</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">2BITPERTILE</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">SEPARATE_TILE_STATUS_WHEN_INTERLEAVED</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">SUPER_TILED</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">VG_20</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">TS_EXTENDED_COMMANDS</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">COMPRESSION_FIFO_FIXED</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">HAS_SIGN_FLOOR_CEIL</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">VG_FILTER</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">VG_21</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">SHADER_HAS_W</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">HAS_SQRT_TRIG</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">MORE_MINOR_FEATURES</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">MC20</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">MSAA_SIDEBAND</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">BUG_FIXES0</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">VAA</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">BYPASS_IN_MSAA</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">HZ</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">NEW_TEXTURE</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">2D_A8_TARGET</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">CORRECT_STENCIL</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">ENHANCE_VR</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">RSUV_SWIZZLE</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">V2_COMPRESSION</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">VG_DOUBLE_BUFFER</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">EXTRA_EVENT_STATES</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">NO_STRIPING_NEEDED</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">TEXTURE_STRIDE</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">BUG_FIXES3</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">AUTO_DISABLE</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">AUTO_RESTART_TS</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">DISABLE_PE_GATING</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">L2_WINDOWING</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">HALF_FLOAT</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">PIXEL_DITHER</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">TWO_STENCIL_REFERENCE</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">EXTENDED_PIXEL_FORMAT</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">CORRECT_MIN_MAX_DEPTH</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">2D_DITHER</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">BUG_FIXES5</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">NEW_2D</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">NEW_FP</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">TEXTURE_HALIGN</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">NON_POWER_OF_TWO</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">LINEAR_TEXTURE_SUPPORT</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">HALTI0</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">CORRECT_OVERFLOW_VG</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">NEGATIVE_LOG_FIX</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td></tr> +<tr><td class="subheader featurename">RESOLVE_OFFSET</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">OK_TO_GATE_AXI_CLOCK</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">MMU_VERSION</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">WIDE_LINE</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">BUG_FIXES6</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">FC_FLUSH_STALL</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">LINE_LOOP</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">LOGIC_OP</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK2</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="plus">+</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">SUPERTILED_TEXTURE</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK4</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">RECT_PRIMITIVE</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">COMPOSITION</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">CORRECT_AUTO_DISABLE_COUNT</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK8</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK9</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK10</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">SAMPLERBASE_16</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK12</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK13</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK14</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">EXTRA_TEXTURE_STATE</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">FULL_DIRECTFB</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">2D_TILING</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">THREAD_WALKER_IN_PS</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">TILE_FILLER</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK20</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">2D_MULTI_SOURCE_BLIT</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK22</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK23</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK24</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">MIXED_STREAMS</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="plus">+</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">2D_420_L2CACHE</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK27</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">2D_NO_INDEX8_BRUSH</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">TEXTURE_TILED_READ</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK30</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK31</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">ROTATION_STALL_FIX</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK1</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">2D_MULTI_SOURCE_BLT_EX</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK3</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK4</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK5</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK6</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK7</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK8</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK9</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">BUG_FIXES10</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK11</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">BUG_FIXES11</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK13</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK14</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK15</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK16</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK17</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK18</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK19</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK20</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK21</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK22</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK23</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK24</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK25</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK26</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK27</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK28</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK29</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK30</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> +<tr><td class="subheader featurename">UNK31</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td><td class="minus">-</td></tr> </table> </body> </html> diff --git a/doc/hardware.md b/doc/hardware.md index 25d2968..669f896 100644 --- a/doc/hardware.md +++ b/doc/hardware.md @@ -207,6 +207,8 @@ The RS and PE (drawing) share one set of pixel pipes. They will never be active They do however have separate caches, so before using RS to copy from a surface at least the COLOR cache needs to be flushed (and possibly the RS cache). The blob also flushes the DEPTH cache, I do however not know why. +Tiled or supertiled resolve operation sizes need to be aligned to 16 horizontally and 4 vertically. + Tile status (Fast clear) ------------------------- A render target is divided in tiles, and every tile has a couple of status flags. diff --git a/doc/kernel_bugs.md b/doc/kernel_bugs.md new file mode 100644 index 0000000..b93ed6c --- /dev/null +++ b/doc/kernel_bugs.md @@ -0,0 +1,21 @@ +Notes about old and new bugs in Vivante GPL kernel. + +Race condition +--------------- + +In event submission (from #cubox). + + [20:19:57] <_rmk_> so, gckEVENT_Submit claims the event listMutex... allocates an event id, drops it, and then submits the command queue... + [20:20:02] <_rmk_> so two threads can do this... + [20:20:15] <_rmk_> CPU0: claim listMutex + [20:20:20] <_rmk_> CPU0: get event ID + [20:20:25] <_rmk_> CPU0: drop listMutex + [20:20:31] <_rmk_> CPU1: claim listMutex + [20:20:36] <_rmk_> CPU1: get another event ID + [20:20:41] <_rmk_> CPU1: drop listMutex + [20:20:49] <_rmk_> CPU1: insert commands into the command queue + [20:20:56] <_rmk_> CPU0: insert commands into the command queue + [20:21:16] <_rmk_> and then we have the second event due to fire first, which upsets the event handling + +Status: still present + |