This causes the following tests to pass:
glslparsertest/shaders/CorrectVersion.V110.frag
shaders/glsl-vs-sqrt-zero.frag
shaders/glsl-vs-sqrt-zero.vert
This causes the following tests to fail. These shaders were
previously failing to compile, but they were all failing for the wrong
reasons.
glslparsertest/shaders/attribute1.vert
glslparsertest/shaders/attribute2.vert
glslparsertest/shaders/main2.vert
The following tests now pass:
glslparsertest/shaders/if1.frag
glslparsertest/shaders/if2.frag
The following tests that used to pass now fail. It appears that most
of these fail because ast_nequal and ast_equal are not converted to HIR.
shaders/glsl-unused-varying.frag
shaders/glsl-fs-sqrt-branch.frag
Making the base e functions IR operations is not a clear win. i965
doesn't support it, it doesn't look like r600 supports it, but r500
does. It should be easily supportable as a lowering pass, though.
Following a discussion in #dri-devel, I think this makes more sense
than implementing it as RSQ RCP CMP as Mesa did. The i965 has a
hardware sqrt that should work, and AMD is suppposed to be able to
implement it as RSQ RCP with an alternate floating point mode so that
the 0.0 case is handled like we want.
As a result, the following tests pass:
glslparsertest/array3.frag
glslparsertest/CGStandardLibrary.frag
glslparsertest/ConstantConversions.frag
glslparsertest/constructor1.frag
glslparsertest/constructor2.frag
glslparsertest/constructor3.V110.frag
glslparsertest/dataType4.frag
glslparsertest/dataType5.frag
glslparsertest/dataType13.frag
glslparsertest/dataType19.frag
glslparsertest/matrix.V110.frag
glslparsertest/parser7.frag
glslparsertest/swizzle3.frag
The following tests also pass, but it is just by dumb luck. In these
cases the shader fails to compile, but it fails for the wrong reason:
glslparsertest/array6.frag
glslparsertest/comma2.frag
glslparsertest/conditional1.frag
glslparsertest/conditional2.frag
glslparsertest/conditional3.frag
glslparsertest/constFunc.frag
glslparsertest/ParseTest3.frag
glslparsertest/ParseTest4.frag
glslparsertest/varying3.frag
glslparsertest/parser8.frag (also segfaults)
glslparsertest/parser9.frag (also segfaults)
The following tests now fail. As far as I can tell, these are all
cases where the shader was failing to compile, but it was failing for
the wrong reason.
glslparsertest/CorrectMatComma.frag
glslparsertest/CorrectModule.frag
glslparsertest/CorrectSwizzle2.vert
glslparsertest/shaders/glsl-fs-bug25902.frag
All of the scalar, vector, and matrix constructors *except* "from
bool" constructors should be handled. Array and structure
constructors are also not yet handled.