summaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
authorJarkko Pöyry <jpoyry@google.com>2015-03-24 12:54:55 -0700
committerJarkko Poyry <jpoyry@google.com>2015-03-26 20:03:39 +0000
commit18c15f928a710db86e7e374b478faea3b198afc3 (patch)
treeed79963d2a79abf26b54fb09663ddfc2b1df3426 /data
parent01c3ffd9c9b6067086cdd2c0f9b384bfbc72728a (diff)
downloadVK-GL-CTS-18c15f928a710db86e7e374b478faea3b198afc3.tar.gz
VK-GL-CTS-18c15f928a710db86e7e374b478faea3b198afc3.tar.bz2
VK-GL-CTS-18c15f928a710db86e7e374b478faea3b198afc3.zip
Add negative tests for per-patch output aggregate types.
Bug: 19894936 Change-Id: I2d5b78c98a380a10831145c937d88a154eb131f1
Diffstat (limited to 'data')
-rw-r--r--data/gles31/shaders/tessellation_negative_user_defined_io.test116
1 files changed, 116 insertions, 0 deletions
diff --git a/data/gles31/shaders/tessellation_negative_user_defined_io.test b/data/gles31/shaders/tessellation_negative_user_defined_io.test
new file mode 100644
index 000000000..36bd5e7e2
--- /dev/null
+++ b/data/gles31/shaders/tessellation_negative_user_defined_io.test
@@ -0,0 +1,116 @@
+case per_patch_array_of_structs
+ version 310 es
+ desc "per-patch variable type is array of structs"
+ expect compile_or_link_fail
+ require extension { "GL_OES_tessellation_shader" | "GL_EXT_tessellation_shader" } in { tessellation_control, tessellation_evaluation }
+ vertex ""
+ #version 310 es
+ ${VERTEX_DECLARATIONS}
+ void main()
+ {
+ ${VERTEX_OUTPUT}
+ }
+ ""
+ tessellation_control ""
+ #version 310 es
+ ${TESSELLATION_CONTROL_DECLARATIONS}
+ struct S
+ {
+ highp float a;
+ highp vec2 b;
+ };
+ patch out S patchVariable[2]; // array of structures is illegal
+ void main()
+ {
+ patchVariable[0].a = gl_in[0].gl_Position.x;
+ patchVariable[0].b = gl_in[0].gl_Position.yz;
+ patchVariable[1].a = gl_in[0].gl_Position.z;
+ patchVariable[1].b = gl_in[0].gl_Position.wx;
+ ${TESSELLATION_CONTROL_OUTPUT}
+ }
+ ""
+ tessellation_evaluation ""
+ #version 310 es
+ ${TESSELLATION_EVALUATION_DECLARATIONS}
+ struct S
+ {
+ highp float a;
+ highp vec2 b;
+ };
+ patch in S patchVariable[2]; // array of structures is illegal
+ out mediump float te_out;
+ void main()
+ {
+ te_out = patchVariable[0].a + patchVariable[1].b.y;
+ ${TESSELLATION_EVALUATION_OUTPUT}
+ }
+ ""
+ fragment ""
+ #version 310 es
+ precision mediump float;
+ ${FRAGMENT_DECLARATIONS}
+ in mediump float te_out;
+ void main()
+ {
+ ${FRAG_COLOR} = vec4(te_out);
+ }
+ ""
+end
+
+case per_patch_structs_containing_arrays
+ version 310 es
+ desc "per-patch variable type is struct containing array"
+ expect compile_or_link_fail
+ require extension { "GL_OES_tessellation_shader" | "GL_EXT_tessellation_shader" } in { tessellation_control, tessellation_evaluation }
+ vertex ""
+ #version 310 es
+ ${VERTEX_DECLARATIONS}
+ void main()
+ {
+ ${VERTEX_OUTPUT}
+ }
+ ""
+ tessellation_control ""
+ #version 310 es
+ ${TESSELLATION_CONTROL_DECLARATIONS}
+ struct S
+ {
+ highp float a;
+ highp float b[2];
+ };
+ patch out S patchVariable; // output structure containing array is illegal
+ void main()
+ {
+ patchVariable.a = gl_in[0].gl_Position.x;
+ patchVariable.b[0] = gl_in[0].gl_Position.y;
+ patchVariable.b[1] = gl_in[0].gl_Position.w;
+ ${TESSELLATION_CONTROL_OUTPUT}
+ }
+ ""
+ tessellation_evaluation ""
+ #version 310 es
+ ${TESSELLATION_EVALUATION_DECLARATIONS}
+ struct S
+ {
+ highp float a;
+ highp float b[2];
+ };
+ patch in S patchVariable; // output structure containing array is illegal
+ out mediump float te_out;
+ void main()
+ {
+ te_out = patchVariable.a + patchVariable.b[1];
+ ${TESSELLATION_EVALUATION_OUTPUT}
+ }
+ ""
+ fragment ""
+ #version 310 es
+ precision mediump float;
+ ${FRAGMENT_DECLARATIONS}
+ in mediump float te_out;
+ void main()
+ {
+ ${FRAG_COLOR} = vec4(te_out);
+ }
+ ""
+end