summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2013-01-26 19:14:40 +0100
committerWladimir J. van der Laan <laanwj@gmail.com>2013-01-26 19:31:12 +0100
commiteee4bc8dd953afc4fb92f81c35c684245e628ce4 (patch)
tree6ca1cb68f4284c5bb46742dd779a7a582250016b /doc
parent27f6235e8020c511c5cfa931370e7ad8d02c7058 (diff)
collect feature bits to compare the various GPUs
Diffstat (limited to 'doc')
-rw-r--r--doc/gpus_comparison.html196
-rw-r--r--doc/hardware.md3
2 files changed, 199 insertions, 0 deletions
diff --git a/doc/gpus_comparison.html b/doc/gpus_comparison.html
new file mode 100644
index 0000000..fee76c6
--- /dev/null
+++ b/doc/gpus_comparison.html
@@ -0,0 +1,196 @@
+<html>
+<head><!-- Auto-generated by make_feature_comparison.py from gpus.json -->
+<title>Vivante GPU feature bits comparison</title>
+<style>
+body { background-color: white; }
+table.gpu-comparison { table-layout: fixed; word-wrap:break-all; }
+table.gpu-comparison td { width: 80px; text-align: center; fixed; word-wrap:break-word; word-break:break-all; }
+table.gpu-comparison tr:nth-child(odd) td {
+ background-color: #e0e0ff;
+}
+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 td.minus { color: #808080; }
+table.gpu-comparison td.plus { }
+</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>Marvell 88SV331x</td></tr>
+<tr><td class="header">Type</td><td>GC800</td><td>GC600</td><td>GC2000</td><td>GC300</td><td>GC860</td><td>GC530</td></tr>
+<tr><td class="header">Revision</td><td>0x4604</td><td>0x0019</td><td>0x5026</td><td>0x4634</td><td>0x4603</td><td>0x4303</td></tr>
+<tr><td colspan="7" class="category">Specs</td></tr>
+<tr><td class="subheader">streamCount</td><td>1</td><td>1</td><td>?</td><td>?</td><td>1</td><td>1</td></tr>
+<tr><td class="subheader">registerMax</td><td>64</td><td>64</td><td>?</td><td>?</td><td>64</td><td>64</td></tr>
+<tr><td class="subheader">threadCount</td><td>256</td><td>256</td><td>?</td><td>?</td><td>256</td><td>128</td></tr>
+<tr><td class="subheader">shaderCoreCount</td><td>1</td><td>1</td><td>?</td><td>?</td><td>1</td><td>1</td></tr>
+<tr><td class="subheader">vertexCacheSize</td><td>8</td><td>8</td><td>?</td><td>?</td><td>8</td><td>8</td></tr>
+<tr><td class="subheader">vertexOutputBufferSize</td><td>512</td><td>512</td><td>?</td><td>?</td><td>512</td><td>128</td></tr>
+<tr><td colspan="7" 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></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></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></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></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></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="plus">+</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></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></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></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></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></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="minus">-</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></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></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></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></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></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></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="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></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></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></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></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></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="plus">+</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></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></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></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></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></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="minus">-</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="minus">-</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></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></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></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></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></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></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></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="minus">-</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></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="minus">-</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="minus">-</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="minus">-</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="minus">-</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></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></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="minus">-</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="minus">-</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></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></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="minus">-</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="minus">-</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="minus">-</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="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="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="minus">-</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="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></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="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></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></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="minus">-</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="minus">-</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="minus">-</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></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></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="minus">-</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="minus">-</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></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></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></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></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="minus">-</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></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></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="minus">-</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="minus">-</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></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="minus">-</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="minus">-</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="minus">-</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></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></tr>
+<tr><td class="subheader">TEXTURE_ALIGN_4</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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></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></tr>
+</table>
+</body>
+</html>
diff --git a/doc/hardware.md b/doc/hardware.md
index ba1fdbc..f6f11d7 100644
--- a/doc/hardware.md
+++ b/doc/hardware.md
@@ -26,6 +26,9 @@ and revision. Unlike NV, which parametrizes everything on the model and revision
For an overview of the feature bits see the enumerations in `state.xml`.
+For the Vivante GPUs on some platforms the detailed features and specs are known, these can be found in `doc/gpus_comparison.html`
+(`tools/data/gpus.json` for the raw source data).
+
Modules
==============
(from Vivante SoCIP 2011 presentation [1])