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)

Reply via email to