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

Re: [Public WebGL] Two shader validator issues.



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: