[Mesa-dev] [PATCH] ir_to_mesa: do not check the number of uniforms against hw limits
Brian Paul
brianp at vmware.com
Tue Mar 15 10:59:28 PDT 2011
On 03/15/2011 12:22 AM, Marek Olšák wrote:
> There is a fail path in r300g that has been working very well for us. If
> shader compilation fails, a dummy shader emitting one instruction is
> used (usually outputting (0,0,0,1) into the first output). This approach
> allows the applications with failing shaders to run with misrendering on
> specific objects (in case of a fragment shader failure) or with missing
> objects (in case of a vertex shader failure). The fact there is no crash
> or abort or anything preventing the apps from running makes some of them
> usable. It also makes debugging easier, because all failing shaders must
> go through the r300 compiler and we can analyze whether the compiler is
> doing a good job in reducing the number of instructions and temporaries,
> and whether we can do something about it to make it better.
>
> If we are about to introduce new shader error enums, I'd like to
> preserve the current r300g behavior for OpenGL apps, because it appears
> to be a win in most cases.
The problem with this is if someone is developing a GL app with the
R300 driver and is seeing black pixels instead of getting a compiler
error when something's wrong with the shader, the developer is going
to think the bug/problem is in the driver and not his shader.
I think this is especially important for a low-end GPU driver. If I
were developing an app with non-trivial shaders, I'd want to test on a
low-end or older GPU to see if it works. That generally means the
shader will work on a newer/better GPU. The other way around doesn't
work as well, of course.
What you describe sounds useful, but it should probably be controlled
by an env var or something.
-Brian
More information about the mesa-dev
mailing list