Skip to content

Instantly share code, notes, and snippets.

@gridhead
Last active December 3, 2022 19:31
Show Gist options
  • Save gridhead/e6958f9404d395705a8b67a1ab39d024 to your computer and use it in GitHub Desktop.
Save gridhead/e6958f9404d395705a8b67a1ab39d024 to your computer and use it in GitHub Desktop.
Fedora Workstation's State of Gaming - A Case Study of Control (2019)
Fedora Workstation 35 Fedora Workstation 35 Fedora Workstation 35 Fedora Workstation 35 Windows 10 21H2 Windows 10 21H2
Lutris (DXVK Optimized) Lutris (DXVK) Lutris (VKD3D) Lutris (VKD3D) Epic Games (DirectX 11) Epic Games (DirectX 12)
CPU governor – Performance CPU governor – Performance CPU governor – Performance CPU governor – Schedutil CPU governor – Performance CPU governor – Performance
Wine version – Lutris-7.1-x86_64 Wine version – Lutris-7.1-x86_64 Wine version – Lutris-7.1-x86_64 Wine version – Lutris-7.1-x86_64
DXVK version – v1.9.4L-2 DXVK version – v1.9.4L-2 DXVK version – Disabled DXVK version – Disabled
VKD3D version – Disabled VKD3D version – Disabled VKD3D version – v2.5L-c0a3fa8 VKD3D version – v2.5L-c0a3fa8
D3D Extras version – v2 D3D Extras version – v2 D3D Extras version – v2 D3D Extras version – v2
DXVK NVAPI/DLSS version – Disabled DXVK NVAPI/DLSS version – v0.5-e23d450 DXVK NVAPI/DLSS version – v0.5-e23d450 DXVK NVAPI/DLSS version – v0.5-e23d450
Esync enabled – True Esync enabled – True Esync enabled – True Esync enabled – True
AMD FidelityFX Super Resolution – True AMD FidelityFX Super Resolution – False AMD FidelityFX Super Resolution – False AMD FidelityFX Super Resolution – False
Metrics server – MangoHUD v0.6.6-1 Metrics server – MangoHUD v0.6.6-1 Metrics server – MangoHUD v0.6.6-1 Metrics server – MangoHUD v0.6.6-1 Metrics server – MSI Afterburner Metrics server – MSI Afterburner
IN-GAME Fedora Workstation 35 Fedora Workstation 35 Fedora Workstation 35 Fedora Workstation 35 Windows 10 21H2 Windows 10 21H2
Lutris (DXVK Optimized) Lutris (DXVK) Lutris (VKD3D) Lutris (VKD3D) Epic Games (DirectX 11) Epic Games (DirectX 12)
CPU governor – Performance CPU governor – Performance CPU governor – Performance CPU governor – Schedutil CPU governor – Performance CPU governor – Performance
Part Framerate GPU usage CPU usage Framerate GPU usage CPU usage Framerate GPU usage CPU usage Framerate GPU usage CPU usage Framerate GPU usage CPU usage Framerate GPU usage CPU usage
1 230 25 10 237 8 11 238 31 10 212 70 12 237 17 12 238 12 11
2 238 25 9 238 3 9 176 98 17 126 93 25 220 14 15 240 7 11
3 180 100 17 140 68 20 188 98 17 162 96 23 196 99 18 204 6 14
4 194 100 18 169 100 23 120 90 26 168 88 21 171 99 17 195 97 19
5 152 98 25 167 100 25 157 93 23 149 93 24 184 99 13 178 92 22
6 178 100 21 169 100 22 130 93 28 159 88 24 170 99 17 175 97 22
7 167 100 26 179 100 22 156 95 22 156 98 22 192 99 19 186 97 18
8 170 100 23 177 100 23 140 83 28 159 95 20 194 99 14 180 97 18
9 178 100 25 174 98 25 159 90 24 146 93 21 195 98 17 189 97 19
10 176 100 26 172 100 24 152 95 23 134 98 22 188 98 15 196 98 20
11 170 100 20 167 100 23 125 93 25 118 90 19 159 99 17 198 98 28
12 144 100 24 145 98 24 142 100 23 123 91 19 152 99 15 193 98 11
13 142 98 22 138 98 20 116 78 22 125 88 19 153 99 16 165 98 15
14 141 100 19 140 100 19 119 81 23 112 98 20 150 99 11 157 98 16
15 140 100 19 123 100 19 86 68 23 110 78 26 153 99 12 157 98 20
16 139 98 19 139 100 20 128 68 22 97 80 24 176 99 24 156 98 20
17 161 100 24 151 98 28 108 75 20 118 76 21 214 99 14 156 98 14
18 168 100 25 178 100 21 121 75 21 112 76 18 181 99 19 180 98 20
19 167 100 26 160 95 29 113 81 18 107 71 17 189 99 31 190 95 20
20 178 100 21 172 96 26 130 85 17 120 85 18 179 99 19 167 94 15
21 167 98 18 167 96 25 110 73 17 238 30 12 176 99 23 198 97 19
22 168 98 19 164 100 22 115 91 19 162 0 16 178 99 17 173 95 19
23 168 100 19 165 100 20 107 73 20 117 83 22 179 99 19 175 96 12
24 166 100 18 161 98 21 121 70 22 103 81 26 240 88 12 176 98 20
25 238 36 10 160 95 22 102 76 26 105 83 28 174 52 18 174 97 20
26 155 100 17 238 18 12 127 86 24 122 78 24 182 99 14 197 97 20
27 165 100 18 157 100 17 124 88 23 128 81 21 161 99 17 163 90 27
28 156 100 22 168 96 19 126 78 22 134 15 4 159 99 16 171 97 19
29 148 100 27 137 98 24 132 13 5 165 99 15 134 95 23
30 155 98 22 151 98 25 173 99 14 164 98 28
AVG 169.97 92.47 20.30 166.77 88.70 21.33 133.38 79.93 21.03 136.50 78.43 20.29 181.33 91.43 16.67 180.83 87.77 18.67
MIN 139 25 9 123 3 9 86 13 5 97 0 4 150 14 11 134 6 11
MAX 238 100 27 238 100 29 238 100 28 238 98 28 240 99 31 240 98 28
IN-MENU Fedora Workstation 35 Fedora Workstation 35 Fedora Workstation 35 Fedora Workstation 35 Windows 10 21H2 Windows 10 21H2
Lutris (DXVK Optimized) Lutris (DXVK) Lutris (VKD3D) Lutris (VKD3D) Epic Games (DirectX 11) Epic Games (DirectX 12)
CPU governor – Performance CPU governor – Performance CPU governor – Performance CPU governor – Schedutil CPU governor – Performance CPU governor – Performance
Part Framerate GPU usage CPU usage Framerate GPU usage CPU usage Framerate GPU usage CPU usage Framerate GPU usage CPU usage Framerate GPU usage CPU usage Framerate GPU usage CPU usage
1 138 11 5 137 26 7 134 13 6 132 20 6 240 8 13 144 9 7
2 130 13 7 140 10 6 138 13 6 133 15 5 240 11 10 144 10 8
3 127 28 7 134 13 5 136 21 6 132 25 6 240 12 12 137 10 8
4 136 25 5 136 35 6 74 15 7 132 11 4 127 11 8 93 6 7
5 138 33 7 136 20 6 131 8 5 132 20 4 93 9 4 144 4 6
6 136 28 7 127 16 5 136 18 6 134 23 4 144 7 2 144 10 7
7 133 26 6 130 20 4 122 25 5 136 16 4 144 4 3 144 9 7
8 130 38 5 124 30 5 134 18 4 133 11 4 144 9 3 144 9 7
9 133 38 5 134 16 4 124 16 5 126 23 4 144 10 2 116 8 9
10 132 15 6 135 13 7 138 13 4 127 15 4 144 5 2 144 7 6
11 134 20 7 134 21 7 126 26 4 136 11 4 144 7 3 144 7 6
12 132 13 6 22 10 11 126 15 4 126 13 6 144 10 2 144 8 6
13 132 18 7 128 21 10 128 33 6 130 13 5 144 10 1 144 8 7
14 132 16 6 138 11 8 132 16 6 58 16 10 144 9 2 144 7 6
15 44 11 11 132 21 7 126 18 6 118 11 13 144 10 2 134 9 8
AVG 127.13 22.20 6.47 125.80 18.87 6.53 127.00 17.87 5.33 125.67 16.20 5.53 158.67 8.80 4.60 137.60 8.07 7.00
MIN 44 11 5 22 10 4 74 8 4 58 11 4 93 4 1 93 4 6
MAX 138 38 11 140 35 11 138 33 7 136 25 13 240 12 13 144 10 9

Fedora Workstation's State of Gaming - A Case Study of Control (2019)

Back in the day, it used to irk me as to how GNU/Linux[1] distributions could not be even considered to be in the proximity of video games enthusiasts - less because of the performance of the video games themselves and more because of how inconvenient it could be for them to set it all up. Admittedly, it had been quite a while since an avid video games fan like me did that, so it was almost a no-brainer for me to try it out and see if things have changed. What I ended up finding surprised me - I like to think that it would be just as pleasing to both enthusiasts who have been playing video games on GNU/Linux distributions and to newcomers who have been scoping this, alike.

On a testing bench using an AMD RDNA2-based[2] GPU, the video game was configured to the highest possible graphical preset[3] to really stress the hardware into performing as much as its limiting factor. If the RDNA2 architecture reminds you of something, allow me to share that it is what forms the foundation of the GPU that no other than the widely acclaimed Steam Deck[4] makes use of. For that matter, if you factor in some performance scaling with respect to the handheld nature of the device and the optimized Proton compatibility layer, this article can be representative of what the Steam Deck is capable of when you use Fedora Workstation[5] as a platform of your choice for playing your favourite video games.

image

Figure 1 - GNOME Software helps to install Steam conveniently

To have an apples to apples comparison, we set up two environments - one with Windows 10 21H2[6] and one with Fedora Workstation 35. On the former, I installed MSI Afterburner[7] and ensured that the graphics drivers are up-to-date while I did not have to bother doing the same on the latter as they came preinstalled. The only extra thing that I did was to configure the Lutris v7.1 runner[8] after clicking my way through installing Lutris[9] and MangoHUD[10] from GNOME Software[11]. It is downright astonishing how much you can do these days on GNU/Linux distributions without actually having to interact with the command line, making the entry barrier very low and welcoming.

Figure 2 - GNOME Software helps to install Lutris conveniently

Before we get into some actual performance testing and comparison results, let me talk a bit about the video game that is at the centre of the case study. Control[12] is an action-adventure video game developed by Remedy Entertainment[13] and published by 505 Games[14]. The video game is centred around a fictitious organization about paranormal activities and takes inspiration from the likes of the SCP Foundation[15]. It is a well-optimized video game that exhibits great graphics and is a showcase of what the underlying hardware is capable of. I ran tests on both DirectX 11[16] and DirectX 12[17] versions of the video game with their compatibility layers[18], DXVK[19] and VKD3D[20], respectively.

image

Figure 3 - Lutris configured to play Control (2019) using the Wine runner

Following are the results of the tests. I made use of OBS Studio[21], which is available as both an installer binary and as a package in the RPM Fusion[22] repositories, to record around 15 seconds of in-menu gameplay and around 60 seconds of in-game gameplay. As the video game does not have any intrinsic benchmarking tool, the footage had to be broken down into segments of equal time periods to be able to pick up performance statistics on CPU usage, GPU usage and framerate. Please do note, even when OBS Studio introduces a certain overhead to the performance, the comparison still remains valid as in both the platforms the recording software is configured identically.

  • Framerate
    • In the menus
    • In the game
  • CPU usage
    • In the menu
    • In the game
  • GPU usage
    • In the menus
    • In the game

Please feel free to let your inner enthusiast loose in the statistics and try sharing as many performance differences as you have inferred so far in the comments section below. In the meanwhile, allow me to share mine -

  • With DXVK (DirectX 11), the loss of average in-menu framerate is around 19.87% and the same for average in-game framerate is barely 6.26%. DXVK is almost at the stage where a blind test of framerate smoothness could potentially confuse anyone as to which platform runs natively.
  • With VKD3D (DirectX 12), the loss of average in-menu framerate is barely 8.67% and the same for average in-game framerate is around 24.51%. VKD3D seems to be steadily catching up and very soon enough, video games would be able to run with minimal loss of performance.
  • With DXVK, there is only 1.40% of additional average CPU usage in the menus and around 17.88% of the same in the game. Closing this gap would help save battery life on handheld devices.
  • With VKD3D, the average CPU usage in the menus is around 1.47% less than the equivalent Windows platform and the same in the game is 1.62% more. VKD3D is a great choice for handheld devices.
  • With DXVK, the average GPU usage in the menus is around 13.40% more than that on Windows and the same in the game is around 1.04% more, making it more efficient in geometry rendering and less so in sprites.
  • With VKD3D, the average GPU usage in the game is around 8.13% more than that on Windows and the same in the game is around 9.34% less, thus helping save battery on handheld devices running these video games.
  • The CPU governor[23] makes a marginal difference in performance and hence, it is something that can be left alone untweaked. The marginal difference noticed can also be considered in the margin of error.
  • Fedora Workstation uses fewer system resources out of the box and hence, can easily dedicate a huge chunk of those to the video game in question but the same is not possible in Windows 10 21H2.

For someone who looked into GNU/Linux distributions as a platform for using interactive and entertainment software applications without having any fancy hardware requirements, these results almost feel like a breath of fresh air. With Valve[24] working on strengthening Proton[25] and other communities working on great solutions like Bottles[26] and Lutris, gaming on GNU/Linux distributions is no longer an elusive dream. Things are only going to get better with a great number of video games running at near-native performance as we go on. I do not know for certain if 2022 would be the year of Linux Desktop or not, but if you ask me whether 2022 would be the year of Linux Gaming - I would answer that with a resounding yes. Let me know your thoughts down below!

Appendix

  1. Highest possible graphical preset[3]
  2. Configuration differences[27]
  3. Performance measurements in the menus[28]
  4. Performance measurements in the game[29]

References

  1. https://en.wikipedia.org/wiki/Linux
  2. https://www.amd.com/en/technologies/rdna-2
  3. https://gist.github.com/t0xic0der/e6958f9404d395705a8b67a1ab39d024#file-preset-csv
  4. https://en.wikipedia.org/wiki/Steam_Deck
  5. https://getfedora.org/
  6. https://docs.microsoft.com/en-us/windows/release-health/status-windows-10-21h2
  7. https://www.msi.com/Landing/afterburner/graphics-cards
  8. https://lutris.net/runners
  9. https://lutris.net/
  10. https://github.com/flightlessmango/MangoHud
  11. https://gitlab.gnome.org/GNOME/gnome-software
  12. https://en.wikipedia.org/wiki/Control_(video_game)
  13. https://www.remedygames.com/
  14. https://505games.com/
  15. https://scp-wiki.wikidot.com/
  16. https://en.wikipedia.org/wiki/DirectX#DirectX_11
  17. https://en.wikipedia.org/wiki/DirectX#DirectX_12
  18. https://en.wikipedia.org/wiki/Compatibility_layer
  19. https://github.com/doitsujin/dxvk
  20. https://source.winehq.org/git/vkd3d.git/
  21. https://obsproject.com/
  22. https://rpmfusion.org/
  23. https://wiki.archlinux.org/title/CPU_frequency_scaling#Scaling_governors
  24. https://www.valvesoftware.com/en/
  25. https://github.com/ValveSoftware/Proton
  26. https://usebottles.com/
  27. https://gist.github.com/t0xic0der/e6958f9404d395705a8b67a1ab39d024#file-config-csv
  28. https://gist.github.com/t0xic0der/e6958f9404d395705a8b67a1ab39d024#file-in-menu-csv
  29. https://gist.github.com/t0xic0der/e6958f9404d395705a8b67a1ab39d024#file-in-game-csv
MONITOR
Display Mode Fullscreen
Resolution 1920 x 1080 (16:9)
Render Resolution 1920 x 1080 (16:9)
NVIDIA DLSS Disabled
Vsync Disabled
Brightness 50 of 100
QUALITY
Quality Preset High
Far Object Detail (LOD) High
Texture Resolution Ultra
Texture Filtering High
Shadow Resolution High
Shadow Filtering Medium
Volumetric Lighting High
Foliage Quality Medium
SSAO Enabled
Screen Space Reflections Quality High
Global Reflections High
MSAA 4X
Film Grain Enabled
Motion Blur Enabled
RAY TRACING
Ray Tracing Preset Off
Ray Traced Reflections Disabled
Ray Traced Transparent Reflections Disabled
Ray Traced Indirect Diffuse Lighting Disabled
Ray Traced Contact Shadows Disabled
Ray Traced Debris Disabled
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment