Mesa 3D driver for custom GPU hardware?
Dylan Barrie <[email protected]> Thu, 28 May 2026 23:33:28 -0700
| Newsgroups | gmane.comp.video.mesa3d.devel |
|---|---|
| Message-ID | <CAHXBcjQ=MGkGUSWZas=Zy1PnjSJsRBLxtuoE+SxY4cRkT8qrJQ@mail.gmail.com> |
--0000000000007a54ec0652ef0637 Content-Type: text/plain; charset="UTF-8" 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 --0000000000007a54ec0652ef0637 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr">Hi all!<div><br></div><div>I've spent the last couple = years developing a fully-custom, FPGA-based GPU (<a href=3D"http://www.fury= gpu.com">www.furygpu.com</a>) that I've recently gotten to the point wh= ere it should be mostly compatible with the requirements of Vulkan (shaders= , for one!), to the degree that running simple programs would likely be pos= sible. I've been driving the hardware with a custom API that is basical= ly an API-copy of Vulkan, but given that the Mesa 3D project has already do= ne 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!</div><div><br></div= ><div>Before I get started on this, I had a few questions that I hope those= here can answer:</div><div><ol><li>I'm currently using a kernel-mode d= river (on Windows) to communicate with the actual hardware. Is there existi= ng infrastructure to deal with that kind of separation in Mesa 3D already? = I've made efforts to slim down the user-mode <-> kernel-mode inte= rface as much as possible, and it basically comes down to just setting up D= MA ops and telling the GPU to start executing from a given address.</li><li= >Is there an existing driver that would be a good starting point in terms o= f best practices for working within the Mesa 3D ecosystem?</li><li>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 con= verter or something), which allows Windows to treat my GPU as a display out= put. 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 t= he OS continues believing it's driving the display, none the wiser.</li= ><li>Is there anything else I should be aware of or understand before start= ing?</li></ol><div>Thanks for any insight you all may have for me!</div></d= iv><div><br></div><div>=C2=A0- Dylan</div></div> --0000000000007a54ec0652ef0637--