On 8/18/06, Patrick McNamara <[EMAIL PROTECTED]> wrote:
market. We have been avoiding programmable shaders and such because of the complexity and the probable inability to fit it all in an affordable FPGA.
Not just fitting it. Performance. Think about the difference in throughput between fixed-function and programmable. With fixed-function, every function is a separate pipeline stage, and those stages can be subdivided for more performance. If your pipeline is 100 stages deep, then you can have 100 fragment groups (N pixels) in flight all at the same time. So in steady-state, you get 100x your clock rate pixels being processed in parallel. (This can't always be sustained, with separate polygons and memory bandwidth being limiting factors.) With a programmable design, the shader functionality is specified as a program that is executed sequentially. Although you may process multiple fragments in parallel (multiple shaders), one fragment is being processed by one shader program, and that shader program is going to take some number of cycles to process the fragment. If the shader program takes 10 cycles (with or without data dependency hazards), then your throughput os 1/10 your clock rate. In the hypothetical extreme case (using our made-up numbers here), you have a 1000x difference in maximum throughput. Memory bandwidth limitations and other factors will shrink that factor significantly, but if the two are run at the same clock rate, the shader won't keep up. You either have to go wider on the number of shaders (hard to utilize for triangles that are not wide) or much faster on the clock rate to get comparable throughput. So, the shader could be made to keep up, but the engineering and cost required is massively greater to get a certain basic level of performance for the sort of "enhanced 2D" that our GPU will usually get used for. Oh, and one other thing. It's out of our reach to produce a full-custom chip that will run at clock rates comparable to CPUs. Even though CPUs don't have the specialization and parallism to keep up with our fixed-function design, they'll kick the ass of any _programmable_ design we do, at least in the FPGA. Only with very high clock rates and amounts of logic that won't fit into several FPGAs can we get back the throughput we need to make this worth-while. And then we start competing directly with ATI and nVidia, and I'm not sure we're ready to go up against their marketing machines. We completely lose the embedded market, because we're not producing a simple, low-power design. And being vastly less experienced at programmable shader design, our performance (speed, accuracy, etc.) would surely not be nearly what ATI and nVidia get with their programmable designs. Sure, some people would buy it on principle, but we're no longer in the sub-$200 price range. Some people say they're willing to pay 4x the price of an ATI card, for freedom. But we're way out of the sub-$200 range with a programmable design. It's lunacy to think we can do as well as they do right out of the gate. We have to reinvent too many of the ideas they have already come up with. If we shoot too high, not only will we prove ourselves to be impractical, but we'll be laughed out of the market for trying to do something that is beyond us. If that happens, the OGP is done for and ubiquitous Free Software graphics drivers will have to wait another 30 years to become a reality. Ok, I'm being a bit over the top, but do you see why I'm so resistant to shooting for the moon right now?
Right now, we have been working on the video controller, PCI, and memory. Basically everything we need to put together a framebuffer. The question is what comes next? Do we continue down the path we are on and start on the 3D unit and VGA? Or, do we get a little more aggressive and start on a programmable shader. Both are viable and both have pros and cons.
At the moment, my plan is to focus on the fixed-function pipeline, but others can begin architecting a shader in parallel.
If we go the route we are on now we get out in the public sooner with a general purpose graphics card. It is, however, certainly feature poor compared to the current crop of cards. If there is interest from well funded parties, going the programmable shader route does buy us a couple of things. One: funding. Two: a better feature set for the final general purpose graphics card.
But back to the chicken/egg problem. Frankly, I think we need up-front funding to consider such a strategy to be viable. _______________________________________________ Open-graphics mailing list [email protected] http://lists.duskglow.com/mailman/listinfo/open-graphics List service provided by Duskglow Consulting, LLC (www.duskglow.com)
