[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