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 \
$(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 \
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
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,
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
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,
};
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;
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,
typedef deUint32 VkAcquireProfilingLockFlagsKHR;
+typedef deUint32 VkPipelineRasterizationStateStreamCreateFlagsEXT;
+
typedef deUint32 VkViSurfaceCreateFlagsNN;
typedef deUint32 VkPipelineViewportSwizzleStateCreateFlagsNV;
#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
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;
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);
CmdDebugMarkerBeginEXTFunc cmdDebugMarkerBeginEXT;
CmdDebugMarkerEndEXTFunc cmdDebugMarkerEndEXT;
CmdDebugMarkerInsertEXTFunc cmdDebugMarkerInsertEXT;
+CmdBindTransformFeedbackBuffersEXTFunc cmdBindTransformFeedbackBuffersEXT;
+CmdBeginTransformFeedbackEXTFunc cmdBeginTransformFeedbackEXT;
+CmdEndTransformFeedbackEXTFunc cmdEndTransformFeedbackEXT;
+CmdBeginQueryIndexedEXTFunc cmdBeginQueryIndexedEXT;
+CmdEndQueryIndexedEXTFunc cmdEndQueryIndexedEXT;
+CmdDrawIndirectByteCountEXTFunc cmdDrawIndirectByteCountEXT;
CmdDrawIndirectCountAMDFunc cmdDrawIndirectCountAMD;
CmdDrawIndexedIndirectCountAMDFunc cmdDrawIndexedIndirectCountAMD;
CmdDrawIndirectCountKHRFunc cmdDrawIndirectCountKHR;
functions.push_back("vkCmdDebugMarkerEndEXT");
functions.push_back("vkCmdDebugMarkerInsertEXT");
}
+ else if (extName == "VK_EXT_transform_feedback")
+ {
+ functions.push_back("vkCmdBindTransformFeedbackBuffersEXT");
+ functions.push_back("vkCmdBeginTransformFeedbackEXT");
+ functions.push_back("vkCmdEndTransformFeedbackEXT");
+ functions.push_back("vkCmdBeginQueryIndexedEXT");
+ functions.push_back("vkCmdEndQueryIndexedEXT");
+ functions.push_back("vkCmdDrawIndirectByteCountEXT");
+ }
else if (extName == "VK_AMD_draw_indirect_count")
{
functions.push_back("vkCmdDrawIndirectCountAMD");
"VK_KHR_bind_memory2",
"VK_KHR_maintenance3",
"VK_EXT_debug_marker",
+ "VK_EXT_transform_feedback",
"VK_AMD_draw_indirect_count",
"VK_KHR_draw_indirect_count",
"VK_NV_external_memory_win32",
typedef VKAPI_ATTR void (VKAPI_CALL* CmdDebugMarkerBeginEXTFunc) (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
typedef VKAPI_ATTR void (VKAPI_CALL* CmdDebugMarkerEndEXTFunc) (VkCommandBuffer commandBuffer);
typedef VKAPI_ATTR void (VKAPI_CALL* CmdDebugMarkerInsertEXTFunc) (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
+typedef VKAPI_ATTR void (VKAPI_CALL* CmdBindTransformFeedbackBuffersEXTFunc) (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes);
+typedef VKAPI_ATTR void (VKAPI_CALL* CmdBeginTransformFeedbackEXTFunc) (VkCommandBuffer commandBuffer, deUint32 firstCounterBuffer, deUint32 counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets);
+typedef VKAPI_ATTR void (VKAPI_CALL* CmdEndTransformFeedbackEXTFunc) (VkCommandBuffer commandBuffer, deUint32 firstCounterBuffer, deUint32 counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets);
+typedef VKAPI_ATTR void (VKAPI_CALL* CmdBeginQueryIndexedEXTFunc) (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags, deUint32 index);
+typedef VKAPI_ATTR void (VKAPI_CALL* CmdEndQueryIndexedEXTFunc) (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, deUint32 index);
+typedef VKAPI_ATTR void (VKAPI_CALL* CmdDrawIndirectByteCountEXTFunc) (VkCommandBuffer commandBuffer, deUint32 instanceCount, deUint32 firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, deUint32 counterOffset, deUint32 vertexStride);
typedef VKAPI_ATTR void (VKAPI_CALL* CmdDrawIndirectCountAMDFunc) (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
typedef VKAPI_ATTR void (VKAPI_CALL* CmdDrawIndexedIndirectCountAMDFunc) (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
typedef VKAPI_ATTR void (VKAPI_CALL* CmdDrawIndirectCountKHRFunc) (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
return VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV;
}
+template<> VkStructureType getStructureType<VkPhysicalDeviceTransformFeedbackFeaturesEXT> (void)
+{
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceTransformFeedbackPropertiesEXT> (void)
+{
+ return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT;
+}
+
+template<> VkStructureType getStructureType<VkPipelineRasterizationStateStreamCreateInfoEXT> (void)
+{
+ return VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT;
+}
+
template<> VkStructureType getStructureType<VkTextureLODGatherFormatPropertiesAMD> (void)
{
return VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD;
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");
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);
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),
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);
builtin->maxCombinedAtomicCounterBuffers = 1;
builtin->maxAtomicCounterBufferSize = 16384;
builtin->maxTransformFeedbackBuffers = 4;
- builtin->maxTransformFeedbackInterleavedComponents = 64;
+ builtin->maxTransformFeedbackInterleavedComponents = 16382;
builtin->maxCullDistances = 8;
builtin->maxCombinedClipAndCullDistances = 8;
builtin->maxSamples = 4;
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);
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);
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";
{
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;
}
}
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"),
};
{
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));
}
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"),
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);
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";
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;
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;
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,
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,
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
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
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,
+#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"
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)
ycbcr
protected_memory
memory_model
+ transform_feedback
util
amber
imageless_framebuffer
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))
--- /dev/null
+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})
--- /dev/null
+/*------------------------------------------------------------------------
+ * 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 <map>
+#include <set>
+#include <vector>
+#include <iostream>
+#include <iomanip>
+
+namespace vkt
+{
+namespace TransformFeedback
+{
+
+using namespace vk;
+
+typedef std::map<int, int> BufferGeneralMapping;
+
+typedef std::pair<int, int> UsedRange;
+typedef std::vector<UsedRange> UsedRangeList;
+typedef std::map<int, UsedRangeList> 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<int>::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<const StructType*>& structs) const
+{
+ for (std::vector<StructTypeSP>::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<deUint8> createMask (const InterfaceLayout& layout, const std::map<int, void*>& blockPointers, const void* basePtr0, const size_t baseSize)
+{
+ std::vector<deUint8> 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<deUint32>(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<int, void*>& 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<int> 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<int>::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<typename T>
+void semiShuffle (std::vector<T>& v)
+{
+ const std::vector<T> src = v;
+ int i = -1;
+ int n = static_cast<int>(src.size());
+
+ v.clear();
+
+ while (n)
+ {
+ i += n;
+ v.push_back(src[i]);
+ n = (n > 0 ? 1 - n : -1 - n);
+ }
+}
+
+template<typename T>
+//! \note Stores pointers to original elements
+class Traverser
+{
+public:
+ template<typename Iter>
+ 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<T*> m_elements;
+ typename std::vector<T*>::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<const InterfaceBlockMember> 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<int>(elemPtr - static_cast<const deUint8*>(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<int, void*>& 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<int, void*>& blockPointers, MatrixLoadFlags matrixLoadFlag, TestStageFlags testStageFlags, bool shuffleUniformMembers)
+{
+ std::ostringstream src;
+ std::vector<const StructType*> 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 StructType*>::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<VkPipelineLayout> 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<VkPipeline> 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<VkViewport> viewports (1, makeViewport(renderSize));
+ const std::vector<VkRect2D> 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<VkViewport>& viewports
+ scissors, // const std::vector<VkRect2D>& scissors
+ VK_PRIMITIVE_TOPOLOGY_POINT_LIST, // const VkPrimitiveTopology topology
+ 0u, // const deUint32 subpass
+ 0u, // const deUint32 patchControlPoints
+ &vertexInputStateCreateInfo); // const VkPipelineVertexInputStateCreateInfo* vertexInputStateCreateInfo
+}
+
+Move<VkFramebuffer> 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<int, void*>& blockPointers,
+ const std::vector<deUint8>& data,
+ const std::vector<VkDeviceSize>& tfBufBindingOffsets,
+ const std::vector<VkDeviceSize>& tfBufBindingSizes,
+ const deUint32 locationsRequired,
+ const TestStageFlags testStageFlags);
+
+ virtual ~InterfaceBlockCaseInstance (void);
+ virtual tcu::TestStatus iterate (void);
+
+private:
+ Move<VkShaderModule> 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<vk::Unique<vk::VkBuffer> > VkBufferSp;
+ typedef de::SharedPtr<vk::Allocation> AllocationSp;
+
+ const InterfaceLayout& m_layout;
+ const std::vector<deUint8>& m_data;
+ const DeviceSizeVector& m_tfBufBindingOffsets;
+ const DeviceSizeVector& m_tfBufBindingSizes;
+ const std::map<int, void*>& m_blockPointers;
+ const deUint32 m_locationsRequired;
+ const TestStageFlags m_testStageFlags;
+ const VkExtent2D m_imageExtent2D;
+};
+
+InterfaceBlockCaseInstance::InterfaceBlockCaseInstance (Context& ctx,
+ const InterfaceLayout& layout,
+ const std::map<int, void*>& blockPointers,
+ const std::vector<deUint8>& data,
+ const std::vector<VkDeviceSize>& tfBufBindingOffsets,
+ const std::vector<VkDeviceSize>& 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<VkShaderModule> 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<VkShaderModule>();
+}
+
+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<VkShaderModule> vertModule (createShaderModule (vk, device, m_context.getBinaryCollection().get("vert"), 0u));
+ const Move<VkShaderModule> geomModule (getGeometryShaderModule(vk, device));
+ const Move<VkRenderPass> renderPass (makeRenderPass (vk, device, VK_FORMAT_UNDEFINED));
+ const Move<VkFramebuffer> framebuffer (makeFramebuffer (vk, device, *renderPass, m_imageExtent2D));
+ const Move<VkPipelineLayout> pipelineLayout (makePipelineLayout (vk, device));
+ const Move<VkPipeline> pipeline (makeGraphicsPipeline (vk, device, *pipelineLayout, *renderPass, *vertModule, *geomModule, m_imageExtent2D));
+ const Move<VkCommandPool> cmdPool (createCommandPool (vk, device, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, queueFamilyIndex));
+ const Move<VkCommandBuffer> 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<VkBuffer> tfBuf = createBuffer(vk, device, &tfBufCreateInfo);
+ const de::MovePtr<Allocation> tfBufAllocation = allocator.allocate(getBufferMemoryRequirements(vk, device, *tfBuf), MemoryRequirement::HostVisible);
+ const deUint32 tfBufBindingCount = static_cast<deUint32>(m_tfBufBindingOffsets.size());
+ const std::vector<VkBuffer> 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<deUint8> 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<deUint8> 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
--- /dev/null
+#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 <map>
+
+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<StructMember>::iterator Iterator;
+ typedef std::vector<StructMember>::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<StructMember> 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<InterfaceBlockMember>::iterator Iterator;
+ typedef std::vector<InterfaceBlockMember>::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<InterfaceBlockMember> m_members;
+ int m_xfbBuffer;
+ int m_arraySize; //!< Array size or 0 if not interface block array.
+ deUint32 m_flags;
+};
+
+typedef de::SharedPtr<StructType> StructTypeSP;
+typedef de::SharedPtr<InterfaceBlock> InterfaceBlockSP;
+
+class ShaderInterface
+{
+public:
+ ShaderInterface (void);
+ ~ShaderInterface (void);
+
+ StructType& allocStruct (const std::string& name);
+ void getNamedStructs (std::vector<const StructType*>& 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<StructTypeSP> m_structs;
+ std::vector<InterfaceBlockSP> 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<int> 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<BlockLayoutEntry> blocks;
+ std::vector<InterfaceLayoutEntry> interfaces;
+
+ int getInterfaceLayoutIndex (int blockDeclarationNdx, const std::string& name) const;
+ int getBlockLayoutIndex (int blockDeclarationNdx, int instanceNdx) const;
+};
+
+typedef std::vector<vk::VkDeviceSize> 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<deUint8> m_data; //!< Data.
+ DeviceSizeVector m_tfBufBindingSizes;
+ DeviceSizeVector m_tfBufBindingOffsets;
+ std::map<int, void*> m_blockPointers; //!< Reference block pointers.
+ InterfaceLayout m_interfaceLayout; //!< interface layout.
+};
+
+} // TransformFeedback
+} // vkt
+
+#endif // _VKTTRANSFORMFEEDBACKFUZZLAYOUTCASE_HPP
--- /dev/null
+/*------------------------------------------------------------------------
+ * 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<tcu::TestCaseGroup> 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<deUint32>(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<tcu::TestCaseGroup> 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
--- /dev/null
+#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
--- /dev/null
+/*------------------------------------------------------------------------
+ * 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<InterfaceFlags>(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<glu::DataType> RandomInterfaceBlockCase::fillTypeCandidates()
+{
+ std::vector<glu::DataType> 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<VarType> 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<deUint32>(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<glu::DataType>(m_primitiveTypeCandidates.begin(), m_primitiveTypeCandidates.end());
+ deUint32 flags = (m_explicitXfbOffsets ? static_cast<deUint32>(LAYOUT_XFBOFFSET) : 0u);
+
+ if (glu::dataTypeSupportsPrecisionModifier(type))
+ {
+ // Precision.
+ static const deUint32 precisionCandidates[] = { PRECISION_LOW, PRECISION_MEDIUM, PRECISION_HIGH };
+ flags |= rnd.choose<deUint32>(&precisionCandidates[0], &precisionCandidates[DE_LENGTH_OF_ARRAY(precisionCandidates)]);
+ }
+
+ return VarType(type, flags);
+ }
+}
+
+} // TransformFeedback
+} // vkt
--- /dev/null
+#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<glu::DataType> 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<glu::DataType> m_primitiveTypeCandidates;
+};
+
+} // TransformFeedback
+} // vkt
+
+#endif // _VKTTRANSFORMFEEDBACKRANDOMLAYOUTCASE_HPP
--- /dev/null
+/*------------------------------------------------------------------------
+ * 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 <iostream>
+
+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<typename T>
+inline SharedPtr<Unique<T> > makeSharedPtr(Move<T> move)
+{
+ return SharedPtr<Unique<T> >(new Unique<T>(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<VkPipelineLayout> 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<VkPipeline> 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<VkViewport> viewports (1, makeViewport(renderSize));
+ const std::vector<VkRect2D> 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<VkViewport>& viewports
+ scissors, // const std::vector<VkRect2D>& scissors
+ topology, // const VkPrimitiveTopology topology
+ subpass, // const deUint32 subpass
+ 0u, // const deUint32 patchControlPoints
+ vertexInputStateCreateInfoPtr, // const VkPipelineVertexInputStateCreateInfo* vertexInputStateCreateInfo
+ rasterizationStateCreateInfoPtr); // const VkPipelineRasterizationStateCreateInfo* rasterizationStateCreateInfo
+}
+
+Move<VkImageView> 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<VkRenderPass> makeRenderPass (const DeviceInterface& vk,
+ const VkDevice device)
+{
+ std::vector<VkSubpassDescription> subpassDescriptions;
+ std::vector<VkSubpassDependency> 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<VkRenderPassCreateFlags>(0u), // VkRenderPassCreateFlags flags;
+ 0u, // deUint32 attachmentCount;
+ DE_NULL, // const VkAttachmentDescription* pAttachments;
+ static_cast<deUint32>(subpassDescriptions.size()), // deUint32 subpassCount;
+ &subpassDescriptions[0], // const VkSubpassDescription* pSubpasses;
+ static_cast<deUint32>(subpassDependencies.size()), // deUint32 dependencyCount;
+ subpassDependencies.size() > 0 ? &subpassDependencies[0] : DE_NULL // const VkSubpassDependency* pDependencies;
+ };
+
+ return createRenderPass(vk, device, &renderPassInfo);
+}
+
+Move<VkFramebuffer> 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<VkBuffer> makeBuffer (const DeviceInterface& vk, const VkDevice device, const VkBufferCreateInfo& createInfo)
+{
+ return createBuffer(vk, device, &createInfo);
+}
+
+inline Move<VkImage> makeImage (const DeviceInterface& vk, const VkDevice device, const VkImageCreateInfo& createInfo)
+{
+ return createImage(vk, device, &createInfo);
+}
+
+de::MovePtr<Allocation> bindImage (const DeviceInterface& vk, const VkDevice device, Allocator& allocator, const VkImage image, const MemoryRequirement requirement)
+{
+ de::MovePtr<Allocation> alloc = allocator.allocate(getImageMemoryRequirements(vk, device, image), requirement);
+ VK_CHECK(vk.bindImageMemory(device, image, alloc->getMemory(), alloc->getOffset()));
+ return alloc;
+}
+
+de::MovePtr<Allocation> bindBuffer (const DeviceInterface& vk, const VkDevice device, Allocator& allocator, const VkBuffer buffer, const MemoryRequirement requirement)
+{
+ de::MovePtr<Allocation> 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<deUint8> dataVec (static_cast<deUint32>(bufferSize), 0u);
+
+ DE_ASSERT(bufferSize >= dataSize);
+
+ deMemcpy(&dataVec[0], data, static_cast<deUint32>(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<VkDeviceSize> generateSizesList (const size_t bufBytes, const size_t chunkCount);
+ std::vector<VkDeviceSize> generateOffsetsList (const std::vector<VkDeviceSize>& sizesList);
+ void verifyTransformFeedbackBuffer (const MovePtr<Allocation>& 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<VkDeviceSize> TransformFeedbackTestInstance::generateSizesList (const size_t bufBytes, const size_t chunkCount)
+{
+ const int minChunkSlot = static_cast<int>(1);
+ const int maxChunkSlot = static_cast<int>(bufBytes / sizeof(deUint32));
+ int prevOffsetSlot = 0;
+ std::map<int, bool> offsetsSet;
+ std::vector<VkDeviceSize> 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<size_t>(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<int, bool>::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<VkDeviceSize>(static_cast<size_t>(offsetSlot - prevOffsetSlot) * sizeof(deUint32)));
+
+ prevOffsetSlot = offsetSlot;
+ }
+
+ DE_ASSERT(result.size() == chunkCount);
+
+ return result;
+}
+
+std::vector<VkDeviceSize> TransformFeedbackTestInstance::generateOffsetsList (const std::vector<VkDeviceSize>& sizesList)
+{
+ VkDeviceSize offset = 0ull;
+ std::vector<VkDeviceSize> 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<Allocation>& 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<deUint32>(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<VkShaderModule> vertexModule (createShaderModule (vk, device, m_context.getBinaryCollection().get("vert"), 0u));
+ const Unique<VkRenderPass> renderPass (makeRenderPass (vk, device, VK_FORMAT_UNDEFINED));
+ const Unique<VkFramebuffer> framebuffer (makeFramebuffer (vk, device, *renderPass, m_imageExtent2D, DE_NULL));
+ const Unique<VkPipelineLayout> pipelineLayout (makePipelineLayout (vk, device));
+ const Unique<VkPipeline> pipeline (makeGraphicsPipeline (vk, device, *pipelineLayout, *renderPass, *vertexModule, DE_NULL, DE_NULL, m_imageExtent2D, 0u));
+ const Unique<VkCommandPool> cmdPool (createCommandPool (vk, device, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, queueFamilyIndex));
+ const Unique<VkCommandBuffer> 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<VkBuffer> tfBuf = createBuffer(vk, device, &tfBufCreateInfo);
+ const MovePtr<Allocation> tfBufAllocation = allocator.allocate(getBufferMemoryRequirements(vk, device, *tfBuf), MemoryRequirement::HostVisible);
+ const std::vector<VkDeviceSize> tfBufBindingSizes = generateSizesList(m_parameters.bufferSize, m_parameters.partCount);
+ const std::vector<VkDeviceSize> 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<deUint32>(tfBufBindingOffsets[drawNdx] / sizeof(deUint32));
+ const deUint32 numPoints = static_cast<deUint32>(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<VkShaderModule> vertexModule (createShaderModule (vk, device, m_context.getBinaryCollection().get("vert"), 0u));
+ const Unique<VkRenderPass> renderPass (makeRenderPass (vk, device, VK_FORMAT_UNDEFINED));
+ const Unique<VkFramebuffer> framebuffer (makeFramebuffer (vk, device, *renderPass, m_imageExtent2D, DE_NULL));
+ const Unique<VkPipelineLayout> pipelineLayout (makePipelineLayout (vk, device));
+ const Unique<VkPipeline> pipeline (makeGraphicsPipeline (vk, device, *pipelineLayout, *renderPass, *vertexModule, DE_NULL, DE_NULL, m_imageExtent2D, 0u));
+
+ const Unique<VkCommandPool> cmdPool (createCommandPool (vk, device, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, queueFamilyIndex));
+ const Unique<VkCommandBuffer> 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<VkBuffer> tfBuf = createBuffer(vk, device, &tfBufCreateInfo);
+ const MovePtr<Allocation> tfBufAllocation = allocator.allocate(getBufferMemoryRequirements(vk, device, *tfBuf), MemoryRequirement::HostVisible);
+ const std::vector<VkDeviceSize> tfBufBindingSizes = std::vector<VkDeviceSize>(1, m_parameters.bufferSize);
+ const std::vector<VkDeviceSize> tfBufBindingOffsets = std::vector<VkDeviceSize>(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<VkBuffer> tfcBuf = createBuffer(vk, device, &tfcBufCreateInfo);
+ const MovePtr<Allocation> tfcBufAllocation = allocator.allocate(getBufferMemoryRequirements(vk, device, *tfcBuf), MemoryRequirement::Any);
+ const std::vector<VkDeviceSize> 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<VkDeviceSize> chunkSizesList = generateSizesList(m_parameters.bufferSize, m_parameters.partCount);
+ const std::vector<VkDeviceSize> 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<deUint32>(chunkOffsetsList[drawNdx] / sizeof(deUint32));
+ const deUint32 numPoints = static_cast<deUint32>(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<VkDeviceSize> generateSizesList (const size_t bufBytes, const size_t chunkCount);
+ void verifyTransformFeedbackBuffer (const MovePtr<Allocation>& 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<VkDeviceSize> TransformFeedbackMultistreamTestInstance::generateSizesList (const size_t bufBytes, const size_t chunkCount)
+{
+ const VkDeviceSize chunkSize = bufBytes / chunkCount;
+ std::vector<VkDeviceSize> 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<Allocation>& 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<deUint32>(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<VkRenderPass> renderPass (makeRenderPass (vk, device, VK_FORMAT_UNDEFINED));
+
+ const Unique<VkShaderModule> vertexModule (createShaderModule (vk, device, m_context.getBinaryCollection().get("vert"), 0u));
+ const Unique<VkShaderModule> geomModule (createShaderModule (vk, device, m_context.getBinaryCollection().get("geom"), 0u));
+
+ const Unique<VkFramebuffer> framebuffer (makeFramebuffer (vk, device, *renderPass, m_imageExtent2D, DE_NULL));
+ const Unique<VkPipelineLayout> pipelineLayout (makePipelineLayout (vk, device));
+ const Unique<VkPipeline> pipeline (makeGraphicsPipeline (vk, device, *pipelineLayout, *renderPass, *vertexModule, *geomModule, DE_NULL, m_imageExtent2D, 0u));
+ const Unique<VkCommandPool> cmdPool (createCommandPool (vk, device, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, queueFamilyIndex));
+ const Unique<VkCommandBuffer> 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<VkBuffer> tfBuf = createBuffer(vk, device, &tfBufCreateInfo);
+ const std::vector<VkBuffer> tfBufArray = std::vector<VkBuffer>(m_parameters.partCount, *tfBuf);
+ const MovePtr<Allocation> tfBufAllocation = allocator.allocate(getBufferMemoryRequirements(vk, device, *tfBuf), MemoryRequirement::HostVisible);
+ const std::vector<VkDeviceSize> tfBufBindingSizes = generateSizesList(m_parameters.bufferSize, m_parameters.partCount);
+ const std::vector<VkDeviceSize> 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<int>(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<VkRenderPass> renderPass (makeRenderPass (vk, device, VK_FORMAT_R8G8B8A8_UNORM));
+
+ const Unique<VkShaderModule> vertModule (createShaderModule (vk, device, m_context.getBinaryCollection().get("vert"), 0u));
+ const Unique<VkShaderModule> geomModule (createShaderModule (vk, device, m_context.getBinaryCollection().get("geom"), 0u));
+ const Unique<VkShaderModule> 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<VkImage> colorImage (makeImage (vk, device, makeImageCreateInfo(0u, VK_IMAGE_TYPE_2D, colorFormat, m_imageExtent2D, 1u, imageUsageFlags)));
+ const UniquePtr<Allocation> colorImageAlloc (bindImage (vk, device, allocator, *colorImage, MemoryRequirement::Any));
+ const Unique<VkImageView> colorAttachment (makeImageView (vk, device, *colorImage, VK_IMAGE_VIEW_TYPE_2D, colorFormat, colorSubresRange));
+ const Unique<VkBuffer> colorBuffer (makeBuffer (vk, device, makeBufferCreateInfo(colorBufferSize, VK_BUFFER_USAGE_TRANSFER_DST_BIT)));
+ const UniquePtr<Allocation> colorBufferAlloc (bindBuffer (vk, device, allocator, *colorBuffer, MemoryRequirement::HostVisible));
+
+ const Unique<VkFramebuffer> framebuffer (makeFramebuffer (vk, device, *renderPass, m_imageExtent2D, &*colorAttachment));
+ const Unique<VkPipelineLayout> pipelineLayout (makePipelineLayout (vk, device));
+ const Unique<VkPipeline> pipeline (makeGraphicsPipeline (vk, device, *pipelineLayout, *renderPass, *vertModule, *geomModule, *fragModule, m_imageExtent2D, 0u, &m_parameters.streamId));
+ const Unique<VkCommandPool> cmdPool (createCommandPool (vk, device, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, queueFamilyIndex));
+ const Unique<VkCommandBuffer> 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<VkRenderPass> renderPass (makeRenderPass (vk, device, VK_FORMAT_R8G8B8A8_UNORM));
+
+ const Unique<VkShaderModule> vertModule (createShaderModule (vk, device, m_context.getBinaryCollection().get("vert"), 0u));
+ const Unique<VkShaderModule> 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<VkImage> colorImage (makeImage (vk, device, makeImageCreateInfo(0u, VK_IMAGE_TYPE_2D, colorFormat, m_imageExtent2D, 1u, imageUsageFlags)));
+ const UniquePtr<Allocation> colorImageAlloc (bindImage (vk, device, allocator, *colorImage, MemoryRequirement::Any));
+ const Unique<VkImageView> colorAttachment (makeImageView (vk, device, *colorImage, VK_IMAGE_VIEW_TYPE_2D, colorFormat, colorSubresRange));
+ const Unique<VkBuffer> colorBuffer (makeBuffer (vk, device, makeBufferCreateInfo(colorBufferSize, VK_BUFFER_USAGE_TRANSFER_DST_BIT)));
+ const UniquePtr<Allocation> 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<VkBuffer> vertexBuffer (makeBuffer (vk, device, makeBufferCreateInfo(vertexBufferSize, vertexBufferUsage)));
+ const UniquePtr<Allocation> 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<VkBuffer> counterBuffer (makeBuffer (vk, device, makeBufferCreateInfo(counterBufferSize, counterBufferUsage)));
+ const UniquePtr<Allocation> counterBufferAlloc (bindBuffer (vk, device, allocator, *counterBuffer, MemoryRequirement::HostVisible));
+
+ const Unique<VkFramebuffer> framebuffer (makeFramebuffer (vk, device, *renderPass, m_imageExtent2D, &*colorAttachment));
+ const Unique<VkPipelineLayout> pipelineLayout (makePipelineLayout (vk, device));
+ const Unique<VkPipeline> pipeline (makeGraphicsPipeline (vk, device, *pipelineLayout, *renderPass, *vertModule, DE_NULL, *fragModule, m_imageExtent2D, 0u, DE_NULL, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, true));
+ const Unique<VkCommandPool> cmdPool (createCommandPool (vk, device, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, queueFamilyIndex));
+ const Unique<VkCommandBuffer> 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<VkDeviceSize> generateSizesList (const size_t bufBytes, const size_t chunkCount);
+};
+
+TransformFeedbackBackwardDependencyTestInstance::TransformFeedbackBackwardDependencyTestInstance (Context& context, const TestParameters& parameters)
+ : TransformFeedbackTestInstance (context, parameters)
+{
+}
+
+std::vector<VkDeviceSize> TransformFeedbackBackwardDependencyTestInstance::generateSizesList (const size_t bufBytes, const size_t chunkCount)
+{
+ const VkDeviceSize chunkSize = bufBytes / chunkCount;
+ std::vector<VkDeviceSize> 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<VkShaderModule> vertexModule (createShaderModule (vk, device, m_context.getBinaryCollection().get("vert"), 0u));
+ const Unique<VkRenderPass> renderPass (makeRenderPass (vk, device));
+ const Unique<VkFramebuffer> framebuffer (makeFramebuffer (vk, device, *renderPass, m_imageExtent2D, DE_NULL));
+ const Unique<VkPipelineLayout> pipelineLayout (makePipelineLayout (vk, device));
+ const Unique<VkPipeline> pipeline (makeGraphicsPipeline (vk, device, *pipelineLayout, *renderPass, *vertexModule, DE_NULL, DE_NULL, m_imageExtent2D, 0u));
+ const Unique<VkCommandPool> cmdPool (createCommandPool (vk, device, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, queueFamilyIndex));
+ const Unique<VkCommandBuffer> 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<VkBuffer> tfBuf = createBuffer(vk, device, &tfBufCreateInfo);
+ const MovePtr<Allocation> 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<VkBuffer> tfcBuf = createBuffer(vk, device, &tfcBufCreateInfo);
+ const MovePtr<Allocation> 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<VkDeviceSize> chunkSizesList = generateSizesList(m_parameters.bufferSize, m_parameters.partCount);
+ const std::vector<VkDeviceSize> 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<deUint32>(chunkOffsetsList[0] / sizeof(deUint32));
+ const deUint32 numPoints = static_cast<deUint32>(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<deUint32>(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<deUint32>(4 * sizeof(float));
+ const deUint32 numVerticesInBuffer = m_parameters.bufferSize / bytesPerVertex;
+ const deUint32 numVerticesToWrite = numVerticesInBuffer + overflowVertices;
+ const Unique<VkRenderPass> renderPass (makeRenderPass (vk, device, VK_FORMAT_UNDEFINED));
+
+ const Unique<VkShaderModule> vertModule (createShaderModule (vk, device, m_context.getBinaryCollection().get("vert"), 0u));
+ const Unique<VkShaderModule> geomModule (createShaderModule (vk, device, m_context.getBinaryCollection().get("geom"), 0u));
+
+ const Unique<VkFramebuffer> framebuffer (makeFramebuffer (vk, device, *renderPass, m_imageExtent2D, DE_NULL));
+ const Unique<VkPipelineLayout> pipelineLayout (makePipelineLayout (vk, device));
+ const Unique<VkPipeline> pipeline (makeGraphicsPipeline (vk, device, *pipelineLayout, *renderPass, *vertModule, *geomModule, DE_NULL, m_imageExtent2D, 0u));
+ const Unique<VkCommandPool> cmdPool (createCommandPool (vk, device, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, queueFamilyIndex));
+ const Unique<VkCommandBuffer> 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<VkBuffer> tfBuf = createBuffer(vk, device, &tfBufCreateInfo);
+ const MovePtr<Allocation> 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<VkQueryPool> 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<deUint32>(2u * sizeof(deUint32)));
+ std::vector<deUint8> queryData (queryDataSize, 0u);
+ const deUint32* numPrimitivesWritten = reinterpret_cast<deUint32*>(&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<deUint32>(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<deUint32>(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
--- /dev/null
+#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
--- /dev/null
+/*------------------------------------------------------------------------
+ * 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<tcu::TestCaseGroup> transformFeedbackGroup (new tcu::TestCaseGroup(testCtx, "transform_feedback", "Transform Feedback tests"));
+
+ transformFeedbackGroup->addChild(createTransformFeedbackSimpleTests(testCtx));
+ transformFeedbackGroup->addChild(createTransformFeedbackFuzzLayoutTests(testCtx));
+
+ return transformFeedbackGroup.release();
+}
+
+} // TransformFeedback
+} // vkt
--- /dev/null
+#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
VkPhysicalDeviceImagelessFramebufferFeaturesKHR imagelessFramebufferFeatures;
VkPhysicalDeviceCooperativeMatrixFeaturesNV cooperativeMatrixFeatures;
VkPhysicalDeviceHostQueryResetFeaturesEXT hostQueryResetFeatures;
+ VkPhysicalDeviceTransformFeedbackFeaturesEXT transformFeedbackFeatures;
VkPhysicalDevicePerformanceCounterFeaturesKHR performanceCounterFeatures;
DeviceFeatures (const InstanceInterface& vki,
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;
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<VkExtensionProperties> deviceExtensionProperties =
*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);
}
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; }
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(); }
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;
#include "vktAmberExampleTests.hpp"
#include "vktAmberGraphicsFuzzTests.hpp"
#include "vktImagelessFramebufferTests.hpp"
+#include "vktTransformFeedbackTests.hpp"
#include <vector>
#include <sstream>
addChild(cts_amber::createExampleTests (m_testCtx));
addChild(cts_amber::createGraphicsFuzzTests (m_testCtx));
addChild(imageless::createTests (m_testCtx));
+ addChild(TransformFeedback::createTests (m_testCtx));
}
} // vkt
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
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
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,
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,
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
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
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,
+#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"
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))
|| 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); }