<div dir="ltr">On 1 August 2013 13:37, Steve Miller <span dir="ltr"><<a href="mailto:dervishx@gmail.com" target="_blank">dervishx@gmail.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Tests for layout qualifiers and redeclaration of gl_FragCoord. Tests fail at this time due to compiler not supporting 3.2 FS input redeclarations.<br>
<br>
v2 commit : typecast data to fragcolor as vec4 (was error in original)<br></blockquote><div><br></div><div>The commit subject sounds a little incomplete.  How about "arb_fragment_coord_conventions: compiler/parser tests."?<br>
</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
---<br>
 .../basic-qualifiers-both-origin-and-pixel.frag    | 26 ++++++++++++++++++++<br>
 .../compiler/basic-qualifiers-layout-illegal.frag  | 28 ++++++++++++++++++++++<br>
 .../compiler/basic-qualifiers-nothing.frag         | 24 +++++++++++++++++++<br>
 .../compiler/basic-qualifiers-origin.frag          | 25 +++++++++++++++++++<br>
 .../compiler/basic-qualifiers-pixel-center.frag    | 25 +++++++++++++++++++<br>
 .../compiler/redeclaration-after-use.frag          | 22 +++++++++++++++++<br>
 .../compiler/redeclaration-outside-fs.vert         | 26 ++++++++++++++++++++<br>
 7 files changed, 176 insertions(+)<br>
 create mode 100644 tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-both-origin-and-pixel.frag<br>
 create mode 100644 tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-layout-illegal.frag<br>
 create mode 100644 tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-nothing.frag<br>
 create mode 100644 tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-origin.frag<br>
 create mode 100644 tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-pixel-center.frag<br>
 create mode 100644 tests/spec/arb_fragment_coord_conventions/compiler/redeclaration-after-use.frag<br>
 create mode 100644 tests/spec/arb_fragment_coord_conventions/compiler/redeclaration-outside-fs.vert<br></blockquote><div><br></div><div>Since this is a brand new folder you're creating, you need to make sure it gets picked up by all.tests, e.g. by doing something like this:<br>
<br>import_glsl_parser_tests(arb_fragment_coord_conventions,<br>                         os.path.join(testsDir, 'spec', 'arb_fragment_coord_conventions'),<br>                         ['compiler'])<br>
</div> <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
diff --git a/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-both-origin-and-pixel.frag b/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-both-origin-and-pixel.frag<br>
new file mode 100644<br>
index 0000000..8632b64<br>
--- /dev/null<br>
+++ b/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-both-origin-and-pixel.frag<br>
@@ -0,0 +1,26 @@<br>
+// [config]<br>
+// expect result: pass<br></blockquote><div><br></div><div>This needs to say "expect_result" (note underscore) or it won't be parsed correctly by the piglit framework, and the test won't run.  The same fix needs to be made to the other tests in this patch as well.<br>
<br><div>In general, before submitting piglit patches, I'd recommend running
 them using piglit-run.py (using the "-t" option so that you don't have 
to run the entire test suite).  That will catch problems like these two.<br></div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

+// glsl_version: 1.50<br></blockquote><div><br></div><div>Since these tests are in the arb_fragment_coord_conventions folder, they should do their testing using the extension rather than GLSL 1.50.  I'd recommend using a GLSL version of 110, since I don't believe your tests rely on any features from later GLSL versions.<br>
<br></div><div>That means that in addition to changing the above line to "// glsl_version: 1.50", you'll have to add the line "// require_extensions: GL_ARB_fragment_coord_conventions".<br></div><div>
 </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
+// check_link: false<br>
+// [end config]<br>
+/*<br>
+* Section 4.3.8.1 (Input Layout Qualifiers) of the GLSL 1.50 spec says:<br>
+*  Fragment shaders can have an input layout only for redeclaring the<br>
+*  built-in variable gl_FragCoord (see section 7.2 Fragment Shader Special<br>
+*  Variables). The layout qualifier identifiers for gl_FragCoord are<br>
+*      layout-qualifier-id:<br>
+*          origin_upper_left<br>
+*          pixel_center_integer<br>
+*<br>
+*/<br>
+<br>
+#version 150<br>
+<br>
+layout(origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord;<br>
+<br>
+void main() {<br>
+<br>
+     gl_FragColor = vec4 (gl_FragCoord.x, gl_FragCoord.y,<br>
+                        gl_FragCoord.z, gl_FragCoord.z);<br>
+<br>
+}<br>
diff --git a/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-layout-illegal.frag b/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-layout-illegal.frag<br>
new file mode 100644<br>
index 0000000..70208f4<br>
--- /dev/null<br>
+++ b/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-layout-illegal.frag<br>
@@ -0,0 +1,28 @@<br>
+// [config]<br>
+// expect result: fail<br>
+// glsl_version: 1.50<br>
+// check_link: false<br>
+// [end config]<br>
+/*<br>
+* Section 4.3.8.1 (Input Layout Qualifiers) of the GLSL 1.50 spec says:<br>
+*  Fragment shaders can have an input layout only for redeclaring the<br>
+*  built-in variable gl_FragCoord (see section 7.2 Fragment Shader Special<br>
+*  Variables). The layout qualifier identifiers for gl_FragCoord are<br>
+*      layout-qualifier-id:<br>
+*          origin_upper_left<br>
+*          pixel_center_integer<br>
+*<br>
+* Test should fail because input layout should only apply to gl_FragCoord.<br>
+*/<br>
+<br>
+#version 150<br>
+<br>
+layout(origin_upper_left, pixel_center_integer) in vec2 gl_PointCoord;<br>
+<br>
+layout(origin_upper_left, pixel_center_integer) in bool gl_FrontFacing;<br>
+<br>
+void main() {<br>
+<br>
+     gl_FragColor = vec4 (gl_FragCoord.x, gl_FragCoord.y,<br>
+                        gl_FragCoord.z, gl_FragCoord.z);<br>
+}<br>
diff --git a/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-nothing.frag b/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-nothing.frag<br>
new file mode 100644<br>
index 0000000..9f6d8d5<br>
--- /dev/null<br>
+++ b/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-nothing.frag<br>
@@ -0,0 +1,24 @@<br>
+// [config]<br>
+// expect result: pass<br>
+// glsl_version: 1.50<br>
+// check_link: false<br>
+// [end config]<br>
+/*<br>
+* Section 4.3.8.1 (Input Layout Qualifiers) of the GLSL 1.50 spec says:<br>
+*  Fragment shaders can have an input layout only for redeclaring the<br>
+*  built-in variable gl_FragCoord (see section 7.2 Fragment Shader Special<br>
+*  Variables).<br>
+*<br>
+*  Redeclarations are done as follows<br>
+*      in vec4 gl_FragCoord; // redeclaration that changes nothing is allowed<br>
+*/<br>
+<br>
+#version 150<br>
+<br>
+in vec4 gl_FragCoord;<br>
+<br>
+void main() {<br>
+<br>
+     gl_FragColor = vec4 (gl_FragCoord.x, gl_FragCoord.y,<br>
+                        gl_FragCoord.z, gl_FragCoord.z);<br>
+}<br>
diff --git a/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-origin.frag b/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-origin.frag<br>
new file mode 100644<br>
index 0000000..4787860<br>
--- /dev/null<br>
+++ b/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-origin.frag<br>
@@ -0,0 +1,25 @@<br>
+// [config]<br>
+// expect result: pass<br>
+// glsl_version: 1.50<br>
+// check_link: false<br>
+// [end config]<br>
+/*<br>
+* Section 4.3.8.1 (Input Layout Qualifiers) of the GLSL 1.50 spec says:<br>
+*  Fragment shaders can have an input layout only for redeclaring the<br>
+*  built-in variable gl_FragCoord (see section 7.2 Fragment Shader Special<br>
+*  Variables). The layout qualifier identifiers for gl_FragCoord are<br>
+*      layout-qualifier-id:<br>
+*          origin_upper_left<br>
+*          pixel_center_integer<br>
+*<br>
+*/<br>
+<br>
+#version 150<br>
+<br>
+layout(origin_upper_left) in vec4 gl_FragCoord;<br>
+<br>
+void main() {<br>
+<br>
+     gl_FragColor = vec4 (gl_FragCoord.x, gl_FragCoord.y,<br>
+                        gl_FragCoord.z, gl_FragCoord.z);<br>
+}<br>
diff --git a/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-pixel-center.frag b/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-pixel-center.frag<br>
new file mode 100644<br>
index 0000000..024de4f<br>
--- /dev/null<br>
+++ b/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-pixel-center.frag<br>
@@ -0,0 +1,25 @@<br>
+// [config]<br>
+// expect result: pass<br>
+// glsl_version: 1.50<br>
+// check_link: false<br>
+// [end config]<br>
+/*<br>
+* Section 4.3.8.1 (Input Layout Qualifiers) of the GLSL 1.50 spec says:<br>
+*  Fragment shaders can have an input layout only for redeclaring the<br>
+*  built-in variable gl_FragCoord (see section 7.2 Fragment Shader Special<br>
+*  Variables). The layout qualifier identifiers for gl_FragCoord are<br>
+*      layout-qualifier-id:<br>
+*          origin_upper_left<br>
+*          pixel_center_integer<br>
+*<br>
+*/<br>
+<br>
+#version 150<br>
+<br>
+layout(pixel_center_integer) in vec4 gl_FragCoord;<br>
+<br>
+void main() {<br>
+<br>
+     gl_FragColor = vec4 (gl_FragCoord.x, gl_FragCoord.y,<br>
+                        gl_FragCoord.z, gl_FragCoord.z);<br>
+}<br>
diff --git a/tests/spec/arb_fragment_coord_conventions/compiler/redeclaration-after-use.frag b/tests/spec/arb_fragment_coord_conventions/compiler/redeclaration-after-use.frag<br>
new file mode 100644<br>
index 0000000..b572563<br>
--- /dev/null<br>
+++ b/tests/spec/arb_fragment_coord_conventions/compiler/redeclaration-after-use.frag<br>
@@ -0,0 +1,22 @@<br>
+// [config]<br>
+// expect result: fail<br>
+// glsl_version: 1.50<br>
+// check_link: false<br>
+// [end config]<br>
+/*<br>
+* Section 4.3.8.1 (Input Layout Qualifiers) of the GLSL 1.50 spec says:<br>
+*  Within any shader, the first redeclarations of gl_FragCoord must appear<br>
+*  before any use of gl_FragCoord.<br>
+*/<br>
+<br>
+#version 150<br>
+<br>
+vec2 a = gl_FragCoord.xy;<br>
+<br>
+in vec4 gl_FragCoord; //redeclaration after use should be illegal<br>
+<br>
+void main() {<br>
+<br>
+     gl_FragColor = vec4 (gl_FragCoord.x, gl_FragCoord.y,<br>
+                        gl_FragCoord.z, gl_FragCoord.z);<br>
+}<br></blockquote><div><br></div><div>Nice job coming up with this one--it exposed a Mesa bug :)<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

diff --git a/tests/spec/arb_fragment_coord_conventions/compiler/redeclaration-outside-fs.vert b/tests/spec/arb_fragment_coord_conventions/compiler/redeclaration-outside-fs.vert<br>
new file mode 100644<br>
index 0000000..c97a2d4<br>
--- /dev/null<br>
+++ b/tests/spec/arb_fragment_coord_conventions/compiler/redeclaration-outside-fs.vert<br>
@@ -0,0 +1,26 @@<br>
+// [config]<br>
+// expect result: fail<br>
+// glsl_version: 1.50<br>
+// check_link: false<br>
+// [end config]<br>
+/*<br>
+* Section 4.3.8.1 (Input Layout Qualifiers) of the GLSL 1.50 spec says:<br>
+*  Fragment shaders can have an input layout only for redeclaring the<br>
+*  built-in variable gl_FragCoord (see section 7.2 Fragment Shader Special<br>
+*  Variables). The layout qualifier identifiers for gl_FragCoord are<br>
+*      layout-qualifier-id:<br>
+*          origin_upper_left<br>
+*          pixel_center_integer<br>
+*<br>
+* This test assumes that gl_FragCoord cannot be redeclared anywhere other than a fragment shader.<br>
+*/<br>
+<br>
+#version 150<br>
+<br>
+in vec4 gl_FragCoord; //redeclaration in a VS<br>
+<br>
+void main() {<br>
+<br>
+     gl_FragColor = vec4 (gl_FragCoord.x, gl_FragCoord.y,<br>
+                        gl_FragCoord.z, gl_FragCoord.z);<br>
+}<br>
<span class=""><font color="#888888">--<br>
1.8.3.1<br>
<br>
_______________________________________________<br>
Piglit mailing list<br>
<a href="mailto:Piglit@lists.freedesktop.org">Piglit@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/piglit" target="_blank">http://lists.freedesktop.org/mailman/listinfo/piglit</a><br>
</font></span></blockquote></div><br></div></div>