Timothy Miller offered a summary of the recent discussions surrounding his proposal to create a free software and open-source friendly graphics card [story], "I'm still trying to digest all the feedback I've been getting. It's overwhelming and gratifying, and I want to offer my gratitude for all the discussion and ideas." He noted that as the active discussion evolves toward the actual implementation of the card, his intention is to move it from the lkml to another more topical mailing list. He then went on to discuss the features that will most likley be in the new graphics card.
Timothy pointed out that the card would have a reprogrammable field-programmable gate array (FPGA) primarily to reduce non-recurring engineering (NRE) costs. He explains, "reprogramability is not its primary purpose. The primary reason to use an FPGA is to minimize NRE for manufacturing. However, as a result, users will be able to download updates. Additionally, those who are dedicated enough to reprogram it completely will find the necessary documentation to do so. Finally, it is my desire that we would release the source code to the FPGA for obsoleted products, however, it's too early to make promises."
He went on to further describe the Graphics Processor Unit (GPU), explaining, "what I'm thinking is that the setup engine will be [a] general-purpose-ish CPU with special vector and matrix instructions. This way, the transformation stage will occur in "software" executed by a specialized processor. Additionally, the lighting phase might be done here as well. The setup engine would produce triangle parameters which are fed to a rasterizer which does Gouraud shading and texture-mapping. That feeds pixels into something that handles antialiasing and alpha blending, etc." He noted that this offers three advantages: the engine is fully customizable by the user community simply by writing code, 2d emulation is included, and anything "missing" can be emulated. He also pointed out three disadvantages: the triangle rate would be limited by the speed of the processor, transform and lighting (T&L) functionality would be serialized, and phong shading and bump mapping "may be impossible or too slow". Read on for the full description.
From: Timothy Miller [email blocked] To: Linux Kernel Mailing List [email blocked] Subject: Some discussion points open source friendly graphics [was: HARDWARE: Open-Source-Friendly Graphics Cards -- Viable?] Date: Mon, 25 Oct 2004 11:54:48 -0400 I'm still trying to digest all the feedback I've been getting. It's overwhelming and gratifying, and I want to offer my gratitude for all the discussion and ideas. It's been pointed out that some of this discussion may be getting off-topic for LKML. My addition to that is that soon, it will get very specialized in graphics math, and it would be best to move to a list where people actually talk about this on a regular basis. To that end, I'd appreciate it people could point me to some other appropriate mailing lists. Not just the names, but URL's to the FAQ's which explain exactly how to subscribe, please. Also, I'm thinking of starting my own yahoo groups list specifically for this chip. Is that a good idea? Next, I'm getting lots of ideas from people. Some of them are core to the product, and some of them would be nice for follow-on products. For instance, dual-video would not be on the first model released. However, it is important that analog output always have crisp rise and fall times and be free of noise in order to maximize display quality. The reprogramability of the FPGA has many advantages, but reprogramability is not its primary purpose. The primary reason to use an FPGA is to minimize NRE for manufacturing. However, as a result, users will be able to download updates. Additionally, those who are dedicated enough to reprogram it completely will find the necessary documentation to do so. Finally, it is my desire that we would release the source code to the FPGA for obsoleted products, however, it's too early to make promises. Ok, now on to some design stuff: The picture I have in my head at this time expands on the idea of the setup engine seen in most GPU's. What I'm thinking is that the setup engine will be general-purpose-ish CPU with special vector and matrix instructions. This way, the transformation stage will occur in "software" executed by a specialized processor. Additionally, the lighting phase might be done here as well. The setup engine would produce triangle parameters which are fed to a rasterizer which does Gouraud shading and texture-mapping. That feeds pixels into something that handles antialiasing and alpha blending, etc. The advantages are: - The community can customize the setup engine as they please, just by writing code. - This also includes the 2D emulation - Anything "missing" can be emulated. The disadvantages are: - Triangle rate limited by speed of processor - T&L is serialized, rather than being parallelized in dedicated hardware - Phong shading and bump mapping may be impossible or too slow It's been a while since I read about phong shading and bump mapping. As I understand it, some of the lighting phase is pushed into the rasterizer. With gouraud shading, colors are interpolated between the virtexes. With phong shading, the surface normals are interpolated across the triangle, and that's used to compute lighting. Bump mapping is like phong shading where the normals are specified in a bitmap. What I don't know is how important bump-mapping and phong shading are.
From: karl.vogel@seagha.com Subject: Re: Some discussion points open source friendly graphics Date: Mon, 25 Oct 2004 22:31:59 +0200 Obscurity, linux) > It's been pointed out that some of this discussion may be getting > off-topic for LKML. My addition to that is that soon, it will get > very specialized in graphics math, and it would be best to move to a > list where people actually talk about this on a regular basis. > > To that end, I'd appreciate it people could point me to some other > appropriate mailing lists. Not just the names, but URL's to the FAQ's > which explain exactly how to subscribe, please. Something like this? http://www.opencores.org/forums.cgi/video/
From: Jeff Garzik [email blocked] Subject: Re: Some discussion points open source friendly graphics [was: HARDWARE: Open-Source-Friendly Graphics Cards -- Viable?] Date: Mon, 25 Oct 2004 16:34:45 -0400 Timothy Miller wrote: > Also, I'm thinking of starting my own yahoo groups list specifically for > this chip. Is that a good idea? In theory it's useful; in reality at you'll have to balance what's public and what's not, and it's easy to allow yourself to get bogged down into "digesting", so much so that the "doing" is put off. My only request is that you (a) make the graphics interface as simple and high level as feasible and (b) you publish the hardware interface specification as soon as possible, so that driver work can occur in parallel. > Next, I'm getting lots of ideas from people. Some of them are core to > the product, and some of them would be nice for follow-on products. For > instance, dual-video would not be on the first model released. However, > it is important that analog output always have crisp rise and fall times > and be free of noise in order to maximize display quality. Once you have a core design, it's easier to dicker about specific features. I would put this stuff on the "worry about it later" list. > The reprogramability of the FPGA has many advantages, but > reprogramability is not its primary purpose. The primary reason to use > an FPGA is to minimize NRE for manufacturing. However, as a result, > users will be able to download updates. Additionally, those who are Will the capability to apply these updates be included with the base card? Will users need to purchase additional "update FPGA" hardware to do the reprogramming? > Ok, now on to some design stuff: > > The picture I have in my head at this time expands on the idea of the > setup engine seen in most GPU's. What I'm thinking is that the setup > engine will be general-purpose-ish CPU with special vector and matrix > instructions. This way, the transformation stage will occur in > "software" executed by a specialized processor. Additionally, the > lighting phase might be done here as well. > > The setup engine would produce triangle parameters which are fed to a > rasterizer which does Gouraud shading and texture-mapping. That feeds > pixels into something that handles antialiasing and alpha blending, etc. > > The advantages are: > > - The community can customize the setup engine as they please, just by > writing code. > - This also includes the 2D emulation > - Anything "missing" can be emulated. > > The disadvantages are: > > - Triangle rate limited by speed of processor > - T&L is serialized, rather than being parallelized in dedicated hardware > - Phong shading and bump mapping may be impossible or too slow Well, I certainly like it :) I think that a more generic approach allows you to recognize performance bottlenecks, and update the IP core to support instructions specific to (say) triangles. Random closing notes: * data movement will be an everpresent issue * in graphics you really have a number of data types (16-bit float, etc.) that are specific to graphics. Supporting these natively should be quite helpful, if not an already-obvious prerequisite Jeff
From: Timothy Miller [email blocked] Subject: Re: Some discussion points open source friendly graphics [was: HARDWARE: Open-Source-Friendly Graphics Cards -- Viable?] Date: Mon, 25 Oct 2004 18:45:44 -0400 Jeff Garzik wrote: > Timothy Miller wrote: > >> Also, I'm thinking of starting my own yahoo groups list specifically >> for this chip. Is that a good idea? > > > In theory it's useful; in reality at you'll have to balance what's > public and what's not, and it's easy to allow yourself to get bogged > down into "digesting", so much so that the "doing" is put off. Right. I was just discussing this with the CEO, and he pointed out that I would get bogged down with too much online discussion. At FIRST, I might be able to handle an open list, but pretty quickly, I'd have to create an invite-only list where a select group who reads the other list would digest things for me. Yeah, if I'm going to design a large chunk of the chip and write a large chunk of the software, I can't spend all day reading a mailing list. :) > > My only request is that you (a) make the graphics interface as simple > and high level as feasible and (b) you publish the hardware interface > specification as soon as possible, so that driver work can occur in > parallel. Yes, and what I need to do is find the right developers to talk to so that I can given them interfaces that they actually NEED, because right now, I'm just guessing. > > >> Next, I'm getting lots of ideas from people. Some of them are core to >> the product, and some of them would be nice for follow-on products. >> For instance, dual-video would not be on the first model released. >> However, it is important that analog output always have crisp rise and >> fall times and be free of noise in order to maximize display quality. > > > Once you have a core design, it's easier to dicker about specific > features. I would put this stuff on the "worry about it later" list. Definately. There's loads of features that are NICE, but not useful to most people. I need to make the lowest common demoninator first. > >> The reprogramability of the FPGA has many advantages, but >> reprogramability is not its primary purpose. The primary reason to >> use an FPGA is to minimize NRE for manufacturing. However, as a >> result, users will be able to download updates. Additionally, those >> who are > > > Will the capability to apply these updates be included with the base card? > Will users need to purchase additional "update FPGA" hardware to do the > reprogramming? My intention is to include a bit of logic in the FPGA which can be used to reprogram the prom. You would then cycle power to get the FPGA to load the new code. Only if it gets corrupted would you have to solder on a header and reprogram it another way. Also, if someone decides to reprogram it completely, and they haven't included a host interface and prom programmer in their design, then, well, they're on their own. :) > >> Ok, now on to some design stuff: >> >> The picture I have in my head at this time expands on the idea of the >> setup engine seen in most GPU's. What I'm thinking is that the setup >> engine will be general-purpose-ish CPU with special vector and matrix >> instructions. This way, the transformation stage will occur in >> "software" executed by a specialized processor. Additionally, the >> lighting phase might be done here as well. >> >> The setup engine would produce triangle parameters which are fed to a >> rasterizer which does Gouraud shading and texture-mapping. That feeds >> pixels into something that handles antialiasing and alpha blending, etc. >> >> The advantages are: >> >> - The community can customize the setup engine as they please, just by >> writing code. >> - This also includes the 2D emulation >> - Anything "missing" can be emulated. >> >> The disadvantages are: >> >> - Triangle rate limited by speed of processor >> - T&L is serialized, rather than being parallelized in dedicated hardware >> - Phong shading and bump mapping may be impossible or too slow > > > Well, I certainly like it :) > > I think that a more generic approach allows you to recognize performance > bottlenecks, and update the IP core to support instructions specific to > (say) triangles. > > Random closing notes: > > * data movement will be an everpresent issue > > * in graphics you really have a number of data types (16-bit float, > etc.) that are specific to graphics. Supporting these natively should > be quite helpful, if not an already-obvious prerequisite Yeah, for the transformation phase, you need 32-bit floating point. After that, you can switch to 16.16 fixed point and get perfect results.
From: Timothy Miller [email blocked] Subject: Need help and advice... [was: HARDWARE: Open-Source-Friendly Graphics Cards -- Viable?] Date: Mon, 25 Oct 2004 19:06:41 -0400 I'm probably doing this too early, but it's been pointed out in so many words that I won't scale. I've spent two full work days digesting all of the discussions on LKML, kerneltrap, and slashdot. That's been as fun as you can imagine, but when the time comes for me to start working on the design, I can't do that at all anymore. What I'll need are representatives of the community who work with me to make sure that my design does what everyone needs it to do, and I need representatives who engage in mailing lists and extract for me information that I should see. I'm sure there are lots of people who would love to have that kind of influence over a company whose hardware they want to buy. I need the subset of those people who have expertise in 3D graphics, most of whom I'm sure are on OpenGL and X.org mailing lists right now. If there's anyone here who can get me connected with those people, I would appreciate it very much. I feel like I'm being presumptuous. Although everyone at Tech Source is excited by the idea, and there seems to be a ground-swell of interest, the economic feasibility of this is still in the air. I don't want to waste anyone's time. However, a lot of excellent ideas have been put forth, and I'd like discussion to continue, but in a way that I can handle. I humbly request advice on how I might go about handling all of this in the best way. I also think the discussion should transition off LKML and onto its own forum. Also, I want to thank everyone for talking to me about this. Members of this list and people posting to kerneltrap and slashdot have been very informative and helpful. I also want to mention Jeremy Andrews of kerneltrap.org who first turned my posting into news. I've wanted to do a project like this for a long time, but the past few days of online discussion have really helped push it towards becoming reality.
Programmability
but anyway, isn't "full programmability" of moder video card (ATI & NVidia) going to have the video card as a sort of "video coprocessor", that will be eventually hosting a mini-OS? Having a such OS opensource would have the same benefits of Linux/*BSD over proprietary OSes. I really hope that one day in the future i will be able to recompile the kernel of my video card, as i'am doing right now with the main kernel :-)
No
There's no point to an OS on a video card because there is no task management needed. The tasks that a video card performs are predetermined and fixed. This doesn't mean that the card is not programmable, it means that (for performance/usefulness reasons) there is a scope to its behavior within which an OS would not make sense. You could put an OS on the video card, but what problem would you be solving or what aspect of its utility would be improved by doing so?
Remember NextCube?
Hello,
I arrive late at the discussion, other people said what I liked to say.
I would like to add that I am sorry that first version has only one output, but I am happy to read that it will be of good quality.
Remember please to make universal AGP (3.3, 1.5 volt etc.) and PCI version so I can add more than one to my systems.
Regarding full programmability for me is a must have feature that differentiates it from market leaders.
Regarding running an OS on it I can only remember to all people next cube with NextDimension graphic accelerator cpu based.
It was a perfect solution to have a quick refresh low latency gui.
Thanks for reading!
Either aim low or high, but n
Either aim low or high, but not inbetween I would say, disregarding embedded use of the card. Go for a 2D dreamcard but not for a 3D card which isn't up-to-date, especially in a couple of years. If you want a serious (gaming) card for the future, then support for the OpenGL Shading Language is absolutely mandatory. And a floating point framebuffer a bonus. If you can't compete with NVIDIA and ATI, more with features than price, then making a serious 3D card is not the smartest thing to do in my opnion.
However, you could also try something else. Ray-tracing is the future according to many, but damn slow in software. You could make quite some people happy with an affordable videocard which could make ray-tracing feasable in realtime.
i think quite the opposite. T
i think quite the opposite. There is pleinty of 2D card fonctionnal under linux, so an open source friendly design could not catch there price. ATI/Nvida beast can't be approch by FPGA. So the in between is a card like 550 from matrox : good at 2D and enough in 3D to play with game like tuxracer or crack-attack. You can't imagine lot of feature that could improve the interrest without increase the cost of the card.
Do you think raytracing like in http://www.openrt.de/ ? :)
HW raytracing project
Hardware RayTracing project (see above link) seems very powerfull !!
They have very good performances with a 90MHz chip.
See here
Really interesting stuff!
Really interesting stuff!
Does anyone know of similar projects?
HW RT Videos
I've just downloaded the HQ video (more than 200MB!) and it's really amazing what this chip can do at 90MHz !!! (and certainly not yet fully optimized)
I REALLY hope this product becomes reality
I would most certainly buy one these, even if I had to make some compromises. And I hope that a lot of others that support computerwise open stuff also would. If major manufacturers notice that there really is demand for free (not as in beer) hardware, they surely will follow.
FPGA
> However, as a result, users will be able to download updates.
> Additionally, those who are dedicated enough to reprogram it
> completely will find the necessary documentation to do so. Finally,
> it is my desire that we would release the source code to the FPGA
> for obsoleted products, however, it's too early to make promises
Well, that sound not really what I've expected from such a project.
Wouldn't it be much more consequent to make the FPGA-programming an Open Source-Project as well?
As this should be an "Open Source-friendly" card, this is imho the only thing that makes sense.
Beside that, can you point out if
a) your card will be as good as the current ATI/Nvidia-products? (features like pixel-shaders, enough speed etc.)
b) what it will approx. cost?
c) any ideas about if this card will be available in laptops in the future? (as many geeks, which are probably the majority of your customers, only use laptops these days)
RE: FPGA
>Well, that sound not really what I've expected from such a project.
>Wouldn't it be much more consequent to make the FPGA-programming an Open Source-Project as well?
>As this should be an "Open Source-friendly" card, this is imho the only >thing that makes sense.
If the FPGA-programming is released immediately it is harder for the company to recoup the cost of research & development; another company (or individuals) can immediately clone the product and sell it cheaper because they have less costs to balance.
As Timothy Miller has pointed out, his company has already paid for the 2 work days he has spent discussing the card. The company is not a charity, and should not be expected to lose money on this venture.
To me, using a system similar to Carmack's releases of iD products makes sense: release the interesting code once it has fulfilled its useful life, ie. when the costs of development and some profit has been made and then open the source to the community. This way the company can keep a competitive edge by not gifting their rivals and also benefit the community.
Not open source
The reason they can't afford to release the code as open source is precisely because it's NOT an open source project. If it was, lots of developers would be contributing what they could/wanted to, and there would be nothing to afford except maybe a server to host it on. So, the only limitation is the attitude of the developers, and it's a fundamental limitation indeed.
This is not what I'd expected from the project, either. Won't see me supporting it.
I say it doesn't fly
I'm all in for establishing a work that could be freely improved and perhaps a future dream opensource videocard built on top of it ... If the specification is totally open and roalty-free, we would be one step closer to the dream of fully free hardware. That's what I want to see.
But the first iteration can hardly be anything than a modest success. You have to make it cheap enough that people want to buy it, and put as much 3d on it as possible. And you'll find people want to use it for gaming and the future 3D desktops. It has to have enough texture RAM and fast enough fillrates & 3d features to handle the current crop of games. However, we know that it's impossible to compete against ATI and nvidia in terms of 3d performance, at least today.
So I guess you'll have a card bought by companies who order linux desktops for their secretaries, and you might find it on some low-end PCs (particularly if it can be integrated). Neither probably makes any money, but could be termed a modest success: there's real people using that card and potentially being quite happy (= oblivious) about it. Even if you can't play any serious games with it.
Now, if that means that 5 years into the future we'd have a real fast free GPU that anybody can build with just the manufacturing cost, you might find it on every low-end PC, and you'd probably be running up against ati/nvidia/matrox/what-have-you at the low end. At that point, you have succeeded quite well.
current ati drivers not good enough
Are the ati drivers delivering your moneys worth in performance now? Can you try using the binary drivers in a new windowing system? I dont think so. Nor will it improve in the future. Open hardware with drivers anyone can play with and fix is going to yield better performance. You are comparing this card with the latest from nvidia or ati. You will not be able to use more than half of the capabilities anyway. I dont want to buy an nvidia card for 50 USD that would lock up my machine whenever i change my kernel or fix some bug in it.
I dont think another company will be interested to build the cards at lower price. That means they have to give away their design too. Which will eventually benefit the original manufacturer. I dont think this project is even going to show in the other manufacturers radar.
re: current ati drivers not good enough
nVidia drivers have never locked up my machine regardless of the kernel I've tried. The performance you get for the buck, along with excellent Linux support, is simply phenomenal.
re: current ati drivers not good enough
Yup as long as you use it in x11. Have you tried using the binary driver in a graphics system other than x11? Can we play with new things using the binary only driver? Can many programs access the 3d engine concurrently? Can you use hardware accelerated compositing of all your windows? No way. Im using a radeon 9200 to hack x on gl. But thats the end of the line and i have to go back to using software rendering. There is no way ati will release specs for later cards. And that means back to my cluster arrangement where one pc does rendering and the rest on another pc. How do we develop new interfaces then? Use software rendering so later on nvidia and others changes their drivers to work with the new things? Im sure nvidia will not write DRI drivers because its too low level and they are scared its easy to reverse engineer and steal their IP.
Cross-platform concerns are valid
I concede that I was thinking my PC, my X11, and the very current state of the affairs. The nvidia drivers just work, as far as I'm concerned. I don't need to hunt the web for the binaries, Debian brings them right at my doorstep, and the whole driver can be compiled with one command (make-kpkg --append-to-version=-1-k7 modules-image). Just yesterday I switched from Ti4200 to FX5700, and Linux worked without even noticing that there's a new board in. W32, on the other hand, booted me up in a delightful VESA 640x480 resolution and I spent the next 15 minutes hunting for the drivers. The provided CD-ROM had incorrect name, so "Add new hardware" dialog wouldn't work, even if I guessed that the CD probably contains the files it wants. I must say that the overall user experience for Linux is getting pretty damn good. Go Linux!
why don't do it more general?
i am extremly intereseted in a programmable fgpa-io-card for my pc < 500$. programmed the right way it could be wounderful extension.
the card shoud have a video dac, video adc, some fast adc, some fast dac, some audio dac, some audio adc and digital io.
make it your modem, your videocard, your soundcard or your (insert feature here).
in addition it should work with matlab as hardware-in-the-loop device. ;-)
A CAD user's viewpoint
The other comments appear to be from gamers and other users of fast-action video. There's another potential user base for an OSS-friendly high-end video board: CAD and publications designers. This market needs high resolution, precise color accuracy, and flawless analog outputs with fast settling times and negligible cable reflections. What it doesn't need is a digital processing engine. At all. For this market, any engine whatever is a total waste of electricity and board space. A dual-ported framebuffer is all the digital hardware it needs.
This suggests splitting the project into phases, and not attempting to do everything in one big bite.
The first board design in the project could concentrate on getting just the image-producing back end working right. This means selecting SRAMs, triple DACs, cleaning up the video amps so they settle fast and clean, selecting an output connector that works right (let's go back to honest-to-God coaxial connectors, like a 13W3, and not these ridiculous pin-and-socket things), and getting a clean impedance match all the way from the drivers to the connectors. Consider back-matched drivers, to help suppress the effects of downstream reflections. For the digital side, all it would need for the first go-around is a simple, straightforward bus interface to the RAM, plus enough automated hardware to generate a few basic VGA modes at power-on before X comes up. It shouldn't be too challenging to write usable drivers for such a simple board. The power and cooling demands should also be modest, avoiding mechanical and airflow complexity in the first attempt, and yet yielding a top-of-the-line board for demanding professional applications.
The initial board would make a fine starting point to work on on-board image processing. In the second phase, it would be desirable to preserve the simple modes, so that the system would remain usable and reprogrammable in the presence of buggy developmental display system code. This would encourage community participation in FPGA code development. Minimal functionality or programmability should never depend on anything in an erasable memory.
Good video signal quality
You make an interesting point about video signal quality. Check out the Tech Source web site. We sell a number of cards used in high-res displays. In particular, there are our cards which drive the Sony DDM, which is a CRT that has a 2048x2048 resolution at 60Hz. That's a 357Mhz pixel clock. Furthermore, the Raptor 2100T was designed to the specs of the STARS program for the FAA which has stringent (a few picosecond) requirements for rise and fall times in the analog signals going to monitor.
I apologize for making this sound like an ad. But my POINT is that don't worry... we have LOTS of experience with producing excellent analog signal quality. (Digital, on the other hand, is either correct or not. It's binary. Get it? I'm such a geek.)
Cheers. :)
Don't count on it
The humour (digital) whilst amusing is not exactly true - the DDI outputs from some nvidia cards are horrible and cause all sorts of glitching. Most ATI cards are better as they use a separate timing circuit.
Which leads on to an important point - for us LCD panel users out there a good DDI interface is a must (I won't touch an analogue only card now).
M
Reference for above comment
See this article from extremetech for more on DVI output quality
http://www.extremetech.com/article2/0,1558,1367924,00.asp
M
Yeah, we do DVI too.
We have lots of experience with DVI, all the way up to the max of 165mhz per channel. We have a number of products that require four synced DVI channels which complicates board routing. Check our our 3 megapixel and 5 megapixel medical products.
So, yes, we do DVI well too. However, I think DVI is harder to mess up. If you make the trace lengths and impedances right, it'll just work. I don't work on that stuff, though, but the other guys who do boards and stuff are really good at it.
I mean, in theory, with the fact that most of our products are for very high-res displays, the low-res ones should be relatively simple by comparison, right? :)
Interesting video boards on the Tech Source web site
An ad is OK in this context. I took a look. Possibly there are products there that I didn't find in a quick read-through, but the existing line looks rather specialized. I didn't see anything with an AGP interface, for instance. The engineering capability is certainly there, and the company and potential customers might both benefit from having your products more widely known. If designing for a wider market is in the wind, having a fully published register model, so that outsiders can maintain drivers independently, might offer a good competitive advantage. Designing for cooperative FPGA code develoment might also cut costs radically, making the project much more affordable.
Cutting costs?
A thing that occured to me while reading this, perhaps the cost of the card could be reduced by removing some "legacy" things, especially if we assume that it will take, say, at least 1 year before the card is on the market. E.g.:
1. DVI only output. Most newish systems bought today have LCD:s anyway, right? So avoiding all the high-quality analogue stuff could reduce the cost significantly?
2. PCI Express only. This is apparently already standard on higher end PC:s. In a year it will be commonplace. So why waste money on AGP or classic PCI interfaces?
3. OpenGL only for the "core". Perhaps it would be easier and more portable to have all the other graphics modes running ontop of OpenGL. Well, given that this is supposed to be an FPGA based thing instead of "real" hardware, I guess this is more of a programming question rather than a hardware one?
Cutting costs
Removing analog would save something on the order of $10, IIRC.
The host interface type won't have any effect on the price. Since it's an FPGA, only one goes in. There is the issue of NRE for the PCB (expecially since we have to do more than one board layout), but nothing on the order of an ASIC.
It already seems apparent that the demand for 3D is greater than the demand for 2D, so we'll just provide 2D by emulation. Whether the 3D interface is exactly OpenGL or simply easy to translate from OpenGL is another issue, but merely a programming one.
The dominant price factor is the FPGA. FPGA prices go up exponentially with die area, so the more logic required for the GPU, the more expensive the design.
FPGA options
This suggests laying out the board to accept more than one size of FPGA within the same family, on the same IC site. I had to do that with an FPGA emulation of a custom chip that was under development. It would let you offer multiple performance levels at different price points within a single product design, with a common back end and host interface. This becomes even more cost-effective if some or all of the FPGA code is being contributed by an outside open source project. (This gets us to the problem of making the logic compiler available to outside developers working on OSS platforms; as far as I know the low-cost/no-cost VHDL compilers that the FPGA makers supply run only on MS-Windows. Has this changed yet?)
It may also turn out to be attractive to provide more than one FPGA site, allowing the logic to be increased after the largest single chip in the chosen FPGA family is maxed out.
Darned if I can see how the analog section can be done for $10, not if you expect to drive something like a GDM-FW900 at max resolution and have 4-point type come out razor-sharp. Should there be board stuffing options in the back end too?
I'm about to lose the link to this thread via a news site. If you start a dedicated mailing list for this project, I'd like to subscribe. My default address is dischord; at myrealbox, dot com.
Mailing list
A mailing list is being created. I'll ask that something gets published on kerneltrap when that happens.
/!\
"It already seems apparent that the demand for 3D is greater than the demand for 2D, so we'll just provide 2D by emulation."
Be carrefull ! For a lot of people, 2D look easy and obvious. That's supposed to be well down by the work for a $20 card (i think mister joe could not understand that a pure 2D card could cost $1000).
But a lot of 2D could be usefull : transparency, zooming, bitmap conversion (yv12 -> rgb ...) and even quality filtering for playing DVD and fast windows sliding. A lot of people did not like X because windows slide are a lot smoother under windows. And because a lot of people did not see this, you could surprise them a lot more, than with limited 3 D support.
Limitted 3D support are a must to play a little bit, but true innovation could come from 2d side.
Please include TV out capability
In the coming age of tv set top boxen, we wouldn't want to be a step behind M$ media center & co. There are already some tv chips with open specs like Analog Devices 7170 and 7175, both used on dxr3 boards. Could something like this be included as an option for such open gfx board?
Demanded features
Of the specialty features which have been most commonly requested, dual-head and TV are at the top of the list.
portability of the card
Just a thought about the great wish-list already.
You will not be able to catch up with all this: AGP, PCI, notebook support, NVIDIA quality, and so on. Especially notebook support isn't realistic, because no vendor integrates your ship as an on-board unit. You would have to support PCMCIA or the like.
The great advantage of your design is programability. Thatfor you don't need a card at all. You could also ship a USB-stick, for example. Maybe you should think very different about your product and find a new design for HW-graphics support. A USB-stick that renders 3D graphics and streams 2D results through the on-board unit or the otherwise available graphics port. The stick could also have own DVI output. The point is that you shouldn't concentrate too much on a specific hardware format. Concentrate on the features and try to find a box for it that's cheap, well supported on many different systems, and keep specialty of your product in mind!
Regards,
Dennis Heuer
Neither USB 1.0 nor 2.0 has e
Neither USB 1.0 nor 2.0 has enough bandwidth for high-performance graphics. I don't think PCMCIA does either. I think if we're going to see anything, its going to be AGP and/or PCI Express, maybe PCI if they're feeling generous.
AGP now, PCI Express later
The current issue of VME Systems has a couple of articles on graphics board design. Their audience is embedded systems designers, who have to plan for service lives and support periods of 15 to 25 years. One of the authors considers PCI Express to be vaporware, and thinks it won't be ready for a serious high-longevity design for another year. So perhaps the first shot might be in AGP, with the same glue FPGA reprogrammed in a PCI-X board outline and electrical interface when the spec is more stable.
The embedded guys like FPGA implementations, because it frees them from chip vendors who don't keep their parts in production long enough to get them qualified and designed in, let alone available through the entire life cycle of a military program. Tech sells to this market...
PCI itself is still a factor, with a considerable installed base -- just not among gamers. Some of Tech's oldest existing products might cover part of that market segment just fine, if they feel they want to publish the hardware interface specs so outsiders can optimize and maintain a driver. This would involve no cost, except perhaps advertising. One cheap and relevant way to advertise is to list any of their products that have OSS drivers in the hardware HOWTO documents, and perhaps start a HOWTO identifying supported high-performance graphic boards. They do need to get their name known among the OSS community.
USB 2.0 perhaps shouldn't be dismissed out of hand. It doesn't have the bandwidth for live-action video, but it might be suitable for very high performance static images -- as in composing magazine covers and double-page spreads. Driving high-resolution projectors for business meetings is another possible static-image application. Air, maritime, and rail traffic control probably wouldn't strain its capacity. Unlike most internal buses (other than VME), USB 2.0 doesn't suffer from severely limited expandability. Thus, it could easily support multi-heading, if suitable drivers and user utilities can be provided. Imagine the possibilities for a busines presentation, with one laptop driving six 2048 x 1536 projectors.
Not USB.... DPVL
No, if you want one laptop to drive 6 3megapixel displays, you don't use USB. You use DPVL. That's what it's designed for.
http://www.vesa.org/summary/sumdpvl.htm
Just in case you're interested, Tech Source has employees who are members of DPVL committees. :)
Yahoo Groups
It might be a good idea (as you mentioned) to set up a yahoo group for your discussion.
1) Technical discussions
2) Business / Implmentations
3) What ever else.
Just my .02 cents worth.
FPGA Configurable
That sounds like a nice product. I've been wanting to put together a high performance video card but didn't feel like adding all the glue around the FPGA. Looks like we'll have a platform for development.
Brian