作業ディレクトリ

Enhanced Barriersが使いたいので導入。

最新版dxcの入手

Releases · microsoft/DirectXShaderCompilerから最新版のURLを取得。CMakeからプロジェクトに取り込み。

CPMAddPackage(
  NAME dxc
  URL https://github.com/microsoft/DirectXShaderCompiler/releases/download/v1.6.2112/dxc_2021_12_08.zip
  VERSION v1.6.2112
  DOWNLOAD_ONLY yes
)
#...
target_include_directories(${CMAKE_PROJECT_NAME}
  PRIVATE
  "${dxc_SOURCE_DIR}/inc"
)

Agility SDKの組み込み

こちらもcmakeで組み込み。NuGet Gallery | Microsoft.Direct3D.D3D12 1.700.10-previewからDownload packageのリンクを取得。バージョン上がったら必要に応じて追随。

CPMAddPackage(
  NAME d3d12
  URL https://www.nuget.org/api/v2/package/Microsoft.Direct3D.D3D12/1.700.10-preview
  VERSION v1.700.10-preview
  DOWNLOAD_ONLY yes
)
#...
target_include_directories(${CMAKE_PROJECT_NAME}
  PRIVATE
  "${d3d12_SOURCE_DIR}/build/native/include"
add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD
  COMMAND ${CMAKE_COMMAND} -E make_directory "$<TARGET_FILE_DIR:${CMAKE_PROJECT_NAME}>/d3d12")
add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD
  COMMAND ${CMAKE_COMMAND} -E copy_if_different
  "${d3d12_SOURCE_DIR}/build/native/bin/x64/D3D12Core.dll"
  "$<$<CONFIG:Debug>:${d3d12_SOURCE_DIR}/build/native/bin/x64/D3D12Core.pdb>"
  "$<$<CONFIG:Debug>:${d3d12_SOURCE_DIR}/build/native/bin/x64/d3d12SDKLayers.dll>"
  "$<$<CONFIG:Debug>:${d3d12_SOURCE_DIR}/build/native/bin/x64/d3d12SDKLayers.pdb>"
  "$<TARGET_FILE_DIR:${CMAKE_PROJECT_NAME}>/d3d12")

D3D12SDKVersionDirectX 12 Agility SDK Downloads - DirectX Developer Blogから確認。

参考

misc.

VS_PACKAGE_REFERENCESはC#でしか使えないので使えず。

nuget経由で頑張ってAgility SDKを入れようとした痕跡

nuget

wsl/ubuntu
sudo apt install nuget
sudo nuget update -self

パッケージが見つからない~でエラーになったので諦めた。

Windows

NuGet Gallery | Downloadsから最新のnuget.exeを落とし、親ディレクトリをPATHに含める。※x86しか無い様子

Agility SDKの取得

cmd.exe /C nuget.exe install Microsoft.Direct3D.D3D12 -Source https://api.nuget.org/v3/index.json -OutputDirectory agilityd3d12
  • WSLからcmd.exeが動かない問題が発生。wsl --shutdownで解決
  • WSLのホームディレクトリ以下から実行するとUNCパスはサポートされていませんエラーが発生、Windowsディレクトリ直下にインストールしようとして書き込み権限が無いのでエラーになる。/mnt以下のディレクトリで作業するのが無難。