Massive performance gains moving from DirectX 11 to DirectX 12 (beta) on high-end system.

Hello Vault Hunters,

UPDATE main takeaways from comments:

  • DirectX12 (DX12) seems to provide significant performance over DirectX11 (DX11) when the system has a 6+ core / 12+ thread CPU combined with 1920 x 1080 resolution (HD).
  • Often many settings are set to medium, low, or off to maximize framerate (please see my recommended settings below – at least give them a try).
  • The reason: The overall observation is that DX11 doesn’t fully utilize the 6+ core CPU on standard HD resolution due to a single thread CPU bottleneck (under utilizing GPU). Swapping to DX12 removes any single threaded CPU bottleneck and allows the GPU to be fully utilized (for more frames)
  • DX12 has significantly longer load times when launching the game (3-10 mins of wait time) during which a claptrap will dance.
  • 1440p or greater display setups do not seem to CPU bottleneck under DX11 as readily (likely since it’s so much more GPU demanding) and is not gaining the larger frame gains under DX12. People have seen marginal success with 1440p+ setups (even with the best video cards / 2080ti’s etc). Some have even seen a decrease in performance.
  • In DX12 it’s easier to achieve higher frames by decreasing graphic settings due to the aforementioned reasons allowing higher core CPU’s to soar.

My takeaways from testing and actual gameplay:

~75% increase in low end FPS, ~28% increase in average FPS. Smoother, sharper, gameplay.

DirectX 12 (DX12) is a massive FPS gain for high end systems. This is simply broken down to the fact that DirectX 11 (DX11) severely bottlenecks the CPU.

Please note this guide is intended to help those with relatively new high-end systems, as it’s the only environment I’ve tested it on – so if you have less powerful hardware you may be better off sticking with DX11.

My Specs:

CPU: AMD 3900x (12-core, 24 thread – OC to 4.2ghz)

GPU: EVGA FTW3 1080ti @ whatever stock speed is

RAM: 16gb DDR4 @ 3200mhz

Disk: 1TB NVMe 970 EVO

Mobo: Asrock x570M Pro4

My in game graphic Settings:

Basic Tab:

  • Display Mode: Full Screen
  • Target Display: your monitor
  • Aspect Ratio: 16:9
  • Resolution: 1920x1080 (what I’m using, you may be different based on your display)
  • Resolution Scale: 100%
  • Vertical Sync: Off
  • Frame Rate Limit: Unlimited
  • Hud Scale: 1

Camera

  • Field of View: 90
  • Vehicle Field of View: 90

Advanced Tab:

  • Graphics API: DirectX 12 (Beta)
  • Performance Stats: FPS
  • Overall Quality: Ultra (doesn’t really matter most have been manually changed)
  • Anti Aliasing: FXAA
  • FidelityFX Sharpening: On
  • Object Motion Blur: Off
  • Camera Motion Blur: Off
  • Texture Streaming: Ultra
  • Anisotropic Filtering: 16x
  • Material Complexity: Medium
  • Shadows: Medium
  • Draw Distance: Medium
  • Environment Detail: Low
  • Terran Detail: Ultra
  • Foliage: Ultra
  • Character Detail: Ultra
  • Ambient Occlusion: Off
  • Volumetric Fog: Off
  • Screen Space Reflections: Off

I tend to favor framerate over “quality”, so the settings above were set to reduce the settings that netted the highest FPS gains (when lowered), and keep the settings that didn’t really affect FPS as high as possible, please note your system may be different and require a different combination. I would recommend starting at the LOWEST possible settings and slowly bumping settings up from there.

Benchmark Gains after switching to DX12:

I noticed right away my frames were better, load distribution on my CPU was spanning over 8+ cores (16+ threads), and it didn’t look like one thread was bottlenecking my frames. This effectively eliminated my CPU bottleneck. It’s hard to tell what’s going on with the GPU, because Windows 10 doesn’t properly register GPU usage from DX12 applications in task manager, however I was getting realistic numbers from the EVGA GPU tool precision X1.

My frames in areas where I was getting 70-80 FPS (on DX11) jumped to as much as 135-155 FPS (on DX12), and my overall average FPS score in the benchmark tool, went up from 118 to 152.

Conclusions:

I was hesitant to try DX12 as many said it’s awful / broken / worse FPS / RIP. However, I found it to be quite the opposite.

This is evident as under DX11 you will see FPS drop to 70 or below, while your GPU sits comfortably at 50-60% usage (this is because of single thread DX11 CPU bottleneck). This was most obvious to me in the Jungle areas of Eden-6.

Enabling DX12 will cause your game load times to dramatically increase – this is where most people think it’s broken or the game has crashed. Here you just want to wait, and let it finish the DX12 stuff it’s doing in the background.

When loading into the game with DX12 enabled a claptrap will join a black screen and start (very poorly) dancing as your computer does some insanely computational operations in the background. I’m guessing has something to do with the Denuvo anti-piracy application (requiring a rebuilt executable around DX12?).

It took me ~3 mins to load the first time, and takes ~40 seconds to load in subsequent game launches. Your load times may vary (remember I have a 12 core CPU), people have mentioned 10-20 min wait times – However, it seems this is absolutely worth it.

I also noticed DX12 uses a boatload more RAM. DX11 BL3 was using around 2-3gb, while DX12 BL3 was using upwards of 7gb just for itself. I was hitting ~12-13gb of RAM used in DX12 systemwide.

DX12 is clearly better than DX11 for highly multi-threaded hardware; the DEVs probably did what they could to reduce the single thread CPU loads in DirectX 11, but I’m not really sure how much better the DX11 API can perform given the demands of Unreal Engine 4. Borderlands 3 probably still needs a bit of additional optimization with DirectX 12 (hence the beta tag), but DX12 appears to be a much better experience on multi-threaded CPU’s as long as your video card can keep up. Hopefully this helps some people get more value out of their expensive hardware.

Also, the graphic settings descriptions were lackluster at best. It would have been nice to have smarter suggestions, and better descriptions on how settings affect CPU and GPU load.

Notes to Gearbox / DEVS:

Thank you, for making BL3! Being huge BL1 & 2 fans, my brother and I have been counting down the days until this release. We watched all the events, watched and re-watched all the trailers, pre-built characters on the website, and followed prelaunch steamers for the latest updates, on release we played all weekend and had a blast. Overall, I felt the launch was super successful! But I do have one question for you – EXPLOSIONS?

6 Likes

Thank you! I used your exact settings (we have very similar systems - same CPU) and I was able to get an extra 20fps on average running DX12.

1 Like

I got an 50% gain in FPS with my TR 1950x and RTX2080Ti.

2 Likes

If I have a 3600x cpu and rt 5700 gpu…should I try 12?

If I had your system I would give 12 a try. I doubt DX11 is properly balancing load across your 6-core CPU. If you do end up trying it, let us know if you get any performance improvements. GL!

1 Like

Worth a shot. My performance is currently satisfactory, but if I can make it better yes please

My specs are i7 3770K 3.5 Ghz, RTX 2060, 16 GB RAM

I can confirm that this has also helped with my framerate. However, some stutter/chop is still present when aiming with scopes.

@Jcapo – That’s pretty impressive you got improved frames on a 7 year old CPU with DX12. I’m wondering if BL3 on DX12 is using 100% of your CPU and if it’s fighting for resources when you aim with scopes. You paired a 7 year old CPU with a 8 month old GPU, so I’m guessing your CPU is bottle-necked. I would check task manager while running the game to see if the CPU has any headroom – if it is capping out on most (if not all) cores, maybe try lowering settings until you have some headroom, it may be possible to resolve your ADS stutter that way. Best of luck and thanks for contributing to the performance discussion.

I think you need at least 6 cores with HT to really get a benefits out of the DX12. I am lucky I got 32 threads to worked with. The game took between 16-22% of my CPU (TR 1950x) while running in the high 80s-90s. What I noticed is the GPU usage was 99% in DX12 while only 60-70% in DX11. So there is some single threaded bottleneck in DX11.

Currently, in d11, my gpu says it’s in the 90s of utilization. Should that concern me? I’m just trying to check all the boxes before I go do something, cause you all seem to have a tad more experience here.

Whatever you be patient while claptrap is dancing. step away and do something else for a few minutes. Let it do it’s thing. Your patience will be rewarded if you PC spec allows it.

I hadn’t even tried DX12 since I had heard it was pretty broken but I’m going to give enabling it a try when I get home and report back with results. I’m running a top end system, i9-9900K, RTX2080Ti and 32GB of DDR4 on Gigabyte X570 AORUS Elite.

1 Like

@sammantixbb Your CPU vs GPU utilization will often change depending on what you’re looking at in-game (e.g. the jungle areas of eden-6 often had low framerate with lower GPU usage on DX11). Some areas used 100% of my GPU, but other areas only used 50-60% of my GPU (due to single threaded CPU bottle-neck) in DX11; what I found under DX12 is that the CPU no longer bottlenecks those areas, causing the GPU to run at higher utilization (which is what you want). I’d wager that you’ll see a significant frames increase on your 3rd gen 6-core (12-thread) Ryzen on DX12, but def let us know what you find!

I’ll definitely look into this when I get home tonight. Last I checked, CPU was hanging around 70%.
I should also mention that I’m running everything on High, frames are between 60-80, sometimes dips to 55 in big fights. If I lowered Material Complexity and Fog to medium, It never dips below 60.

As for the stutter, I notice it more if I have Texture Streaming on High. On medium, it’s less present.

1 Like

@Jcapo I also had some stuttering over the weekend, and I noticed when my friend hosted the game instead of me, I saw almost no stuttering (I was also messing around with graphics settings at that point too, so it could have been something I changed).

I’ve played about 4 hours since making these changes, and I don’t see any noticeable stuttering, and I haven’t crashed. Overall a pretty big improvement. I’m now seeing a CPU usage of around 27% with relatively even load across all cores on my AMD 3900x vs ~14% on DX11 (with 1 thread completely maxed). This is definitely the way to go for high core count multi threaded CPUs. I’m pretty sure the bottleneck in my system now is my GTX1080, as I’m seeing 99% usage in Firestorm (monitoring for Zotac cards), which is exactly where I want to be.

So I ran a couple benchmarks today, compared to my benchmark from September 12 when I got the game. Benchmark September 12 and the first one today were run with DX11, second one today was run with DX12. My hardware:

Intel i9-9900K @ 3.6Ghz (turbos up to 5Ghz)
Gigabyte Z390 AORUS Ultra
32GB DDR4 Ram @ 2666Mhz
MSI RTX2080Ti Gaming X Trio
Samsung 840 EVO SSD
Windows 10 Pro ver. 1903
Nvidia release driver 436.30

Here’s my settings:

ScreenResolution: 3440x1440 (Vsync off and unlimited frmaerate)
FPSLimit: Unlimited

  • FPSLimitCustom: 144
  • GfxQuality-Override: Undefined
  • GfxQuality-Recommended: Ultra
  • GfxQuality: Ultra
  • TextureStreaming: Ultra
  • MaterialQuality: Ultra
  • Aniso: SixteenX
  • Shadows: Ultra
  • EnvTexDetail: Ultra
  • DrawDistance: Ultra
  • EnvironmentDetail: Ultra
  • Terrain: Ultra
  • Foliage: Ultra
  • CharTexDetail: Ultra
  • CharDetail: Ultra
  • CAS: 1
  • CameraBlur: 1
  • ObjectBlur: 1
  • AA: Temporal
  • VolumetricFog: High
  • SSR: High
  • AO: Ultra

So the rub of it is, I LOST frames going to DX12. 87.50fps with D3D11, 82.18fps with D3D12.

Its been mentioned before in other threads however that turning off Volumetric Fog gives a pretty sizable boost and that was certainly the case for me. My original benchmark on September 12 was done with Volumetric Fog at High on D3D11 gave me 67.82fps on the benchmark. So turning that off (barely noticable difference) netted me a boost of damn near 20fps.

Edit: should also note that with DX12 enabled, the game took over 5 minutes to load into the main menu.

@siliconx interesting results, thank for you posting.

I think the key difference is that your Video Card is likely becoming the bottleneck before your CPU for both DX11 and DX12. Especially since you have an intel processor with a higher maximum Ghz than AMD equivalents (which helps with DX11).

Mainly, since your resolution is much higher @ 3440 x 1440. This means you roughly render 2.5 times as many pixels as a standard HD 1920 x 1080 setup, so it’s a much bigger strain on your Video Card, with likely less CPU required scaling respectively.

I’m wondering (just for science) if you run at 1920 x 1080, if you still lose frames moving to DX12? Or if you cut back the strain of the video card (e.g. settings to low / medium – or the setup I initially posted), if there’s a significant difference in frames due to allowing for more CPU usage in DX12 with less video demand (and possibly more frames).

I guess the takeaway is that if you can max your video card in DX11, it’s going to be more frames.

For the sake of science I ran it through again at 1920x1080, all settings the same, Volumetric Fog turned off. I did see a framrate improvement from D3D11 to D3D12. 115.15fps on DX11 and 128.37fps on DX12.

I wouldn’t say a massive performance increase but an increase nonetheless. I’ll run more tests as time goes on but since it takes over 5 minutes to load the game, not somethign I’m going to do over and over again right now lol

Is everyone else having the same kind of results as the OP because I have pretty current hardware. I7 8700K/ GTX 1080ti / 32 GB/SSD / 1440p and I would like to try it if I am going to get better performance.

1 Like

@drsprogrammer

I’m playing now, and my CPU hangs around 70-80% when I get the stutter. Changing the graphics settings didn’t do much, however my frames jumped up to around 90-110 (from 60-80) I prefer that visual quality as long as it’s above 60. Hopefully they address this aim stutter in the next patch, since many players are suffering from the same problem.