You might have seen many people online talking about how entering the following infamous Steam launch option boosted their game's framerate:

PROTON_USE_WINED3D=1  %command%

I'll answer the following questions

  • What does this environment variable do?
  • Do I need to apply it to my system?
  • Why is it needed at all?

What does PROTON_USE_WINED3D=1 do?

It signals to Proton to use Wine's Direct3D driver instead of its own.

(If you're not currently trying to use Proton, you can stop reading right here. The rest of the article assumes you're trying to use Proton, and want to know with certainty whether, and under what circumstances, you must set this option.)

Do I need PROTON_USE_WINED3D=1?

You need to set it if and only if your graphics drivers don't support the Vulkan API on your graphics card.

Rationale: Proton's Direct3D driver (purportedly) contains various enhancements that someone with a new graphics card might appreciate. But it requires Vulkan to use the GPU at all, whereas Wine's Direct3D is capable of tapping into other acceleration APIs. If you try to use the Proton Direct3D driver (which is the default) and don't have Vulkan, it will fall back to CPU rendering, which will probably run at an unusably low framerate.

Specifics: you need to set PROTON_USE_WINED3D=1 if your GPU is as old as or older than the following:

  • AMD (≤TeraScale 3)
    • Radeon HD 6000-series
    • Radeon HD 7670
    • Radeon HD 8490
    • Radeon Rx 235X
    • [TODO: laptop]
    • [TODO: APUs]
  • NVIDIA (≤Fermi)
    • GeForce GT 625
    • [TODO: laptop]
  • Intel (≤Broadwell)
    • HD Graphics 5500
    • HD Graphics for 5th Generation Intel Processors
    • Iris Pro Graphics 6200

You do not (except as caveatted) need to configure PROTON_USE_WINED3D if your GPU is as new as or newer than the following:

  • AMD (≥GCN 1), released December 2013
    • Radeon HD 7730 "Cape Verde LE"
    • Radeon HD 8570 "Oland"
    • Radeon Rx 240 "Oland"
    • Radeon Rx 300-series
    • See footnote♥ for caveat
    • [TODO: laptop]
    • [TODO: APUs]
  • NVIDIA (≥Kepler), released September 2012
    • GeForce GT 630
    • See footnote♦ for exceptions
    • See footnote♠ for caveat
    • [TODO: laptop]
  • Intel (≥Skylake), released August 2015
    • HD Graphics 510
    • HD Graphics for 6th Generation Intel Processors
    • Iris Pro Graphics 580

♥ Older versions of Mesa don't support Vulkan on GCN 1 cards (released between January 2012 and June 2016).

If you think your card might be GCN 1, check it against this table:

  • Radeon HD 7000-series:
    • Models 7730–7990 (inclusive) are GCN 1.
    • Exception: 7790 is GCN 2.
  • Radeon HD 8000-series:
    • Models 8570–8990 (inclusive) are GCN 1.
    • Exception: 8770 is GCN 2.
  • Radeon Rx 200-series:
    • Models 240–280 (inclusive; including X variants) are GCN 1.
    • Exception: 260 (and X variant) is GCN 2.
  • Radeon Rx 300-series:
    • Models 330–370 (inclusive; including X variants) are GCN 1.
    • Exception: 360 is GCN 2.
  • Radeon RX 400-series:
    • Models 430–450 (inclusive) are GCN 1.
  • Radeon RX 500-series:
    • Model 520 is GCN 1.

If your GPU is older (≤TeraScale 3) or newer (≥GCN 2), your Mesa version does not matter, so ignore the rest of this footnote.

If your GPU is GCN 1, you should check your Mesa version.

To check your Mesa version, paste this command into the Terminal and press Enter:

glxinfo | grep -E 'Mesa [v0-9][^ ]*'

If you have Mesa version 20.0 or newer, it doesn't matter whether you have a GCN 1 card, so ignore the rest of this footnote.

If you have a GCN 1 GPU and an older version of Mesa, then I would recommend updating to any Mesa version ≥20.0.

An easy way to update Mesa on Ubuntu is to add this repository to your system and then run a system update and reboot; this worked for me on Ubuntu 20.04.3 LTS as of the time of writing this post (mid June 2022). The PPA has been running for nearly 10 years now, so it's somewhat vetted.

If you have a GCN 1 GPU and an older version of mesa and do not want to update Mesa, then you must set PROTON_USE_WINED3D=1 to play Proton games with good performance.

♠ Until either Red Hat or NVIDIA gets Vulkan-supporting open-source drivers usable, you must use NVIDIA's closed-source driver to access Vulkan on an NVIDIA GPU.

♦ Exceptions: GeForce GT 630 Rev. 1, GeForce GT 630 GDDR5, GeForce GT 640 OEM, GeForce GT 645 OEM; all of these cards do not support Vulkan and so will require you to set PROTON_USE_WINED3D=1.

Why do I need to set PROTON_USE_WINED3D=1?

Why do you, a gamer, need to set environment variables manually to fix a solved problem? Why does Proton fall back to CPU rendering with no error message? Why did you, a human, have to cross-reference your GPU model against the above tables written and maintained by me, a human, when your computer itself could have easily just autodetected Vulkan support and selected the best available driver?

This was a decision by the Proton developers. They did it to emphasize to users that they do not "support" Wine's Direct3D renderer. Remember that Valve is not a charity; they forked Wine to create a promotional add-on to sell more Steam games. If you get rid of your old PC, you're more likely to buy a Steam Deck or a high-end gaming rig, and thereby become eligible to buy even more games from them. (Frankly, instead of being annoyed at a lack of automatic wined3d fallback, one should probably be grateful that we're even allowed to configure it manually!)


GIANT hat-tip to the editors of the following Wikipedia pages, which were powerhouses that I could not have written this summary without access to:

Leave a Reply

Your email address will not be published. Required fields are marked *

Warning: This site uses Akismet to filter spam. Until or unless I can find a suitable replacement anti-spam solution, this means that (per their indemnification document) all commenters' IP addresses will be sent to Automattic, Inc., who may choose to share such with 3rd parties.
If this is unacceptable to you, I highly recommend using an anonymous proxy or public Wi-Fi connection when commenting.