Michael Meeuwisse started Project VGA in September of 2007. The project aims to develop a simple, low budget, open source, VGA compatible video card available this year. Michael is also a member of the Open Graphic's Project, but started Project VGA in order to get something affordable on the market as soon as possible.
In this interview, Michael explains his inspiration for the project and talks about the first development cards that will be functional by the end of the month. He details the costs involved in building the cards, as well as when the cards will be available for purchase and what they will be capable of doing.
Jeremy Andrews: It's been quite some time since we've had any updates about the Open Graphics Project on KernelTrap. Can you summarize the project's goals, and the current status?
Michael Meeuwisse: The Open Graphics Project aims to develop and manufacture a graphics card with fully published specifications and drivers that are free software. This is because we believe there's a market for graphics hardware with good support for free operating systems. The first card the OGP is developing is called OGD1, and is a programmable platform on which the first ASIC-version (called OGA1) can be developed.
Quite a bit of progress was made the last couple of months and a live demonstration was done with linux actually running on a working OGD1. Although this was done with specific drivers which implemented only the bare essentials, it was still considered a milestone because it proved that the card was working and usable, albeit a bit slow right now.
Right now we're in the process of finalising the design of OGD1 with fixes to all the bugs identified in the first prototype, schematics came online recently and the final version of the circuit board will be released soon as well. Simultaneously some have started to work on more extensive documentation so that everybody can have a better understanding of the schematic, which in turn helps with developing the 'software' for the card. Our goal in software terms is to get full VGA support within a few months, which makes it possible to use the cards as any standard 'VGA card' without drivers.
JA: What is Project VGA, and how is it related to the Open Graphics Project?
Michael Meeuwisse: Project VGA started for two reasons. First, I had the personal impression that development of OGP wasn't going as fast as I was hoping it would, and second, it turned out that quite a few people were interested in a programmable hardware card but wouldn't be able to afford OGD1. When OGP started it wasn't very clear how long it would take to develop OGD1. And when the price tag became clearer, a lot of people complained that it priced itself out of the market, although we made it very clear that this card was meant to be a development platform, not a consumer end product. But even for a lot of people like me who did want to simply play around with a programmable platform the price would be too high.
So out of a personal urge I started thinking what would be a usable platform for me to develop a graphics card which could be used as a programmable platform, have basically the same motivations as the OGP, but be a lot more affordable. That's when Project VGA started of a few months ago. The idea is to build a very downgraded version of OGD1 which as a result can be bought by more hobby enthusiasts. The performance will be a lot less as well, but for a lot of people the idea of being able to design, write and update your own video card is a lot more valuable than actual raw performance.
JA: Does Project VGA aim to compete with OGP, or to complement it?
Michael Meeuwisse: Complement it. Performance-wise these cards are in a completely different league. No, the way I see open source projects emerge is that an enthusiast starts building something interesting, and other people chime in and make the end result better. The first results don't have to be good, they just have to be interesting enough to gain momentum. Once people can get their hands on something functional a group effort can be started to make the product look and behave better. I could give some Clever Car Analogy here, but I think you get the idea if you look at *any* major free software project. They all started as a one (maybe a few) man show where other people helped out making it better after some first version was made available.
When I look at OGP I think they've overshot this first step and are trying to implement full support for everything right in the first version. That's causing numerous delays and lack of 'groundwork' if you will, there's no basis to work from. The design is already containing details about how specific details of the 3D core is supposed to fit together. Sure, it's interesting and certainly fun to talk about, but other basic stuff needs to be done first. It's really hard to get that work done as a group effort since you'll get endless discussions about what's the 'best way' to do it.
Project VGA really is an effort to get some of that groundwork done in a retroactive way. Instead of worrying about how the 3D core is supposed to fit in the design, it's purely focusing on the VGA bit. This includes communicating effectively with the PCI bus, supporting various resolutions and text modes which can be set through interrupt calls, and getting other details working. There's plenty of room for other features as well, but we're deliberately staying away from those until VGA is working correctly and the card is available for developers. Meanwhile, from a software perspective we're trying to keep a large section compatible with OGP so this material can be shared at a later stage between the two cards. Naturally not everything will be compatible with OGP, but once pVGA has some basics working, these can be used to build on and hopefully end up in OGP.
JA: Who is involved in Project VGA?
Michael Meeuwisse: When I just started working on it, I managed to get it approved as my university semester project. I am a third year student following Technical Computer Science at the Hogeschool van Amsterdam in the Netherlands. You can consider Technical Computer Science as a course somewhere between pure electronics and pure Computer Science, making it ideal for projects like this. After that, R.E.N. de Haan has been helping me out with improvements and suggestions for the schematic and board layout, and providing things like webhosting. At the university I have a few professors helping out with organising funding and resources, a few electronic students helping getting the smt components in place, and through the website several people have already started giving suggestions as to how to improve the schematic.
So really, the major part of the project is still a one-man job, with a bunch of people around me who are double checking the details. The main advantage of this is that there's not much organisational stuff to worry about, whatever needs to be done, I'm going to do it. That also makes planning easier, getting the schematic to match the board isn't an issue anymore, etc, which makes it possible to purely focus on the board itself and get it done faster.
JA: How is it that you are able to create this card on such a shorter time frame than the OGP card?
Michael Meeuwisse: The answer is simple, really. It's again the size of the project. To give you an idea, the main FPGA of OGP has more pins than all the pins of all the ICs combined on pVGA. After I figured out what components I wanted to use it took me about a week to work out the details of the schematic, something that would've been impossible if I had to design something similar to OGD1.
Secondly, I'm deliberately pushing for this short time frame because it has taken long enough already and a lot of people want to get to play around with hardware like this. I don't want to cut corners in the design that we now have, but I'm also not very open to new features. Large parts are based on what other people have tried already, such as using the specific CPLD we're using for PCI communication. It was a lot easier to go with those ideas and combine them to design this card and then say "what we have now is what we're going to work with, and that's final". We can then see how much performance we can squeeze out of it and improve the design later for a second version, or switch to OGD1. It turned out that the CPLD *might* be completely redundant and underpowered, but instead of looking for alternatives or redrawing the schematic, we're just going to leave it there and worry about it later.
JA: What is the current status of your affordable video card?
Michael Meeuwisse: The first prototype has been put together and I'm currently in the process of checking all electrical connections before we're going to power it up for the first time. The schematic is online, as well as the circuit board layout, and most of the documentation explaining all this is available. Meanwhile we're planning on how the internal HDL will be organised.
JA: Can you share the costs for the card?
Michael Meeuwisse: The costs are fully documented on the website here, which comes down to about 70 euro for the components for one card. Then, the circuit board needs to be produced and assembled, packaging and distribution etc. This in turn is all heavily influenced by how many cards you're producing at once, so it'll vary wildly depending on how many people will want one. For testing purposes I will be constructing two prototypes by hand which will cost me about 300 euro in total.
JA: What do you plan to charge for the card? Will the card be available in all countries?
Michael Meeuwisse: Right now we're aiming for 150 euro. Just to stay on the safe side though, we can't guarantee that price yet so assume 200 euro and act surprised when it turns out to be less than that. The idea is that the card will become available through a shop on the website, with shipping options to any country in the European Union and the USA. If the demand is big enough, we might expand beyond that.
JA: What specifications will your first card have?
Michael Meeuwisse: The first card will work with a traditional PCI connection, has a Xilinx Spartan 3 400k gate FPGA with 166MHz 16MB SDRAM connected through a 32 bit bus. To program the card, a JTAG programmer is embedded on the card, so you can reprogram it by using USB.
We went with PCI because virtually every system in use today has one of these. Because the card is aimed at hardware hobbyists and people who want to develop video cards, the changes that this card is used as a primary video card are slim. That's why we didn't want to go for top-of-the-line PCI-Express (which would mean a completely new system for a lot of people) or AGP. The Spartan 3 is pretty big, but not so large that it'd become to expensive. Same for the memory, it should be big enough for a lot of applications. We included the programmer because we figured most hobbyists wouldn't have a JTAG cable just 'laying around'.
JA: What are some example use cases for this hardware? You mention that it is targeted at "hardware hobbyists", what are some examples of things they may do with this card?
Michael Meeuwisse: The cards main objective is to build a completely open video architecture. The FPGA has plenty of room for some creative features like a 2D engine and maybe even basic 3D support in the long term. Often used routines in for example X11 can be implemented directly in hardware making the system more responsive overall.
For other purposes it's naturally a good start for anyone who wants to play with programmable hardware but doesn't want a standard development kit. Thanks to the CPLD the PCI interface is independent of the main design which can make it easier for starters to interface their first hardware designs with the PC architecture.
Some other ideas are for example building brute force engines for cryptographic purposes. A while back there were some discussions about designing and implementing an RC5 core on a card like this. Programmable hardware can definitely help with such projects thanks to the massive parallelism that can be achieved. You can also think of other sorts of data which need to be processed quickly in some way.
Yet another idea would be to rebuild old consoles using a card like this. Instead of emulating such a system, their architectures can be completely rebuilt in the FPGA which would be able to run it without glitches or other performance issues. For example Minimig has been mentioned as one of the projects that, if adapted for project VGA, could work. This would transform the project VGA card into an Amiga 500 emulator.
JA: Would the card be at all useful to someone just using Linux and needing a graphics card?
Michael Meeuwisse: Yes, as long as they don't expect to run features like Compiz and are willing to pay a little extra for basic graphics functionality. If someone wants to support development of open source hardware but doesn't have the knowledge to actively participate in the process, buying a pVGA card is certainly a good idea. As a bonus, they can periodically flash new 'firmware' in the card as development continues and end up with an improved graphics card for no extra charge. With the card being fully open source, linux support will be (and hopefully stay) pretty good and work out of the box.
JA: Do you have any driver developers involved in the project?
Michael Meeuwisse: Because we're first aiming for 'just' supporting the standard VGA modes there isn't any driver related development going on yet, because all operating systems will be able to talk to the card as any other standard VGA card. Reinder is looking into possible solutions with LinuxBIOS but other than that there aren't any driver developers involved yet. This will change when we're going to expand beyond VGA.
JA: When and where can people buy one of your cards?
Michael Meeuwisse: The plans are that the first card will be working this month, after which we can start implementing VGA support. Since OGP has been pushing for VGA support as well we should be able to reuse large parts of the code and get VGA working quickly. After that we'll look into how to set up a company which can sell these cards - this will most likely happen online. I'm fairly confident when I say that hopefully the cards will become available somewhere this year.
JA: Are you looking for a reseller for the cards, or are you planning to create an online store yourself?
Michael Meeuwisse: I mostly spend my time on getting the card together and running and am not really an expert on the business side of things. The rough idea is that the card will become available on the site in a store, but a reseller which takes care of things like packaging and distribution might be a viable option. This is all very much a work in progress which will only become more important after the card is actually working. Details about where to get the card will be put online when we worked out what will be most cost-efficient.
JA: What is the next step, after Project VGA is a success and has made a card available for hardware hobbyists?
Michael Meeuwisse: This will be a platform for further development of open source graphics on which many developers can experiment and work with internal details of graphic cards. Our next step would be getting full 2D acceleration and SVGA support, although this is entirely a programming effort and will be able to work on the current pVGA card. With these features software drivers will have to be developed as well for all operating systems.
If a second pVGA card will be designed and produced is entirely dependent on demand. If it turns out that a lot of people would like a slightly bigger card with an FPGA, or in a few years new FPGAs are available with better performance, we might design another low budget card with improved features.