Open davidbepo opened 6 years ago
gentoo 17.0 same thing
https://appdb.winehq.org/objectManager.php?sClass=version&iId=29230
Warframe/Downloaded/Public/Tools/ is not exists inside: $mysteamlibrary/steamapps/common/Proton_3.7/dist/share/default_plx/drive_c/users/steamuser/Application\ Data
i tried the proton env variables one by one to see if it worked that way and it doesnt
Someone on Warframe forums found a workaround. Fix seems to be something easy on dev side, altho probably not too hard on Steam's side.
Same here. Using Arch Linux with the latest proprietary nvidia drivers.
Huge compliments to the Proton team for making this possible!
@XANi i ran that script and it clearly did something but still i cant get warframe to run :( now it gives a wine debug error if i launch it from the terminal
Runs perfectly on Lutris with this workaround launcher shellscript. But obviously this is about steam. The game does not start because of the launcher. This script mentioned above replaces the launcher and updates the game. The developers should just implement this script or make their launcher linux/wine compatible.
Just to note:
The game itself is broken in proton, this is on proton's end, as it runs perfectly fine in wine staging with the appropriate winetricks.
For any Proton devs looking into this: when Warframe.exe tries to launch, it thinks it's offline and can't download the cache manifest in needs to continue loading:
2.110 Sys [Info]: Cache languages enabled: _en
2.110 Sys [Info]: Loading Oodle DLL: oo2core_6_win64.dll
2.111 Sys [Warning]: INTERNET_OPTION_IGNORE_OFFLINE failed
2.112 Sys [Info]: Downloading cache manifest index...
2.112 Sys [Error]: Could not get cache manifest index.
2.113 Sys [Info]: ===[ Exiting main loop]====================================================================================
2.211 Sys [Info]: Loaded TOC for Windows/H.Misc (took 93.8ms, loaded 87009 entries, found 0 deleted)
2.211 Sys [Info]: Cache flushed
2.211 Sys [Info]: Main Shutdown Initiated.
The launcher issue is something DE would have to fix, which I've posted about here: https://forums.warframe.com/topic/1000489-question-to-developers-regarding-steams-new-steam-play-on-linux/
Who knows if I'll actually get a response though.. I've posted about this before. This is why I ended up just making my own launcher.
Here is my launch script (with README) which is a drag and drop solution if you have the game installed: https://gitlab.com/GloriousEggroll/warframe-linux/tree/steamplay-proton/
Issue exists on Solus w/AMD RX 580
Figured out the WINE bugs that break the game and the patches that fix them!
WINE has a bug report from 2016 with a patch in staging that hasn't been merged yet: https://www.winehq.org/pipermail/wine-bugs/2016-May/443111.html FIX: wininet-InternetCrackUrlW is the patchset in staging that fixes this.
Also, this one is not major/game breaking, but in the log:
000f:err:service:process_send_command receiving command result timed out
000f:fixme:service:scmdatabase_autostart_services Auto-start service L"WineBus" failed to start: 1053
0015:err:service:process_send_command receiving command result timed out
002a:err:plugplay:handle_bus_relations Failed to load driver L"WineHID"
FIX: Fixed by staging patchset wuauserv-Dummy_Service, which I believe ZF (another staging maintainer) is working on getting merged to wine mainline.
The game currently needs native xaudio2_7 from DirectX, as builtin fails. FIX: A temporary fix until wine's builtin xaudio2_7 can be fixed is to install Direct X to the prefix then add a dll override to the registry that sets xaudio2_7 as native. This has to be installed by hand as winetricks disabled 64 bit xact dlls in Direct X due to this bug in the past.
If 3 gets fixed in wine this game will not rely on any MS native libraries
Even more digging.. WINEDEBUG report with +xaudio2 reveals the culprit of the xaudio2_7 bug:
191576.058:0008:0009:trace:xaudio2:CreateFX {a90bc001-e897-e897-7439-435500000003} 0x53f620
191576.058:0008:0009:err:ole:CoGetClassObject class {a90bc001-e897-e897-7439-435500000003} not registered
191576.058:0008:0009:err:ole:CoGetClassObject no class object {a90bc001-e897-e897-7439-435500000003} could be created for context 0x1
191576.058:0008:0009:warn:xaudio2:CreateFX CoCreateInstance failed: 80040154
this is the last thing xaudio2 tries to do before spoamming a bunch of xaudio2:do_engine_tick frames then crashing
CreateFX is in xapofx.c it's trying to register class {a90bc001-e897-e897-7439-435500000003} which apparently doesn't exist.
EDIT: It exists, it's just for FXEcho, and FXEcho and FXMasteringLimiter have yet to be implemented in WINE'S XAudio2_7 - specifically xapofx.h:
static HRESULT WINAPI xapocf_CreateInstance(IClassFactory *iface, IUnknown *pOuter,
REFIID riid, void **ppobj)
and
HRESULT CDECL CreateFX(REFCLSID clsid, IUnknown **out)
both have
/* TODO FXECHO, FXMasteringLimiter, */
A quick fix can probably be added by just allowing them to be identified like so:
if(IsEqualGUID(clsid, &CLSID_FXEcho27) ||
IsEqualGUID(clsid, &CLSID_FXEcho))
class = &CLSID_FXEcho;
along with some mumbo jumbo that makes them do nothing, but idk right now. 7:30 am now, time for some zzz's. Hope someone's able to do something useful with my blabber
alright, I've managed to create a patch that implements FXEcho, which fixes the bug listed above:
https://gitlab.com/snippets/1748561
The game also needs xaudio2_7-OnVoiceProcessingPassStart xaudio2_7-WMA_support xaudio2_CommitChanges from wine-staging
However now IXAudio2Impl_CommitChanges needs to be implemented as it's currently just a stub that returns S_OK, which results in the game crashing due to not knowing how to properly commit the changes which pass WMA audio to ffmpeg to be converted for OpenAL. By default CommitChanges returns a stub and E_NOTIMPL, the xaudio2_CommitChanges patch in staging makes it return S_OK, which allows the game to start, but it then crashes when trying to do any wma->openal decoding:
EDIT: I'm not sure if CommitChanges needs to be implemented. The stub may work just fine, but the WMA patch for xaudio2 causes avcodec_send_packet to return with Operation not permitted which is what causes the crash
240188.164:0008:0056:trace:xaudio2:IXAudio2Impl_CreateSourceVoice (0x91d1d0)->(0x4ba308a0, 0xb89e990, 0x8, 3.000000, (nil), 0xb89e950, (nil))
240188.164:0008:0056:trace:xaudio2:dump_fmt wFormatTag: 0x161 (WAVE_FORMAT_WMAUDIO2)
240188.164:0008:0056:trace:xaudio2:dump_fmt nChannels: 2
240188.164:0008:0056:trace:xaudio2:dump_fmt nSamplesPerSec: 44100
240188.164:0008:0056:trace:xaudio2:dump_fmt nAvgBytesPerSec: 12000
240188.164:0008:0056:trace:xaudio2:dump_fmt nBlockAlign: 4459
240188.164:0008:0056:trace:xaudio2:dump_fmt wBitsPerSample: 16
240188.164:0008:0056:trace:xaudio2:dump_fmt cbSize: 0
240188.164:0008:0056:trace:xaudio2:IXAudio2Impl_CreateSourceVoice OpenAL can't use this format, so using FFmpeg
240188.164:0008:0056:trace:xaudio2:IXAudio2Impl_CreateSourceVoice synthesizing extradata for xWMA
240188.165:0008:0056:trace:xaudio2:XA2SRC_SetOutputVoices 0x948630, 0xb89e950
240188.165:0008:0056:trace:xaudio2:XA2SRC_SetOutputVoices Outputting to: 0x0, 0x91d1e8
240188.165:0008:0056:trace:xaudio2:IXAudio2Impl_CreateSourceVoice Created source voice: 0x948630
240188.165:0008:0056:trace:xaudio2:XA2SRC_SetFrequencyRatio 0x948630, 1.000249, 0x0
240188.165:0008:0056:trace:xaudio2:XA2SRC_SetOutputMatrix 0x948630, 0x91d1e8, 2, 2, 0xb89e968, 0x0
240188.165:0008:0056:trace:xaudio2:XA2SRC_SubmitSourceBuffer 0x948630, 0xb89e998, 0xb89e9c8
240188.165:0008:0056:trace:xaudio2:XA2SRC_SubmitSourceBuffer Flags: 0x40
240188.165:0008:0056:trace:xaudio2:XA2SRC_SubmitSourceBuffer AudioBytes: 2100189
240188.165:0008:0056:trace:xaudio2:XA2SRC_SubmitSourceBuffer pAudioData: 0x662b0010
240188.165:0008:0056:trace:xaudio2:XA2SRC_SubmitSourceBuffer PlayBegin: 1031477
240188.165:0008:0056:trace:xaudio2:XA2SRC_SubmitSourceBuffer PlayLength: 6671051
240188.165:0008:0056:trace:xaudio2:XA2SRC_SubmitSourceBuffer LoopBegin: 0
240188.165:0008:0056:trace:xaudio2:XA2SRC_SubmitSourceBuffer LoopLength: 0
240188.165:0008:0056:trace:xaudio2:XA2SRC_SubmitSourceBuffer LoopCount: 255
240188.165:0008:0056:trace:xaudio2:XA2SRC_SubmitSourceBuffer pContext: (nil)
240188.165:0008:0056:trace:xaudio2:XA2SRC_SubmitSourceBuffer 0x948630: queued buffer 0 (2100189 bytes), now 1 buffers held
240188.165:0008:0056:trace:xaudio2:XA2SRC_Start 0x948630, 0x0, 0x0
240188.165:0008:0056:trace:xaudio2:IXAudio2Impl_CommitChanges (0x91d1d0)->(0x0): stub!
240188.169:0008:0063:trace:xaudio2:do_engine_tick frames available: 441
240188.170:0008:0063:trace:xaudio2:update_source_state 0x94ea00: going to queue a period from buffer 1
240188.170:0008:0063:trace:xaudio2:xa2buffer_queue_period queueing 1024 bytes, now 4096 in AL
240188.170:0008:0063:trace:xaudio2:do_engine_tick Calling OnVoiceProcessingPassStart with BytesRequired: 4410
240188.170:0008:0063:trace:xaudio2:update_source_state 0x948630: going to queue a period from buffer 0
[wmav2 @ 0x7fa150005400] nb_frames is 0 bits left 35664
240188.170:0008:0063:warn:xaudio2:xa2buffer_queue_period avcodec_send_packet failed: Operation not permitted
240188.170:0008:0063:trace:xaudio2:xa2buffer_queue_period queueing 0 bytes, now 0 in AL
240188.170:0008:0063:trace:xaudio2:update_source_state 0x948630: going to queue a period from buffer 0
warframe doesnt load from me as well gloriouseggroll up there is an asset i havent been able to play warframe in years because I could never get it to run right in linux if you guys can in anyway implement the changes up there that would be amazing because I miss this game
at the moment I've got a workaround for the launcher and xaudio2_7 that allows proper updating, cache defragging, and getting in game and logging in.
After that, for some strange reason proton just forces the client closed? I've tried turning debugging on but it doesnt show anything useful, just immediately closes, not even a safe shutdown. If anyone's willing to try to figure out why proton's straight up closing the app here's my repo, just follow the readme:
https://gitlab.com/GloriousEggroll/warframe-linux/tree/steamplay-proton
Some dev input would be really useful here as to why proton just straight kills the running client
@GloriousEggroll i tried running your script but if i append --firstrun to the launch options it doesnt recognize it and if i dont do it it doesnt update the laucher, got any help?
@davidbepo for any issues regarding my launcher please use the issues section of my gitlab as the official launcher bug and in-game bugs reported here are not related to my launcher, for the sake of keeping this bug report on point
With the patched wininet dll, my own launcher executable, and a bit of tinkering, I've gotten it to go ingame and run at near native performance. On a i7-7700K and a RX 580 with Mesa 18.1.6.
Something seems to cause the game to freeze after a while though, leaving it just sitting there eating two full cores worth of CPU.
Edit: As it turns out, actually getting DXVK to work solved the freezing, though the game loads assets really slowly, which causes heavy choppiness during gameplay.
welp. as of latest update I can't get the game to launch at all any more. keep getting pid 37067 != 37066, skipping destruction (fork without exec?) every time i try to launch
@ananace I'd much prefer your solution to mine as bash script and a ghetto wrapped fake exe are not exactly ideal, how would one go about compiling it? (edited original comment as I realized it was for a win executable to be wine friendly)
as for the asset loading - thats actually the shader cache filling up, its fine after that
@GloriousEggroll hmmm Still works here with your scripts. I am running the steam version but instead of renaming the Launcher.exe I just added it as Launcher-Lutris.exe and Launcher.sh (also create a Launcher-Lutris.bat so wine can run it through CMD, which I could've done straight with the exe).
Anyway, I don't execute it through steam, so I don't have to deal with the naming convention and etc (also the binaries are available to me through my windows install, so this was easier).
I do get a stuck screen on a CMD like shell, which I just press ctrl+c and it starts warframe, eventually
@llitz the lutris wine-steam version is not the same as the steamplay-proton version. they launch in very different ways, with proton having many more environment variables passed from native steam. additionally proton launches things a much different way then just using wine whatever.exe -some -arguments. its a lot more annoying :/
I have been running it manually and mixing some libraries, I should have thought about that: it has been a long day. I will report back if I can pinpoint what makes it run.
On Fri, Aug 31, 2018, 12:24 AM Thomas Crider notifications@github.com wrote:
@llitz https://github.com/llitz the lutris wine-steam version is -not- the same as the steamplay-proton version. they launch in very different ways, with proton having many more environment variables passed from native steam
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/ValveSoftware/Proton/issues/167#issuecomment-417564654, or mute the thread https://github.com/notifications/unsubscribe-auth/AVbEO2fCQcu-Ha0-CR1_tcYyTKZ84ZgPks5uWNaOgaJpZM4WIbhT .
@GloriousEggroll The project should just be a regular Visual Studio 2017 solution, the code's a bit of a mess though as I just grabbed an old launcher from an abandoned MMO I helped develop - which as it turns out chose an almost identical method of distribution as Warframe did.
The only thing that executable doesn't do is run the DX redistributable setup, the wininet DLL replacement, or the xaudio override. And I somehow get the feeling that you don't particularly want to do such things through a native PE, probably better to keep them as a Linux bash-script.
I did render two minutes of video before bed. Mainly to have an example of the choppiness I'm experiencing, though I later found out that an application was loading the disk rather heavily in the background, so it might actually be much more playable than it looked at first.
So I've been working with ananace on his launcher and we have it working very well. I've also discovered WHY warframe was randomly closing - turns out if I plug a controller in then start the game - it magically stays open. If I don't start the game with a controller plugged in.. it closes after a short time. Both my launcher and ananace's had this same problem so it seems like it's something to do with how controllers/controller profiles are handled on steams end.
also, the game benefits a lot from the PoE stutter patch on dxvk as well.
i finally got the game to run with @GloriousEggroll launcher but there are a lot of issues 1) the game is on english and i cant switch to spanish:
2) there are massive stutters (this was already mentioned) 3) issues with shadows: 4) the game closes after a while (this was already mentioned)
@davidbepo I've stated this once already - any problems with my launcher please post on my gitlab issues section. NOT here.
@GloriousEggroll i think the issues that im having might be valuable for proton developers specially since some of them are not because of launcher
the language problem is due to my launcher the closing problem has already been mentioned due to a controller issue the stutter problem has already been mentioned due to dxvk.
but the shadow issue hasnt been mentioned
make sure the game is running in dxvk - turn the hud on.
by hud you mean the steam interface right? i enabled it and now the ship looks fine
No. the DXVK_HUD. in the proton folder rename user_settings.sample.py to user_settings.py, comment out all the lines except DXVK_HUD and set DXVK_HUD to devinfo,fps,version
then start the game. if there's no DXVK hud in the top left then the game isn't using dxvk when it should, which would lead either a launcher or driver problem.
can confirm game is ran with dxvk:
the ship is still fine so maybe it was an uncompiled shader or something
note: dxvk from my launcher has the poe anti-stutter patch which gives filler shaders until they are actually rendered, so this could be why it looked like that.
and now i feel i bit dumb, the only issue i thought it wasnt related to your launcher its related to it, anyway thanks for the good job you have done getting warframe to run on linux
i hope proton developers can use it to make the game playable for everyone
apologies if it's unrelated but a bug i experience (kde plasma desktop) is if i run kquitapp5 plasmashell
then kstart5 plasmashell
warframe stops outputting video but otherwise is fully functional (official issue number: WAR-1971934). also occasionally it will start stuttering (a lot) which is fixed by setting the low profile. you can then afterwards go back to the exact same settings you had before and experience no stutter. also this graphical glitch:
obviously in this one the issue is that the door failed to load. as one glitch (which i now removed so people know what is current) has stopped occurring, it could be possible that the other ones mentioned here are now fixed too.
18.10.2018 new glitch:
in mission select:
outside of mission select:
it may not be overly clear what this one is, but basically after selecting a 'fissure' mission then backing out of the relic select screen the emblem starts flickering a lot
there is also this glitch as well that i'm unsure about reproducibility (the blue things that look like effects, i'm pretty sure were meant to dissappear)
This controller bug is infuriating. I can't for the love of me find a controller that's recognized by Proton, so I'm a sitting duck aside from picking up my daily login reward. Irony is that my controller works in the game, it's just Steam that has a problem with it.
I'm trying to launch the game, but after update the @GloriousEggroll script the console just closes and game doesn't start, here is the console log, I paste just after steam start.
Loaded Config for Local Selection Path for App ID 230410: /home/tuxter/.local/share/Steam/steamapps/workshop/content/241100/1481920687/961969116462592811_legacy.bin Loaded Config for Local Override Path for App ID 230410: /home/tuxter/.local/share/Steam//controller_base/empty.vdf GameAction [AppID 230410, ActionID 8] : LaunchApp changed task to ProcessingInstallScript with "" GameAction [AppID 230410, ActionID 8] : LaunchApp changed task to SynchronizingCloud with "" GameAction [AppID 230410, ActionID 8] : LaunchApp changed task to ProcessingShaderCache with "" GameAction [AppID 230410, ActionID 8] : LaunchApp changed task to SiteLicenseSeatCheckout with "" GameAction [AppID 230410, ActionID 8] : LaunchApp changed task to CreatingProcess with "" GameAction [AppID 230410, ActionID 8] : LaunchApp waiting for user response to CreatingProcess "" GameAction [AppID 230410, ActionID 8] : LaunchApp continues with user response "CreatingProcess" Opted-in Controller Mask: 70 Game update: AppID 230410 "", ProcID 11918, IP 0.0.0.0:0 ERROR: ld.so: object '/home/tuxter/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored. ERROR: ld.so: object '/home/tuxter/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored. ERROR: ld.so: object '/home/tuxter/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored. Loaded Config for Local Selection Path for App ID 230410: /home/tuxter/.local/share/Steam/steamapps/workshop/content/241100/1481920687/961969116462592811_legacy.bin Loaded Config for Local Override Path for App ID 230410: /home/tuxter/.local/share/Steam//controller_base/empty.vdf
Adding process 11918 for game ID 230410 GameAction [AppID 230410, ActionID 8] : LaunchApp changed task to WaitingGameWindow with "" Adding process 11919 for game ID 230410 GameAction [AppID 230410, ActionID 8] : LaunchApp changed task to Completed with "" Adding process 11920 for game ID 230410 Adding process 11921 for game ID 230410 Adding process 11922 for game ID 230410 Adding process 11925 for game ID 230410 Adding process 11927 for game ID 230410 Adding process 11930 for game ID 230410 Adding process 11938 for game ID 230410 Adding process 11943 for game ID 230410 saving roaming config store to 'sharedconfig.vdf' roaming config store 2 saved successfully Adding process 11956 for game ID 230410 Game removed: AppID 230410 "", ProcID 11918
game still doesnt run on proton 3.16, now it gives a dump with some weird hex codes and executable and library names
@davidbepo game itself runs fine with proton 3.16, official launcher is still broken because it cant update itself and boot loops
@davidbepo game itself runs fine with proton 3.16, official launcher is still broken because it cant update itself and boot loops
for me it doesnt even get to boot looping, as i said it gives a dump
btw i did i reinstall without your script to test it, i will test it with your script later
@GloriousEggroll hey man, thank you for all your work. I have managed to get the game working with your first standalone guide based on Wine, but it was lagging and I didn't know how to configure it properly.
I have followed the steam-proton guide, but the game doesn't start on my end, even with phone connected as controller through Steam Link app. Any ideas or advise to where to go from this on, or how to check the logs, what might be blocking it ?
@joro1881 did you make sure steam is using proton 3.16? any lower version to the best of my knowledge simply won't work
@prototype99 Sure, here how it looks
@joro1881 sorry for the late reply but yeah warframe steam-proton needs 3.16, in compatibility tool you should get the option in the dropdown. you may also need to refer to https://gitlab.com/GloriousEggroll/warframe-linux/issues/48 if it still doesn't boot. i summarised what needed to be done in the last post; if you like i can put it all into a guide for you on my website
@prototype99 Thanks mate, I am not in a hurry. Well, I don't want to trouble your day just for me. I will try again with version Proton 3.16-3 Beta, and follow the GloriousEggroll's guide + his launcher option. I have the Wine already configured. Starcraft 1,2 and Diablo 3 are running like a charm. I also found there is a feature 'feralinteractive' gamemod to boost the performance of the CPU. It can be preloaded. However, WF is so optimized that actually is not using this. :D Overall, if you have additional settings or steps that I am missing, you can just point them.
@GloriousEggroll @prototype99 Okay guys, I got it running this time. Thank you a lot! I am looking into the issue of exiting the game after 5min because of no controller detected. If you have any tips on that ? I tried connecting my phone, which worked, but then all the controlls in the game were changed. So I couldn't use the mouse.
I am out of ideas, no matter what combination of plugin/unplugin the controller, the games settings are already altered. I cannot choose a mission with the mouse. I tried changing steam setting or turn the controller off from there. Didn't work. Also tried to only steaming from the phone, didn't worked. Enabled both mouse and controller, but still no change. The menus are off limits. I managed to join a mission and the mouse was working, but couldn't 'abort mission' from the menu, still wasn't working.
yeah i do find it expects you to use a controller if you plug it in. i don't blame you for not noticing because it's in the actual repo but if you take a trip to https://gitlab.com/GloriousEggroll/warframe-linux/tree/steamplay-proton the readme actually now says about another way to do it with xboxdrv? so if you try that, i don't know if that will prove more successful. i use controller so honestly i haven't tried it. (sorry!)
installing xboxdrv and running it as a service fixes the controller problem. steam recognizes xboxdrv's service as an xbox 360 controller even with no controller plugged in. it's a workaround, but it works.
Playing above the threshold!!!! BIG BIG thanks guys. I really appreciate it. You made my month. I have issues with my eyes, and Warframe is actually helping for my health. Shooting greeners around, make my eyes move :D
Sincerely thank you.
Hey guys, found a bug. Everything is running perfectly, but when opening the door of Plains, to enter, throws me out of the game, while loading. I can rejoin the squad and continue play on the plains without an issue. I reproduced the issue three times in a row. Dunno, if it's only with me. There is no issue to enter Plain from the Orbiter tho. Only from Konzo with a mission chosen.
Hey guys, sorry to drag again. But with the new coming Fortuna, I guess was inevitable.
Related to my previous reply about Plains, I couldn't get what made the game crushing, but eventually stopped crushing and I could enter through the doors without struggle. Odd.
Now, Fortuna was dropping me with message I couldn't run in 32bit mod, 64bit is the future. So I changed the launcher.sh with
WARFRAME_EXE="Warframe.x64.exe"
directly, so the game is always started in x64 mod. so I was able to enter the world of Venus. I even got after the first objective, then the game crashes with report to Warframe. Dunno, if it's DE thing or cuz we are on Linux/Proton.
Please, share if you have same experience or not, or if you have any thoughts about it.
Thank you in advance
as per title i installed warframe and it doesnt work, if you want me to provide any log files tell me the instructions and i will do it
system and os specs
apu: ryzen 5 2400G using the vega 11 integrated graphics os: manjaro linux mesa: 18.1.6 llvm: 6.0 kernel: 4.18.3 using proton 3.7 from the steam beta client
by the way huge thanks to valve for bringing this huge advancement for linux gaming