Maybe. There’s still a few issues which remain for cross-platform builds:
- Shared surface handle support. This is a no-go for DXVK on Wine due to NT handle dependencies, but any native loader may have this be a bit simpler, assuming Chromium gl_image_* APIs are more workable to use other platforms’ file descriptor sharing and GPU drivers play along on these platforms.
- Anticheat obfuscation. There’s a lot of dependencies on x86/AMD64 single-architecture WinNT in here, this would need adapting for Linux bionic/glibc systems, but also for ARM64 WinNT.
- Platform runtime: ideally we’d make the entire codebase cross-platform as to not rely on the hot mess that is Wine, but this would entail making every single component that currently may assume some Windows/MSVC-isms portable, including some dependencies on high-level Windows components. The game itself is the least concerning here as RAGE doesn’t use many high-level Windows APIs to any extent that makes them non-trivial to reimplement using e.g. the .NET PAL.
This is probably the least likely thing to happen short-term as the next-next-gen release (2022? if at all) will have many more important portability concerns at first, especially if the MSVC compiler gets upgraded as we’ll have to port thousands of patterns to a new compiler then.
There’s not much that prevents this from happening even for the current game version (DXVK-Native when rebased to newer DXVK runs the game fairly decently under the Rotor PAL as shown with the Android porting effort, and should be a lot more trivial to add VK_KHR_external_memory_fd
mapping to), except for the fact that there’s not really enough time to work on everything including this at once, and the likelihood to need to throw away a lot of stuff depending on how GTA V on PC gets migrated to future platform releases.