Blade Fury

Delivering the Best News to you!

Let’s begin with the obvious: yes, it’s disappointing that an expensive game, which spent the better part of a decade in development, was released with a one-line error. But this article isn’t about that, it’s about the bizarre solution.

Yesterday, redditors noticed that on AMD hardware, Cyberpunk 2077 was mostly using physical cores and leaving the secondary logical cores idle. In other words, the game was ignoring the processor’s simultaneous-multithreading capability. On Ryzen processors of moderate performance, this limited processor utilization to about 40-60%, depending on other factors in the system.

The cause of this quirk was first erroneously attributed to the Intel compiler (which can cause this issue), but more knowledgeable redditors pointed out that the offending passage in Cyberpunk’s executable file was from GPUOpen. It checks if the processor is an authentic AMD Ryzen, and if it is, it limits the number of scheduler threads that the game can give the processor. This code does provide benefits, and its inclusion in the game is not an example of Intel bias, but CD Projekt Red should have altered it as part of their optimizations for Ryzen.

The quick fix is easy, simply altering one line in the offending passage enables the game to allocate the maximum number of threads to the processor. On every AMD processor, this will increase utilization. Over a hundred redditors have tried the fix and reported that utilization went from 50% to 75%, on average. More if the system was CPU bottlenecked. The corresponding performance improvement was more variable…

First off, the big high-core count processors didn’t benefit from this fix at all. The 16-core R9 5950X actually decreased in performance when the fix was applied, probably because sharing the threads around allocated them to worse cores, and sixteen was already enough for all the threads. On processors with twelve cores, the fix provided a small benefit only when the system was CPU bottlenecked.

The fix offers serious improvements for processors with eight or fewer cores, however. One redditor with a 3700X reported jumping up from 60 fps to 70 fps, while driving. A user with a R5 3600 reported a 20 fps increase in 1% lows, while another used the boost to improve their settings; they went from 50-ish fps at high settings, without ray tracing, and with DLSS, to 60-ish fps with everything at ultra and ray tracing at medium.

Another redditor went from 60 fps to 75-80 fps. Yet another reported a jump from 35 to 45 fps while running around, and a jump from 40 to 55 fps while standing still. Another user reported now getting 60 fps in crowded areas, when they used to drop to 40 fps. Users with less powerful processors, like the R5 2600, found that applying the fix made the game “finally playable” and in severely CPU limited scenarios, the fix could provide up to a 25-30% improvement.

Admittedly, these aren’t scientific benchmarks. There hasn’t been time to do proper testing yet, but we do expect more accurate numbers to appear in the next few days. We could possibly test this fix ourselves as part of our upcoming Cyberpunk 2077 CPU tests, too. However, it does appear that for the majority of Ryzen users, applying this fix provides a performance improvement, that is at times equivalent to dropping from high to medium settings, for example.

How to apply the fix
We don’t necessarily recommend applying the fix yourself, but admittedly, it would be very hard to accidentally cause serious damage to the game files, so if you like tinkering and have a Ryzen processor, go ahead. If you’re not keen though, don’t worry, we’re expecting CD Projekt Red to issue an official patch sometime soon themselves.

Here’s step-by-step instructions, courtesy of u/chaosxk:

Download the HxD hex editor.
Find your Cyberpunk 2077 executable (.exe) file.
Make a backup of the file.
Click and drag the executable onto HxD.
Press CTRL+F and change the column at the top of the dialogue box to hex-values.
Enter 75 30 33 C9 B8 01 00 00 00 0F A2 8B C8 C1 F9 08 .
Copy EB 30 33 C9 B8 01 00 00 00 0F A2 8B C8 C1 F9 08 .
Right click the highlighted 75… code in HxD, and paste in the EB… code.
Click save.