Hi all!

I've spent the last couple years developing a fully-custom, FPGA-based GPU (
www.furygpu.com) that I've recently gotten to the point where it should be
mostly compatible with the requirements of Vulkan (shaders, for one!), to
the degree that running simple programs would likely be possible. I've been
driving the hardware with a custom API that is basically an API-copy of
Vulkan, but given that the Mesa 3D project has already done a lot of the
heavy lifting in terms of all of the infrastructure, I'm thinking it would
probably be worthwhile to make use of it. It gets a bit tiring having to
re-write every program I want to run!

Before I get started on this, I had a few questions that I hope those here
can answer:

   1. I'm currently using a kernel-mode driver (on Windows) to communicate
   with the actual hardware. Is there existing infrastructure to deal with
   that kind of separation in Mesa 3D already? I've made efforts to slim down
   the user-mode <-> kernel-mode interface as much as possible, and it
   basically comes down to just setting up DMA ops and telling the GPU to
   start executing from a given address.
   2. Is there an existing driver that would be a good starting point in
   terms of best practices for working within the Mesa 3D ecosystem?
   3. How does Mesa 3D interact with the OS's windowing system? My current
   setup is a kernel-mode display-only driver (like would be used for a
   USB->HDMI converter or something), which allows Windows to treat my GPU as
   a display output. When it comes time for an application to actually use the
   GPU hardware, the driver switches to outputting the rendered image to the
   display and the OS continues believing it's driving the display, none the
   wiser.
   4. Is there anything else I should be aware of or understand before
   starting?

Thanks for any insight you all may have for me!

 - Dylan

Reply via email to