Re: [css-shaders] GLSL implementation defined limits

On Fri, Nov 18, 2011 at 11:27 AM, Chris Marrin <cmarrin@apple.com> wrote:

>
> On Nov 18, 2011, at 9:54 AM, Gregg Tavares (wrk) wrote:
>
> > WebGL does not say all valid shaders work. WebGL just defines the
> language, "GLSL". After that it's up to the individual hardware/driver's
> limits. We've already had to re-write several valid working shaders in the
> WebGL conformance tests because while they worked fine on desktop hardware
> they were too large for certain mobile hardware.
>
> And so the question is, where did they fail? I assume they failed
> somewhere in the compile/link cycle, in which case an @supports type of
> scheme where an alternative can be selected after such failures, would
> work, right?
>

Yes, the shaders in question failed in the compile/link cycle as they used
too many instructions for certain mobile hardware.


>
> >
> > Some example of platform dependent limits:
> >
> > *) Max Instructions for a shader. Low-end hardware can be as low as 96
> instructions, high end hardware is currently around 32k instructions
> > *) Max textures you can references in a vertex shader. Low-end limit is
> 0, high end is 32
> > *) Max textures you can reference period. Low-end is 8, high end is 32
> > *) Max precision. "highp" is optional
> > *) ...
> >
> > It's also arguably impossible to know how many instructions a given
> shader will take. Some drivers may optimize better than others. Some WebGL
> implementations may re-write the shader to work around bugs in drivers. You
> could choose some even smaller limit like 64 instructions and then hope
> that was enough wiggle room for workarounds. You could also require higher
> end hardware with higher limits before allowing CSS shaders to function.
> Otherwise you probably need a way for devs to check for failure.
>
> -----
> ~Chris
> cmarrin@apple.com
>
>
>
>
>

Received on Friday, 18 November 2011 21:41:23 UTC