[Mesa-dev] [PATCH 2/2] mesa: add hard limits for the number of varyings and uniforms for the linker

Ian Romanick idr at freedesktop.org
Sun Nov 27 15:08:44 PST 2011


On 11/25/2011 01:13 AM, Dave Airlie wrote:
>> I'm honestly shocked to read this, Marek.  We "deliberately want [your]
>> driver to be less capable" and "couldn't care about less about anything
>> except [our] driver"?  This is sounding remarkably like a conspiracy
>> theory, and I really didn't expect that from you.
>
> I think it takes two to tango, and Ian was pretty direct on irc, he
> might have been attempting sarcasm but we all know how well that works
> on irc :-)
>
> The IRC logs are public, but I don't expect anyone to ever try and use
> an argument like "I know better than you because I'm on the ARB" in
> any discussion around here again. Its show contempt for those of us
> who know that standards are joke no matter who produces them. DirectX
> works because it has a decent test suite + reference renderer not
> because it has a tight spec group.

That's not at all accurate.  DirectX has an extremely tight and rigorous 
spec: the *one* implementation of the API.  Because of that, an 
application developer has quite a bit of assurance that a shader 
targeting DX 9.0c will run on all hardware if it runs on any hardware.

OpenGL on Apple platforms is in a similar situation for a similar 
reason.  There is one implementation of all of the application facing 
bits.  If a shader compiles and links on one driver that advertises 4096 
uniform components, then it will compile and link on all of them that 
advertise 4096 uniform components.

In Mesa, we have four drivers that advertise 4096 uniform components on 
some combinations of hardware: i915, i915g, nouveau, and r300g.  By 
putting resource counting in the driver we have the potential for 
shaders to compile and link on exactly one driver but fail on the other 
three.

Which is it?  Is a consistent ecosystem on which developers can depend a 
virtue, or is it me trying to ruin someone's driver?  You can't argue 
that it's both.

If someone thinks that compacting uniform arrays or varying arrays is an 
important optimization that our OpenGL ecosystem needs to make 
applications run, that's great.  Patches are welcome.

This is an ecosystem.  We will all either fail or succeed together.  Why 
do you think so much of the work that I and my team does lives in the 
shared components?  Huge amounts of the code that we've written, 
especially the GLSL optimizations, could live in our drivers.  Doing so 
would have let us accomplish our goals much, much faster, but we didn't 
do that because it hurts the ecosystem as a whole.


More information about the mesa-dev mailing list