Skip to content

Commit 26d2ef0

Browse files
committed
Add instructions for compiling with Direct3D 12 support on Windows
1 parent 55de3a2 commit 26d2ef0

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

contributing/development/compiling/compiling_for_windows.rst

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,65 @@ dependencies. Running it will bring up the Project Manager.
162162
:ref:`doc_data_paths_self_contained_mode` by creating a file called
163163
``._sc_`` or ``_sc_`` in the ``bin/`` folder.
164164

165+
Compiling with support for Direct3D 12
166+
--------------------------------------
167+
168+
By default, builds of Godot do not contain support for the Direct3D 12 graphics
169+
API.
170+
171+
To compile Godot with Direct3D 12 support you need at least the following:
172+
173+
- Visual Studio (follow the instructions above to install). Currently, we don't
174+
support building with Direct3D 12 enabled when using MinGW. Support will be
175+
added in the future if possible.
176+
- `The DirectX Shader Compiler <https://github.com/Microsoft/DirectXShaderCompiler/releases>`_.
177+
The zip folder will be named "dxc\_" followed by the date of release. Download
178+
it anywhere, unzip it and remember the path to the unzipped folder, you will
179+
need it below.
180+
- `godot-nir-static library <https://github.com/godotengine/godot-nir-static/releases/>`_.
181+
We compile the MESA libraries you will need into a static library. Download it
182+
anywhere, unzip it and remember the path to the unzipped folder, you will
183+
need it below.
184+
185+
.. note:: You can optionally build the godot-nir-static libraries yourself with
186+
the following steps:
187+
188+
1. Install the Python package `mako <https://www.makotemplates.org>`_
189+
which is needed to generate some files.
190+
2. Clone the `godot-nir-static <https://github.com/godotengine/godot-nir-static>`_
191+
directory and navigate to it.
192+
3. Run the following::
193+
194+
git submodule update --init
195+
./update_mesa.sh
196+
scons
197+
198+
Optionally, you can compile with the following for additional features:
199+
200+
- `Pix <https://devblogs.microsoft.com/pix/download>`_: Download the
201+
WinPixEventRuntime package. You will be taken to a NuGet package page where
202+
you can click "Download package" to get it. Once downloaded, change the file
203+
extension to .zip and unzip the file to some path.
204+
- `Agility SDK <https://devblogs.microsoft.com/directx/directx12agility>`_: Download
205+
the latest Agility SDK package. You will be taken to a NuGet package page where
206+
you can click "Download package" to get it. Once downloaded, change the file
207+
extension to .zip and unzip the file to some path.
208+
209+
.. note:: If you use a preview version of the Agility SDK, remember to enable developer mode in Windows; otherwise it won't be used.
210+
211+
When building Godot, you will need to tell SCons to use Direct3D 12 and where to look for the additional libraries::
212+
213+
C:\godot> scons platform=windows d3d12=yes DXC_PATH=<...> plus mesa_libs=<...>
214+
215+
Or, with all options enabled::
216+
217+
C:\godot> scons platform=windows d3d12=yes DXC_PATH=<...> plus mesa_libs=<...> AGILITY_SDK_PATH=<...> PIX_PATH=<...>
218+
219+
.. note:: The build process will copy dxil.dll from the bin/<arch>/ directory in the DXC folder to the Godot binary directory and the appropriate bin/<arch> file in the Godot binary directory. Direct3D 12-enabled Godot packages for distribution to end users must include the dxil.dll (and relevant folders if using multi-arch), both for the editor and games.
220+
At runtime, the renderer will try to load the DLL from the arch-specific folders, and will fall back to the same directory as the Godot executable if the appropriate arch isn't found.
221+
222+
.. note:: For the Agility SDK's DLLs you have to explicitly choose the kind of workflow. Single-arch is the default (DLLs copied to bin/). If you pass ``agility_sdk_multi_arch=yes`` to SCons, you'll opt-in for multi-arch. DLLs will be copied to the appropiate bin/<arch>/ subdirectories and at runtime the right one will be loaded.
223+
165224
Development in Visual Studio
166225
----------------------------
167226

0 commit comments

Comments
 (0)