フォト

Google AdSense

  • AdSense
無料ブログはココログ

« 2016年1月 | トップページ | 2016年3月 »

2016.02.27

Vulkanを動かす用に購入したAndroid TVのSHIELD到着

Android TVのSHIELDにAndroid 6.0 Marshmallowが配信されたのですが、この端末だけVulkanが動くようなのでアメリカのAmazonが発送してくれたので購入しました。

Leader of the Pack: SHIELD Update Brings Marshmallow, Vulkan into the Living Room - See more at: http://blogs.nvidia.com/blog/2016/02/22/shield-marshmallow-vulkan/#sthash.9vefKeyi.dpuf
http://blogs.nvidia.com/blog/2016/02/22/shield-marshmallow-vulkan/

アメリカのAmazon
http://www.amazon.com/NVIDIA-SHIELD-Pro-Streaming-Chromecast-Performance/dp/B00XO7AK1U/

Shield

とりあえず、NVIDIAのサンプルの"Vulkan Threaded Rendering"がビルド済みのapkあるので入れてみました。

Vulkan on Android
https://developer.nvidia.com/vulkan-android

無事に動きましたね。Vulkan自体を動かすのはPCで全然問題ないとは思うのですがAndroidで動く機種でいろいろと検証してみたいところですね。

Shield002

2016.02.24

【更新】AMD GPU向けDirect3D12やVulkanのTips DX12PerfTweetハッシュタグウォッチエントリ

※この記事は更新があれば随時先頭に上げるか、過去の文章を引き継いだ新規記事にします。

※2/24 No. 20まで追加
※2/16 No 15追加

そういえば、AMDのNick Thibieroz氏がAMD GPU向け(ほかのベンダー向けにも効果あるかもしれませんが)のDirect3D12やVulkanでのパフォーマンスを上げる(もしくは下げないための)TipsやアドバイスをTweetしてますが、それをメモ用にまとめていきます。

ハッシュタグ #DX12PerfTweet
https://twitter.com/hashtag/dx12perftweet?f=tweets&vertical=default&src=hash

将来的には、GPUOpenのサイトで公開されるようですが、今のところいくつかトピックがまとまった記事が公開されています。

Performance Tweets Series: Command lists
http://gpuopen.com/performance-tweets-series-command-lists/

Performance tweets series: Barriers, fences, synchronization
http://gpuopen.com/performance-tweets-series-barriers-fences-synchronization/

とりあえず、記事は縦に長いので折りたたんでおきます。

続きを読む "【更新】AMD GPU向けDirect3D12やVulkanのTips DX12PerfTweetハッシュタグウォッチエントリ" »

2016.02.22

UE4のGalaxy S7 Vulkan対応新モバイルデモ

MWC 2016でProtoStarというUnreal Engine 4のVulkan対応モバイル向けデモの映像が公開になったようです.

MWC 2016ではSamsungのGalaxy対応で公開され,インタビューの入った動画も公開されています.

Vulkan対応はGear VR対応などでも楽しみですね.

2016.02.20

実はVulkanが動くNexus Player

実はPowerVRの Imagination TechnologiesでNexus PlayerでVulkanを動かすOSのイメージが配布されています(要登録)。

PowerVR Early Access Program
https://imgtec.com/tools/powervr-early-access-program/

注意事項としては、Neuxs PlayerはCPUがIntelということでx86でビルドしたバイナリでないと動かないのでARM向けのプログラムが動かなかったりする点ですね。

2016.02.19

SHIELD TabletにAndroid 6.0がきた

うちのSHIELD TabletにAndroid 6.0がきたのでアップデート中。

https://developer.nvidia.com/vulkan-android

Vulkan Threaded RenderingはAPKが入ってるので試してみたいけど動くんでしょうかね。

※追記
まだ通常提供のAndroid 6.0ではVulkanは動かないようです。

2016.02.18

ちょっとだけID3D12Object::SetNameの話の続き

そういえば、書き忘れてましたがグラフィックスオブジェクトテーブルではDirect3D12の生成された各種リソースなどが一覧で見れるわけですが、ここでは個々のリソースのメモリ上のサイズというのがわかります。

サイズ順でソートもできるのでリソースに名前をSetName付けておけば、メモリを占有しているリソースが何かを判断する手助けになりそうですね。

それを書き忘れてましたが、記事本編の引っ越しの際には追記しておきます。

debug003

ココログだと読みにくいので

週末にでもQiitaにでも前のエントリのTipsは移したいと思います。

2016.02.17

Direct3D12のデバッグを助けるID3D12Object::SetName

MiniEngineをグラフィックス診断をしていてDescriptorHeapを見ていて気づいたのですが、Direct3D12ではID3D12Resouce(テクスチャ、バッファ、コンスタントバッファ、UAV)などのリソースに任意の名前が付けられるんですね(下図の赤枠)。名前がついてると、DescriptorHeapに大量にリソースがセットされていても内容がチェックしやすくて便利ですね。

debug002
クリックすると大きなサイズになります

ちょっと気になったので、確認のためグラフィックスオブジェクトテーブルを見てみます。

debug003
クリックすると大きなサイズになります

なるほど、Direct3D11時代のときのように従来の「オブジェクト:〇〇」(〇〇は数字)のような表記もあるんですね。

では、名前がついてるものと「オブジェクト:〇〇」表記は何が違うんでしょうか?

・・・ということで、調べてみたところID3D12Objectインターフェイスのメンバ関数のSetName関数で名前をつけたものが表示されることがわかりました。

ID3D12Object::SetName
https://msdn.microsoft.com/ja-jp/library/windows/desktop/dn788701(v=vs.85).aspx

MSDNを見ていると

Associates a name with the device object. This name is for use in debug diagnostics and tools.

とあるので、基本的にデバッグやツールなどで使用するものとして用意されているようですね。

Direct3D12の各種インターフェイスの継承は下記のような構造になっているのですが、

IUnknown - ID3D12Object - ID3D12DeviceChild - ID3D12~インターフェイス

これがDirect3D11だと下記のような構造だったので、新設されたみたいですね。

IUnknown -  ID3D11DeviceChild - ID3D11~インターフェイス

さて、ほかのMicrosoftのサンプル(D3D12HelloWorldのHelloTexture)でDesciptorHeapを見てみます。これはやはりSetNameしていないのでテクスチャのSRVが「オブジェクト:15」という自動的につく名前のままですね。このサンプルはテクスチャを1枚張ってるだけだからいいですが、これが実際のゲーム開発で大量のオブジェクトを使うようになるとこれでは見分けるのが難しいですね。

やはり任意の名前がついてた方がいいので、Direct3D12でID3D12~のインターフェイスに名前が付けられるのはありがたいですね。

debug004

さらに、ID3D12Object::SetName で名前を付けておくことで便利なのがインターフェイスの解放忘れの時ですね。

リークを出すためにD3D12HelloWorldのHelloTextureサンプルのD3D12HelloTexture.hのD3D12HelloTextureのメンバであるm_textureをスマートポインタではなく、

ID3D12Resource* m_texture;

に変えて、Releaseしないでおきます。

Direct3D11の時からありますが、たとえば、Direct3D12ではサンプルにあるような下記のコードのようにDebugLayerを有効にします。

ComPtr<ID3D12Debug> debugController;

if (SUCCEEDED(D3D12GetDebugInterface(IID_PPV_ARGS(&debugController))))
{
 debugController->EnableDebugLayer();
}

そのあとに、テクスチャのインターフェイスをわざとReleaseしないでアプリケーションを閉じて、Visual Studio 2015の出力を見ると下記のように解放忘れを報告してくれます。

D3D12 WARNING: Process is terminating. Using simple reporting. Please call ReportLiveObjects() at runtime for standard reporting. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D12 WARNING: Live Producer at 0x000001376E4FB318, Refcount: 2. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D12 WARNING:  Live Object at 0x000001376E4E6E90, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D12 WARNING:  Live Object at 0x000001376E4E9AE0, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D12 WARNING:  Live Object at 0x000001376E523190, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D12 WARNING:  Live Object at 0x000001376E550510, Refcount: 1. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D12 WARNING:  Live Object at 0x000001376E54FFD0, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D12 WARNING: Live                         Object :      5 [ STATE_CREATION WARNING #0: UNKNOWN]

とはいえ、これでは何がリークしているか特定が難しいので、下記のコードを使います。

ID3D12DebugDevice* debugInterface;

if (SUCCEEDED(m_device.Get()->QueryInterface(&debugInterface)))
{
 debugInterface->ReportLiveDeviceObjects(D3D12_RLDO_DETAIL | D3D12_RLDO_IGNORE_INTERNAL);
 debugInterface->Release();
}

これは、Direct3D11の時だとID3D11Debug::ReportLiveDeviceObjectsであったと思います。

その結果、下記のような情報に変わります。これで、ID3D12~などのインターフェイスの型でRefcountがわかるようになりました。ここまでは、Direct3D11と同じですね。

D3D12 WARNING: Live ID3D12Device at 0x0000020303619330, Refcount: 23 [ STATE_CREATION WARNING #274: LIVE_DEVICE]
D3D12 WARNING:  Live ID3D12CommandQueue at 0x000002030364E280, Refcount: 5, IntRef: 0 [ STATE_CREATION WARNING #570: LIVE_COMMANDQUEUE]
D3D12 WARNING:  Live IDXGISwapChain at 0x0000020303643060, Refcount: 2 [ STATE_CREATION WARNING #275: LIVE_SWAPCHAIN]
D3D12 WARNING:  Live ID3D12Fence at 0x000002030364C690, Name: Internal DXGI Fence, Refcount: 1, IntRef: 0 [ STATE_CREATION WARNING #580: LIVE_MONITOREDFENCE]
D3D12 WARNING:  Live ID3D12CommandAllocator at 0x0000020303642010, Name: Internal DXGI CommandAllocator, Refcount: 1, IntRef: 1 [ STATE_CREATION WARNING #571: LIVE_COMMANDALLOCATOR]
D3D12 WARNING:  Live ID3D12GraphicsCommandList at 0x0000020303644800, Name: Internal DXGI CommandList, Refcount: 2, IntRef: 0 [ STATE_CREATION WARNING #573: LIVE_COMMANDLIST12]
D3D12 WARNING:  Live ID3D12Resource at 0x00000203036646B0, Refcount: 2, IntRef: 0 [ STATE_CREATION WARNING #575: LIVE_RESOURCE]
D3D12 WARNING:  Live ID3D12Resource at 0x0000020303665BD0, Refcount: 2, IntRef: 0 [ STATE_CREATION WARNING #575: LIVE_RESOURCE]
D3D12 WARNING:  Live ID3D12DescriptorHeap at 0x0000020303666BB0, Refcount: 1, IntRef: 0 [ STATE_CREATION WARNING #576: LIVE_DESCRIPTORHEAP]
D3D12 WARNING:  Live ID3D12DescriptorHeap at 0x0000020303666F40, Refcount: 1, IntRef: 0 [ STATE_CREATION WARNING #576: LIVE_DESCRIPTORHEAP]
D3D12 WARNING:  Live ID3D12CommandAllocator at 0x0000020303668180, Refcount: 1, IntRef: 1 [ STATE_CREATION WARNING #571: LIVE_COMMANDALLOCATOR]
D3D12 WARNING:  Live ID3D12RootSignature at 0x0000020303668550, Refcount: 1, IntRef: 1 [ STATE_CREATION WARNING #577: LIVE_ROOTSIGNATURE]
D3D12 WARNING:  Live ID3D12PipelineState at 0x00000203036706A0, Refcount: 1, IntRef: 0 [ STATE_CREATION WARNING #572: LIVE_PIPELINESTATE]
D3D12 WARNING:  Live ID3D12GraphicsCommandList at 0x00000203036A1A20, Refcount: 1, IntRef: 0 [ STATE_CREATION WARNING #573: LIVE_COMMANDLIST12]
D3D12 WARNING:  Live ID3D12Resource at 0x00000203036A0BC0, Refcount: 1, IntRef: 0 [ STATE_CREATION WARNING #575: LIVE_RESOURCE]
D3D12 WARNING:  Live ID3D12Resource at 0x00000203036B0200, Refcount: 1, IntRef: 0 [ STATE_CREATION WARNING #575: LIVE_RESOURCE]
D3D12 WARNING:  Live ID3D12Fence at 0x0000020303672C60, Refcount: 1, IntRef: 0 [ STATE_CREATION WARNING #580: LIVE_MONITOREDFENCE]
D3D12 WARNING:  Live ID3D12CommandAllocator at 0x00000203036828F0, Name: Internal DXGI CommandAllocator, Refcount: 1, IntRef: 0 [ STATE_CREATION WARNING #571: LIVE_COMMANDALLOCATOR]
D3D12 WARNING:  Live ID3D12CommandAllocator at 0x0000020303685CD0, Name: Internal DXGI CommandAllocator, Refcount: 1, IntRef: 0 [ STATE_CREATION WARNING #571: LIVE_COMMANDALLOCATOR]

で、続いてSetNameで名前を付けてみます。適当なところで、

m_texture->SetName(L"Texture");

としておくと、レポートが下記のようになります。「赤字」の箇所にちゃんとSetNameした名称が出てきています。そしてRefcount: 1.となっているところのアドレスの青字で対応をとると"Texture"はとりあえず解放忘れてるぞ、となるわけですね。

D3D12 WARNING: Live ID3D12Device at 0x0000025D68FCE1B0, Refcount: 23 [ STATE_CREATION WARNING #274: LIVE_DEVICE]
D3D12 WARNING:  Live ID3D12CommandQueue at 0x0000025D69012D80, Refcount: 5, IntRef: 0 [ STATE_CREATION WARNING #570: LIVE_COMMANDQUEUE]
D3D12 WARNING:  Live IDXGISwapChain at 0x0000025D690130D0, Refcount: 2 [ STATE_CREATION WARNING #275: LIVE_SWAPCHAIN]
D3D12 WARNING:  Live ID3D12Fence at 0x0000025D68FBF4F0, Name: Internal DXGI Fence, Refcount: 1, IntRef: 0 [ STATE_CREATION WARNING #580: LIVE_MONITOREDFENCE]
D3D12 WARNING:  Live ID3D12CommandAllocator at 0x0000025D69014870, Name: Internal DXGI CommandAllocator, Refcount: 1, IntRef: 0 [ STATE_CREATION WARNING #571: LIVE_COMMANDALLOCATOR]
D3D12 WARNING:  Live ID3D12GraphicsCommandList at 0x0000025D68FF7BB0, Name: Internal DXGI CommandList, Refcount: 2, IntRef: 0 [ STATE_CREATION WARNING #573: LIVE_COMMANDLIST12]
D3D12 WARNING:  Live ID3D12Resource at 0x0000025D69016260, Refcount: 2, IntRef: 0 [ STATE_CREATION WARNING #575: LIVE_RESOURCE]
D3D12 WARNING:  Live ID3D12Resource at 0x0000025D68FFC370, Refcount: 2, IntRef: 0 [ STATE_CREATION WARNING #575: LIVE_RESOURCE]
D3D12 WARNING:  Live ID3D12DescriptorHeap at 0x0000025D69016E00, Refcount: 1, IntRef: 0 [ STATE_CREATION WARNING #576: LIVE_DESCRIPTORHEAP]
D3D12 WARNING:  Live ID3D12DescriptorHeap at 0x0000025D68FFD350, Refcount: 1, IntRef: 0 [ STATE_CREATION WARNING #576: LIVE_DESCRIPTORHEAP]
D3D12 WARNING:  Live ID3D12CommandAllocator at 0x0000025D68FFDB20, Refcount: 1, IntRef: 1 [ STATE_CREATION WARNING #571: LIVE_COMMANDALLOCATOR]
D3D12 WARNING:  Live ID3D12RootSignature at 0x0000025D6901DB40, Refcount: 1, IntRef: 1 [ STATE_CREATION WARNING #577: LIVE_ROOTSIGNATURE]
D3D12 WARNING:  Live ID3D12PipelineState at 0x0000025D69025820, Refcount: 1, IntRef: 0 [ STATE_CREATION WARNING #572: LIVE_PIPELINESTATE]
D3D12 WARNING:  Live ID3D12GraphicsCommandList at 0x0000025D69057C90, Refcount: 1, IntRef: 0 [ STATE_CREATION WARNING #573: LIVE_COMMANDLIST12]
D3D12 WARNING:  Live ID3D12Resource at 0x0000025D69065F30, Refcount: 1, IntRef: 0 [ STATE_CREATION WARNING #575: LIVE_RESOURCE]
D3D12 WARNING:  Live ID3D12Resource at 0x0000025D69066A50, Name: Texture, Refcount: 1, IntRef: 0 [ STATE_CREATION WARNING #575: LIVE_RESOURCE]
D3D12 WARNING:  Live ID3D12Fence at 0x0000025D69026A30, Refcount: 1, IntRef: 0 [ STATE_CREATION WARNING #580: LIVE_MONITOREDFENCE]
D3D12 WARNING:  Live ID3D12CommandAllocator at 0x0000025D69056670, Name: Internal DXGI CommandAllocator, Refcount: 1, IntRef: 1 [ STATE_CREATION WARNING #571: LIVE_COMMANDALLOCATOR]
D3D12 WARNING:  Live ID3D12CommandAllocator at 0x0000025D69036810, Name: Internal DXGI CommandAllocator, Refcount: 1, IntRef: 0 [ STATE_CREATION WARNING #571: LIVE_COMMANDALLOCATOR]
D3D12 WARNING: Process is terminating. Using simple reporting. Please call ReportLiveObjects() at runtime for standard reporting. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D12 WARNING: Live Producer at 0x0000025D68FCE198, Refcount: 2. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D12 WARNING:  Live Object at 0x0000025D68FBBF60, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D12 WARNING:  Live Object at 0x0000025D68FF6000, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D12 WARNING:  Live Object at 0x0000025D690111B0, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D12 WARNING:  Live Object at 0x0000025D69066A50, Refcount: 1. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D12 WARNING:  Live Object at 0x0000025D69066510, Refcount: 0. [ STATE_CREATION WARNING #0: UNKNOWN]
D3D12 WARNING: Live                         Object :      5 [ STATE_CREATION WARNING #0: UNKNOWN]

まとめ
今回紹介した要素はちょっとした小さい機能追加ではあるのですが、ID3D12~に対して名前が付けられるようになることでデバッグや分析が楽になりそうな感じではありますね。
そんなわけで、開発のことを考えるとID3D12~のものは何かとSetNameして名前どんどん付けていくのがよいかもしれませんね。
ただし、これはこれでメモリの使用量が増えるのでギリギリで作ってるときは注意ではありますが、さすがに今後はこのぐらいのメモリが取れないということはないとは思います。

VulkanのSDKの入手を解説した記事

VulkanのSDK探している方は下記のきじがわかりやすいですね。

VulkanがPublic Releaseされました。
http://project-asura.com/blog/?p=3291

Vulkan追加ネタSPIR-Vとか

さらに追加ですね。

SPIR-VのGitHubリポジトリ公開
http://www.shader.jp/?p=1694

AMDがVulkanのレンダーパスを解説した記事を公開
http://www.shader.jp/?p=1696

SPIR-Vってそういやどなったんだろう?って思ったら出てきましたね。

Vulkan関連でShader.jp更新分

とりあえず、情報量が多いので最初は2エントリにしておきます。

Vulkan 1.0の仕様が公開に
http://www.shader.jp/?p=1688

NVIDIAのVulkan 1.0関連情報 Android対応やC++ラッパー
http://www.shader.jp/?p=1690

これからGDC 2016で様々なセッションがありますが、予習しておかないといけませんね。

2016.02.16

Vulkan 1.0リリース

お、Vulkan 1.0リリースだそうで。

https://www.khronos.org/vulkan/

Shader.jpなどはもうちょい情報をまとめて更新します。

1つ増えていたので

1つ増えていたので、No.15を追記しています。

AMD GPU向けDirect3D12やVulkanのTips DX12PerfTweetハッシュタグウォッチエントリ
http://masafumi.cocolog-nifty.com/masafumis_diary/2016/02/twitterdx12perf.html

Vision Summit 2016のハイライトリールとアワード記事

Unityが主催したVision Summit 2016のハイライトリールの動画が公開されていますね。

あと、アワードの記事もアップされてますね。

CELEBRATING VR AND AR EXCELLENCE - THE VISION AR/VR AWARDS

http://visionvrar.com/blog/celebrating-vr-and-ar-excellence-vision-ar-vr-awards

チェックしておかないと。

GDC 2016のセッションスケジュール

GDC 2016のセッションスケジュールが決まったみたいですね。セッション情報自体は以前から出てましたが、何曜日の何時にやるかという情報が出てきたのでこれで、スケジュールが立てられますねぇ。

http://schedule.gdconf.com/list

2016.02.11

Visual Studio 2015 Update 2 CTPが出たのか

Visual Studio 2015 Update 2 CTPが出たみたいですね。

Visual Studio 2015 Update 2 CTP
https://blogs.msdn.microsoft.com/visualstudio/2016/02/10/visual-studio-2015-update-2-ctp/

新機能などのリスト
https://www.visualstudio.com/news/vs2015-update2-vs

リリースノートで新機能とかは後で見るとして、Visual StudioのGitでGit LFS対応になったんですね。

2016.02.07

Windows 10版のGPUViewでRadeon HD 7950をキャプチャ

Windows 10版のGPUView」の記事ではGeForce GTX 870M環境で取りましたが、自宅のRadeon HD 7950機でD3D12nBodyGravityの非同期Compute版でキャプチャしました。

なるほど~、GCN世代のGPUだとHardware Queueで"COMPUTE_0"というQueueが出てきますねぇ。これがCompute Queueなのね。とりあえず、GCNならDirect3D12で非同期Computeが使えるんだなぁ。

Radeon_2
クリックすると大きなサイズになります


2016.02.06

AMD TootleがGPUOpenのおかげでメンテされてた

またまたAMDのGPUOpenの記事からですがAMD TootleのリポジトリがGitHubに移ったわけですが、よくよく見るとVisual Studio 2012、2013、2015でのビルドに対応しているんですね。

Have You Tootled Your 3D Models?
http://gpuopen.com/have-you-tootled-your-3d-models/

ソース
https://github.com/GPUOpen-Tools/amd-tootle

AMD Tootleをツールなんかに組み込んで使ってる人は最近のVSに対応したというのはありがたいかもしれないですね。

Windows 10版のGPUView

AMDのGPUOpenの"Maxing out GPU usage in nBodyGravity"の記事を読んでいたのですが、GPUViewのWindows 10版が出てたんですね。

Maxing out GPU usage in nBodyGravity
http://gpuopen.com/maxing-out-gpu-usage-in-nbodygravity/

サンプルコード(Microsoftのコードを非同期Compute対応したもの)
https://github.com/GPUOpen-LibrariesAndSDKs/nBodyD3D12/tree/master/Samples/D3D12nBodyGravity

上の記事では、MicrosoftのDirect3D12サンプルD3D12nBodyGravityを非同期Compute対応させたものではあるのですが、記事ではその動作やパフォーマンスを確認するためにGPUViewを使っています。

記事でGPUViewのHardware Queueが表示されてますが、その下に"3D"、"Copy"、"Compute"に分かれているのがわかります。こういう表示のされ方はWindows 8.1までのGPUViewにはなかった表記だと思います。

こうした表記の方法は、Direct3D12のMulti-Engine的な表記ですね。Direct3D12ではCommand Queueを3D用(グラフィックス処理とCompute、Copy)とCopy(GPUのメモリの読み書き用)とCompute(Compute処理専用)に分かれているのですが、それをMulti-Engineと言ってるわけですね。

https://msdn.microsoft.com/en-us/library/windows/desktop/dn899217(v=vs.85).aspx

・・・ってことは、Direct3D12に対応したのかな?ということで調べてみたところWindows 10版のGPUViewがありました。

Windows 10用のGPUViewは下記のページの「Windows ADK for Windows 10 をダウンロードする」からダウンロードできました。

Windows 10 用のキットとツールのダウンロード
https://msdn.microsoft.com/ja-jp/windows/hardware/dn913721.aspx

そんなわけで、自分の環境でもGPUViewやってみました。

下記に入ってるlog.cmdをコマンドラインを管理者権限で起動して実行します。Xperf.exeは今回はlog.cmdで実行されるようになってました。あと、エラーがでましたがこちらのサイトの方法で解決しました。

C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\gpuview

そんなわけで、自分のMSI GS60(Optimus搭載GeForce GTX 870Mモデル)でDirect3D12プログラムを実行したら下記のようになりました。

Gpuview
クリックすると大きなサイズになります

Windows 10用だとOptimus搭載機のIntel HD 4600とGeForce GTX 870Mの両方が見えますね。この2つのGPUはそれぞれHardwareの3D QueueとCopy Queueを持ってるのがわかりますね(ちなみにスクリーンショットないのですが、GeForce GTX 970機とGeForce GTX 970M機も試してみたんですがCopy Queueを2つもっていました)。

ちょっとAMD GPUを試せていないのですが、GPUOpenの記事を見てる感じではCompute Queueが表示されるんではないかと思います。

ひとまずWindows 10ではDirect3D12プログラムをGPUViewでモニタリングできそうな感じはわかってきたので活用していきたいところですね。

2016.02.03

今のOptiXとかってDesignWorksだったか

たまにOptiXとかあの辺をいじってみたくなるんだけどもあの辺って今はDesignWorksって感じでまとまってるんですね。

DesignWorks
https://developer.nvidia.com/designworks

ツールでの使用とかハイブリッドレンダリングとかはやりたいネタではあるんですけどね。

« 2016年1月 | トップページ | 2016年3月 »