Attached: 1 image
✨ We got a bunch of Steam games to run on Asahi Linux!!! ✨
Most of them run at a solid 60FPS and all of them are playable on my M2 Pro~ 🚀
All running on a krun microVM with FEX and full TSO support 💪
I was not expecting Party Animals to run! That's a DX11 game, running with the classic WineD3D on our OpenGL 4.6 driver! 🤯
Watch the stream:
▶️ https://youtube.com/live/JT9a_MrFV18
So how does that work given that most Steam games are x86/x64 and the M2 is an ARM processor? Does it emulate an x86 CPU? Isn’t that slow, given that it’s an entirely different architecture, or is there some kind of secret sauce?
Definitely going to incur a performance hit relative to native code, but in principle it could be perfectly good. It’s not like the GPU is running x86 code in the first place. On macOS, Apple provides Rosetta to run x86 Mac apps, and it’s very, very good. Not sure how FEX compares.
So it’s using Virtualization for the x86_64 bits, while the DirectX11 bits are being translated by WineD3D into OpenGL as normal and the Asahi Linux OpenGL driver executes that on the GPU.
Edit : I asked about it at the start of her steam apparently, the real Asahi driver is directly interacting with the with the game running in the VM.
It’s a bit hard to understand what she was saying because she likes super low level, even for me. But she’s was talking about how the VM is created & then the driver gets mapped directly into the VM. It’s a really interesting concept.
I’ll have to go back when the steam ends and pay closer attention to further grasp it.
Speak of containers, you just reminded me of Waydroid, such a cool underrated project.
All this stuff is really really cool. Anything that allows running software from completely different OS’s and Architectures are just a wonder and they help with software preservation which is very important to me.
Poorly Waydroid is just vaguely secure on Distros that use SELinux, as Android uses it as a major part of its app sandboxing (called SEAndroid).
So if you run Waydroid on Ubuntu, which will be the most common way, (and to my knowledge was the first possible one, until aleasto packaged it on Fedora), you will have no sandboxing at all.
Also the Waydroid container runs as root, even though unprivileged containers can also get access to all the stuff needed. Most notably, Bluetooth doesnt even work, even though Waydroid runs as root, lol.
Waydroid is a perfect exable of a hacked solution simply ran as root, to circumvent any real solutions for the needed access.
Also it uses Android 11, which for some reason I forgot was easier to port.
The concept is cool though, just needs
Upgrading to Android/GrapheneOS 14
Running in a rootless and restricted container
OR running in a VM, so that SELinux can work on all distros
To answer your question, I’m sure for the x86_64(not separate things btw) specific code it might use some sort of emulator or a translation layer. Idk WTF “microVM with FEX” is, maybe that’s it?
But for the DX11 part, that’s just the normal DirectX to Vulkan/OpenGL translation layer e.g. WineD3D.
There’s actually nothing that special about DirectX on ARM, it’s the same API. The translation layer just takes those API calls from DirectX11 and translates them to the equivalent in OpenGL, and then the Asahi Linux OpenGL driver takes of actually executing those commands on the GPU.
You asked how it works, the post states how it works.
You also asked if it’s slow, which is clearly answered in the post (though you didn’t quote that part).
You also asked if there’s some “secret sauce” allowing it to be fast, which is also a weird question since everything used is listed in the post.
If something wasn’t clear to you, why not specifically ask about it? Even in this comment, you still don’t specify what you don’t understand. What kind of answer are you expecting to get?
So how does that work given that most Steam games are x86/x64 and the M2 is an ARM processor? Does it emulate an x86 CPU? Isn’t that slow, given that it’s an entirely different architecture, or is there some kind of secret sauce?
Emulation.
Definitely going to incur a performance hit relative to native code, but in principle it could be perfectly good. It’s not like the GPU is running x86 code in the first place. On macOS, Apple provides Rosetta to run x86 Mac apps, and it’s very, very good. Not sure how FEX compares.
Virtualization actually, dont know why though
Thanks. That answers the part I couldn’t.
So it’s using Virtualization for the x86_64 bits, while the DirectX11 bits are being translated by WineD3D into OpenGL as normal and the Asahi Linux OpenGL driver executes that on the GPU.
Edit : I asked about it at the start of her steam apparently, the real Asahi driver is directly interacting with the with the game running in the VM.
I thought FEX was dealing with the x86_64 translation and the VM was converting 4K to 16K page sizes
It’s a bit hard to understand what she was saying because she likes super low level, even for me. But she’s was talking about how the VM is created & then the driver gets mapped directly into the VM. It’s a really interesting concept.
I’ll have to go back when the steam ends and pay closer attention to further grasp it.
It really is cool, miniature VMs are such a good concept for security like QubesOS but actually possible.
ChromeOSs Linux VM is also crazy. It is a VM, running a container image. Actually is that krun?? It seems similar.
Then the stuff is streamed to the wayland compositor and displayed like regular windows.
Such a cool, secure and minimalist concept.
Speak of containers, you just reminded me of Waydroid, such a cool underrated project.
All this stuff is really really cool. Anything that allows running software from completely different OS’s and Architectures are just a wonder and they help with software preservation which is very important to me.
Poorly Waydroid is just vaguely secure on Distros that use SELinux, as Android uses it as a major part of its app sandboxing (called SEAndroid).
So if you run Waydroid on Ubuntu, which will be the most common way, (and to my knowledge was the first possible one, until aleasto packaged it on Fedora), you will have no sandboxing at all.
Also the Waydroid container runs as root, even though unprivileged containers can also get access to all the stuff needed. Most notably, Bluetooth doesnt even work, even though Waydroid runs as root, lol.
Waydroid is a perfect exable of a hacked solution simply ran as root, to circumvent any real solutions for the needed access.
Also it uses Android 11, which for some reason I forgot was easier to port.
The concept is cool though, just needs
Why not click the link and find out? It’s literally a Mastodon post, you don’t even have to read much.
The post doesn’t answer the questions, it’s why I asked.
It says:
Now I know some of these words, but it does not answer my question.
To answer your question, I’m sure for the x86_64(not separate things btw) specific code it might use some sort of emulator or a translation layer. Idk WTF “microVM with FEX” is, maybe that’s it?
But for the DX11 part, that’s just the normal DirectX to Vulkan/OpenGL translation layer e.g. WineD3D.
There’s actually nothing that special about DirectX on ARM, it’s the same API. The translation layer just takes those API calls from DirectX11 and translates them to the equivalent in OpenGL, and then the Asahi Linux OpenGL driver takes of actually executing those commands on the GPU.
You asked how it works, the post states how it works. You also asked if it’s slow, which is clearly answered in the post (though you didn’t quote that part). You also asked if there’s some “secret sauce” allowing it to be fast, which is also a weird question since everything used is listed in the post.
If something wasn’t clear to you, why not specifically ask about it? Even in this comment, you still don’t specify what you don’t understand. What kind of answer are you expecting to get?
deleted by creator
You can Google the words you don’t know, and find out that it does in fact answer your question.
Yeah god forbid people have some interesting discussion on this platform, right?
Just to offer some support, you’re right and those are good questions