GPU | 圧縮Tex | FB | MRT | depth | Tile | Shader | Uniform(vec4) | In/Out | TexUnit | Vertex | Fragment | Texture | Vertex | anisotropic | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
size | Unit | bin | VSH | FSH | VSH | FSH | VSH | FSH | Precision | Precision | max | cube | 3D | 32F | 16F | 1010102 | depth | 16F | 1010102 | AO | ||||||
PowerVR SGX 535 | PVRTC | 2048 | 24bit | TBDR | unified | 128 | 64 | 16 | 8 | 0 | 8 | hi, m, low | hi, m, low | 2048 | 2048 | - | Y | Y | - | Y | A | - | Y | Y | ||
PowerVR SGX 543MP2 | PVRTC | 4096 | 24bit | TBDR | unified | 128 | 64 | 16 | 8 | 0 | 8 | hi, m, low | hi, m, low | 4096 | 4096 | - | Y | Y | - | Y | A | - | Y | Y | ||
PowerVR SGX 540 | PVRTC/ETC1 | 2048 | 24bit | TBDR | unified | Y | 128 | 64 | 8 | 8 | 0 | 8 | hi, m, low | hi, m, low | 2048 | 2048 | - | Y | Y | - | Y | A | - | Y | - | |
PowerVR G6430 (GLES3) | PVRTC/ETC2 | 4096 | 4 | 24bit | TBDR | unified | Y | 512×12 | 224×12 | 16 | 15 | 16 | 16 | hi, m, low | hi, m, low | 4096 | 4096 | Y | Y | Y | Y | Y | A | Y | Y | Y |
Z430 | ATITC/3DC/ETC1 | 1024 | 24bit | TBR | unified | z400 | 251 | 222 | 16 | 8 | 4 | 16 | hi | hi | 2048 | 1024 | Y | Y | Y | Y | Y | Y | Y | - | Y | |
Adreno 200 | ATITC/3DC/ETC1 | 2048 | 24bit | TBR | unified | z400 | 251 | 222 | 16 | 8 | 4 | 16 | hi | hi | 2048 | 2048 | Y | Y | Y | Y | Y | Y | Y | - | Y | |
Adreno 205 | ATITC/3DC/ETC1 | 4096 | 24bit | TBR | unified | z400 | 251 | 222 | 16 | 8 | 4 | 16 | hi | hi | 4096 | 4096 | Y | Y | Y | Y | Y | Y | Y | - | Y | |
Adreno 220 | ATITC/3DC/ETC1 | 4096 | 24bit | TBR | unified | z400 | 251 | 222 | 16 | 8 | 4 | 16 | hi | hi | 4096 | 4096 | Y | Y | Y | Y | Y | Y | Y | - | Y | |
Adreno 320 (GLES2) | ATITC/3DC/ETC2 | 4096 | 24bit | TBR/IMR | unified | z400 | 251 | 221 | 16 | 8 | 4 | 16 | hi | hi | 4096 | 4096 | Y | Y | Y | Y | Y | Y | Y | Y | Y | |
Adreno 320 (GLES3) | ATITC/3DC/ETC2 | 4096 | 4 | 24bit | TBR/IMR | unified | z400 | 256×12 | 224×12 | 16 | 16 | 16 | 16 | hi | hi | 4096 | 4096 | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Tegra250 ULP GeFroce(8) | S3TC/LATC/ETC1 | 3839 | 16bit | IMR | discrete | Y | 256 | 1024 | 16 | 15 | 0 | 16 | hi (m,low) | m, low | 2048 | 2048 | - | Y | Y | - | - | Y | - | - | Y | |
Tegra 3 ULP GeFroce(12) | S3TC/LATC/ETC1 | 3839 | 16bit | IMR | discrete | Y | 256 | 1024 | 16 | 15 | 0 | 16 | hi (m,low) | m, low | 2048 | 2048 | - | Y | Y | - | - | Y | - | - | Y | |
Tegra 4 ULP GeForce(72) | S3TC/LATC/ETC1 | 4096 | 24bit | IMR | discrete | 280 | 1024 | 16 | 15 | 0 | 16 | hi | m, low | 4096 | 4096 | - | - | Y | - | Y | Y | - | Y | Y | ||
ZMS-08HD | S3TC/ETC1 | 2048 | 32bit | unified | Y | 128 | 16 | 8 | 8 | 8 | 8 | 2048 | 512 | - | - | - | - | - | - | - | - | - | ||||
Mali-400MP4 | ETC1 | 4096 | 24bit | TBR | discrete | mali | 128 | 1024 | 16 | 12 | 0 | 8 | hi (m) | m | 4096 | 1024 | - | - | - | - | Y | - | - | - | - | |
Mali-T604 (GLES2) | ETC1 | 4096 | 24bit | TBR | unified | mali | 256 | 256 | 16 | 12 | 16 | 16 | hi, m | hi, m | 4096 | 4096 | Y | - | - | Y | Y | - | - | Y | - | |
Mali-T604 (GLES3) | ETC1/ETC2/EAC | 4096 | 4 | 24bit | TBR | unified | mali | 256 | 1024 | 16 | 15 | 16 | 16 | hi, m | hi, m | 4096 | 4096 | Y | Y | Y | Y | Y | Y | Y | Y | - |
Vivante GC860 (GLES2) | S3TC/ETC1 | 2048 | 24bit | unified | Y | 160 | 64 | 10 | 8 | 0 | 8 | hi | hi | 8192 | 8192 | - | - | Y | - | Y | - | - | - | - | ||
Immersion.16 (Vivante GC4000) | S3TC/ETC1 | 8192 | 24bit | unified | viv | 568 | 568 | 16 | 12 | 16 | 16 | hi | hi | 8192 | 8192 | - | Y | Y | Y | Y | Y | Y | - | Y | ||
VideoCore IV | ETC1 | 2048 | 24bit | TBR | unified | 136 | 136 | 8 | 8 | 8 | 8 | hi | hi | 2048 | 2048 | - | - | - | - | - | Y | - | - | - | ||
Angle Project (D3D9) | S3TC | 8192 | 24bit | unified | – | 254 | 221 | 16 | 10 | 4 | 16 | hi | hi | 8192 | 8192 | Y | Y | - | Y | - | - | - | - | |||
OpenGL ES 2.0 minimum | ETC1 | 1 | 128 | 16 | 8 | 8 | 0 | 8 | hi | m | ||||||||||||||||
OpenGL ES 3.0 minimum | ETC2/EAC | 2048 | 4 | 24bit | 256 | 224 | 16 | 15 | 16 | 16 | hi | 2048 | 2048 | Y | Y | Y | Y | Y | Y | Y | Y | |||||
OpenGL ES 3.1 minimum | ETC2/EAC | 4 | 256 | 224 | 16 | 15 | 16 | 16 | hi | |||||||||||||||||
DirectX8 Shader 1.1 | S3TC/DXT | Y | 96 | 8 | 16 | 6 | 0 | 4 | hi | low | Y | - | - | - | Y | |||||||||||
DirectX9 Shader 2.0 | S3TC/DXT | Y | 256 | 32 | 16 | 10 | 0 | 16 | hi | hi | Y | Y | ||||||||||||||
DirectX9 Shader 3.0 | S3TC/DXT | Y | 256 | 224 | 16 | 10 | 4 | 16 | hi | hi | Y | Y | Y | Y | Y | Y | ||||||||||
DirectX10 Shader 4.0 | S3TC/DXT/BC | Y | 64K | 64K | 16 | 16 | 128 | 128 | hi | hi | Y | Y | Y | Y | Y | Y | Y | Y | ||||||||
DirectX10 Shader 4.1 | S3TC/DXT/BC | Y | 64K | 64K | 32 | 32 | 128 | 128 | hi | hi | Y | Y | Y | Y | Y | Y | Y | Y | ||||||||
DirectX11 Shader 5.0 | S3TC/DXT/BC | Y | 64K | 64K | hi | hi | Y | Y | Y | Y | Y | Y | Y | Y |
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) | fix10 | fp32 (s23e8) | fp16 (s10e5) | fix10 | 24bit | 11bit | 8bit | 24bit | 11bit | 8bit |
PowerVR SGX540 S5PC110 | unified | fp32 (s23e8) | fp16 (s10e5) | fix10 | fp32 (s23e8) | fp16 (s10e5) | fix10 | 24bit | 11bit | 8bit | 24bit | 11bit | 8bit |
PowerVR SGX543MP2 A5 | unified | fp32 (s23e8) | fp16 (s10e5) | fix10 | fp32 (s23e8) | fp16 (s10e5) | fix10 | 23bit | 23bit | ||||
PowerVR SGX554MP4 A6X | unified | fp32 (s23e8) | fp16 (s10e5) | fix10 | fp32 (s23e8) | fp16 (s10e5) | fix10 | 23bit | 23bit | ||||
PowerVR SGX535 S5PC100 | unified | fp32 (s23e8) | fp16 (s10e5) | fix10 | fp32 (s23e8) | fp16 (s10e5) | fix10 | 23bit | 23bit | ||||
PowerVR G6430 A7 (GLES2) | unified | fp32 (s23e8) | fp16 (s10e5) | fp32 (s23e8) | fp16 (s10e5) | 32bit | 16bit | 32bit | 16bit | ||||
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 | ||||||||
Adreno 320 APQ8064 (GLES2) | unified | fp32 (s24e7) | fp32 (s24e7) | 16bit | 16bit | ||||||||
GC860 JZ4770 | unified | fp32 (s23e8) | fp32 (s23e8) | 24bit | 24bit | ||||||||
Mali-400MP4 Exynos4210 | discrete | fp32 (s23e8) | – | fp16 (s10e5) | 24bit | – | 11bit | ||||||
Mali-T604 (GLES2) | unified | fp32 (s23e8) | fp16 (s10e5) | fp32 (s23e8) | fp16 (s10e5) | 32bit | 16bit | 32bit | 16bit | ||||
ULP GeForce(8) Tegra2 | discrete | fp32 (s23e8) | – | fp20? (s13e6?) | fix10 | ? | – | ? | |||||
ULP GeForce(12) Tegra3 | discrete | fp32 (s23e8) | – | fp20? (s13e6?) | fix10 | ? | – | ? | |||||
Angle Project (D3D9) | fp32 (s23e8) | fp32 (s23e8) | 24bit | 24bit |
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) | fix10 | fp32 (s23e8) | fp16 (s10e5) | fix10 |
PowerVR SGX535 S5PC100 | unified | fp32 (s23e8) | fp16 (s10e5) | fix10 | fp32 (s23e8) | fp16 (s10e5) | fix10 |
PowerVR SGX543MP2 A5 | unified | fp32 (s23e8) | fp16 (s10e5) | fix10 | fp32 (s23e8) | fp16? (s10e5)? | |
ULP GeForce(8) Tegra2 | discrete | fp32 (s23e8) | fp16 (s10e5) | fix10? | – | fp16 (s10e5) | fix10 |
Mali-400MP4 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) |