低レベル API の対応状況を調べるために、さまざまな GPU でプログラムを走らせてみました。
下記はそのまとめです。実際に試した結果は Y/N 、対応状況が判明しているが動作未確認のものは括弧付きの (Y)/(N) にしています。
GPU | Direct3D 12 | Vulkan Windows |
Vulkan Linux |
Metal | 確認 Device |
---|---|---|---|---|---|
Intel HD Graphcis Gen7 | N | N | Y | Y | Ivy Bridge 3615QM他 |
Intel HD Graphcis Gen7.5 | Y | N | Y | (Y) | Haswell i7-4790K |
Intel HD Graphcis Gen8 | Y | (N) | (Y) | (Y) | Braswell N3150 |
Intel HD Graphcis Gen9 | Y | Y | (Y) | (Y) | Skylake i7-6700K |
GeForce Fermi | N | N | (N) | (N) | GeForce GTX 560 Ti |
GeForce Kepler | Y | Y | (Y) | Y | GeForce GTX 760他 |
GeForce Maxwell GM1xx | Y | Y | (Y) | (Y) | GeForce GTX 750 Ti |
GeForce Maxwell GM2xx | Y | Y | Y | (Y) | GeForce GTX 960 |
GeForce Pascal | Y | Y | (Y) | (Y) | GeForce GTX 1070 |
RADEON GCN 1.0 | Y | Y | (?) | (Y) | RADEON HD 7750 |
RADEON GCN 1.1 | Y | Y | Y | (Y) | RADEON R3 HD8400 |
RADEON GCN 1.2 | (Y) | (Y) | (Y) | (Y) | — |
RADEON GCN Polaris | Y | Y | Y | (Y) | RADEON RX 480 |
・Windows 10 x64 (1607), Ubuntu 16.04LTS, Mac OS X 10.11 El Capiitan
● NVIDIA GeForce
Fermi は 560 Ti で試しましたが動作しませんでした。当初 DirectX12 に対応予定とのことでしたがかなり遅れており、諦めた方が良いかもしれません。
Kepler 以降はすべての API に対応しています。Linux の Vulkan は Ubuntu 16.04LTS + GeForce GTX 960 の組み合わせのみ確認しました。
● Intel HD Graphics
Intel HD Graphcis は、API や OS によって対応状況にかなりばらつきがあります。Direct3D 12 は Haswell 世代 (7.5) 以降のみ対応していますが Metal は Ivy Bridge (Gen7) でも動きます。逆に Windows の Vulkan は Skylake (Gen9) でないと動作しませんでした。また下記の beta 版の driver が必要になります。
更にややこしいことに、同じ Vulkan でも Linux だと Haswell (Gen7.5) でも動作することがわかりました。BayTrail-D の Celeron J1900 (Gen7) でも動作したので、Ivy Bridge 以降で使えるものと思われます。
● AMD RADEON
GCN 以降は対応、GCN よりも前の GPU は非対応とわかりやすいのが RADEON です。ただし Release されている Driver の version は世代によって多少違いがあります。Linux で確認したのは RX480 (Polaris) のみです。
・How-To Install/Uninstall AMD Radeon™ Software AMDGPU-PRO Driver for Linux® on an Ubuntu System
2016/08/30 訂正: GCN 1.1 + Vulkan は Linux で動作しませんでした。現時点で Linux 向けドライバがリリースされているのは GCN 1.2 以降と思われます。
2016/08/30 更に訂正: APU Athlon 5350 (R3 RADEON HD 8400 GCN1.1) ですが、RX 480 用ドライバで動作しました。
● Android の Vulkan
Android 7.0 が Release されたので Android でも試してみました。
GPU | SoC | Android | Vulkan | GLES | 確認 Device |
---|---|---|---|---|---|
Adreno 418 | Snapdragon 808 | 7.0 | Y | 3.2 | Nexus 5X |
PowerVR G6430 | Atom Z3560 | 7.0 | Y | 3.1 | Nexus Player |
Tegra K1 Kepler | Tegra K1 | 7.0 | N | 3.1 AEP | Nexus 9 |
Tegra X1 Maxwell | Tegra X1 | 6.0 | Y | 3.2 | SHIELD Android TV |
Vulkan API を使うには NDK が必要です。Java API では OpenGL ES 3.2 のみ対応しています。
予想外だったのは Nexus 9 で起動しなかったことです。SHILED ではいち早く対応した Tegra K1 なので、起動できなかった原因は不明です。OpenGL ES Context も GL ES 3.2 ではなく 3.1 AEP でした。
2016/08/30 追記: 動作確認できたので SHIELD Android TV 追加しました。
関連エントリ
・Direct3D 12 GPU GeForce GTX 1070 Pascal と RADEON RX 480 Polaris
・Android N Preview と Vulkan / OpenGL ES 3.2
・Mac OS X Metal の対応 GPU
・3D 低レベル API の現状 Direct3D 12/Metal