Modify/add GLES XFB tests without element capture
authorMika Väinölä <mika.vainola@siru.fi>
Tue, 29 Sep 2020 06:58:03 +0000 (09:58 +0300)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Fri, 9 Oct 2020 10:01:10 +0000 (06:01 -0400)
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

android/cts/master/gles3-master.txt
external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.5.x/gles3-master.txt
external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.6.x/gles3-master.txt
external/openglcts/data/mustpass/gles/aosp_mustpass/master/gles3-master.txt
external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.5.x/gles31-khr-master.txt
external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.6.x/gles31-khr-master.txt
external/openglcts/data/mustpass/gles/khronos_mustpass/master/gles31-khr-master.txt
external/openglcts/modules/gles31/es31cProgramInterfaceQueryTests.cpp
external/openglcts/modules/gles31/es31cShaderImageSizeTests.cpp
external/openglcts/modules/gles31/es31cVertexAttribBindingTests.cpp
modules/gles3/functional/es3fTransformFeedbackTests.cpp

index 6ca93b4..0820dbe 100644 (file)
@@ -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
index 420b0c3..5f55fe1 100644 (file)
@@ -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
index 420b0c3..5f55fe1 100644 (file)
@@ -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
index ff0a2e1..488144d 100644 (file)
@@ -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
index f12de09..67bc003 100644 (file)
@@ -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
index f12de09..67bc003 100644 (file)
@@ -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
index f12de09..67bc003 100644 (file)
@@ -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
index a493523..6d61011 100644 (file)
@@ -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<std::string, GLuint> 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<UniformBlockTypes>));
        addChild(new TestSubcase(m_context, "uniform-block-array", TestSubcase::Create<UniformBlockArray>));
        addChild(new TestSubcase(m_context, "transform-feedback-types", TestSubcase::Create<TransformFeedbackTypes>));
+       addChild(new TestSubcase(m_context, "transform-feedback-types-full-array-capture",
+                                                        TestSubcase::Create<TransformFeedbackTypesFullArrayCapture>));
        addChild(new TestSubcase(m_context, "atomic-counters", TestSubcase::Create<AtomicCounterSimple>));
        addChild(
                new TestSubcase(m_context, "atomic-counters-one-buffer", TestSubcase::Create<AtomicCounterSimpleOneBuffer>));
index 70192bc..408aa3d 100644 (file)
@@ -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)
index 35e0918..ab5515a 100644 (file)
@@ -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))
index f50d4a4..0f22a1c 100644 (file)
@@ -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));
                                }
                        }
                }