ベンチマークの結果を更新しました。
Android 4.1 以降かつ対応しているデバイスでは SwapInterval を 0 に
変更したので 60fps 以上出ています。(関連)
GPU SoC CPU clock OS Screen fps pix/sec --------------------------------------------------------------------- Adreno 330 MSM8974 2.2GHz A4.2 1920x1200 71.98fps 165.8M Adreno 320(64) APQ8064 1.5GHz A4.4 1920x1104 40.97fps 86.8M Mali-T604 Exynos5D 1.7GHz A4.4 2560x1504 20.73fps 79.8M ULP GeForce(72) Tegra4 1.8GHz A4.3 1126x800 44.58fps 43.4M ULP GeForce(12) Tegra3 1.2GHz A4.4 1280x752 15.70fps 15.0M (*1) *1: Shadow Map 無し, 16bit depth
Adreno 330 は予想以上に速く、Adreno 320 比でもおよそ 2倍の速度が出ています。
ついに一番負荷が高い設定でも Full HD (1920×1200) で 60fps を超えるように
なってしまいました。
2010 年の GPU では 800×480 でもわずか 3fps でした。
対する Tegra 4 はあまり速度が伸びていません。
負荷を下げても速度が上がらないので、SwapInterval 設定が効いていないか
何かしら問題が発生している可能性があります。
その代わり Tegra 3 で省かれていたさまざまな extension をサポートしており
描画結果が他の GPU とほぼ一致するようになりました。
特に GL_EXT_shadow_samplers は単なる Hardware ShadowMap ではなく
PCF にきちんと Bi-linear Filter もかかります。
GL_EXT_shadow_samplers は OpenGL ES 3.0 以降のデバイスはどれも対応
していますが、必ずしも Filter がかかるとは限らないようです。
下記はいくつかテストした結果です。
depth-tex sh-samplers PCF Filter ---------------------------------------------------------------- 8064 Adreno 320 OpenGL ES 3.0 ◎ ◎ ◎ -- 8064 Adreno 320 OpenGL ES 2.0 ◎ -- -- -- Mali-T604 OpenGL ES 3.0 ◎ ◎ ◎ ◎ Tegra 4 OpenGL ES 2.0 ◎ ◎ ◎ ◎ Tegra 3 OpenGL ES 2.0 -- -- -- -- iOS PVR 543MP3 OpenGL ES 2.0 ◎ ◎ ◎ ◎ Vivante GC4000 OpenGL ES 2.0 ◎ -- -- -- Mali-400MP4 OpenGL ES 2.0 ◎ -- -- -- PowerVR SGX540 OpenGL ES 2.0 ◎ -- -- --
この辺りはもう少し詳しく調べたいと思っています。
なお Tegra4 の Extension 詳細は下記のページに追加しました。
・CPU/GPU OpenGL ES Extension (Mobile GPU)
関連エントリ
・Android OpenGL ES と V-Sync (eglSwapInterval)
・Nexus 10 GPU Mali-T604
・Qualcomm APQ8064 GPU Adreno 320 の速度
・さらに OpenGL ES 2.0 Mobile GPU の速度比較
・GPU 速度に関連するエントリ