![]() |
wisdom
|
This page is dedicated to providing information about using the Agility SDK with Wisdom for DirectX 12 development on Windows. The Agility SDK allows developers to access the latest DirectX 12 features on older Windows versions, but it requires additional setup and dependencies compared to using the Windows SDK.
If you have used Wisdom before, you may have noticed that the Agility SDK is no longer included as a default option for DirectX 12 development. This change was made to simplify the build process and reduce the number of dependencies. This in turn was done for a few reasons:
WISDOM_USE_AGILITY_SDK CMake option and following the setup instructions below.Because the Agility SDK can be tricky to set up (requiring specific DLL placement and symbol exports), Wisdom provides different usage paths depending on how you consume the library.
If you are consuming Wisdom via NuGet, install the Microsoft.Direct3D.D3D12 package to use the Agility SDK. Wisdom does not bundle it for NuGet to avoid issues with UWP builds (Windows App Certification Kit). The NuGet package should handle copying the required DLLs to the output directory.
If you are using CMake, Wisdom provides several helpers depending on your integration method:
WISDOM_USE_AGILITY_SDK=ON before integrating the library. Wisdom will handle the SDK download and link it automatically.wis_load_agility_sdk() provided by Wisdom, or handle it yourself.Installing the DLLs & Exporting Symbols in CMake: To run your application, the Agility SDK DLLs (D3D12Core.dll and D3DSDKLayers.dll) must be copied to your output directory. Wisdom provides a CMake helper for this:
If you pass the PATCH_EXE argument, Wisdom will automatically call wis_patch_agility_executable() to export the required Agility SDK symbols directly in the compiled binary. If you do this, you do not need to use any C++ macros.
If you are using Conan with a build system other than CMake, or integrating manually:
If you did not use the CMake PATCH_EXE method to automatically export symbols, you must export them in your source code (usually in main.cpp).
WISDOM_USE_AGILITY_SDK=ON or .zip): Use the standard macro. Alternatively, you can directly export the symbols using the extern "C" __declspec(dllexport) approach as documented by Microsoft.
Providing these helpers drastically simplifies the setup compared to the manual Agility SDK installation process. While the multiple paths may seem complex at a glance, formatting them by package manager/method ensures that whether you use FetchContent, Conan, NuGet, or manual integration, there is a clear and accessible route to access modern DirectX 12 features.