You are not logged in.

#1 2025-06-28 20:29:44

Hallicon
Member
Registered: 2025-06-27
Posts: 4

[Solved] Steam: This game requires a Direct3D X.X compatible adapter

I was recently trying to run Outlast 2 and ran into the error "This game requires a Direct3D X.X compatible adapter". I was puzzled by this because back when I used to use Ubuntu I didn't have issues running games and it was mostly plug and play, at the time I hadn't realized it's because Debian installs certain dependencies that are brought in along with the Steam package, but because Steam in Arch is extra and not in the core repository, it's not automatically installed for you (and rightfully so because it's almost invasive). When coming into Arch I've adopted the idea that I would have to fix these kind of problems, so lo and behold here it is.

The reason this error comes up on Steam is because of how DirectX calls (program functions) are handled by steam. The default (and modern) route Steam takes for compatibility is to use dxvk. I'll explain what this is shortly. But it's important to understand what's going on so you don't end up with the wrong solution.

Initially I came by a workaround fix from a ProtonDB user who mentioned the use of a command to run as a launch option:

gamemoderun PROTON_USE_WINED3D11=1 %command%

But this solution is not correct. The reason this is more of a bandaid to a bigger problem, is because what's going on in the background is Wine is being used, but it's running a graphical backend called wined3d. Wined3d is a program that acts as a graphical backend for wine in order to translate DirectX calls into OpenGL calls. Meaning that when you run your games on steam, instead of using the modern Vulkan API, you will instead be using the antiquated OpenGL. Now OpenGL isn't bad, a lot of game engines like Unreal Engine use Open GL, but when it comes to games involving modern titles, and Steam, you want shaders to compute with Vulkan shaders instead of OpenGL ones. It is what Steam preprocesses your games with. If you don't know what a shader is, basically the best way to put it is the way surface looks when you bounce digital light beams at it. If you want your games to appear with properly computed shaders, so the surfaces in games look as they were meant to, then you want to use the Vulkan API as it's more modern in implementation.

This does not make OpenGL bad, a lot of desktop applications today still are built on top of OpenGL, but if you're running things on modern protocols such as Wayland you want to be equipped with the proper software to do it. So what is the solution to all of this, it's simple you just need to install the appropriate packages steam uses to process shaders with Vulkan, to do this it depends on your system:

AMD GPU user:

sudo pacman -S mesa lib32-mesa vulkan-radeon lib32-vulkan-radeon

Intel GPU user:

sudo pacman -S mesa lib32-mesa vulkan-intel lib32-vulkan-intel

NVIDIA GPU user:

sudo pacman -S mesa lib32-mesa nvidia-utils lib32-nvidia-utils vulkan-nouveau lib32-vulkan-nouveau

"What is all this?" You might be asking. It's important to ask because you should know what you're installing into your system. mesa is a collection of base components that allow you to work with graphics you can sort of think of this as a spine for everything. It is a base package that includes the base libraries for the Mesa 3D Graphics Library which initially began as an open source implementation of OpenGL. Over the years, it grew to include the Vulkan API as part of one of its implementations into Linux.

To get these implementations you have in each of the commands listed above their 32-bit (lib32-xyz) and 64 bit counterparts being installed via pacman. Note that these packages contain the shared libraries required to process the shaders I mentioned earlier through the use of Vulkan, the names of these libraries for example will look like libvulkan.so or libGL.so. Additionally, the nouveau  packages are NVIDIA's proprietary packages for vulkan.

Essentially what all of this is, is basically you're downloading the core of Mesa, and those extra library packages are Mesa's implementation of Vulkan...like plugins for a software.

Now that you have the appropriate libraries installed in your system, you need to (lastly) make sure you have the thing that proton uses to handle the DirectX calls for the game and for this you install DXVK. DXVK takes the DirectX calls from the game binary itself and then converts it to Vulkan for your GPU to process and render using the drivers we installed earlier.

Windows game (Direct3D calls)
      ↓
Proton/Wine (fake Windows)
      ↓
DXVK (converts D3D → Vulkan)
      ↓
Vulkan driver (from Mesa or NVIDIA)
      ↓
GPU (actual rendering)

To do this simply use an external package manager like paru (which is what I use) to install the right package.

paru -S dxvk-bin

When installing these binaries make sure to check their appropriate names on this site or use pacman/paru to search for their proper names. People will maintain different versions and so you want to make sure you have the right one.

With that there should be no issues running the compatibility layers from Steam with the games you install on Linux, and it will run better because Vulkan!

Offline

#2 2025-06-29 14:34:41

Lone_Wolf
Administrator
From: Netherlands, Europe
Registered: 2005-10-04
Posts: 14,565

Re: [Solved] Steam: This game requires a Direct3D X.X compatible adapter

dxvk only covers directX 8, 9, 10 and 11 , for directx 12 VKD3D-Proton needs to be used.

Programs from the windows 98/95 era won't benefit from directx to vulkan translation and likely perform best by using wined3d translation to opengl calls.


Disliking systemd intensely, but not satisfied with alternatives so focusing on taming systemd.

clean chroot building not flexible enough ?
Try clean chroot manager by graysky

Offline

Board footer

Powered by FluxBB