Search Issue Tracker
By Design
Votes
0
Found in
6000.0.48f1
6000.1.2f1
6000.2.0a10
Issue ID
UUM-105296
Regression
Yes
The Windows Build creates the D3D12 folder and the .dll file when D3D11 or Vulkan is selected
Reproduction steps:
1. Open the project “IN-100566_Build-D3D11-issue”
2. Build the project, File → Build Settings… → Build
3. Open the build directory
4. Observe the build directory
Expected result: The D3D12 folder and the .dll should not be present
Actual result: D3D12 folder and the .dll is present
Reproducible with: 2023.2.0b15, 6000.0.48f1, 6000.1.2f1, 6000.2.0a10
Not reproducible with: 2022.3.62f1, 2023.2.0b14
Reproducible on: Windows 11
Not reproducible on: MacOS (M1)
Note: Make sure the Windows Graphics API is selected as D3D11 or Vulkan. Edit → Project Settings… → Player → Auto Graphics API for Windows (unchecked) → Remove Direct3D12 or move Direct3D11 (or Vulkan) to the top
Add comment
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- Unity CIL Linker fails on Player build when persistent listeners have "<" and ">" in their XML attribute names
- ”Lighting data asset ‘LightingData’ is incompatible with the current Unity version…” warnings are thrown when saving Indoors (URP) and Outdoors (URP) Scenes as Scene Templates
- [iOS] The screen blinks when transitioning from custom to Unity splash screen
- [macOS] ”Ignoring depth surface load action as it is memoryless” warnings are thrown when taking Game View Snapshot
- UI Builder Inspector scrolls back up when changes on an expanded but not fully displayed Inspector tab are saved
Resolution Note:
This is by design. If the D3D12 is in the list, the files must be copied. This is because the API list works so that if the first option fails, the seconds one is used, and so on. If the D3D12 is in the list at all, it must be supported, even if the fallback case is unlikely.
The reason why the D3D12 is added even if the D3D12 is not in the list at all is a driver bug on some AMD devices. There is a global variable in the windows build defining where to find the Agility SDK if it is used. On those select AMD devices, the Agility SDK is searched for even in the case that another API is used.
There are two things that can be done to work around the bug:
1. Always include the Agility SDK files, or
2. Have separate Windows builds for cases, where D3D12 is in the API list and for the cases where it is not. This would effectively mean having two builds, because the declaration of the global variable cannot be removed at runtime.
The second option was considered impractically complicated, requiring build system changes and increasing build times.