Don't want to see articles from a certain category? When logged in, go to your User Settings and adjust your feed in the Content Preferences section where you can block tags!
Latest Comments by CatKiller
Linux Kernel patch being discussed to help Windows games run in Wine
2 June 2020 at 4:16 pm UTC

I'm not sure why this didn't occur to me before.

Using system calls directly seems like a very silly thing to do with a Windows game, but that's not necessarily as true for an Xbox game. I think the developers that have done this will still get bitten by the support costs caused by the fragility of their chewing-gum-and-string coding method, but it might not be as insane as it might first appear.

So perhaps Quantic Dream have an Xbox version that they haven't released yet, or they found it easier to go PlayStation -> Xbox -> Windows for some reason.

Linux Kernel patch being discussed to help Windows games run in Wine
1 June 2020 at 2:52 pm UTC Likes: 16

Quoting: scaineI'm a bit confused as to why they pushed this patch at all. If they only need to establish whether something is happening in Wine, or in Windows, can't they simply apply their patch to a locally-compiled kernel and test a few of the offending games/apps with that custom kernel loaded?

They've already done that: that's how they have benchmarks on the relative performance of selectively trapping system calls. And while the Wine devs being able to play All The Games might be nice for them, I expect that they'd quite like other Wine users to be able to as well.

The issue is that Windows applications are using Windows system calls without going through Wine. Those system calls won't work, because Linux isn't Windows, and they can't be translated because they don't go through Wine.

They need a solution that will catch (self-modifying and obfuscated) code that doesn't go through Wine and somehow still make it work for all users, without breaking Wine for everything else. For that, it needs to go to the kernel - since that's where the system calls end up - and it needs some discussion to find the best approach, and it needs the kernel devs to agree that it's a good idea. Hence the Request For Comment.

I would say that the game developers have done something pretty manky, but this is the least-bad way of handling it if those games are to be made to be able to run.

Linux Kernel patch being discussed to help Windows games run in Wine
1 June 2020 at 2:40 pm UTC Likes: 1

QuoteReading over comments and how it's done, it's possible this can help anti-cheat systems too but as always, don't go getting hopes up over early work that's not complete or merged in yet.

My reading of it was that they don't want to take an approach that will definitely break their anti-cheat work, rather than that this approach will specifically help.

Linux Kernel patch being discussed to help Windows games run in Wine
1 June 2020 at 8:09 am UTC Likes: 9

Quoting: elmapul"sidestepping the actual Windows API. "
how is that even possible?

So, again, just as I understand it from reading bug reports about a game I'm vaguely interested in rather than from any in-depth knowledge, most programs will use some kind of library when they need to make some system calls to make something happen - libc or ntdll.dll, say - but it's also possible to just make system calls directly: libc and ntdll.dll need to be able to make their own system calls, too, of course. Windows and Linux both use the same mechanism for this (I think it's a processor instruction and registers?) but they use different numbers in the registers: that is, they'll both have a system call number 12, but there's no reason for it to necessarily do the same thing. In fact, which thing gets done by each number changes between versions of Windows, so the developers doing this need to check the version of Windows and use a look-up table to generate their numbers.

Linux Kernel patch being discussed to help Windows games run in Wine
1 June 2020 at 7:48 am UTC Likes: 8

Quoting: BeamboomIsn't this to punch holes in the os layer and open up for instabilities, hardware conflicts and massive security issues?

The opposite. It's so that when a Windows application blindly uses Windows system calls on Linux they can be bounced back to Wine to be interpreted properly rather than naïvely followed or dropped. The seccomp framework already exists for trapping system calls, this is just to handle things more sensibly for this use case so that only Windows system calls need processing and Wine system calls can function unmolested. As I understand it.

Linux Kernel patch being discussed to help Windows games run in Wine
1 June 2020 at 7:43 am UTC Likes: 1

Quoting: PatolaDoes anyone know of any current use cases for this patch? Which Windows applications/games skip WinAPI calls to do syscalls directly?

The two I read about a little while ago here were Detroit: Become Human and Red Dead Redemption 2. I saw reference to some other culprits elsewhere, too, but I can't remember which they were right now.

Valve continues to improve Linux Vulkan Shader Pre-Caching
30 May 2020 at 9:07 pm UTC Likes: 11

Quoting: BeamboomIf I have understood what a shader is, I can not fathom how this works?

Shaders are programs that run on your graphics card. When GPUs first became programmable, rather than fixed-function hardware pipelines, the first programs they could handle were for light calculations, so they're called shaders, but every part is programmable now.

The programs are written in whatever language and compiled to a portable Intermediate Representation, which is compatible with whichever cards follow the relevant standards. Those IRs are generally what get distributed with games, but they still can't be run directly. They need to be compiled into a form that will run on the specific hardware.

Once you've compiled the programs it would be handy if you could save them somewhere so that you didn't need to compile them again; that's the shader cache.

Red Planet Farming is a new free game about feeding colonists
30 May 2020 at 1:56 pm UTC

I've been playing this with my little one. He loves the setting and the setup, and is delighted when the crops harvest themselves.

Historically-accurate WWII adventure Attentat 1942 looking at Linux builds
30 May 2020 at 1:46 pm UTC Likes: 1

So, looking into it a bit more, as the documentation Liam linked to says, Unity uses platform libraries... but not on Linux. It doesn't use platform libraries in Linux even for the encodings that Unity supports: they wrote their own software decoder for VP8 and Vorbis and use that exclusively. That seems like duplicated effort for a suboptimal result to me, but they don't seem to have revisited it in four years, so I guess it's not a priority for them.

Interestingly, even on Windows, Intel had to write their own thing to grab a video stream from Unity so that it could be hardware accelerated.

Historically-accurate WWII adventure Attentat 1942 looking at Linux builds
29 May 2020 at 9:22 am UTC

Quoting: Liam DaweYes, it's specific to the Unity video player. I see it quite often when testing games for developers. The Unity docs make it very clear what they work with on Linux, as I linked.
Yeah, not doubting the accuracy of your reporting, just thinking that it's something that Unity could fix.