Search Issue Tracker
By Design
Votes
7
Found in
2021.3.42f1
2022.3.41f1
6000.0.14f1
6000.1.0a7
6000.2.0a1
6000.3.0a1
7000.0.0a1
Issue ID
UUM-77624
Regression
No
The frame rate and Gfx.UploadTexture function are slower with DirectX12 than with DirectX11 when building the same project
How to reproduce:
1. Open the “My Project Framerate” project
2. Open the “FramerateTestScene”
3. Open the Profiler window (Window → Analysis → Profiler)
4. Change Graphics APIs to “Direct3D11” (Edit → Project Settings → Player)
5. Open the Build Settings window (File → Build Settings)
6. Enable Development Build and Autoconnect Profiler options
7. Build and Run
8. Record Build profiling information
9. Open the Profile Analyzer window (Window → Analysis → Profile Analyzer)
10. Click on the “Compare” button
11. Pull Data from the Profiler to the blue zone
12. Change Graphics APIs to “Direct3D12” (Edit → Project Settings → Player)
13. Repeat steps 5, 7 and 8
14. Pull Data from the Profiler to the orange zone
15 Analyze and compare the results
Expected result: Performance data from two Builds is similar or DX12 Build’s performance is better
Actual result: DX11 Build’s performance is notably better
Reproducible in: 2021.3.42f1, 2022.3.41f1, 6000.0.14f1
Reproducible on: Windows 10
Not reproducible on: no other environment tested
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 behavior is as designed. The performance difference between DirectX11 and DirectX12 in Gfx.UploadTexture is due to fundamental architectural differences in how memory is handled. DX11 reuses existing memory using Texture ID, while DX12 creates new memory each time, aligning with DX12's philosophy of providing low-level memory control. For specific use cases like multiple objects with similar processing needs, DX12 is designed to deliver better performance through optimized memory usage and enhanced concurrent execution capabilities.