This is my attempt to get Vulkan going on NetBSD

(github.com)

119 points | by segaboy81 1 day ago

11 comments

  • Tiberium 1 day ago
    Lavapipe is CPU rendering, it doesn't really prove much. But also, Vulkan on BSDs is totally possible and isn't something esoteric, FreeBSD has it.

    > Build goal only: This targets compilation and linkage of the Vulkan stack. Runtime GPU acceleration is not available under VirtualBox; the software driver (Lavapipe) is the target.

    I don't understand why this would ever be a problem, even without LLM assistance it's something that sounds like a weekend project?

    • saidnooneever 1 day ago
      this is what i would recommend. hoist it over from freebsd. it works well vulkan is fully usable, mesa works nicely. Even seen people playing with CUDA tho i didnt get that workin myself yey.
      • ChocolateGod 1 day ago
        FreeBSD relies on being able to run the Linux graphics drivers though via a compat layer.
        • rjsw 22 hours ago
          NetBSD uses the Linux graphics drivers too.
  • qiu3344 1 day ago
    > Vulkan is now available

    looks inside:

    > What this is NOT (yet): Running Vulkan programs

    • LoganDark 1 day ago
      Technically, it isn't wrong, if you consider Vulkan the technology rather than the service
      • NooneAtAll3 1 day ago
        isn't Vulkan the api?
        • LoganDark 1 day ago
          'Vulkan' can refer to at least:

          - Vulkan as a runtime service: 'the ability' for programs to do Vulkan things

          - Vulkan as an API / specification: how programs interact with the service to do those things, or how the service interacts with programs

          - Vulkan as a technology: how the API calls are implemented

          Generally Vulkan refers to the specification much like how Linux refers to the kernel, but there is still Linux (kernel) vs Linux (syscall ABI) vs Linux (runtime service)

  • klibertp 1 day ago
    Installation instructions:

        ftp https://raw.githubusercontent.com/segaboy/vulkan-netbsd/main/scripts/setup-env.sh
           !^^^^^!
    
    That's... a bit unorthodox. FreeBSD has a `fetch`[1] utility for this, I wasn't aware NetBSD puts that in `ftp`[2].

    Interesting choice. I wonder what led to it.

    [1] https://man.freebsd.org/cgi/man.cgi?fetch

    [2] https://man.netbsd.org/ftp.1

    • JdeBP 22 hours ago
      Actually, it's orthodox; and it's fetch that isn't. FreeBSD is actually the odd one out, for having an extra tool for doing the same thing. The ftp tool in all of the BSDs, including FreeBSD, speaks HTTP, and has done since Luke Mewburn did lukemftp (later to be named tnftp) and Theo de Raadt did likewise, both based on the original 4.2BSD ftp, back in the middle 1990s.

      * https://cgit.freebsd.org/src/tree/contrib/tnftp/ChangeLog#n1...

      * https://cvsweb.netbsd.org/bsdweb.cgi/src/usr.bin/ftp/main.c?...

      * https://cvsweb.openbsd.org/log/src/usr.bin/ftp/main.c,v?sort...

      • klibertp 21 hours ago
        Nice! Thank you, that explains it. FreeBSD was my first *BSD and the only one I had long-term contact with, so I unconsciously use it as my "BSD standard". My bad on that :)
    • yjftsjthsd-h 1 day ago
      I dunno, that feels very BSD to me. Presumably, they had a ftp utility first, and then when somebody wanted to download files over http they looked around and decided that the obvious thing to do was to add it to the existing file transfer/download program. Same as continuing to add functions to ifconfig rather than inventing a new ip tool.
      • dessimus 1 day ago
        Sure, if those functions added were related to configuring network interfaces, but it would be odd if someone added functions for configuring storage controllers.
        • lmm 20 hours ago
          Imagine using an ftp program to transfer files.
          • dessimus 15 hours ago
            BitTorrent transfers files, so should a BT client be bolted on too? Typically the Unix philosophy has been do one thing well, not do all the things.
    • iberator 1 day ago
      Oldest supported machine for NetBSD is VAX 780 from 1978(!!!). One of the first system supporting mmu, 32 bit cpu, virtual memory etc etc

      This machine is so slow that it takes a lot of time to generate ssh keys etc. We talking here hours hehe

      NetBSD is known to support like 60 architectures - many of them low end embedded systems: so ftp AS A CHOICE (you have other options!) is very smart and easy

      • spijdar 1 day ago
        I think GP is confused why the ftp command also handles http(s) :)

        I hate to imagine what a 780 running NetBSD would be like, too.

        I tried netbooting NetBSD on my MicroVAX 3400, which is about 2.5x the performance of the 780. It did, literally, take 6+ hours to slog through making RSA keys.

        • klibertp 1 day ago
          > I think GP is confused why the ftp command also handles http(s) :)

          Exactly - I even suspected for a second that `ftp` on NetBSD is something else entirely, not an actual FTP client with HTTP/HTTPS URLs bolted on. It's not - it still accepts a host as an argument and opens a CLI if there's an FTP server to talk to.

          • saidnooneever 1 day ago
            maybe rather than protocol its program. then it all makes sense no. File Transfer Program. voila.
        • kevin_thibedeau 1 day ago
          Elliptic curve key gen is much faster on slow hardware. You're waiting around on primality tests that aren't necessary with modern keys.
          • spijdar 1 day ago
            Yep, it's a loooot faster. But then, when you decide to boot NetBSD on these boxes, you're not really doing it for practical reasons anyway, so part of the experience is waiting a few hours for /etc/rc.d/sshd to do its thing.

            Probably more relevant on more "borderline" hosts. My SPARCstation 2 can just barely run NetBSD 10 at what I'd call "tolerable speeds" for some concept of "real work", and it's something like 50x the speed of the 780!

        • anthk 1 day ago
          Easier with SIMH.
  • wbolt 1 day ago
    This is a nice project but looks like is either AI written or AI assisted and I haven’t seen mention of that in any of the docs.
  • MBCook 1 day ago
    I expected this to be official from the title but it doesn’t seem to be.
  • rjsw 1 day ago
    There are already Vulkan components in pkgsrc and wip.
    • segaboy81 1 day ago
      Which ones? I'm asking, because I wouldn't have done anything at all if this was pre-existing.
      • rjsw 22 hours ago
        See graphics/MesaLib.
  • iamnothere 1 day ago
    I have never had a need for NetBSD, but in case I ever do, I’m glad it’s there. Especially with Linux deprecating old platforms.

    This looks like an unofficial effort but hopefully it gets refined and integrated.

    • Tiberium 1 day ago
      NetBSD already has relevant packages officially.
      • segaboy81 1 day ago
        Which packages? I couldn't find what I needed, and that's the whole reason for building all this.
  • spiral09 1 day ago
    Lavapipe? So it's just Mesa software rendering stuff
    • segaboy81 1 day ago
      That's the start. The idea is to get Vulkan running first. More to follow.
      • yjftsjthsd-h 1 day ago
        I think both points are valid; that is the sensible way to start, but it's worth noting that the work is early so people don't misunderstand the current state of things.
  • anthk 1 day ago
    Didn't modular-xorg, MESA and DRM drivers handle this?
  • sylware 20 hours ago
    The vulkan stack is rather lean (there are still c++ though, valve removed a lot of c++ for less c++, it would have been correct with plain and simple C).

    The big chunk is DRM kernel code.

    AMD seems to be working on _userland_ hardware command ring buffers, which should makes userland vulkan even simpler. Dunno how they will work around the VMID stuff though.

  • rvz 1 day ago
    This is 100% AI slop.