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
- Popup windows spawn on the incorrect monitor when the Editor is placed near the boundary of scaled monitor next to a monitor with different scaling
- Hidden Tabs do not shift into empty space after closing visible Tabs
- [Android] Application not deployed on a device when "activity-alias" is used in the AndroidManifest
- Shader compile process adds shader ID to the constant buffer name when the word "Globals" is being used in Vulkan
- Audio Mixer Snapshot link to the documentation isn’t working
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.