Well, what am I doing here? I am certainly not setting out to create an open source video card and sell a lot of them, because those have failed multiple times. But, I know FPGAs sufficiently to put together a video card IP, and demonstrate it using different buses, working both with UEFI and legacy BIOS. So let's say that's the goal.
In the past I put together a core that was basically a framebuffer accessible over PCIe BAR. And then I wrote Linux and Windows drivers for it:
I was obviously very excited to get this to work, it's the reason I got into FPGAs - I wanted to make a video card. But this isn't really a full video card. It can't exist on its own as a video card, since there is no option ROM to help the UEFI/BIOS boot. And there's no VGA compatibility.
So this project essentially exists to log my research in using the knowledge I've gained so far, as well as available IP, to try and put something together that we can actually call a video card.
This might just serve as a dumping ground for photos and videos, or maybe more. My plan is to create a full FPGA core that can boot on a legacy PC and a modern PC, and then maybe add some 2D acceleration to it. Then if this is still going, maybe make some open source cards. I plan to open source the whole thing, and it will use existing open source projects I'll pull together.
We need to talk sir!!! Ok, let me explain why!
So, you for sure are aware of the PiKVM, which is quite handy by itself but from my point of view could be better.
I was thinking if the Rockchip 3588 PCIe subsystem could be put to work in device mode instead of Host mode so it could then present itself to the host as it's primary VGA card and two usb ports. As that is not likely to work I posited then the possibility of having a dual client card, so basically we have an FPGA based VGA/USB PCIe device that connects to 2 hosts, one being the server that will have full access to the card VGA side and 2 USB ports, the other will be our SoC/SoM where the VGA side would be accessed in read only fashion by the SoC/SoM and would then present 2 USB devices on each port. The VGA card won't need a RAMDAC or VGA output for the final product but it would be handy for debugging/development purposes. What I propose to make the VGA reading part work would be to use a custom memory controller to interface for the VGA card so it could make the RAM work a bit like dual port RAM although with one of the ports being a read-only affair instead of being able to have full control. The USB part is much easier as all you need to do is have a host USB controller on one side and on the other connect devices to it's ports.
This would result in a KVM that would only have 1 wire connected to it, that being the ethernet cable and if using WiFi not even that.