日別アーカイブ: 2016年8月29日

低レベル API 対応 GPU まとめ (D3D12,Vulkan,Metal)

低レベル 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 が必要になります。

Intel Graphics Test 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