From beb70dfe0776a61688de68b37d5673de414a8542 Mon Sep 17 00:00:00 2001 From: Boris Zanin Date: Wed, 13 Feb 2019 19:31:25 +0100 Subject: [PATCH] Add Transform Feedback tests for builtin variables Tests driver ability to output builtin variables into XFB buffer. Add tests: * dEQP-VK.transform_feedback.simple.xfb_* Components: vulkan VK-GL-CTS issue: 1350 Change-Id: I8f18cbfcf0895510a07f092634727764b929cc3b (cherry picked from commit 2943705658104b349e7cfc9f039fb1b26c5a793e) --- android/cts/master/vk-master.txt | 48 +++++++ .../vulkancts/framework/vulkan/vkShaderToSpirV.cpp | 2 +- .../vktTransformFeedbackSimpleTests.cpp | 157 ++++++++++++++++++++- .../mustpass/1.1.5/vk-default-no-waivers.txt | 48 +++++++ external/vulkancts/mustpass/1.1.5/vk-default.txt | 48 +++++++ 5 files changed, 300 insertions(+), 3 deletions(-) diff --git a/android/cts/master/vk-master.txt b/android/cts/master/vk-master.txt index bb2024d..792d5a5 100755 --- a/android/cts/master/vk-master.txt +++ b/android/cts/master/vk-master.txt @@ -415487,6 +415487,54 @@ 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.xfb_pointsize_1_256 +dEQP-VK.transform_feedback.simple.xfb_pointsize_1_512 +dEQP-VK.transform_feedback.simple.xfb_pointsize_1_131072 +dEQP-VK.transform_feedback.simple.xfb_pointsize_2_256 +dEQP-VK.transform_feedback.simple.xfb_pointsize_2_512 +dEQP-VK.transform_feedback.simple.xfb_pointsize_2_131072 +dEQP-VK.transform_feedback.simple.xfb_pointsize_4_256 +dEQP-VK.transform_feedback.simple.xfb_pointsize_4_512 +dEQP-VK.transform_feedback.simple.xfb_pointsize_4_131072 +dEQP-VK.transform_feedback.simple.xfb_pointsize_8_256 +dEQP-VK.transform_feedback.simple.xfb_pointsize_8_512 +dEQP-VK.transform_feedback.simple.xfb_pointsize_8_131072 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_1_256 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_1_512 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_1_131072 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_2_256 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_2_512 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_2_131072 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_4_256 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_4_512 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_4_131072 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_8_256 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_8_512 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_8_131072 +dEQP-VK.transform_feedback.simple.xfb_culldistance_1_256 +dEQP-VK.transform_feedback.simple.xfb_culldistance_1_512 +dEQP-VK.transform_feedback.simple.xfb_culldistance_1_131072 +dEQP-VK.transform_feedback.simple.xfb_culldistance_2_256 +dEQP-VK.transform_feedback.simple.xfb_culldistance_2_512 +dEQP-VK.transform_feedback.simple.xfb_culldistance_2_131072 +dEQP-VK.transform_feedback.simple.xfb_culldistance_4_256 +dEQP-VK.transform_feedback.simple.xfb_culldistance_4_512 +dEQP-VK.transform_feedback.simple.xfb_culldistance_4_131072 +dEQP-VK.transform_feedback.simple.xfb_culldistance_8_256 +dEQP-VK.transform_feedback.simple.xfb_culldistance_8_512 +dEQP-VK.transform_feedback.simple.xfb_culldistance_8_131072 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_1_256 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_1_512 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_1_131072 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_2_256 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_2_512 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_2_131072 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_4_256 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_4_512 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_4_131072 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_8_256 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_8_512 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_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 diff --git a/external/vulkancts/framework/vulkan/vkShaderToSpirV.cpp b/external/vulkancts/framework/vulkan/vkShaderToSpirV.cpp index 4828b33..3486ab8 100644 --- a/external/vulkancts/framework/vulkan/vkShaderToSpirV.cpp +++ b/external/vulkancts/framework/vulkan/vkShaderToSpirV.cpp @@ -184,7 +184,7 @@ void getDefaultBuiltInResources (TBuiltInResource* builtin) builtin->maxFragmentAtomicCounterBuffers = 1; builtin->maxCombinedAtomicCounterBuffers = 1; builtin->maxAtomicCounterBufferSize = 16384; - builtin->maxTransformFeedbackBuffers = 4; + builtin->maxTransformFeedbackBuffers = 8; builtin->maxTransformFeedbackInterleavedComponents = 16382; builtin->maxCullDistances = 8; builtin->maxCombinedClipAndCullDistances = 8; diff --git a/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackSimpleTests.cpp b/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackSimpleTests.cpp index 890d59e..e832ce5 100644 --- a/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackSimpleTests.cpp +++ b/external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackSimpleTests.cpp @@ -62,6 +62,10 @@ enum TestType TEST_TYPE_BASIC, TEST_TYPE_RESUME, TEST_TYPE_STREAMS, + TEST_TYPE_XFB_POINTSIZE, + TEST_TYPE_XFB_CLIPDISTANCE, + TEST_TYPE_XFB_CULLDISTANCE, + TEST_TYPE_XFB_CLIP_AND_CULL, TEST_TYPE_STREAMS_POINTSIZE, TEST_TYPE_STREAMS_CLIPDISTANCE, TEST_TYPE_STREAMS_CULLDISTANCE, @@ -752,6 +756,104 @@ tcu::TestStatus TransformFeedbackResumeTestInstance::iterate (void) return tcu::TestStatus::pass("Pass"); } +class TransformFeedbackBuiltinTestInstance : public TransformFeedbackTestInstance +{ +public: + TransformFeedbackBuiltinTestInstance (Context& context, const TestParameters& parameters); + +protected: + tcu::TestStatus iterate (void); + void verifyTransformFeedbackBuffer (const MovePtr& bufAlloc, const VkDeviceSize offset, const deUint32 bufBytes); +}; + +TransformFeedbackBuiltinTestInstance::TransformFeedbackBuiltinTestInstance (Context& context, const TestParameters& parameters) + : TransformFeedbackTestInstance (context, parameters) +{ + const deUint32 tfBuffersSupported = m_transformFeedbackProperties.maxTransformFeedbackBuffers; + const deUint32 tfBuffersRequired = m_parameters.partCount; + + if (tfBuffersSupported < tfBuffersRequired) + TCU_THROW(NotSupportedError, std::string("maxTransformFeedbackBuffers=" + de::toString(tfBuffersSupported) + ", while test requires " + de::toString(tfBuffersRequired)).c_str()); +} + +void TransformFeedbackBuiltinTestInstance::verifyTransformFeedbackBuffer (const MovePtr& bufAlloc, const VkDeviceSize offset, const deUint32 bufBytes) +{ + const DeviceInterface& vk = m_context.getDeviceInterface(); + const VkDevice device = m_context.getDevice(); + + invalidateMappedMemoryRange(vk, device, bufAlloc->getMemory(), bufAlloc->getOffset(), VK_WHOLE_SIZE); + + const deUint32 numPoints = static_cast(bufBytes / sizeof(float)); + const deUint8* tfDataBytes = (deUint8*)bufAlloc->getHostPtr(); + const float* tfData = (float*)&tfDataBytes[offset]; + + for (deUint32 i = 0; i < numPoints; ++i) + { + const deUint32 divisor = 32768u; + const float epsilon = 1.0f / float(divisor); + const float expected = float(i) / float(divisor); + + if (deAbs(tfData[i] - expected) > epsilon) + TCU_FAIL(std::string("Failed at item ") + de::toString(i) + " received:" + de::toString(tfData[i]) + " expected:" + de::toString(expected)); + } +} + +tcu::TestStatus TransformFeedbackBuiltinTestInstance::iterate (void) +{ + const DeviceInterface& vk = m_context.getDeviceInterface(); + const VkDevice device = m_context.getDevice(); + const deUint32 queueFamilyIndex = m_context.getUniversalQueueFamilyIndex(); + const VkQueue queue = m_context.getUniversalQueue(); + Allocator& allocator = m_context.getDefaultAllocator(); + + const Unique vertexModule (createShaderModule (vk, device, m_context.getBinaryCollection().get("vert"), 0u)); + const Unique renderPass (makeRenderPass (vk, device, VK_FORMAT_UNDEFINED)); + const Unique framebuffer (makeFramebuffer (vk, device, *renderPass, m_imageExtent2D, DE_NULL)); + const Unique pipelineLayout (makePipelineLayout (vk, device)); + const Unique pipeline (makeGraphicsPipeline (vk, device, *pipelineLayout, *renderPass, *vertexModule, DE_NULL, DE_NULL, m_imageExtent2D, 0u)); + const Unique cmdPool (createCommandPool (vk, device, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, queueFamilyIndex)); + const Unique cmdBuffer (allocateCommandBuffer (vk, device, *cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY)); + + const VkDeviceSize tfBufSize = m_parameters.bufferSize * m_parameters.partCount; + const VkBufferCreateInfo tfBufCreateInfo = makeBufferCreateInfo(tfBufSize, VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT); + const Move tfBuf = createBuffer(vk, device, &tfBufCreateInfo); + const std::vector tfBufArray = std::vector(m_parameters.partCount, *tfBuf); + const MovePtr tfBufAllocation = allocator.allocate(getBufferMemoryRequirements(vk, device, *tfBuf), MemoryRequirement::HostVisible); + const std::vector tfBufBindingSizes = std::vector(m_parameters.partCount, m_parameters.bufferSize); + const std::vector tfBufBindingOffsets = generateOffsetsList(tfBufBindingSizes); + const deUint32 perVertexDataSize = (m_parameters.testType == TEST_TYPE_XFB_POINTSIZE) ? static_cast(sizeof(float)) + : (m_parameters.testType == TEST_TYPE_XFB_CLIPDISTANCE) ? static_cast(8u * sizeof(float)) + : (m_parameters.testType == TEST_TYPE_XFB_CULLDISTANCE) ? static_cast(8u * sizeof(float)) + : (m_parameters.testType == TEST_TYPE_XFB_CLIP_AND_CULL) ? static_cast(6u * sizeof(float)) + : 0u; + const deUint32 numPoints = m_parameters.bufferSize / perVertexDataSize; + + 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, 0, m_parameters.partCount, &tfBufArray[0], &tfBufBindingOffsets[0], &tfBufBindingSizes[0]); + + 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, tfBufBindingOffsets[m_parameters.partCount - 1], numPoints * perVertexDataSize); + + return tcu::TestStatus::pass("Pass"); +} + class TransformFeedbackMultistreamTestInstance : public TransformFeedbackTestInstance { public: @@ -1441,6 +1543,18 @@ vkt::TestInstance* TransformFeedbackTestCase::createInstance (vkt::Context& cont if (m_parameters.testType == TEST_TYPE_RESUME) return new TransformFeedbackResumeTestInstance(context, m_parameters); + if (m_parameters.testType == TEST_TYPE_XFB_POINTSIZE) + return new TransformFeedbackBuiltinTestInstance(context, m_parameters); + + if (m_parameters.testType == TEST_TYPE_XFB_CLIPDISTANCE) + return new TransformFeedbackBuiltinTestInstance(context, m_parameters); + + if (m_parameters.testType == TEST_TYPE_XFB_CULLDISTANCE) + return new TransformFeedbackBuiltinTestInstance(context, m_parameters); + + if (m_parameters.testType == TEST_TYPE_XFB_CLIP_AND_CULL) + return new TransformFeedbackBuiltinTestInstance(context, m_parameters); + if (m_parameters.testType == TEST_TYPE_STREAMS) return new TransformFeedbackStreamsTestInstance(context, m_parameters); @@ -1474,6 +1588,10 @@ void TransformFeedbackTestCase::initPrograms (SourceCollections& programCollecti || m_parameters.testType == TEST_TYPE_STREAMS_POINTSIZE || m_parameters.testType == TEST_TYPE_STREAMS_CULLDISTANCE || m_parameters.testType == TEST_TYPE_STREAMS_CLIPDISTANCE; + const bool xfbBuiltinPipeline = m_parameters.testType == TEST_TYPE_XFB_POINTSIZE + || m_parameters.testType == TEST_TYPE_XFB_CLIPDISTANCE + || m_parameters.testType == TEST_TYPE_XFB_CULLDISTANCE + || m_parameters.testType == TEST_TYPE_XFB_CLIP_AND_CULL; if (m_parameters.testType == TEST_TYPE_BASIC || m_parameters.testType == TEST_TYPE_RESUME || m_parameters.testType == TEST_TYPE_BACKWARD_DEPENDENCY) { @@ -1500,6 +1618,41 @@ void TransformFeedbackTestCase::initPrograms (SourceCollections& programCollecti return; } + if (xfbBuiltinPipeline) + { + const std::string outputBuiltIn = (m_parameters.testType == TEST_TYPE_XFB_POINTSIZE) ? "float gl_PointSize;\n" + : (m_parameters.testType == TEST_TYPE_XFB_CLIPDISTANCE) ? "float gl_ClipDistance[8];\n" + : (m_parameters.testType == TEST_TYPE_XFB_CULLDISTANCE) ? "float gl_CullDistance[8];\n" + : (m_parameters.testType == TEST_TYPE_XFB_CLIP_AND_CULL) ? "float gl_CullDistance[5];\nfloat gl_ClipDistance[1];\n" + : ""; + const std::string operationBuiltIn = (m_parameters.testType == TEST_TYPE_XFB_POINTSIZE) ? "gl_PointSize = float(gl_VertexIndex) / 32768.0f;" + : (m_parameters.testType == TEST_TYPE_XFB_CLIPDISTANCE) ? "for (int i=0; i<8; i++) gl_ClipDistance[i] = float(8 * gl_VertexIndex + i) / 32768.0f;" + : (m_parameters.testType == TEST_TYPE_XFB_CULLDISTANCE) ? "for (int i=0; i<8; i++) gl_CullDistance[i] = float(8 * gl_VertexIndex + i) / 32768.0f;" + : (m_parameters.testType == TEST_TYPE_XFB_CLIP_AND_CULL) ? "for (int i=0; i<5; i++) gl_CullDistance[i] = float(6 * gl_VertexIndex + i) / 32768.0f;\n" + "gl_ClipDistance[0] = float(6 * gl_VertexIndex + 5) / 32768.0f;\n" + : ""; + + // Vertex shader + { + std::ostringstream src; + src << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450) << "\n" + << "\n" + << "layout(xfb_buffer = " << m_parameters.partCount - 1 << ", xfb_offset = 0) out gl_PerVertex\n" + << "{\n" + << outputBuiltIn + << "};\n" + << "\n" + << "void main(void)\n" + << "{\n" + << operationBuiltIn + << "}\n"; + + programCollection.glslSources.add("vert") << glu::VertexSource(src.str()); + } + + return; + } + if (m_parameters.testType == TEST_TYPE_MULTISTREAMS) { // vertex shader @@ -1821,8 +1974,8 @@ 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" }; + const TestType testTypes[] = { TEST_TYPE_BASIC, TEST_TYPE_RESUME, TEST_TYPE_XFB_POINTSIZE, TEST_TYPE_XFB_CLIPDISTANCE, TEST_TYPE_XFB_CULLDISTANCE, TEST_TYPE_XFB_CLIP_AND_CULL }; + const std::string testTypeNames[] = { "basic", "resume", "xfb_pointsize", "xfb_clipdistance", "xfb_culldistance", "xfb_clip_and_cull" }; for (deUint32 testTypesNdx = 0; testTypesNdx < DE_LENGTH_OF_ARRAY(testTypes); ++testTypesNdx) { diff --git a/external/vulkancts/mustpass/1.1.5/vk-default-no-waivers.txt b/external/vulkancts/mustpass/1.1.5/vk-default-no-waivers.txt index bacd138..673838b 100644 --- a/external/vulkancts/mustpass/1.1.5/vk-default-no-waivers.txt +++ b/external/vulkancts/mustpass/1.1.5/vk-default-no-waivers.txt @@ -415960,6 +415960,54 @@ 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.xfb_pointsize_1_256 +dEQP-VK.transform_feedback.simple.xfb_pointsize_1_512 +dEQP-VK.transform_feedback.simple.xfb_pointsize_1_131072 +dEQP-VK.transform_feedback.simple.xfb_pointsize_2_256 +dEQP-VK.transform_feedback.simple.xfb_pointsize_2_512 +dEQP-VK.transform_feedback.simple.xfb_pointsize_2_131072 +dEQP-VK.transform_feedback.simple.xfb_pointsize_4_256 +dEQP-VK.transform_feedback.simple.xfb_pointsize_4_512 +dEQP-VK.transform_feedback.simple.xfb_pointsize_4_131072 +dEQP-VK.transform_feedback.simple.xfb_pointsize_8_256 +dEQP-VK.transform_feedback.simple.xfb_pointsize_8_512 +dEQP-VK.transform_feedback.simple.xfb_pointsize_8_131072 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_1_256 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_1_512 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_1_131072 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_2_256 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_2_512 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_2_131072 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_4_256 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_4_512 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_4_131072 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_8_256 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_8_512 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_8_131072 +dEQP-VK.transform_feedback.simple.xfb_culldistance_1_256 +dEQP-VK.transform_feedback.simple.xfb_culldistance_1_512 +dEQP-VK.transform_feedback.simple.xfb_culldistance_1_131072 +dEQP-VK.transform_feedback.simple.xfb_culldistance_2_256 +dEQP-VK.transform_feedback.simple.xfb_culldistance_2_512 +dEQP-VK.transform_feedback.simple.xfb_culldistance_2_131072 +dEQP-VK.transform_feedback.simple.xfb_culldistance_4_256 +dEQP-VK.transform_feedback.simple.xfb_culldistance_4_512 +dEQP-VK.transform_feedback.simple.xfb_culldistance_4_131072 +dEQP-VK.transform_feedback.simple.xfb_culldistance_8_256 +dEQP-VK.transform_feedback.simple.xfb_culldistance_8_512 +dEQP-VK.transform_feedback.simple.xfb_culldistance_8_131072 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_1_256 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_1_512 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_1_131072 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_2_256 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_2_512 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_2_131072 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_4_256 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_4_512 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_4_131072 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_8_256 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_8_512 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_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 diff --git a/external/vulkancts/mustpass/1.1.5/vk-default.txt b/external/vulkancts/mustpass/1.1.5/vk-default.txt index de2f877..85cd041 100644 --- a/external/vulkancts/mustpass/1.1.5/vk-default.txt +++ b/external/vulkancts/mustpass/1.1.5/vk-default.txt @@ -415921,6 +415921,54 @@ 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.xfb_pointsize_1_256 +dEQP-VK.transform_feedback.simple.xfb_pointsize_1_512 +dEQP-VK.transform_feedback.simple.xfb_pointsize_1_131072 +dEQP-VK.transform_feedback.simple.xfb_pointsize_2_256 +dEQP-VK.transform_feedback.simple.xfb_pointsize_2_512 +dEQP-VK.transform_feedback.simple.xfb_pointsize_2_131072 +dEQP-VK.transform_feedback.simple.xfb_pointsize_4_256 +dEQP-VK.transform_feedback.simple.xfb_pointsize_4_512 +dEQP-VK.transform_feedback.simple.xfb_pointsize_4_131072 +dEQP-VK.transform_feedback.simple.xfb_pointsize_8_256 +dEQP-VK.transform_feedback.simple.xfb_pointsize_8_512 +dEQP-VK.transform_feedback.simple.xfb_pointsize_8_131072 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_1_256 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_1_512 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_1_131072 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_2_256 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_2_512 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_2_131072 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_4_256 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_4_512 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_4_131072 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_8_256 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_8_512 +dEQP-VK.transform_feedback.simple.xfb_clipdistance_8_131072 +dEQP-VK.transform_feedback.simple.xfb_culldistance_1_256 +dEQP-VK.transform_feedback.simple.xfb_culldistance_1_512 +dEQP-VK.transform_feedback.simple.xfb_culldistance_1_131072 +dEQP-VK.transform_feedback.simple.xfb_culldistance_2_256 +dEQP-VK.transform_feedback.simple.xfb_culldistance_2_512 +dEQP-VK.transform_feedback.simple.xfb_culldistance_2_131072 +dEQP-VK.transform_feedback.simple.xfb_culldistance_4_256 +dEQP-VK.transform_feedback.simple.xfb_culldistance_4_512 +dEQP-VK.transform_feedback.simple.xfb_culldistance_4_131072 +dEQP-VK.transform_feedback.simple.xfb_culldistance_8_256 +dEQP-VK.transform_feedback.simple.xfb_culldistance_8_512 +dEQP-VK.transform_feedback.simple.xfb_culldistance_8_131072 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_1_256 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_1_512 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_1_131072 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_2_256 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_2_512 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_2_131072 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_4_256 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_4_512 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_4_131072 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_8_256 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_8_512 +dEQP-VK.transform_feedback.simple.xfb_clip_and_cull_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 -- 2.7.4