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
- Property field override bar does not update transparency correctly when switching between valid and invalid GameObjects
- Project window selection is not updated when search term is changed
- Error when adding valid MonoBehaviour script to Prefab in Project window
- Editor Launch Screen will close when Enter is pressed on it
- ObjectPool's pool is destroyed when entering Play Mode without reloading Domain
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.