From a0cfd09544ed9cba4abb4d71ede7ba224baea0a3 Mon Sep 17 00:00:00 2001 From: Boris Zanin Date: Mon, 17 Sep 2018 15:11:46 +0200 Subject: [PATCH] Add Transform Feedback tests Add tests: * dEQP-VK.transform_feedback.simple.basic* * dEQP-VK.transform_feedback.simple.resume* * dEQP-VK.transform_feedback.simple.streams_* * dEQP-VK.transform_feedback.simple.streams_pointsize_* * dEQP-VK.transform_feedback.simple.streams_clipdistance_* * dEQP-VK.transform_feedback.simple.streams_culldistance_* * dEQP-VK.transform_feedback.simple.multistreams_* * dEQP-VK.transform_feedback.simple.draw_indirect_* * dEQP-VK.transform_feedback.simple.backward_dependency * dEQP-VK.transform_feedback.simple.query_* * dEQP-VK.transform_feedback.fuzz.* Components: vulkan VK-GL-CTS issue: 1350 Change-Id: If0b7a47f95f554dd43db77a6d005ebeb44c27294 --- AndroidGen.mk | 6 + android/cts/master/vk-master.txt | 2243 ++++++++++++++++++++ .../vulkancts/framework/vulkan/vkBasicTypes.inl | 43 +- .../framework/vulkan/vkConcreteDeviceInterface.inl | 6 + .../framework/vulkan/vkDeviceDriverImpl.inl | 30 + .../framework/vulkan/vkDeviceFunctionPointers.inl | 6 + .../framework/vulkan/vkExtensionFunctions.inl | 10 + .../framework/vulkan/vkFunctionPointerTypes.inl | 6 + .../framework/vulkan/vkGetStructureTypeImpl.inl | 15 + .../vulkan/vkInitDeviceFunctionPointers.inl | 6 + .../framework/vulkan/vkNullDriverImpl.inl | 62 + external/vulkancts/framework/vulkan/vkObjUtil.cpp | 18 +- .../vulkancts/framework/vulkan/vkShaderToSpirV.cpp | 2 +- external/vulkancts/framework/vulkan/vkStrUtil.inl | 4 + .../vulkancts/framework/vulkan/vkStrUtilImpl.inl | 88 +- .../vulkancts/framework/vulkan/vkStructTypes.inl | 32 + .../framework/vulkan/vkVirtualDeviceInterface.inl | 6 + external/vulkancts/framework/vulkan/vkVulkan_c.inl | 99 + external/vulkancts/modules/vulkan/CMakeLists.txt | 3 + .../vulkan/transform_feedback/CMakeLists.txt | 22 + .../vktTransformFeedbackFuzzLayoutCase.cpp | 2076 ++++++++++++++++++ .../vktTransformFeedbackFuzzLayoutCase.hpp | 353 +++ .../vktTransformFeedbackFuzzLayoutTests.cpp | 784 +++++++ .../vktTransformFeedbackFuzzLayoutTests.hpp | 41 + .../vktTransformFeedbackRandomLayoutCase.cpp | 263 +++ .../vktTransformFeedbackRandomLayoutCase.hpp | 91 + .../vktTransformFeedbackSimpleTests.cpp | 1942 +++++++++++++++++ .../vktTransformFeedbackSimpleTests.hpp | 39 + .../vktTransformFeedbackTests.cpp | 47 + .../vktTransformFeedbackTests.hpp | 39 + external/vulkancts/modules/vulkan/vktTestCase.cpp | 12 + external/vulkancts/modules/vulkan/vktTestCase.hpp | 2 + .../vulkancts/modules/vulkan/vktTestPackage.cpp | 2 + .../mustpass/1.1.5/vk-default-no-waivers.txt | 2243 ++++++++++++++++++++ external/vulkancts/mustpass/1.1.5/vk-default.txt | 2243 ++++++++++++++++++++ external/vulkancts/scripts/src/vulkan.h.in | 99 + framework/opengl/gluShaderUtil.hpp | 4 +- 37 files changed, 12945 insertions(+), 42 deletions(-) create mode 100644 external/vulkancts/modules/vulkan/transform_feedback/CMakeLists.txt create mode 100644 external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackFuzzLayoutCase.cpp create mode 100644 external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackFuzzLayoutCase.hpp create mode 100644 external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackFuzzLayoutTests.cpp create mode 100644 external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackFuzzLayoutTests.hpp create mode 100644 external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackRandomLayoutCase.cpp create mode 100644 external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackRandomLayoutCase.hpp create mode 100644 external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackSimpleTests.cpp create mode 100644 external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackSimpleTests.hpp create mode 100644 external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackTests.cpp create mode 100644 external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackTests.hpp diff --git a/AndroidGen.mk b/AndroidGen.mk index 1045902..0dcd1c0 100644 --- a/AndroidGen.mk +++ b/AndroidGen.mk @@ -367,6 +367,11 @@ LOCAL_SRC_FILES := \ external/vulkancts/modules/vulkan/texture/vktTextureSwizzleTests.cpp \ external/vulkancts/modules/vulkan/texture/vktTextureTestUtil.cpp \ external/vulkancts/modules/vulkan/texture/vktTextureTests.cpp \ + external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackFuzzLayoutCase.cpp \ + external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackFuzzLayoutTests.cpp \ + external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackRandomLayoutCase.cpp \ + external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackSimpleTests.cpp \ + external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackTests.cpp \ external/vulkancts/modules/vulkan/ubo/vktRandomUniformBlockCase.cpp \ external/vulkancts/modules/vulkan/ubo/vktUniformBlockCase.cpp \ external/vulkancts/modules/vulkan/ubo/vktUniformBlockTests.cpp \ @@ -1111,6 +1116,7 @@ LOCAL_C_INCLUDES := \ $(deqp_dir)/external/vulkancts/modules/vulkan/synchronization \ $(deqp_dir)/external/vulkancts/modules/vulkan/tessellation \ $(deqp_dir)/external/vulkancts/modules/vulkan/texture \ + $(deqp_dir)/external/vulkancts/modules/vulkan/transform_feedback \ $(deqp_dir)/external/vulkancts/modules/vulkan/ubo \ $(deqp_dir)/external/vulkancts/modules/vulkan/util \ $(deqp_dir)/external/vulkancts/modules/vulkan/wsi \ diff --git a/android/cts/master/vk-master.txt b/android/cts/master/vk-master.txt index 3a38b29..22e8abf 100755 --- a/android/cts/master/vk-master.txt +++ b/android/cts/master/vk-master.txt @@ -415480,3 +415480,2246 @@ dEQP-VK.imageless_framebuffer.depth_stencil dEQP-VK.imageless_framebuffer.color_resolve dEQP-VK.imageless_framebuffer.depth_stencil_resolve dEQP-VK.imageless_framebuffer.multisubpass +dEQP-VK.transform_feedback.simple.basic_1_256 +dEQP-VK.transform_feedback.simple.basic_1_512 +dEQP-VK.transform_feedback.simple.basic_1_131072 +dEQP-VK.transform_feedback.simple.basic_2_256 +dEQP-VK.transform_feedback.simple.basic_2_512 +dEQP-VK.transform_feedback.simple.basic_2_131072 +dEQP-VK.transform_feedback.simple.basic_4_256 +dEQP-VK.transform_feedback.simple.basic_4_512 +dEQP-VK.transform_feedback.simple.basic_4_131072 +dEQP-VK.transform_feedback.simple.basic_8_256 +dEQP-VK.transform_feedback.simple.basic_8_512 +dEQP-VK.transform_feedback.simple.basic_8_131072 +dEQP-VK.transform_feedback.simple.resume_1_256 +dEQP-VK.transform_feedback.simple.resume_1_512 +dEQP-VK.transform_feedback.simple.resume_1_131072 +dEQP-VK.transform_feedback.simple.resume_2_256 +dEQP-VK.transform_feedback.simple.resume_2_512 +dEQP-VK.transform_feedback.simple.resume_2_131072 +dEQP-VK.transform_feedback.simple.resume_4_256 +dEQP-VK.transform_feedback.simple.resume_4_512 +dEQP-VK.transform_feedback.simple.resume_4_131072 +dEQP-VK.transform_feedback.simple.resume_8_256 +dEQP-VK.transform_feedback.simple.resume_8_512 +dEQP-VK.transform_feedback.simple.resume_8_131072 +dEQP-VK.transform_feedback.simple.draw_indirect_16 +dEQP-VK.transform_feedback.simple.draw_indirect_244 +dEQP-VK.transform_feedback.simple.draw_indirect_508 +dEQP-VK.transform_feedback.simple.draw_indirect_1004 +dEQP-VK.transform_feedback.simple.draw_indirect_2036 +dEQP-VK.transform_feedback.simple.backward_dependency +dEQP-VK.transform_feedback.simple.query_0_4 +dEQP-VK.transform_feedback.simple.query_0_61 +dEQP-VK.transform_feedback.simple.query_0_127 +dEQP-VK.transform_feedback.simple.query_0_251 +dEQP-VK.transform_feedback.simple.query_0_509 +dEQP-VK.transform_feedback.simple.query_1_4 +dEQP-VK.transform_feedback.simple.query_1_61 +dEQP-VK.transform_feedback.simple.query_1_127 +dEQP-VK.transform_feedback.simple.query_1_251 +dEQP-VK.transform_feedback.simple.query_1_509 +dEQP-VK.transform_feedback.simple.query_3_4 +dEQP-VK.transform_feedback.simple.query_3_61 +dEQP-VK.transform_feedback.simple.query_3_127 +dEQP-VK.transform_feedback.simple.query_3_251 +dEQP-VK.transform_feedback.simple.query_3_509 +dEQP-VK.transform_feedback.simple.query_6_4 +dEQP-VK.transform_feedback.simple.query_6_61 +dEQP-VK.transform_feedback.simple.query_6_127 +dEQP-VK.transform_feedback.simple.query_6_251 +dEQP-VK.transform_feedback.simple.query_6_509 +dEQP-VK.transform_feedback.simple.query_14_4 +dEQP-VK.transform_feedback.simple.query_14_61 +dEQP-VK.transform_feedback.simple.query_14_127 +dEQP-VK.transform_feedback.simple.query_14_251 +dEQP-VK.transform_feedback.simple.query_14_509 +dEQP-VK.transform_feedback.simple.streams_1 +dEQP-VK.transform_feedback.simple.streams_3 +dEQP-VK.transform_feedback.simple.streams_6 +dEQP-VK.transform_feedback.simple.streams_14 +dEQP-VK.transform_feedback.simple.streams_pointsize_1 +dEQP-VK.transform_feedback.simple.streams_pointsize_3 +dEQP-VK.transform_feedback.simple.streams_pointsize_6 +dEQP-VK.transform_feedback.simple.streams_pointsize_14 +dEQP-VK.transform_feedback.simple.streams_clipdistance_1 +dEQP-VK.transform_feedback.simple.streams_clipdistance_3 +dEQP-VK.transform_feedback.simple.streams_clipdistance_6 +dEQP-VK.transform_feedback.simple.streams_clipdistance_14 +dEQP-VK.transform_feedback.simple.streams_culldistance_1 +dEQP-VK.transform_feedback.simple.streams_culldistance_3 +dEQP-VK.transform_feedback.simple.streams_culldistance_6 +dEQP-VK.transform_feedback.simple.streams_culldistance_14 +dEQP-VK.transform_feedback.simple.multistreams_1 +dEQP-VK.transform_feedback.simple.multistreams_3 +dEQP-VK.transform_feedback.simple.multistreams_6 +dEQP-VK.transform_feedback.simple.multistreams_14 +dEQP-VK.transform_feedback.fuzz.2_level_array.float.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.float.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.vec2.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.vec2.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.vec3.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.vec3.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.vec4.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.vec4.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.int.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.int.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.ivec2.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.ivec2.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.ivec3.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.ivec3.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.ivec4.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.ivec4.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.uint.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.uint.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.uvec2.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.uvec2.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.uvec3.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.uvec3.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.uvec4.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.uvec4.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.mat2.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.mat2.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.mat3.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.mat3.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.mat4.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.mat4.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.mat2x3.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.mat2x3.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.mat2x4.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.mat2x4.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.mat3x2.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.mat3x2.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.mat3x4.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.mat3x4.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.mat4x2.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.mat4x2.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.mat4x3.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.mat4x3.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.double.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.double.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dvec2.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dvec2.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dvec3.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dvec3.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dvec4.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dvec4.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat2.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat2.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat2x3.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat2x3.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat2x4.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat2x4.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat3x2.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat3x2.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat3.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat3.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat3x4.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat3x4.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat4x2.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat4x2.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat4x3.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat4x3.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat4.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat4.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.float.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.float.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.vec2.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.vec2.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.vec3.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.vec3.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.vec4.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.vec4.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.int.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.int.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.ivec2.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.ivec2.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.ivec3.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.ivec3.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.ivec4.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.ivec4.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.uint.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.uint.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.uvec2.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.uvec2.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.uvec3.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.uvec3.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.uvec4.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.uvec4.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.mat2.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.mat2.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.mat3.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.mat3.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.mat4.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.mat4.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.mat2x3.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.mat2x3.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.mat2x4.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.mat2x4.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.mat3x2.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.mat3x2.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.mat3x4.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.mat3x4.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.mat4x2.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.mat4x2.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.mat4x3.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.mat4x3.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.double.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.double.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dvec2.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dvec2.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dvec3.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dvec3.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dvec4.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dvec4.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat2.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat2.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat2x3.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat2x3.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat2x4.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat2x4.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat3x2.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat3x2.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat3.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat3.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat3x4.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat3x4.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat4x2.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat4x2.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat4x3.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat4x3.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat4.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat4.geometry +dEQP-VK.transform_feedback.fuzz.2_level_struct_array.std_vertex +dEQP-VK.transform_feedback.fuzz.2_level_struct_array.std_geometry +dEQP-VK.transform_feedback.fuzz.2_level_struct_array.instance_array_vertex +dEQP-VK.transform_feedback.fuzz.2_level_struct_array.instance_array_geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.double.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.double.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dvec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dvec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dvec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dvec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dvec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dvec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat2x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat2x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat2x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat2x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat3x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat3x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat3x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat3x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat4x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat4x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat4x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat4x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.float.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.float.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.vec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.vec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.vec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.vec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.vec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.vec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.int.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.int.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.ivec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.ivec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.ivec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.ivec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.ivec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.ivec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.uint.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.uint.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.uvec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.uvec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.uvec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.uvec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.uvec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.uvec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat2x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat2x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat2x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat2x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat3x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat3x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat3x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat3x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat4x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat4x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat4x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat4x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.float.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.float.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.vec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.vec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.vec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.vec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.vec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.vec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.int.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.int.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.ivec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.ivec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.ivec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.ivec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.ivec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.ivec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.uint.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.uint.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.uvec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.uvec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.uvec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.uvec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.uvec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.uvec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat2x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat2x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat2x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat2x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat3x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat3x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat3x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat3x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat4x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat4x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat4x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat4x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.float.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.float.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.vec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.vec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.vec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.vec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.vec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.vec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.int.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.int.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.ivec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.ivec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.ivec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.ivec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.ivec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.ivec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.uint.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.uint.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.uvec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.uvec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.uvec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.uvec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.uvec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.uvec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat2x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat2x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat2x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat2x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat3x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat3x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat3x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat3x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat4x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat4x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat4x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat4x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.float.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.float.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.vec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.vec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.vec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.vec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.vec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.vec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.int.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.int.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.ivec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.ivec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.ivec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.ivec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.ivec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.ivec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.uint.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.uint.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.uvec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.uvec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.uvec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.uvec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.uvec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.uvec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat2x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat2x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat2x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat2x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat3x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat3x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat3x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat3x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat4x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat4x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat4x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat4x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.double.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.double.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dvec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dvec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dvec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dvec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dvec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dvec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat2x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat2x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat2x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat2x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat3x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat3x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat3x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat3x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat4x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat4x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat4x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat4x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat4.geometry +dEQP-VK.transform_feedback.fuzz.single_struct.std_vertex +dEQP-VK.transform_feedback.fuzz.single_struct.std_geometry +dEQP-VK.transform_feedback.fuzz.single_struct.instance_array_vertex +dEQP-VK.transform_feedback.fuzz.single_struct.instance_array_geometry +dEQP-VK.transform_feedback.fuzz.single_struct_array.std_vertex +dEQP-VK.transform_feedback.fuzz.single_struct_array.std_geometry +dEQP-VK.transform_feedback.fuzz.single_struct_array.instance_array_vertex +dEQP-VK.transform_feedback.fuzz.single_struct_array.instance_array_geometry +dEQP-VK.transform_feedback.fuzz.single_nested_struct.std_vertex +dEQP-VK.transform_feedback.fuzz.single_nested_struct.std_geometry +dEQP-VK.transform_feedback.fuzz.single_nested_struct.instance_array_vertex +dEQP-VK.transform_feedback.fuzz.single_nested_struct.instance_array_geometry +dEQP-VK.transform_feedback.fuzz.single_nested_struct_array.std_vertex +dEQP-VK.transform_feedback.fuzz.single_nested_struct_array.std_geometry +dEQP-VK.transform_feedback.fuzz.single_nested_struct_array.instance_array_vertex +dEQP-VK.transform_feedback.fuzz.single_nested_struct_array.instance_array_geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.float.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.float.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.vec2.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.vec2.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.vec3.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.vec3.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.vec4.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.vec4.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.int.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.int.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.ivec2.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.ivec2.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.ivec3.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.ivec3.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.ivec4.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.ivec4.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.uint.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.uint.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.uvec2.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.uvec2.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.uvec3.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.uvec3.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.uvec4.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.uvec4.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat2.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat2.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat3.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat3.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat4.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat4.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat2x3.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat2x3.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat2x4.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat2x4.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat3x2.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat3x2.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat3x4.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat3x4.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat4x2.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat4x2.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat4x3.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat4x3.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.double.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.double.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dvec2.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dvec2.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dvec3.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dvec3.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dvec4.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dvec4.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat2.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat2.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat2x3.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat2x3.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat2x4.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat2x4.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat3x2.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat3x2.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat3.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat3.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat3x4.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat3x4.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat4x2.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat4x2.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat4x3.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat4x3.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat4.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat4.geometry +dEQP-VK.transform_feedback.fuzz.multi_basic_types.std_vertex +dEQP-VK.transform_feedback.fuzz.multi_basic_types.std_geometry +dEQP-VK.transform_feedback.fuzz.multi_basic_types.instance_array_vertex +dEQP-VK.transform_feedback.fuzz.multi_basic_types.instance_array_geometry +dEQP-VK.transform_feedback.fuzz.multi_nested_struct.std_vertex +dEQP-VK.transform_feedback.fuzz.multi_nested_struct.std_geometry +dEQP-VK.transform_feedback.fuzz.multi_nested_struct.instance_array_vertex +dEQP-VK.transform_feedback.fuzz.multi_nested_struct.instance_array_geometry +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers000_vertex +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers000_geometry +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers000_instance_array_vertex +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers000_instance_array_geometry +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers010_vertex +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers010_geometry +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers010_instance_array_vertex +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers010_instance_array_geometry +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers100_vertex +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers100_geometry +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers100_instance_array_vertex +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers100_instance_array_geometry +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers110_vertex +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers110_geometry +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers110_instance_array_vertex +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers110_instance_array_geometry +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.50 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.51 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.52 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.53 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.54 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.55 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.56 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.57 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.58 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.59 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.60 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.61 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.62 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.63 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.64 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.65 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.66 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.67 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.68 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.69 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.70 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.71 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.72 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.73 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.74 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.75 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.76 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.77 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.78 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.79 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.80 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.81 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.82 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.83 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.84 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.85 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.86 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.87 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.88 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.89 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.90 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.91 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.92 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.93 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.94 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.95 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.96 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.97 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.98 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.99 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.50 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.51 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.52 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.53 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.54 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.55 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.56 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.57 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.58 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.59 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.60 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.61 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.62 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.63 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.64 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.65 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.66 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.67 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.68 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.69 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.70 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.71 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.72 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.73 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.74 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.75 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.76 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.77 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.78 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.79 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.80 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.81 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.82 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.83 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.84 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.85 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.86 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.87 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.88 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.89 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.90 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.91 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.92 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.93 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.94 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.95 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.96 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.97 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.98 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.99 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.50 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.51 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.52 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.53 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.54 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.55 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.56 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.57 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.58 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.59 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.60 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.61 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.62 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.63 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.64 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.65 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.66 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.67 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.68 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.69 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.70 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.71 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.72 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.73 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.74 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.75 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.76 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.77 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.78 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.79 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.80 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.81 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.82 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.83 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.84 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.85 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.86 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.87 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.88 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.89 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.90 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.91 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.92 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.93 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.94 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.95 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.96 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.97 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.98 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.99 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.50 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.51 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.52 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.53 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.54 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.55 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.56 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.57 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.58 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.59 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.60 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.61 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.62 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.63 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.64 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.65 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.66 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.67 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.68 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.69 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.70 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.71 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.72 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.73 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.74 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.75 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.76 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.77 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.78 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.79 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.80 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.81 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.82 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.83 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.84 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.85 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.86 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.87 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.88 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.89 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.90 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.91 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.92 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.93 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.94 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.95 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.96 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.97 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.98 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.99 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.50 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.51 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.52 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.53 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.54 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.55 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.56 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.57 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.58 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.59 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.60 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.61 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.62 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.63 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.64 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.65 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.66 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.67 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.68 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.69 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.70 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.71 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.72 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.73 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.74 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.75 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.76 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.77 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.78 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.79 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.80 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.81 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.82 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.83 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.84 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.85 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.86 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.87 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.88 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.89 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.90 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.91 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.92 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.93 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.94 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.95 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.96 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.97 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.98 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.99 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.50 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.51 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.52 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.53 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.54 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.55 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.56 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.57 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.58 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.59 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.60 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.61 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.62 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.63 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.64 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.65 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.66 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.67 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.68 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.69 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.70 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.71 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.72 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.73 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.74 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.75 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.76 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.77 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.78 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.79 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.80 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.81 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.82 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.83 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.84 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.85 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.86 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.87 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.88 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.89 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.90 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.91 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.92 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.93 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.94 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.95 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.96 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.97 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.98 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.99 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.50 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.51 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.52 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.53 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.54 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.55 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.56 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.57 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.58 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.59 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.60 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.61 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.62 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.63 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.64 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.65 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.66 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.67 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.68 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.69 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.70 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.71 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.72 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.73 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.74 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.75 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.76 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.77 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.78 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.79 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.80 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.81 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.82 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.83 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.84 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.85 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.86 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.87 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.88 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.89 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.90 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.91 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.92 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.93 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.94 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.95 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.96 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.97 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.98 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.99 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.50 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.51 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.52 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.53 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.54 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.55 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.56 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.57 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.58 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.59 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.60 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.61 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.62 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.63 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.64 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.65 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.66 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.67 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.68 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.69 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.70 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.71 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.72 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.73 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.74 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.75 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.76 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.77 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.78 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.79 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.80 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.81 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.82 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.83 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.84 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.85 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.86 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.87 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.88 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.89 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.90 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.91 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.92 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.93 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.94 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.95 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.96 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.97 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.98 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.99 diff --git a/external/vulkancts/framework/vulkan/vkBasicTypes.inl b/external/vulkancts/framework/vulkan/vkBasicTypes.inl index 49e3a97..675e66e 100644 --- a/external/vulkancts/framework/vulkan/vkBasicTypes.inl +++ b/external/vulkancts/framework/vulkan/vkBasicTypes.inl @@ -237,6 +237,9 @@ enum VkStructureType VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000, VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001, VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001, + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002, VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000, VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000, VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001, @@ -653,10 +656,11 @@ enum VkPhysicalDeviceType enum VkQueryType { - VK_QUERY_TYPE_OCCLUSION = 0, - VK_QUERY_TYPE_PIPELINE_STATISTICS = 1, - VK_QUERY_TYPE_TIMESTAMP = 2, - VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000, + VK_QUERY_TYPE_OCCLUSION = 0, + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1, + VK_QUERY_TYPE_TIMESTAMP = 2, + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004, + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000, }; enum VkSharingMode @@ -1473,6 +1477,7 @@ enum VkPipelineStageFlagBits VK_PIPELINE_STAGE_HOST_BIT = 0x00004000, VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000, + VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 0x01000000, VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX = 0x00020000, VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000, }; @@ -1547,17 +1552,19 @@ typedef deUint32 VkBufferCreateFlags; enum VkBufferUsageFlagBits { - VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001, - VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002, - VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004, - VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008, - VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010, - VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020, - VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040, - VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080, - VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100, - VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00000200, - VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 0x00020000, + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001, + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002, + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004, + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008, + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010, + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020, + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040, + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080, + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100, + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 0x00000800, + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 0x00001000, + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00000200, + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 0x00020000, }; typedef deUint32 VkBufferUsageFlags; @@ -1654,6 +1661,9 @@ enum VkAccessFlagBits VK_ACCESS_HOST_WRITE_BIT = 0x00004000, VK_ACCESS_MEMORY_READ_BIT = 0x00008000, VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000, + VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0x02000000, + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0x04000000, + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 0x08000000, VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000, VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX = 0x00020000, VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = 0x00040000, @@ -2008,6 +2018,8 @@ typedef deUint32 VkWin32SurfaceCreateFlagsKHR; typedef deUint32 VkAcquireProfilingLockFlagsKHR; +typedef deUint32 VkPipelineRasterizationStateStreamCreateFlagsEXT; + typedef deUint32 VkViSurfaceCreateFlagsNN; typedef deUint32 VkPipelineViewportSwizzleStateCreateFlagsNV; @@ -2296,6 +2308,7 @@ VK_DEFINE_PLATFORM_TYPE(RROutput, void*); #define VK_EXT_DEBUG_MARKER_SPEC_VERSION 4 #define VK_AMD_GCN_SHADER_SPEC_VERSION 1 #define VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION 1 +#define VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION 1 #define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 1 #define VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION 1 #define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION 1 diff --git a/external/vulkancts/framework/vulkan/vkConcreteDeviceInterface.inl b/external/vulkancts/framework/vulkan/vkConcreteDeviceInterface.inl index 456583d..37d38b6 100644 --- a/external/vulkancts/framework/vulkan/vkConcreteDeviceInterface.inl +++ b/external/vulkancts/framework/vulkan/vkConcreteDeviceInterface.inl @@ -173,6 +173,12 @@ virtual VkResult debugMarkerSetObjectNameEXT (VkDevice device, const VkDeb virtual void cmdDebugMarkerBeginEXT (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) const; virtual void cmdDebugMarkerEndEXT (VkCommandBuffer commandBuffer) const; virtual void cmdDebugMarkerInsertEXT (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) const; +virtual void cmdBindTransformFeedbackBuffersEXT (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes) const; +virtual void cmdBeginTransformFeedbackEXT (VkCommandBuffer commandBuffer, deUint32 firstCounterBuffer, deUint32 counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets) const; +virtual void cmdEndTransformFeedbackEXT (VkCommandBuffer commandBuffer, deUint32 firstCounterBuffer, deUint32 counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets) const; +virtual void cmdBeginQueryIndexedEXT (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags, deUint32 index) const; +virtual void cmdEndQueryIndexedEXT (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, deUint32 index) const; +virtual void cmdDrawIndirectByteCountEXT (VkCommandBuffer commandBuffer, deUint32 instanceCount, deUint32 firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, deUint32 counterOffset, deUint32 vertexStride) const; virtual void cmdDrawIndirectCountAMD (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const; virtual void cmdDrawIndexedIndirectCountAMD (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const; virtual void cmdDrawIndirectCountKHR (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const; diff --git a/external/vulkancts/framework/vulkan/vkDeviceDriverImpl.inl b/external/vulkancts/framework/vulkan/vkDeviceDriverImpl.inl index 2bf85b8..645b375 100644 --- a/external/vulkancts/framework/vulkan/vkDeviceDriverImpl.inl +++ b/external/vulkancts/framework/vulkan/vkDeviceDriverImpl.inl @@ -862,6 +862,36 @@ void DeviceDriver::cmdDebugMarkerInsertEXT (VkCommandBuffer commandBuffer, const m_vk.cmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo); } +void DeviceDriver::cmdBindTransformFeedbackBuffersEXT (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes) const +{ + m_vk.cmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes); +} + +void DeviceDriver::cmdBeginTransformFeedbackEXT (VkCommandBuffer commandBuffer, deUint32 firstCounterBuffer, deUint32 counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets) const +{ + m_vk.cmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets); +} + +void DeviceDriver::cmdEndTransformFeedbackEXT (VkCommandBuffer commandBuffer, deUint32 firstCounterBuffer, deUint32 counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets) const +{ + m_vk.cmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets); +} + +void DeviceDriver::cmdBeginQueryIndexedEXT (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags, deUint32 index) const +{ + m_vk.cmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index); +} + +void DeviceDriver::cmdEndQueryIndexedEXT (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, deUint32 index) const +{ + m_vk.cmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index); +} + +void DeviceDriver::cmdDrawIndirectByteCountEXT (VkCommandBuffer commandBuffer, deUint32 instanceCount, deUint32 firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, deUint32 counterOffset, deUint32 vertexStride) const +{ + m_vk.cmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride); +} + void DeviceDriver::cmdDrawIndirectCountAMD (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const { m_vk.cmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride); diff --git a/external/vulkancts/framework/vulkan/vkDeviceFunctionPointers.inl b/external/vulkancts/framework/vulkan/vkDeviceFunctionPointers.inl index 226f175..4519f6f 100644 --- a/external/vulkancts/framework/vulkan/vkDeviceFunctionPointers.inl +++ b/external/vulkancts/framework/vulkan/vkDeviceFunctionPointers.inl @@ -173,6 +173,12 @@ DebugMarkerSetObjectNameEXTFunc debugMarkerSetObjectNameEXT; CmdDebugMarkerBeginEXTFunc cmdDebugMarkerBeginEXT; CmdDebugMarkerEndEXTFunc cmdDebugMarkerEndEXT; CmdDebugMarkerInsertEXTFunc cmdDebugMarkerInsertEXT; +CmdBindTransformFeedbackBuffersEXTFunc cmdBindTransformFeedbackBuffersEXT; +CmdBeginTransformFeedbackEXTFunc cmdBeginTransformFeedbackEXT; +CmdEndTransformFeedbackEXTFunc cmdEndTransformFeedbackEXT; +CmdBeginQueryIndexedEXTFunc cmdBeginQueryIndexedEXT; +CmdEndQueryIndexedEXTFunc cmdEndQueryIndexedEXT; +CmdDrawIndirectByteCountEXTFunc cmdDrawIndirectByteCountEXT; CmdDrawIndirectCountAMDFunc cmdDrawIndirectCountAMD; CmdDrawIndexedIndirectCountAMDFunc cmdDrawIndexedIndirectCountAMD; CmdDrawIndirectCountKHRFunc cmdDrawIndirectCountKHR; diff --git a/external/vulkancts/framework/vulkan/vkExtensionFunctions.inl b/external/vulkancts/framework/vulkan/vkExtensionFunctions.inl index 0f5143f..cee99b5 100644 --- a/external/vulkancts/framework/vulkan/vkExtensionFunctions.inl +++ b/external/vulkancts/framework/vulkan/vkExtensionFunctions.inl @@ -223,6 +223,15 @@ void getDeviceExtensionFunctions (::std::string extName, ::std::vector VkStructureType getStructureType VkStructureType getStructureType (void) +{ + return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT; +} + +template<> VkStructureType getStructureType (void) +{ + return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT; +} + +template<> VkStructureType getStructureType (void) +{ + return VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT; +} + template<> VkStructureType getStructureType (void) { return VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD; diff --git a/external/vulkancts/framework/vulkan/vkInitDeviceFunctionPointers.inl b/external/vulkancts/framework/vulkan/vkInitDeviceFunctionPointers.inl index 2b665be..a543c23 100644 --- a/external/vulkancts/framework/vulkan/vkInitDeviceFunctionPointers.inl +++ b/external/vulkancts/framework/vulkan/vkInitDeviceFunctionPointers.inl @@ -203,6 +203,12 @@ m_vk.debugMarkerSetObjectNameEXT = (DebugMarkerSetObjectNameEXTFunc) GET_ m_vk.cmdDebugMarkerBeginEXT = (CmdDebugMarkerBeginEXTFunc) GET_PROC_ADDR("vkCmdDebugMarkerBeginEXT"); m_vk.cmdDebugMarkerEndEXT = (CmdDebugMarkerEndEXTFunc) GET_PROC_ADDR("vkCmdDebugMarkerEndEXT"); m_vk.cmdDebugMarkerInsertEXT = (CmdDebugMarkerInsertEXTFunc) GET_PROC_ADDR("vkCmdDebugMarkerInsertEXT"); +m_vk.cmdBindTransformFeedbackBuffersEXT = (CmdBindTransformFeedbackBuffersEXTFunc) GET_PROC_ADDR("vkCmdBindTransformFeedbackBuffersEXT"); +m_vk.cmdBeginTransformFeedbackEXT = (CmdBeginTransformFeedbackEXTFunc) GET_PROC_ADDR("vkCmdBeginTransformFeedbackEXT"); +m_vk.cmdEndTransformFeedbackEXT = (CmdEndTransformFeedbackEXTFunc) GET_PROC_ADDR("vkCmdEndTransformFeedbackEXT"); +m_vk.cmdBeginQueryIndexedEXT = (CmdBeginQueryIndexedEXTFunc) GET_PROC_ADDR("vkCmdBeginQueryIndexedEXT"); +m_vk.cmdEndQueryIndexedEXT = (CmdEndQueryIndexedEXTFunc) GET_PROC_ADDR("vkCmdEndQueryIndexedEXT"); +m_vk.cmdDrawIndirectByteCountEXT = (CmdDrawIndirectByteCountEXTFunc) GET_PROC_ADDR("vkCmdDrawIndirectByteCountEXT"); m_vk.cmdDrawIndirectCountAMD = (CmdDrawIndirectCountAMDFunc) GET_PROC_ADDR("vkCmdDrawIndirectCountAMD"); m_vk.cmdDrawIndexedIndirectCountAMD = (CmdDrawIndexedIndirectCountAMDFunc) GET_PROC_ADDR("vkCmdDrawIndexedIndirectCountAMD"); m_vk.cmdDrawIndirectCountKHR = (CmdDrawIndirectCountKHRFunc) GET_PROC_ADDR("vkCmdDrawIndirectCountKHR"); diff --git a/external/vulkancts/framework/vulkan/vkNullDriverImpl.inl b/external/vulkancts/framework/vulkan/vkNullDriverImpl.inl index a1d55cc..896a9ce 100644 --- a/external/vulkancts/framework/vulkan/vkNullDriverImpl.inl +++ b/external/vulkancts/framework/vulkan/vkNullDriverImpl.inl @@ -1628,6 +1628,62 @@ VKAPI_ATTR void VKAPI_CALL cmdDebugMarkerInsertEXT (VkCommandBuffer commandBuffe DE_UNREF(pMarkerInfo); } +VKAPI_ATTR void VKAPI_CALL cmdBindTransformFeedbackBuffersEXT (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes) +{ + DE_UNREF(commandBuffer); + DE_UNREF(firstBinding); + DE_UNREF(bindingCount); + DE_UNREF(pBuffers); + DE_UNREF(pOffsets); + DE_UNREF(pSizes); +} + +VKAPI_ATTR void VKAPI_CALL cmdBeginTransformFeedbackEXT (VkCommandBuffer commandBuffer, deUint32 firstCounterBuffer, deUint32 counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets) +{ + DE_UNREF(commandBuffer); + DE_UNREF(firstCounterBuffer); + DE_UNREF(counterBufferCount); + DE_UNREF(pCounterBuffers); + DE_UNREF(pCounterBufferOffsets); +} + +VKAPI_ATTR void VKAPI_CALL cmdEndTransformFeedbackEXT (VkCommandBuffer commandBuffer, deUint32 firstCounterBuffer, deUint32 counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets) +{ + DE_UNREF(commandBuffer); + DE_UNREF(firstCounterBuffer); + DE_UNREF(counterBufferCount); + DE_UNREF(pCounterBuffers); + DE_UNREF(pCounterBufferOffsets); +} + +VKAPI_ATTR void VKAPI_CALL cmdBeginQueryIndexedEXT (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags, deUint32 index) +{ + DE_UNREF(commandBuffer); + DE_UNREF(queryPool); + DE_UNREF(query); + DE_UNREF(flags); + DE_UNREF(index); +} + +VKAPI_ATTR void VKAPI_CALL cmdEndQueryIndexedEXT (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, deUint32 index) +{ + DE_UNREF(commandBuffer); + DE_UNREF(queryPool); + DE_UNREF(query); + DE_UNREF(index); +} + +VKAPI_ATTR void VKAPI_CALL cmdDrawIndirectByteCountEXT (VkCommandBuffer commandBuffer, deUint32 instanceCount, deUint32 firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, deUint32 counterOffset, deUint32 vertexStride) +{ + DE_UNREF(commandBuffer); + DE_UNREF(instanceCount); + DE_UNREF(firstInstance); + DE_UNREF(counterBuffer); + DE_UNREF(counterBufferOffset); + DE_UNREF(counterOffset); + DE_UNREF(vertexStride); +} + VKAPI_ATTR void VKAPI_CALL cmdDrawIndirectCountAMD (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) { DE_UNREF(commandBuffer); @@ -2206,6 +2262,12 @@ static const tcu::StaticFunctionLibrary::Entry s_deviceFunctions[] = VK_NULL_FUNC_ENTRY(vkCmdDebugMarkerBeginEXT, cmdDebugMarkerBeginEXT), VK_NULL_FUNC_ENTRY(vkCmdDebugMarkerEndEXT, cmdDebugMarkerEndEXT), VK_NULL_FUNC_ENTRY(vkCmdDebugMarkerInsertEXT, cmdDebugMarkerInsertEXT), + VK_NULL_FUNC_ENTRY(vkCmdBindTransformFeedbackBuffersEXT, cmdBindTransformFeedbackBuffersEXT), + VK_NULL_FUNC_ENTRY(vkCmdBeginTransformFeedbackEXT, cmdBeginTransformFeedbackEXT), + VK_NULL_FUNC_ENTRY(vkCmdEndTransformFeedbackEXT, cmdEndTransformFeedbackEXT), + VK_NULL_FUNC_ENTRY(vkCmdBeginQueryIndexedEXT, cmdBeginQueryIndexedEXT), + VK_NULL_FUNC_ENTRY(vkCmdEndQueryIndexedEXT, cmdEndQueryIndexedEXT), + VK_NULL_FUNC_ENTRY(vkCmdDrawIndirectByteCountEXT, cmdDrawIndirectByteCountEXT), VK_NULL_FUNC_ENTRY(vkCmdDrawIndirectCountAMD, cmdDrawIndirectCountAMD), VK_NULL_FUNC_ENTRY(vkCmdDrawIndexedIndirectCountAMD, cmdDrawIndexedIndirectCountAMD), VK_NULL_FUNC_ENTRY(vkCmdDrawIndirectCountKHR, cmdDrawIndirectCountKHR), diff --git a/external/vulkancts/framework/vulkan/vkObjUtil.cpp b/external/vulkancts/framework/vulkan/vkObjUtil.cpp index fb28474..55c10ef 100644 --- a/external/vulkancts/framework/vulkan/vkObjUtil.cpp +++ b/external/vulkancts/framework/vulkan/vkObjUtil.cpp @@ -453,15 +453,15 @@ Move makeRenderPass (const DeviceInterface& vk, const VkRenderPassCreateInfo renderPassInfo = { - VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO, // VkStructureType sType - DE_NULL, // const void* pNext - (VkRenderPassCreateFlags)0, // VkRenderPassCreateFlags flags - (deUint32)attachmentDescriptions.size(), // deUint32 attachmentCount - &attachmentDescriptions[0], // const VkAttachmentDescription* pAttachments - 1u, // deUint32 subpassCount - &subpassDescription, // const VkSubpassDescription* pSubpasses - 0u, // deUint32 dependencyCount - DE_NULL // const VkSubpassDependency* pDependencies + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO, // VkStructureType sType + DE_NULL, // const void* pNext + (VkRenderPassCreateFlags)0, // VkRenderPassCreateFlags flags + (deUint32)attachmentDescriptions.size(), // deUint32 attachmentCount + attachmentDescriptions.size() > 0 ? &attachmentDescriptions[0] : DE_NULL, // const VkAttachmentDescription* pAttachments + 1u, // deUint32 subpassCount + &subpassDescription, // const VkSubpassDescription* pSubpasses + 0u, // deUint32 dependencyCount + DE_NULL // const VkSubpassDependency* pDependencies }; return createRenderPass(vk, device, &renderPassInfo, allocationCallbacks); diff --git a/external/vulkancts/framework/vulkan/vkShaderToSpirV.cpp b/external/vulkancts/framework/vulkan/vkShaderToSpirV.cpp index b86acf2..4828b33 100644 --- a/external/vulkancts/framework/vulkan/vkShaderToSpirV.cpp +++ b/external/vulkancts/framework/vulkan/vkShaderToSpirV.cpp @@ -185,7 +185,7 @@ void getDefaultBuiltInResources (TBuiltInResource* builtin) builtin->maxCombinedAtomicCounterBuffers = 1; builtin->maxAtomicCounterBufferSize = 16384; builtin->maxTransformFeedbackBuffers = 4; - builtin->maxTransformFeedbackInterleavedComponents = 64; + builtin->maxTransformFeedbackInterleavedComponents = 16382; builtin->maxCullDistances = 8; builtin->maxCombinedClipAndCullDistances = 8; builtin->maxSamples = 4; diff --git a/external/vulkancts/framework/vulkan/vkStrUtil.inl b/external/vulkancts/framework/vulkan/vkStrUtil.inl index 49b6a8a..a276188 100644 --- a/external/vulkancts/framework/vulkan/vkStrUtil.inl +++ b/external/vulkancts/framework/vulkan/vkStrUtil.inl @@ -288,6 +288,7 @@ tcu::Format::Bitfield<32> getMirSurfaceCreateFlagsKHRStr (VkMirSurfaceCrea tcu::Format::Bitfield<32> getAndroidSurfaceCreateFlagsKHRStr (VkAndroidSurfaceCreateFlagsKHR value); tcu::Format::Bitfield<32> getWin32SurfaceCreateFlagsKHRStr (VkWin32SurfaceCreateFlagsKHR value); tcu::Format::Bitfield<32> getAcquireProfilingLockFlagsKHRStr (VkAcquireProfilingLockFlagsKHR value); +tcu::Format::Bitfield<32> getPipelineRasterizationStateStreamCreateFlagsEXTStr (VkPipelineRasterizationStateStreamCreateFlagsEXT value); tcu::Format::Bitfield<32> getViSurfaceCreateFlagsNNStr (VkViSurfaceCreateFlagsNN value); tcu::Format::Bitfield<32> getPipelineViewportSwizzleStateCreateFlagsNVStr (VkPipelineViewportSwizzleStateCreateFlagsNV value); tcu::Format::Bitfield<32> getPipelineDiscardRectangleStateCreateFlagsEXTStr (VkPipelineDiscardRectangleStateCreateFlagsEXT value); @@ -565,6 +566,9 @@ std::ostream& operator<< (std::ostream& s, const VkDebugMarkerMarkerInfoEXT& val std::ostream& operator<< (std::ostream& s, const VkDedicatedAllocationImageCreateInfoNV& value); std::ostream& operator<< (std::ostream& s, const VkDedicatedAllocationBufferCreateInfoNV& value); std::ostream& operator<< (std::ostream& s, const VkDedicatedAllocationMemoryAllocateInfoNV& value); +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTransformFeedbackFeaturesEXT& value); +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTransformFeedbackPropertiesEXT& value); +std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationStateStreamCreateInfoEXT& value); std::ostream& operator<< (std::ostream& s, const VkTextureLODGatherFormatPropertiesAMD& value); std::ostream& operator<< (std::ostream& s, const VkExternalImageFormatPropertiesNV& value); std::ostream& operator<< (std::ostream& s, const VkExternalMemoryImageCreateInfoNV& value); diff --git a/external/vulkancts/framework/vulkan/vkStrUtilImpl.inl b/external/vulkancts/framework/vulkan/vkStrUtilImpl.inl index abeafae..bb19537 100644 --- a/external/vulkancts/framework/vulkan/vkStrUtilImpl.inl +++ b/external/vulkancts/framework/vulkan/vkStrUtilImpl.inl @@ -246,6 +246,9 @@ const char* getStructureTypeName (VkStructureType value) case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV: return "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV"; case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV: return "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV"; case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV: return "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV"; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT"; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT"; + case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT: return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT"; case VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD: return "VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD"; case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV: return "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV"; case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV: return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV"; @@ -680,11 +683,12 @@ const char* getQueryTypeName (VkQueryType value) { switch (value) { - case VK_QUERY_TYPE_OCCLUSION: return "VK_QUERY_TYPE_OCCLUSION"; - case VK_QUERY_TYPE_PIPELINE_STATISTICS: return "VK_QUERY_TYPE_PIPELINE_STATISTICS"; - case VK_QUERY_TYPE_TIMESTAMP: return "VK_QUERY_TYPE_TIMESTAMP"; - case VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR: return "VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR"; - default: return DE_NULL; + case VK_QUERY_TYPE_OCCLUSION: return "VK_QUERY_TYPE_OCCLUSION"; + case VK_QUERY_TYPE_PIPELINE_STATISTICS: return "VK_QUERY_TYPE_PIPELINE_STATISTICS"; + case VK_QUERY_TYPE_TIMESTAMP: return "VK_QUERY_TYPE_TIMESTAMP"; + case VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT: return "VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT"; + case VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR: return "VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR"; + default: return DE_NULL; } } @@ -1652,6 +1656,7 @@ tcu::Format::Bitfield<32> getPipelineStageFlagsStr (VkPipelineStageFlags value) tcu::Format::BitDesc(VK_PIPELINE_STAGE_HOST_BIT, "VK_PIPELINE_STAGE_HOST_BIT"), tcu::Format::BitDesc(VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, "VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT"), tcu::Format::BitDesc(VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, "VK_PIPELINE_STAGE_ALL_COMMANDS_BIT"), + tcu::Format::BitDesc(VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT, "VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT"), tcu::Format::BitDesc(VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX, "VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX"), tcu::Format::BitDesc(VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT, "VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT"), }; @@ -1750,17 +1755,19 @@ tcu::Format::Bitfield<32> getBufferUsageFlagsStr (VkBufferUsageFlags value) { static const tcu::Format::BitDesc s_desc[] = { - tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFER_SRC_BIT, "VK_BUFFER_USAGE_TRANSFER_SRC_BIT"), - tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFER_DST_BIT, "VK_BUFFER_USAGE_TRANSFER_DST_BIT"), - tcu::Format::BitDesc(VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT, "VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT"), - tcu::Format::BitDesc(VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, "VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT"), - tcu::Format::BitDesc(VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, "VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT"), - tcu::Format::BitDesc(VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, "VK_BUFFER_USAGE_STORAGE_BUFFER_BIT"), - tcu::Format::BitDesc(VK_BUFFER_USAGE_INDEX_BUFFER_BIT, "VK_BUFFER_USAGE_INDEX_BUFFER_BIT"), - tcu::Format::BitDesc(VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, "VK_BUFFER_USAGE_VERTEX_BUFFER_BIT"), - tcu::Format::BitDesc(VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT, "VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT"), - tcu::Format::BitDesc(VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT, "VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT"), - tcu::Format::BitDesc(VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT, "VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT"), + tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFER_SRC_BIT, "VK_BUFFER_USAGE_TRANSFER_SRC_BIT"), + tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFER_DST_BIT, "VK_BUFFER_USAGE_TRANSFER_DST_BIT"), + tcu::Format::BitDesc(VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT, "VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT"), + tcu::Format::BitDesc(VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, "VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT"), + tcu::Format::BitDesc(VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, "VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT"), + tcu::Format::BitDesc(VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, "VK_BUFFER_USAGE_STORAGE_BUFFER_BIT"), + tcu::Format::BitDesc(VK_BUFFER_USAGE_INDEX_BUFFER_BIT, "VK_BUFFER_USAGE_INDEX_BUFFER_BIT"), + tcu::Format::BitDesc(VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, "VK_BUFFER_USAGE_VERTEX_BUFFER_BIT"), + tcu::Format::BitDesc(VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT, "VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT"), + tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT, "VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT"), + tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT, "VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT"), + tcu::Format::BitDesc(VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT, "VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT"), + tcu::Format::BitDesc(VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT, "VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT"), }; return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc)); } @@ -1887,6 +1894,9 @@ tcu::Format::Bitfield<32> getAccessFlagsStr (VkAccessFlags value) tcu::Format::BitDesc(VK_ACCESS_HOST_WRITE_BIT, "VK_ACCESS_HOST_WRITE_BIT"), tcu::Format::BitDesc(VK_ACCESS_MEMORY_READ_BIT, "VK_ACCESS_MEMORY_READ_BIT"), tcu::Format::BitDesc(VK_ACCESS_MEMORY_WRITE_BIT, "VK_ACCESS_MEMORY_WRITE_BIT"), + tcu::Format::BitDesc(VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT, "VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT"), + tcu::Format::BitDesc(VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT, "VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT"), + tcu::Format::BitDesc(VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT, "VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT"), tcu::Format::BitDesc(VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT, "VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT"), tcu::Format::BitDesc(VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX, "VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX"), tcu::Format::BitDesc(VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX, "VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX"), @@ -2446,6 +2456,11 @@ tcu::Format::Bitfield<32> getAcquireProfilingLockFlagsKHRStr (VkAcquireProfiling return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL); } +tcu::Format::Bitfield<32> getPipelineRasterizationStateStreamCreateFlagsEXTStr (VkPipelineRasterizationStateStreamCreateFlagsEXT value) +{ + return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL); +} + tcu::Format::Bitfield<32> getViSurfaceCreateFlagsNNStr (VkViSurfaceCreateFlagsNN value) { return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL); @@ -5865,6 +5880,47 @@ std::ostream& operator<< (std::ostream& s, const VkDedicatedAllocationMemoryAllo return s; } +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTransformFeedbackFeaturesEXT& value) +{ + s << "VkPhysicalDeviceTransformFeedbackFeaturesEXT = {\n"; + s << "\tsType = " << value.sType << '\n'; + s << "\tpNext = " << value.pNext << '\n'; + s << "\ttransformFeedback = " << value.transformFeedback << '\n'; + s << "\tgeometryStreams = " << value.geometryStreams << '\n'; + s << '}'; + return s; +} + +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTransformFeedbackPropertiesEXT& value) +{ + s << "VkPhysicalDeviceTransformFeedbackPropertiesEXT = {\n"; + s << "\tsType = " << value.sType << '\n'; + s << "\tpNext = " << value.pNext << '\n'; + s << "\tmaxTransformFeedbackStreams = " << value.maxTransformFeedbackStreams << '\n'; + s << "\tmaxTransformFeedbackBuffers = " << value.maxTransformFeedbackBuffers << '\n'; + s << "\tmaxTransformFeedbackBufferSize = " << value.maxTransformFeedbackBufferSize << '\n'; + s << "\tmaxTransformFeedbackStreamDataSize = " << value.maxTransformFeedbackStreamDataSize << '\n'; + s << "\tmaxTransformFeedbackBufferDataSize = " << value.maxTransformFeedbackBufferDataSize << '\n'; + s << "\tmaxTransformFeedbackBufferDataStride = " << value.maxTransformFeedbackBufferDataStride << '\n'; + s << "\ttransformFeedbackQueries = " << value.transformFeedbackQueries << '\n'; + s << "\ttransformFeedbackStreamsLinesTriangles = " << value.transformFeedbackStreamsLinesTriangles << '\n'; + s << "\ttransformFeedbackRasterizationStreamSelect = " << value.transformFeedbackRasterizationStreamSelect << '\n'; + s << "\ttransformFeedbackDraw = " << value.transformFeedbackDraw << '\n'; + s << '}'; + return s; +} + +std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationStateStreamCreateInfoEXT& value) +{ + s << "VkPipelineRasterizationStateStreamCreateInfoEXT = {\n"; + s << "\tsType = " << value.sType << '\n'; + s << "\tpNext = " << value.pNext << '\n'; + s << "\tflags = " << getPipelineRasterizationStateStreamCreateFlagsEXTStr(value.flags) << '\n'; + s << "\trasterizationStream = " << value.rasterizationStream << '\n'; + s << '}'; + return s; +} + std::ostream& operator<< (std::ostream& s, const VkTextureLODGatherFormatPropertiesAMD& value) { s << "VkTextureLODGatherFormatPropertiesAMD = {\n"; diff --git a/external/vulkancts/framework/vulkan/vkStructTypes.inl b/external/vulkancts/framework/vulkan/vkStructTypes.inl index 34b34ab..dc1147b 100644 --- a/external/vulkancts/framework/vulkan/vkStructTypes.inl +++ b/external/vulkancts/framework/vulkan/vkStructTypes.inl @@ -2574,6 +2574,38 @@ struct VkDedicatedAllocationMemoryAllocateInfoNV VkBuffer buffer; }; +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT +{ + VkStructureType sType; + void* pNext; + VkBool32 transformFeedback; + VkBool32 geometryStreams; +}; + +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT +{ + VkStructureType sType; + void* pNext; + deUint32 maxTransformFeedbackStreams; + deUint32 maxTransformFeedbackBuffers; + VkDeviceSize maxTransformFeedbackBufferSize; + deUint32 maxTransformFeedbackStreamDataSize; + deUint32 maxTransformFeedbackBufferDataSize; + deUint32 maxTransformFeedbackBufferDataStride; + VkBool32 transformFeedbackQueries; + VkBool32 transformFeedbackStreamsLinesTriangles; + VkBool32 transformFeedbackRasterizationStreamSelect; + VkBool32 transformFeedbackDraw; +}; + +struct VkPipelineRasterizationStateStreamCreateInfoEXT +{ + VkStructureType sType; + const void* pNext; + VkPipelineRasterizationStateStreamCreateFlagsEXT flags; + deUint32 rasterizationStream; +}; + struct VkTextureLODGatherFormatPropertiesAMD { VkStructureType sType; diff --git a/external/vulkancts/framework/vulkan/vkVirtualDeviceInterface.inl b/external/vulkancts/framework/vulkan/vkVirtualDeviceInterface.inl index c872700..7ed0a86 100644 --- a/external/vulkancts/framework/vulkan/vkVirtualDeviceInterface.inl +++ b/external/vulkancts/framework/vulkan/vkVirtualDeviceInterface.inl @@ -173,6 +173,12 @@ virtual VkResult debugMarkerSetObjectNameEXT (VkDevice device, const VkDeb virtual void cmdDebugMarkerBeginEXT (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) const = 0; virtual void cmdDebugMarkerEndEXT (VkCommandBuffer commandBuffer) const = 0; virtual void cmdDebugMarkerInsertEXT (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) const = 0; +virtual void cmdBindTransformFeedbackBuffersEXT (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes) const = 0; +virtual void cmdBeginTransformFeedbackEXT (VkCommandBuffer commandBuffer, deUint32 firstCounterBuffer, deUint32 counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets) const = 0; +virtual void cmdEndTransformFeedbackEXT (VkCommandBuffer commandBuffer, deUint32 firstCounterBuffer, deUint32 counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets) const = 0; +virtual void cmdBeginQueryIndexedEXT (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags, deUint32 index) const = 0; +virtual void cmdEndQueryIndexedEXT (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, deUint32 index) const = 0; +virtual void cmdDrawIndirectByteCountEXT (VkCommandBuffer commandBuffer, deUint32 instanceCount, deUint32 firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, deUint32 counterOffset, deUint32 vertexStride) const = 0; virtual void cmdDrawIndirectCountAMD (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const = 0; virtual void cmdDrawIndexedIndirectCountAMD (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const = 0; virtual void cmdDrawIndirectCountKHR (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const = 0; diff --git a/external/vulkancts/framework/vulkan/vkVulkan_c.inl b/external/vulkancts/framework/vulkan/vkVulkan_c.inl index 48551cc..0f9e254 100644 --- a/external/vulkancts/framework/vulkan/vkVulkan_c.inl +++ b/external/vulkancts/framework/vulkan/vkVulkan_c.inl @@ -297,6 +297,9 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000, VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001, VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001, + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002, VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000, VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000, VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001, @@ -732,6 +735,7 @@ typedef enum VkQueryType { VK_QUERY_TYPE_OCCLUSION = 0, VK_QUERY_TYPE_PIPELINE_STATISTICS = 1, VK_QUERY_TYPE_TIMESTAMP = 2, + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004, VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000, VK_QUERY_TYPE_BEGIN_RANGE = VK_QUERY_TYPE_OCCLUSION, VK_QUERY_TYPE_END_RANGE = VK_QUERY_TYPE_TIMESTAMP, @@ -1287,6 +1291,7 @@ typedef enum VkPipelineStageFlagBits { VK_PIPELINE_STAGE_HOST_BIT = 0x00004000, VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000, + VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 0x01000000, VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX = 0x00020000, VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000, VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF @@ -1374,6 +1379,8 @@ typedef enum VkBufferUsageFlagBits { VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040, VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080, VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100, + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 0x00000800, + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 0x00001000, VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00000200, VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 0x00020000, VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF @@ -1490,6 +1497,9 @@ typedef enum VkAccessFlagBits { VK_ACCESS_HOST_WRITE_BIT = 0x00004000, VK_ACCESS_MEMORY_READ_BIT = 0x00008000, VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000, + VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0x02000000, + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0x04000000, + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 0x08000000, VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000, VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX = 0x00020000, VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = 0x00040000, @@ -6798,6 +6808,95 @@ typedef struct VkDedicatedAllocationMemoryAllocateInfoNV { +#define VK_EXT_transform_feedback 1 +#define VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION 1 +#define VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME "VK_EXT_transform_feedback" + +typedef VkFlags VkPipelineRasterizationStateStreamCreateFlagsEXT; + +typedef struct VkPhysicalDeviceTransformFeedbackFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 transformFeedback; + VkBool32 geometryStreams; +} VkPhysicalDeviceTransformFeedbackFeaturesEXT; + +typedef struct VkPhysicalDeviceTransformFeedbackPropertiesEXT { + VkStructureType sType; + void* pNext; + deUint32 maxTransformFeedbackStreams; + deUint32 maxTransformFeedbackBuffers; + VkDeviceSize maxTransformFeedbackBufferSize; + deUint32 maxTransformFeedbackStreamDataSize; + deUint32 maxTransformFeedbackBufferDataSize; + deUint32 maxTransformFeedbackBufferDataStride; + VkBool32 transformFeedbackQueries; + VkBool32 transformFeedbackStreamsLinesTriangles; + VkBool32 transformFeedbackRasterizationStreamSelect; + VkBool32 transformFeedbackDraw; +} VkPhysicalDeviceTransformFeedbackPropertiesEXT; + +typedef struct VkPipelineRasterizationStateStreamCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkPipelineRasterizationStateStreamCreateFlagsEXT flags; + deUint32 rasterizationStream; +} VkPipelineRasterizationStateStreamCreateInfoEXT; + + +typedef void (VKAPI_PTR *PFN_vkCmdBindTransformFeedbackBuffersEXT)(VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes); +typedef void (VKAPI_PTR *PFN_vkCmdBeginTransformFeedbackEXT)(VkCommandBuffer commandBuffer, deUint32 firstCounterBuffer, deUint32 counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets); +typedef void (VKAPI_PTR *PFN_vkCmdEndTransformFeedbackEXT)(VkCommandBuffer commandBuffer, deUint32 firstCounterBuffer, deUint32 counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets); +typedef void (VKAPI_PTR *PFN_vkCmdBeginQueryIndexedEXT)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags, deUint32 index); +typedef void (VKAPI_PTR *PFN_vkCmdEndQueryIndexedEXT)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, deUint32 index); +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectByteCountEXT)(VkCommandBuffer commandBuffer, deUint32 instanceCount, deUint32 firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, deUint32 counterOffset, deUint32 vertexStride); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBindTransformFeedbackBuffersEXT( + VkCommandBuffer commandBuffer, + deUint32 firstBinding, + deUint32 bindingCount, + const VkBuffer* pBuffers, + const VkDeviceSize* pOffsets, + const VkDeviceSize* pSizes); + +VKAPI_ATTR void VKAPI_CALL vkCmdBeginTransformFeedbackEXT( + VkCommandBuffer commandBuffer, + deUint32 firstCounterBuffer, + deUint32 counterBufferCount, + const VkBuffer* pCounterBuffers, + const VkDeviceSize* pCounterBufferOffsets); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndTransformFeedbackEXT( + VkCommandBuffer commandBuffer, + deUint32 firstCounterBuffer, + deUint32 counterBufferCount, + const VkBuffer* pCounterBuffers, + const VkDeviceSize* pCounterBufferOffsets); + +VKAPI_ATTR void VKAPI_CALL vkCmdBeginQueryIndexedEXT( + VkCommandBuffer commandBuffer, + VkQueryPool queryPool, + deUint32 query, + VkQueryControlFlags flags, + deUint32 index); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndQueryIndexedEXT( + VkCommandBuffer commandBuffer, + VkQueryPool queryPool, + deUint32 query, + deUint32 index); + +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectByteCountEXT( + VkCommandBuffer commandBuffer, + deUint32 instanceCount, + deUint32 firstInstance, + VkBuffer counterBuffer, + VkDeviceSize counterBufferOffset, + deUint32 counterOffset, + deUint32 vertexStride); +#endif + #define VK_AMD_draw_indirect_count 1 #define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 1 #define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_AMD_draw_indirect_count" diff --git a/external/vulkancts/modules/vulkan/CMakeLists.txt b/external/vulkancts/modules/vulkan/CMakeLists.txt index 161cca7..cfade52 100644 --- a/external/vulkancts/modules/vulkan/CMakeLists.txt +++ b/external/vulkancts/modules/vulkan/CMakeLists.txt @@ -32,6 +32,7 @@ add_subdirectory(subgroups) add_subdirectory(ycbcr) add_subdirectory(protected_memory) add_subdirectory(memory_model) +add_subdirectory(transform_feedback) add_subdirectory(util) add_subdirectory(amber) add_subdirectory(imageless_framebuffer) @@ -69,6 +70,7 @@ include_directories( ycbcr protected_memory memory_model + transform_feedback util amber imageless_framebuffer @@ -128,6 +130,7 @@ set(DEQP_VK_LIBS deqp-vk-memory-model deqp-vk-amber deqp-vk-imageless-framebuffer + deqp-vk-transform-feedback ) if (DE_COMPILER_IS_MSC AND (DE_PTR_SIZE EQUAL 4)) diff --git a/external/vulkancts/modules/vulkan/transform_feedback/CMakeLists.txt b/external/vulkancts/modules/vulkan/transform_feedback/CMakeLists.txt new file mode 100644 index 0000000..dea2c62 --- /dev/null +++ b/external/vulkancts/modules/vulkan/transform_feedback/CMakeLists.txt @@ -0,0 +1,22 @@ +include_directories(..) + +set(DEQP_VK_TRANSFORM_FEEDBACK_SRCS + vktTransformFeedbackTests.hpp + vktTransformFeedbackTests.cpp + vktTransformFeedbackSimpleTests.hpp + vktTransformFeedbackSimpleTests.cpp + vktTransformFeedbackFuzzLayoutCase.cpp + vktTransformFeedbackFuzzLayoutCase.hpp + vktTransformFeedbackFuzzLayoutTests.cpp + vktTransformFeedbackFuzzLayoutTests.hpp + vktTransformFeedbackRandomLayoutCase.cpp + vktTransformFeedbackRandomLayoutCase.hpp +) + +set(DEQP_VK_TRANSFORM_FEEDBACK_LIBS + tcutil + vkutil +) + +add_library(deqp-vk-transform-feedback STATIC ${DEQP_VK_TRANSFORM_FEEDBACK_SRCS}) +target_link_libraries(deqp-vk-transform-feedback ${DEQP_VK_TRANSFORM_FEEDBACK_LIBS}) diff --git a/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackFuzzLayoutCase.cpp b/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackFuzzLayoutCase.cpp new file mode 100644 index 0000000..1c58a45 --- /dev/null +++ b/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackFuzzLayoutCase.cpp @@ -0,0 +1,2076 @@ +/*------------------------------------------------------------------------ + * Vulkan Conformance Tests + * ------------------------ + * + * Copyright (c) 2015 The Khronos Group Inc. + * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * Copyright (c) 2016 The Android Open Source Project + * Copyright (c) 2018 The Khronos Group Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + *//*! + * \file + * \brief Vulkan Transform Feedback Fuzz Layout Tests + *//*--------------------------------------------------------------------*/ + +#include "vktTransformFeedbackFuzzLayoutCase.hpp" + +#include "vkPrograms.hpp" + +#include "gluVarType.hpp" +#include "tcuTestLog.hpp" +#include "tcuSurface.hpp" +#include "deRandom.hpp" +#include "deStringUtil.hpp" + +#include "tcuTextureUtil.hpp" +#include "deSharedPtr.hpp" +#include "deFloat16.h" + +#include "vkMemUtil.hpp" +#include "vkQueryUtil.hpp" +#include "vkTypeUtil.hpp" +#include "vkRef.hpp" +#include "vkRefUtil.hpp" +#include "vkBuilderUtil.hpp" +#include "vkCmdUtil.hpp" +#include "vkObjUtil.hpp" + +#include +#include +#include +#include +#include + +namespace vkt +{ +namespace TransformFeedback +{ + +using namespace vk; + +typedef std::map BufferGeneralMapping; + +typedef std::pair UsedRange; +typedef std::vector UsedRangeList; +typedef std::map BufferUsedRangesMap; + +// VarType implementation. + +VarType::VarType (void) + : m_type (TYPE_LAST) + , m_flags (0) +{ +} + +VarType::VarType (const VarType& other) + : m_type (TYPE_LAST) + , m_flags (0) +{ + *this = other; +} + +VarType::VarType (glu::DataType basicType, deUint32 flags) + : m_type (TYPE_BASIC) + , m_flags (flags) +{ + m_data.basicType = basicType; +} + +VarType::VarType (const VarType& elementType, int arraySize) + : m_type (TYPE_ARRAY) + , m_flags (0) +{ + m_data.array.size = arraySize; + m_data.array.elementType = new VarType(elementType); +} + +VarType::VarType (const StructType* structPtr, deUint32 flags) + : m_type (TYPE_STRUCT) + , m_flags (flags) +{ + m_data.structPtr = structPtr; +} + +VarType::~VarType (void) +{ + if (m_type == TYPE_ARRAY) + delete m_data.array.elementType; +} + +VarType& VarType::operator= (const VarType& other) +{ + if (this == &other) + return *this; // Self-assignment. + + VarType *oldElementType = m_type == TYPE_ARRAY ? m_data.array.elementType : DE_NULL; + + m_type = other.m_type; + m_flags = other.m_flags; + m_data = Data(); + + if (m_type == TYPE_ARRAY) + { + m_data.array.elementType = new VarType(*other.m_data.array.elementType); + m_data.array.size = other.m_data.array.size; + } + else + m_data = other.m_data; + + delete oldElementType; + + return *this; +} + +// StructType implementation. +void StructType::addMember (const std::string& name, const VarType& type, deUint32 flags) +{ + m_members.push_back(StructMember(name, type, flags)); +} + +// InterfaceBlockMember implementation. +InterfaceBlockMember::InterfaceBlockMember (const std::string& name, const VarType& type, deUint32 flags) + : m_name (name) + , m_type (type) + , m_flags (flags) +{ +} + +// InterfaceBlock implementation. +InterfaceBlock::InterfaceBlock (const std::string& blockName) + : m_blockName (blockName) + , m_xfbBuffer (0) + , m_arraySize (0) + , m_flags (0) +{ +} + +std::ostream& operator<< (std::ostream& stream, const BlockLayoutEntry& entry) +{ + stream << entry.name << " { name = " << entry.name + << ", buffer = " << entry.xfbBuffer + << ", offset = " << entry.xfbOffset + << ", size = " << entry.xfbSize + << ", blockDeclarationNdx = " << entry.blockDeclarationNdx + << ", instanceNdx = " << entry.instanceNdx + << ", activeInterfaceIndices = ["; + + for (std::vector::const_iterator i = entry.activeInterfaceIndices.begin(); i != entry.activeInterfaceIndices.end(); i++) + { + if (i != entry.activeInterfaceIndices.begin()) + stream << ", "; + stream << *i; + } + + stream << "] }"; + return stream; +} + +std::ostream& operator<< (std::ostream& stream, const InterfaceLayoutEntry& entry) +{ + stream << entry.name << " { type = " << glu::getDataTypeName(entry.type) + << ", arraySize = " << entry.arraySize + << ", blockNdx = " << entry.blockLayoutNdx + << ", offset = " << entry.offset + << ", arrayStride = " << entry.arrayStride + << ", matrixStride = " << entry.matrixStride + << " }"; + + return stream; +} + +std::ostream& operator<< (std::ostream& str, const InterfaceLayout& layout) +{ + const int numBlocks = (int)layout.blocks.size(); + + str << "Blocks:" << std::endl; + for (int blockNdx = 0; blockNdx < numBlocks; blockNdx++) + str << layout.blocks[blockNdx] << std::endl; + str << std::endl; + + str << "Interfaces:" << std::endl; + for (int blockNdx = 0; blockNdx < numBlocks; blockNdx++) + { + int numEntries = (int)layout.blocks[blockNdx].activeInterfaceIndices.size(); + + for (int entryNdx = 0; entryNdx < numEntries; entryNdx++) + { + const InterfaceLayoutEntry& entry = layout.interfaces[layout.blocks[blockNdx].activeInterfaceIndices[entryNdx]]; + + str << blockNdx << ":" << entryNdx << " " << entry << std::endl; + } + } + str << std::endl; + + return str; +} + +int InterfaceLayout::getInterfaceLayoutIndex (int blockNdx, const std::string& name) const +{ + for (int ndx = 0; ndx < (int)interfaces.size(); ndx++) + { + if (blocks[interfaces[ndx].blockLayoutNdx].blockDeclarationNdx == blockNdx && interfaces[ndx].name == name) + return ndx; + } + + return -1; +} + +int InterfaceLayout::getBlockLayoutIndex (int blockNdx, int instanceNdx) const +{ + for (int ndx = 0; ndx < (int)blocks.size(); ndx++) + { + if (blocks[ndx].blockDeclarationNdx == blockNdx && blocks[ndx].instanceNdx == instanceNdx) + return ndx; + } + + return -1; +} + +// ShaderInterface implementation. + +ShaderInterface::ShaderInterface (void) +{ +} + +ShaderInterface::~ShaderInterface (void) +{ +} + +StructType& ShaderInterface::allocStruct (const std::string& name) +{ + m_structs.push_back(StructTypeSP(new StructType(name))); + return *m_structs.back(); +} + +struct StructNameEquals +{ + std::string name; + + StructNameEquals (const std::string& name_) : name(name_) {} + + bool operator() (const StructTypeSP type) const + { + return type->hasTypeName() && name == type->getTypeName(); + } +}; + +void ShaderInterface::getNamedStructs (std::vector& structs) const +{ + for (std::vector::const_iterator i = m_structs.begin(); i != m_structs.end(); i++) + { + if ((*i)->hasTypeName()) + structs.push_back((*i).get()); + } +} + +InterfaceBlock& ShaderInterface::allocBlock (const std::string& name) +{ + m_interfaceBlocks.push_back(InterfaceBlockSP(new InterfaceBlock(name))); + + return *m_interfaceBlocks.back(); +} + +namespace // Utilities +{ + +struct PrecisionFlagsFmt +{ + deUint32 flags; + PrecisionFlagsFmt (deUint32 flags_) : flags(flags_) {} +}; + +void dumpBytes (std::ostream& str, const std::string& msg, const void* dataBytes, size_t size, const void* dataMask = DE_NULL) +{ + const deUint8* data = (const deUint8*)dataBytes; + const deUint8* mask = (const deUint8*)dataMask; + std::ios::fmtflags flags; + + str << msg; + + flags = str.flags ( std::ios::hex | std::ios::uppercase ); + { + for (size_t i = 0; i < size; i++) + { + if (i%16 == 0) str << std::endl << std::setfill('0') << std::setw(8) << i << ":"; + else if (i%8 == 0) str << " "; + else if (i%4 == 0) str << " "; + + str << " " << std::setfill('0') << std::setw(2); + + if (mask == DE_NULL || mask[i] != 0) + str << (deUint32)data[i]; + else + str << "__"; + } + str << std::endl << std::endl; + } + str.flags ( flags ); +} + +std::ostream& operator<< (std::ostream& str, const PrecisionFlagsFmt& fmt) +{ + // Precision. + DE_ASSERT(dePop32(fmt.flags & (PRECISION_LOW|PRECISION_MEDIUM|PRECISION_HIGH)) <= 1); + str << (fmt.flags & PRECISION_LOW ? "lowp" : + fmt.flags & PRECISION_MEDIUM ? "mediump" : + fmt.flags & PRECISION_HIGH ? "highp" : ""); + return str; +} + +struct LayoutFlagsFmt +{ + deUint32 flags; + deUint32 buffer; + deUint32 stride; + deUint32 offset; + + LayoutFlagsFmt (const deUint32 flags_, + const deUint32 buffer_, + const deUint32 stride_, + const deUint32 offset_) + : flags (flags_) + , buffer (buffer_) + , stride (stride_) + , offset (offset_) + { + } +}; + +std::ostream& operator<< (std::ostream& str, const LayoutFlagsFmt& fmt) +{ + static const struct + { + deUint32 bit; + const char* token; + } bitDesc[] = + { + { LAYOUT_XFBBUFFER, "xfb_buffer" }, + { LAYOUT_XFBOFFSET, "xfb_offset" }, + { LAYOUT_XFBSTRIDE, "xfb_stride" }, + }; + + deUint32 remBits = fmt.flags; + for (int descNdx = 0; descNdx < DE_LENGTH_OF_ARRAY(bitDesc); descNdx++) + { + if (remBits & bitDesc[descNdx].bit) + { + str << bitDesc[descNdx].token; + + if (bitDesc[descNdx].bit == LAYOUT_XFBBUFFER) str << " = " << fmt.buffer; + if (bitDesc[descNdx].bit == LAYOUT_XFBOFFSET) str << " = " << fmt.offset; + if (bitDesc[descNdx].bit == LAYOUT_XFBSTRIDE) str << " = " << fmt.stride; + + remBits &= ~bitDesc[descNdx].bit; + + if (remBits != 0) + str << ", "; + } + } + DE_ASSERT(remBits == 0); + return str; +} + +std::ostream& operator<< (std::ostream& str, const DeviceSizeVector& vec) +{ + str << " ["; + + for (size_t vecNdx = 0; vecNdx < vec.size(); vecNdx++) + str << (deUint64)vec[vecNdx] << (vecNdx + 1 < vec.size() ? ", " : "]"); + + return str; +} + +// Layout computation. + +int getDataTypeByteSize (glu::DataType type) +{ + if (getDataTypeScalarType(type) == glu::TYPE_DOUBLE) + { + return glu::getDataTypeScalarSize(type)*(int)sizeof(deUint64); + } + else + { + return glu::getDataTypeScalarSize(type)*(int)sizeof(deUint32); + } +} + +int getDataTypeArrayStride (glu::DataType type) +{ + DE_ASSERT(!glu::isDataTypeMatrix(type)); + + return getDataTypeByteSize(type); +} + +int getDataTypeArrayStrideForLocation (glu::DataType type) +{ + DE_ASSERT(!glu::isDataTypeMatrix(type)); + + const int baseStride = getDataTypeByteSize(type); + const int vec4Alignment = (int)sizeof(deUint32) * 4; + + return deAlign32(baseStride, vec4Alignment); +} + +int computeInterfaceBlockMemberAlignment (const VarType& type) +{ + if (type.isBasicType()) + { + glu::DataType basicType = type.getBasicType(); + + if (glu::isDataTypeMatrix(basicType) || isDataTypeVector(basicType)) + basicType = glu::getDataTypeScalarType(basicType); + + switch (basicType) + { + case glu::TYPE_FLOAT: + case glu::TYPE_INT: + case glu::TYPE_UINT: return sizeof(deUint32); + case glu::TYPE_DOUBLE: return sizeof(deUint64); + default: TCU_THROW(InternalError, "Invalid type"); + } + } + else if (type.isArrayType()) + { + return computeInterfaceBlockMemberAlignment(type.getElementType()); + } + else if (type.isStructType()) + { + int maxAlignment = 0; + + for (StructType::ConstIterator memberIter = type.getStruct().begin(); memberIter != type.getStruct().end(); memberIter++) + maxAlignment = de::max(maxAlignment, computeInterfaceBlockMemberAlignment(memberIter->getType())); + + return maxAlignment; + } + else + TCU_THROW(InternalError, "Invalid type"); +} + +void createMask (void* maskBasePtr, const InterfaceLayoutEntry& entry, const void* basePtr0, const void* basePtr) +{ + const glu::DataType scalarType = glu::getDataTypeScalarType(entry.type); + const int scalarSize = glu::getDataTypeScalarSize(entry.type); + const bool isMatrix = glu::isDataTypeMatrix(entry.type); + const int numVecs = isMatrix ? glu::getDataTypeMatrixNumColumns(entry.type) : 1; + const int vecSize = scalarSize / numVecs; + const bool isArray = entry.arraySize > 1; + const size_t compSize = getDataTypeByteSize(scalarType); + + DE_ASSERT(scalarSize%numVecs == 0); + + for (int elemNdx = 0; elemNdx < entry.arraySize; elemNdx++) + { + deUint8* elemPtr = (deUint8*)basePtr + entry.offset + (isArray ? elemNdx*entry.arrayStride : 0); + + for (int vecNdx = 0; vecNdx < numVecs; vecNdx++) + { + deUint8* vecPtr = elemPtr + (isMatrix ? vecNdx*entry.matrixStride : 0); + + for (int compNdx = 0; compNdx < vecSize; compNdx++) + { + const deUint8* compPtr = vecPtr + compSize*compNdx; + const size_t offset = compPtr - (deUint8*)basePtr0; + deUint8* maskPtr = (deUint8*)maskBasePtr + offset; + + switch (scalarType) + { + case glu::TYPE_DOUBLE: + case glu::TYPE_FLOAT: + case glu::TYPE_INT: + case glu::TYPE_UINT: + { + for (size_t ndx = 0; ndx < compSize; ++ndx) + ++maskPtr[ndx]; + + break; + } + default: + DE_ASSERT(false); + } + } + } + } +} + +std::vector createMask (const InterfaceLayout& layout, const std::map& blockPointers, const void* basePtr0, const size_t baseSize) +{ + std::vector mask (baseSize, 0); + const int numBlocks ((int)layout.blocks.size()); + + for (int blockNdx = 0; blockNdx < numBlocks; blockNdx++) + { + void* basePtr = blockPointers.find(blockNdx)->second; + int numEntries = (int)layout.blocks[blockNdx].activeInterfaceIndices.size(); + + for (int entryNdx = 0; entryNdx < numEntries; entryNdx++) + { + const InterfaceLayoutEntry& entry = layout.interfaces[layout.blocks[blockNdx].activeInterfaceIndices[entryNdx]]; + + if (entry.validate) + createMask (&mask[0], entry, basePtr0, basePtr); + } + } + + return mask; +} + +int computeInterfaceBlockAlignment(const InterfaceBlock& interfaceBlock) +{ + int baseAlignment = 0; + + for (InterfaceBlock::ConstIterator memberIter = interfaceBlock.begin(); memberIter != interfaceBlock.end(); memberIter++) + { + const InterfaceBlockMember& member = *memberIter; + + baseAlignment = std::max(baseAlignment, computeInterfaceBlockMemberAlignment(member.getType())); + } + + return baseAlignment; +} + +static inline bool isOverlaped(const int a1, const int b1, const int a2, const int b2) +{ + DE_ASSERT(b1 > 0 && b2 > 0); + + const int b1s = b1 - 1; + const int b2s = b2 - 1; + + return deInRange32(a1, a2, b2s) || + deInRange32(b1s, a2, b2s) || + deInRange32(a2, a1, b1s) || + deInRange32(b2s, a1, b1s); +} + +void computeXfbLayout (InterfaceLayout& layout, int& curOffset, int& curLocation, int curBlockNdx, const std::string& curPrefix, const VarType& type, deUint32 layoutFlags) +{ + const int locationAlignSize = 16; + const bool validate = 0 == (layoutFlags & (FIELD_MISSING|FIELD_UNASSIGNED)); + int baseAlignment = computeInterfaceBlockMemberAlignment(type); + + DE_ASSERT(baseAlignment == sizeof(deUint32) || baseAlignment == sizeof(deUint64)); + + curOffset = deAlign32(curOffset, baseAlignment); + + if (type.isBasicType()) + { + const glu::DataType basicType = type.getBasicType(); + int fieldSize = 0; + int fieldSizeForLocation = 0; + InterfaceLayoutEntry entry; + + entry.name = curPrefix; + entry.type = basicType; + entry.arraySize = 1; + entry.arrayStride = 0; + entry.matrixStride = 0; + entry.blockLayoutNdx = curBlockNdx; + entry.locationNdx = 0; + entry.validate = validate; + + if (glu::isDataTypeMatrix(basicType)) + { + // Array of vectors + const int vecSize = glu::getDataTypeMatrixNumRows(basicType); + const int numVecs = glu::getDataTypeMatrixNumColumns(basicType); + const glu::DataType elemType = glu::getDataTypeScalarType(basicType); + const int stride = getDataTypeArrayStride(glu::getDataTypeVector(elemType, vecSize)); + const int strideForLocation = getDataTypeArrayStrideForLocation(glu::getDataTypeVector(elemType, vecSize)); + + entry.matrixStride = stride; + + fieldSize = numVecs * stride; + fieldSizeForLocation = numVecs * strideForLocation; + } + else + { + // Scalar or vector. + fieldSize = getDataTypeByteSize(basicType); + fieldSizeForLocation = deAlign32(fieldSize, locationAlignSize); + } + + entry.offset = curOffset; + entry.locationNdx = curLocation; + + curOffset += fieldSize; + curLocation += deDivRoundUp32(fieldSizeForLocation, locationAlignSize); + + layout.interfaces.push_back(entry); + } + else if (type.isArrayType()) + { + const VarType& elemType = type.getElementType(); + + if (elemType.isBasicType() && !glu::isDataTypeMatrix(elemType.getBasicType())) + { + // Array of scalars or vectors. + const glu::DataType elemBasicType = elemType.getBasicType(); + const int stride = getDataTypeArrayStride(elemBasicType); + const int fieldSize = stride * type.getArraySize(); + const int strideForLocation = getDataTypeArrayStrideForLocation(elemBasicType); + const int fieldSizeForLocation = strideForLocation * type.getArraySize(); + InterfaceLayoutEntry entry; + + entry.name = curPrefix + "[0]"; // Array interfaces are always postfixed with [0] + entry.type = elemBasicType; + entry.blockLayoutNdx = curBlockNdx; + entry.offset = curOffset; + entry.arraySize = type.getArraySize(); + entry.arrayStride = stride; + entry.matrixStride = 0; + entry.locationNdx = curLocation; + entry.validate = validate; + + curOffset += fieldSize; + curLocation += deDivRoundUp32(fieldSizeForLocation, locationAlignSize); + + layout.interfaces.push_back(entry); + } + else if (elemType.isBasicType() && glu::isDataTypeMatrix(elemType.getBasicType())) + { + // Array of matrices. + const glu::DataType elemBasicType = elemType.getBasicType(); + const glu::DataType scalarType = glu::getDataTypeScalarType(elemBasicType); + const int vecSize = glu::getDataTypeMatrixNumRows(elemBasicType); + const int numVecs = glu::getDataTypeMatrixNumColumns(elemBasicType); + const int stride = getDataTypeArrayStride(glu::getDataTypeVector(scalarType, vecSize)); + const int fieldSize = numVecs * type.getArraySize() * stride; + const int strideForLocation = getDataTypeArrayStrideForLocation(glu::getDataTypeVector(scalarType, vecSize)); + const int fieldSizeForLocation = numVecs * type.getArraySize() * strideForLocation; + InterfaceLayoutEntry entry; + + entry.name = curPrefix + "[0]"; // Array interfaces are always postfixed with [0] + entry.type = elemBasicType; + entry.blockLayoutNdx = curBlockNdx; + entry.offset = curOffset; + entry.arraySize = type.getArraySize(); + entry.arrayStride = stride*numVecs; + entry.matrixStride = stride; + entry.locationNdx = curLocation; + entry.validate = validate; + + curOffset += fieldSize; + curLocation += deDivRoundUp32(fieldSizeForLocation, locationAlignSize); + + layout.interfaces.push_back(entry); + } + else + { + DE_ASSERT(elemType.isStructType() || elemType.isArrayType()); + + for (int elemNdx = 0; elemNdx < type.getArraySize(); elemNdx++) + computeXfbLayout(layout, curOffset, curLocation, curBlockNdx, curPrefix + "[" + de::toString(elemNdx) + "]", type.getElementType(), layoutFlags); + } + } + else + { + DE_ASSERT(type.isStructType()); + + for (StructType::ConstIterator memberIter = type.getStruct().begin(); memberIter != type.getStruct().end(); memberIter++) + computeXfbLayout(layout, curOffset, curLocation, curBlockNdx, curPrefix + "." + memberIter->getName(), memberIter->getType(), (memberIter->getFlags() | layoutFlags) & FIELD_OPTIONS); + + curOffset = deAlign32(curOffset, baseAlignment); + } +} + +void computeXfbLayout (InterfaceLayout& layout, ShaderInterface& shaderInterface, BufferGeneralMapping& perBufferXfbOffsets, deUint32& locationsUsed) +{ + const int numInterfaceBlocks = shaderInterface.getNumInterfaceBlocks(); + int curLocation = 0; + BufferGeneralMapping bufferAlignments; + BufferGeneralMapping buffersList; + BufferGeneralMapping bufferStrideGroup; + BufferUsedRangesMap bufferUsedRanges; + + for (int blockNdx = 0; blockNdx < numInterfaceBlocks; blockNdx++) + { + const InterfaceBlock& interfaceBlock = shaderInterface.getInterfaceBlock(blockNdx); + const int xfbBuffer = interfaceBlock.getXfbBuffer(); + + buffersList[xfbBuffer] = 1; + bufferStrideGroup[xfbBuffer] = xfbBuffer; + } + + for (BufferGeneralMapping::const_iterator xfbBuffersIter = buffersList.begin(); xfbBuffersIter != buffersList.end(); xfbBuffersIter++) + { + const int xfbBufferAnalyzed = xfbBuffersIter->first; + + for (int blockNdx = 0; blockNdx < numInterfaceBlocks; blockNdx++) + { + InterfaceBlock& interfaceBlock = shaderInterface.getInterfaceBlockForModify(blockNdx); + + if (interfaceBlock.getXfbBuffer() == xfbBufferAnalyzed) + { + const bool hasInstanceName = interfaceBlock.hasInstanceName(); + const std::string blockPrefix = hasInstanceName ? (interfaceBlock.getBlockName() + ".") : ""; + const int numInstances = interfaceBlock.isArray() ? interfaceBlock.getArraySize() : 1; + int activeBlockNdx = (int)layout.blocks.size(); + int startInterfaceNdx = (int)layout.interfaces.size(); + int startLocationNdx = (int)curLocation; + int interfaceAlignement = computeInterfaceBlockAlignment(interfaceBlock); + int curOffset = 0; + int blockSize = 0; + + do + { + const int xfbFirstInstanceBuffer = interfaceBlock.getXfbBuffer(); + int& xfbFirstInstanceBufferOffset = perBufferXfbOffsets[xfbFirstInstanceBuffer]; + const int savedLayoutInterfacesNdx = (int)layout.interfaces.size(); + const int savedCurOffset = curOffset; + const int savedCurLocation = curLocation; + UsedRangeList& usedRanges = bufferUsedRanges[xfbFirstInstanceBuffer]; + bool fitIntoBuffer = true; + + // GLSL 4.60 + // Further, if applied to an aggregate containing a double, the offset must also be a multiple of 8, + // and the space taken in the buffer will be a multiple of 8. + xfbFirstInstanceBufferOffset = deAlign32(xfbFirstInstanceBufferOffset, interfaceAlignement); + + for (InterfaceBlock::ConstIterator memberIter = interfaceBlock.begin(); memberIter != interfaceBlock.end(); memberIter++) + { + const InterfaceBlockMember& member = *memberIter; + + computeXfbLayout(layout, curOffset, curLocation, activeBlockNdx, blockPrefix + member.getName(), member.getType(), member.getFlags() & FIELD_OPTIONS); + } + + // GLSL 4.60 + // Further, if applied to an aggregate containing a double, the offset must also be a multiple of 8, + // and the space taken in the buffer will be a multiple of 8. + blockSize = deAlign32(curOffset, interfaceAlignement); + + // Overlapping check + for (UsedRangeList::const_iterator usedRangeIt = usedRanges.begin(); + usedRangeIt != usedRanges.end(); + ++usedRangeIt) + { + const int& usedRangeStart = usedRangeIt->first; + const int& usedRangeEnd = usedRangeIt->second; + const int genRangeStart = xfbFirstInstanceBufferOffset; + const int genRangeEnd = xfbFirstInstanceBufferOffset + blockSize; + + // Validate if block has overlapping + if (isOverlaped(genRangeStart, genRangeEnd, usedRangeStart, usedRangeEnd)) + { + // Restart from obstacle interface end + fitIntoBuffer = false; + + DE_ASSERT(xfbFirstInstanceBufferOffset > usedRangeEnd); + + // Bump up interface start to the end of used range + xfbFirstInstanceBufferOffset = usedRangeEnd; + + // Undo allocation + curOffset = savedCurOffset; + curLocation = savedCurLocation; + + layout.interfaces.resize(savedLayoutInterfacesNdx); + } + } + + if (fitIntoBuffer) + break; + } while (true); + + const int xfbFirstInstanceBuffer = interfaceBlock.getXfbBuffer(); + const int xfbFirstInstanceBufferOffset = perBufferXfbOffsets[xfbFirstInstanceBuffer]; + const int endInterfaceNdx = (int)layout.interfaces.size(); + const int blockSizeInLocations = curLocation - startLocationNdx; + + curLocation -= blockSizeInLocations; + + if (numInstances > 1) + interfaceBlock.setFlag(LAYOUT_XFBSTRIDE); + + // Create block layout entries for each instance. + for (int instanceNdx = 0; instanceNdx < numInstances; instanceNdx++) + { + // Allocate entry for instance. + layout.blocks.push_back(BlockLayoutEntry()); + + BlockLayoutEntry& blockEntry = layout.blocks.back(); + const int xfbBuffer = xfbFirstInstanceBuffer + instanceNdx; + int& xfbBufferOffset = perBufferXfbOffsets[xfbBuffer]; + + DE_ASSERT(xfbBufferOffset <= xfbFirstInstanceBufferOffset); + + xfbBufferOffset = xfbFirstInstanceBufferOffset; + + blockEntry.name = interfaceBlock.getBlockName(); + blockEntry.xfbBuffer = xfbBuffer; + blockEntry.xfbOffset = xfbBufferOffset; + blockEntry.xfbSize = blockSize; + blockEntry.blockDeclarationNdx = blockNdx; + blockEntry.instanceNdx = instanceNdx; + blockEntry.locationNdx = curLocation; + blockEntry.locationSize = blockSizeInLocations; + + xfbBufferOffset += blockSize; + curLocation += blockSizeInLocations; + + // Compute active interface set for block. + for (int interfaceNdx = startInterfaceNdx; interfaceNdx < endInterfaceNdx; interfaceNdx++) + blockEntry.activeInterfaceIndices.push_back(interfaceNdx); + + if (interfaceBlock.isArray()) + blockEntry.name += "[" + de::toString(instanceNdx) + "]"; + + bufferUsedRanges[xfbBuffer].push_back(UsedRange(blockEntry.xfbOffset, blockEntry.xfbOffset + blockEntry.xfbSize)); + + // Store maximum per-buffer alignment + bufferAlignments[xfbBuffer] = std::max(interfaceAlignement, bufferAlignments[xfbBuffer]); + + // Buffers bound through instanced arrays must have same stride (and alignment) + bufferStrideGroup[xfbBuffer] = bufferStrideGroup[xfbFirstInstanceBuffer]; + } + } + } + } + + // All XFB buffers within group must have same stride + { + BufferGeneralMapping groupStride; + + for (BufferGeneralMapping::const_iterator xfbBuffersIter = perBufferXfbOffsets.begin(); xfbBuffersIter != perBufferXfbOffsets.end(); xfbBuffersIter++) + { + const int xfbBuffer = xfbBuffersIter->first; + const int xfbStride = perBufferXfbOffsets[xfbBuffer]; + const int group = bufferStrideGroup[xfbBuffer]; + + groupStride[group] = std::max(groupStride[group], xfbStride); + } + + for (BufferGeneralMapping::const_iterator xfbBuffersIter = perBufferXfbOffsets.begin(); xfbBuffersIter != perBufferXfbOffsets.end(); xfbBuffersIter++) + { + const int xfbBuffer = xfbBuffersIter->first; + const int group = bufferStrideGroup[xfbBuffer]; + + perBufferXfbOffsets[xfbBuffer] = groupStride[group]; + } + } + + // All XFB buffers within group must have same stride alignment + { + BufferGeneralMapping groupAlignment; + + for (BufferGeneralMapping::const_iterator xfbBuffersIter = perBufferXfbOffsets.begin(); xfbBuffersIter != perBufferXfbOffsets.end(); xfbBuffersIter++) + { + const int xfbBuffer = xfbBuffersIter->first; + const int group = bufferStrideGroup[xfbBuffer]; + const int xfbAlign = bufferAlignments[xfbBuffer]; + + groupAlignment[group] = std::max(groupAlignment[group], xfbAlign); + } + + for (BufferGeneralMapping::const_iterator xfbBuffersIter = perBufferXfbOffsets.begin(); xfbBuffersIter != perBufferXfbOffsets.end(); xfbBuffersIter++) + { + const int xfbBuffer = xfbBuffersIter->first; + const int group = bufferStrideGroup[xfbBuffer]; + + bufferAlignments[xfbBuffer] = groupAlignment[group]; + } + } + + // GLSL 4.60 + // If the buffer is capturing any outputs with double-precision components, the stride must be a multiple of 8, ... + for (BufferGeneralMapping::const_iterator xfbBuffersIter = perBufferXfbOffsets.begin(); xfbBuffersIter != perBufferXfbOffsets.end(); xfbBuffersIter++) + { + const int xfbBuffer = xfbBuffersIter->first; + const int xfbAlign = bufferAlignments[xfbBuffer]; + int& xfbOffset = perBufferXfbOffsets[xfbBuffer]; + + xfbOffset = deAlign32(xfbOffset, xfbAlign); + } + + // Keep stride in interface blocks + for (int blockNdx = 0; blockNdx < (int)layout.blocks.size(); blockNdx++) + layout.blocks[blockNdx].xfbStride = perBufferXfbOffsets[layout.blocks[blockNdx].xfbBuffer]; + + locationsUsed = static_cast(curLocation); +} + +// Value generator. + +void generateValue (const InterfaceLayoutEntry& entry, void* basePtr, de::Random& rnd) +{ + const glu::DataType scalarType = glu::getDataTypeScalarType(entry.type); + const int scalarSize = glu::getDataTypeScalarSize(entry.type); + const bool isMatrix = glu::isDataTypeMatrix(entry.type); + const int numVecs = isMatrix ? glu::getDataTypeMatrixNumColumns(entry.type) : 1; + const int vecSize = scalarSize / numVecs; + const bool isArray = entry.arraySize > 1; + const size_t compSize = getDataTypeByteSize(scalarType); + + DE_ASSERT(scalarSize%numVecs == 0); + + for (int elemNdx = 0; elemNdx < entry.arraySize; elemNdx++) + { + deUint8* elemPtr = (deUint8*)basePtr + entry.offset + (isArray ? elemNdx*entry.arrayStride : 0); + + for (int vecNdx = 0; vecNdx < numVecs; vecNdx++) + { + deUint8* vecPtr = elemPtr + (isMatrix ? vecNdx*entry.matrixStride : 0); + + for (int compNdx = 0; compNdx < vecSize; compNdx++) + { + deUint8* compPtr = vecPtr + compSize*compNdx; + const int sign = rnd.getBool() ? +1 : -1; + const int value = rnd.getInt(1, 127); + + switch (scalarType) + { + case glu::TYPE_DOUBLE: *((double*)compPtr) = (double) (sign * value); break; + case glu::TYPE_FLOAT: *((float*)compPtr) = (float) (sign * value); break; + case glu::TYPE_INT: *((deInt32*)compPtr) = (deInt32) (sign * value); break; + case glu::TYPE_UINT: *((deUint32*)compPtr) = (deUint32)( value); break; + default: + DE_ASSERT(false); + } + } + } + } +} + +void generateValues (const InterfaceLayout& layout, const std::map& blockPointers, deUint32 seed) +{ + de::Random rnd (seed); + int numBlocks = (int)layout.blocks.size(); + + for (int blockNdx = 0; blockNdx < numBlocks; blockNdx++) + { + void* basePtr = blockPointers.find(blockNdx)->second; + int numEntries = (int)layout.blocks[blockNdx].activeInterfaceIndices.size(); + + for (int entryNdx = 0; entryNdx < numEntries; entryNdx++) + { + const InterfaceLayoutEntry& entry = layout.interfaces[layout.blocks[blockNdx].activeInterfaceIndices[entryNdx]]; + + if (entry.validate) + generateValue(entry, basePtr, rnd); + } + } +} + +// Shader generator. + +struct Indent +{ + int level; + Indent (int level_) : level(level_) {} +}; + +std::ostream& operator<< (std::ostream& str, const Indent& indent) +{ + for (int i = 0; i < indent.level; i++) + str << "\t"; + return str; +} + +void generateDeclaration (std::ostringstream& src, const VarType& type, const std::string& name, int indentLevel, deUint32 unusedHints, deUint32 flagsMask, deUint32 buffer, deUint32 stride, deUint32 offset); +void generateDeclaration (std::ostringstream& src, const InterfaceBlockMember& member, int indentLevel, deUint32 buffer, deUint32 stride, deUint32 offset); +void generateDeclaration (std::ostringstream& src, const StructType& structType, int indentLevel); + +void generateLocalDeclaration (std::ostringstream& src, const StructType& structType, int indentLevel); +void generateFullDeclaration (std::ostringstream& src, const StructType& structType, int indentLevel); + +void generateDeclaration (std::ostringstream& src, const StructType& structType, int indentLevel) +{ + DE_ASSERT(structType.hasTypeName()); + generateFullDeclaration(src, structType, indentLevel); + src << ";\n"; +} + +void generateFullDeclaration (std::ostringstream& src, const StructType& structType, int indentLevel) +{ + src << "struct"; + if (structType.hasTypeName()) + src << " " << structType.getTypeName(); + src << "\n" << Indent(indentLevel) << "{\n"; + + for (StructType::ConstIterator memberIter = structType.begin(); memberIter != structType.end(); memberIter++) + { + src << Indent(indentLevel + 1); + generateDeclaration(src, memberIter->getType(), memberIter->getName(), indentLevel + 1, memberIter->getFlags() & FIELD_OPTIONS, ~LAYOUT_MASK, 0u, 0u, 0u); + } + + src << Indent(indentLevel) << "}"; +} + +void generateLocalDeclaration (std::ostringstream& src, const StructType& structType, int /* indentLevel */) +{ + src << structType.getTypeName(); +} + +void generateLayoutAndPrecisionDeclaration (std::ostringstream& src, deUint32 flags, deUint32 buffer, deUint32 stride, deUint32 offset) +{ + if ((flags & LAYOUT_MASK) != 0) + src << "layout(" << LayoutFlagsFmt(flags & LAYOUT_MASK, buffer, stride, offset) << ") "; + + if ((flags & PRECISION_MASK) != 0) + src << PrecisionFlagsFmt(flags & PRECISION_MASK) << " "; +} + +void generateDeclaration (std::ostringstream& src, const VarType& type, const std::string& name, int indentLevel, deUint32 fieldHints, deUint32 flagsMask, deUint32 buffer, deUint32 stride, deUint32 offset) +{ + if (fieldHints & FIELD_MISSING) + src << "// "; + + generateLayoutAndPrecisionDeclaration(src, type.getFlags() & flagsMask, buffer, stride, offset); + + if (type.isBasicType()) + src << glu::getDataTypeName(type.getBasicType()) << " " << name; + else if (type.isArrayType()) + { + std::vector arraySizes; + const VarType* curType = &type; + while (curType->isArrayType()) + { + arraySizes.push_back(curType->getArraySize()); + curType = &curType->getElementType(); + } + + generateLayoutAndPrecisionDeclaration(src, curType->getFlags() & flagsMask, buffer, stride, offset); + + if (curType->isBasicType()) + src << glu::getDataTypeName(curType->getBasicType()); + else + { + DE_ASSERT(curType->isStructType()); + generateLocalDeclaration(src, curType->getStruct(), indentLevel+1); + } + + src << " " << name; + + for (std::vector::const_iterator sizeIter = arraySizes.begin(); sizeIter != arraySizes.end(); sizeIter++) + src << "[" << *sizeIter << "]"; + } + else + { + generateLocalDeclaration(src, type.getStruct(), indentLevel+1); + src << " " << name; + } + + src << ";"; + + // Print out unused hints. + if (fieldHints & FIELD_MISSING) + src << " // missing field"; + else if (fieldHints & FIELD_UNASSIGNED) + src << " // unassigned"; + + src << "\n"; +} + +void generateDeclaration (std::ostringstream& src, const InterfaceBlockMember& member, int indentLevel, deUint32 buffer, deUint32 stride, deUint32 offset) +{ + if ((member.getFlags() & LAYOUT_MASK) != 0) + src << "layout(" << LayoutFlagsFmt(member.getFlags() & LAYOUT_MASK, buffer, stride, offset) << ") "; + + generateDeclaration(src, member.getType(), member.getName(), indentLevel, member.getFlags() & FIELD_OPTIONS, ~0u, buffer, stride, offset); +} + +deUint32 getBlockMemberOffset (int blockNdx, const InterfaceBlock& block, const InterfaceBlockMember& member, const InterfaceLayout& layout) +{ + std::ostringstream name; + const VarType* curType = &member.getType(); + + if (block.getInstanceName().length() != 0) + name << block.getBlockName() << "."; // \note InterfaceLayoutEntry uses block name rather than instance name + + name << member.getName(); + + while (!curType->isBasicType()) + { + if (curType->isArrayType()) + { + name << "[0]"; + curType = &curType->getElementType(); + } + + if (curType->isStructType()) + { + const StructType::ConstIterator firstMember = curType->getStruct().begin(); + + name << "." << firstMember->getName(); + curType = &firstMember->getType(); + } + } + + const int interfaceLayoutNdx = layout.getInterfaceLayoutIndex(blockNdx, name.str()); + DE_ASSERT(interfaceLayoutNdx >= 0); + + return layout.interfaces[interfaceLayoutNdx].offset; +} + +template +void semiShuffle (std::vector& v) +{ + const std::vector src = v; + int i = -1; + int n = static_cast(src.size()); + + v.clear(); + + while (n) + { + i += n; + v.push_back(src[i]); + n = (n > 0 ? 1 - n : -1 - n); + } +} + +template +//! \note Stores pointers to original elements +class Traverser +{ +public: + template + Traverser (const Iter beg, const Iter end, const bool shuffled) + { + for (Iter it = beg; it != end; ++it) + m_elements.push_back(&(*it)); + + if (shuffled) + semiShuffle(m_elements); + + m_next = m_elements.begin(); + } + + T* next (void) + { + if (m_next != m_elements.end()) + return *m_next++; + else + return DE_NULL; + } + +private: + typename std::vector m_elements; + typename std::vector::const_iterator m_next; +}; + +void generateDeclaration (std::ostringstream& src, int blockNdx, const InterfaceBlock& block, const InterfaceLayout& layout, bool shuffleUniformMembers) +{ + const int indentOne = 1; + const int ndx = layout.getBlockLayoutIndex(blockNdx, 0); + const int locationNdx = layout.blocks[ndx].locationNdx; + const int xfbOffset = layout.blocks[ndx].xfbOffset; + const int xfbBuffer = layout.blocks[ndx].xfbBuffer; + const int xfbStride = layout.blocks[ndx].xfbStride; + + src << "layout("; + src << "location = " << locationNdx; + if ((block.getFlags() & LAYOUT_MASK) != 0) + src << ", " << LayoutFlagsFmt(block.getFlags() & LAYOUT_MASK, xfbBuffer, xfbStride, xfbOffset); + src << ") out " << block.getBlockName(); + + src << " //" + << " sizeInBytes=" << layout.blocks[ndx].xfbSize + << " sizeInLocations=" << layout.blocks[ndx].locationSize; + + src << "\n{\n"; + + Traverser interfaces(block.begin(), block.end(), shuffleUniformMembers); + + while (const InterfaceBlockMember* pUniform = interfaces.next()) + { + src << Indent(indentOne); + generateDeclaration(src, *pUniform, indentOne, xfbBuffer, xfbStride, xfbOffset + getBlockMemberOffset(blockNdx, block, *pUniform, layout)); + } + + src << "}"; + + if (block.hasInstanceName()) + { + src << " " << block.getInstanceName(); + if (block.isArray()) + src << "[" << block.getArraySize() << "]"; + } + else + DE_ASSERT(!block.isArray()); + + src << ";\n"; +} + +int generateValueSrc (std::ostringstream& src, const InterfaceLayoutEntry& entry, const void* basePtr, int elementNdx) +{ + const glu::DataType scalarType = glu::getDataTypeScalarType(entry.type); + const int scalarSize = glu::getDataTypeScalarSize(entry.type); + const bool isArray = entry.arraySize > 1; + const deUint8* elemPtr = (const deUint8*)basePtr + entry.offset + (isArray ? elementNdx * entry.arrayStride : 0); + const size_t compSize = getDataTypeByteSize(scalarType); + + if (scalarSize > 1) + src << glu::getDataTypeName(entry.type) << "("; + + if (glu::isDataTypeMatrix(entry.type)) + { + const int numRows = glu::getDataTypeMatrixNumRows(entry.type); + const int numCols = glu::getDataTypeMatrixNumColumns(entry.type); + + DE_ASSERT(scalarType == glu::TYPE_FLOAT || scalarType == glu::TYPE_DOUBLE); + + // Constructed in column-wise order. + for (int colNdx = 0; colNdx < numCols; colNdx++) + { + for (int rowNdx = 0; rowNdx < numRows; rowNdx++) + { + const deUint8* compPtr = elemPtr + (colNdx * entry.matrixStride + rowNdx * compSize); + const float compVal = (scalarType == glu::TYPE_FLOAT) ? *((const float*)compPtr) + : (scalarType == glu::TYPE_DOUBLE) ? (float)*((const double*)compPtr) + : 0.0f; + + if (colNdx > 0 || rowNdx > 0) + src << ", "; + + src << de::floatToString(compVal, 1); + } + } + } + else + { + for (int scalarNdx = 0; scalarNdx < scalarSize; scalarNdx++) + { + const deUint8* compPtr = elemPtr + scalarNdx * compSize; + + if (scalarNdx > 0) + src << ", "; + + switch (scalarType) + { + case glu::TYPE_DOUBLE: src << de::floatToString((float)(*((const double*)compPtr)), 1); break; + case glu::TYPE_FLOAT: src << de::floatToString(*((const float*)compPtr), 1) << "f"; break; + case glu::TYPE_INT: src << *((const int*)compPtr); break; + case glu::TYPE_UINT: src << *((const deUint32*)compPtr) << "u"; break; + default: DE_ASSERT(false && "Invalid type"); break; + } + } + } + + if (scalarSize > 1) + src << ")"; + + return static_cast(elemPtr - static_cast(basePtr)); +} + +void writeMatrixTypeSrc (int columnCount, + int rowCount, + std::string type, + std::ostringstream& src, + const std::string& srcName, + const void* basePtr, + const InterfaceLayoutEntry& entry, + bool vector) +{ + if (vector) // generateTestSrcMatrixPerVec + { + for (int colNdx = 0; colNdx < columnCount; colNdx++) + { + src << "\t" << srcName << "[" << colNdx << "] = "; + + if (glu::isDataTypeMatrix(entry.type)) + { + const glu::DataType scalarType = glu::getDataTypeScalarType(entry.type); + const int scalarSize = glu::getDataTypeScalarSize(entry.type); + const deUint8* compPtr = (const deUint8*)basePtr + entry.offset; + + if (scalarSize > 1) + src << type << "("; + + for (int rowNdx = 0; rowNdx < rowCount; rowNdx++) + { + const float compVal = (scalarType == glu::TYPE_FLOAT) ? *((const float*)compPtr) + : (scalarType == glu::TYPE_DOUBLE) ? (float)*((const double*)compPtr) + : 0.0f; + + src << de::floatToString(compVal, 1); + + if (rowNdx < rowCount-1) + src << ", "; + } + + src << ");\n"; + } + else + { + generateValueSrc(src, entry, basePtr, 0); + src << "[" << colNdx << "];\n"; + } + } + } + else // generateTestSrcMatrixPerElement + { + const glu::DataType scalarType = glu::getDataTypeScalarType(entry.type); + + for (int colNdx = 0; colNdx < columnCount; colNdx++) + { + for (int rowNdx = 0; rowNdx < rowCount; rowNdx++) + { + src << "\t" << srcName << "[" << colNdx << "][" << rowNdx << "] = "; + if (glu::isDataTypeMatrix(entry.type)) + { + const deUint8* elemPtr = (const deUint8*)basePtr + entry.offset; + const size_t compSize = getDataTypeByteSize(scalarType); + const deUint8* compPtr = elemPtr + (colNdx * entry.matrixStride + rowNdx * compSize); + const float compVal = (scalarType == glu::TYPE_FLOAT) ? *((const float*)compPtr) + : (scalarType == glu::TYPE_DOUBLE) ? (float)*((const double*)compPtr) + : 0.0f; + + src << de::floatToString(compVal, 1) << ";\n"; + } + else + { + generateValueSrc(src, entry, basePtr, 0); + src << "[" << colNdx << "][" << rowNdx << "];\n"; + } + } + } + } +} + +void generateTestSrcMatrixPerVec (std::ostringstream& src, + glu::DataType elementType, + const std::string& srcName, + const void* basePtr, + const InterfaceLayoutEntry& entry) +{ + switch (elementType) + { + case glu::TYPE_FLOAT_MAT2: writeMatrixTypeSrc(2, 2, "vec2", src, srcName, basePtr, entry, true); break; + case glu::TYPE_FLOAT_MAT2X3: writeMatrixTypeSrc(2, 3, "vec3", src, srcName, basePtr, entry, true); break; + case glu::TYPE_FLOAT_MAT2X4: writeMatrixTypeSrc(2, 4, "vec4", src, srcName, basePtr, entry, true); break; + case glu::TYPE_FLOAT_MAT3X4: writeMatrixTypeSrc(3, 4, "vec4", src, srcName, basePtr, entry, true); break; + case glu::TYPE_FLOAT_MAT4: writeMatrixTypeSrc(4, 4, "vec4", src, srcName, basePtr, entry, true); break; + case glu::TYPE_FLOAT_MAT4X2: writeMatrixTypeSrc(4, 2, "vec2", src, srcName, basePtr, entry, true); break; + case glu::TYPE_FLOAT_MAT4X3: writeMatrixTypeSrc(4, 3, "vec3", src, srcName, basePtr, entry, true); break; + default: DE_ASSERT(false && "Invalid type"); break; + } +} + +void generateTestSrcMatrixPerElement (std::ostringstream& src, + glu::DataType elementType, + const std::string& srcName, + const void* basePtr, + const InterfaceLayoutEntry& entry) +{ + std::string type = "float"; + switch (elementType) + { + case glu::TYPE_FLOAT_MAT2: writeMatrixTypeSrc(2, 2, type, src, srcName, basePtr, entry, false); break; + case glu::TYPE_FLOAT_MAT2X3: writeMatrixTypeSrc(2, 3, type, src, srcName, basePtr, entry, false); break; + case glu::TYPE_FLOAT_MAT2X4: writeMatrixTypeSrc(2, 4, type, src, srcName, basePtr, entry, false); break; + case glu::TYPE_FLOAT_MAT3X4: writeMatrixTypeSrc(3, 4, type, src, srcName, basePtr, entry, false); break; + case glu::TYPE_FLOAT_MAT4: writeMatrixTypeSrc(4, 4, type, src, srcName, basePtr, entry, false); break; + case glu::TYPE_FLOAT_MAT4X2: writeMatrixTypeSrc(4, 2, type, src, srcName, basePtr, entry, false); break; + case glu::TYPE_FLOAT_MAT4X3: writeMatrixTypeSrc(4, 3, type, src, srcName, basePtr, entry, false); break; + default: DE_ASSERT(false && "Invalid type"); break; + } +} + +void generateSingleAssignment (std::ostringstream& src, + glu::DataType elementType, + const std::string& srcName, + const void* basePtr, + const InterfaceLayoutEntry& entry, + MatrixLoadFlags matrixLoadFlag) +{ + if (matrixLoadFlag == LOAD_FULL_MATRIX) + { + src << "\t" << srcName << " = "; + generateValueSrc(src, entry, basePtr, 0); + src << ";\n"; + } + else + { + if (glu::isDataTypeMatrix(elementType)) + { + generateTestSrcMatrixPerVec (src, elementType, srcName, basePtr, entry); + generateTestSrcMatrixPerElement (src, elementType, srcName, basePtr, entry); + } + } +} + +void generateAssignment (std::ostringstream& src, + const InterfaceLayout& layout, + const VarType& type, + const std::string& srcName, + const std::string& apiName, + int blockNdx, + const void* basePtr, + MatrixLoadFlags matrixLoadFlag) +{ + if (type.isBasicType() || (type.isArrayType() && type.getElementType().isBasicType())) + { + // Basic type or array of basic types. + bool isArray = type.isArrayType(); + glu::DataType elementType = isArray ? type.getElementType().getBasicType() : type.getBasicType(); + std::string fullApiName = std::string(apiName) + (isArray ? "[0]" : ""); // Arrays are always postfixed with [0] + int interfaceLayoutNdx = layout.getInterfaceLayoutIndex(blockNdx, fullApiName); + const InterfaceLayoutEntry& entry = layout.interfaces[interfaceLayoutNdx]; + + if (isArray) + { + for (int elemNdx = 0; elemNdx < type.getArraySize(); elemNdx++) + { + src << "\t" << srcName << "[" << elemNdx << "] = "; + generateValueSrc(src, entry, basePtr, elemNdx); + src << ";\n"; + } + } + else + { + generateSingleAssignment(src, elementType, srcName, basePtr, entry, matrixLoadFlag); + } + } + else if (type.isArrayType()) + { + const VarType& elementType = type.getElementType(); + + for (int elementNdx = 0; elementNdx < type.getArraySize(); elementNdx++) + { + const std::string op = std::string("[") + de::toString(elementNdx) + "]"; + const std::string elementSrcName = std::string(srcName) + op; + const std::string elementApiName = std::string(apiName) + op; + + generateAssignment(src, layout, elementType, elementSrcName, elementApiName, blockNdx, basePtr, LOAD_FULL_MATRIX); + } + } + else + { + DE_ASSERT(type.isStructType()); + + for (StructType::ConstIterator memberIter = type.getStruct().begin(); memberIter != type.getStruct().end(); memberIter++) + { + const StructMember& member = *memberIter; + const std::string op = std::string(".") + member.getName(); + const std::string memberSrcName = std::string(srcName) + op; + const std::string memberApiName = std::string(apiName) + op; + + if (0 == (member.getFlags() & (FIELD_UNASSIGNED | FIELD_MISSING))) + generateAssignment(src, layout, memberIter->getType(), memberSrcName, memberApiName, blockNdx, basePtr, LOAD_FULL_MATRIX); + } + } +} + +void generateAssignment (std::ostringstream& src, + const InterfaceLayout& layout, + const ShaderInterface& shaderInterface, + const std::map& blockPointers, + MatrixLoadFlags matrixLoadFlag) +{ + for (int blockNdx = 0; blockNdx < shaderInterface.getNumInterfaceBlocks(); blockNdx++) + { + const InterfaceBlock& block = shaderInterface.getInterfaceBlock(blockNdx); + + bool hasInstanceName = block.hasInstanceName(); + bool isArray = block.isArray(); + int numInstances = isArray ? block.getArraySize() : 1; + std::string apiPrefix = hasInstanceName ? block.getBlockName() + "." : std::string(""); + + DE_ASSERT(!isArray || hasInstanceName); + + for (int instanceNdx = 0; instanceNdx < numInstances; instanceNdx++) + { + std::string instancePostfix = isArray ? std::string("[") + de::toString(instanceNdx) + "]" : std::string(""); + std::string blockInstanceName = block.getBlockName() + instancePostfix; + std::string srcPrefix = hasInstanceName ? block.getInstanceName() + instancePostfix + "." : std::string(""); + int blockLayoutNdx = layout.getBlockLayoutIndex(blockNdx, instanceNdx); + void* basePtr = blockPointers.find(blockLayoutNdx)->second; + + for (InterfaceBlock::ConstIterator interfaceMemberIter = block.begin(); interfaceMemberIter != block.end(); interfaceMemberIter++) + { + const InterfaceBlockMember& interfaceMember = *interfaceMemberIter; + + if ((interfaceMember.getFlags() & (FIELD_MISSING | FIELD_UNASSIGNED)) == 0) + { + std::string srcName = srcPrefix + interfaceMember.getName(); + std::string apiName = apiPrefix + interfaceMember.getName(); + + generateAssignment(src, layout, interfaceMember.getType(), srcName, apiName, blockNdx, basePtr, matrixLoadFlag); + } + } + } + } +} + +std::string generatePassthroughShader () +{ + std::ostringstream src; + + src << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450) << "\n"; + + src << "\n" + "void main (void)\n" + "{\n" + "}\n"; + + return src.str(); +} + +std::string generateTestShader (const ShaderInterface& shaderInterface, const InterfaceLayout& layout, const std::map& blockPointers, MatrixLoadFlags matrixLoadFlag, TestStageFlags testStageFlags, bool shuffleUniformMembers) +{ + std::ostringstream src; + std::vector namedStructs; + + src << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450) << "\n\n"; + + if (testStageFlags == TEST_STAGE_GEOMETRY) + { + src << "layout(points) in;\n" + << "layout(points, max_vertices = 1) out;\n\n"; + } + + shaderInterface.getNamedStructs(namedStructs); + for (std::vector::const_iterator structIter = namedStructs.begin(); structIter != namedStructs.end(); structIter++) + generateDeclaration(src, **structIter, 0); + + for (int blockNdx = 0; blockNdx < shaderInterface.getNumInterfaceBlocks(); blockNdx++) + { + const InterfaceBlock& block = shaderInterface.getInterfaceBlock(blockNdx); + + generateDeclaration(src, blockNdx, block, layout, shuffleUniformMembers); + } + + src << "\n" + "void main (void)\n" + "{\n"; + + generateAssignment(src, layout, shaderInterface, blockPointers, matrixLoadFlag); + + if (testStageFlags == TEST_STAGE_GEOMETRY) + { + src << "\n" + << "\tEmitVertex();\n" + << "\tEndPrimitive();\n"; + } + + src << "}\n"; + + return src.str(); +} + +VkBufferCreateInfo makeBufferCreateInfo (const VkDeviceSize bufferSize, + const VkBufferUsageFlags usage) +{ + const VkBufferCreateInfo bufferCreateInfo = + { + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + (VkBufferCreateFlags)0, // VkBufferCreateFlags flags; + bufferSize, // VkDeviceSize size; + usage, // VkBufferUsageFlags usage; + VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; + 0u, // deUint32 queueFamilyIndexCount; + DE_NULL, // const deUint32* pQueueFamilyIndices; + }; + + return bufferCreateInfo; +} + +Move makePipelineLayout (const DeviceInterface& vk, + const VkDevice device) +{ + const VkPipelineLayoutCreateInfo pipelineLayoutCreateInfo = + { + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + (VkPipelineLayoutCreateFlags)0, // VkPipelineLayoutCreateFlags flags; + 0u, // deUint32 setLayoutCount; + DE_NULL, // const VkDescriptorSetLayout* pSetLayouts; + 0u, // deUint32 pushConstantRangeCount; + DE_NULL, // const VkPushConstantRange* pPushConstantRanges; + }; + + return createPipelineLayout(vk, device, &pipelineLayoutCreateInfo); +} + +Move makeGraphicsPipeline (const DeviceInterface& vk, + const VkDevice device, + const VkPipelineLayout pipelineLayout, + const VkRenderPass renderPass, + const VkShaderModule vertexModule, + const VkShaderModule geometryModule, + const VkExtent2D renderSize) +{ + const std::vector viewports (1, makeViewport(renderSize)); + const std::vector scissors (1, makeRect2D(renderSize)); + const VkPipelineVertexInputStateCreateInfo vertexInputStateCreateInfo = + { + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO, // VkStructureType sType + DE_NULL, // const void* pNext + (VkPipelineVertexInputStateCreateFlags)0, // VkPipelineVertexInputStateCreateFlags flags + 0u, // deUint32 vertexBindingDescriptionCount + DE_NULL, // const VkVertexInputBindingDescription* pVertexBindingDescriptions + 0u, // deUint32 vertexAttributeDescriptionCount + DE_NULL, // const VkVertexInputAttributeDescription* pVertexAttributeDescriptions + }; + + return makeGraphicsPipeline(vk, // const DeviceInterface& vk + device, // const VkDevice device + pipelineLayout, // const VkPipelineLayout pipelineLayout + vertexModule, // const VkShaderModule vertexShaderModule + DE_NULL, // const VkShaderModule tessellationControlModule + DE_NULL, // const VkShaderModule tessellationEvalModule + geometryModule, // const VkShaderModule geometryShaderModule + DE_NULL, // const VkShaderModule m_maxGeometryBlocksShaderModule + renderPass, // const VkRenderPass renderPass + viewports, // const std::vector& viewports + scissors, // const std::vector& scissors + VK_PRIMITIVE_TOPOLOGY_POINT_LIST, // const VkPrimitiveTopology topology + 0u, // const deUint32 subpass + 0u, // const deUint32 patchControlPoints + &vertexInputStateCreateInfo); // const VkPipelineVertexInputStateCreateInfo* vertexInputStateCreateInfo +} + +Move makeFramebuffer (const DeviceInterface& vk, + const VkDevice device, + const VkRenderPass renderPass, + const VkExtent2D& renderSize) +{ + const VkFramebufferCreateInfo framebufferInfo = + { + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + (VkFramebufferCreateFlags)0, // VkFramebufferCreateFlags flags; + renderPass, // VkRenderPass renderPass; + 0u, // deUint32 attachmentCount; + DE_NULL, // const VkImageView* pAttachments; + renderSize.width, // deUint32 width; + renderSize.height, // deUint32 height; + 1u, // deUint32 layers; + }; + + return createFramebuffer(vk, device, &framebufferInfo); +} + +// InterfaceBlockCaseInstance + +class InterfaceBlockCaseInstance : public vkt::TestInstance +{ +public: + InterfaceBlockCaseInstance (Context& context, + const InterfaceLayout& layout, + const std::map& blockPointers, + const std::vector& data, + const std::vector& tfBufBindingOffsets, + const std::vector& tfBufBindingSizes, + const deUint32 locationsRequired, + const TestStageFlags testStageFlags); + + virtual ~InterfaceBlockCaseInstance (void); + virtual tcu::TestStatus iterate (void); + +private: + Move getGeometryShaderModule (const DeviceInterface& vk, + const VkDevice device); + + bool usesFloat64 (void); + std::string validateValue (const InterfaceLayoutEntry& entry, const void* basePtr0, const void* basePtr, const void* receivedBasePtr); + std::string validateValues (const void* recievedDataPtr); + + typedef de::SharedPtr > VkBufferSp; + typedef de::SharedPtr AllocationSp; + + const InterfaceLayout& m_layout; + const std::vector& m_data; + const DeviceSizeVector& m_tfBufBindingOffsets; + const DeviceSizeVector& m_tfBufBindingSizes; + const std::map& m_blockPointers; + const deUint32 m_locationsRequired; + const TestStageFlags m_testStageFlags; + const VkExtent2D m_imageExtent2D; +}; + +InterfaceBlockCaseInstance::InterfaceBlockCaseInstance (Context& ctx, + const InterfaceLayout& layout, + const std::map& blockPointers, + const std::vector& data, + const std::vector& tfBufBindingOffsets, + const std::vector& tfBufBindingSizes, + const deUint32 locationsRequired, + const TestStageFlags testStageFlags) + : vkt::TestInstance (ctx) + , m_layout (layout) + , m_data (data) + , m_tfBufBindingOffsets (tfBufBindingOffsets) + , m_tfBufBindingSizes (tfBufBindingSizes) + , m_blockPointers (blockPointers) + , m_locationsRequired (locationsRequired) + , m_testStageFlags (testStageFlags) + , m_imageExtent2D (makeExtent2D(256u, 256u)) +{ + const deUint32 componentsPerLocation = 4u; + const deUint32 componentsRequired = m_locationsRequired * componentsPerLocation; + const InstanceInterface& vki = m_context.getInstanceInterface(); + const VkPhysicalDevice physDevice = m_context.getPhysicalDevice(); + const VkPhysicalDeviceTransformFeedbackFeaturesEXT& transformFeedbackFeatures = m_context.getTransformFeedbackFeatures(); + const VkPhysicalDeviceLimits limits = getPhysicalDeviceProperties(vki, physDevice).limits; + VkPhysicalDeviceTransformFeedbackPropertiesEXT transformFeedbackProperties; + VkPhysicalDeviceProperties2 deviceProperties2; + + if (transformFeedbackFeatures.transformFeedback == DE_FALSE) + TCU_THROW(NotSupportedError, "transformFeedback feature is not supported"); + + deMemset(&deviceProperties2, 0, sizeof(deviceProperties2)); + deMemset(&transformFeedbackProperties, 0x00, sizeof(transformFeedbackProperties)); + + deviceProperties2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2; + deviceProperties2.pNext = &transformFeedbackProperties; + + transformFeedbackProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT; + transformFeedbackProperties.pNext = DE_NULL; + + vki.getPhysicalDeviceProperties2(physDevice, &deviceProperties2); + + if (transformFeedbackProperties.maxTransformFeedbackBuffers < tfBufBindingSizes.size()) + TCU_THROW(NotSupportedError, "maxTransformFeedbackBuffers=" + de::toString(transformFeedbackProperties.maxTransformFeedbackBuffers) + " is less than required (" + de::toString(tfBufBindingSizes.size()) + ")"); + + if (transformFeedbackProperties.maxTransformFeedbackBufferDataSize < m_data.size()) + TCU_THROW(NotSupportedError, "maxTransformFeedbackBufferDataSize=" + de::toString(transformFeedbackProperties.maxTransformFeedbackBufferDataSize) + " is less than required (" + de::toString(m_data.size()) + ")"); + + if (m_testStageFlags == TEST_STAGE_VERTEX) + { + if (limits.maxVertexOutputComponents < componentsRequired) + TCU_THROW(NotSupportedError, "maxVertexOutputComponents=" + de::toString(limits.maxVertexOutputComponents) + " is less than required (" + de::toString(componentsRequired) + ")"); + } + + if (m_testStageFlags == TEST_STAGE_GEOMETRY) + { + if (limits.maxGeometryOutputComponents < componentsRequired) + TCU_THROW(NotSupportedError, "maxGeometryOutputComponents=" + de::toString(limits.maxGeometryOutputComponents) + " is less than required (" + de::toString(componentsRequired) + ")"); + } + + if (usesFloat64()) + m_context.requireDeviceCoreFeature(DEVICE_CORE_FEATURE_SHADER_FLOAT64); +} + +InterfaceBlockCaseInstance::~InterfaceBlockCaseInstance (void) +{ +} + +bool InterfaceBlockCaseInstance::usesFloat64 (void) +{ + for (size_t layoutNdx = 0; layoutNdx< m_layout.interfaces.size(); ++layoutNdx) + if (isDataTypeDoubleType(m_layout.interfaces[layoutNdx].type)) + return true; + + return false; +} + +Move InterfaceBlockCaseInstance::getGeometryShaderModule (const DeviceInterface& vk, + const VkDevice device) +{ + if (m_testStageFlags == TEST_STAGE_GEOMETRY) + return createShaderModule(vk, device, m_context.getBinaryCollection().get("geom"), 0u); + + return Move(); +} + +tcu::TestStatus InterfaceBlockCaseInstance::iterate (void) +{ + const DeviceInterface& vk = m_context.getDeviceInterface(); + const VkDevice device = m_context.getDevice(); + const deUint32 queueFamilyIndex = m_context.getUniversalQueueFamilyIndex(); + const VkQueue queue = m_context.getUniversalQueue(); + Allocator& allocator = m_context.getDefaultAllocator(); + + const Move vertModule (createShaderModule (vk, device, m_context.getBinaryCollection().get("vert"), 0u)); + const Move geomModule (getGeometryShaderModule(vk, device)); + const Move renderPass (makeRenderPass (vk, device, VK_FORMAT_UNDEFINED)); + const Move framebuffer (makeFramebuffer (vk, device, *renderPass, m_imageExtent2D)); + const Move pipelineLayout (makePipelineLayout (vk, device)); + const Move pipeline (makeGraphicsPipeline (vk, device, *pipelineLayout, *renderPass, *vertModule, *geomModule, m_imageExtent2D)); + const Move cmdPool (createCommandPool (vk, device, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, queueFamilyIndex)); + const Move cmdBuffer (allocateCommandBuffer (vk, device, *cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY)); + + const VkBufferCreateInfo tfBufCreateInfo = makeBufferCreateInfo(m_data.size(), VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT); + const Move tfBuf = createBuffer(vk, device, &tfBufCreateInfo); + const de::MovePtr tfBufAllocation = allocator.allocate(getBufferMemoryRequirements(vk, device, *tfBuf), MemoryRequirement::HostVisible); + const deUint32 tfBufBindingCount = static_cast(m_tfBufBindingOffsets.size()); + const std::vector tfBufBindings (tfBufBindingCount, *tfBuf); + + DE_ASSERT(tfBufBindings.size() == tfBufBindingCount); + + VK_CHECK(vk.bindBufferMemory(device, *tfBuf, tfBufAllocation->getMemory(), tfBufAllocation->getOffset())); + + deMemset(tfBufAllocation->getHostPtr(), 0, m_data.size()); + flushMappedMemoryRange(vk, device, tfBufAllocation->getMemory(), tfBufAllocation->getOffset(), VK_WHOLE_SIZE); + + beginCommandBuffer(vk, *cmdBuffer); + { + beginRenderPass(vk, *cmdBuffer, *renderPass, *framebuffer, makeRect2D(m_imageExtent2D)); + { + vk.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, *pipeline); + + vk.cmdBindTransformFeedbackBuffersEXT(*cmdBuffer, 0, tfBufBindingCount, &tfBufBindings[0], &m_tfBufBindingOffsets[0], &m_tfBufBindingSizes[0]); + + vk.cmdBeginTransformFeedbackEXT(*cmdBuffer, 0, 0, DE_NULL, DE_NULL); + { + vk.cmdDraw(*cmdBuffer, 1u, 1u, 0u, 0u); + } + vk.cmdEndTransformFeedbackEXT(*cmdBuffer, 0, 0, DE_NULL, DE_NULL); + } + endRenderPass(vk, *cmdBuffer); + } + endCommandBuffer(vk, *cmdBuffer); + submitCommandsAndWait(vk, device, queue, *cmdBuffer); + + invalidateMappedMemoryRange(vk, device, tfBufAllocation->getMemory(), tfBufAllocation->getOffset(), VK_WHOLE_SIZE); + + std::string result = validateValues(tfBufAllocation->getHostPtr()); + + if (!result.empty()) + return tcu::TestStatus::fail(result); + + return tcu::TestStatus::pass("Pass"); +} + +std::string InterfaceBlockCaseInstance::validateValue (const InterfaceLayoutEntry& entry, const void* basePtr0, const void* basePtr, const void* receivedBasePtr) +{ + const glu::DataType scalarType = glu::getDataTypeScalarType(entry.type); + const int scalarSize = glu::getDataTypeScalarSize(entry.type); + const bool isMatrix = glu::isDataTypeMatrix(entry.type); + const int numVecs = isMatrix ? glu::getDataTypeMatrixNumColumns(entry.type) : 1; + const int vecSize = scalarSize / numVecs; + const bool isArray = entry.arraySize > 1; + const size_t compSize = getDataTypeByteSize(scalarType); + std::string result; + + DE_ASSERT(scalarSize%numVecs == 0); + + for (int elemNdx = 0; elemNdx < entry.arraySize; elemNdx++) + { + deUint8* elemPtr = (deUint8*)basePtr + entry.offset + (isArray ? elemNdx*entry.arrayStride : 0); + + for (int vecNdx = 0; vecNdx < numVecs; vecNdx++) + { + deUint8* vecPtr = elemPtr + (isMatrix ? vecNdx*entry.matrixStride : 0); + + for (int compNdx = 0; compNdx < vecSize; compNdx++) + { + const deUint8* compPtr = vecPtr + compSize*compNdx; + const size_t offset = compPtr - (deUint8*)basePtr0; + const deUint8* receivedPtr = (deUint8*)receivedBasePtr + offset; + + switch (scalarType) + { + case glu::TYPE_DOUBLE: + { + const double expected = *((double*)compPtr); + const double received = *((double*)receivedPtr); + + if (deAbs(received - expected) > 0.05) + result = "Mismatch at offset " + de::toString(offset) + " expected " + de::toString(expected) + " received " + de::toString(received); + + break; + } + case glu::TYPE_FLOAT: + { + const float expected = *((float*)compPtr); + const float received = *((float*)receivedPtr); + + if (deAbs(received - expected) > 0.05) + result = "Mismatch at offset " + de::toString(offset) + " expected " + de::toString(expected) + " received " + de::toString(received); + + break; + } + case glu::TYPE_INT: + { + const deInt32 expected = *((deInt32*)compPtr); + const deInt32 received = *((deInt32*)receivedPtr); + + if (received != expected) + result = "Mismatch at offset " + de::toString(offset) + " expected " + de::toString(expected) + " received " + de::toString(received); + + break; + } + case glu::TYPE_UINT: + { + const deUint32 expected = *((deUint32*)compPtr); + const deUint32 received = *((deUint32*)receivedPtr); + + if (received != expected) + result = "Mismatch at offset " + de::toString(offset) + " expected " + de::toString(expected) + " received " + de::toString(received); + + break; + } + default: + DE_ASSERT(false); + } + + if (!result.empty()) + { + result += " (elemNdx=" + de::toString(elemNdx) + " vecNdx=" + de::toString(vecNdx) + " compNdx=" + de::toString(compNdx) + ")"; + + return result; + } + } + } + } + + return result; +} + +std::string InterfaceBlockCaseInstance::validateValues (const void* recievedDataPtr) +{ + const int numBlocks = (int)m_layout.blocks.size(); + + for (int blockNdx = 0; blockNdx < numBlocks; blockNdx++) + { + void* basePtr = m_blockPointers.find(blockNdx)->second; + int numEntries = (int)m_layout.blocks[blockNdx].activeInterfaceIndices.size(); + + for (int entryNdx = 0; entryNdx < numEntries; entryNdx++) + { + const InterfaceLayoutEntry& entry = m_layout.interfaces[m_layout.blocks[blockNdx].activeInterfaceIndices[entryNdx]]; + const std::string result = entry.validate ? validateValue(entry, &m_data[0], basePtr, recievedDataPtr) : ""; + + if (!result.empty()) + { + tcu::TestLog& log = m_context.getTestContext().getLog(); + std::vector mask = createMask(m_layout, m_blockPointers, &m_data[0], m_data.size()); + std::ostringstream str; + + str << "Error at entry '" << entry.name << "' block '" << m_layout.blocks[blockNdx].name << "'" << std::endl; + str << result << std::endl; + + str << m_layout; + + str << "Xfb buffer offsets: " << m_tfBufBindingOffsets << std::endl; + str << "Xfb buffer sizes: " << m_tfBufBindingSizes << std::endl << std::endl; + + dumpBytes(str, "Expected:", &m_data[0], m_data.size(), &mask[0]); + dumpBytes(str, "Retrieved:", recievedDataPtr, m_data.size(), &mask[0]); + + dumpBytes(str, "Expected (unfiltered):", &m_data[0], m_data.size()); + dumpBytes(str, "Retrieved (unfiltered):", recievedDataPtr, m_data.size()); + + log << tcu::TestLog::Message << str.str() << tcu::TestLog::EndMessage; + + return result; + } + } + } + + return std::string(); +} + +} // anonymous (utilities) + +// InterfaceBlockCase. + +InterfaceBlockCase::InterfaceBlockCase (tcu::TestContext& testCtx, + const std::string& name, + const std::string& description, + MatrixLoadFlags matrixLoadFlag, + TestStageFlags testStageFlags, + bool shuffleInterfaceMembers) + : TestCase (testCtx, name, description) + , m_matrixLoadFlag (matrixLoadFlag) + , m_testStageFlags (testStageFlags) + , m_shuffleInterfaceMembers (shuffleInterfaceMembers) + , m_locationsRequired (0) +{ +} + +InterfaceBlockCase::~InterfaceBlockCase (void) +{ +} + +void InterfaceBlockCase::initPrograms (vk::SourceCollections& programCollection) const +{ + DE_ASSERT(!m_vertShaderSource.empty()); + + programCollection.glslSources.add("vert") << glu::VertexSource(m_vertShaderSource); + + if (!m_geomShaderSource.empty()) + programCollection.glslSources.add("geom") << glu::GeometrySource(m_geomShaderSource); +} + +TestInstance* InterfaceBlockCase::createInstance (Context& context) const +{ + return new InterfaceBlockCaseInstance(context, m_interfaceLayout, m_blockPointers, m_data, m_tfBufBindingOffsets, m_tfBufBindingSizes, m_locationsRequired, m_testStageFlags); +} + +void InterfaceBlockCase::init (void) +{ + BufferGeneralMapping xfbBufferSize; + std::string notSupportedComment; + + // Compute reference layout. + computeXfbLayout(m_interfaceLayout, m_interface, xfbBufferSize, m_locationsRequired); + + // Assign storage for reference values. + // m_data contains all xfb buffers starting with all interfaces of first xfb_buffer, then all interfaces of next xfb_buffer + { + BufferGeneralMapping xfbBufferOffsets; + int totalSize = 0; + int maxXfb = 0; + + for (BufferGeneralMapping::const_iterator xfbBuffersIter = xfbBufferSize.begin(); xfbBuffersIter != xfbBufferSize.end(); xfbBuffersIter++) + { + xfbBufferOffsets[xfbBuffersIter->first] = totalSize; + totalSize += xfbBuffersIter->second; + maxXfb = std::max(maxXfb, xfbBuffersIter->first); + } + m_data.resize(totalSize); + + DE_ASSERT(de::inBounds(maxXfb, 0, 256)); // Not correlated with spec: just make sure vectors won't be huge + + m_tfBufBindingSizes.resize(maxXfb + 1); + for (BufferGeneralMapping::const_iterator xfbBuffersIter = xfbBufferSize.begin(); xfbBuffersIter != xfbBufferSize.end(); xfbBuffersIter++) + m_tfBufBindingSizes[xfbBuffersIter->first] = xfbBuffersIter->second; + + m_tfBufBindingOffsets.resize(maxXfb + 1); + for (BufferGeneralMapping::const_iterator xfbBuffersIter = xfbBufferOffsets.begin(); xfbBuffersIter != xfbBufferOffsets.end(); xfbBuffersIter++) + m_tfBufBindingOffsets[xfbBuffersIter->first] = xfbBuffersIter->second; + + // Pointers for each block. + for (int blockNdx = 0; blockNdx < (int)m_interfaceLayout.blocks.size(); blockNdx++) + { + const int dataXfbBufferStartOffset = xfbBufferOffsets[m_interfaceLayout.blocks[blockNdx].xfbBuffer]; + const int offset = dataXfbBufferStartOffset + m_interfaceLayout.blocks[blockNdx].xfbOffset; + + m_blockPointers[blockNdx] = &m_data[0] + offset; + } + } + + // Generate values. + generateValues(m_interfaceLayout, m_blockPointers, 1 /* seed */); + + // Overlap validation + { + std::vector mask = createMask(m_interfaceLayout, m_blockPointers, &m_data[0], m_data.size()); + + for (size_t maskNdx = 0; maskNdx < mask.size(); ++maskNdx) + DE_ASSERT(mask[maskNdx] <= 1); + } + + if (m_testStageFlags == TEST_STAGE_VERTEX) + { + m_vertShaderSource = generateTestShader(m_interface, m_interfaceLayout, m_blockPointers, m_matrixLoadFlag, m_testStageFlags, m_shuffleInterfaceMembers); + m_geomShaderSource = ""; + } + else if (m_testStageFlags == TEST_STAGE_GEOMETRY) + { + m_vertShaderSource = generatePassthroughShader(); + m_geomShaderSource = generateTestShader(m_interface, m_interfaceLayout, m_blockPointers, m_matrixLoadFlag, m_testStageFlags, m_shuffleInterfaceMembers); + } + else + { + DE_ASSERT(false && "Unknown test stage specified"); + } +} + +} // TransformFeedback +} // vkt diff --git a/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackFuzzLayoutCase.hpp b/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackFuzzLayoutCase.hpp new file mode 100644 index 0000000..5043226 --- /dev/null +++ b/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackFuzzLayoutCase.hpp @@ -0,0 +1,353 @@ +#ifndef _VKTTRANSFORMFEEDBACKFUZZLAYOUTCASE_HPP +#define _VKTTRANSFORMFEEDBACKFUZZLAYOUTCASE_HPP +/*------------------------------------------------------------------------ + * Vulkan Conformance Tests + * ------------------------ + * + * Copyright (c) 2015 The Khronos Group Inc. + * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * Copyright (c) 2018 The Khronos Group Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + *//*! + * \file + * \brief Vulkan Transform Feedback Fuzz Layout Tests + *//*--------------------------------------------------------------------*/ + +#include "deSharedPtr.hpp" +#include "vktTestCase.hpp" +#include "tcuDefs.hpp" +#include "gluShaderUtil.hpp" + +#include + +namespace vkt +{ +namespace TransformFeedback +{ + +// Interface block details. + +enum InterfaceFlags +{ + PRECISION_LOW = (1<<0), + PRECISION_MEDIUM = (1<<1), + PRECISION_HIGH = (1<<2), + PRECISION_MASK = PRECISION_LOW|PRECISION_MEDIUM|PRECISION_HIGH, + + LAYOUT_XFBBUFFER = (1<<3), + LAYOUT_XFBOFFSET = (1<<4), + LAYOUT_XFBSTRIDE = (1<<5), + LAYOUT_MASK = LAYOUT_XFBBUFFER|LAYOUT_XFBOFFSET|LAYOUT_XFBSTRIDE, + + FIELD_UNASSIGNED = (1<<6), //!< Interface or struct member is not used in shader. + FIELD_MISSING = (1<<7), //!< Interface or struct member will be commented out in shader. + FIELD_OPTIONS = FIELD_UNASSIGNED|FIELD_MISSING, +}; + +enum MatrixLoadFlags +{ + LOAD_FULL_MATRIX = 0, + LOAD_MATRIX_COMPONENTS = 1, +}; + +enum TestStageFlags +{ + TEST_STAGE_VERTEX = 0, + TEST_STAGE_GEOMETRY = 1, +}; + +class StructType; + +class VarType +{ +public: + VarType (void); + VarType (const VarType& other); + VarType (glu::DataType basicType, deUint32 flags); + VarType (const VarType& elementType, int arraySize); + explicit VarType (const StructType* structPtr, deUint32 flags = 0u); + ~VarType (void); + + bool isBasicType (void) const { return m_type == TYPE_BASIC; } + bool isArrayType (void) const { return m_type == TYPE_ARRAY; } + bool isStructType (void) const { return m_type == TYPE_STRUCT; } + + deUint32 getFlags (void) const { return m_flags; } + glu::DataType getBasicType (void) const { return m_data.basicType; } + + const VarType& getElementType (void) const { return *m_data.array.elementType; } + int getArraySize (void) const { return m_data.array.size; } + + const StructType& getStruct (void) const { return *m_data.structPtr; } + + VarType& operator= (const VarType& other); + +private: + enum Type + { + TYPE_BASIC, + TYPE_ARRAY, + TYPE_STRUCT, + + TYPE_LAST + }; + + Type m_type; + deUint32 m_flags; + union Data + { + glu::DataType basicType; + struct + { + VarType* elementType; + int size; + } array; + const StructType* structPtr; + + Data (void) + { + array.elementType = DE_NULL; + array.size = 0; + }; + } m_data; +}; + +class StructMember +{ +public: + StructMember (const std::string& name, const VarType& type, deUint32 flags) + : m_name(name) + , m_type(type) + , m_flags(flags) + {} + + StructMember (void) + : m_flags(0) + {} + + const std::string& getName (void) const { return m_name; } + const VarType& getType (void) const { return m_type; } + deUint32 getFlags (void) const { return m_flags; } + +private: + std::string m_name; + VarType m_type; + deUint32 m_flags; +}; + +class StructType +{ +public: + typedef std::vector::iterator Iterator; + typedef std::vector::const_iterator ConstIterator; + + StructType (const std::string& typeName) : m_typeName(typeName) {} + ~StructType (void) {} + + const std::string& getTypeName (void) const { return m_typeName; } + bool hasTypeName (void) const { return !m_typeName.empty(); } + + inline Iterator begin (void) { return m_members.begin(); } + inline ConstIterator begin (void) const { return m_members.begin(); } + inline Iterator end (void) { return m_members.end(); } + inline ConstIterator end (void) const { return m_members.end(); } + + void addMember (const std::string& name, const VarType& type, deUint32 flags = 0); + +private: + std::string m_typeName; + std::vector m_members; +}; + +class InterfaceBlockMember +{ +public: + InterfaceBlockMember (const std::string& name, const VarType& type, deUint32 flags = 0); + + const std::string& getName (void) const { return m_name; } + const VarType& getType (void) const { return m_type; } + deUint32 getFlags (void) const { return m_flags; } + +private: + std::string m_name; + VarType m_type; + deUint32 m_flags; +}; + +class InterfaceBlock +{ +public: + typedef std::vector::iterator Iterator; + typedef std::vector::const_iterator ConstIterator; + + InterfaceBlock (const std::string& blockName); + + const std::string& getBlockName (void) const { return m_blockName; } + bool hasInstanceName (void) const { return !m_instanceName.empty(); } + const std::string& getInstanceName (void) const { return m_instanceName; } + bool isArray (void) const { return m_arraySize > 0; } + int getArraySize (void) const { return m_arraySize; } + int getXfbBuffer (void) const { return m_xfbBuffer; } + deUint32 getFlags (void) const { return m_flags; } + + void setInstanceName (const std::string& name) { m_instanceName = name; } + void setFlags (deUint32 flags) { m_flags = flags; } + void setFlag (deUint32 flag) { m_flags |= flag; } + void setArraySize (int arraySize) { m_arraySize = arraySize; } + void setXfbBuffer (int xfbBuffer) { m_xfbBuffer = xfbBuffer; } + void addInterfaceMember (const InterfaceBlockMember& interfaceBlockMember) { m_members.push_back(interfaceBlockMember); } + + inline Iterator begin (void) { return m_members.begin(); } + inline ConstIterator begin (void) const { return m_members.begin(); } + inline Iterator end (void) { return m_members.end(); } + inline ConstIterator end (void) const { return m_members.end(); } + +private: + std::string m_blockName; + std::string m_instanceName; + std::vector m_members; + int m_xfbBuffer; + int m_arraySize; //!< Array size or 0 if not interface block array. + deUint32 m_flags; +}; + +typedef de::SharedPtr StructTypeSP; +typedef de::SharedPtr InterfaceBlockSP; + +class ShaderInterface +{ +public: + ShaderInterface (void); + ~ShaderInterface (void); + + StructType& allocStruct (const std::string& name); + void getNamedStructs (std::vector& structs) const; + + InterfaceBlock& allocBlock (const std::string& name); + + int getNumInterfaceBlocks (void) const { return (int)m_interfaceBlocks.size(); } + const InterfaceBlock& getInterfaceBlock (int ndx) const { return *m_interfaceBlocks[ndx]; } + InterfaceBlock& getInterfaceBlockForModify (int ndx) { return *m_interfaceBlocks[ndx]; } + +private: + std::vector m_structs; + std::vector m_interfaceBlocks; +}; + +struct BlockLayoutEntry +{ + BlockLayoutEntry (void) + : xfbBuffer (-1) + , xfbOffset (-1) + , xfbSize (0) + , xfbStride (0) + , blockDeclarationNdx (-1) + , instanceNdx (-1) + , locationNdx (-1) + , locationSize (-1) + { + } + + std::string name; + int xfbBuffer; + int xfbOffset; + int xfbSize; + int xfbStride; + std::vector activeInterfaceIndices; + int blockDeclarationNdx; + int instanceNdx; + // Location are not used for transform feedback, but they must be not overlap to pass GLSL compiler + int locationNdx; + int locationSize; +}; + +struct InterfaceLayoutEntry +{ + InterfaceLayoutEntry (void) + : type (glu::TYPE_LAST) + , arraySize (0) + , blockLayoutNdx(-1) + , offset (-1) + , arrayStride (-1) + , matrixStride (-1) + , instanceNdx (0) + , locationNdx (-1) + , validate (true) + { + } + + std::string name; + glu::DataType type; + int arraySize; + int blockLayoutNdx; + int offset; + int arrayStride; + int matrixStride; + int instanceNdx; + // Location are not used for transform feedback, but they must be not overlap to pass GLSL compiler + int locationNdx; + bool validate; +}; + +class InterfaceLayout +{ +public: + std::vector blocks; + std::vector interfaces; + + int getInterfaceLayoutIndex (int blockDeclarationNdx, const std::string& name) const; + int getBlockLayoutIndex (int blockDeclarationNdx, int instanceNdx) const; +}; + +typedef std::vector DeviceSizeVector; + +class InterfaceBlockCase : public vkt::TestCase +{ +public: + InterfaceBlockCase (tcu::TestContext& testCtx, + const std::string& name, + const std::string& description, + MatrixLoadFlags matrixLoadFlag, + TestStageFlags testStageFlag, + bool shuffleInterfaceMembers = false); + ~InterfaceBlockCase (void); + + virtual void initPrograms (vk::SourceCollections& programCollection) const; + virtual TestInstance* createInstance (Context& context) const; + +protected: + void init (void); + + ShaderInterface m_interface; + MatrixLoadFlags m_matrixLoadFlag; + TestStageFlags m_testStageFlags; + bool m_shuffleInterfaceMembers; //!< Used with explicit offsets to test out of order member offsets + deUint32 m_locationsRequired; + +private: + std::string m_vertShaderSource; + std::string m_geomShaderSource; + + std::vector m_data; //!< Data. + DeviceSizeVector m_tfBufBindingSizes; + DeviceSizeVector m_tfBufBindingOffsets; + std::map m_blockPointers; //!< Reference block pointers. + InterfaceLayout m_interfaceLayout; //!< interface layout. +}; + +} // TransformFeedback +} // vkt + +#endif // _VKTTRANSFORMFEEDBACKFUZZLAYOUTCASE_HPP diff --git a/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackFuzzLayoutTests.cpp b/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackFuzzLayoutTests.cpp new file mode 100644 index 0000000..3625629 --- /dev/null +++ b/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackFuzzLayoutTests.cpp @@ -0,0 +1,784 @@ +/*------------------------------------------------------------------------ + * Vulkan Conformance Tests + * ------------------------ + * + * Copyright (c) 2015 The Khronos Group Inc. + * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * Copyright (c) 2016 The Android Open Source Project + * Copyright (c) 2018 The Khronos Group Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + *//*! + * \file + * \brief Vulkan Transform Feedback Fuzz Layout Tests + *//*--------------------------------------------------------------------*/ + +#include "vktTransformFeedbackFuzzLayoutCase.hpp" +#include "vktTransformFeedbackRandomLayoutCase.hpp" + +#include "tcuCommandLine.hpp" +#include "deStringUtil.hpp" + +namespace vkt +{ +namespace TransformFeedback +{ + +namespace +{ + +class BlockBasicTypeCase : public InterfaceBlockCase +{ +public: + BlockBasicTypeCase (tcu::TestContext& testCtx, + const std::string& name, + const std::string& description, + const VarType& type, + deUint32 layoutFlags, + int numInstances, + MatrixLoadFlags matrixLoadFlag, + TestStageFlags testStageFlags) + : InterfaceBlockCase(testCtx, name, description, matrixLoadFlag, testStageFlags) + { + InterfaceBlock& block = m_interface.allocBlock("Block"); + block.addInterfaceMember(InterfaceBlockMember("var", type, 0)); + + VarType tempType = type; + while (tempType.isArrayType()) + { + tempType = tempType.getElementType(); + } + + block.setFlags(layoutFlags); + + if (numInstances > 0) + { + block.setArraySize(numInstances); + block.setInstanceName("block"); + } + + init(); + } +}; + +void createBlockBasicTypeCases (tcu::TestCaseGroup& group, tcu::TestContext& testCtx, const std::string& name, const VarType& type, deUint32 layoutFlags, int numInstances = 0) +{ + de::MovePtr typeGroup(new tcu::TestCaseGroup(group.getTestContext(), name.c_str(), "")); + + typeGroup->addChild(new BlockBasicTypeCase(testCtx, "vertex", "", type, layoutFlags, numInstances, LOAD_FULL_MATRIX, TEST_STAGE_VERTEX)); + typeGroup->addChild(new BlockBasicTypeCase(testCtx, "geometry", "", type, layoutFlags, numInstances, LOAD_FULL_MATRIX, TEST_STAGE_GEOMETRY)); + + group.addChild(typeGroup.release()); +} + +class BlockSingleStructCase : public InterfaceBlockCase +{ +public: + BlockSingleStructCase (tcu::TestContext& testCtx, + const std::string& name, + const std::string& description, + deUint32 layoutFlags, + int numInstances, + MatrixLoadFlags matrixLoadFlag, + TestStageFlags testStageFlags) + : InterfaceBlockCase (testCtx, name, description, matrixLoadFlag, testStageFlags) + { + StructType& typeS = m_interface.allocStruct("S"); + typeS.addMember("a", VarType(glu::TYPE_INT_VEC3, PRECISION_HIGH), FIELD_UNASSIGNED); // First member is unused. + typeS.addMember("b", VarType(VarType(glu::TYPE_FLOAT_VEC3, PRECISION_HIGH), 2)); + typeS.addMember("c", VarType(glu::TYPE_FLOAT_MAT3, PRECISION_MEDIUM)); + + InterfaceBlock& block = m_interface.allocBlock("Block"); + block.addInterfaceMember(InterfaceBlockMember("s", VarType(&typeS), 0)); + block.setFlags(layoutFlags); + + if (numInstances > 0) + { + block.setInstanceName("block"); + block.setArraySize(numInstances); + } + + init(); + } +}; + +class BlockSingleStructArrayCase : public InterfaceBlockCase +{ +public: + BlockSingleStructArrayCase (tcu::TestContext& testCtx, + const std::string& name, + const std::string& description, + deUint32 layoutFlags, + int numInstances, + MatrixLoadFlags matrixLoadFlag, + TestStageFlags testStageFlags) + : InterfaceBlockCase (testCtx, name, description, matrixLoadFlag, testStageFlags) + { + StructType& typeS = m_interface.allocStruct("S"); + typeS.addMember("a", VarType(glu::TYPE_INT_VEC3, PRECISION_HIGH), FIELD_UNASSIGNED); + typeS.addMember("b", VarType(VarType(glu::TYPE_FLOAT_MAT2, PRECISION_MEDIUM), 2)); + typeS.addMember("c", VarType(glu::TYPE_FLOAT, PRECISION_HIGH)); + + InterfaceBlock& block = m_interface.allocBlock("Block"); + block.addInterfaceMember(InterfaceBlockMember("u", VarType(glu::TYPE_UINT, PRECISION_LOW))); + block.addInterfaceMember(InterfaceBlockMember("s", VarType(VarType(&typeS), 2))); + block.addInterfaceMember(InterfaceBlockMember("v", VarType(glu::TYPE_FLOAT_VEC4, PRECISION_MEDIUM))); + block.setFlags(layoutFlags); + + if (numInstances > 0) + { + block.setInstanceName("block"); + block.setArraySize(numInstances); + } + + init(); + } +}; + +class BlockSingleNestedStructCase : public InterfaceBlockCase +{ +public: + BlockSingleNestedStructCase (tcu::TestContext& testCtx, + const std::string& name, + const std::string& description, + deUint32 layoutFlags, + int numInstances, + MatrixLoadFlags matrixLoadFlag, + TestStageFlags testStageFlags) + : InterfaceBlockCase (testCtx, name, description, matrixLoadFlag, testStageFlags) + { + StructType& typeS = m_interface.allocStruct("S"); + typeS.addMember("a", VarType(glu::TYPE_INT_VEC3, PRECISION_HIGH)); + typeS.addMember("b", VarType(VarType(glu::TYPE_FLOAT_MAT2, PRECISION_MEDIUM), 2)); + typeS.addMember("c", VarType(glu::TYPE_FLOAT, PRECISION_HIGH), FIELD_UNASSIGNED); + + StructType& typeT = m_interface.allocStruct("T"); + typeT.addMember("a", VarType(glu::TYPE_FLOAT_VEC3, PRECISION_MEDIUM)); + typeT.addMember("b", VarType(&typeS)); + + InterfaceBlock& block = m_interface.allocBlock("Block"); + block.addInterfaceMember(InterfaceBlockMember("s", VarType(&typeS), 0)); + block.addInterfaceMember(InterfaceBlockMember("v", VarType(glu::TYPE_UINT, PRECISION_LOW), FIELD_UNASSIGNED)); + block.addInterfaceMember(InterfaceBlockMember("t", VarType(&typeT), 0)); + block.addInterfaceMember(InterfaceBlockMember("u", VarType(glu::TYPE_FLOAT_VEC2, PRECISION_HIGH), 0)); + block.setFlags(layoutFlags); + + if (numInstances > 0) + { + block.setInstanceName("block"); + block.setArraySize(numInstances); + } + + init(); + } +}; + +class BlockSingleNestedStructArrayCase : public InterfaceBlockCase +{ +public: + BlockSingleNestedStructArrayCase (tcu::TestContext& testCtx, + const std::string& name, + const std::string& description, + deUint32 layoutFlags, + int numInstances, + MatrixLoadFlags matrixLoadFlag, + TestStageFlags testStageFlags) + : InterfaceBlockCase (testCtx, name, description, matrixLoadFlag, testStageFlags) + { + StructType& typeS = m_interface.allocStruct("S"); + typeS.addMember("a", VarType(VarType(glu::TYPE_FLOAT, PRECISION_HIGH), 2)); + + StructType& typeT = m_interface.allocStruct("T"); + typeT.addMember("a", VarType(glu::TYPE_FLOAT_MAT2, PRECISION_MEDIUM)); + typeT.addMember("b", VarType(VarType(&typeS), 2)); + + InterfaceBlock& block = m_interface.allocBlock("Block"); + block.addInterfaceMember(InterfaceBlockMember("s", VarType(&typeS), 0)); + block.addInterfaceMember(InterfaceBlockMember("v", VarType(glu::TYPE_FLOAT_VEC2, PRECISION_LOW), FIELD_UNASSIGNED)); + block.addInterfaceMember(InterfaceBlockMember("t", VarType(VarType(&typeT), 2), 0)); + block.addInterfaceMember(InterfaceBlockMember("u", VarType(glu::TYPE_UINT, PRECISION_HIGH), 0)); + block.setFlags(layoutFlags); + + if (numInstances > 0) + { + block.setInstanceName("block"); + block.setArraySize(numInstances); + } + + init(); + } +}; + +class BlockMultiBasicTypesCase : public InterfaceBlockCase +{ +public: + BlockMultiBasicTypesCase (tcu::TestContext& testCtx, + const std::string& name, + const std::string& description, + deUint32 flagsA, + deUint32 flagsB, + int numInstances, + MatrixLoadFlags matrixLoadFlag, + TestStageFlags testStageFlags) + : InterfaceBlockCase (testCtx, name, description, matrixLoadFlag, testStageFlags) + { + InterfaceBlock& blockA = m_interface.allocBlock("BlockA"); + blockA.addInterfaceMember(InterfaceBlockMember("a", VarType(glu::TYPE_FLOAT, PRECISION_HIGH))); + blockA.addInterfaceMember(InterfaceBlockMember("b", VarType(glu::TYPE_UINT_VEC3, PRECISION_LOW), FIELD_UNASSIGNED)); + blockA.addInterfaceMember(InterfaceBlockMember("c", VarType(glu::TYPE_FLOAT_MAT2, PRECISION_MEDIUM))); + blockA.setInstanceName("blockA"); + blockA.setFlags(flagsA); + + InterfaceBlock& blockB = m_interface.allocBlock("BlockB"); + blockB.addInterfaceMember(InterfaceBlockMember("a", VarType(glu::TYPE_FLOAT_MAT3, PRECISION_MEDIUM))); + blockB.addInterfaceMember(InterfaceBlockMember("b", VarType(glu::TYPE_INT_VEC2, PRECISION_LOW))); + blockB.addInterfaceMember(InterfaceBlockMember("c", VarType(glu::TYPE_FLOAT_VEC4, PRECISION_HIGH), FIELD_UNASSIGNED)); + blockB.addInterfaceMember(InterfaceBlockMember("d", VarType(glu::TYPE_INT, 0))); + blockB.setInstanceName("blockB"); + blockB.setFlags(flagsB); + + if (numInstances > 0) + { + blockA.setArraySize(numInstances); + blockB.setArraySize(numInstances); + } + + init(); + } +}; + +class BlockMultiNestedStructCase : public InterfaceBlockCase +{ +public: + BlockMultiNestedStructCase (tcu::TestContext& testCtx, + const std::string& name, + const std::string& description, + deUint32 flagsA, + deUint32 flagsB, + int numInstances, + MatrixLoadFlags matrixLoadFlag, + TestStageFlags testStageFlags) + : InterfaceBlockCase (testCtx, name, description, matrixLoadFlag, testStageFlags) + { + StructType& typeS = m_interface.allocStruct("S"); + typeS.addMember("a", VarType(glu::TYPE_FLOAT_MAT2, PRECISION_LOW)); + typeS.addMember("b", VarType(VarType(glu::TYPE_INT_VEC2, PRECISION_MEDIUM), 2)); + + StructType& typeT = m_interface.allocStruct("T"); + typeT.addMember("a", VarType(glu::TYPE_UINT, PRECISION_MEDIUM), FIELD_UNASSIGNED); + typeT.addMember("b", VarType(&typeS)); + typeT.addMember("c", VarType(glu::TYPE_UINT_VEC3, 0)); + + InterfaceBlock& blockA = m_interface.allocBlock("BlockA"); + blockA.addInterfaceMember(InterfaceBlockMember("a", VarType(glu::TYPE_FLOAT, PRECISION_HIGH))); + blockA.addInterfaceMember(InterfaceBlockMember("b", VarType(&typeS))); + blockA.addInterfaceMember(InterfaceBlockMember("c", VarType(glu::TYPE_UINT, PRECISION_LOW), FIELD_UNASSIGNED)); + blockA.setInstanceName("blockA"); + blockA.setFlags(flagsA); + + InterfaceBlock& blockB = m_interface.allocBlock("BlockB"); + blockB.addInterfaceMember(InterfaceBlockMember("a", VarType(glu::TYPE_FLOAT_MAT2, PRECISION_MEDIUM))); + blockB.addInterfaceMember(InterfaceBlockMember("b", VarType(&typeT))); + blockB.addInterfaceMember(InterfaceBlockMember("c", VarType(glu::TYPE_INT, 0))); + blockB.setInstanceName("blockB"); + blockB.setFlags(flagsB); + + if (numInstances > 0) + { + blockA.setArraySize(numInstances); + blockB.setArraySize(numInstances); + } + + init(); + } +}; + +class BlockVariousBuffersCase : public InterfaceBlockCase +{ +public: + BlockVariousBuffersCase (tcu::TestContext& testCtx, + const std::string& name, + const std::string& description, + deUint32 flags, + deUint32 xfbBufferA, + deUint32 xfbBufferB, + deUint32 xfbBufferC, + int numInstances, + MatrixLoadFlags matrixLoadFlag, + TestStageFlags testStageFlags) + : InterfaceBlockCase (testCtx, name, description, matrixLoadFlag, testStageFlags) + { + StructType& typeS = m_interface.allocStruct("S"); + typeS.addMember("a", VarType(VarType(glu::TYPE_FLOAT, PRECISION_LOW), 3)); + typeS.addMember("b", VarType(VarType(glu::TYPE_FLOAT_VEC2, PRECISION_MEDIUM), 2)); + typeS.addMember("c", VarType(glu::TYPE_FLOAT_VEC4, PRECISION_HIGH)); + + StructType& typeT = m_interface.allocStruct("T"); + typeT.addMember("a", VarType(glu::TYPE_UINT, PRECISION_MEDIUM), FIELD_UNASSIGNED); + typeT.addMember("b", VarType(glu::TYPE_INT_VEC3, 0)); + + InterfaceBlock& blockA = m_interface.allocBlock("BlockA"); + blockA.addInterfaceMember(InterfaceBlockMember("a", VarType(glu::TYPE_INT, PRECISION_HIGH))); + blockA.addInterfaceMember(InterfaceBlockMember("b", VarType(&typeS))); + blockA.addInterfaceMember(InterfaceBlockMember("c", VarType(glu::TYPE_UINT_VEC3, PRECISION_LOW), FIELD_UNASSIGNED)); + blockA.setInstanceName("blockA"); + blockA.setFlags(flags); + blockA.setXfbBuffer(xfbBufferA); + + InterfaceBlock& blockB = m_interface.allocBlock("BlockB"); + blockB.addInterfaceMember(InterfaceBlockMember("a", VarType(glu::TYPE_FLOAT_MAT2, PRECISION_MEDIUM))); + blockB.addInterfaceMember(InterfaceBlockMember("b", VarType(&typeT))); + blockB.addInterfaceMember(InterfaceBlockMember("c", VarType(glu::TYPE_INT_VEC4, 0), FIELD_UNASSIGNED)); + blockB.addInterfaceMember(InterfaceBlockMember("d", VarType(glu::TYPE_INT, 0))); + blockB.setInstanceName("blockB"); + blockB.setFlags(flags); + blockB.setXfbBuffer(xfbBufferB); + + InterfaceBlock& blockC = m_interface.allocBlock("BlockC"); + blockC.addInterfaceMember(InterfaceBlockMember("a", VarType(glu::TYPE_UINT, PRECISION_HIGH))); + blockC.addInterfaceMember(InterfaceBlockMember("b", VarType(glu::TYPE_FLOAT_MAT2, PRECISION_HIGH))); + blockC.setInstanceName("blockC"); + blockC.setFlags(flags); + blockC.setXfbBuffer(xfbBufferC); + + if (numInstances > 0) + { + blockA.setArraySize(numInstances); + blockB.setArraySize(numInstances); + } + + init(); + } +}; + +class Block2LevelStructArrayCase : public InterfaceBlockCase +{ +public: + Block2LevelStructArrayCase (tcu::TestContext& testCtx, + const std::string& name, + const std::string& description, + deUint32 flags, + int numInstances, + MatrixLoadFlags matrixLoadFlag, + TestStageFlags testStageFlags) + : InterfaceBlockCase (testCtx, name, description, matrixLoadFlag, testStageFlags) + { + StructType& typeS = m_interface.allocStruct("S"); + typeS.addMember("a", VarType(glu::TYPE_UINT_VEC3, PRECISION_HIGH), FIELD_UNASSIGNED); + typeS.addMember("b", VarType(glu::TYPE_FLOAT_MAT2, PRECISION_MEDIUM)); + + InterfaceBlock& block = m_interface.allocBlock("Block"); + block.addInterfaceMember(InterfaceBlockMember("u", VarType(glu::TYPE_INT, PRECISION_MEDIUM))); + block.addInterfaceMember(InterfaceBlockMember("s", VarType(VarType(VarType(&typeS), 2), 2))); + block.addInterfaceMember(InterfaceBlockMember("v", VarType(glu::TYPE_FLOAT_VEC2, PRECISION_MEDIUM))); + block.setFlags(flags); + + if (numInstances > 0) + { + block.setInstanceName("block"); + block.setArraySize(numInstances); + } + + init(); + } +}; + +void createRandomCaseGroup (tcu::TestCaseGroup* parentGroup, tcu::TestContext& testCtx, const char* groupName, const char* description, deUint32 numCases, TestStageFlags testStageFlags, deUint32 features) +{ + const deUint32 baseSeed = deStringHash(groupName) + static_cast(testCtx.getCommandLine().getBaseSeed()); + tcu::TestCaseGroup* group = new tcu::TestCaseGroup(testCtx, groupName, description); + + parentGroup->addChild(group); + + for (deUint32 ndx = 0; ndx < numCases; ndx++) + group->addChild(new RandomInterfaceBlockCase(testCtx, de::toString(ndx), "", testStageFlags, features, ndx + baseSeed)); +} + +// InterfaceBlockTests + +class InterfaceBlockTests : public tcu::TestCaseGroup +{ +public: + InterfaceBlockTests (tcu::TestContext& testCtx); + ~InterfaceBlockTests (void); + + void init (void); + +private: + InterfaceBlockTests (const InterfaceBlockTests& other); + InterfaceBlockTests& operator= (const InterfaceBlockTests& other); +}; + +InterfaceBlockTests::InterfaceBlockTests (tcu::TestContext& testCtx) + : TestCaseGroup(testCtx, "fuzz", "Transform feedback fuzz tests") +{ +} + +InterfaceBlockTests::~InterfaceBlockTests (void) +{ +} + +void InterfaceBlockTests::init (void) +{ + static const glu::DataType basicTypes[] = + { + glu::TYPE_FLOAT, + glu::TYPE_FLOAT_VEC2, + glu::TYPE_FLOAT_VEC3, + glu::TYPE_FLOAT_VEC4, + glu::TYPE_INT, + glu::TYPE_INT_VEC2, + glu::TYPE_INT_VEC3, + glu::TYPE_INT_VEC4, + glu::TYPE_UINT, + glu::TYPE_UINT_VEC2, + glu::TYPE_UINT_VEC3, + glu::TYPE_UINT_VEC4, + glu::TYPE_FLOAT_MAT2, + glu::TYPE_FLOAT_MAT3, + glu::TYPE_FLOAT_MAT4, + glu::TYPE_FLOAT_MAT2X3, + glu::TYPE_FLOAT_MAT2X4, + glu::TYPE_FLOAT_MAT3X2, + glu::TYPE_FLOAT_MAT3X4, + glu::TYPE_FLOAT_MAT4X2, + glu::TYPE_FLOAT_MAT4X3, + glu::TYPE_DOUBLE, + glu::TYPE_DOUBLE_VEC2, + glu::TYPE_DOUBLE_VEC3, + glu::TYPE_DOUBLE_VEC4, + glu::TYPE_DOUBLE_MAT2, + glu::TYPE_DOUBLE_MAT2X3, + glu::TYPE_DOUBLE_MAT2X4, + glu::TYPE_DOUBLE_MAT3X2, + glu::TYPE_DOUBLE_MAT3, + glu::TYPE_DOUBLE_MAT3X4, + glu::TYPE_DOUBLE_MAT4X2, + glu::TYPE_DOUBLE_MAT4X3, + glu::TYPE_DOUBLE_MAT4, + }; + + static const struct + { + const std::string name; + deUint32 flags; + } precisionFlags[] = + { + // TODO remove PRECISION_LOW because both PRECISION_LOW and PRECISION_MEDIUM means relaxed precision? + { "lowp", PRECISION_LOW }, + { "mediump", PRECISION_MEDIUM }, + { "highp", PRECISION_HIGH } + }; + const deUint32 defaultFlags = LAYOUT_XFBBUFFER | LAYOUT_XFBOFFSET; + + // .2_level_array + { + tcu::TestCaseGroup* nestedArrayGroup = new tcu::TestCaseGroup(m_testCtx, "2_level_array", "2-level basic array variable in single buffer"); + addChild(nestedArrayGroup); + + for (int basicTypeNdx = 0; basicTypeNdx < DE_LENGTH_OF_ARRAY(basicTypes); basicTypeNdx++) + { + const glu::DataType type = basicTypes[basicTypeNdx]; + const char* const typeName = glu::getDataTypeName(type); + const int childSize = 2; + const int parentSize = 2; + const VarType childType (VarType(type, !dataTypeSupportsPrecisionModifier(type) ? 0 : PRECISION_HIGH), childSize); + const VarType parentType (childType, parentSize); + + createBlockBasicTypeCases(*nestedArrayGroup, m_testCtx, typeName, parentType, defaultFlags); + } + } + + // .3_level_array + { + tcu::TestCaseGroup* nestedArrayGroup = new tcu::TestCaseGroup(m_testCtx, "3_level_array", "3-level basic array variable in single buffer"); + addChild(nestedArrayGroup); + + for (int basicTypeNdx = 0; basicTypeNdx < DE_LENGTH_OF_ARRAY(basicTypes); basicTypeNdx++) + { + const glu::DataType type = basicTypes[basicTypeNdx]; + const char* const typeName = glu::getDataTypeName(type); + const int childSize0 = 2; + const int childSize1 = 2; + const int parentSize = 2; + const VarType childType0 (VarType(type, !dataTypeSupportsPrecisionModifier(type) ? 0 : PRECISION_HIGH), childSize0); + const VarType childType1 (childType0, childSize1); + const VarType parentType (childType1, parentSize); + + createBlockBasicTypeCases(*nestedArrayGroup, m_testCtx, typeName, parentType, defaultFlags); + } + } + + // .2_level_struct_array + { + tcu::TestCaseGroup* structArrayArrayGroup = new tcu::TestCaseGroup(m_testCtx, "2_level_struct_array", "Struct array in one interface block"); + addChild(structArrayArrayGroup); + + for (int isArray = 0; isArray < 2; isArray++) + { + const std::string baseName = isArray ? "instance_array" : "std"; + const int numInstances = isArray ? 2 : 0; + + structArrayArrayGroup->addChild(new Block2LevelStructArrayCase(m_testCtx, (baseName + "_vertex"), "", defaultFlags, numInstances, LOAD_FULL_MATRIX, TEST_STAGE_VERTEX)); + structArrayArrayGroup->addChild(new Block2LevelStructArrayCase(m_testCtx, (baseName + "_geometry"), "", defaultFlags, numInstances, LOAD_FULL_MATRIX, TEST_STAGE_GEOMETRY)); + } + } + + // .single_basic_type + { + tcu::TestCaseGroup* singleBasicTypeGroup = new tcu::TestCaseGroup(m_testCtx, "single_basic_type", "Single basic variable in single buffer"); + addChild(singleBasicTypeGroup); + + for (int basicTypeNdx = 0; basicTypeNdx < DE_LENGTH_OF_ARRAY(basicTypes); basicTypeNdx++) + { + glu::DataType type = basicTypes[basicTypeNdx]; + const char* const typeName = glu::getDataTypeName(type); + + if (!dataTypeSupportsPrecisionModifier(type)) + createBlockBasicTypeCases(*singleBasicTypeGroup, m_testCtx, typeName, VarType(type, 0), defaultFlags); + } + + for (int precNdx = 0; precNdx < DE_LENGTH_OF_ARRAY(precisionFlags); precNdx++) + { + de::MovePtr precGroup(new tcu::TestCaseGroup(m_testCtx, precisionFlags[precNdx].name.c_str(), "")); + + for (int basicTypeNdx = 0; basicTypeNdx < DE_LENGTH_OF_ARRAY(basicTypes); basicTypeNdx++) + { + glu::DataType type = basicTypes[basicTypeNdx]; + const char* const typeName = glu::getDataTypeName(type); + + if (dataTypeSupportsPrecisionModifier(type)) + createBlockBasicTypeCases(*precGroup, m_testCtx, typeName, VarType(type, precisionFlags[precNdx].flags), defaultFlags); + } + singleBasicTypeGroup->addChild(precGroup.release()); + } + } + + // .single_basic_array + { + tcu::TestCaseGroup* singleBasicArrayGroup = new tcu::TestCaseGroup(m_testCtx, "single_basic_array", "Single basic array variable in single buffer"); + addChild(singleBasicArrayGroup); + + for (int basicTypeNdx = 0; basicTypeNdx < DE_LENGTH_OF_ARRAY(basicTypes); basicTypeNdx++) + { + glu::DataType type = basicTypes[basicTypeNdx]; + const char* const typeName = glu::getDataTypeName(type); + const int arraySize = 3; + + createBlockBasicTypeCases(*singleBasicArrayGroup, m_testCtx, typeName, + VarType(VarType(type, !dataTypeSupportsPrecisionModifier(type) ? 0 : PRECISION_HIGH), arraySize), + defaultFlags); + } + } + + // .single_struct + { + tcu::TestCaseGroup* singleStructGroup = new tcu::TestCaseGroup(m_testCtx, "single_struct", "Single struct in interface block"); + addChild(singleStructGroup); + + for (int isArray = 0; isArray < 2; isArray++) + { + const std::string baseName = isArray ? "instance_array" : "std"; + const int numInstances = isArray ? 3 : 0; + + singleStructGroup->addChild(new BlockSingleStructCase(m_testCtx, baseName + "_vertex", "", defaultFlags, numInstances, LOAD_FULL_MATRIX, TEST_STAGE_VERTEX)); + singleStructGroup->addChild(new BlockSingleStructCase(m_testCtx, baseName + "_geometry", "", defaultFlags, numInstances, LOAD_FULL_MATRIX, TEST_STAGE_GEOMETRY)); + } + } + + // .single_struct_array + { + tcu::TestCaseGroup* singleStructArrayGroup = new tcu::TestCaseGroup(m_testCtx, "single_struct_array", "Struct array in one interface block"); + addChild(singleStructArrayGroup); + + for (int isArray = 0; isArray < 2; isArray++) + { + const std::string baseName = isArray ? "instance_array" : "std"; + const int numInstances = isArray ? 2 : 0; + + singleStructArrayGroup->addChild(new BlockSingleStructArrayCase(m_testCtx, baseName + "_vertex", "", defaultFlags, numInstances, LOAD_FULL_MATRIX, TEST_STAGE_VERTEX)); + singleStructArrayGroup->addChild(new BlockSingleStructArrayCase(m_testCtx, baseName + "_geometry", "", defaultFlags, numInstances, LOAD_FULL_MATRIX, TEST_STAGE_GEOMETRY)); + } + } + + // .single_nested_struct + { + tcu::TestCaseGroup* singleNestedStructGroup = new tcu::TestCaseGroup(m_testCtx, "single_nested_struct", "Nested struct in one interface block"); + addChild(singleNestedStructGroup); + + for (int isArray = 0; isArray < 2; isArray++) + { + const std::string baseName = isArray ? "instance_array" : "std"; + const int numInstances = isArray ? 2 : 0; + + singleNestedStructGroup->addChild(new BlockSingleNestedStructCase(m_testCtx, baseName + "_vertex", "", defaultFlags, numInstances, LOAD_FULL_MATRIX, TEST_STAGE_VERTEX)); + singleNestedStructGroup->addChild(new BlockSingleNestedStructCase(m_testCtx, baseName + "_geometry", "", defaultFlags, numInstances, LOAD_FULL_MATRIX, TEST_STAGE_GEOMETRY)); + } + } + + // .single_nested_struct_array + { + tcu::TestCaseGroup* singleNestedStructArrayGroup = new tcu::TestCaseGroup(m_testCtx, "single_nested_struct_array", "Nested struct array in one interface block"); + addChild(singleNestedStructArrayGroup); + + for (int isArray = 0; isArray < 2; isArray++) + { + const std::string baseName = isArray ? "instance_array" : "std"; + const int numInstances = isArray ? 2 : 0; + + singleNestedStructArrayGroup->addChild(new BlockSingleNestedStructArrayCase(m_testCtx, baseName + "_vertex", "", defaultFlags, numInstances, LOAD_FULL_MATRIX, TEST_STAGE_VERTEX)); + singleNestedStructArrayGroup->addChild(new BlockSingleNestedStructArrayCase(m_testCtx, baseName + "_geometry", "", defaultFlags, numInstances, LOAD_FULL_MATRIX, TEST_STAGE_GEOMETRY)); + } + } + + // .instance_array_basic_type + { + tcu::TestCaseGroup* instanceArrayBasicTypeGroup = new tcu::TestCaseGroup(m_testCtx, "instance_array_basic_type", "Single basic variable in instance array"); + addChild(instanceArrayBasicTypeGroup); + + for (int basicTypeNdx = 0; basicTypeNdx < DE_LENGTH_OF_ARRAY(basicTypes); basicTypeNdx++) + { + glu::DataType type = basicTypes[basicTypeNdx]; + const char* const typeName = glu::getDataTypeName(type); + const int numInstances = 3; + + createBlockBasicTypeCases(*instanceArrayBasicTypeGroup, m_testCtx, typeName, + VarType(type, !dataTypeSupportsPrecisionModifier(type) ? 0 : PRECISION_HIGH), + defaultFlags, numInstances); + } + } + + // .multi_basic_types + { + tcu::TestCaseGroup* multiBasicTypesGroup = new tcu::TestCaseGroup(m_testCtx, "multi_basic_types", "Multiple buffers with basic types"); + addChild(multiBasicTypesGroup); + + for (int isArray = 0; isArray < 2; isArray++) + { + const std::string baseName = isArray ? "instance_array" : "std"; + const int numInstances = isArray ? 2 : 0; + + multiBasicTypesGroup->addChild(new BlockMultiBasicTypesCase(m_testCtx, baseName + "_vertex", "", defaultFlags, defaultFlags, numInstances, LOAD_FULL_MATRIX, TEST_STAGE_VERTEX)); + multiBasicTypesGroup->addChild(new BlockMultiBasicTypesCase(m_testCtx, baseName + "_geometry", "", defaultFlags, defaultFlags, numInstances, LOAD_FULL_MATRIX, TEST_STAGE_GEOMETRY)); + } + } + + // .multi_nested_struct + { + tcu::TestCaseGroup* multiNestedStructGroup = new tcu::TestCaseGroup(m_testCtx, "multi_nested_struct", "Multiple buffers with nested structs"); + addChild(multiNestedStructGroup); + + for (int isArray = 0; isArray < 2; isArray++) + { + const std::string baseName = isArray ? "instance_array" : "std"; + const int numInstances = isArray ? 2 : 0; + + multiNestedStructGroup->addChild(new BlockMultiNestedStructCase(m_testCtx, baseName + "_vertex", "", defaultFlags, defaultFlags, numInstances, LOAD_FULL_MATRIX, TEST_STAGE_VERTEX)); + multiNestedStructGroup->addChild(new BlockMultiNestedStructCase(m_testCtx, baseName + "_geometry", "", defaultFlags, defaultFlags, numInstances, LOAD_FULL_MATRIX, TEST_STAGE_GEOMETRY)); + } + } + + // .various_buffers + { + static const struct + { + const std::string name; + deUint32 bufferA; + deUint32 bufferB; + deUint32 bufferC; + } xfbBufferNumbers[] = + { + { "000", 0, 0, 0 }, + { "010", 0, 1, 0 }, + { "100", 1, 0, 0 }, + { "110", 1, 1, 0 }, + }; + + tcu::TestCaseGroup* multiNestedStructGroup = new tcu::TestCaseGroup(m_testCtx, "various_buffers", "Output data into several transform feedback buffers"); + addChild(multiNestedStructGroup); + + for (int xfbBufferNdx = 0; xfbBufferNdx < DE_LENGTH_OF_ARRAY(xfbBufferNumbers); xfbBufferNdx++) + { + const deUint32 bufferA = xfbBufferNumbers[xfbBufferNdx].bufferA; + const deUint32 bufferB = xfbBufferNumbers[xfbBufferNdx].bufferB; + const deUint32 bufferC = xfbBufferNumbers[xfbBufferNdx].bufferC; + + for (int isArray = 0; isArray < 2; isArray++) + { + std::string baseName = "buffers" + xfbBufferNumbers[xfbBufferNdx].name; + const int numInstances = isArray ? 2 : 0; + + if (isArray) + baseName += "_instance_array"; + + multiNestedStructGroup->addChild(new BlockVariousBuffersCase(m_testCtx, baseName + "_vertex", "", defaultFlags, bufferA, bufferB, bufferC, numInstances, LOAD_FULL_MATRIX, TEST_STAGE_VERTEX)); + multiNestedStructGroup->addChild(new BlockVariousBuffersCase(m_testCtx, baseName + "_geometry", "", defaultFlags, bufferA, bufferB, bufferC, numInstances, LOAD_FULL_MATRIX, TEST_STAGE_GEOMETRY)); + } + } + } + + // .random + { + static const struct + { + std::string name; + TestStageFlags testStageFlags; + } + stages[] = + { + { "vertex", TEST_STAGE_VERTEX }, + { "geometry", TEST_STAGE_GEOMETRY }, + }; + + for (size_t stageNdx = 0; stageNdx < DE_LENGTH_OF_ARRAY(stages); ++stageNdx) + { + const std::string groupName = "random_" + stages[stageNdx].name; + const TestStageFlags stage = stages[stageNdx].testStageFlags; + const deUint32 allBasicTypes = FEATURE_VECTORS|FEATURE_MATRICES|FEATURE_DOUBLES; + const deUint32 unused = FEATURE_UNASSIGNED_FIELDS|FEATURE_UNASSIGNED_BLOCK_MEMBERS; + const deUint32 disabled = FEATURE_INSTANCE_ARRAYS|FEATURE_MISSING_BLOCK_MEMBERS|FEATURE_OUT_OF_ORDER_OFFSETS; // OOO & missing offsets handled in a dedicated case group + const deUint32 allFeatures = ~disabled; + const deUint32 numCases = 50; + + tcu::TestCaseGroup* group = new tcu::TestCaseGroup(m_testCtx, groupName.c_str(), "Random Interface Block cases"); + addChild(group); + + createRandomCaseGroup(group, m_testCtx, "scalar_types", "Scalar types only, per-block buffers", numCases, stage, unused ); + createRandomCaseGroup(group, m_testCtx, "vector_types", "Scalar and vector types only, per-block buffers", numCases, stage, unused|FEATURE_VECTORS ); + createRandomCaseGroup(group, m_testCtx, "basic_types", "All basic types, per-block buffers", numCases, stage, unused|allBasicTypes ); + createRandomCaseGroup(group, m_testCtx, "basic_arrays", "Arrays, per-block buffers", numCases, stage, unused|allBasicTypes|FEATURE_ARRAYS); + + createRandomCaseGroup(group, m_testCtx, "basic_instance_arrays", "Basic instance arrays, per-block buffers", numCases, stage, unused|allBasicTypes|FEATURE_INSTANCE_ARRAYS ); + createRandomCaseGroup(group, m_testCtx, "nested_structs", "Nested structs, per-block buffers", numCases, stage, unused|allBasicTypes|FEATURE_STRUCTS ); + createRandomCaseGroup(group, m_testCtx, "nested_structs_arrays", "Nested structs, arrays, per-block buffers", numCases, stage, unused|allBasicTypes|FEATURE_STRUCTS|FEATURE_ARRAYS ); + createRandomCaseGroup(group, m_testCtx, "nested_structs_instance_arrays", "Nested structs, instance arrays, per-block buffers", numCases, stage, unused|allBasicTypes|FEATURE_STRUCTS|FEATURE_INSTANCE_ARRAYS ); + createRandomCaseGroup(group, m_testCtx, "nested_structs_arrays_instance_arrays", "Nested structs, instance arrays, per-block buffers", numCases, stage, unused|allBasicTypes|FEATURE_STRUCTS|FEATURE_ARRAYS|FEATURE_INSTANCE_ARRAYS); + + createRandomCaseGroup(group, m_testCtx, "all_instance_array", "All random features, shared buffer", numCases*2, stage, allFeatures|FEATURE_INSTANCE_ARRAYS); + createRandomCaseGroup(group, m_testCtx, "all_unordered_and_instance_array", "All random features, out of order member offsets", numCases*2, stage, allFeatures|FEATURE_OUT_OF_ORDER_OFFSETS|FEATURE_INSTANCE_ARRAYS); + createRandomCaseGroup(group, m_testCtx, "all_missing", "All random features, missing interface members", numCases*2, stage, allFeatures|FEATURE_MISSING_BLOCK_MEMBERS); + createRandomCaseGroup(group, m_testCtx, "all_unordered_and_missing", "All random features, unordered and missing members", numCases*2, stage, allFeatures|FEATURE_OUT_OF_ORDER_OFFSETS|FEATURE_MISSING_BLOCK_MEMBERS); + } + } +} + +} // anonymous + +tcu::TestCaseGroup* createTransformFeedbackFuzzLayoutTests (tcu::TestContext& testCtx) +{ + return new InterfaceBlockTests(testCtx); +} + +} // TransformFeedback +} // vkt diff --git a/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackFuzzLayoutTests.hpp b/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackFuzzLayoutTests.hpp new file mode 100644 index 0000000..2a8b667 --- /dev/null +++ b/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackFuzzLayoutTests.hpp @@ -0,0 +1,41 @@ +#ifndef _VKTTRANSFORMFEEDBACKFUZZLAYOUTTESTS_HPP +#define _VKTTRANSFORMFEEDBACKFUZZLAYOUTTESTS_HPP +/*------------------------------------------------------------------------ + * Vulkan Conformance Tests + * ------------------------ + * + * Copyright (c) 2015 The Khronos Group Inc. + * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * Copyright (c) 2018 The Khronos Group Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + *//*! + * \file + * \brief Vulkan Transform Feedback Fuzz Layout Tests + *//*--------------------------------------------------------------------*/ + +#include "tcuDefs.hpp" +#include "tcuTestCase.hpp" + +namespace vkt +{ +namespace TransformFeedback +{ + +tcu::TestCaseGroup* createTransformFeedbackFuzzLayoutTests (tcu::TestContext& testCtx); + +} // TransformFeedback +} // vkt + +#endif // _VKTTRANSFORMFEEDBACKFUZZLAYOUTTESTS_HPP diff --git a/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackRandomLayoutCase.cpp b/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackRandomLayoutCase.cpp new file mode 100644 index 0000000..c88f66b --- /dev/null +++ b/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackRandomLayoutCase.cpp @@ -0,0 +1,263 @@ +/*------------------------------------------------------------------------ + * Vulkan Conformance Tests + * ------------------------ + * + * Copyright (c) 2015 The Khronos Group Inc. + * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * Copyright (c) 2016 The Android Open Source Project + * Copyright (c) 2018 The Khronos Group Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + *//*! + * \file + * \brief Vulkan Transform Feedback Random Layout Tests + *//*--------------------------------------------------------------------*/ + +#include "vktTransformFeedbackRandomLayoutCase.hpp" +#include "deRandom.hpp" + +namespace vkt +{ +namespace TransformFeedback +{ + +namespace +{ + +static std::string genName (char first, char last, int ndx) +{ + std::string str = ""; + int alphabetLen = last - first + 1; + + while (ndx > alphabetLen) + { + str.insert(str.begin(), (char)(first + ((ndx - 1) % alphabetLen))); + ndx = (ndx - 1) / alphabetLen; + } + + str.insert(str.begin(), (char)(first + (ndx % (alphabetLen + 1)) - 1)); + + return str; +} + +} // anonymous + +RandomInterfaceBlockCase::RandomInterfaceBlockCase (tcu::TestContext& testCtx, + const std::string& name, + const std::string& description, + const TestStageFlags testStageFlags, + deUint32 features, + deUint32 seed) + : InterfaceBlockCase (testCtx, name, description, LOAD_FULL_MATRIX, testStageFlags, (features & FEATURE_OUT_OF_ORDER_OFFSETS) != 0u) + , m_features (features) + , m_explicitXfbOffsets ((features & (FEATURE_OUT_OF_ORDER_OFFSETS | FEATURE_MISSING_BLOCK_MEMBERS)) != 0u) + , m_maxBlocks (3) + , m_maxInstances ((features & FEATURE_INSTANCE_ARRAYS) ? 3 : 0) + , m_maxArrayLength ((features & FEATURE_ARRAYS) ? 4 : 0) + , m_maxStructDepth ((features & FEATURE_STRUCTS) ? 2 : 0) + , m_maxBlockMembers (3) + , m_maxStructMembers (3) + , m_seed (seed) + , m_blockNdx (1) + , m_interfaceNdx (1) + , m_structNdx (1) + , m_primitiveTypeCandidates (fillTypeCandidates()) +{ + de::Random rnd(m_seed); + + int numBlocks = rnd.getInt(1, m_maxBlocks); + InterfaceFlags stage = static_cast(LAYOUT_XFBBUFFER | LAYOUT_XFBOFFSET); + + for (int ndx = 0; ndx < numBlocks; ndx++) + generateBlock(rnd, stage); + + // m_primitiveTypeCandidates is required during generation only + m_primitiveTypeCandidates.clear(); + + init(); +} + +std::vector RandomInterfaceBlockCase::fillTypeCandidates() +{ + std::vector typeCandidates; + + typeCandidates.reserve(32); + + typeCandidates.push_back(glu::TYPE_FLOAT); + typeCandidates.push_back(glu::TYPE_INT); + typeCandidates.push_back(glu::TYPE_UINT); + + if (m_features & FEATURE_DOUBLES) + typeCandidates.push_back(glu::TYPE_DOUBLE); + + if (m_features & FEATURE_VECTORS) + { + typeCandidates.push_back(glu::TYPE_FLOAT_VEC2); + typeCandidates.push_back(glu::TYPE_FLOAT_VEC3); + typeCandidates.push_back(glu::TYPE_FLOAT_VEC4); + typeCandidates.push_back(glu::TYPE_INT_VEC2); + typeCandidates.push_back(glu::TYPE_INT_VEC3); + typeCandidates.push_back(glu::TYPE_INT_VEC4); + typeCandidates.push_back(glu::TYPE_UINT_VEC2); + typeCandidates.push_back(glu::TYPE_UINT_VEC3); + typeCandidates.push_back(glu::TYPE_UINT_VEC4); + + if (m_features & FEATURE_DOUBLES) + { + typeCandidates.push_back(glu::TYPE_DOUBLE_VEC2); + typeCandidates.push_back(glu::TYPE_DOUBLE_VEC3); + typeCandidates.push_back(glu::TYPE_DOUBLE_VEC4); + } + } + + if (m_features & FEATURE_MATRICES) + { + typeCandidates.push_back(glu::TYPE_FLOAT_MAT2); + typeCandidates.push_back(glu::TYPE_FLOAT_MAT2X3); + typeCandidates.push_back(glu::TYPE_FLOAT_MAT3X2); + typeCandidates.push_back(glu::TYPE_FLOAT_MAT3); + typeCandidates.push_back(glu::TYPE_FLOAT_MAT3X4); + typeCandidates.push_back(glu::TYPE_FLOAT_MAT4X2); + typeCandidates.push_back(glu::TYPE_FLOAT_MAT4X3); + typeCandidates.push_back(glu::TYPE_FLOAT_MAT4); + + if (m_features & FEATURE_DOUBLES) + { + typeCandidates.push_back(glu::TYPE_DOUBLE_MAT2); + typeCandidates.push_back(glu::TYPE_DOUBLE_MAT2X3); + typeCandidates.push_back(glu::TYPE_DOUBLE_MAT3X2); + typeCandidates.push_back(glu::TYPE_DOUBLE_MAT3); + typeCandidates.push_back(glu::TYPE_DOUBLE_MAT3X4); + typeCandidates.push_back(glu::TYPE_DOUBLE_MAT4X2); + typeCandidates.push_back(glu::TYPE_DOUBLE_MAT4X3); + typeCandidates.push_back(glu::TYPE_DOUBLE_MAT4); + } + } + + return typeCandidates; +} + +void RandomInterfaceBlockCase::generateBlock (de::Random& rnd, deUint32 layoutFlags) +{ + DE_ASSERT(m_blockNdx <= 'z' - 'a'); + + const float instanceArrayWeight = 0.3f; + InterfaceBlock& block = m_interface.allocBlock(std::string("Block") + (char)('A' + m_blockNdx)); + int numInstances = (m_maxInstances > 0 && rnd.getFloat() < instanceArrayWeight) ? rnd.getInt(0, m_maxInstances) : 0; + int numBlockMembers = rnd.getInt(1, m_maxBlockMembers); + int numUnassignedOrMissing = 0; + + if (numInstances > 0) + block.setArraySize(numInstances); + + if (numInstances > 0 || rnd.getBool()) + block.setInstanceName(std::string("block") + (char)('A' + m_blockNdx)); + + block.setFlags(layoutFlags); + + for (int ndx = 0; ndx < numBlockMembers; ndx++) + generateBlockMember(rnd, block, numBlockMembers, numUnassignedOrMissing); + + m_blockNdx += 1; +} + +void RandomInterfaceBlockCase::generateBlockMember (de::Random& rnd, InterfaceBlock& block, const int numBlockMembers, int& numUnassignedOrMissing) +{ + const float unassignedBlockMembersWeight = 0.15f; + const float missingBlockMembersWeight = 0.15f; + const bool unassignedAllowed = (m_features & FEATURE_UNASSIGNED_BLOCK_MEMBERS) != 0; + const bool missingAllowed = (m_features & FEATURE_MISSING_BLOCK_MEMBERS) != 0; + deUint32 flags = 0; + std::string name = genName('a', 'z', m_interfaceNdx); + VarType type = generateType(rnd, 0, true); + + if (numUnassignedOrMissing < numBlockMembers - 1) + { + if (missingAllowed && rnd.getFloat() < missingBlockMembersWeight) + { + flags |= FIELD_MISSING; + numUnassignedOrMissing++; + } + else if (unassignedAllowed && rnd.getFloat() < unassignedBlockMembersWeight) + { + flags |= FIELD_UNASSIGNED; + numUnassignedOrMissing++; + } + } + + block.addInterfaceMember(InterfaceBlockMember(name, type, flags)); + + m_interfaceNdx += 1; +} + +VarType RandomInterfaceBlockCase::generateType (de::Random& rnd, int typeDepth, bool arrayOk) +{ + const float structWeight = 0.1f; + const float arrayWeight = 0.1f; + + if (typeDepth < m_maxStructDepth && rnd.getFloat() < structWeight) + { + const float unassignedFieldWeight = 0.15f; + const bool unassignedOk = (m_features & FEATURE_UNASSIGNED_FIELDS) != 0; + const int numMembers = rnd.getInt(1, m_maxStructMembers); + std::vector memberTypes; + + // Generate members first so nested struct declarations are in correct order. + for (int ndx = 0; ndx < numMembers; ndx++) + memberTypes.push_back(generateType(rnd, typeDepth+1, true)); + + StructType& structType = m_interface.allocStruct(std::string("s") + genName('A', 'Z', m_structNdx)); + m_structNdx += 1; + + DE_ASSERT(numMembers <= 'Z' - 'A'); + for (int ndx = 0; ndx < numMembers; ndx++) + { + deUint32 flags = 0; + + if (unassignedOk && rnd.getFloat() < unassignedFieldWeight) + { + flags |= FIELD_UNASSIGNED; + } + + structType.addMember(std::string("m") + (char)('A' + ndx), memberTypes[ndx], flags); + } + + return VarType(&structType, m_explicitXfbOffsets ? static_cast(LAYOUT_XFBOFFSET) : 0u); + } + else if (m_maxArrayLength > 0 && arrayOk && rnd.getFloat() < arrayWeight) + { + const bool arraysOfArraysOk = (m_features & FEATURE_ARRAYS_OF_ARRAYS) != 0; + const int arrayLength = rnd.getInt(1, m_maxArrayLength); + VarType elementType = generateType(rnd, typeDepth, arraysOfArraysOk); + + return VarType(elementType, arrayLength); + } + else + { + glu::DataType type = rnd.choose(m_primitiveTypeCandidates.begin(), m_primitiveTypeCandidates.end()); + deUint32 flags = (m_explicitXfbOffsets ? static_cast(LAYOUT_XFBOFFSET) : 0u); + + if (glu::dataTypeSupportsPrecisionModifier(type)) + { + // Precision. + static const deUint32 precisionCandidates[] = { PRECISION_LOW, PRECISION_MEDIUM, PRECISION_HIGH }; + flags |= rnd.choose(&precisionCandidates[0], &precisionCandidates[DE_LENGTH_OF_ARRAY(precisionCandidates)]); + } + + return VarType(type, flags); + } +} + +} // TransformFeedback +} // vkt diff --git a/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackRandomLayoutCase.hpp b/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackRandomLayoutCase.hpp new file mode 100644 index 0000000..b9d6837 --- /dev/null +++ b/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackRandomLayoutCase.hpp @@ -0,0 +1,91 @@ +#ifndef _VKTTRANSFORMFEEDBACKRANDOMLAYOUTCASE_HPP +#define _VKTTRANSFORMFEEDBACKRANDOMLAYOUTCASE_HPP +/*------------------------------------------------------------------------ + * Vulkan Conformance Tests + * ------------------------ + * + * Copyright (c) 2015 The Khronos Group Inc. + * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * Copyright (c) 2018 The Khronos Group Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + *//*! + * \file + * \brief Vulkan Transform Feedback Fuzz Random Layout Tests + *//*--------------------------------------------------------------------*/ + +#include "vktTransformFeedbackFuzzLayoutCase.hpp" + +namespace de +{ +class Random; +} // de + +namespace vkt +{ +namespace TransformFeedback +{ + +enum FeatureBits +{ + FEATURE_VECTORS = (1<<0), + FEATURE_MATRICES = (1<<1), + FEATURE_ARRAYS = (1<<2), + FEATURE_STRUCTS = (1<<3), + FEATURE_NESTED_STRUCTS = (1<<4), + FEATURE_INSTANCE_ARRAYS = (1<<5), + FEATURE_ARRAYS_OF_ARRAYS = (1<<6), + FEATURE_DOUBLES = (1<<7), + FEATURE_UNASSIGNED_FIELDS = (1<<8), + FEATURE_UNASSIGNED_BLOCK_MEMBERS= (1<<9), + FEATURE_MISSING_BLOCK_MEMBERS = (1<<10), // Add holes into XFB buffer + FEATURE_OUT_OF_ORDER_OFFSETS = (1<<11), +}; + +class RandomInterfaceBlockCase : public InterfaceBlockCase +{ +public: + RandomInterfaceBlockCase (tcu::TestContext& testCtx, + const std::string& name, + const std::string& description, + const TestStageFlags testStageFlags, + deUint32 features, + deUint32 seed); + +private: + void generateBlock (de::Random& rnd, deUint32 layoutFlags); + void generateBlockMember (de::Random& rnd, InterfaceBlock& block, const int numBlockMembers, int& numMissing); + VarType generateType (de::Random& rnd, int typeDepth, bool arrayOk); + std::vector fillTypeCandidates (void); + + const deUint32 m_features; + const bool m_explicitXfbOffsets; + const int m_maxBlocks; + const int m_maxInstances; + const int m_maxArrayLength; + const int m_maxStructDepth; + const int m_maxBlockMembers; + const int m_maxStructMembers; + const deUint32 m_seed; + + int m_blockNdx; + int m_interfaceNdx; + int m_structNdx; + std::vector m_primitiveTypeCandidates; +}; + +} // TransformFeedback +} // vkt + +#endif // _VKTTRANSFORMFEEDBACKRANDOMLAYOUTCASE_HPP diff --git a/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackSimpleTests.cpp b/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackSimpleTests.cpp new file mode 100644 index 0000000..890d59e --- /dev/null +++ b/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackSimpleTests.cpp @@ -0,0 +1,1942 @@ +/*------------------------------------------------------------------------ + * Vulkan Conformance Tests + * ------------------------ + * + * Copyright (c) 2018 The Khronos Group Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + *//*! + * \file + * \brief Vulkan Transform Feedback Simple Tests + *//*--------------------------------------------------------------------*/ + +#include "vktTransformFeedbackSimpleTests.hpp" +#include "vktTestGroupUtil.hpp" +#include "vktTestCase.hpp" + +#include "vkBuilderUtil.hpp" +#include "vkCmdUtil.hpp" +#include "vkImageUtil.hpp" +#include "vkObjUtil.hpp" +#include "vkQueryUtil.hpp" +#include "vkRefUtil.hpp" +#include "vkTypeUtil.hpp" + +#include "deUniquePtr.hpp" +#include "deRandom.hpp" + +#include "tcuTextureUtil.hpp" +#include "tcuVectorUtil.hpp" +#include "tcuImageCompare.hpp" +#include "tcuRGBA.hpp" + +#include + +namespace vkt +{ +namespace TransformFeedback +{ +namespace +{ +using namespace vk; +using de::MovePtr; +using de::UniquePtr; +using de::SharedPtr; + +#define VALIDATE_MINIMUM(A,B) if ((A) < (B)) TCU_FAIL(#A "==" + de::toString(A) + " which is less than required by specification (" + de::toString(B) + ")") +#define VALIDATE_BOOL(A) if (! ( (A) == VK_TRUE || (A) == VK_FALSE) ) TCU_FAIL(#A " expected to be VK_TRUE or VK_FALSE. Received " + de::toString((deUint64)(A))) + +enum TestType +{ + TEST_TYPE_BASIC, + TEST_TYPE_RESUME, + TEST_TYPE_STREAMS, + TEST_TYPE_STREAMS_POINTSIZE, + TEST_TYPE_STREAMS_CLIPDISTANCE, + TEST_TYPE_STREAMS_CULLDISTANCE, + TEST_TYPE_MULTISTREAMS, + TEST_TYPE_DRAW_INDIRECT, + TEST_TYPE_BACKWARD_DEPENDENCY, + TEST_TYPE_QUERY, + TEST_TYPE_LAST +}; + +struct TestParameters +{ + TestType testType; + deUint32 bufferSize; + deUint32 partCount; + deUint32 streamId; + deUint32 pointSize; + deUint32 vertexStride; +}; + +const deUint32 MINIMUM_TF_BUFFER_SIZE = (1<<27); +const deUint32 IMAGE_SIZE = 64u; + +template +inline SharedPtr > makeSharedPtr(Move move) +{ + return SharedPtr >(new Unique(move)); +} + +VkBufferCreateInfo makeBufferCreateInfo (const VkDeviceSize bufferSize, + const VkBufferUsageFlags usage) +{ + const VkBufferCreateInfo bufferCreateInfo = + { + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + (VkBufferCreateFlags)0, // VkBufferCreateFlags flags; + bufferSize, // VkDeviceSize size; + usage, // VkBufferUsageFlags usage; + VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; + 0u, // deUint32 queueFamilyIndexCount; + DE_NULL, // const deUint32* pQueueFamilyIndices; + }; + return bufferCreateInfo; +} + +Move makePipelineLayout (const DeviceInterface& vk, + const VkDevice device) +{ + const VkPushConstantRange pushConstantRanges = + { + VK_SHADER_STAGE_VERTEX_BIT, // VkShaderStageFlags stageFlags; + 0u, // deUint32 offset; + sizeof(deUint32) // deUint32 size; + }; + const VkPipelineLayoutCreateInfo pipelineLayoutCreateInfo = + { + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + (VkPipelineLayoutCreateFlags)0, // VkPipelineLayoutCreateFlags flags; + 0u, // deUint32 setLayoutCount; + DE_NULL, // const VkDescriptorSetLayout* pSetLayouts; + 1u, // deUint32 pushConstantRangeCount; + &pushConstantRanges, // const VkPushConstantRange* pPushConstantRanges; + }; + return createPipelineLayout(vk, device, &pipelineLayoutCreateInfo); +} + +Move makeGraphicsPipeline (const DeviceInterface& vk, + const VkDevice device, + const VkPipelineLayout pipelineLayout, + const VkRenderPass renderPass, + const VkShaderModule vertexModule, + const VkShaderModule geometryModule, + const VkShaderModule fragmendModule, + const VkExtent2D renderSize, + const deUint32 subpass, + const deUint32* rasterizationStreamPtr = DE_NULL, + const VkPrimitiveTopology topology = VK_PRIMITIVE_TOPOLOGY_POINT_LIST, + const bool inputVertices = false) +{ + const std::vector viewports (1, makeViewport(renderSize)); + const std::vector scissors (1, makeRect2D(renderSize)); + const VkPipelineVertexInputStateCreateInfo vertexInputStateCreateInfo = + { + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO, // VkStructureType sType + DE_NULL, // const void* pNext + (VkPipelineVertexInputStateCreateFlags)0, // VkPipelineVertexInputStateCreateFlags flags + 0u, // deUint32 vertexBindingDescriptionCount + DE_NULL, // const VkVertexInputBindingDescription* pVertexBindingDescriptions + 0u, // deUint32 vertexAttributeDescriptionCount + DE_NULL, // const VkVertexInputAttributeDescription* pVertexAttributeDescriptions + }; + const VkPipelineVertexInputStateCreateInfo* vertexInputStateCreateInfoPtr = (inputVertices) ? DE_NULL : &vertexInputStateCreateInfo; + const VkBool32 disableRasterization = (fragmendModule == DE_NULL); + const deUint32 rasterizationStream = (rasterizationStreamPtr == DE_NULL) ? 0 : *rasterizationStreamPtr; + const VkPipelineRasterizationStateStreamCreateInfoEXT rasterizationStateStreamCreateInfo = + { + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT, // VkStructureType sType; + DE_NULL, // const void* pNext; + 0, // VkPipelineRasterizationStateStreamCreateFlagsEXT flags; + rasterizationStream // deUint32 rasterizationStream; + }; + const VkPipelineRasterizationStateCreateInfo rasterizationStateCreateInfo = + { + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO, // VkStructureType sType; + &rasterizationStateStreamCreateInfo, // const void* pNext; + 0u, // VkPipelineRasterizationStateCreateFlags flags; + VK_FALSE, // VkBool32 depthClampEnable; + disableRasterization, // VkBool32 rasterizerDiscardEnable; + VK_POLYGON_MODE_FILL, // VkPolygonMode polygonMode; + VK_CULL_MODE_NONE, // VkCullModeFlags cullMode; + VK_FRONT_FACE_COUNTER_CLOCKWISE, // VkFrontFace frontFace; + VK_FALSE, // VkBool32 depthBiasEnable; + 0.0f, // float depthBiasConstantFactor; + 0.0f, // float depthBiasClamp; + 0.0f, // float depthBiasSlopeFactor; + 1.0f // float lineWidth; + }; + const VkPipelineRasterizationStateCreateInfo* rasterizationStateCreateInfoPtr = (rasterizationStreamPtr == DE_NULL) ? DE_NULL : &rasterizationStateCreateInfo; + + return makeGraphicsPipeline(vk, // const DeviceInterface& vk + device, // const VkDevice device + pipelineLayout, // const VkPipelineLayout pipelineLayout + vertexModule, // const VkShaderModule vertexShaderModule + DE_NULL, // const VkShaderModule tessellationControlModule + DE_NULL, // const VkShaderModule tessellationEvalModule + geometryModule, // const VkShaderModule geometryShaderModule + fragmendModule, // const VkShaderModule fragmentShaderModule + renderPass, // const VkRenderPass renderPass + viewports, // const std::vector& viewports + scissors, // const std::vector& scissors + topology, // const VkPrimitiveTopology topology + subpass, // const deUint32 subpass + 0u, // const deUint32 patchControlPoints + vertexInputStateCreateInfoPtr, // const VkPipelineVertexInputStateCreateInfo* vertexInputStateCreateInfo + rasterizationStateCreateInfoPtr); // const VkPipelineRasterizationStateCreateInfo* rasterizationStateCreateInfo +} + +Move makeImageView (const DeviceInterface& vk, + const VkDevice vkDevice, + const VkImage image, + const VkImageViewType viewType, + const VkFormat format, + const VkImageSubresourceRange subresourceRange) +{ + const VkImageViewCreateInfo imageViewParams = + { + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + (VkImageViewCreateFlags)0, // VkImageViewCreateFlags flags; + image, // VkImage image; + viewType, // VkImageViewType viewType; + format, // VkFormat format; + makeComponentMappingRGBA(), // VkComponentMapping components; + subresourceRange, // VkImageSubresourceRange subresourceRange; + }; + return createImageView(vk, vkDevice, &imageViewParams); +} + +VkImageCreateInfo makeImageCreateInfo (const VkImageCreateFlags flags, const VkImageType type, const VkFormat format, const VkExtent2D size, const deUint32 numLayers, const VkImageUsageFlags usage) +{ + const VkExtent3D extent = { size.width, size.height, 1u }; + const VkImageCreateInfo imageParams = + { + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + flags, // VkImageCreateFlags flags; + type, // VkImageType imageType; + format, // VkFormat format; + extent, // VkExtent3D extent; + 1u, // deUint32 mipLevels; + numLayers, // deUint32 arrayLayers; + VK_SAMPLE_COUNT_1_BIT, // VkSampleCountFlagBits samples; + VK_IMAGE_TILING_OPTIMAL, // VkImageTiling tiling; + usage, // VkImageUsageFlags usage; + VK_SHARING_MODE_EXCLUSIVE, // VkSharingMode sharingMode; + 0u, // deUint32 queueFamilyIndexCount; + DE_NULL, // const deUint32* pQueueFamilyIndices; + VK_IMAGE_LAYOUT_UNDEFINED, // VkImageLayout initialLayout; + }; + return imageParams; +} + +Move makeRenderPass (const DeviceInterface& vk, + const VkDevice device) +{ + std::vector subpassDescriptions; + std::vector subpassDependencies; + + const VkSubpassDescription description = + { + (VkSubpassDescriptionFlags)0, // VkSubpassDescriptionFlags flags; + VK_PIPELINE_BIND_POINT_GRAPHICS, // VkPipelineBindPoint pipelineBindPoint; + 0u, // deUint32 inputAttachmentCount; + DE_NULL, // const VkAttachmentReference* pInputAttachments; + 0u, // deUint32 colorAttachmentCount; + DE_NULL, // const VkAttachmentReference* pColorAttachments; + DE_NULL, // const VkAttachmentReference* pResolveAttachments; + DE_NULL, // const VkAttachmentReference* pDepthStencilAttachment; + 0, // deUint32 preserveAttachmentCount; + DE_NULL // const deUint32* pPreserveAttachments; + }; + subpassDescriptions.push_back(description); + + const VkSubpassDependency dependency = + { + 0u, // deUint32 srcSubpass; + 0u, // deUint32 dstSubpass; + VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT, // VkPipelineStageFlags srcStageMask; + VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT, // VkPipelineStageFlags dstStageMask; + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT, // VkAccessFlags srcAccessMask; + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT, // VkAccessFlags dstAccessMask; + 0u // VkDependencyFlags dependencyFlags; + }; + subpassDependencies.push_back(dependency); + + const VkRenderPassCreateInfo renderPassInfo = + { + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + static_cast(0u), // VkRenderPassCreateFlags flags; + 0u, // deUint32 attachmentCount; + DE_NULL, // const VkAttachmentDescription* pAttachments; + static_cast(subpassDescriptions.size()), // deUint32 subpassCount; + &subpassDescriptions[0], // const VkSubpassDescription* pSubpasses; + static_cast(subpassDependencies.size()), // deUint32 dependencyCount; + subpassDependencies.size() > 0 ? &subpassDependencies[0] : DE_NULL // const VkSubpassDependency* pDependencies; + }; + + return createRenderPass(vk, device, &renderPassInfo); +} + +Move makeFramebuffer (const DeviceInterface& vk, + const VkDevice device, + const VkRenderPass renderPass, + const VkExtent2D& renderSize, + const VkImageView* colorAttachment) +{ + const VkFramebufferCreateInfo framebufferInfo = + { + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + (VkFramebufferCreateFlags)0, // VkFramebufferCreateFlags flags; + renderPass, // VkRenderPass renderPass; + colorAttachment == DE_NULL ? 0u : 1u, // deUint32 attachmentCount; + colorAttachment, // const VkImageView* pAttachments; + renderSize.width, // deUint32 width; + renderSize.height, // deUint32 height; + 1u, // deUint32 layers; + }; + + return createFramebuffer(vk, device, &framebufferInfo); +} + +VkImageMemoryBarrier makeImageMemoryBarrier (const VkAccessFlags srcAccessMask, + const VkAccessFlags dstAccessMask, + const VkImageLayout oldLayout, + const VkImageLayout newLayout, + const VkImage image, + const VkImageSubresourceRange subresourceRange) +{ + const VkImageMemoryBarrier barrier = + { + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, // VkStructureType sType; + DE_NULL, // const void* pNext; + srcAccessMask, // VkAccessFlags outputMask; + dstAccessMask, // VkAccessFlags inputMask; + oldLayout, // VkImageLayout oldLayout; + newLayout, // VkImageLayout newLayout; + VK_QUEUE_FAMILY_IGNORED, // deUint32 srcQueueFamilyIndex; + VK_QUEUE_FAMILY_IGNORED, // deUint32 destQueueFamilyIndex; + image, // VkImage image; + subresourceRange, // VkImageSubresourceRange subresourceRange; + }; + return barrier; +} + +VkBufferMemoryBarrier makeBufferMemoryBarrier (const VkAccessFlags srcAccessMask, + const VkAccessFlags dstAccessMask, + const VkBuffer buffer, + const VkDeviceSize offset, + const VkDeviceSize bufferSizeBytes) +{ + const VkBufferMemoryBarrier barrier = + { + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, // VkStructureType sType; + DE_NULL, // const void* pNext; + srcAccessMask, // VkAccessFlags srcAccessMask; + dstAccessMask, // VkAccessFlags dstAccessMask; + VK_QUEUE_FAMILY_IGNORED, // deUint32 srcQueueFamilyIndex; + VK_QUEUE_FAMILY_IGNORED, // deUint32 destQueueFamilyIndex; + buffer, // VkBuffer buffer; + offset, // VkDeviceSize offset; + bufferSizeBytes, // VkDeviceSize size; + }; + return barrier; +} + +VkMemoryBarrier makeMemoryBarrier (const VkAccessFlags srcAccessMask, + const VkAccessFlags dstAccessMask) +{ + const VkMemoryBarrier barrier = + { + VK_STRUCTURE_TYPE_MEMORY_BARRIER, // VkStructureType sType; + DE_NULL, // const void* pNext; + srcAccessMask, // VkAccessFlags outputMask; + dstAccessMask, // VkAccessFlags inputMask; + }; + return barrier; +} + +VkBufferImageCopy makeBufferImageCopy (const VkExtent3D extent, + const VkImageSubresourceLayers subresourceLayers) +{ + const VkBufferImageCopy copyParams = + { + 0ull, // VkDeviceSize bufferOffset; + 0u, // deUint32 bufferRowLength; + 0u, // deUint32 bufferImageHeight; + subresourceLayers, // VkImageSubresourceLayers imageSubresource; + makeOffset3D(0, 0, 0), // VkOffset3D imageOffset; + extent, // VkExtent3D imageExtent; + }; + return copyParams; +} + +inline Move makeBuffer (const DeviceInterface& vk, const VkDevice device, const VkBufferCreateInfo& createInfo) +{ + return createBuffer(vk, device, &createInfo); +} + +inline Move makeImage (const DeviceInterface& vk, const VkDevice device, const VkImageCreateInfo& createInfo) +{ + return createImage(vk, device, &createInfo); +} + +de::MovePtr bindImage (const DeviceInterface& vk, const VkDevice device, Allocator& allocator, const VkImage image, const MemoryRequirement requirement) +{ + de::MovePtr alloc = allocator.allocate(getImageMemoryRequirements(vk, device, image), requirement); + VK_CHECK(vk.bindImageMemory(device, image, alloc->getMemory(), alloc->getOffset())); + return alloc; +} + +de::MovePtr bindBuffer (const DeviceInterface& vk, const VkDevice device, Allocator& allocator, const VkBuffer buffer, const MemoryRequirement requirement) +{ + de::MovePtr alloc(allocator.allocate(getBufferMemoryRequirements(vk, device, buffer), requirement)); + VK_CHECK(vk.bindBufferMemory(device, buffer, alloc->getMemory(), alloc->getOffset())); + return alloc; +} + +VkQueryPoolCreateInfo makeQueryPoolCreateInfo (const deUint32 queryCountersNumber) +{ + const VkQueryPoolCreateInfo queryPoolCreateInfo = + { + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO, // VkStructureType sType; + DE_NULL, // const void* pNext; + (VkQueryPoolCreateFlags)0, // VkQueryPoolCreateFlags flags; + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT, // VkQueryType queryType; + queryCountersNumber, // deUint32 queryCount; + 0u, // VkQueryPipelineStatisticFlags pipelineStatistics; + }; + + return queryPoolCreateInfo; +} + +void fillBuffer (const DeviceInterface& vk, const VkDevice device, Allocation& bufferAlloc, VkDeviceSize bufferSize, const void* data, const VkDeviceSize dataSize) +{ + const VkMappedMemoryRange memRange = + { + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE, // VkStructureType sType; + DE_NULL, // const void* pNext; + bufferAlloc.getMemory(), // VkDeviceMemory memory; + bufferAlloc.getOffset(), // VkDeviceSize offset; + VK_WHOLE_SIZE // VkDeviceSize size; + }; + std::vector dataVec (static_cast(bufferSize), 0u); + + DE_ASSERT(bufferSize >= dataSize); + + deMemcpy(&dataVec[0], data, static_cast(dataSize)); + + deMemcpy(bufferAlloc.getHostPtr(), &dataVec[0], dataVec.size()); + VK_CHECK(vk.flushMappedMemoryRanges(device, 1u, &memRange)); +} + +class TransformFeedbackTestInstance : public TestInstance +{ +public: + TransformFeedbackTestInstance (Context& context, const TestParameters& parameters); +protected: + void validateLimits (); + deUint32 getNextChunkSize (const deUint32 usedBytes, const deUint32 bufBytes); + std::vector generateSizesList (const size_t bufBytes, const size_t chunkCount); + std::vector generateOffsetsList (const std::vector& sizesList); + void verifyTransformFeedbackBuffer (const MovePtr& bufAlloc, const deUint32 bufBytes); + + const bool m_extensions; + const VkExtent2D m_imageExtent2D; + const TestParameters m_parameters; + VkPhysicalDeviceTransformFeedbackPropertiesEXT m_transformFeedbackProperties; + de::Random m_rnd; +}; + +TransformFeedbackTestInstance::TransformFeedbackTestInstance (Context& context, const TestParameters& parameters) + : TestInstance (context) + , m_extensions (context.requireDeviceExtension("VK_EXT_transform_feedback")) + , m_imageExtent2D (makeExtent2D(IMAGE_SIZE, IMAGE_SIZE)) + , m_parameters (parameters) + , m_rnd (0) +{ + const VkPhysicalDeviceTransformFeedbackFeaturesEXT& transformFeedbackFeatures = m_context.getTransformFeedbackFeatures(); + VkPhysicalDeviceProperties2 deviceProperties2; + + if (transformFeedbackFeatures.transformFeedback == DE_FALSE) + TCU_THROW(NotSupportedError, "transformFeedback feature is not supported"); + + deMemset(&deviceProperties2, 0, sizeof(deviceProperties2)); + deMemset(&m_transformFeedbackProperties, 0, sizeof(m_transformFeedbackProperties)); + + deviceProperties2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2; + deviceProperties2.pNext = &m_transformFeedbackProperties; + + m_transformFeedbackProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT; + m_transformFeedbackProperties.pNext = DE_NULL; + + context.getInstanceInterface().getPhysicalDeviceProperties2(context.getPhysicalDevice(), &deviceProperties2); + + validateLimits(); +} + +void TransformFeedbackTestInstance::validateLimits () +{ + VALIDATE_MINIMUM(m_transformFeedbackProperties.maxTransformFeedbackBuffers, 1); + VALIDATE_MINIMUM(m_transformFeedbackProperties.maxTransformFeedbackBufferSize, MINIMUM_TF_BUFFER_SIZE); + VALIDATE_MINIMUM(m_transformFeedbackProperties.maxTransformFeedbackStreamDataSize, 512); + VALIDATE_MINIMUM(m_transformFeedbackProperties.maxTransformFeedbackBufferDataSize, 512); + VALIDATE_MINIMUM(m_transformFeedbackProperties.maxTransformFeedbackBufferDataStride, 512); + + VALIDATE_BOOL(m_transformFeedbackProperties.transformFeedbackQueries); + VALIDATE_BOOL(m_transformFeedbackProperties.transformFeedbackStreamsLinesTriangles); + VALIDATE_BOOL(m_transformFeedbackProperties.transformFeedbackRasterizationStreamSelect); + VALIDATE_BOOL(m_transformFeedbackProperties.transformFeedbackDraw); +} + +std::vector TransformFeedbackTestInstance::generateSizesList (const size_t bufBytes, const size_t chunkCount) +{ + const int minChunkSlot = static_cast(1); + const int maxChunkSlot = static_cast(bufBytes / sizeof(deUint32)); + int prevOffsetSlot = 0; + std::map offsetsSet; + std::vector result; + + DE_ASSERT(bufBytes <= MINIMUM_TF_BUFFER_SIZE); + DE_ASSERT(bufBytes % sizeof(deUint32) == 0); + DE_ASSERT(minChunkSlot <= maxChunkSlot); + DE_ASSERT(chunkCount > 0); + // To be effective this algorithm requires that chunkCount is much less than amount of chunks possible + DE_ASSERT(8 * chunkCount <= static_cast(maxChunkSlot)); + + offsetsSet[0] = true; + + // Create a list of unique offsets first + for (size_t chunkNdx = 1; chunkNdx < chunkCount; ++chunkNdx) + { + int chunkSlot; + + do + { + chunkSlot = m_rnd.getInt(minChunkSlot, maxChunkSlot - 1); + } while (offsetsSet.find(chunkSlot) != offsetsSet.end()); + + offsetsSet[chunkSlot] = true; + } + offsetsSet[maxChunkSlot] = true; + + // Calculate sizes of offsets list + result.reserve(chunkCount); + for (std::map::iterator mapIt = offsetsSet.begin(); mapIt != offsetsSet.end(); ++mapIt) + { + const int offsetSlot = mapIt->first; + + if (offsetSlot == 0) + continue; + + DE_ASSERT(prevOffsetSlot < offsetSlot && offsetSlot > 0); + + result.push_back(static_cast(static_cast(offsetSlot - prevOffsetSlot) * sizeof(deUint32))); + + prevOffsetSlot = offsetSlot; + } + + DE_ASSERT(result.size() == chunkCount); + + return result; +} + +std::vector TransformFeedbackTestInstance::generateOffsetsList (const std::vector& sizesList) +{ + VkDeviceSize offset = 0ull; + std::vector result; + + result.reserve(sizesList.size()); + + for (size_t chunkNdx = 0; chunkNdx < sizesList.size(); ++chunkNdx) + { + result.push_back(offset); + + offset += sizesList[chunkNdx]; + } + + DE_ASSERT(sizesList.size() == result.size()); + + return result; +} + +void TransformFeedbackTestInstance::verifyTransformFeedbackBuffer (const MovePtr& bufAlloc, const deUint32 bufBytes) +{ + const DeviceInterface& vk = m_context.getDeviceInterface(); + const VkDevice device = m_context.getDevice(); + + invalidateMappedMemoryRange(vk, device, bufAlloc->getMemory(), bufAlloc->getOffset(), bufBytes); + + const deUint32 numPoints = static_cast(bufBytes / sizeof(deUint32)); + const deUint32* tfData = (deUint32*)bufAlloc->getHostPtr(); + + for (deUint32 i = 0; i < numPoints; ++i) + if (tfData[i] != i) + TCU_FAIL(std::string("Failed at item ") + de::toString(i) + " received:" + de::toString(tfData[i]) + " expected:" + de::toString(i)); +} + +class TransformFeedbackBasicTestInstance : public TransformFeedbackTestInstance +{ +public: + TransformFeedbackBasicTestInstance (Context& context, const TestParameters& parameters); + +protected: + tcu::TestStatus iterate (void); +}; + +TransformFeedbackBasicTestInstance::TransformFeedbackBasicTestInstance (Context& context, const TestParameters& parameters) + : TransformFeedbackTestInstance (context, parameters) +{ +} + +tcu::TestStatus TransformFeedbackBasicTestInstance::iterate (void) +{ + const DeviceInterface& vk = m_context.getDeviceInterface(); + const VkDevice device = m_context.getDevice(); + const deUint32 queueFamilyIndex = m_context.getUniversalQueueFamilyIndex(); + const VkQueue queue = m_context.getUniversalQueue(); + Allocator& allocator = m_context.getDefaultAllocator(); + + const Unique vertexModule (createShaderModule (vk, device, m_context.getBinaryCollection().get("vert"), 0u)); + const Unique renderPass (makeRenderPass (vk, device, VK_FORMAT_UNDEFINED)); + const Unique framebuffer (makeFramebuffer (vk, device, *renderPass, m_imageExtent2D, DE_NULL)); + const Unique pipelineLayout (makePipelineLayout (vk, device)); + const Unique pipeline (makeGraphicsPipeline (vk, device, *pipelineLayout, *renderPass, *vertexModule, DE_NULL, DE_NULL, m_imageExtent2D, 0u)); + const Unique cmdPool (createCommandPool (vk, device, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, queueFamilyIndex)); + const Unique cmdBuffer (allocateCommandBuffer (vk, device, *cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY)); + + const VkBufferCreateInfo tfBufCreateInfo = makeBufferCreateInfo(m_parameters.bufferSize, VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT); + const Move tfBuf = createBuffer(vk, device, &tfBufCreateInfo); + const MovePtr tfBufAllocation = allocator.allocate(getBufferMemoryRequirements(vk, device, *tfBuf), MemoryRequirement::HostVisible); + const std::vector tfBufBindingSizes = generateSizesList(m_parameters.bufferSize, m_parameters.partCount); + const std::vector tfBufBindingOffsets = generateOffsetsList(tfBufBindingSizes); + + VK_CHECK(vk.bindBufferMemory(device, *tfBuf, tfBufAllocation->getMemory(), tfBufAllocation->getOffset())); + + beginCommandBuffer(vk, *cmdBuffer); + { + beginRenderPass(vk, *cmdBuffer, *renderPass, *framebuffer, makeRect2D(m_imageExtent2D)); + { + vk.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, *pipeline); + + for (deUint32 drawNdx = 0; drawNdx < m_parameters.partCount; ++drawNdx) + { + const deUint32 startValue = static_cast(tfBufBindingOffsets[drawNdx] / sizeof(deUint32)); + const deUint32 numPoints = static_cast(tfBufBindingSizes[drawNdx] / sizeof(deUint32)); + + vk.cmdBindTransformFeedbackBuffersEXT(*cmdBuffer, 0, 1, &*tfBuf, &tfBufBindingOffsets[drawNdx], &tfBufBindingSizes[drawNdx]); + + vk.cmdPushConstants(*cmdBuffer, *pipelineLayout, VK_SHADER_STAGE_VERTEX_BIT, 0u, sizeof(startValue), &startValue); + + vk.cmdBeginTransformFeedbackEXT(*cmdBuffer, 0, 0, DE_NULL, DE_NULL); + { + vk.cmdDraw(*cmdBuffer, numPoints, 1u, 0u, 0u); + } + vk.cmdEndTransformFeedbackEXT(*cmdBuffer, 0, 0, DE_NULL, DE_NULL); + } + } + endRenderPass(vk, *cmdBuffer); + } + endCommandBuffer(vk, *cmdBuffer); + submitCommandsAndWait(vk, device, queue, *cmdBuffer); + + verifyTransformFeedbackBuffer(tfBufAllocation, m_parameters.bufferSize); + + return tcu::TestStatus::pass("Pass"); +} + +class TransformFeedbackResumeTestInstance : public TransformFeedbackTestInstance +{ +public: + TransformFeedbackResumeTestInstance (Context& context, const TestParameters& parameters); + +protected: + tcu::TestStatus iterate (void); +}; + +TransformFeedbackResumeTestInstance::TransformFeedbackResumeTestInstance (Context& context, const TestParameters& parameters) + : TransformFeedbackTestInstance (context, parameters) +{ +} + +tcu::TestStatus TransformFeedbackResumeTestInstance::iterate (void) +{ + const DeviceInterface& vk = m_context.getDeviceInterface(); + const VkDevice device = m_context.getDevice(); + const deUint32 queueFamilyIndex = m_context.getUniversalQueueFamilyIndex(); + const VkQueue queue = m_context.getUniversalQueue(); + Allocator& allocator = m_context.getDefaultAllocator(); + + const Unique vertexModule (createShaderModule (vk, device, m_context.getBinaryCollection().get("vert"), 0u)); + const Unique renderPass (makeRenderPass (vk, device, VK_FORMAT_UNDEFINED)); + const Unique framebuffer (makeFramebuffer (vk, device, *renderPass, m_imageExtent2D, DE_NULL)); + const Unique pipelineLayout (makePipelineLayout (vk, device)); + const Unique pipeline (makeGraphicsPipeline (vk, device, *pipelineLayout, *renderPass, *vertexModule, DE_NULL, DE_NULL, m_imageExtent2D, 0u)); + + const Unique cmdPool (createCommandPool (vk, device, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, queueFamilyIndex)); + const Unique cmdBuffer (allocateCommandBuffer (vk, device, *cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY)); + + const VkBufferCreateInfo tfBufCreateInfo = makeBufferCreateInfo(m_parameters.bufferSize, VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT); + const Move tfBuf = createBuffer(vk, device, &tfBufCreateInfo); + const MovePtr tfBufAllocation = allocator.allocate(getBufferMemoryRequirements(vk, device, *tfBuf), MemoryRequirement::HostVisible); + const std::vector tfBufBindingSizes = std::vector(1, m_parameters.bufferSize); + const std::vector tfBufBindingOffsets = std::vector(1, 0ull); + + const size_t tfcBufSize = 16 * sizeof(deUint32) * m_parameters.partCount; + const VkBufferCreateInfo tfcBufCreateInfo = makeBufferCreateInfo(tfcBufSize, VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT); + const Move tfcBuf = createBuffer(vk, device, &tfcBufCreateInfo); + const MovePtr tfcBufAllocation = allocator.allocate(getBufferMemoryRequirements(vk, device, *tfcBuf), MemoryRequirement::Any); + const std::vector tfcBufBindingOffsets = generateOffsetsList(generateSizesList(tfcBufSize, m_parameters.partCount)); + const VkBufferMemoryBarrier tfcBufBarrier = makeBufferMemoryBarrier(VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT, VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT, *tfcBuf, 0ull, VK_WHOLE_SIZE); + + const std::vector chunkSizesList = generateSizesList(m_parameters.bufferSize, m_parameters.partCount); + const std::vector chunkOffsetsList = generateOffsetsList(chunkSizesList); + + DE_ASSERT(tfBufBindingSizes.size() == 1); + DE_ASSERT(tfBufBindingOffsets.size() == 1); + + VK_CHECK(vk.bindBufferMemory(device, *tfBuf, tfBufAllocation->getMemory(), tfBufAllocation->getOffset())); + VK_CHECK(vk.bindBufferMemory(device, *tfcBuf, tfcBufAllocation->getMemory(), tfcBufAllocation->getOffset())); + + beginCommandBuffer(vk, *cmdBuffer); + { + for (size_t drawNdx = 0; drawNdx < m_parameters.partCount; ++drawNdx) + { + const deUint32 startValue = static_cast(chunkOffsetsList[drawNdx] / sizeof(deUint32)); + const deUint32 numPoints = static_cast(chunkSizesList[drawNdx] / sizeof(deUint32)); + const deUint32 countBuffersCount = (drawNdx == 0) ? 0 : 1; + + beginRenderPass(vk, *cmdBuffer, *renderPass, *framebuffer, makeRect2D(m_imageExtent2D)); + { + + vk.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, *pipeline); + + vk.cmdBindTransformFeedbackBuffersEXT(*cmdBuffer, 0, 1, &*tfBuf, &tfBufBindingOffsets[0], &tfBufBindingSizes[0]); + + vk.cmdPushConstants(*cmdBuffer, *pipelineLayout, VK_SHADER_STAGE_VERTEX_BIT, 0u, sizeof(startValue), &startValue); + + vk.cmdBeginTransformFeedbackEXT(*cmdBuffer, 0, countBuffersCount, (drawNdx == 0) ? DE_NULL : &*tfcBuf, (drawNdx == 0) ? DE_NULL : &tfcBufBindingOffsets[drawNdx - 1]); + { + vk.cmdDraw(*cmdBuffer, numPoints, 1u, 0u, 0u); + } + vk.cmdEndTransformFeedbackEXT(*cmdBuffer, 0, 1, &*tfcBuf, &tfcBufBindingOffsets[drawNdx]); + } + endRenderPass(vk, *cmdBuffer); + + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT, VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT, 0u, 0u, DE_NULL, 1u, &tfcBufBarrier, 0u, DE_NULL); + } + } + endCommandBuffer(vk, *cmdBuffer); + submitCommandsAndWait(vk, device, queue, *cmdBuffer); + + verifyTransformFeedbackBuffer(tfBufAllocation, m_parameters.bufferSize); + + return tcu::TestStatus::pass("Pass"); +} + +class TransformFeedbackMultistreamTestInstance : public TransformFeedbackTestInstance +{ +public: + TransformFeedbackMultistreamTestInstance (Context& context, const TestParameters& parameters); + +protected: + std::vector generateSizesList (const size_t bufBytes, const size_t chunkCount); + void verifyTransformFeedbackBuffer (const MovePtr& bufAlloc, const deUint32 bufBytes); + tcu::TestStatus iterate (void); +}; + +TransformFeedbackMultistreamTestInstance::TransformFeedbackMultistreamTestInstance (Context& context, const TestParameters& parameters) + : TransformFeedbackTestInstance (context, parameters) +{ + const InstanceInterface& vki = m_context.getInstanceInterface(); + const VkPhysicalDevice physDevice = m_context.getPhysicalDevice(); + const VkPhysicalDeviceFeatures features = getPhysicalDeviceFeatures(vki, physDevice); + const VkPhysicalDeviceTransformFeedbackFeaturesEXT& transformFeedbackFeatures = m_context.getTransformFeedbackFeatures(); + const deUint32 streamsSupported = m_transformFeedbackProperties.maxTransformFeedbackStreams; + const deUint32 streamsRequired = m_parameters.streamId + 1; + const deUint32 tfBuffersSupported = m_transformFeedbackProperties.maxTransformFeedbackBuffers; + const deUint32 tfBuffersRequired = m_parameters.partCount; + const deUint32 bytesPerVertex = m_parameters.bufferSize / m_parameters.partCount; + const deUint32 tfStreamDataSizeSupported = m_transformFeedbackProperties.maxTransformFeedbackStreamDataSize; + const deUint32 tfBufferDataSizeSupported = m_transformFeedbackProperties.maxTransformFeedbackBufferDataSize; + const deUint32 tfBufferDataStrideSupported = m_transformFeedbackProperties.maxTransformFeedbackBufferDataStride; + + DE_ASSERT(m_parameters.partCount == 2u); + + if (!features.geometryShader) + TCU_THROW(NotSupportedError, "Missing feature: geometryShader"); + + if (transformFeedbackFeatures.geometryStreams == DE_FALSE) + TCU_THROW(NotSupportedError, "geometryStreams feature is not supported"); + + if (streamsSupported < streamsRequired) + TCU_THROW(NotSupportedError, std::string("maxTransformFeedbackStreams=" + de::toString(streamsSupported) + ", while test requires " + de::toString(streamsRequired)).c_str()); + + if (tfBuffersSupported < tfBuffersRequired) + TCU_THROW(NotSupportedError, std::string("maxTransformFeedbackBuffers=" + de::toString(tfBuffersSupported) + ", while test requires " + de::toString(tfBuffersRequired)).c_str()); + + if (tfStreamDataSizeSupported < bytesPerVertex) + TCU_THROW(NotSupportedError, std::string("maxTransformFeedbackStreamDataSize=" + de::toString(tfStreamDataSizeSupported) + ", while test requires " + de::toString(bytesPerVertex)).c_str()); + + if (tfBufferDataSizeSupported < bytesPerVertex) + TCU_THROW(NotSupportedError, std::string("maxTransformFeedbackBufferDataSize=" + de::toString(tfBufferDataSizeSupported) + ", while test requires " + de::toString(bytesPerVertex)).c_str()); + + if (tfBufferDataStrideSupported < bytesPerVertex) + TCU_THROW(NotSupportedError, std::string("maxTransformFeedbackBufferDataStride=" + de::toString(tfBufferDataStrideSupported) + ", while test requires " + de::toString(bytesPerVertex)).c_str()); +} + +std::vector TransformFeedbackMultistreamTestInstance::generateSizesList (const size_t bufBytes, const size_t chunkCount) +{ + const VkDeviceSize chunkSize = bufBytes / chunkCount; + std::vector result (chunkCount, chunkSize); + + DE_ASSERT(chunkSize * chunkCount == bufBytes); + DE_ASSERT(bufBytes <= MINIMUM_TF_BUFFER_SIZE); + DE_ASSERT(bufBytes % sizeof(deUint32) == 0); + DE_ASSERT(chunkCount > 0); + DE_ASSERT(result.size() == chunkCount); + + return result; +} + +void TransformFeedbackMultistreamTestInstance::verifyTransformFeedbackBuffer (const MovePtr& bufAlloc, const deUint32 bufBytes) +{ + const DeviceInterface& vk = m_context.getDeviceInterface(); + const VkDevice device = m_context.getDevice(); + + invalidateMappedMemoryRange(vk, device, bufAlloc->getMemory(), bufAlloc->getOffset(), bufBytes); + + const deUint32 numPoints = static_cast(bufBytes / sizeof(deUint32)); + const float* tfData = (float*)bufAlloc->getHostPtr(); + + for (deUint32 i = 0; i < numPoints; ++i) + if (tfData[i] != float(i)) + TCU_FAIL(std::string("Failed at item ") + de::toString(float(i)) + " received:" + de::toString(tfData[i]) + " expected:" + de::toString(i)); +} + +tcu::TestStatus TransformFeedbackMultistreamTestInstance::iterate (void) +{ + const DeviceInterface& vk = m_context.getDeviceInterface(); + const VkDevice device = m_context.getDevice(); + const deUint32 queueFamilyIndex = m_context.getUniversalQueueFamilyIndex(); + const VkQueue queue = m_context.getUniversalQueue(); + Allocator& allocator = m_context.getDefaultAllocator(); + + const Unique renderPass (makeRenderPass (vk, device, VK_FORMAT_UNDEFINED)); + + const Unique vertexModule (createShaderModule (vk, device, m_context.getBinaryCollection().get("vert"), 0u)); + const Unique geomModule (createShaderModule (vk, device, m_context.getBinaryCollection().get("geom"), 0u)); + + const Unique framebuffer (makeFramebuffer (vk, device, *renderPass, m_imageExtent2D, DE_NULL)); + const Unique pipelineLayout (makePipelineLayout (vk, device)); + const Unique pipeline (makeGraphicsPipeline (vk, device, *pipelineLayout, *renderPass, *vertexModule, *geomModule, DE_NULL, m_imageExtent2D, 0u)); + const Unique cmdPool (createCommandPool (vk, device, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, queueFamilyIndex)); + const Unique cmdBuffer (allocateCommandBuffer (vk, device, *cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY)); + + const VkBufferCreateInfo tfBufCreateInfo = makeBufferCreateInfo(m_parameters.bufferSize, VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT); + const Move tfBuf = createBuffer(vk, device, &tfBufCreateInfo); + const std::vector tfBufArray = std::vector(m_parameters.partCount, *tfBuf); + const MovePtr tfBufAllocation = allocator.allocate(getBufferMemoryRequirements(vk, device, *tfBuf), MemoryRequirement::HostVisible); + const std::vector tfBufBindingSizes = generateSizesList(m_parameters.bufferSize, m_parameters.partCount); + const std::vector tfBufBindingOffsets = generateOffsetsList(tfBufBindingSizes); + + VK_CHECK(vk.bindBufferMemory(device, *tfBuf, tfBufAllocation->getMemory(), tfBufAllocation->getOffset())); + + beginCommandBuffer(vk, *cmdBuffer); + { + beginRenderPass(vk, *cmdBuffer, *renderPass, *framebuffer, makeRect2D(m_imageExtent2D)); + { + vk.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, *pipeline); + + vk.cmdBindTransformFeedbackBuffersEXT(*cmdBuffer, 0u, m_parameters.partCount, &tfBufArray[0], &tfBufBindingOffsets[0], &tfBufBindingSizes[0]); + + vk.cmdBeginTransformFeedbackEXT(*cmdBuffer, 0, 0, DE_NULL, DE_NULL); + { + vk.cmdDraw(*cmdBuffer, 1u, 1u, 0u, 0u); + } + vk.cmdEndTransformFeedbackEXT(*cmdBuffer, 0, 0, DE_NULL, DE_NULL); + } + endRenderPass(vk, *cmdBuffer); + } + endCommandBuffer(vk, *cmdBuffer); + submitCommandsAndWait(vk, device, queue, *cmdBuffer); + + verifyTransformFeedbackBuffer(tfBufAllocation, m_parameters.bufferSize); + + return tcu::TestStatus::pass("Pass"); +} + +class TransformFeedbackStreamsTestInstance : public TransformFeedbackTestInstance +{ +public: + TransformFeedbackStreamsTestInstance (Context& context, const TestParameters& parameters); + +protected: + tcu::TestStatus iterate (void); + bool verifyImage (const VkFormat imageFormat, const VkExtent2D& size, const void* resultData); +}; + +TransformFeedbackStreamsTestInstance::TransformFeedbackStreamsTestInstance (Context& context, const TestParameters& parameters) + : TransformFeedbackTestInstance (context, parameters) +{ + const InstanceInterface& vki = m_context.getInstanceInterface(); + const VkPhysicalDevice physDevice = m_context.getPhysicalDevice(); + const VkPhysicalDeviceFeatures features = getPhysicalDeviceFeatures(vki, physDevice); + const VkPhysicalDeviceTransformFeedbackFeaturesEXT& transformFeedbackFeatures = m_context.getTransformFeedbackFeatures(); + const deUint32 streamsSupported = m_transformFeedbackProperties.maxTransformFeedbackStreams; + const deUint32 streamsRequired = m_parameters.streamId + 1; + + if (!features.geometryShader) + TCU_THROW(NotSupportedError, "Missing feature: geometryShader"); + + if (transformFeedbackFeatures.geometryStreams == DE_FALSE) + TCU_THROW(NotSupportedError, "geometryStreams feature is not supported"); + + if (m_transformFeedbackProperties.transformFeedbackRasterizationStreamSelect == DE_FALSE) + TCU_THROW(NotSupportedError, "transformFeedbackRasterizationStreamSelect feature is not supported"); + + if (streamsSupported < streamsRequired) + TCU_THROW(NotSupportedError, std::string("maxTransformFeedbackStreams=" + de::toString(streamsSupported) + ", while test requires " + de::toString(streamsRequired)).c_str()); +} + +bool TransformFeedbackStreamsTestInstance::verifyImage (const VkFormat imageFormat, const VkExtent2D& size, const void* resultData) +{ + const tcu::RGBA magentaRGBA (tcu::RGBA(0xFF, 0x00, 0xFF, 0xFF)); + const tcu::Vec4 magenta (magentaRGBA.toVec()); + const tcu::Vec4 black (tcu::RGBA::black().toVec()); + const tcu::TextureFormat textureFormat (mapVkFormat(imageFormat)); + const int dataSize (size.width * size.height * textureFormat.getPixelSize()); + tcu::TextureLevel referenceImage (textureFormat, size.width, size.height); + tcu::PixelBufferAccess referenceAccess (referenceImage.getAccess()); + + // Generate reference image + if (m_parameters.testType == TEST_TYPE_STREAMS) + { + for (int y = 0; y < referenceImage.getHeight(); ++y) + { + const tcu::Vec4& validColor = y < referenceImage.getHeight() / 2 ? black : magenta; + + for (int x = 0; x < referenceImage.getWidth(); ++x) + referenceAccess.setPixel(validColor, x, y); + } + } + + if (m_parameters.testType == TEST_TYPE_STREAMS_CLIPDISTANCE || m_parameters.testType == TEST_TYPE_STREAMS_CULLDISTANCE) + { + for (int y = 0; y < referenceImage.getHeight(); ++y) + for (int x = 0; x < referenceImage.getWidth(); ++x) + { + const tcu::Vec4& validColor = (y >= referenceImage.getHeight() / 2) && (x >= referenceImage.getWidth() / 2) ? magenta : black; + + referenceAccess.setPixel(validColor, x, y); + } + } + + if (m_parameters.testType == TEST_TYPE_STREAMS_POINTSIZE) + { + const int pointSize = static_cast(m_parameters.pointSize); + const tcu::Vec4& validColor = black; + + for (int y = 0; y < referenceImage.getHeight(); ++y) + for (int x = 0; x < referenceImage.getWidth(); ++x) + referenceAccess.setPixel(validColor, x, y); + + referenceAccess.setPixel(magenta, (1 + referenceImage.getWidth()) / 4 - 1, (referenceImage.getHeight() * 3) / 4 - 1); + + for (int y = 0; y < pointSize; ++y) + for (int x = 0; x < pointSize; ++x) + referenceAccess.setPixel(magenta, x + (referenceImage.getWidth() * 3) / 4 - 1, y + (referenceImage.getHeight() * 3) / 4 - 1); + } + + if (deMemCmp(resultData, referenceAccess.getDataPtr(), dataSize) != 0) + { + const tcu::ConstPixelBufferAccess resultImage (textureFormat, size.width, size.height, 1, resultData); + bool ok; + + ok = tcu::intThresholdCompare(m_context.getTestContext().getLog(), "Image comparison", "", referenceAccess, resultImage, tcu::UVec4(1), tcu::COMPARE_LOG_RESULT); + + return ok; + } + + return true; +} + +tcu::TestStatus TransformFeedbackStreamsTestInstance::iterate (void) +{ + const DeviceInterface& vk = m_context.getDeviceInterface(); + const VkDevice device = m_context.getDevice(); + const deUint32 queueFamilyIndex = m_context.getUniversalQueueFamilyIndex(); + const VkQueue queue = m_context.getUniversalQueue(); + Allocator& allocator = m_context.getDefaultAllocator(); + + const Unique renderPass (makeRenderPass (vk, device, VK_FORMAT_R8G8B8A8_UNORM)); + + const Unique vertModule (createShaderModule (vk, device, m_context.getBinaryCollection().get("vert"), 0u)); + const Unique geomModule (createShaderModule (vk, device, m_context.getBinaryCollection().get("geom"), 0u)); + const Unique fragModule (createShaderModule (vk, device, m_context.getBinaryCollection().get("frag"), 0u)); + + const VkFormat colorFormat = VK_FORMAT_R8G8B8A8_UNORM; + const VkImageUsageFlags imageUsageFlags = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT; + const tcu::RGBA clearColor (tcu::RGBA::black()); + const VkImageSubresourceRange colorSubresRange (makeImageSubresourceRange(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0u, 1u)); + const VkDeviceSize colorBufferSize (m_imageExtent2D.width * m_imageExtent2D.height * tcu::getPixelSize(mapVkFormat(colorFormat))); + const Unique colorImage (makeImage (vk, device, makeImageCreateInfo(0u, VK_IMAGE_TYPE_2D, colorFormat, m_imageExtent2D, 1u, imageUsageFlags))); + const UniquePtr colorImageAlloc (bindImage (vk, device, allocator, *colorImage, MemoryRequirement::Any)); + const Unique colorAttachment (makeImageView (vk, device, *colorImage, VK_IMAGE_VIEW_TYPE_2D, colorFormat, colorSubresRange)); + const Unique colorBuffer (makeBuffer (vk, device, makeBufferCreateInfo(colorBufferSize, VK_BUFFER_USAGE_TRANSFER_DST_BIT))); + const UniquePtr colorBufferAlloc (bindBuffer (vk, device, allocator, *colorBuffer, MemoryRequirement::HostVisible)); + + const Unique framebuffer (makeFramebuffer (vk, device, *renderPass, m_imageExtent2D, &*colorAttachment)); + const Unique pipelineLayout (makePipelineLayout (vk, device)); + const Unique pipeline (makeGraphicsPipeline (vk, device, *pipelineLayout, *renderPass, *vertModule, *geomModule, *fragModule, m_imageExtent2D, 0u, &m_parameters.streamId)); + const Unique cmdPool (createCommandPool (vk, device, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, queueFamilyIndex)); + const Unique cmdBuffer (allocateCommandBuffer (vk, device, *cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY)); + + const VkImageMemoryBarrier preCopyBarrier = makeImageMemoryBarrier(VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, VK_ACCESS_TRANSFER_READ_BIT, + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, + *colorImage, colorSubresRange); + const VkBufferImageCopy region = makeBufferImageCopy(makeExtent3D(m_imageExtent2D.width, m_imageExtent2D.height, 1u), + makeImageSubresourceLayers(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 0u, 1u)); + const VkBufferMemoryBarrier postCopyBarrier = makeBufferMemoryBarrier(VK_ACCESS_TRANSFER_WRITE_BIT, VK_ACCESS_HOST_READ_BIT, *colorBuffer, 0ull, VK_WHOLE_SIZE); + + beginCommandBuffer(vk, *cmdBuffer); + { + beginRenderPass(vk, *cmdBuffer, *renderPass, *framebuffer, makeRect2D(m_imageExtent2D), clearColor.toVec()); + { + vk.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, *pipeline); + + vk.cmdDraw(*cmdBuffer, 2u, 1u, 0u, 0u); + } + endRenderPass(vk, *cmdBuffer); + + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, 0u, 0u, DE_NULL, 0u, DE_NULL, 1u, &preCopyBarrier); + vk.cmdCopyImageToBuffer(*cmdBuffer, *colorImage, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, *colorBuffer, 1u, ®ion); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_HOST_BIT, 0u, 0u, DE_NULL, 1u, &postCopyBarrier, DE_NULL, 0u); + } + endCommandBuffer(vk, *cmdBuffer); + submitCommandsAndWait(vk, device, queue, *cmdBuffer); + + if (!verifyImage(colorFormat, m_imageExtent2D, colorBufferAlloc->getHostPtr())) + return tcu::TestStatus::fail("Fail"); + + return tcu::TestStatus::pass("Pass"); +} + +class TransformFeedbackIndirectDrawTestInstance : public TransformFeedbackTestInstance +{ +public: + TransformFeedbackIndirectDrawTestInstance (Context& context, const TestParameters& parameters); + +protected: + tcu::TestStatus iterate (void); + bool verifyImage (const VkFormat imageFormat, const VkExtent2D& size, const void* resultData); +}; + +TransformFeedbackIndirectDrawTestInstance::TransformFeedbackIndirectDrawTestInstance (Context& context, const TestParameters& parameters) + : TransformFeedbackTestInstance (context, parameters) +{ + const InstanceInterface& vki = m_context.getInstanceInterface(); + const VkPhysicalDevice physDevice = m_context.getPhysicalDevice(); + const VkPhysicalDeviceLimits limits = getPhysicalDeviceProperties(vki, physDevice).limits; + const deUint32 tfBufferDataSizeSupported = m_transformFeedbackProperties.maxTransformFeedbackBufferDataSize; + const deUint32 tfBufferDataStrideSupported = m_transformFeedbackProperties.maxTransformFeedbackBufferDataStride; + + if (m_transformFeedbackProperties.transformFeedbackDraw == DE_FALSE) + TCU_THROW(NotSupportedError, "transformFeedbackDraw feature is not supported"); + + if (limits.maxVertexInputBindingStride < m_parameters.vertexStride) + TCU_THROW(NotSupportedError, std::string("maxVertexInputBindingStride=" + de::toString(limits.maxVertexInputBindingStride) + ", while test requires " + de::toString(m_parameters.vertexStride)).c_str()); + + if (tfBufferDataSizeSupported < m_parameters.vertexStride) + TCU_THROW(NotSupportedError, std::string("maxTransformFeedbackBufferDataSize=" + de::toString(tfBufferDataSizeSupported) + ", while test requires " + de::toString(m_parameters.vertexStride)).c_str()); + + if (tfBufferDataStrideSupported < m_parameters.vertexStride) + TCU_THROW(NotSupportedError, std::string("maxTransformFeedbackBufferDataStride=" + de::toString(tfBufferDataStrideSupported) + ", while test requires " + de::toString(m_parameters.vertexStride)).c_str()); +} + +bool TransformFeedbackIndirectDrawTestInstance::verifyImage (const VkFormat imageFormat, const VkExtent2D& size, const void* resultData) +{ + const tcu::Vec4 white (tcu::RGBA::white().toVec()); + const tcu::TextureFormat textureFormat (mapVkFormat(imageFormat)); + const int dataSize (size.width * size.height * textureFormat.getPixelSize()); + tcu::TextureLevel referenceImage (textureFormat, size.width, size.height); + tcu::PixelBufferAccess referenceAccess (referenceImage.getAccess()); + + // Generate reference image + for (int y = 0; y < referenceImage.getHeight(); ++y) + for (int x = 0; x < referenceImage.getWidth(); ++x) + referenceAccess.setPixel(white, x, y); + + if (deMemCmp(resultData, referenceAccess.getDataPtr(), dataSize) != 0) + { + const tcu::ConstPixelBufferAccess resultImage (textureFormat, size.width, size.height, 1, resultData); + bool ok; + + ok = tcu::intThresholdCompare(m_context.getTestContext().getLog(), "Image comparison", "", referenceAccess, resultImage, tcu::UVec4(1), tcu::COMPARE_LOG_RESULT); + + return ok; + } + + return true; +} + +tcu::TestStatus TransformFeedbackIndirectDrawTestInstance::iterate (void) +{ + const DeviceInterface& vk = m_context.getDeviceInterface(); + const VkDevice device = m_context.getDevice(); + const deUint32 queueFamilyIndex = m_context.getUniversalQueueFamilyIndex(); + const VkQueue queue = m_context.getUniversalQueue(); + Allocator& allocator = m_context.getDefaultAllocator(); + + const Unique renderPass (makeRenderPass (vk, device, VK_FORMAT_R8G8B8A8_UNORM)); + + const Unique vertModule (createShaderModule (vk, device, m_context.getBinaryCollection().get("vert"), 0u)); + const Unique fragModule (createShaderModule (vk, device, m_context.getBinaryCollection().get("frag"), 0u)); + + const VkFormat colorFormat = VK_FORMAT_R8G8B8A8_UNORM; + const VkImageUsageFlags imageUsageFlags = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT; + const tcu::RGBA clearColor (tcu::RGBA::black()); + const VkImageSubresourceRange colorSubresRange (makeImageSubresourceRange(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0u, 1u)); + const VkDeviceSize colorBufferSize (m_imageExtent2D.width * m_imageExtent2D.height * tcu::getPixelSize(mapVkFormat(colorFormat))); + const Unique colorImage (makeImage (vk, device, makeImageCreateInfo(0u, VK_IMAGE_TYPE_2D, colorFormat, m_imageExtent2D, 1u, imageUsageFlags))); + const UniquePtr colorImageAlloc (bindImage (vk, device, allocator, *colorImage, MemoryRequirement::Any)); + const Unique colorAttachment (makeImageView (vk, device, *colorImage, VK_IMAGE_VIEW_TYPE_2D, colorFormat, colorSubresRange)); + const Unique colorBuffer (makeBuffer (vk, device, makeBufferCreateInfo(colorBufferSize, VK_BUFFER_USAGE_TRANSFER_DST_BIT))); + const UniquePtr colorBufferAlloc (bindBuffer (vk, device, allocator, *colorBuffer, MemoryRequirement::HostVisible)); + + const deUint32 vertexCount = 6u; + const VkDeviceSize vertexBufferSize = vertexCount * m_parameters.vertexStride; + const VkBufferUsageFlags vertexBufferUsage = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT | VK_BUFFER_USAGE_TRANSFER_DST_BIT; + const Unique vertexBuffer (makeBuffer (vk, device, makeBufferCreateInfo(vertexBufferSize, vertexBufferUsage))); + const UniquePtr vertexBufferAlloc (bindBuffer (vk, device, allocator, *vertexBuffer, MemoryRequirement::HostVisible)); + const VkDeviceSize vertexBufferOffset (0u); + const float vertexBufferVals[] = + { + -1.0f, -1.0f, 0.0f, 1.0f, + -1.0f, +1.0f, 0.0f, 1.0f, + +1.0f, -1.0f, 0.0f, 1.0f, + -1.0f, +1.0f, 0.0f, 1.0f, + +1.0f, -1.0f, 0.0f, 1.0f, + +1.0f, +1.0f, 0.0f, 1.0f, + }; + + const deUint32 counterBufferValue = m_parameters.vertexStride * vertexCount; + const VkDeviceSize counterBufferSize = sizeof(counterBufferValue); + const VkBufferUsageFlags counterBufferUsage = VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT | VK_BUFFER_USAGE_TRANSFER_DST_BIT; + const Unique counterBuffer (makeBuffer (vk, device, makeBufferCreateInfo(counterBufferSize, counterBufferUsage))); + const UniquePtr counterBufferAlloc (bindBuffer (vk, device, allocator, *counterBuffer, MemoryRequirement::HostVisible)); + + const Unique framebuffer (makeFramebuffer (vk, device, *renderPass, m_imageExtent2D, &*colorAttachment)); + const Unique pipelineLayout (makePipelineLayout (vk, device)); + const Unique pipeline (makeGraphicsPipeline (vk, device, *pipelineLayout, *renderPass, *vertModule, DE_NULL, *fragModule, m_imageExtent2D, 0u, DE_NULL, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, true)); + const Unique cmdPool (createCommandPool (vk, device, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, queueFamilyIndex)); + const Unique cmdBuffer (allocateCommandBuffer (vk, device, *cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY)); + + const VkImageMemoryBarrier preCopyBarrier = makeImageMemoryBarrier(VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, VK_ACCESS_TRANSFER_READ_BIT, + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, + *colorImage, colorSubresRange); + const VkBufferImageCopy region = makeBufferImageCopy(makeExtent3D(m_imageExtent2D.width, m_imageExtent2D.height, 1u), + makeImageSubresourceLayers(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 0u, 1u)); + const VkBufferMemoryBarrier postCopyBarrier = makeBufferMemoryBarrier(VK_ACCESS_TRANSFER_WRITE_BIT, VK_ACCESS_HOST_READ_BIT, *colorBuffer, 0ull, VK_WHOLE_SIZE); + + fillBuffer(vk, device, *counterBufferAlloc, counterBufferSize, &counterBufferValue, counterBufferSize); + fillBuffer(vk, device, *vertexBufferAlloc, vertexBufferSize, vertexBufferVals, sizeof(vertexBufferVals)); + + beginCommandBuffer(vk, *cmdBuffer); + { + beginRenderPass(vk, *cmdBuffer, *renderPass, *framebuffer, makeRect2D(m_imageExtent2D), clearColor.toVec()); + { + vk.cmdBindVertexBuffers(*cmdBuffer, 0u, 1u, &*vertexBuffer, &vertexBufferOffset); + + vk.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, *pipeline); + + vk.cmdDrawIndirectByteCountEXT(*cmdBuffer, 1u, 0u, *counterBuffer, 0u, 0u, m_parameters.vertexStride); + } + endRenderPass(vk, *cmdBuffer); + + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, 0u, 0u, DE_NULL, 0u, DE_NULL, 1u, &preCopyBarrier); + vk.cmdCopyImageToBuffer(*cmdBuffer, *colorImage, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, *colorBuffer, 1u, ®ion); + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_HOST_BIT, 0u, 0u, DE_NULL, 1u, &postCopyBarrier, DE_NULL, 0u); + } + endCommandBuffer(vk, *cmdBuffer); + submitCommandsAndWait(vk, device, queue, *cmdBuffer); + + if (!verifyImage(colorFormat, m_imageExtent2D, colorBufferAlloc->getHostPtr())) + return tcu::TestStatus::fail("Fail"); + + return tcu::TestStatus::pass("Pass"); +} + +class TransformFeedbackBackwardDependencyTestInstance : public TransformFeedbackTestInstance +{ +public: + TransformFeedbackBackwardDependencyTestInstance (Context& context, const TestParameters& parameters); + +protected: + tcu::TestStatus iterate (void); + std::vector generateSizesList (const size_t bufBytes, const size_t chunkCount); +}; + +TransformFeedbackBackwardDependencyTestInstance::TransformFeedbackBackwardDependencyTestInstance (Context& context, const TestParameters& parameters) + : TransformFeedbackTestInstance (context, parameters) +{ +} + +std::vector TransformFeedbackBackwardDependencyTestInstance::generateSizesList (const size_t bufBytes, const size_t chunkCount) +{ + const VkDeviceSize chunkSize = bufBytes / chunkCount; + std::vector result (chunkCount, chunkSize); + + DE_ASSERT(chunkSize * chunkCount == bufBytes); + DE_ASSERT(bufBytes <= MINIMUM_TF_BUFFER_SIZE); + DE_ASSERT(bufBytes % sizeof(deUint32) == 0); + DE_ASSERT(chunkCount > 0); + DE_ASSERT(result.size() == chunkCount); + + return result; +} + +tcu::TestStatus TransformFeedbackBackwardDependencyTestInstance::iterate (void) +{ + const DeviceInterface& vk = m_context.getDeviceInterface(); + const VkDevice device = m_context.getDevice(); + const deUint32 queueFamilyIndex = m_context.getUniversalQueueFamilyIndex(); + const VkQueue queue = m_context.getUniversalQueue(); + Allocator& allocator = m_context.getDefaultAllocator(); + + const Unique vertexModule (createShaderModule (vk, device, m_context.getBinaryCollection().get("vert"), 0u)); + const Unique renderPass (makeRenderPass (vk, device)); + const Unique framebuffer (makeFramebuffer (vk, device, *renderPass, m_imageExtent2D, DE_NULL)); + const Unique pipelineLayout (makePipelineLayout (vk, device)); + const Unique pipeline (makeGraphicsPipeline (vk, device, *pipelineLayout, *renderPass, *vertexModule, DE_NULL, DE_NULL, m_imageExtent2D, 0u)); + const Unique cmdPool (createCommandPool (vk, device, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, queueFamilyIndex)); + const Unique cmdBuffer (allocateCommandBuffer (vk, device, *cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY)); + + const VkBufferCreateInfo tfBufCreateInfo = makeBufferCreateInfo(m_parameters.bufferSize, VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT); + const Move tfBuf = createBuffer(vk, device, &tfBufCreateInfo); + const MovePtr tfBufAllocation = allocator.allocate(getBufferMemoryRequirements(vk, device, *tfBuf), MemoryRequirement::HostVisible); + const VkDeviceSize tfBufBindingSize = m_parameters.bufferSize; + const VkDeviceSize tfBufBindingOffset = 0ull; + + const size_t tfcBufSize = sizeof(deUint32); + const VkBufferCreateInfo tfcBufCreateInfo = makeBufferCreateInfo(tfcBufSize, VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT | VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT); + const Move tfcBuf = createBuffer(vk, device, &tfcBufCreateInfo); + const MovePtr tfcBufAllocation = allocator.allocate(getBufferMemoryRequirements(vk, device, *tfcBuf), MemoryRequirement::Any); + const VkDeviceSize tfcBufBindingOffset = 0ull; + const VkMemoryBarrier tfcMemoryBarrier = makeMemoryBarrier(VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT, VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT); + + const std::vector chunkSizesList = generateSizesList(m_parameters.bufferSize, m_parameters.partCount); + const std::vector chunkOffsetsList = generateOffsetsList(chunkSizesList); + + VK_CHECK(vk.bindBufferMemory(device, *tfBuf, tfBufAllocation->getMemory(), tfBufAllocation->getOffset())); + VK_CHECK(vk.bindBufferMemory(device, *tfcBuf, tfcBufAllocation->getMemory(), tfcBufAllocation->getOffset())); + + DE_ASSERT(m_parameters.partCount == 2u); + + beginCommandBuffer(vk, *cmdBuffer); + { + beginRenderPass(vk, *cmdBuffer, *renderPass, *framebuffer, makeRect2D(m_imageExtent2D)); + { + vk.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, *pipeline); + + vk.cmdBindTransformFeedbackBuffersEXT(*cmdBuffer, 0, 1, &*tfBuf, &tfBufBindingOffset, &tfBufBindingSize); + + { + const deUint32 startValue = static_cast(chunkOffsetsList[0] / sizeof(deUint32)); + const deUint32 numPoints = static_cast(chunkSizesList[0] / sizeof(deUint32)); + + vk.cmdPushConstants(*cmdBuffer, *pipelineLayout, VK_SHADER_STAGE_VERTEX_BIT, 0u, sizeof(startValue), &startValue); + + vk.cmdBeginTransformFeedbackEXT(*cmdBuffer, 0, 0, DE_NULL, DE_NULL); + { + vk.cmdDraw(*cmdBuffer, numPoints, 1u, 0u, 0u); + } + vk.cmdEndTransformFeedbackEXT(*cmdBuffer, 0, 1, &*tfcBuf, &tfcBufBindingOffset); + } + + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT, VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT, 0u, 1u, &tfcMemoryBarrier, 0u, DE_NULL, DE_NULL, 0u); + + { + const deUint32 startValue = static_cast(chunkOffsetsList[1] / sizeof(deUint32)); + + vk.cmdPushConstants(*cmdBuffer, *pipelineLayout, VK_SHADER_STAGE_VERTEX_BIT, 0u, sizeof(startValue), &startValue); + + vk.cmdBeginTransformFeedbackEXT(*cmdBuffer, 0, 1, &*tfcBuf, &tfcBufBindingOffset); + { + vk.cmdDrawIndirectByteCountEXT(*cmdBuffer, 1u, 0u, *tfcBuf, 0u, 0u, 4u); + } + vk.cmdEndTransformFeedbackEXT(*cmdBuffer, 0, 0, DE_NULL, DE_NULL); + } + + } + endRenderPass(vk, *cmdBuffer); + } + endCommandBuffer(vk, *cmdBuffer); + submitCommandsAndWait(vk, device, queue, *cmdBuffer); + + verifyTransformFeedbackBuffer(tfBufAllocation, m_parameters.bufferSize); + + return tcu::TestStatus::pass("Pass"); +} + + +class TransformFeedbackQueryTestInstance : public TransformFeedbackTestInstance +{ +public: + TransformFeedbackQueryTestInstance (Context& context, const TestParameters& parameters); + +protected: + tcu::TestStatus iterate (void); +}; + +TransformFeedbackQueryTestInstance::TransformFeedbackQueryTestInstance (Context& context, const TestParameters& parameters) + : TransformFeedbackTestInstance (context, parameters) +{ + const InstanceInterface& vki = m_context.getInstanceInterface(); + const VkPhysicalDevice physDevice = m_context.getPhysicalDevice(); + const VkPhysicalDeviceFeatures features = getPhysicalDeviceFeatures(vki, physDevice); + const VkPhysicalDeviceTransformFeedbackFeaturesEXT& transformFeedbackFeatures = m_context.getTransformFeedbackFeatures(); + const deUint32 streamsSupported = m_transformFeedbackProperties.maxTransformFeedbackStreams; + const deUint32 streamsRequired = m_parameters.streamId + 1; + + if (!features.geometryShader) + TCU_THROW(NotSupportedError, "Missing feature: geometryShader"); + + if (transformFeedbackFeatures.geometryStreams == DE_FALSE) + TCU_THROW(NotSupportedError, "geometryStreams feature is not supported"); + + if (streamsSupported < streamsRequired) + TCU_THROW(NotSupportedError, std::string("maxTransformFeedbackStreams=" + de::toString(streamsSupported) + ", while test requires " + de::toString(streamsRequired)).c_str()); + + if (m_transformFeedbackProperties.transformFeedbackQueries == DE_FALSE) + TCU_THROW(NotSupportedError, "transformFeedbackQueries feature is not supported"); +} + +tcu::TestStatus TransformFeedbackQueryTestInstance::iterate (void) +{ + const DeviceInterface& vk = m_context.getDeviceInterface(); + const VkDevice device = m_context.getDevice(); + const deUint32 queueFamilyIndex = m_context.getUniversalQueueFamilyIndex(); + const VkQueue queue = m_context.getUniversalQueue(); + Allocator& allocator = m_context.getDefaultAllocator(); + + const deUint32 overflowVertices = 3u; + const deUint32 bytesPerVertex = static_cast(4 * sizeof(float)); + const deUint32 numVerticesInBuffer = m_parameters.bufferSize / bytesPerVertex; + const deUint32 numVerticesToWrite = numVerticesInBuffer + overflowVertices; + const Unique renderPass (makeRenderPass (vk, device, VK_FORMAT_UNDEFINED)); + + const Unique vertModule (createShaderModule (vk, device, m_context.getBinaryCollection().get("vert"), 0u)); + const Unique geomModule (createShaderModule (vk, device, m_context.getBinaryCollection().get("geom"), 0u)); + + const Unique framebuffer (makeFramebuffer (vk, device, *renderPass, m_imageExtent2D, DE_NULL)); + const Unique pipelineLayout (makePipelineLayout (vk, device)); + const Unique pipeline (makeGraphicsPipeline (vk, device, *pipelineLayout, *renderPass, *vertModule, *geomModule, DE_NULL, m_imageExtent2D, 0u)); + const Unique cmdPool (createCommandPool (vk, device, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, queueFamilyIndex)); + const Unique cmdBuffer (allocateCommandBuffer (vk, device, *cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY)); + + const VkBufferCreateInfo tfBufCreateInfo = makeBufferCreateInfo(m_parameters.bufferSize, VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT); + const Move tfBuf = createBuffer(vk, device, &tfBufCreateInfo); + const MovePtr tfBufAllocation = bindBuffer(vk, device, allocator, *tfBuf, MemoryRequirement::HostVisible); + const VkDeviceSize tfBufBindingSize = m_parameters.bufferSize; + const VkDeviceSize tfBufBindingOffset = 0ull; + + const deUint32 queryCountersNumber = 1u; + const deUint32 queryIndex = 0u; + const VkQueryPoolCreateInfo queryPoolCreateInfo = makeQueryPoolCreateInfo(queryCountersNumber); + const Unique queryPool (createQueryPool(vk, device, &queryPoolCreateInfo)); + + DE_ASSERT(numVerticesInBuffer * bytesPerVertex == m_parameters.bufferSize); + + beginCommandBuffer(vk, *cmdBuffer); + { + vk.cmdResetQueryPool(*cmdBuffer, *queryPool, queryIndex, queryCountersNumber); + + beginRenderPass(vk, *cmdBuffer, *renderPass, *framebuffer, makeRect2D(m_imageExtent2D)); + { + vk.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, *pipeline); + + vk.cmdBindTransformFeedbackBuffersEXT(*cmdBuffer, 0u, 1u, &*tfBuf, &tfBufBindingOffset, &tfBufBindingSize); + + if (m_parameters.streamId == 0) + vk.cmdBeginQuery(*cmdBuffer, *queryPool, queryIndex, 0u); + else + vk.cmdBeginQueryIndexedEXT(*cmdBuffer, *queryPool, queryIndex, 0u, m_parameters.streamId); + { + vk.cmdBeginTransformFeedbackEXT(*cmdBuffer, 0, 0, DE_NULL, DE_NULL); + { + vk.cmdDraw(*cmdBuffer, numVerticesToWrite, 1u, 0u, 0u); + } + vk.cmdEndTransformFeedbackEXT(*cmdBuffer, 0, 0, DE_NULL, DE_NULL); + } + if (m_parameters.streamId == 0) + vk.cmdEndQuery(*cmdBuffer, *queryPool, queryIndex); + else + vk.cmdEndQueryIndexedEXT(*cmdBuffer, *queryPool, queryIndex, m_parameters.streamId); + } + endRenderPass(vk, *cmdBuffer); + } + endCommandBuffer(vk, *cmdBuffer); + submitCommandsAndWait(vk, device, queue, *cmdBuffer); + + { + const deUint32 queryDataSize (static_cast(2u * sizeof(deUint32))); + std::vector queryData (queryDataSize, 0u); + const deUint32* numPrimitivesWritten = reinterpret_cast(&queryData[0]); + const deUint32* numPrimitivesNeeded = numPrimitivesWritten + 1; + + vk.getQueryPoolResults(device, *queryPool, queryIndex, queryCountersNumber, queryDataSize, &queryData[0], queryDataSize, 0u); + + if (*numPrimitivesWritten != numVerticesInBuffer) + return tcu::TestStatus::fail("numPrimitivesWritten=" + de::toString(*numPrimitivesWritten) + " while expected " + de::toString(numVerticesInBuffer)); + + if (*numPrimitivesNeeded != numVerticesToWrite) + return tcu::TestStatus::fail("numPrimitivesNeeded=" + de::toString(*numPrimitivesNeeded) + " while expected " + de::toString(numVerticesToWrite)); + } + + return tcu::TestStatus::pass("Pass"); +} + +class TransformFeedbackTestCase : public vkt::TestCase +{ +public: + TransformFeedbackTestCase (tcu::TestContext &context, const char *name, const char *description, const TestParameters& parameters); + +protected: + vkt::TestInstance* createInstance (vkt::Context& context) const; + void initPrograms (SourceCollections& programCollection) const; + + TestParameters m_parameters; +}; + +TransformFeedbackTestCase::TransformFeedbackTestCase (tcu::TestContext &context, const char *name, const char *description, const TestParameters& parameters) + : TestCase (context, name, description) + , m_parameters (parameters) +{ +} + +vkt::TestInstance* TransformFeedbackTestCase::createInstance (vkt::Context& context) const +{ + if (m_parameters.testType == TEST_TYPE_BASIC) + return new TransformFeedbackBasicTestInstance(context, m_parameters); + + if (m_parameters.testType == TEST_TYPE_RESUME) + return new TransformFeedbackResumeTestInstance(context, m_parameters); + + if (m_parameters.testType == TEST_TYPE_STREAMS) + return new TransformFeedbackStreamsTestInstance(context, m_parameters); + + if (m_parameters.testType == TEST_TYPE_STREAMS_POINTSIZE) + return new TransformFeedbackStreamsTestInstance(context, m_parameters); + + if (m_parameters.testType == TEST_TYPE_STREAMS_CLIPDISTANCE) + return new TransformFeedbackStreamsTestInstance(context, m_parameters); + + if (m_parameters.testType == TEST_TYPE_STREAMS_CULLDISTANCE) + return new TransformFeedbackStreamsTestInstance(context, m_parameters); + + if (m_parameters.testType == TEST_TYPE_MULTISTREAMS) + return new TransformFeedbackMultistreamTestInstance(context, m_parameters); + + if (m_parameters.testType == TEST_TYPE_DRAW_INDIRECT) + return new TransformFeedbackIndirectDrawTestInstance(context, m_parameters); + + if (m_parameters.testType == TEST_TYPE_BACKWARD_DEPENDENCY) + return new TransformFeedbackBackwardDependencyTestInstance(context, m_parameters); + + if (m_parameters.testType == TEST_TYPE_QUERY) + return new TransformFeedbackQueryTestInstance(context, m_parameters); + + TCU_THROW(InternalError, "Specified test type not found"); +} + +void TransformFeedbackTestCase::initPrograms (SourceCollections& programCollection) const +{ + const bool requiresFullPipeline = m_parameters.testType == TEST_TYPE_STREAMS + || m_parameters.testType == TEST_TYPE_STREAMS_POINTSIZE + || m_parameters.testType == TEST_TYPE_STREAMS_CULLDISTANCE + || m_parameters.testType == TEST_TYPE_STREAMS_CLIPDISTANCE; + + if (m_parameters.testType == TEST_TYPE_BASIC || m_parameters.testType == TEST_TYPE_RESUME || m_parameters.testType == TEST_TYPE_BACKWARD_DEPENDENCY) + { + // Vertex shader + { + std::ostringstream src; + src << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450) << "\n" + << "\n" + << "layout(push_constant) uniform pushConstants\n" + << "{\n" + << " uint start;\n" + << "} uInput;\n" + << "\n" + << "layout(xfb_buffer = 0, xfb_offset = 0, xfb_stride = 4, location = 0) out uint idx_out;\n" + << "\n" + << "void main(void)\n" + << "{\n" + << " idx_out = uInput.start + gl_VertexIndex;\n" + << "}\n"; + + programCollection.glslSources.add("vert") << glu::VertexSource(src.str()); + } + + return; + } + + if (m_parameters.testType == TEST_TYPE_MULTISTREAMS) + { + // vertex shader + { + std::ostringstream src; + src << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450) << "\n" + << "\n" + << "void main(void)\n" + << "{\n" + << "}\n"; + + programCollection.glslSources.add("vert") << glu::VertexSource(src.str()); + } + + // geometry shader + { + const deUint32 s = m_parameters.streamId; + std::ostringstream src; + + DE_ASSERT(s != 0); + + src << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450) << "\n" + << "\n" + << "layout(points) in;\n" + << "\n" + << "layout(points, max_vertices = 32) out;\n" + << "layout(stream = " << 0 << ", xfb_buffer = 0, xfb_offset = 0, xfb_stride = 16, location = 0) out vec4 out0;\n" + << "layout(stream = " << s << ", xfb_buffer = 1, xfb_offset = 0, xfb_stride = 16, location = 1) out vec4 out1;\n" + << "\n" + << "const int counts[] = int[](1, 1, 2, 4, 8);\n" + << "\n" + << "void main(void)\n" + << "{\n" + << " int c0 = 0;\n" + << " int c1 = 0;\n" + << "\n" + << " // Start 1st buffer from point where 0th buffer ended\n" + << " for (int i = 0; i < counts.length(); i++)\n" + << " c1 = c1 + 4 * counts[i];\n" + << "\n" + << " for (int i = 0; i < counts.length(); i++)\n" + << " {\n" + << " const int n0 = counts[i];\n" + << " const int n1 = counts[counts.length() - 1 - i];\n" + << "\n" + << " for (int j = 0; j < n0; j++)\n" + << " {\n" + << " out0 = vec4(ivec4(c0, c0 + 1, c0 + 2, c0 + 3));\n" + << " c0 = c0 + 4;\n" + << " EmitStreamVertex(0);\n" + << " EndStreamPrimitive(0);\n" + << " }\n" + << "\n" + << " for (int j = 0; j < n1; j++)\n" + << " {\n" + << " out1 = vec4(ivec4(c1, c1 + 1, c1 + 2, c1 + 3));\n" + << " c1 = c1 + 4;\n" + << " EmitStreamVertex(" << s << ");\n" + << " EndStreamPrimitive(" << s << ");\n" + << " }\n" + << " }\n" + << "}\n"; + + programCollection.glslSources.add("geom") << glu::GeometrySource(src.str()); + } + + return; + } + + if (requiresFullPipeline) + { + // vertex shader + { + std::ostringstream src; + src << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450) << "\n" + << "\n" + << "void main(void)\n" + << "{\n" + << "}\n"; + + programCollection.glslSources.add("vert") << glu::VertexSource(src.str()); + } + + // geometry shader + { + const deUint32 s = m_parameters.streamId; + const bool requirePoints = (m_parameters.testType == TEST_TYPE_STREAMS_POINTSIZE || m_parameters.testType == TEST_TYPE_MULTISTREAMS); + const std::string outputPrimitiveType = requirePoints ? "points" : "triangle_strip"; + const std::string outputBuiltIn = (m_parameters.testType == TEST_TYPE_STREAMS_POINTSIZE) ? " float gl_PointSize;\n" + : (m_parameters.testType == TEST_TYPE_STREAMS_CLIPDISTANCE) ? " float gl_ClipDistance[];\n" + : (m_parameters.testType == TEST_TYPE_STREAMS_CULLDISTANCE) ? " float gl_CullDistance[];\n" + : ""; + std::ostringstream src; + + DE_ASSERT(s != 0); + + src << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450) << "\n" + << "\n" + << "layout(points) in;\n" + << "layout(" << outputPrimitiveType << ", max_vertices = 16) out;\n" + << "layout(stream = " << s << ") out;\n" + << "layout(location = 0) out vec4 color;\n" + << "\n" + << "layout(stream = " << s << ") out gl_PerVertex\n" + << "{\n" + << " vec4 gl_Position;\n" + << outputBuiltIn + << "};\n" + << "\n" + << "void main(void)\n" + << "{\n" + << " // Color constants\n" + << " vec4 g = vec4(0.0, 1.0, 0.0, 1.0);\n" + << " vec4 m = vec4(1.0, 0.0, 1.0, 1.0);\n" + << " // Coordinate constants: leftmost column\n" + << " vec4 a = vec4(-1.0,-1.0, 0.0, 1.0);\n" + << " vec4 b = vec4(-1.0, 0.0, 0.0, 1.0);\n" + << " vec4 c = vec4(-1.0, 1.0, 0.0, 1.0);\n" + << " // Coordinate constants: middle column\n" + << " vec4 i = vec4( 0.0,-1.0, 0.0, 1.0);\n" + << " vec4 j = vec4( 0.0, 0.0, 0.0, 1.0);\n" + << " vec4 k = vec4( 0.0, 1.0, 0.0, 1.0);\n" + << " // Coordinate constants: rightmost column\n" + << " vec4 x = vec4( 1.0,-1.0, 0.0, 1.0);\n" + << " vec4 y = vec4( 1.0, 0.0, 0.0, 1.0);\n" + << " vec4 z = vec4( 1.0, 1.0, 0.0, 1.0);\n" + << "\n"; + + if (m_parameters.testType == TEST_TYPE_STREAMS) + { + src << " if (gl_PrimitiveIDIn == 0)\n" + << " {\n" + << " color = m; gl_Position = b; EmitStreamVertex(" << s << ");\n" + << " color = m; gl_Position = y; EmitStreamVertex(" << s << ");\n" + << " color = m; gl_Position = c; EmitStreamVertex(" << s << ");\n" + << " EndStreamPrimitive(" << s << ");\n" + << " }\n" + << " else\n" + << " {\n" + << " color = m; gl_Position = y; EmitStreamVertex(" << s << ");\n" + << " color = m; gl_Position = c; EmitStreamVertex(" << s << ");\n" + << " color = m; gl_Position = z; EmitStreamVertex(" << s << ");\n" + << " EndStreamPrimitive(" << s << ");\n" + << " }\n"; + } + + if (m_parameters.testType == TEST_TYPE_STREAMS_POINTSIZE) + { + const std::string pointSize = "gl_PointSize = " + de::toString(m_parameters.pointSize) + ".0f"; + + src << " if (gl_PrimitiveIDIn == 0)\n" + << " {\n" + << " color = g; gl_Position = (a + j) / 2.0f; gl_PointSize = 1.0f; EmitStreamVertex(0);\n" + << " EndStreamPrimitive(0);\n" + << " color = m; gl_Position = (b + k) / 2.0f; gl_PointSize = 1.0f; EmitStreamVertex(" << s << ");\n" + << " EndStreamPrimitive(" << s << ");\n" + << " }\n" + << " else\n" + << " {\n" + << " color = g; gl_Position = (j + x) / 2.0f; " << pointSize << "; EmitStreamVertex(0);\n" + << " EndStreamPrimitive(0);\n" + << " color = m; gl_Position = (k + y) / 2.0f; " << pointSize << "; EmitStreamVertex(" << s << ");\n" + << " EndStreamPrimitive(" << s << ");\n" + << " }\n"; + } + + if (m_parameters.testType == TEST_TYPE_STREAMS_CLIPDISTANCE) + { + src << " if (gl_PrimitiveIDIn == 0)\n" + << " {\n" + << " color = m; gl_Position = b; gl_ClipDistance[0] = -1.0; EmitStreamVertex(" << s << ");\n" + << " color = m; gl_Position = c; gl_ClipDistance[0] = -1.0; EmitStreamVertex(" << s << ");\n" + << " color = m; gl_Position = y; gl_ClipDistance[0] = 1.0; EmitStreamVertex(" << s << ");\n" + << " EndStreamPrimitive(" << s << ");\n" + << " }\n" + << " else\n" + << " {\n" + << " color = m; gl_Position = y; gl_ClipDistance[0] = 1.0; EmitStreamVertex(" << s << ");\n" + << " color = m; gl_Position = c; gl_ClipDistance[0] = -1.0; EmitStreamVertex(" << s << ");\n" + << " color = m; gl_Position = z; gl_ClipDistance[0] = 1.0; EmitStreamVertex(" << s << ");\n" + << " EndStreamPrimitive(" << s << ");\n" + << " }\n"; + } + + if (m_parameters.testType == TEST_TYPE_STREAMS_CULLDISTANCE) + { + src << " if (gl_PrimitiveIDIn == 0)\n" + << " {\n" + << " color = m; gl_Position = b; gl_CullDistance[0] = -1.0; EmitStreamVertex(" << s << ");\n" + << " color = m; gl_Position = c; gl_CullDistance[0] = -1.0; EmitStreamVertex(" << s << ");\n" + << " color = m; gl_Position = j; gl_CullDistance[0] = -1.0; EmitStreamVertex(" << s << ");\n" + << " EndStreamPrimitive(" << s << ");\n" + << " color = m; gl_Position = j; gl_CullDistance[0] = -1.0; EmitStreamVertex(" << s << ");\n" + << " color = m; gl_Position = c; gl_CullDistance[0] = -1.0; EmitStreamVertex(" << s << ");\n" + << " color = m; gl_Position = k; gl_CullDistance[0] = -1.0; EmitStreamVertex(" << s << ");\n" + << " EndStreamPrimitive(" << s << ");\n" + << " }\n" + << " else\n" + << " {\n" + << " color = m; gl_Position = j; gl_CullDistance[0] = 1.0; EmitStreamVertex(" << s << ");\n" + << " color = m; gl_Position = k; gl_CullDistance[0] = 1.0; EmitStreamVertex(" << s << ");\n" + << " color = m; gl_Position = y; gl_CullDistance[0] = 1.0; EmitStreamVertex(" << s << ");\n" + << " EndStreamPrimitive(" << s << ");\n" + << " color = m; gl_Position = y; gl_CullDistance[0] = 1.0; EmitStreamVertex(" << s << ");\n" + << " color = m; gl_Position = k; gl_CullDistance[0] = 1.0; EmitStreamVertex(" << s << ");\n" + << " color = m; gl_Position = z; gl_CullDistance[0] = 1.0; EmitStreamVertex(" << s << ");\n" + << " EndStreamPrimitive(" << s << ");\n" + << " }\n"; + } + + src << "}\n"; + + programCollection.glslSources.add("geom") << glu::GeometrySource(src.str()); + } + + // Fragment shader + { + std::ostringstream src; + src << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450) << "\n" + << "\n" + << "layout(location = 0) in vec4 i_color;\n" + << "layout(location = 0) out vec4 o_color;\n" + << "\n" + << "void main(void)\n" + << "{\n" + << " o_color = i_color;\n" + << "}\n"; + + programCollection.glslSources.add("frag") << glu::FragmentSource(src.str()); + } + + return; + } + + if (m_parameters.testType == TEST_TYPE_DRAW_INDIRECT) + { + // vertex shader + { + std::ostringstream src; + src << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450) << "\n" + << "\n" + << "layout(location = 0) in vec4 in_position;\n" + << "\n" + << "void main(void)\n" + << "{\n" + << " gl_Position = in_position;\n" + << "}\n"; + + programCollection.glslSources.add("vert") << glu::VertexSource(src.str()); + } + + // Fragment shader + { + std::ostringstream src; + src << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450) << "\n" + << "\n" + << "layout(location = 0) out vec4 o_color;\n" + << "\n" + << "void main(void)\n" + << "{\n" + << " o_color = vec4(1.0, 1.0, 1.0, 1.0);\n" + << "}\n"; + + programCollection.glslSources.add("frag") << glu::FragmentSource(src.str()); + } + + return; + } + + if (m_parameters.testType == TEST_TYPE_QUERY) + { + // Vertex shader + { + std::ostringstream src; + src << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450) << "\n" + << "\n" + << "layout(location = 0) out vec4 out0;\n" + << "\n" + << "void main(void)\n" + << "{\n" + << " float n = 4.0 * float(gl_VertexIndex);\n" + << " out0 = vec4(n + 0.0, n + 1.0, n + 2.0, n + 3.0);\n" + << "}\n"; + + programCollection.glslSources.add("vert") << glu::VertexSource(src.str()); + } + + // geometry shader + { + const deUint32 s = m_parameters.streamId; + std::ostringstream src; + + src << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450) << "\n" + << "\n" + << "layout(points) in;\n" + << "layout(location = 0) in vec4 in0[];\n" + << "\n" + << "layout(points, max_vertices = 1) out;\n" + << "layout(stream = " << s << ", xfb_buffer = 0, xfb_offset = 0, xfb_stride = 16, location = 0) out vec4 out0;\n" + << "\n" + << "void main(void)\n" + << "{\n" + << " out0 = in0[0];\n" + << " EmitStreamVertex(" << s << ");\n" + << " EndStreamPrimitive(" << s << ");\n" + << "}\n"; + + programCollection.glslSources.add("geom") << glu::GeometrySource(src.str()); + } + + return; + } + + DE_ASSERT(0 && "Unknown test"); +} + +void createTransformFeedbackSimpleTests (tcu::TestCaseGroup* group) +{ + { + const deUint32 bufferCounts[] = { 1, 2, 4, 8 }; + const deUint32 bufferSizes[] = { 256, 512, 128*1024 }; + const TestType testTypes[] = { TEST_TYPE_BASIC, TEST_TYPE_RESUME }; + const std::string testTypeNames[] = { "basic", "resume" }; + + for (deUint32 testTypesNdx = 0; testTypesNdx < DE_LENGTH_OF_ARRAY(testTypes); ++testTypesNdx) + { + const TestType testType = testTypes[testTypesNdx]; + const std::string testName = testTypeNames[testTypesNdx]; + + for (deUint32 bufferCountsNdx = 0; bufferCountsNdx < DE_LENGTH_OF_ARRAY(bufferCounts); ++bufferCountsNdx) + { + const deUint32 partCount = bufferCounts[bufferCountsNdx]; + + for (deUint32 bufferSizesNdx = 0; bufferSizesNdx < DE_LENGTH_OF_ARRAY(bufferSizes); ++bufferSizesNdx) + { + const deUint32 bufferSize = bufferSizes[bufferSizesNdx]; + const TestParameters parameters = { testType, bufferSize, partCount, 0u, 0u, 0u }; + + group->addChild(new TransformFeedbackTestCase(group->getTestContext(), (testName + "_" + de::toString(partCount) + "_" + de::toString(bufferSize)).c_str(), "Simple Transform Feedback test", parameters)); + } + } + } + } + + { + const deUint32 vertexStrides[] = { 4, 61, 127, 251, 509 }; + const TestType testType = TEST_TYPE_DRAW_INDIRECT; + const std::string testName = "draw_indirect"; + + for (deUint32 vertexStridesNdx = 0; vertexStridesNdx < DE_LENGTH_OF_ARRAY(vertexStrides); ++vertexStridesNdx) + { + const deUint32 vertexStride = static_cast(sizeof(deUint32) * vertexStrides[vertexStridesNdx]); + const TestParameters parameters = { testType, 0u, 0u, 0u, 0u, vertexStride }; + + group->addChild(new TransformFeedbackTestCase(group->getTestContext(), (testName + "_" + de::toString(vertexStride)).c_str(), "Rendering tests with various strides", parameters)); + } + } + + { + const TestType testType = TEST_TYPE_BACKWARD_DEPENDENCY; + const std::string testName = "backward_dependency"; + const TestParameters parameters = { testType, 512u, 2u, 0u, 0u, 0u }; + + group->addChild(new TransformFeedbackTestCase(group->getTestContext(), testName.c_str(), "Rendering test checks backward pipeline dependency", parameters)); + } + + { + const deUint32 usedStreamId[] = { 0, 1, 3, 6, 14 }; + const deUint32 vertexCount[] = { 4, 61, 127, 251, 509 }; + const TestType testType = TEST_TYPE_QUERY; + const std::string testName = "query"; + + for (deUint32 streamCountsNdx = 0; streamCountsNdx < DE_LENGTH_OF_ARRAY(usedStreamId); ++streamCountsNdx) + { + const deUint32 streamId = usedStreamId[streamCountsNdx]; + + for (deUint32 vertexCountNdx = 0; vertexCountNdx < DE_LENGTH_OF_ARRAY(vertexCount); ++vertexCountNdx) + { + const deUint32 bytesPerVertex = static_cast(4 * sizeof(float)); + const deUint32 bufferSize = bytesPerVertex * vertexCount[vertexCountNdx]; + const TestParameters parameters = { testType, bufferSize, 0u, streamId, 0u, 0u }; + const std::string fullTestName = testName + "_" + de::toString(streamId) + "_" + de::toString(vertexCount[vertexCountNdx]); + + group->addChild(new TransformFeedbackTestCase(group->getTestContext(), fullTestName.c_str(), "Written primitives query test", parameters)); + } + } + } +} + +void createTransformFeedbackStreamsSimpleTests (tcu::TestCaseGroup* group) +{ + const deUint32 usedStreamId[] = { 1, 3, 6, 14 }; + const TestType testTypes[] = { TEST_TYPE_STREAMS, TEST_TYPE_STREAMS_POINTSIZE, TEST_TYPE_STREAMS_CLIPDISTANCE, TEST_TYPE_STREAMS_CULLDISTANCE }; + const std::string testTypeNames[] = { "streams", "streams_pointsize", "streams_clipdistance", "streams_culldistance" }; + + for (deUint32 testTypesNdx = 0; testTypesNdx < DE_LENGTH_OF_ARRAY(testTypes); ++testTypesNdx) + { + const TestType testType = testTypes[testTypesNdx]; + const std::string testName = testTypeNames[testTypesNdx]; + const deUint32 pointSize = (testType == TEST_TYPE_STREAMS_POINTSIZE) ? 2u : 0u; + + for (deUint32 streamCountsNdx = 0; streamCountsNdx < DE_LENGTH_OF_ARRAY(usedStreamId); ++streamCountsNdx) + { + const deUint32 streamId = usedStreamId[streamCountsNdx]; + const TestParameters parameters = { testType, 0u, 0u, streamId, pointSize, 0u }; + + group->addChild(new TransformFeedbackTestCase(group->getTestContext(), (testName + "_" + de::toString(streamId)).c_str(), "Streams usage test", parameters)); + } + } + + { + const TestType testType = TEST_TYPE_MULTISTREAMS; + const std::string testName = "multistreams"; + + for (deUint32 bufferCountsNdx = 0; bufferCountsNdx < DE_LENGTH_OF_ARRAY(usedStreamId); ++bufferCountsNdx) + { + const deUint32 streamId = usedStreamId[bufferCountsNdx]; + const deUint32 streamsUsed = 2u; + const deUint32 maxBytesPerVertex = 256u; + const TestParameters parameters = { testType, maxBytesPerVertex * streamsUsed, streamsUsed, streamId, 0u, 0u }; + + group->addChild(new TransformFeedbackTestCase(group->getTestContext(), (testName + "_" + de::toString(streamId)).c_str(), "Simultaneous multiple streams usage test", parameters)); + } + } +} + +void createTransformFeedbackAndStreamsSimpleTests (tcu::TestCaseGroup* group) +{ + createTransformFeedbackSimpleTests(group); + createTransformFeedbackStreamsSimpleTests(group); +} +} // anonymous + +tcu::TestCaseGroup* createTransformFeedbackSimpleTests (tcu::TestContext& testCtx) +{ + return createTestGroup(testCtx, "simple", "Transform Feedback Simple tests", createTransformFeedbackAndStreamsSimpleTests); +} + +} // TransformFeedback +} // vkt diff --git a/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackSimpleTests.hpp b/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackSimpleTests.hpp new file mode 100644 index 0000000..ce3a186 --- /dev/null +++ b/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackSimpleTests.hpp @@ -0,0 +1,39 @@ +#ifndef _VKTTRANSFORMFEEDBACKSIMPLETESTS_HPP +#define _VKTTRANSFORMFEEDBACKSIMPLETESTS_HPP +/*------------------------------------------------------------------------ + * Vulkan Conformance Tests + * ------------------------ + * + * Copyright (c) 2018 The Khronos Group Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + *//*! + * \file + * \brief Vulkan Transform Feedback Simple Tests + *//*--------------------------------------------------------------------*/ + +#include "tcuDefs.hpp" +#include "tcuTestCase.hpp" + +namespace vkt +{ +namespace TransformFeedback +{ + +tcu::TestCaseGroup* createTransformFeedbackSimpleTests (tcu::TestContext& testCtx); + +} // TransformFeedback +} // vkt + +#endif // _VKTTRANSFORMFEEDBACKSIMPLETESTS_HPP diff --git a/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackTests.cpp b/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackTests.cpp new file mode 100644 index 0000000..98d0600 --- /dev/null +++ b/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackTests.cpp @@ -0,0 +1,47 @@ +/*------------------------------------------------------------------------ + * Vulkan Conformance Tests + * ------------------------ + * + * Copyright (c) 2018 The Khronos Group Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + *//*! + * \file + * \brief Vulkan Transform Feedback Tests + *//*--------------------------------------------------------------------*/ + +#include "vktTransformFeedbackTests.hpp" +#include "vktTransformFeedbackSimpleTests.hpp" +#include "vktTransformFeedbackFuzzLayoutTests.hpp" +#include "vktTestGroupUtil.hpp" +#include "vktTestCase.hpp" + + +namespace vkt +{ +namespace TransformFeedback +{ + +tcu::TestCaseGroup* createTests (tcu::TestContext& testCtx) +{ + de::MovePtr transformFeedbackGroup (new tcu::TestCaseGroup(testCtx, "transform_feedback", "Transform Feedback tests")); + + transformFeedbackGroup->addChild(createTransformFeedbackSimpleTests(testCtx)); + transformFeedbackGroup->addChild(createTransformFeedbackFuzzLayoutTests(testCtx)); + + return transformFeedbackGroup.release(); +} + +} // TransformFeedback +} // vkt diff --git a/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackTests.hpp b/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackTests.hpp new file mode 100644 index 0000000..277c535 --- /dev/null +++ b/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackTests.hpp @@ -0,0 +1,39 @@ +#ifndef _VKTTRANSFORMFEEDBACKTESTS_HPP +#define _VKTTRANSFORMFEEDBACKTESTS_HPP +/*------------------------------------------------------------------------ + * Vulkan Conformance Tests + * ------------------------ + * + * Copyright (c) 2018 The Khronos Group Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + *//*! + * \file + * \brief Vulkan Transform Feedback Tests + *//*--------------------------------------------------------------------*/ + +#include "tcuDefs.hpp" +#include "tcuTestCase.hpp" + +namespace vkt +{ +namespace TransformFeedback +{ + +tcu::TestCaseGroup* createTests (tcu::TestContext& testCtx); + +} // TransformFeedback +} // vkt + +#endif // _VKTTRANSFORMFEEDBACKTESTS_HPP diff --git a/external/vulkancts/modules/vulkan/vktTestCase.cpp b/external/vulkancts/modules/vulkan/vktTestCase.cpp index ab17ca9..e31b5b1 100644 --- a/external/vulkancts/modules/vulkan/vktTestCase.cpp +++ b/external/vulkancts/modules/vulkan/vktTestCase.cpp @@ -328,6 +328,7 @@ public: VkPhysicalDeviceImagelessFramebufferFeaturesKHR imagelessFramebufferFeatures; VkPhysicalDeviceCooperativeMatrixFeaturesNV cooperativeMatrixFeatures; VkPhysicalDeviceHostQueryResetFeaturesEXT hostQueryResetFeatures; + VkPhysicalDeviceTransformFeedbackFeaturesEXT transformFeedbackFeatures; VkPhysicalDevicePerformanceCounterFeaturesKHR performanceCounterFeatures; DeviceFeatures (const InstanceInterface& vki, @@ -357,6 +358,7 @@ public: deMemset(&imagelessFramebufferFeatures, 0, sizeof(imagelessFramebufferFeatures)); deMemset(&cooperativeMatrixFeatures, 0, sizeof(cooperativeMatrixFeatures)); deMemset(&hostQueryResetFeatures, 0, sizeof(hostQueryResetFeatures)); + deMemset(&transformFeedbackFeatures, 0, sizeof(transformFeedbackFeatures)); deMemset(&performanceCounterFeatures, 0, sizeof(performanceCounterFeatures)); coreFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2; @@ -380,6 +382,7 @@ public: imagelessFramebufferFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR; cooperativeMatrixFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV; hostQueryResetFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT; + transformFeedbackFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT; performanceCounterFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_COUNTER_FEATURES_KHR; vector deviceExtensionProperties = @@ -494,6 +497,11 @@ public: *nextPtr = &hostQueryResetFeatures; nextPtr = &hostQueryResetFeatures.pNext; } + if (de::contains(deviceExtensions.begin(), deviceExtensions.end(), "VK_EXT_transform_feedback")) + { + *nextPtr = &transformFeedbackFeatures; + nextPtr = &transformFeedbackFeatures.pNext; + } vki.getPhysicalDeviceFeatures2(physicalDevice, &coreFeatures); } @@ -543,7 +551,9 @@ public: const VkPhysicalDeviceImagelessFramebufferFeaturesKHR& getImagelessFramebufferFeatures (void) const { return m_deviceFeatures.imagelessFramebufferFeatures; } const VkPhysicalDeviceCooperativeMatrixFeaturesNV& getCooperativeMatrixFeatures (void) const { return m_deviceFeatures.cooperativeMatrixFeatures; } const VkPhysicalDeviceHostQueryResetFeaturesEXT& getHostQueryResetFeatures (void) const { return m_deviceFeatures.hostQueryResetFeatures; } + const VkPhysicalDeviceTransformFeedbackFeaturesEXT& getTransformFeedbackFeatures (void) const { return m_deviceFeatures.transformFeedbackFeatures; } const VkPhysicalDevicePerformanceCounterFeaturesKHR& getPerformanceCounterFeatures (void) const { return m_deviceFeatures.performanceCounterFeatures; } + VkDevice getDevice (void) const { return *m_device; } const DeviceInterface& getDeviceInterface (void) const { return m_deviceInterface; } const VkPhysicalDeviceProperties& getDeviceProperties (void) const { return m_deviceProperties; } @@ -699,6 +709,8 @@ const vk::VkPhysicalDeviceCooperativeMatrixFeaturesNV& Context::getCooperativeMatrixFeatures (void) const { return m_device->getCooperativeMatrixFeatures(); } const vk::VkPhysicalDeviceHostQueryResetFeaturesEXT& Context::getHostQueryResetFeatures (void) const { return m_device->getHostQueryResetFeatures(); } +const vk::VkPhysicalDeviceTransformFeedbackFeaturesEXT& + Context::getTransformFeedbackFeatures (void) const { return m_device->getTransformFeedbackFeatures(); } const vk::VkPhysicalDevicePerformanceCounterFeaturesKHR& Context::getPerformanceCounterFeatures (void) const { return m_device->getPerformanceCounterFeatures(); } const vk::VkPhysicalDeviceProperties& Context::getDeviceProperties (void) const { return m_device->getDeviceProperties(); } diff --git a/external/vulkancts/modules/vulkan/vktTestCase.hpp b/external/vulkancts/modules/vulkan/vktTestCase.hpp index 471cbf9..eb10374 100644 --- a/external/vulkancts/modules/vulkan/vktTestCase.hpp +++ b/external/vulkancts/modules/vulkan/vktTestCase.hpp @@ -102,6 +102,8 @@ public: getCooperativeMatrixFeatures (void) const; const vk::VkPhysicalDeviceHostQueryResetFeaturesEXT& getHostQueryResetFeatures (void) const; + const vk::VkPhysicalDeviceTransformFeedbackFeaturesEXT& + getTransformFeedbackFeatures (void) const; const vk::VkPhysicalDevicePerformanceCounterFeaturesKHR& getPerformanceCounterFeatures (void) const; const vk::VkPhysicalDeviceProperties& getDeviceProperties (void) const; diff --git a/external/vulkancts/modules/vulkan/vktTestPackage.cpp b/external/vulkancts/modules/vulkan/vktTestPackage.cpp index f21eb2a..b3ba3f0 100644 --- a/external/vulkancts/modules/vulkan/vktTestPackage.cpp +++ b/external/vulkancts/modules/vulkan/vktTestPackage.cpp @@ -91,6 +91,7 @@ #include "vktAmberExampleTests.hpp" #include "vktAmberGraphicsFuzzTests.hpp" #include "vktImagelessFramebufferTests.hpp" +#include "vktTransformFeedbackTests.hpp" #include #include @@ -502,6 +503,7 @@ void TestPackage::init (void) addChild(cts_amber::createExampleTests (m_testCtx)); addChild(cts_amber::createGraphicsFuzzTests (m_testCtx)); addChild(imageless::createTests (m_testCtx)); + addChild(TransformFeedback::createTests (m_testCtx)); } } // vkt diff --git a/external/vulkancts/mustpass/1.1.5/vk-default-no-waivers.txt b/external/vulkancts/mustpass/1.1.5/vk-default-no-waivers.txt index 3834513..9181586 100644 --- a/external/vulkancts/mustpass/1.1.5/vk-default-no-waivers.txt +++ b/external/vulkancts/mustpass/1.1.5/vk-default-no-waivers.txt @@ -415953,3 +415953,2246 @@ dEQP-VK.imageless_framebuffer.depth_stencil dEQP-VK.imageless_framebuffer.color_resolve dEQP-VK.imageless_framebuffer.depth_stencil_resolve dEQP-VK.imageless_framebuffer.multisubpass +dEQP-VK.transform_feedback.simple.basic_1_256 +dEQP-VK.transform_feedback.simple.basic_1_512 +dEQP-VK.transform_feedback.simple.basic_1_131072 +dEQP-VK.transform_feedback.simple.basic_2_256 +dEQP-VK.transform_feedback.simple.basic_2_512 +dEQP-VK.transform_feedback.simple.basic_2_131072 +dEQP-VK.transform_feedback.simple.basic_4_256 +dEQP-VK.transform_feedback.simple.basic_4_512 +dEQP-VK.transform_feedback.simple.basic_4_131072 +dEQP-VK.transform_feedback.simple.basic_8_256 +dEQP-VK.transform_feedback.simple.basic_8_512 +dEQP-VK.transform_feedback.simple.basic_8_131072 +dEQP-VK.transform_feedback.simple.resume_1_256 +dEQP-VK.transform_feedback.simple.resume_1_512 +dEQP-VK.transform_feedback.simple.resume_1_131072 +dEQP-VK.transform_feedback.simple.resume_2_256 +dEQP-VK.transform_feedback.simple.resume_2_512 +dEQP-VK.transform_feedback.simple.resume_2_131072 +dEQP-VK.transform_feedback.simple.resume_4_256 +dEQP-VK.transform_feedback.simple.resume_4_512 +dEQP-VK.transform_feedback.simple.resume_4_131072 +dEQP-VK.transform_feedback.simple.resume_8_256 +dEQP-VK.transform_feedback.simple.resume_8_512 +dEQP-VK.transform_feedback.simple.resume_8_131072 +dEQP-VK.transform_feedback.simple.draw_indirect_16 +dEQP-VK.transform_feedback.simple.draw_indirect_244 +dEQP-VK.transform_feedback.simple.draw_indirect_508 +dEQP-VK.transform_feedback.simple.draw_indirect_1004 +dEQP-VK.transform_feedback.simple.draw_indirect_2036 +dEQP-VK.transform_feedback.simple.backward_dependency +dEQP-VK.transform_feedback.simple.query_0_4 +dEQP-VK.transform_feedback.simple.query_0_61 +dEQP-VK.transform_feedback.simple.query_0_127 +dEQP-VK.transform_feedback.simple.query_0_251 +dEQP-VK.transform_feedback.simple.query_0_509 +dEQP-VK.transform_feedback.simple.query_1_4 +dEQP-VK.transform_feedback.simple.query_1_61 +dEQP-VK.transform_feedback.simple.query_1_127 +dEQP-VK.transform_feedback.simple.query_1_251 +dEQP-VK.transform_feedback.simple.query_1_509 +dEQP-VK.transform_feedback.simple.query_3_4 +dEQP-VK.transform_feedback.simple.query_3_61 +dEQP-VK.transform_feedback.simple.query_3_127 +dEQP-VK.transform_feedback.simple.query_3_251 +dEQP-VK.transform_feedback.simple.query_3_509 +dEQP-VK.transform_feedback.simple.query_6_4 +dEQP-VK.transform_feedback.simple.query_6_61 +dEQP-VK.transform_feedback.simple.query_6_127 +dEQP-VK.transform_feedback.simple.query_6_251 +dEQP-VK.transform_feedback.simple.query_6_509 +dEQP-VK.transform_feedback.simple.query_14_4 +dEQP-VK.transform_feedback.simple.query_14_61 +dEQP-VK.transform_feedback.simple.query_14_127 +dEQP-VK.transform_feedback.simple.query_14_251 +dEQP-VK.transform_feedback.simple.query_14_509 +dEQP-VK.transform_feedback.simple.streams_1 +dEQP-VK.transform_feedback.simple.streams_3 +dEQP-VK.transform_feedback.simple.streams_6 +dEQP-VK.transform_feedback.simple.streams_14 +dEQP-VK.transform_feedback.simple.streams_pointsize_1 +dEQP-VK.transform_feedback.simple.streams_pointsize_3 +dEQP-VK.transform_feedback.simple.streams_pointsize_6 +dEQP-VK.transform_feedback.simple.streams_pointsize_14 +dEQP-VK.transform_feedback.simple.streams_clipdistance_1 +dEQP-VK.transform_feedback.simple.streams_clipdistance_3 +dEQP-VK.transform_feedback.simple.streams_clipdistance_6 +dEQP-VK.transform_feedback.simple.streams_clipdistance_14 +dEQP-VK.transform_feedback.simple.streams_culldistance_1 +dEQP-VK.transform_feedback.simple.streams_culldistance_3 +dEQP-VK.transform_feedback.simple.streams_culldistance_6 +dEQP-VK.transform_feedback.simple.streams_culldistance_14 +dEQP-VK.transform_feedback.simple.multistreams_1 +dEQP-VK.transform_feedback.simple.multistreams_3 +dEQP-VK.transform_feedback.simple.multistreams_6 +dEQP-VK.transform_feedback.simple.multistreams_14 +dEQP-VK.transform_feedback.fuzz.2_level_array.float.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.float.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.vec2.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.vec2.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.vec3.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.vec3.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.vec4.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.vec4.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.int.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.int.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.ivec2.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.ivec2.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.ivec3.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.ivec3.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.ivec4.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.ivec4.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.uint.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.uint.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.uvec2.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.uvec2.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.uvec3.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.uvec3.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.uvec4.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.uvec4.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.mat2.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.mat2.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.mat3.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.mat3.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.mat4.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.mat4.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.mat2x3.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.mat2x3.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.mat2x4.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.mat2x4.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.mat3x2.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.mat3x2.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.mat3x4.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.mat3x4.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.mat4x2.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.mat4x2.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.mat4x3.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.mat4x3.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.double.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.double.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dvec2.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dvec2.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dvec3.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dvec3.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dvec4.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dvec4.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat2.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat2.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat2x3.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat2x3.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat2x4.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat2x4.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat3x2.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat3x2.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat3.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat3.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat3x4.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat3x4.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat4x2.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat4x2.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat4x3.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat4x3.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat4.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat4.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.float.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.float.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.vec2.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.vec2.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.vec3.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.vec3.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.vec4.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.vec4.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.int.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.int.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.ivec2.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.ivec2.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.ivec3.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.ivec3.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.ivec4.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.ivec4.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.uint.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.uint.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.uvec2.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.uvec2.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.uvec3.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.uvec3.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.uvec4.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.uvec4.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.mat2.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.mat2.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.mat3.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.mat3.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.mat4.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.mat4.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.mat2x3.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.mat2x3.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.mat2x4.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.mat2x4.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.mat3x2.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.mat3x2.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.mat3x4.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.mat3x4.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.mat4x2.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.mat4x2.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.mat4x3.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.mat4x3.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.double.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.double.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dvec2.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dvec2.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dvec3.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dvec3.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dvec4.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dvec4.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat2.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat2.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat2x3.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat2x3.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat2x4.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat2x4.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat3x2.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat3x2.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat3.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat3.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat3x4.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat3x4.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat4x2.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat4x2.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat4x3.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat4x3.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat4.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat4.geometry +dEQP-VK.transform_feedback.fuzz.2_level_struct_array.std_vertex +dEQP-VK.transform_feedback.fuzz.2_level_struct_array.std_geometry +dEQP-VK.transform_feedback.fuzz.2_level_struct_array.instance_array_vertex +dEQP-VK.transform_feedback.fuzz.2_level_struct_array.instance_array_geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.double.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.double.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dvec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dvec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dvec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dvec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dvec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dvec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat2x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat2x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat2x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat2x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat3x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat3x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat3x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat3x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat4x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat4x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat4x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat4x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.float.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.float.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.vec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.vec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.vec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.vec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.vec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.vec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.int.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.int.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.ivec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.ivec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.ivec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.ivec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.ivec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.ivec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.uint.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.uint.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.uvec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.uvec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.uvec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.uvec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.uvec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.uvec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat2x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat2x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat2x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat2x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat3x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat3x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat3x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat3x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat4x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat4x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat4x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat4x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.float.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.float.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.vec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.vec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.vec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.vec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.vec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.vec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.int.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.int.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.ivec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.ivec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.ivec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.ivec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.ivec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.ivec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.uint.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.uint.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.uvec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.uvec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.uvec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.uvec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.uvec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.uvec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat2x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat2x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat2x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat2x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat3x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat3x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat3x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat3x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat4x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat4x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat4x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat4x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.float.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.float.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.vec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.vec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.vec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.vec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.vec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.vec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.int.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.int.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.ivec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.ivec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.ivec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.ivec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.ivec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.ivec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.uint.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.uint.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.uvec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.uvec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.uvec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.uvec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.uvec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.uvec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat2x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat2x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat2x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat2x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat3x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat3x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat3x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat3x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat4x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat4x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat4x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat4x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.float.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.float.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.vec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.vec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.vec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.vec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.vec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.vec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.int.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.int.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.ivec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.ivec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.ivec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.ivec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.ivec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.ivec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.uint.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.uint.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.uvec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.uvec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.uvec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.uvec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.uvec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.uvec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat2x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat2x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat2x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat2x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat3x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat3x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat3x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat3x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat4x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat4x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat4x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat4x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.double.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.double.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dvec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dvec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dvec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dvec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dvec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dvec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat2x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat2x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat2x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat2x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat3x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat3x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat3x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat3x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat4x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat4x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat4x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat4x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat4.geometry +dEQP-VK.transform_feedback.fuzz.single_struct.std_vertex +dEQP-VK.transform_feedback.fuzz.single_struct.std_geometry +dEQP-VK.transform_feedback.fuzz.single_struct.instance_array_vertex +dEQP-VK.transform_feedback.fuzz.single_struct.instance_array_geometry +dEQP-VK.transform_feedback.fuzz.single_struct_array.std_vertex +dEQP-VK.transform_feedback.fuzz.single_struct_array.std_geometry +dEQP-VK.transform_feedback.fuzz.single_struct_array.instance_array_vertex +dEQP-VK.transform_feedback.fuzz.single_struct_array.instance_array_geometry +dEQP-VK.transform_feedback.fuzz.single_nested_struct.std_vertex +dEQP-VK.transform_feedback.fuzz.single_nested_struct.std_geometry +dEQP-VK.transform_feedback.fuzz.single_nested_struct.instance_array_vertex +dEQP-VK.transform_feedback.fuzz.single_nested_struct.instance_array_geometry +dEQP-VK.transform_feedback.fuzz.single_nested_struct_array.std_vertex +dEQP-VK.transform_feedback.fuzz.single_nested_struct_array.std_geometry +dEQP-VK.transform_feedback.fuzz.single_nested_struct_array.instance_array_vertex +dEQP-VK.transform_feedback.fuzz.single_nested_struct_array.instance_array_geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.float.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.float.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.vec2.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.vec2.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.vec3.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.vec3.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.vec4.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.vec4.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.int.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.int.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.ivec2.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.ivec2.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.ivec3.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.ivec3.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.ivec4.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.ivec4.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.uint.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.uint.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.uvec2.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.uvec2.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.uvec3.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.uvec3.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.uvec4.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.uvec4.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat2.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat2.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat3.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat3.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat4.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat4.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat2x3.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat2x3.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat2x4.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat2x4.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat3x2.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat3x2.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat3x4.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat3x4.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat4x2.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat4x2.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat4x3.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat4x3.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.double.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.double.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dvec2.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dvec2.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dvec3.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dvec3.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dvec4.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dvec4.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat2.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat2.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat2x3.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat2x3.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat2x4.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat2x4.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat3x2.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat3x2.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat3.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat3.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat3x4.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat3x4.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat4x2.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat4x2.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat4x3.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat4x3.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat4.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat4.geometry +dEQP-VK.transform_feedback.fuzz.multi_basic_types.std_vertex +dEQP-VK.transform_feedback.fuzz.multi_basic_types.std_geometry +dEQP-VK.transform_feedback.fuzz.multi_basic_types.instance_array_vertex +dEQP-VK.transform_feedback.fuzz.multi_basic_types.instance_array_geometry +dEQP-VK.transform_feedback.fuzz.multi_nested_struct.std_vertex +dEQP-VK.transform_feedback.fuzz.multi_nested_struct.std_geometry +dEQP-VK.transform_feedback.fuzz.multi_nested_struct.instance_array_vertex +dEQP-VK.transform_feedback.fuzz.multi_nested_struct.instance_array_geometry +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers000_vertex +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers000_geometry +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers000_instance_array_vertex +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers000_instance_array_geometry +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers010_vertex +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers010_geometry +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers010_instance_array_vertex +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers010_instance_array_geometry +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers100_vertex +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers100_geometry +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers100_instance_array_vertex +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers100_instance_array_geometry +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers110_vertex +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers110_geometry +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers110_instance_array_vertex +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers110_instance_array_geometry +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.50 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.51 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.52 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.53 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.54 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.55 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.56 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.57 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.58 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.59 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.60 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.61 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.62 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.63 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.64 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.65 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.66 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.67 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.68 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.69 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.70 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.71 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.72 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.73 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.74 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.75 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.76 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.77 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.78 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.79 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.80 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.81 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.82 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.83 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.84 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.85 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.86 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.87 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.88 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.89 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.90 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.91 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.92 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.93 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.94 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.95 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.96 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.97 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.98 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.99 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.50 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.51 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.52 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.53 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.54 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.55 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.56 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.57 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.58 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.59 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.60 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.61 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.62 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.63 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.64 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.65 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.66 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.67 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.68 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.69 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.70 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.71 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.72 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.73 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.74 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.75 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.76 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.77 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.78 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.79 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.80 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.81 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.82 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.83 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.84 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.85 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.86 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.87 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.88 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.89 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.90 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.91 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.92 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.93 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.94 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.95 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.96 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.97 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.98 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.99 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.50 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.51 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.52 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.53 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.54 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.55 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.56 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.57 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.58 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.59 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.60 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.61 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.62 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.63 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.64 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.65 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.66 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.67 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.68 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.69 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.70 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.71 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.72 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.73 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.74 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.75 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.76 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.77 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.78 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.79 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.80 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.81 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.82 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.83 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.84 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.85 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.86 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.87 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.88 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.89 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.90 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.91 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.92 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.93 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.94 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.95 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.96 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.97 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.98 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.99 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.50 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.51 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.52 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.53 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.54 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.55 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.56 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.57 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.58 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.59 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.60 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.61 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.62 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.63 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.64 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.65 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.66 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.67 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.68 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.69 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.70 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.71 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.72 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.73 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.74 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.75 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.76 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.77 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.78 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.79 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.80 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.81 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.82 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.83 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.84 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.85 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.86 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.87 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.88 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.89 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.90 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.91 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.92 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.93 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.94 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.95 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.96 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.97 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.98 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.99 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.50 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.51 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.52 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.53 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.54 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.55 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.56 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.57 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.58 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.59 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.60 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.61 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.62 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.63 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.64 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.65 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.66 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.67 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.68 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.69 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.70 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.71 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.72 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.73 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.74 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.75 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.76 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.77 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.78 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.79 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.80 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.81 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.82 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.83 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.84 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.85 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.86 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.87 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.88 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.89 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.90 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.91 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.92 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.93 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.94 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.95 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.96 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.97 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.98 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.99 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.50 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.51 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.52 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.53 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.54 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.55 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.56 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.57 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.58 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.59 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.60 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.61 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.62 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.63 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.64 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.65 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.66 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.67 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.68 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.69 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.70 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.71 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.72 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.73 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.74 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.75 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.76 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.77 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.78 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.79 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.80 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.81 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.82 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.83 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.84 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.85 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.86 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.87 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.88 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.89 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.90 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.91 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.92 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.93 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.94 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.95 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.96 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.97 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.98 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.99 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.50 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.51 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.52 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.53 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.54 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.55 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.56 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.57 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.58 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.59 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.60 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.61 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.62 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.63 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.64 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.65 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.66 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.67 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.68 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.69 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.70 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.71 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.72 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.73 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.74 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.75 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.76 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.77 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.78 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.79 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.80 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.81 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.82 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.83 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.84 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.85 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.86 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.87 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.88 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.89 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.90 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.91 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.92 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.93 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.94 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.95 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.96 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.97 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.98 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.99 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.50 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.51 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.52 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.53 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.54 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.55 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.56 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.57 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.58 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.59 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.60 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.61 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.62 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.63 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.64 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.65 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.66 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.67 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.68 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.69 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.70 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.71 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.72 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.73 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.74 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.75 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.76 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.77 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.78 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.79 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.80 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.81 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.82 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.83 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.84 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.85 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.86 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.87 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.88 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.89 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.90 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.91 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.92 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.93 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.94 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.95 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.96 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.97 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.98 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.99 diff --git a/external/vulkancts/mustpass/1.1.5/vk-default.txt b/external/vulkancts/mustpass/1.1.5/vk-default.txt index 210753d..05b533f 100644 --- a/external/vulkancts/mustpass/1.1.5/vk-default.txt +++ b/external/vulkancts/mustpass/1.1.5/vk-default.txt @@ -415914,3 +415914,2246 @@ dEQP-VK.imageless_framebuffer.depth_stencil dEQP-VK.imageless_framebuffer.color_resolve dEQP-VK.imageless_framebuffer.depth_stencil_resolve dEQP-VK.imageless_framebuffer.multisubpass +dEQP-VK.transform_feedback.simple.basic_1_256 +dEQP-VK.transform_feedback.simple.basic_1_512 +dEQP-VK.transform_feedback.simple.basic_1_131072 +dEQP-VK.transform_feedback.simple.basic_2_256 +dEQP-VK.transform_feedback.simple.basic_2_512 +dEQP-VK.transform_feedback.simple.basic_2_131072 +dEQP-VK.transform_feedback.simple.basic_4_256 +dEQP-VK.transform_feedback.simple.basic_4_512 +dEQP-VK.transform_feedback.simple.basic_4_131072 +dEQP-VK.transform_feedback.simple.basic_8_256 +dEQP-VK.transform_feedback.simple.basic_8_512 +dEQP-VK.transform_feedback.simple.basic_8_131072 +dEQP-VK.transform_feedback.simple.resume_1_256 +dEQP-VK.transform_feedback.simple.resume_1_512 +dEQP-VK.transform_feedback.simple.resume_1_131072 +dEQP-VK.transform_feedback.simple.resume_2_256 +dEQP-VK.transform_feedback.simple.resume_2_512 +dEQP-VK.transform_feedback.simple.resume_2_131072 +dEQP-VK.transform_feedback.simple.resume_4_256 +dEQP-VK.transform_feedback.simple.resume_4_512 +dEQP-VK.transform_feedback.simple.resume_4_131072 +dEQP-VK.transform_feedback.simple.resume_8_256 +dEQP-VK.transform_feedback.simple.resume_8_512 +dEQP-VK.transform_feedback.simple.resume_8_131072 +dEQP-VK.transform_feedback.simple.draw_indirect_16 +dEQP-VK.transform_feedback.simple.draw_indirect_244 +dEQP-VK.transform_feedback.simple.draw_indirect_508 +dEQP-VK.transform_feedback.simple.draw_indirect_1004 +dEQP-VK.transform_feedback.simple.draw_indirect_2036 +dEQP-VK.transform_feedback.simple.backward_dependency +dEQP-VK.transform_feedback.simple.query_0_4 +dEQP-VK.transform_feedback.simple.query_0_61 +dEQP-VK.transform_feedback.simple.query_0_127 +dEQP-VK.transform_feedback.simple.query_0_251 +dEQP-VK.transform_feedback.simple.query_0_509 +dEQP-VK.transform_feedback.simple.query_1_4 +dEQP-VK.transform_feedback.simple.query_1_61 +dEQP-VK.transform_feedback.simple.query_1_127 +dEQP-VK.transform_feedback.simple.query_1_251 +dEQP-VK.transform_feedback.simple.query_1_509 +dEQP-VK.transform_feedback.simple.query_3_4 +dEQP-VK.transform_feedback.simple.query_3_61 +dEQP-VK.transform_feedback.simple.query_3_127 +dEQP-VK.transform_feedback.simple.query_3_251 +dEQP-VK.transform_feedback.simple.query_3_509 +dEQP-VK.transform_feedback.simple.query_6_4 +dEQP-VK.transform_feedback.simple.query_6_61 +dEQP-VK.transform_feedback.simple.query_6_127 +dEQP-VK.transform_feedback.simple.query_6_251 +dEQP-VK.transform_feedback.simple.query_6_509 +dEQP-VK.transform_feedback.simple.query_14_4 +dEQP-VK.transform_feedback.simple.query_14_61 +dEQP-VK.transform_feedback.simple.query_14_127 +dEQP-VK.transform_feedback.simple.query_14_251 +dEQP-VK.transform_feedback.simple.query_14_509 +dEQP-VK.transform_feedback.simple.streams_1 +dEQP-VK.transform_feedback.simple.streams_3 +dEQP-VK.transform_feedback.simple.streams_6 +dEQP-VK.transform_feedback.simple.streams_14 +dEQP-VK.transform_feedback.simple.streams_pointsize_1 +dEQP-VK.transform_feedback.simple.streams_pointsize_3 +dEQP-VK.transform_feedback.simple.streams_pointsize_6 +dEQP-VK.transform_feedback.simple.streams_pointsize_14 +dEQP-VK.transform_feedback.simple.streams_clipdistance_1 +dEQP-VK.transform_feedback.simple.streams_clipdistance_3 +dEQP-VK.transform_feedback.simple.streams_clipdistance_6 +dEQP-VK.transform_feedback.simple.streams_clipdistance_14 +dEQP-VK.transform_feedback.simple.streams_culldistance_1 +dEQP-VK.transform_feedback.simple.streams_culldistance_3 +dEQP-VK.transform_feedback.simple.streams_culldistance_6 +dEQP-VK.transform_feedback.simple.streams_culldistance_14 +dEQP-VK.transform_feedback.simple.multistreams_1 +dEQP-VK.transform_feedback.simple.multistreams_3 +dEQP-VK.transform_feedback.simple.multistreams_6 +dEQP-VK.transform_feedback.simple.multistreams_14 +dEQP-VK.transform_feedback.fuzz.2_level_array.float.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.float.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.vec2.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.vec2.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.vec3.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.vec3.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.vec4.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.vec4.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.int.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.int.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.ivec2.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.ivec2.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.ivec3.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.ivec3.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.ivec4.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.ivec4.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.uint.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.uint.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.uvec2.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.uvec2.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.uvec3.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.uvec3.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.uvec4.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.uvec4.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.mat2.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.mat2.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.mat3.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.mat3.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.mat4.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.mat4.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.mat2x3.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.mat2x3.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.mat2x4.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.mat2x4.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.mat3x2.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.mat3x2.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.mat3x4.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.mat3x4.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.mat4x2.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.mat4x2.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.mat4x3.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.mat4x3.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.double.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.double.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dvec2.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dvec2.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dvec3.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dvec3.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dvec4.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dvec4.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat2.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat2.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat2x3.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat2x3.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat2x4.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat2x4.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat3x2.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat3x2.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat3.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat3.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat3x4.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat3x4.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat4x2.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat4x2.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat4x3.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat4x3.geometry +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat4.vertex +dEQP-VK.transform_feedback.fuzz.2_level_array.dmat4.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.float.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.float.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.vec2.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.vec2.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.vec3.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.vec3.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.vec4.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.vec4.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.int.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.int.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.ivec2.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.ivec2.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.ivec3.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.ivec3.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.ivec4.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.ivec4.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.uint.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.uint.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.uvec2.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.uvec2.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.uvec3.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.uvec3.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.uvec4.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.uvec4.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.mat2.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.mat2.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.mat3.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.mat3.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.mat4.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.mat4.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.mat2x3.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.mat2x3.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.mat2x4.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.mat2x4.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.mat3x2.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.mat3x2.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.mat3x4.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.mat3x4.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.mat4x2.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.mat4x2.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.mat4x3.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.mat4x3.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.double.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.double.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dvec2.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dvec2.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dvec3.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dvec3.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dvec4.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dvec4.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat2.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat2.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat2x3.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat2x3.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat2x4.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat2x4.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat3x2.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat3x2.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat3.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat3.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat3x4.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat3x4.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat4x2.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat4x2.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat4x3.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat4x3.geometry +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat4.vertex +dEQP-VK.transform_feedback.fuzz.3_level_array.dmat4.geometry +dEQP-VK.transform_feedback.fuzz.2_level_struct_array.std_vertex +dEQP-VK.transform_feedback.fuzz.2_level_struct_array.std_geometry +dEQP-VK.transform_feedback.fuzz.2_level_struct_array.instance_array_vertex +dEQP-VK.transform_feedback.fuzz.2_level_struct_array.instance_array_geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.double.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.double.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dvec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dvec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dvec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dvec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dvec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dvec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat2x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat2x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat2x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat2x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat3x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat3x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat3x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat3x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat4x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat4x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat4x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat4x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.dmat4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.float.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.float.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.vec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.vec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.vec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.vec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.vec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.vec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.int.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.int.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.ivec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.ivec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.ivec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.ivec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.ivec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.ivec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.uint.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.uint.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.uvec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.uvec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.uvec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.uvec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.uvec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.uvec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat2x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat2x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat2x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat2x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat3x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat3x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat3x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat3x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat4x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat4x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat4x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.lowp.mat4x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.float.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.float.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.vec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.vec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.vec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.vec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.vec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.vec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.int.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.int.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.ivec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.ivec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.ivec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.ivec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.ivec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.ivec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.uint.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.uint.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.uvec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.uvec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.uvec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.uvec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.uvec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.uvec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat2x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat2x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat2x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat2x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat3x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat3x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat3x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat3x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat4x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat4x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat4x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.mediump.mat4x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.float.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.float.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.vec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.vec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.vec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.vec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.vec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.vec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.int.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.int.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.ivec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.ivec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.ivec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.ivec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.ivec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.ivec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.uint.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.uint.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.uvec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.uvec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.uvec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.uvec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.uvec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.uvec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat2x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat2x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat2x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat2x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat3x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat3x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat3x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat3x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat4x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat4x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat4x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_type.highp.mat4x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.float.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.float.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.vec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.vec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.vec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.vec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.vec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.vec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.int.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.int.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.ivec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.ivec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.ivec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.ivec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.ivec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.ivec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.uint.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.uint.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.uvec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.uvec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.uvec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.uvec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.uvec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.uvec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat2x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat2x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat2x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat2x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat3x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat3x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat3x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat3x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat4x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat4x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat4x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.mat4x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.double.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.double.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dvec2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dvec2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dvec3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dvec3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dvec4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dvec4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat2x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat2x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat2x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat2x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat3x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat3x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat3x4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat3x4.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat4x2.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat4x2.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat4x3.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat4x3.geometry +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat4.vertex +dEQP-VK.transform_feedback.fuzz.single_basic_array.dmat4.geometry +dEQP-VK.transform_feedback.fuzz.single_struct.std_vertex +dEQP-VK.transform_feedback.fuzz.single_struct.std_geometry +dEQP-VK.transform_feedback.fuzz.single_struct.instance_array_vertex +dEQP-VK.transform_feedback.fuzz.single_struct.instance_array_geometry +dEQP-VK.transform_feedback.fuzz.single_struct_array.std_vertex +dEQP-VK.transform_feedback.fuzz.single_struct_array.std_geometry +dEQP-VK.transform_feedback.fuzz.single_struct_array.instance_array_vertex +dEQP-VK.transform_feedback.fuzz.single_struct_array.instance_array_geometry +dEQP-VK.transform_feedback.fuzz.single_nested_struct.std_vertex +dEQP-VK.transform_feedback.fuzz.single_nested_struct.std_geometry +dEQP-VK.transform_feedback.fuzz.single_nested_struct.instance_array_vertex +dEQP-VK.transform_feedback.fuzz.single_nested_struct.instance_array_geometry +dEQP-VK.transform_feedback.fuzz.single_nested_struct_array.std_vertex +dEQP-VK.transform_feedback.fuzz.single_nested_struct_array.std_geometry +dEQP-VK.transform_feedback.fuzz.single_nested_struct_array.instance_array_vertex +dEQP-VK.transform_feedback.fuzz.single_nested_struct_array.instance_array_geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.float.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.float.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.vec2.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.vec2.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.vec3.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.vec3.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.vec4.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.vec4.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.int.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.int.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.ivec2.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.ivec2.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.ivec3.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.ivec3.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.ivec4.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.ivec4.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.uint.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.uint.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.uvec2.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.uvec2.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.uvec3.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.uvec3.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.uvec4.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.uvec4.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat2.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat2.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat3.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat3.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat4.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat4.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat2x3.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat2x3.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat2x4.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat2x4.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat3x2.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat3x2.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat3x4.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat3x4.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat4x2.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat4x2.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat4x3.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.mat4x3.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.double.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.double.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dvec2.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dvec2.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dvec3.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dvec3.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dvec4.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dvec4.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat2.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat2.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat2x3.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat2x3.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat2x4.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat2x4.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat3x2.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat3x2.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat3.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat3.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat3x4.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat3x4.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat4x2.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat4x2.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat4x3.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat4x3.geometry +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat4.vertex +dEQP-VK.transform_feedback.fuzz.instance_array_basic_type.dmat4.geometry +dEQP-VK.transform_feedback.fuzz.multi_basic_types.std_vertex +dEQP-VK.transform_feedback.fuzz.multi_basic_types.std_geometry +dEQP-VK.transform_feedback.fuzz.multi_basic_types.instance_array_vertex +dEQP-VK.transform_feedback.fuzz.multi_basic_types.instance_array_geometry +dEQP-VK.transform_feedback.fuzz.multi_nested_struct.std_vertex +dEQP-VK.transform_feedback.fuzz.multi_nested_struct.std_geometry +dEQP-VK.transform_feedback.fuzz.multi_nested_struct.instance_array_vertex +dEQP-VK.transform_feedback.fuzz.multi_nested_struct.instance_array_geometry +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers000_vertex +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers000_geometry +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers000_instance_array_vertex +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers000_instance_array_geometry +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers010_vertex +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers010_geometry +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers010_instance_array_vertex +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers010_instance_array_geometry +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers100_vertex +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers100_geometry +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers100_instance_array_vertex +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers100_instance_array_geometry +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers110_vertex +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers110_geometry +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers110_instance_array_vertex +dEQP-VK.transform_feedback.fuzz.various_buffers.buffers110_instance_array_geometry +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_types.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_arrays.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.basic_instance_arrays.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_instance_arrays.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.nested_structs_arrays_instance_arrays.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.50 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.51 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.52 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.53 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.54 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.55 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.56 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.57 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.58 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.59 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.60 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.61 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.62 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.63 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.64 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.65 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.66 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.67 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.68 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.69 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.70 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.71 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.72 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.73 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.74 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.75 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.76 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.77 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.78 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.79 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.80 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.81 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.82 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.83 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.84 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.85 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.86 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.87 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.88 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.89 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.90 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.91 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.92 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.93 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.94 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.95 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.96 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.97 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.98 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_instance_array.99 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.50 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.51 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.52 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.53 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.54 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.55 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.56 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.57 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.58 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.59 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.60 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.61 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.62 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.63 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.64 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.65 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.66 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.67 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.68 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.69 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.70 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.71 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.72 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.73 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.74 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.75 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.76 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.77 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.78 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.79 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.80 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.81 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.82 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.83 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.84 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.85 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.86 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.87 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.88 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.89 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.90 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.91 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.92 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.93 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.94 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.95 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.96 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.97 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.98 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_instance_array.99 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.50 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.51 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.52 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.53 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.54 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.55 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.56 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.57 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.58 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.59 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.60 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.61 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.62 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.63 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.64 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.65 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.66 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.67 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.68 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.69 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.70 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.71 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.72 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.73 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.74 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.75 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.76 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.77 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.78 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.79 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.80 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.81 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.82 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.83 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.84 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.85 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.86 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.87 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.88 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.89 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.90 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.91 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.92 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.93 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.94 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.95 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.96 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.97 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.98 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_missing.99 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.0 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.1 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.2 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.3 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.4 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.5 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.6 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.7 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.8 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.9 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.10 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.11 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.12 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.13 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.14 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.15 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.16 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.17 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.18 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.19 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.20 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.21 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.22 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.23 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.24 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.25 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.26 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.27 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.28 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.29 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.30 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.31 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.32 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.33 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.34 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.35 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.36 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.37 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.38 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.39 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.40 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.41 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.42 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.43 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.44 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.45 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.46 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.47 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.48 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.49 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.50 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.51 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.52 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.53 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.54 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.55 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.56 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.57 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.58 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.59 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.60 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.61 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.62 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.63 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.64 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.65 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.66 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.67 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.68 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.69 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.70 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.71 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.72 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.73 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.74 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.75 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.76 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.77 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.78 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.79 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.80 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.81 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.82 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.83 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.84 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.85 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.86 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.87 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.88 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.89 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.90 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.91 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.92 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.93 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.94 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.95 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.96 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.97 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.98 +dEQP-VK.transform_feedback.fuzz.random_vertex.all_unordered_and_missing.99 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.scalar_types.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.vector_types.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_types.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_arrays.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.basic_instance_arrays.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_instance_arrays.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.nested_structs_arrays_instance_arrays.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.50 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.51 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.52 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.53 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.54 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.55 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.56 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.57 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.58 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.59 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.60 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.61 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.62 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.63 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.64 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.65 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.66 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.67 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.68 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.69 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.70 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.71 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.72 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.73 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.74 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.75 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.76 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.77 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.78 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.79 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.80 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.81 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.82 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.83 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.84 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.85 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.86 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.87 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.88 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.89 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.90 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.91 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.92 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.93 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.94 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.95 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.96 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.97 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.98 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_instance_array.99 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.50 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.51 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.52 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.53 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.54 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.55 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.56 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.57 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.58 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.59 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.60 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.61 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.62 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.63 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.64 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.65 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.66 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.67 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.68 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.69 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.70 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.71 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.72 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.73 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.74 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.75 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.76 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.77 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.78 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.79 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.80 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.81 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.82 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.83 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.84 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.85 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.86 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.87 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.88 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.89 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.90 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.91 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.92 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.93 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.94 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.95 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.96 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.97 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.98 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_instance_array.99 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.50 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.51 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.52 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.53 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.54 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.55 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.56 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.57 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.58 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.59 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.60 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.61 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.62 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.63 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.64 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.65 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.66 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.67 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.68 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.69 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.70 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.71 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.72 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.73 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.74 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.75 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.76 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.77 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.78 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.79 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.80 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.81 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.82 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.83 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.84 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.85 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.86 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.87 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.88 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.89 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.90 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.91 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.92 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.93 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.94 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.95 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.96 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.97 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.98 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_missing.99 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.0 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.1 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.2 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.3 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.4 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.5 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.6 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.7 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.8 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.9 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.10 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.11 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.12 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.13 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.14 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.15 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.16 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.17 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.18 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.19 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.20 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.21 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.22 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.23 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.24 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.25 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.26 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.27 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.28 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.29 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.30 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.31 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.32 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.33 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.34 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.35 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.36 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.37 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.38 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.39 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.40 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.41 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.42 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.43 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.44 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.45 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.46 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.47 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.48 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.49 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.50 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.51 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.52 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.53 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.54 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.55 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.56 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.57 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.58 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.59 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.60 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.61 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.62 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.63 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.64 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.65 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.66 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.67 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.68 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.69 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.70 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.71 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.72 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.73 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.74 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.75 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.76 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.77 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.78 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.79 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.80 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.81 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.82 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.83 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.84 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.85 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.86 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.87 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.88 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.89 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.90 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.91 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.92 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.93 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.94 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.95 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.96 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.97 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.98 +dEQP-VK.transform_feedback.fuzz.random_geometry.all_unordered_and_missing.99 diff --git a/external/vulkancts/scripts/src/vulkan.h.in b/external/vulkancts/scripts/src/vulkan.h.in index 097eeb5..221d54d 100755 --- a/external/vulkancts/scripts/src/vulkan.h.in +++ b/external/vulkancts/scripts/src/vulkan.h.in @@ -294,6 +294,9 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000, VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001, VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001, + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002, VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000, VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000, VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001, @@ -729,6 +732,7 @@ typedef enum VkQueryType { VK_QUERY_TYPE_OCCLUSION = 0, VK_QUERY_TYPE_PIPELINE_STATISTICS = 1, VK_QUERY_TYPE_TIMESTAMP = 2, + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004, VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000, VK_QUERY_TYPE_BEGIN_RANGE = VK_QUERY_TYPE_OCCLUSION, VK_QUERY_TYPE_END_RANGE = VK_QUERY_TYPE_TIMESTAMP, @@ -1284,6 +1288,7 @@ typedef enum VkPipelineStageFlagBits { VK_PIPELINE_STAGE_HOST_BIT = 0x00004000, VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000, + VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 0x01000000, VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX = 0x00020000, VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000, VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF @@ -1371,6 +1376,8 @@ typedef enum VkBufferUsageFlagBits { VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040, VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080, VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100, + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 0x00000800, + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 0x00001000, VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00000200, VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 0x00020000, VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF @@ -1487,6 +1494,9 @@ typedef enum VkAccessFlagBits { VK_ACCESS_HOST_WRITE_BIT = 0x00004000, VK_ACCESS_MEMORY_READ_BIT = 0x00008000, VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000, + VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0x02000000, + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0x04000000, + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 0x08000000, VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000, VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX = 0x00020000, VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = 0x00040000, @@ -6795,6 +6805,95 @@ typedef struct VkDedicatedAllocationMemoryAllocateInfoNV { +#define VK_EXT_transform_feedback 1 +#define VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION 1 +#define VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME "VK_EXT_transform_feedback" + +typedef VkFlags VkPipelineRasterizationStateStreamCreateFlagsEXT; + +typedef struct VkPhysicalDeviceTransformFeedbackFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 transformFeedback; + VkBool32 geometryStreams; +} VkPhysicalDeviceTransformFeedbackFeaturesEXT; + +typedef struct VkPhysicalDeviceTransformFeedbackPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t maxTransformFeedbackStreams; + uint32_t maxTransformFeedbackBuffers; + VkDeviceSize maxTransformFeedbackBufferSize; + uint32_t maxTransformFeedbackStreamDataSize; + uint32_t maxTransformFeedbackBufferDataSize; + uint32_t maxTransformFeedbackBufferDataStride; + VkBool32 transformFeedbackQueries; + VkBool32 transformFeedbackStreamsLinesTriangles; + VkBool32 transformFeedbackRasterizationStreamSelect; + VkBool32 transformFeedbackDraw; +} VkPhysicalDeviceTransformFeedbackPropertiesEXT; + +typedef struct VkPipelineRasterizationStateStreamCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkPipelineRasterizationStateStreamCreateFlagsEXT flags; + uint32_t rasterizationStream; +} VkPipelineRasterizationStateStreamCreateInfoEXT; + + +typedef void (VKAPI_PTR *PFN_vkCmdBindTransformFeedbackBuffersEXT)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes); +typedef void (VKAPI_PTR *PFN_vkCmdBeginTransformFeedbackEXT)(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets); +typedef void (VKAPI_PTR *PFN_vkCmdEndTransformFeedbackEXT)(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets); +typedef void (VKAPI_PTR *PFN_vkCmdBeginQueryIndexedEXT)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags, uint32_t index); +typedef void (VKAPI_PTR *PFN_vkCmdEndQueryIndexedEXT)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, uint32_t index); +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectByteCountEXT)(VkCommandBuffer commandBuffer, uint32_t instanceCount, uint32_t firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, uint32_t counterOffset, uint32_t vertexStride); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBindTransformFeedbackBuffersEXT( + VkCommandBuffer commandBuffer, + uint32_t firstBinding, + uint32_t bindingCount, + const VkBuffer* pBuffers, + const VkDeviceSize* pOffsets, + const VkDeviceSize* pSizes); + +VKAPI_ATTR void VKAPI_CALL vkCmdBeginTransformFeedbackEXT( + VkCommandBuffer commandBuffer, + uint32_t firstCounterBuffer, + uint32_t counterBufferCount, + const VkBuffer* pCounterBuffers, + const VkDeviceSize* pCounterBufferOffsets); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndTransformFeedbackEXT( + VkCommandBuffer commandBuffer, + uint32_t firstCounterBuffer, + uint32_t counterBufferCount, + const VkBuffer* pCounterBuffers, + const VkDeviceSize* pCounterBufferOffsets); + +VKAPI_ATTR void VKAPI_CALL vkCmdBeginQueryIndexedEXT( + VkCommandBuffer commandBuffer, + VkQueryPool queryPool, + uint32_t query, + VkQueryControlFlags flags, + uint32_t index); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndQueryIndexedEXT( + VkCommandBuffer commandBuffer, + VkQueryPool queryPool, + uint32_t query, + uint32_t index); + +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectByteCountEXT( + VkCommandBuffer commandBuffer, + uint32_t instanceCount, + uint32_t firstInstance, + VkBuffer counterBuffer, + VkDeviceSize counterBufferOffset, + uint32_t counterOffset, + uint32_t vertexStride); +#endif + #define VK_AMD_draw_indirect_count 1 #define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 1 #define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_AMD_draw_indirect_count" diff --git a/framework/opengl/gluShaderUtil.hpp b/framework/opengl/gluShaderUtil.hpp index bc14152..58d53c4 100644 --- a/framework/opengl/gluShaderUtil.hpp +++ b/framework/opengl/gluShaderUtil.hpp @@ -263,6 +263,7 @@ DataType getDataTypeFromGLType (deUint32 glType); inline bool isDataTypeFloat16OrVec (DataType dataType) { return (dataType >= TYPE_FLOAT16) && (dataType <= TYPE_FLOAT16_MAT4); } inline bool isDataTypeFloatOrVec (DataType dataType) { return (dataType >= TYPE_FLOAT) && (dataType <= TYPE_FLOAT_VEC4); } inline bool isDataTypeFloatType (DataType dataType) { return (dataType >= TYPE_FLOAT) && (dataType <= TYPE_FLOAT_MAT4); } +inline bool isDataTypeDoubleType (DataType dataType) { return (dataType >= TYPE_DOUBLE) && (dataType <= TYPE_DOUBLE_MAT4); } inline bool isDataTypeDoubleOrDVec (DataType dataType) { return (dataType >= TYPE_DOUBLE) && (dataType <= TYPE_DOUBLE_VEC4); } inline bool isDataTypeMatrix (DataType dataType) { return ((dataType >= TYPE_FLOAT_MAT2) && (dataType <= TYPE_FLOAT_MAT4)) @@ -324,7 +325,8 @@ inline bool isDataTypeExplicitPrecision (DataType dataType) { || deInRange32(dataType, TYPE_INT8, TYPE_INT8_VEC4) || deInRange32(dataType, TYPE_UINT16, TYPE_UINT16_VEC4) || deInRange32(dataType, TYPE_INT16, TYPE_INT16_VEC4) - || deInRange32(dataType, TYPE_FLOAT16, TYPE_FLOAT16_VEC4) + || deInRange32(dataType, TYPE_FLOAT16, TYPE_FLOAT16_MAT4) + || deInRange32(dataType, TYPE_DOUBLE, TYPE_DOUBLE_MAT4) ; } inline bool dataTypeSupportsPrecisionModifier (DataType dataType) { return !isDataTypeBoolOrBVec(dataType) && !isDataTypeExplicitPrecision(dataType); } -- 2.7.4