2016/08/31
Android で Vulkan Sample を走らせるまでの手順
Android で Vulkan の sample を build して走らせます。基本的には下記ページの通りです。Windows の場合多少手順が増えます。
https://developer.android.com/ndk/guides/graphics/getting-started.html
● Windows の場合
1. VisualStudio 2015 install (Community で構いません)
2. JDK install
3. AndroidStudio (2.1.3) をダウンロードして install します
・Android Virtual Device は無くて構いません
・初回起動時に Android SDK も install します
4. Android NDK を download します
・android-ndk-r12b-windows-x86_64.zip を任意の場所に展開します。
・下記のように AndroidStudio の中から download しても構いません
Tools -> Android -> SDK Manager -> Appearance & Behavior -> System Settings -> Android SDK -> SDK Tools -> NDK にチェックを入れて Apply
5. Phyton 3 を install します (3.3 以上)
6. cmake を install します。
7. git を install します。
8. Start Menu から "VS2015 x64 Native Tools Command prompt" を開きます
・msbuild にパスが通っていれば他の terminal でも問題ありません
9. Command prompt で作業します
update_external_sources.bat 実行時点で下記のコマンドにパスが通っている必要があります
・msbuild.exe
・python.exe
・cmake.exe
・git.exe
10. AndroidStudio を起動して NDK のパスを設定します
・menu の File -> Project Structure -> Android NDK location
11. AndroidStudio に Project を Import します
・menu の File -> New -> import Project ...
・「vulkan-basic-samples/LunarGSamples/API-samples/android」を指定
・ロードには時間がかかります。
・Gradle の Update を促すメッセージが出ますが無視します。
12. Build &実行
・Project 一覧から drawcube を選択して menu の Build -> Make Moduel 'drawcube'
・Configuration で drawcube を選択して menu の Run -> Run 'drawcube'
● Windows 以外
Mac OS X/Linux でもビルドできます。
● 動作端末
Android 7.0 が必要です。Nexus Player と Nexus 5X で確認しました。Nexus 9 では動作しませんでした。SHILED でもそのままでは動かないようです。こちら にまとめています。
関連ページ
・Vulakn Android
関連エントリ
・Linux で Vulkan を使う (GeForce, RADEON, Intel)
・低レベル API 対応 GPU まとめ (D3D12,Vulkan,Metal)
https://developer.android.com/ndk/guides/graphics/getting-started.html
● Windows の場合
1. VisualStudio 2015 install (Community で構いません)
2. JDK install
3. AndroidStudio (2.1.3) をダウンロードして install します
・Android Virtual Device は無くて構いません
・初回起動時に Android SDK も install します
4. Android NDK を download します
・android-ndk-r12b-windows-x86_64.zip を任意の場所に展開します。
・下記のように AndroidStudio の中から download しても構いません
Tools -> Android -> SDK Manager -> Appearance & Behavior -> System Settings -> Android SDK -> SDK Tools -> NDK にチェックを入れて Apply
5. Phyton 3 を install します (3.3 以上)
6. cmake を install します。
7. git を install します。
8. Start Menu から "VS2015 x64 Native Tools Command prompt" を開きます
・msbuild にパスが通っていれば他の terminal でも問題ありません
9. Command prompt で作業します
update_external_sources.bat 実行時点で下記のコマンドにパスが通っている必要があります
・msbuild.exe
・python.exe
・cmake.exe
・git.exe
git clone https://github.com/googlesamples/vulkan-basic-samples.git cd vulkan-basic-samples/LunarGSamles update_external_sources.bat --all cd API-samples cmake -DANDROID=ON -DANDROID_ABI=all
10. AndroidStudio を起動して NDK のパスを設定します
・menu の File -> Project Structure -> Android NDK location
11. AndroidStudio に Project を Import します
・menu の File -> New -> import Project ...
・「vulkan-basic-samples/LunarGSamples/API-samples/android」を指定
・ロードには時間がかかります。
・Gradle の Update を促すメッセージが出ますが無視します。
12. Build &実行
・Project 一覧から drawcube を選択して menu の Build -> Make Moduel 'drawcube'
・Configuration で drawcube を選択して menu の Run -> Run 'drawcube'
● Windows 以外
Mac OS X/Linux でもビルドできます。
● 動作端末
Android 7.0 が必要です。Nexus Player と Nexus 5X で確認しました。Nexus 9 では動作しませんでした。SHILED でもそのままでは動かないようです。こちら にまとめています。
関連ページ
・Vulakn Android
関連エントリ
・Linux で Vulkan を使う (GeForce, RADEON, Intel)
・低レベル API 対応 GPU まとめ (D3D12,Vulkan,Metal)
2016/08/30
Linux で Vulkan を使う (GeForce, RADEON, Intel)
前回の確認で使用した Vulkan 対応ドライバのインストール手順のメモです。環境はいずれも Ubuntu 16.04LTS。事前に ssh 等外部からアクセスできる手段を用意しておくことをお勧めします。
● AMD RADEON RX 480 他
下記ページの手順に従うだけで問題なく動作しました。
・How-To Install/Uninstall AMD Radeon™ Software AMDGPU-PRO Driver for Linux® on an Ubuntu System
(1) ドライバをダウンロードします
・AMDGPU-PRO Driver for Linux® – Release Notes
(2) Download したファイルと同じ場所で下記の通り実行
(3) 再起動します
◎ Uninstall 手順
他の GPU に変更する場合は先にドライバの uninstall が必要です。下記コマンドを実行するだけです。
他の GPU Driver でも同様ですが、uninstall せずに他の GPU に差し替えると問題が生じる可能性があります。ログイン後に何も表示されなくなった場合は CTRL + ALT + F1 で Console に降りてから上のコマンドを。モニタに何も表示されない場合は外部から ssh でログインして driver を uninstall します。
なお試したところ RX480 だけでなく GCN 1.1 の R3 (APU Athlon 5350 Kabini RADEON HD8400) でも同じドライバで Vulkan が使えるようになりました。ただし自己責任で。
● Intel HD Graphics
基本的には下記ページの説明通りです。
・Vulkan tools and drivers
(1) ドライバをインストールします
(2) xorg.conf を作成
/etc/X11/xorg.conf を作ります。内容は下記の通り (参考にしたもの)
(3) 再起動します
◎ Uninstall 手順
他の GPU に変更する場合は先にドライバの uninstall が必要です。Uninstall しないと GeForce Driver が動作しませんでした。
● NVIDIA GeForce
(1) ドライバの検索で GPU を選んだあと、OS 「Show All Operating Systems」 から 「Linux 64-bit」 を選択
・NVIDIAドライバダウンロード
(2) Console で作業します
CTRL + ALT + F1 のあとログイン、または他の PC から ssh 。
(3) 下記の通り実行
(4) 終わったら再起動します
◎ Uninstall 手順
ドライバの uninstall 手順は下記のとおりです。
● SDK と動作確認など
◎ vulkaninfo コマンド
◎ Package の場合
(1) https://vulkan.lunarg.com から download
(2) install と動作確認
◎ Source Code の場合
関連ページ
・Linux で Vulkan を使うまでの手順 (ドライバインストール)
関連エントリ
・低レベル API 対応 GPU まとめ (D3D12,Vulkan,Metal)
● AMD RADEON RX 480 他
下記ページの手順に従うだけで問題なく動作しました。
・How-To Install/Uninstall AMD Radeon™ Software AMDGPU-PRO Driver for Linux® on an Ubuntu System
(1) ドライバをダウンロードします
・AMDGPU-PRO Driver for Linux® – Release Notes
(2) Download したファイルと同じ場所で下記の通り実行
tar -Jxvf amdgpu-pro_16.30.3-315407.tar.xz cd amdgpu-pro-driver ./amdgpu-pro-install sudo usermod -a -G video $LOGNAME
(3) 再起動します
◎ Uninstall 手順
他の GPU に変更する場合は先にドライバの uninstall が必要です。下記コマンドを実行するだけです。
amdgpu-pro-uninstall
他の GPU Driver でも同様ですが、uninstall せずに他の GPU に差し替えると問題が生じる可能性があります。ログイン後に何も表示されなくなった場合は CTRL + ALT + F1 で Console に降りてから上のコマンドを。モニタに何も表示されない場合は外部から ssh でログインして driver を uninstall します。
なお試したところ RX480 だけでなく GCN 1.1 の R3 (APU Athlon 5350 Kabini RADEON HD8400) でも同じドライバで Vulkan が使えるようになりました。ただし自己責任で。
● Intel HD Graphics
基本的には下記ページの説明通りです。
・Vulkan tools and drivers
(1) ドライバをインストールします
sudo apt-add-repository ppa:canonical-x/vulkan sudo apt update sudo apt install vulkan-utils mesa-vulkan-drivers
(2) xorg.conf を作成
/etc/X11/xorg.conf を作ります。内容は下記の通り (参考にしたもの)
Section "Device" Identifier "Intel Graphics" Driver "intel" Option "DRI" "3" EndSection
(3) 再起動します
◎ Uninstall 手順
他の GPU に変更する場合は先にドライバの uninstall が必要です。Uninstall しないと GeForce Driver が動作しませんでした。
sudo apt remove mesa-vulkan-drivers
● NVIDIA GeForce
(1) ドライバの検索で GPU を選んだあと、OS 「Show All Operating Systems」 から 「Linux 64-bit」 を選択
・NVIDIAドライバダウンロード
(2) Console で作業します
CTRL + ALT + F1 のあとログイン、または他の PC から ssh 。
(3) 下記の通り実行
sudo service lightdm stop sudo ./NVIDIA-Linux-x86_64-367.44.run
(4) 終わったら再起動します
◎ Uninstall 手順
ドライバの uninstall 手順は下記のとおりです。
sudo nvidia-uninstall
● SDK と動作確認など
◎ vulkaninfo コマンド
sudo apt install vulkan-utils vulkaninfo
◎ Package の場合
(1) https://vulkan.lunarg.com から download
(2) install と動作確認
sudo apt install git cmake build-essential bison libx11-dev libxcb1-dev libpng-dev sh ./vulkansdk-linux-x86_64-1.0.21.1.run cd VulkanSDK/1.0.21.1 ./build_examples.sh cd examples/build ./cube
◎ Source Code の場合
sudo apt install git cmake build-essential bison libx11-dev libxcb1-dev git clone https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers cd Vulkan-LoaderAndValidationLayers ./update_external_sources.sh cmake -H. -Bdbuild -DCMAKE_BUILD_TYPE=Debug cd dbuild make -j cd demos ./cube
関連ページ
・Linux で Vulkan を使うまでの手順 (ドライバインストール)
関連エントリ
・低レベル API 対応 GPU まとめ (D3D12,Vulkan,Metal)
2016/08/29
低レベル API 対応 GPU まとめ (D3D12,Vulkan,Metal)
低レベル API の対応状況を調べるために、さまざまな GPU でプログラムを走らせてみました。
下記はそのまとめです。実際に試した結果は Y/N 、対応状況が判明しているが動作未確認のものは括弧付きの (Y)/(N) にしています。
・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 でも試してみました。
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
下記はそのまとめです。実際に試した結果は 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 訂正:
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
GeForce GTX 1070 と RADEON RX 480 を購入したので DirectX12 対応表(下記リンク)を更新しました。Skylake (Intel HD Graphic 530 Gen 9) のデータも追加してあります。
・Direct3D 12 (DirectX 12) Windows 詳細
↑表は大きいのでリンク先で見て下さい。
Windows と同時に D3D12 SDK も更新されており、いくつか機能追加が行われています。ID3D12Device1 が増えており Root Signature も修正が入りました。一番大きなトピックはおそらく ShaderModel 6.0 でしょう。上の表には ShaderModel 6.0 の Wave/Lane 関連のパラメータも追加しました。ただし今のところ対応している GPU は無いようです。
・HLSL Shader Model 6.0
D3D ではありませんが、同じ低レベル API である Metal も大幅な機能拡張が行われているようです。もともと PowerVR 6 (Rogue) 向けだった Metal は昨年 Desktop GPU でも使えるようになりましたが、機能面では API に合わせた ES 3.1 相当のままでした。
今年の更新では Metal でも Tessellator が使えるようになり、D3D11/GL4 相当へと拡張が施されるようです。ただし Pipeline は独自で HS,DS,GS が無く、代わりに CS (ComputeShader) が割り当てられています。Desktop GPU だけでなく PowerVR 7XT 世代の Mobile GPU (Apple A9, iPhone 6s 世代) も対応しています。
関連エントリ
・Direct3D 12 GeForce GTX970 は FeatureLevel 12_1 対応、Resource Bind/Heap Tier は低い
・Direct3D 12 (DirectX 12) Windows 詳細
↑表は大きいのでリンク先で見て下さい。
Windows と同時に D3D12 SDK も更新されており、いくつか機能追加が行われています。ID3D12Device1 が増えており Root Signature も修正が入りました。一番大きなトピックはおそらく ShaderModel 6.0 でしょう。上の表には ShaderModel 6.0 の Wave/Lane 関連のパラメータも追加しました。ただし今のところ対応している GPU は無いようです。
・HLSL Shader Model 6.0
D3D ではありませんが、同じ低レベル API である Metal も大幅な機能拡張が行われているようです。もともと PowerVR 6 (Rogue) 向けだった Metal は昨年 Desktop GPU でも使えるようになりましたが、機能面では API に合わせた ES 3.1 相当のままでした。
今年の更新では Metal でも Tessellator が使えるようになり、D3D11/GL4 相当へと拡張が施されるようです。ただし Pipeline は独自で HS,DS,GS が無く、代わりに CS (ComputeShader) が割り当てられています。Desktop GPU だけでなく PowerVR 7XT 世代の Mobile GPU (Apple A9, iPhone 6s 世代) も対応しています。
関連エントリ
・Direct3D 12 GeForce GTX970 は FeatureLevel 12_1 対応、Resource Bind/Heap Tier は低い