userbinator 14 hours ago

Developing our own KMD is not really an option

Why not? Fully open-source Windows GPU drivers would be great. Incidentally, this sort of "glue code" is probably something LLM assistance could help greatly with much of the grunt work.

(E.g. there is already a generic framebuffer driver for Win3x/9x: https://news.ycombinator.com/item?id=47646363 but one of the ideas I have --- which anyone else with the time is more than welcome to attempt --- is to port the existing open-source Linux drivers for AMD/NVIDIA/Intel to early Windows versions that never even had closed-source drivers available, giving them full 2D/3D acceleration. Theoretically, something as crazy as CUDA on Windows 95 is possible, and perhaps some vibecoding can turn that into reality. After all, as I write this comment, https://news.ycombinator.com/item?id=49089814 is on the main page.)

  • LoganDark 13 hours ago

    You can't really develop a kernel-mode driver nowadays without being an incredibly large OEM. Otherwise, you won't be accepted by any anti-cheat.

    • Maakuth 13 hours ago

      An anti-cheat app would probably be quite surprised to find it's running on Windows 95 anyway.

    • Almondsetat 11 hours ago

      So we should throw away the possibility entirely just because of a few videogames? That doesn't sound reasonable at all, considering most videogames don't have anti cheats and GPUs can be used for way more stuff than playing.

    • not_a9 11 hours ago

      If anti-cheats actively whitelisted drivers playing competitive video games would be impossible for people using any rarer HW/utilities. Vulnerable drivers are generally blacklisted when found.

      Getting your driver signed seems like a pain these days, yeah

      • nananana9 11 hours ago

        I'm inclined to believe this is exactly what happens, given that both Bluetooth and my printer stopped working the last time I tried playing a Riot game.

        Also got a BSOD in vgk.sys, and it left a bunch of junk in my EFI partition after I uninstalled it. Fun times.

      • LoganDark 11 hours ago

        Maybe drivers are treated differently, but I remember having to update Windows 11 to play ARC Raiders because my specific version was old enough that system files did not pass their whitelist check. It told me which system file failed the check - I don't remember which it was exactly, but it definitely wasn't one that'd ever been modified, just one that wasn't recent enough it seems, at least going off of how updating fixed it.

      • inigyou 9 hours ago

        Yes this is how they work. You use a mainstream GPU or no game for you!

  • ZiiS 13 hours ago

    For Windows 3x/9x the common term was VxD, KMD strongly implies an NT derived OS.

    • pjmlp 13 hours ago

      Not only that, Windows NT driver model already changed at least twice since Windows XP, on Vista and Windows 10.

  • pjmlp 13 hours ago

    Certainly OpenGL and DirectX acceleration was a thing in Windows 9x, kind of missing the point.

    • nananana9 11 hours ago

      Videocards of the era only did exclusive fullscreen - you could not for example use OpenGL to render your windowed application's UI, that was all software.

      • pjmlp 11 hours ago

        My graduation thesis was porting a particle visualisation engine from NeXTSTEP into Windows 9x.

      • kg 6 hours ago

        I don't think this is true? I remember successfully using OpenGL and Direct3D acceleration in windowed mode on 9x devices.

        Are you thinking of the add-on 3D accelerator cards that did VGA pass-through from your 2D accelerator? It might've been true for them...

  • MayeulC 11 hours ago

    I almost wrote the same comment — the first part, anyways.

    In theory, it should be feasible to provide a "shim" to bridge the API gap between Linux and Windows internal APIs. The catch here is that Linux is a moving target.

    AMDGPU (the Linux kernel module) has its roots in a shared Linux/Windows codebase from AMD, so hopefully it didn't get _too_ tightly integrated (I know some parts got integrated, IIRC it used to ship its own i2c driver).

  • AshamedCaptain 10 hours ago

    I am quite sure AMD is already using a fork of the Linux amdgpu KMD for their proprietary driver on Windows (which in part explains why a project like this can even be done)

    Porting Linux drivers to anywhere is generally hard. It either makes your kernel very Linux-like (and lots of manpower to translate the abstractions), or forces you to put Linux on it. There are bazillions of projects to put recent Intel drivers on 9x and none suceeded, for example.

    Plus my recent observation that for Haiku it was easier to port the out-of-tree nvidia driver and fork Mesa, than it was to port the Linux amdgpu one.

  • atq2119 5 hours ago

    In order to have a useful Windows desktop, you need a DX12 driver.

    So, in order to write their own KMD, they'd either have to also write their own DX12 driver, which they probably have no interest in, or reverse engineer the existing AMD KMD interface to the point where they can reimplement it basically completely so that AMD's proprietary DX12 driver runs on it.

    I doubt they're saying it's impossible, it's more of a pick your battles situation.

    • happymellon 5 hours ago

      > in order to write their own KMD, they'd either have to also write their own DX12 driver

      You mean Vulkan driver. We can run DX12 on Vulkan.

leonmeng 8 hours ago

Impressive progress—getting CS2 running is a huge milestone. Hopefully AMD provides a stable KMD interface so this can become more than an exciting experiment.

Sweepi 4 hours ago

> New generation is so oversensitive: We were experimenting on Gen 11 hardware (RX 7900 XT) while Faith was working with a 10th Gen GPU (RX 7800 XT). We weren't able to replicate Faith's results for quite a while, due to architecture changes between these two generations.

... they are both RDNA3?

madhu_ghalame 11 hours ago

A compatibility matrix showing supported GPUs, Vulkan features, and current limitations would help developers evaluate the project.