From 42e7c162a66d6679a941eea0ac5914f77c5aafdf Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mika=20V=C3=A4in=C3=B6l=C3=A4?= Date: Tue, 29 Sep 2020 09:58:03 +0300 Subject: [PATCH] Modify/add GLES XFB tests without element capture Some GLES implementations are unable to support array elements as transform feedback varyings. Capture the full array when element capture is not explicitly tested. Add new variants for tests where different types of varyings are tested at the same time. New tests: dEQP-GLES3.functional.transform_feedback.random_full_array_capture.* KHR-GLES31.core.program_interface_query.transform-feedback-types-full-array-capture Affects: dEQP-GLES3.functional.transform_feedback.random.* KHR-GLES31.core.shader_image_size.* KHR-GLES31.core.vertex_attrib_binding.basic-input* Components: OpenGL ES VK-GL-CTS issue: 2237 Change-Id: Ib6164d89bc99f8ca8287dad7cc1e0789916e3256 (cherry picked from commit 8404b33c25c7f7cf5cd49a7c18c3a63b0f1f70ae) --- android/cts/master/gles3-master.txt | 60 +++++++++++++++ .../gles/aosp_mustpass/3.2.5.x/gles3-master.txt | 60 +++++++++++++++ .../gles/aosp_mustpass/3.2.6.x/gles3-master.txt | 60 +++++++++++++++ .../gles/aosp_mustpass/master/gles3-master.txt | 60 +++++++++++++++ .../khronos_mustpass/3.2.5.x/gles31-khr-master.txt | 1 + .../khronos_mustpass/3.2.6.x/gles31-khr-master.txt | 1 + .../khronos_mustpass/master/gles31-khr-master.txt | 1 + .../gles31/es31cProgramInterfaceQueryTests.cpp | 89 ++++++++++++++++++++++ .../modules/gles31/es31cShaderImageSizeTests.cpp | 4 +- .../gles31/es31cVertexAttribBindingTests.cpp | 12 +-- .../functional/es3fTransformFeedbackTests.cpp | 36 ++++++++- 11 files changed, 370 insertions(+), 14 deletions(-) diff --git a/android/cts/master/gles3-master.txt b/android/cts/master/gles3-master.txt index 6ca93b4..0820dbe 100644 --- a/android/cts/master/gles3-master.txt +++ b/android/cts/master/gles3-master.txt @@ -40129,6 +40129,66 @@ dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.4 dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.5 dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.6 dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.9 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.1 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.2 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.3 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.4 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.5 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.6 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.7 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.8 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.9 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.10 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.1 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.2 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.3 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.4 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.5 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.6 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.7 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.8 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.9 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.10 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.1 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.2 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.3 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.4 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.5 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.6 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.7 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.8 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.9 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.10 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.1 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.2 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.3 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.4 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.5 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.6 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.7 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.8 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.9 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.10 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.1 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.2 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.3 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.4 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.5 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.6 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.7 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.8 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.9 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.10 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.1 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.2 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.3 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.4 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.5 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.6 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.7 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.8 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.9 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.10 dEQP-GLES3.functional.fence_sync.wait_sync_smalldraw dEQP-GLES3.functional.fence_sync.wait_sync_largedraw dEQP-GLES3.functional.fence_sync.client_wait_sync_smalldraw diff --git a/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.5.x/gles3-master.txt b/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.5.x/gles3-master.txt index 420b0c3..5f55fe1 100644 --- a/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.5.x/gles3-master.txt +++ b/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.5.x/gles3-master.txt @@ -41576,6 +41576,66 @@ dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.7 dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.8 dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.9 dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.10 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.1 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.2 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.3 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.4 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.5 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.6 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.7 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.8 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.9 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.10 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.1 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.2 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.3 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.4 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.5 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.6 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.7 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.8 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.9 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.10 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.1 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.2 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.3 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.4 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.5 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.6 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.7 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.8 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.9 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.10 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.1 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.2 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.3 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.4 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.5 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.6 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.7 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.8 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.9 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.10 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.1 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.2 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.3 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.4 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.5 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.6 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.7 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.8 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.9 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.10 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.1 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.2 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.3 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.4 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.5 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.6 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.7 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.8 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.9 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.10 dEQP-GLES3.functional.fence_sync.wait_sync_smalldraw dEQP-GLES3.functional.fence_sync.wait_sync_largedraw dEQP-GLES3.functional.fence_sync.client_wait_sync_smalldraw diff --git a/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.6.x/gles3-master.txt b/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.6.x/gles3-master.txt index 420b0c3..5f55fe1 100644 --- a/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.6.x/gles3-master.txt +++ b/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.6.x/gles3-master.txt @@ -41576,6 +41576,66 @@ dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.7 dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.8 dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.9 dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.10 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.1 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.2 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.3 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.4 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.5 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.6 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.7 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.8 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.9 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.10 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.1 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.2 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.3 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.4 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.5 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.6 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.7 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.8 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.9 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.10 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.1 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.2 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.3 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.4 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.5 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.6 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.7 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.8 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.9 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.10 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.1 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.2 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.3 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.4 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.5 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.6 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.7 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.8 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.9 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.10 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.1 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.2 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.3 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.4 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.5 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.6 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.7 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.8 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.9 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.10 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.1 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.2 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.3 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.4 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.5 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.6 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.7 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.8 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.9 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.10 dEQP-GLES3.functional.fence_sync.wait_sync_smalldraw dEQP-GLES3.functional.fence_sync.wait_sync_largedraw dEQP-GLES3.functional.fence_sync.client_wait_sync_smalldraw diff --git a/external/openglcts/data/mustpass/gles/aosp_mustpass/master/gles3-master.txt b/external/openglcts/data/mustpass/gles/aosp_mustpass/master/gles3-master.txt index ff0a2e1..488144d 100644 --- a/external/openglcts/data/mustpass/gles/aosp_mustpass/master/gles3-master.txt +++ b/external/openglcts/data/mustpass/gles/aosp_mustpass/master/gles3-master.txt @@ -41594,6 +41594,66 @@ dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.7 dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.8 dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.9 dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.10 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.1 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.2 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.3 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.4 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.5 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.6 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.7 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.8 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.9 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.10 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.1 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.2 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.3 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.4 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.5 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.6 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.7 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.8 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.9 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.10 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.1 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.2 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.3 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.4 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.5 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.6 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.7 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.8 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.9 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.10 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.1 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.2 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.3 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.4 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.5 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.6 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.7 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.8 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.9 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.10 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.1 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.2 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.3 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.4 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.5 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.6 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.7 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.8 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.9 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.10 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.1 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.2 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.3 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.4 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.5 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.6 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.7 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.8 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.9 +dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.10 dEQP-GLES3.functional.fence_sync.wait_sync_smalldraw dEQP-GLES3.functional.fence_sync.wait_sync_largedraw dEQP-GLES3.functional.fence_sync.client_wait_sync_smalldraw diff --git a/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.5.x/gles31-khr-master.txt b/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.5.x/gles31-khr-master.txt index c9d0671..c4341ff 100644 --- a/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.5.x/gles31-khr-master.txt +++ b/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.5.x/gles31-khr-master.txt @@ -2163,6 +2163,7 @@ KHR-GLES31.core.program_interface_query.uniform-types KHR-GLES31.core.program_interface_query.uniform-block-types KHR-GLES31.core.program_interface_query.uniform-block-array KHR-GLES31.core.program_interface_query.transform-feedback-types +KHR-GLES31.core.program_interface_query.transform-feedback-types-full-array-capture KHR-GLES31.core.program_interface_query.atomic-counters KHR-GLES31.core.program_interface_query.atomic-counters-one-buffer KHR-GLES31.core.program_interface_query.ssb-types diff --git a/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.6.x/gles31-khr-master.txt b/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.6.x/gles31-khr-master.txt index c9d0671..c4341ff 100644 --- a/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.6.x/gles31-khr-master.txt +++ b/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.6.x/gles31-khr-master.txt @@ -2163,6 +2163,7 @@ KHR-GLES31.core.program_interface_query.uniform-types KHR-GLES31.core.program_interface_query.uniform-block-types KHR-GLES31.core.program_interface_query.uniform-block-array KHR-GLES31.core.program_interface_query.transform-feedback-types +KHR-GLES31.core.program_interface_query.transform-feedback-types-full-array-capture KHR-GLES31.core.program_interface_query.atomic-counters KHR-GLES31.core.program_interface_query.atomic-counters-one-buffer KHR-GLES31.core.program_interface_query.ssb-types diff --git a/external/openglcts/data/mustpass/gles/khronos_mustpass/master/gles31-khr-master.txt b/external/openglcts/data/mustpass/gles/khronos_mustpass/master/gles31-khr-master.txt index c9d0671..c4341ff 100644 --- a/external/openglcts/data/mustpass/gles/khronos_mustpass/master/gles31-khr-master.txt +++ b/external/openglcts/data/mustpass/gles/khronos_mustpass/master/gles31-khr-master.txt @@ -2163,6 +2163,7 @@ KHR-GLES31.core.program_interface_query.uniform-types KHR-GLES31.core.program_interface_query.uniform-block-types KHR-GLES31.core.program_interface_query.uniform-block-array KHR-GLES31.core.program_interface_query.transform-feedback-types +KHR-GLES31.core.program_interface_query.transform-feedback-types-full-array-capture KHR-GLES31.core.program_interface_query.atomic-counters KHR-GLES31.core.program_interface_query.atomic-counters-one-buffer KHR-GLES31.core.program_interface_query.ssb-types diff --git a/external/openglcts/modules/gles31/es31cProgramInterfaceQueryTests.cpp b/external/openglcts/modules/gles31/es31cProgramInterfaceQueryTests.cpp index a493523..6d61011 100644 --- a/external/openglcts/modules/gles31/es31cProgramInterfaceQueryTests.cpp +++ b/external/openglcts/modules/gles31/es31cProgramInterfaceQueryTests.cpp @@ -1668,6 +1668,93 @@ class TransformFeedbackTypes : public SimpleShaders } }; +class TransformFeedbackTypesFullArrayCapture : public SimpleShaders +{ + virtual std::string Title() + { + return "Transform Feedback Varying Types Without Element Capture"; + } + + virtual std::string ShadersDesc() + { + return "fallthrough fragment and vertex shaders with different types of out variables used"; + } + + virtual std::string PurposeExt() + { + return "\n\n Purpose is to verify calls using GL_TRANSFORM_FEEDBACK_VARYING as an interface param.\n"; + } + + virtual std::string VertexShader() + { + return "#version 310 es \n" + "in vec4 position; \n" + "" + "flat out highp vec4 a; \n" + "out mediump float b[2]; \n" + "flat out highp uvec2 c; \n" + "flat out highp uint d; \n" + "out mediump vec3 e[2]; \n" + "flat out int f; \n" + "" + "void main(void) \n" + "{ \n" + " vec4 pos; \n" + " a = vec4(1); \n" + " b[0] = 1.1; \n" + " b[1] = 1.1; \n" + " c = uvec2(1u); \n" + " d = 1u; \n" + " e[0] = vec3(1.1); \n" + " e[1] = vec3(1.1); \n" + " f = 1; \n" + " gl_Position = position; \n" + "}"; + } + + virtual long Run() + { + GLuint program = CreateProgram(VertexShader().c_str(), FragmentShader().c_str(), false); + glBindAttribLocation(program, 0, "position"); + const char* varyings[5] = { "a", "b", "c", "d", "e" }; + glTransformFeedbackVaryings(program, 5, varyings, GL_INTERLEAVED_ATTRIBS); + LinkProgram(program); + + long error = NO_ERROR; + + VerifyGetProgramInterfaceiv(program, GL_TRANSFORM_FEEDBACK_VARYING, GL_ACTIVE_RESOURCES, 5, error); + VerifyGetProgramInterfaceiv(program, GL_TRANSFORM_FEEDBACK_VARYING, GL_MAX_NAME_LENGTH, 2, error); + + std::map indices; + VerifyGetProgramResourceIndex(program, GL_TRANSFORM_FEEDBACK_VARYING, indices, "a", error); + VerifyGetProgramResourceIndex(program, GL_TRANSFORM_FEEDBACK_VARYING, indices, "b", error); + VerifyGetProgramResourceIndex(program, GL_TRANSFORM_FEEDBACK_VARYING, indices, "c", error); + VerifyGetProgramResourceIndex(program, GL_TRANSFORM_FEEDBACK_VARYING, indices, "d", error); + VerifyGetProgramResourceIndex(program, GL_TRANSFORM_FEEDBACK_VARYING, indices, "e", error); + + VerifyGetProgramResourceName(program, GL_TRANSFORM_FEEDBACK_VARYING, indices["a"], "a", error); + VerifyGetProgramResourceName(program, GL_TRANSFORM_FEEDBACK_VARYING, indices["b"], "b", error); + VerifyGetProgramResourceName(program, GL_TRANSFORM_FEEDBACK_VARYING, indices["c"], "c", error); + VerifyGetProgramResourceName(program, GL_TRANSFORM_FEEDBACK_VARYING, indices["d"], "d", error); + VerifyGetProgramResourceName(program, GL_TRANSFORM_FEEDBACK_VARYING, indices["e"], "e", error); + + GLenum props[] = { GL_NAME_LENGTH, GL_TYPE, GL_ARRAY_SIZE }; + GLint expected[] = { 2, GL_FLOAT_VEC4, 1 }; + VerifyGetProgramResourceiv(program, GL_TRANSFORM_FEEDBACK_VARYING, indices["a"], 3, props, 3, expected, error); + GLint expected2[] = { 2, GL_FLOAT, 2 }; + VerifyGetProgramResourceiv(program, GL_TRANSFORM_FEEDBACK_VARYING, indices["b"], 3, props, 3, expected2, error); + GLint expected3[] = { 2, GL_UNSIGNED_INT_VEC2, 1 }; + VerifyGetProgramResourceiv(program, GL_TRANSFORM_FEEDBACK_VARYING, indices["c"], 3, props, 3, expected3, error); + GLint expected4[] = { 2, GL_UNSIGNED_INT, 1 }; + VerifyGetProgramResourceiv(program, GL_TRANSFORM_FEEDBACK_VARYING, indices["d"], 3, props, 3, expected4, error); + GLint expected5[] = { 2, GL_FLOAT_VEC3, 2 }; + VerifyGetProgramResourceiv(program, GL_TRANSFORM_FEEDBACK_VARYING, indices["e"], 3, props, 3, expected5, error); + + glDeleteProgram(program); + return error; + } +}; + class AtomicCounterSimple : public ComputeShaderTest { public: @@ -3648,6 +3735,8 @@ void ProgramInterfaceQueryTests::init() addChild(new TestSubcase(m_context, "uniform-block-types", TestSubcase::Create)); addChild(new TestSubcase(m_context, "uniform-block-array", TestSubcase::Create)); addChild(new TestSubcase(m_context, "transform-feedback-types", TestSubcase::Create)); + addChild(new TestSubcase(m_context, "transform-feedback-types-full-array-capture", + TestSubcase::Create)); addChild(new TestSubcase(m_context, "atomic-counters", TestSubcase::Create)); addChild( new TestSubcase(m_context, "atomic-counters-one-buffer", TestSubcase::Create)); diff --git a/external/openglcts/modules/gles31/es31cShaderImageSizeTests.cpp b/external/openglcts/modules/gles31/es31cShaderImageSizeTests.cpp index 70192bc..408aa3d 100644 --- a/external/openglcts/modules/gles31/es31cShaderImageSizeTests.cpp +++ b/external/openglcts/modules/gles31/es31cShaderImageSizeTests.cpp @@ -368,8 +368,8 @@ class ImageSizeMachine : public glcts::GLWrapper void SetupTransformFeedback(GLuint program) { - const char* const varying_name[] = { "count[0]", "count[1]", "count[2]", "count[3]" }; - glTransformFeedbackVaryings(program, 4, varying_name, GL_INTERLEAVED_ATTRIBS); + const char* const varying_name = "count"; + glTransformFeedbackVaryings(program, 1, &varying_name, GL_INTERLEAVED_ATTRIBS); } inline bool Equal(const ivec4& result, const ivec4& expected) diff --git a/external/openglcts/modules/gles31/es31cVertexAttribBindingTests.cpp b/external/openglcts/modules/gles31/es31cVertexAttribBindingTests.cpp index 35e0918..ab5515a 100644 --- a/external/openglcts/modules/gles31/es31cVertexAttribBindingTests.cpp +++ b/external/openglcts/modules/gles31/es31cVertexAttribBindingTests.cpp @@ -476,10 +476,8 @@ protected: } /* setup XFB */ { - const GLchar* const v[15] = { "attrib[0]", "attrib[1]", "attrib[2]", "attrib[3]", "attrib[4]", - "attrib[5]", "attrib[6]", "attrib[7]", "attrib[8]", "attrib[9]", - "attrib[10]", "attrib[11]", "attrib[12]", "attrib[13]", "attrib[14]" }; - glTransformFeedbackVaryings(m_po, 15, v, GL_INTERLEAVED_ATTRIBS); + const GLchar* const v = "attrib"; + glTransformFeedbackVaryings(m_po, 1, &v, GL_INTERLEAVED_ATTRIBS); } glLinkProgram(m_po); if (!CheckProgram(m_po)) @@ -1540,10 +1538,8 @@ protected: } /* setup XFB */ { - const GLchar* const v[15] = { "attribi[0]", "attribi[1]", "attribi[2]", "attribi[3]", "attribi[4]", - "attribi[5]", "attribi[6]", "attribi[7]", "attribui[0]", "attribui[1]", - "attribui[2]", "attribui[3]", "attribui[4]", "attribui[5]", "attribui[6]" }; - glTransformFeedbackVaryings(m_po, 15, v, GL_INTERLEAVED_ATTRIBS); + const GLchar* const v[2] = { "attribi", "attribui" }; + glTransformFeedbackVaryings(m_po, 2, v, GL_INTERLEAVED_ATTRIBS); } glLinkProgram(m_po); if (!CheckProgram(m_po)) diff --git a/modules/gles3/functional/es3fTransformFeedbackTests.cpp b/modules/gles3/functional/es3fTransformFeedbackTests.cpp index f50d4a4..0f22a1c 100644 --- a/modules/gles3/functional/es3fTransformFeedbackTests.cpp +++ b/modules/gles3/functional/es3fTransformFeedbackTests.cpp @@ -1388,9 +1388,10 @@ public: class RandomCase : public TransformFeedbackCase { public: - RandomCase (Context& context, const char* name, const char* desc, deUint32 bufferType, deUint32 primitiveType, deUint32 seed) + RandomCase (Context& context, const char* name, const char* desc, deUint32 bufferType, deUint32 primitiveType, deUint32 seed, bool elementCapture) : TransformFeedbackCase (context, name, desc, bufferType, primitiveType) , m_seed (seed) + , m_elementCapture (elementCapture) { } @@ -1498,7 +1499,7 @@ public: if (var.type.isArrayType()) { - const bool captureFull = rnd.getFloat() < captureFullArrayWeight; + const bool captureFull = m_elementCapture ? (rnd.getFloat() < captureFullArrayWeight) : true; if (captureFull) tfCandidates.push_back(var.name); @@ -1525,7 +1526,8 @@ public: } private: - deUint32 m_seed; + deUint32 m_seed; + bool m_elementCapture; }; } // TransformFeedback @@ -1793,7 +1795,33 @@ void TransformFeedbackTests::init (void) for (int ndx = 0; ndx < 10; ndx++) { deUint32 seed = deInt32Hash(bufferMode) ^ deInt32Hash(primitiveType) ^ deInt32Hash(ndx); - primitiveGroup->addChild(new RandomCase(m_context, de::toString(ndx+1).c_str(), "", bufferMode, primitiveType, seed)); + primitiveGroup->addChild(new RandomCase(m_context, de::toString(ndx+1).c_str(), "", bufferMode, primitiveType, seed, true)); + } + } + } + } + + // .random_full_array_capture + { + tcu::TestCaseGroup* randomNecGroup = new tcu::TestCaseGroup(m_testCtx, "random_full_array_capture", "Randomized transform feedback cases without array element capture"); + addChild(randomNecGroup); + + for (int bufferModeNdx = 0; bufferModeNdx < DE_LENGTH_OF_ARRAY(bufferModes); bufferModeNdx++) + { + tcu::TestCaseGroup* modeGroup = new tcu::TestCaseGroup(m_testCtx, bufferModes[bufferModeNdx].name, ""); + deUint32 bufferMode = bufferModes[bufferModeNdx].mode; + randomNecGroup->addChild(modeGroup); + + for (int primitiveTypeNdx = 0; primitiveTypeNdx < DE_LENGTH_OF_ARRAY(primitiveTypes); primitiveTypeNdx++) + { + tcu::TestCaseGroup* primitiveGroup = new tcu::TestCaseGroup(m_testCtx, primitiveTypes[primitiveTypeNdx].name, ""); + deUint32 primitiveType = primitiveTypes[primitiveTypeNdx].type; + modeGroup->addChild(primitiveGroup); + + for (int ndx = 0; ndx < 10; ndx++) + { + deUint32 seed = deInt32Hash(bufferMode) ^ deInt32Hash(primitiveType) ^ deInt32Hash(ndx); + primitiveGroup->addChild(new RandomCase(m_context, de::toString(ndx+1).c_str(), "", bufferMode, primitiveType, seed, false)); } } } -- 2.7.4