| GPU | 圧縮Tex | FB | depth | Tile | Shader | Uniform | In/Out | TexUnit | Vertex Precision | Fragment Precision | Texture | Vertex | anisotropic |
| size | Unit | bin | VSH | FSH | VSH | FSH | VSH | FSH | max | cube | 3D | 32F | 16F | 1010102 | depth | 16F | 1010102 | AO |
| PowerVR SGX 535 | PVRTC | 2048 | 24bit | TBDR | unified | | 128 | 64 | 16 | 8 | 0 | 8 | high, medium, low | high, medium, low | 2048 | 2048 | - | ◎ | ◎ | - | ◎ | ◎ | - | ◎ | ◎ |
| PowerVR SGX 543MP | PVRTC | 4096 | 24bit | TBDR | unified | | 128 | 64 | 16 | 8 | 0 | 8 | high, medium, low | high, medium, low | 4096 | 4096 | - | ◎ | ◎ | - | ◎ | ◎ | - | ◎ | ◎ |
| PowerVR SGX 540 | PVRTC/ETC1 | 2048 | 24bit | TBDR | unified | ◎ | 128 | 64 | 16 | 8 | 0 | 8 | high, medium, low | high, medium, low | 2048 | 2048 | - | ◎ | ◎ | - | ◎ | ◎ | - | ◎ | - |
| Z430 | ATITC/3DC/ETC1 | 1024 | 24bit | TBR | unified | z400 | 251 | 222 | 16 | 8 | 4 | 16 | high | high | 2048 | 1024 | ◎ | ◎ | ◎ | ◎ | ◎ | ◎ | ◎ | - | ◎ |
| Adreno 200 | ATITC/3DC/ETC1 | 2048 | 24bit | TBR | unified | z400 | 251 | 222 | 16 | 8 | 4 | 16 | high | high | 2048 | 2048 | ◎ | ◎ | ◎ | ◎ | ◎ | ◎ | ◎ | - | ◎ |
| Adreno 205 | ATITC/3DC/ETC1 | 4096 | 24bit | TBR | unified | z400 | 251 | 222 | 16 | 8 | 4 | 16 | high | high | 4096 | 4096 | ◎ | ◎ | ◎ | ◎ | ◎ | ◎ | ◎ | - | ◎ |
| Adreno 220 | ATITC/3DC/ETC1 | 4096 | 24bit | TBR | unified | z400 | 251 | 222 | 16 | 8 | 4 | 16 | high | high | 4096 | 4096 | ◎ | ◎ | ◎ | ◎ | ◎ | ◎ | ◎ | - | ◎ |
| Tegra250 ULP GeFroce(8) | S3TC/LATC/ETC1 | 3839 | 16bit | IMR | discrete | ◎ | 256 | 1024 | 16 | 15 | 0 | 16 | high (medium,low) | medium, low | 2048 | 2048 | - | ◎ | ◎ | - | - | ◎ | - | - | ◎ |
| Tegra3 ULP GeFroce(12) | S3TC/LATC/ETC1 | 3839 | 16bit | IMR | discrete | ◎ | 256 | 1024 | 16 | 15 | 0 | 16 | high (medium,low) | medium, low | 2048 | 2048 | - | ◎ | ◎ | - | - | ◎ | - | - | ◎ |
| ZMS-08HD | S3TC/ETC1 | 2048 | 32bit | | unified | ◎ | 128 | 16 | 8 | 8 | 8 | 8 | | | 2048 | 512 | - | - | - | - | - | - | - | - | - |
| Mali-400MP | ETC1 | 4096 | 24bit | TBR | discrete | mali | 128 | 1024 | 16 | 12 | 0 | 8 | high (medium) | medium | 4096 | 1024 | - | - | - | - | ◎ | - | - | - | - |
| GC860 | S3TC/ETC1 | 2048 | 24bit | | unified | ◎ | 160 | 64 | 10 | 8 | 0 | 8 | high | high | 8192 | 8192 | - | - | ◎ | - | ◎ | - | - | - | - |
| |
| Angle Project (D3D9) | S3TC | 8192 | 24bit | | unified | – | 254 | 221 | 16 | 10 | 4 | 16 | high | high | 8192 | 8192 | | ◎ | ◎ | - | - | - | - | - | - |
| |
| DirectX8 Shader 1.1 | S3TC/DXT | | | | | ◎ | 96 | 8 | 16 | 6 | 0 | 4 | high | low | | | | - | - | | | - | | | ◎ |
| DirectX9 Shader 2.0 | S3TC/DXT | | | | | ◎ | 256 | 32 | 16 | 10 | 0 | 16 | high | high | | | | | | | | | | | ◎ |
| DirectX9 Shader 3.0 | S3TC/DXT | | | | | ◎ | 256 | 224 | 16 | 10 | 4 | 16 | high | high | | | | ◎ | ◎ | | | | | | ◎ |
| DirectX10 Shader 4.0 | S3TC/DXT/BC | | | | | ◎ | 16K | 16K | | | | | high | high | | | | ◎ | ◎ | | | | | | ◎ |
| DirectX11 Shader 5.0 | S3TC/DXT/BC | | | | | ◎ | 16K | 16K | | | | | high | high | | | | ◎ | ◎ | | | | | | ◎ |
Uniform:VSH/FSH = vec4 単位の個数。DirectX でいえば Constant Register のこと。
In/Out:VSH = 入力頂点アトリビュート数、vec4 単位の個数。DirectX で言えば Input Assembler
In/Out:FSH = 頂点出力&ピクセル入力レジスタ数、vec4 単位の個数。ラスタライズレジスタの数。
TexUnit:VSH = 頂点テクスチャ枚数
TexUnit:FSH = 通常のテクスチャユニット数 (ピクセルシェーダー)
Shader:bin = シェーダーバイナリフォーマット
Vertex:AO = Array Object
glGetShaderPrecisionFormat() を使って調べた GPU 毎の演算精度の結果のまとめ。
| GPU | type | Vertex FLOAT | Fragment FLOAT | Vertex INT | Fragment INT |
| highp | mediump | lowp | highp | mediump | lowp | highp | mediump | lowp | highp | mediump | lowp |
| PowerVR SGX540 OMAP4460 | unified | fp32 (s23e8) | fp16 (s10e5) | fix8 | fp32 (s23e8) | fp16 (s10e5) | fix8 | 24bit | 11bit | 8bit | 24bit | 11bit | 8bit |
| PowerVR SGX540 S5PC110 | unified | fp32 (s23e8) | fp16 (s10e5) | fix8 | fp32 (s23e8) | fp16 (s10e5) | fix8 | 24bit | 11bit | 8bit | 24bit | 11bit | 8bit |
| PowerVR SGX543MP2 A5 | unified | fp32 (s23e8) | fp16 (s10e5) | fix8 | fp32 (s23e8) | fp16 (s10e5) | fix8 | 23bit | 23bit |
| PowerVR SGX535 S5PC100 | unified | fp32 (s23e8) | fp16 (s10e5) | fix8 | fp32 (s23e8) | fp16 (s10e5) | fix8 | 23bit | 23bit |
| Adreno 200 QSD8250 | unified | fp32 (s24e7) | fp32 (s24e7) | 16bit | 16bit |
| Adreno 205 MSM8255 | unified | fp32 (s24e7) | fp32 (s24e7) | 16bit | 16bit |
| Adreno 220 MSM8660 | unified | fp32 (s24e7) | fp32 (s24e7) | 16bit | 16bit |
| GC860 JZ4770 | unified | fp32 (s23e8) | fp32 (s23e8) | 24bit | 24bit |
| Mali-400MP Exynos4210 | discrete | fp32 (s23e8) | – | fp16 (s10e5) | 24bit | – | 11bit |
| ULP GeForce(8) Tegra2 | discrete | fp32 (s23e8) | – | fp20? (s13e6?) | fix8 | ? | – | ? |
| ULP GeForce(12) Tegra3 | discrete | fp32 (s23e8) | – | fp20? (s13e6?) | fix8 | ? | – | ? |
| Angle Project (D3D9) | | fp32 (s23e8) | fp32 (s23e8) | 24bit | 24bit |
この結果では VertexShader において、precision が有効なのは PowerVR のみのように見える (実際に走らせた場合はこの結果と異なるので注意)
Unified Shader の場合、Fragment Shader の機能は Vertex と同一。Discrete の場合、Fragment Shader では highp 未対応。
テクスチャサイズが 4096 など大きい場合、GPU によっては texcoord が mediump では解像度が足り無い計算となるが実際は不明。
Tegra の INT 型は、他の GPU と大きく異なる結果を返すため判断できない。
Adreno の結果だけ見ると exp 7bit なので precision が全部の精度を表しているなら fp24 (s16e7) のようにも受け取れる。(実測で fp32 確認)
s23e8 :
s = 1bit sign
23 = 23bit fraction (+1 = 24bit)
e8 = 8bit exponent
実際に走らせてみると glGetShaderPrecisionFormat() の結果とはいろいろ異なっています。整数は未確認。
| GPU | type | Vertex FLOAT | Fragment FLOAT |
| highp | mediump | lowp | highp | mediump | lowp |
| PowerVR SGX540 OMAP4460 | unified | fp32 (s23e8) | fp16 (s10e5) | fix8 | fp32 (s23e8) | fp16 (s10e5) | fix8 |
| PowerVR SGX535 S5PC100 | unified | fp32 (s23e8) | fp16 (s10e5) | fix8 | fp32 (s23e8) | fp16 (s10e5) | fix8 |
| PowerVR SGX543MP2 A5 | unified | fp32 (s23e8) | fp16 (s10e5) | fix8 | fp32 (s23e8) | fp16? (s10e5)? |
| ULP GeForce(8) Tegra2 | discrete | fp32 (s23e8) | fp16? (s10e5?) | fix8? | – | fp16 (s10e5) | fix8 |
| Mali-400MP Exynos4210 | discrete | fp32 (s23e8) | fp32 or fp16? (s10e5?) | – | fp16 (s10e5) |
| Adreno 200/205/220 系 | unified | fp32 (s23e8) | fp32 (s23e8) |
| GC860 JZ4770 | unified | fp32 (s23e8) | fp32 (s23e8) |
Adreno は 1.0e-37~1.0e37 まで有効なことを確認したので普通の fp32 (s23e8) でした。
Tegra の Fragment mediump は 20bit ではなく 16bit (fp16 s10e5) でした。
PowerVR SGX535/540/543 の Vertex lowp は -2.0~2.0 の fixed であることを確認しました。