diff options
author | Jarkko Pöyry <jpoyry@google.com> | 2015-03-24 12:54:55 -0700 |
---|---|---|
committer | Jarkko Poyry <jpoyry@google.com> | 2015-03-26 20:03:39 +0000 |
commit | 18c15f928a710db86e7e374b478faea3b198afc3 (patch) | |
tree | ed79963d2a79abf26b54fb09663ddfc2b1df3426 /data | |
parent | 01c3ffd9c9b6067086cdd2c0f9b384bfbc72728a (diff) | |
download | VK-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.test | 116 |
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 |