[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Public WebGL] Two shader validator issues.



FYI I recently fixed a couple of translator issues regarding ternary
operators. You may want to update ANGLE version if you are running
into those.

On Fri, Jul 30, 2010 at 11:29 AM, Vladimir Vukicevic
<vladimir@mozilla.com> wrote:
> Ah crap, sorry Steve -- I forgot to mention that it's not available on linux 64 at the moment due to a build issue.  https://bugzilla.mozilla.org/show_bug.cgi?id=578877 is the tracking bug to get it reenabled once the build config stuff is fixed.
>
> The linux 32-bit build should be fine though if you want a way to test on linux for now.  The errors you have below are all coming from the ANGLE shader validator, so are likely real issues.
>
>    - Vlad
>
> ----- Original Message -----
>> I've been putting some of my more complex GLSL shaders through the new
>> checking gizmo in yesterday's Firefox nightly build and I'm seeing some
>> inconsistancies between the Linux 64 bit version and the Windows XP 32 bit
>> version (those are the only two I've tried).
>>
>> Two shader constructs are accepted by Linux but not by Windows:
>>
>> #ifdef GL_ES
>> precision highp float;
>> #endif
>> ...
>> vec3 A ;
>> vec3 B ;
>> float C ;
>> float D ;
>> ...
>> A = ( C > D ) ? 0.0 : B ;
>>
>> ...the compiler under Windows complains about that last line:
>>
>> ERROR: 0:50: ':' : wrong operand types no operation ':' exists
>> that takes a left-hand operand of type 'const mediump float'
>> and a right operand of type '3-component vector of float'
>> (or there is no acceptable conversion)
>> ERROR: 1 compilation errors. No code generated.
>>
>> I could understand if maybe the new 'no automatic conversions' thing
>> were
>> refusing to widen '0.0' to 'vec3(0.0,0.0,0.0)' - but the problem
>> doesn't
>> seem to be that - it looks like it's widening it into a 'mediump'
>> instead
>> of to the 'highp' that my 'precision' statement demands...which would
>> be a
>> bug.
>>
>> The second problem is that (in a fragment shader), I say:
>>
>> #ifdef GL_ES
>> precision highp float;
>> #endif
>> ...
>> varying vec2 texCoord ;
>> ...
>> texCoord.x += 0.1 ;
>>
>> ...and under Windows, I get:
>>
>> ERROR: 0:77: 'assign' : l-value required "texCoord" (can't modify
>> a varying)
>> ERROR: 1 compilation errors. No code generated.
>>
>> ...this machine has OpenGL installed on it - but I wonder if the 'no
>> assignment to varying' restriction comes from some HLSL/Cg restriction
>> in
>> the underlying implementation?
>>
>> In both cases, the shader code compiles and runs just fine under
>> regular
>> C++/OpenGL 3.x and under the Linux FireFox (with or without the
>> validator)
>> - and it also works OK under Windows if the webgl.shader_validator
>> variable is set to false.
>>
>> The Windows XP machine has a fancy high end nVidia GPU - and the
>> various
>> Linux boxes I've run it on have everything from a 6800 up to a really
>> recent nVidia GPU.
>>
>> I know the validator is working under Linux because it caught a couple
>> of:
>>
>> float X ;
>> X = 6 ;
>>
>> ...kinds of thing, and it stopped complaining when I changed '6' to
>> '6.0'.
>>
>> Obviously, neither of these things are serious problems for me - it's
>> mostly just annoying that I can't develop under Linux and expect my
>> shader
>> code to "just work" under Windows.
>>
>> -- Steve
>>
>>
>> -----------------------------------------------------------
>> You are currently subscribed to public_webgl@khronos.org.
>> To unsubscribe, send an email to majordomo@khronos.org with
>> the following command in the body of your email:
> -----------------------------------------------------------
> You are currently subscribed to public_webgl@khronos.org.
> To unsubscribe, send an email to majordomo@khronos.org with
> the following command in the body of your email:
>
>

-----------------------------------------------------------
You are currently subscribed to public_webgl@khronos.org.
To unsubscribe, send an email to majordomo@khronos.org with
the following command in the body of your email: