dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.patch_control_points
dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.topology_triangle
dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.topology_line
+dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.topology_patch
dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.topology_triangle_geom
dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.topology_line_geom
+dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.topology_patch_geom
dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.2_viewports
dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.1_full_viewport
dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.2_viewports_switch
dEQP-VK.pipeline.extended_dynamic_state.before_draw.patch_control_points
dEQP-VK.pipeline.extended_dynamic_state.before_draw.topology_triangle
dEQP-VK.pipeline.extended_dynamic_state.before_draw.topology_line
+dEQP-VK.pipeline.extended_dynamic_state.before_draw.topology_patch
dEQP-VK.pipeline.extended_dynamic_state.before_draw.topology_triangle_geom
dEQP-VK.pipeline.extended_dynamic_state.before_draw.topology_line_geom
+dEQP-VK.pipeline.extended_dynamic_state.before_draw.topology_patch_geom
dEQP-VK.pipeline.extended_dynamic_state.before_draw.2_viewports
dEQP-VK.pipeline.extended_dynamic_state.before_draw.1_full_viewport
dEQP-VK.pipeline.extended_dynamic_state.before_draw.2_viewports_switch
dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.patch_control_points
dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.topology_triangle
dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.topology_line
+dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.topology_patch
dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.topology_triangle_geom
dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.topology_line_geom
+dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.topology_patch_geom
dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.2_viewports
dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.1_full_viewport
dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.2_viewports_switch
dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.patch_control_points
dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.topology_triangle
dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.topology_line
+dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.topology_patch
dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.topology_triangle_geom
dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.topology_line_geom
+dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.topology_patch_geom
dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.2_viewports
dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.1_full_viewport
dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.2_viewports_switch
dEQP-VK.pipeline.extended_dynamic_state.before_good_static.patch_control_points
dEQP-VK.pipeline.extended_dynamic_state.before_good_static.topology_triangle
dEQP-VK.pipeline.extended_dynamic_state.before_good_static.topology_line
+dEQP-VK.pipeline.extended_dynamic_state.before_good_static.topology_patch
dEQP-VK.pipeline.extended_dynamic_state.before_good_static.topology_triangle_geom
dEQP-VK.pipeline.extended_dynamic_state.before_good_static.topology_line_geom
+dEQP-VK.pipeline.extended_dynamic_state.before_good_static.topology_patch_geom
dEQP-VK.pipeline.extended_dynamic_state.before_good_static.2_viewports
dEQP-VK.pipeline.extended_dynamic_state.before_good_static.1_full_viewport
dEQP-VK.pipeline.extended_dynamic_state.before_good_static.2_viewports_switch
dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.patch_control_points
dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.topology_triangle
dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.topology_line
+dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.topology_patch
dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.topology_triangle_geom
dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.topology_line_geom
+dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.topology_patch_geom
dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.2_viewports
dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.1_full_viewport
dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.2_viewports_switch
dEQP-VK.pipeline.extended_dynamic_state.two_draws_static.patch_control_points
dEQP-VK.pipeline.extended_dynamic_state.two_draws_static.topology_triangle
dEQP-VK.pipeline.extended_dynamic_state.two_draws_static.topology_line
+dEQP-VK.pipeline.extended_dynamic_state.two_draws_static.topology_patch
dEQP-VK.pipeline.extended_dynamic_state.two_draws_static.topology_triangle_geom
dEQP-VK.pipeline.extended_dynamic_state.two_draws_static.topology_line_geom
+dEQP-VK.pipeline.extended_dynamic_state.two_draws_static.topology_patch_geom
dEQP-VK.pipeline.extended_dynamic_state.two_draws_static.2_viewports
dEQP-VK.pipeline.extended_dynamic_state.two_draws_static.1_full_viewport
dEQP-VK.pipeline.extended_dynamic_state.two_draws_static.2_viewports_switch
dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.patch_control_points
dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.topology_triangle
dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.topology_line
+dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.topology_patch
dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.topology_triangle_geom
dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.topology_line_geom
+dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.topology_patch_geom
dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.2_viewports
dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.1_full_viewport
dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.2_viewports_switch
dEQP-VK.pipeline.extended_dynamic_state.before_draw.patch_control_points
dEQP-VK.pipeline.extended_dynamic_state.before_draw.topology_triangle
dEQP-VK.pipeline.extended_dynamic_state.before_draw.topology_line
+dEQP-VK.pipeline.extended_dynamic_state.before_draw.topology_patch
dEQP-VK.pipeline.extended_dynamic_state.before_draw.topology_triangle_geom
dEQP-VK.pipeline.extended_dynamic_state.before_draw.topology_line_geom
+dEQP-VK.pipeline.extended_dynamic_state.before_draw.topology_patch_geom
dEQP-VK.pipeline.extended_dynamic_state.before_draw.2_viewports
dEQP-VK.pipeline.extended_dynamic_state.before_draw.1_full_viewport
dEQP-VK.pipeline.extended_dynamic_state.before_draw.2_viewports_switch
dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.patch_control_points
dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.topology_triangle
dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.topology_line
+dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.topology_patch
dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.topology_triangle_geom
dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.topology_line_geom
+dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.topology_patch_geom
dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.2_viewports
dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.1_full_viewport
dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.2_viewports_switch
dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.patch_control_points
dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.topology_triangle
dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.topology_line
+dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.topology_patch
dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.topology_triangle_geom
dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.topology_line_geom
+dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.topology_patch_geom
dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.2_viewports
dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.1_full_viewport
dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.2_viewports_switch
dEQP-VK.pipeline.extended_dynamic_state.before_good_static.patch_control_points
dEQP-VK.pipeline.extended_dynamic_state.before_good_static.topology_triangle
dEQP-VK.pipeline.extended_dynamic_state.before_good_static.topology_line
+dEQP-VK.pipeline.extended_dynamic_state.before_good_static.topology_patch
dEQP-VK.pipeline.extended_dynamic_state.before_good_static.topology_triangle_geom
dEQP-VK.pipeline.extended_dynamic_state.before_good_static.topology_line_geom
+dEQP-VK.pipeline.extended_dynamic_state.before_good_static.topology_patch_geom
dEQP-VK.pipeline.extended_dynamic_state.before_good_static.2_viewports
dEQP-VK.pipeline.extended_dynamic_state.before_good_static.1_full_viewport
dEQP-VK.pipeline.extended_dynamic_state.before_good_static.2_viewports_switch
dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.patch_control_points
dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.topology_triangle
dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.topology_line
+dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.topology_patch
dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.topology_triangle_geom
dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.topology_line_geom
+dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.topology_patch_geom
dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.2_viewports
dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.1_full_viewport
dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.2_viewports_switch
dEQP-VK.pipeline.extended_dynamic_state.two_draws_static.patch_control_points
dEQP-VK.pipeline.extended_dynamic_state.two_draws_static.topology_triangle
dEQP-VK.pipeline.extended_dynamic_state.two_draws_static.topology_line
+dEQP-VK.pipeline.extended_dynamic_state.two_draws_static.topology_patch
dEQP-VK.pipeline.extended_dynamic_state.two_draws_static.topology_triangle_geom
dEQP-VK.pipeline.extended_dynamic_state.two_draws_static.topology_line_geom
+dEQP-VK.pipeline.extended_dynamic_state.two_draws_static.topology_patch_geom
dEQP-VK.pipeline.extended_dynamic_state.two_draws_static.2_viewports
dEQP-VK.pipeline.extended_dynamic_state.two_draws_static.1_full_viewport
dEQP-VK.pipeline.extended_dynamic_state.two_draws_static.2_viewports_switch
return getVertexWithPaddingGenerator();
}
+enum class TopologyClass
+{
+ POINT,
+ LINE,
+ TRIANGLE,
+ PATCH,
+ INVALID,
+};
+
+std::string topologyClassName (TopologyClass tclass)
+{
+ switch (tclass)
+ {
+ case TopologyClass::POINT: return "point";
+ case TopologyClass::LINE: return "line";
+ case TopologyClass::TRIANGLE: return "triangle";
+ case TopologyClass::PATCH: return "patch";
+ default:
+ break;
+ }
+
+ DE_ASSERT(false);
+ return "";
+}
+
+TopologyClass getTopologyClass (vk::VkPrimitiveTopology topology)
+{
+ switch (topology)
+ {
+ case vk::VK_PRIMITIVE_TOPOLOGY_POINT_LIST:
+ return TopologyClass::POINT;
+ case vk::VK_PRIMITIVE_TOPOLOGY_LINE_LIST:
+ case vk::VK_PRIMITIVE_TOPOLOGY_LINE_STRIP:
+ case vk::VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY:
+ case vk::VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY:
+ return TopologyClass::LINE;
+ case vk::VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST:
+ case vk::VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP:
+ case vk::VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN:
+ case vk::VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY:
+ case vk::VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY:
+ return TopologyClass::TRIANGLE;
+ case vk::VK_PRIMITIVE_TOPOLOGY_PATCH_LIST:
+ return TopologyClass::PATCH;
+ default:
+ break;
+ }
+
+ DE_ASSERT(false);
+ return TopologyClass::INVALID;
+}
+
struct TestConfig
{
// Main sequence ordering.
, rastDiscardEnableConfig (false)
, primRestartEnableConfig (false)
, logicOpConfig (vk::VK_LOGIC_OP_CLEAR)
- , patchControlPointsConfig (1)
+ , patchControlPointsConfig (1u)
, m_swappedValues (false)
{
}
return ((vertexGenerator.dynamicValue && m_swappedValues) ? vertexGenerator.dynamicValue.get() : vertexGenerator.staticValue);
}
+ // Get the active number of patch control points according to the test config.
+ deUint32 getActivePatchControlPoints () const
+ {
+ return ((patchControlPointsConfig.dynamicValue && !m_swappedValues) ? patchControlPointsConfig.dynamicValue.get() : patchControlPointsConfig.staticValue);
+ }
+
// Returns true if there is more than one viewport.
bool isMultiViewport () const
{
return static_cast<bool>(patchControlPointsConfig.dynamicValue);
}
+ // Returns true if the topology class is patches for tessellation.
+ bool patchesTopology () const
+ {
+ return (getTopologyClass(topologyConfig.staticValue) == TopologyClass::PATCH);
+ }
+
// Returns true if the test needs tessellation shaders.
bool needsTessellation () const
{
- return testPatchControlPoints();
+ return (testPatchControlPoints() || patchesTopology());
}
// Returns true if the test needs an index buffer.
dst.compareOp = src.compareOp;
}
-enum class TopologyClass
-{
- POINT,
- LINE,
- TRIANGLE,
- PATCH,
- INVALID,
-};
-
-std::string topologyClassName (TopologyClass tclass)
-{
- switch (tclass)
- {
- case TopologyClass::POINT: return "point";
- case TopologyClass::LINE: return "line";
- case TopologyClass::TRIANGLE: return "triangle";
- case TopologyClass::PATCH: return "patch";
- default:
- break;
- }
-
- DE_ASSERT(false);
- return "";
-}
-
-TopologyClass getTopologyClass (vk::VkPrimitiveTopology topology)
-{
- switch (topology)
- {
- case vk::VK_PRIMITIVE_TOPOLOGY_POINT_LIST:
- return TopologyClass::POINT;
- case vk::VK_PRIMITIVE_TOPOLOGY_LINE_LIST:
- case vk::VK_PRIMITIVE_TOPOLOGY_LINE_STRIP:
- case vk::VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY:
- case vk::VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY:
- return TopologyClass::LINE;
- case vk::VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST:
- case vk::VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP:
- case vk::VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN:
- case vk::VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY:
- case vk::VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY:
- return TopologyClass::TRIANGLE;
- case vk::VK_PRIMITIVE_TOPOLOGY_PATCH_LIST:
- return TopologyClass::PATCH;
- default:
- break;
- }
-
- DE_ASSERT(false);
- return TopologyClass::INVALID;
-}
-
class ExtendedDynamicStateTest : public vkt::TestCase
{
public:
// Supported topology classes for these tests.
DE_ASSERT(staticTopologyClass == TopologyClass::LINE || staticTopologyClass == TopologyClass::TRIANGLE
|| staticTopologyClass == TopologyClass::PATCH);
+
+ // Make sure these are consistent.
+ DE_ASSERT(!(m_testConfig.testPatchControlPoints() && !m_testConfig.patchesTopology()));
+ DE_ASSERT(!(m_testConfig.patchesTopology() && m_testConfig.getActivePatchControlPoints() <= 1u));
}
void ExtendedDynamicStateTest::checkSupport (Context& context) const
<< "in gl_PerVertex\n"
<< "{\n"
<< " vec4 gl_Position;\n"
- << "} gl_in[];\n"
+ << "} gl_in[gl_MaxPatchVertices];\n"
+ << "out gl_PerVertex\n"
+ << "{\n"
+ << " vec4 gl_Position;\n"
+ << "} gl_out[];\n"
<< "void main() {\n"
<< " gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;\n"
<< " gl_TessLevelOuter[0] = 3.0;\n"
<< "#version 450\n"
<< "#extension GL_EXT_tessellation_shader : require\n"
<< "layout(triangles) in;\n"
+ << "in gl_PerVertex\n"
+ << "{\n"
+ << " vec4 gl_Position;\n"
+ << "} gl_in[gl_MaxPatchVertices];\n"
+ << "out gl_PerVertex\n"
+ << "{\n"
+ << " vec4 gl_Position;\n"
+ << "};\n"
<< "void main() {\n"
<< " gl_Position = (gl_in[0].gl_Position * gl_TessCoord.x + \n"
<< " gl_in[1].gl_Position * gl_TessCoord.y + \n"
}
else if (topologyClass == TopologyClass::PATCH)
{
+ DE_ASSERT(m_testConfig.getActivePatchControlPoints() > 1u);
+
// 2 triangles making a quad
vertices.reserve(6u);
vertices.push_back(tcu::Vec2(-1.0f, 1.0f));
TestConfig config(kOrdering);
config.rastDiscardEnableConfig.staticValue = true;
config.rastDiscardEnableConfig.dynamicValue = tcu::just(false);
- config.referenceColor = SingleColorGenerator(kDefaultTriangleColor);
orderingGroup->addChild(new ExtendedDynamicStateTest(testCtx, "enable_raster", "Dynamically enable rasterizer", config));
}
TestConfig config(kOrdering);
config.primRestartEnableConfig.staticValue = false;
config.primRestartEnableConfig.dynamicValue = tcu::just(true);
- config.referenceColor = SingleColorGenerator(kDefaultTriangleColor);
orderingGroup->addChild(new ExtendedDynamicStateTest(testCtx, "prim_restart_enable", "Dynamically enable primitiveRestart", config));
}
config.topologyConfig.staticValue = vk::VK_PRIMITIVE_TOPOLOGY_PATCH_LIST;
config.patchControlPointsConfig.staticValue = 1;
config.patchControlPointsConfig.dynamicValue = 3;
- config.referenceColor = SingleColorGenerator(kDefaultTriangleColor);
orderingGroup->addChild(new ExtendedDynamicStateTest(testCtx, "patch_control_points", "Dynamically change patch control points", config));
}
{
{ vk::VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, vk::VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN },
{ vk::VK_PRIMITIVE_TOPOLOGY_LINE_LIST, vk::VK_PRIMITIVE_TOPOLOGY_LINE_STRIP },
+ { vk::VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, vk::VK_PRIMITIVE_TOPOLOGY_PATCH_LIST },
};
for (const auto& kTopologyCase : kTopologyCases)
{
TestConfig config(baseConfig);
- config.forceGeometryShader = forceGeometryShader;
- config.topologyConfig.staticValue = kTopologyCase.staticVal;
- config.topologyConfig.dynamicValue = tcu::just<vk::VkPrimitiveTopology>(kTopologyCase.dynamicVal);
+ config.forceGeometryShader = forceGeometryShader;
+ config.topologyConfig.staticValue = kTopologyCase.staticVal;
+ config.topologyConfig.dynamicValue = tcu::just<vk::VkPrimitiveTopology>(kTopologyCase.dynamicVal);
+ config.patchControlPointsConfig.staticValue = (config.needsTessellation() ? 3u : 1u);
const std::string className = topologyClassName(getTopologyClass(config.topologyConfig.staticValue));
const std::string name = "topology_" + className + (forceGeometryShader ? "_geom" : "");
TestConfig config(kOrdering);
config.depthTestEnableConfig.staticValue = true;
config.depthTestEnableConfig.dynamicValue = tcu::just(false);
- config.referenceColor = SingleColorGenerator(kDefaultTriangleColor);
orderingGroup->addChild(new ExtendedDynamicStateTest(testCtx, "depth_test_disable", "Dynamically disable depth test", config));
}
TestConfig config = baseConfig;
config.depthBoundsTestEnableConfig.staticValue = true;
config.depthBoundsTestEnableConfig.dynamicValue = tcu::just(false);
- config.referenceColor = SingleColorGenerator(kDefaultTriangleColor);
orderingGroup->addChild(new ExtendedDynamicStateTest(testCtx, "depth_bounds_test_disable", "Dynamically disable the depth bounds test", config));
}
}
config.stencilTestEnableConfig.staticValue = true;
config.stencilTestEnableConfig.dynamicValue = tcu::just(false);
config.stencilOpConfig.staticValue.front().compareOp = vk::VK_COMPARE_OP_NEVER;
- config.referenceColor = SingleColorGenerator(kDefaultTriangleColor);
orderingGroup->addChild(new ExtendedDynamicStateTest(testCtx, "stencil_test_disable", "Dynamically disable the stencil test", config));
}
dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.patch_control_points
dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.topology_triangle
dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.topology_line
+dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.topology_patch
dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.topology_triangle_geom
dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.topology_line_geom
+dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.topology_patch_geom
dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.2_viewports
dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.1_full_viewport
dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.2_viewports_switch
dEQP-VK.pipeline.extended_dynamic_state.before_draw.patch_control_points
dEQP-VK.pipeline.extended_dynamic_state.before_draw.topology_triangle
dEQP-VK.pipeline.extended_dynamic_state.before_draw.topology_line
+dEQP-VK.pipeline.extended_dynamic_state.before_draw.topology_patch
dEQP-VK.pipeline.extended_dynamic_state.before_draw.topology_triangle_geom
dEQP-VK.pipeline.extended_dynamic_state.before_draw.topology_line_geom
+dEQP-VK.pipeline.extended_dynamic_state.before_draw.topology_patch_geom
dEQP-VK.pipeline.extended_dynamic_state.before_draw.2_viewports
dEQP-VK.pipeline.extended_dynamic_state.before_draw.1_full_viewport
dEQP-VK.pipeline.extended_dynamic_state.before_draw.2_viewports_switch
dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.patch_control_points
dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.topology_triangle
dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.topology_line
+dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.topology_patch
dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.topology_triangle_geom
dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.topology_line_geom
+dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.topology_patch_geom
dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.2_viewports
dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.1_full_viewport
dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.2_viewports_switch
dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.patch_control_points
dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.topology_triangle
dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.topology_line
+dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.topology_patch
dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.topology_triangle_geom
dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.topology_line_geom
+dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.topology_patch_geom
dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.2_viewports
dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.1_full_viewport
dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.2_viewports_switch
dEQP-VK.pipeline.extended_dynamic_state.before_good_static.patch_control_points
dEQP-VK.pipeline.extended_dynamic_state.before_good_static.topology_triangle
dEQP-VK.pipeline.extended_dynamic_state.before_good_static.topology_line
+dEQP-VK.pipeline.extended_dynamic_state.before_good_static.topology_patch
dEQP-VK.pipeline.extended_dynamic_state.before_good_static.topology_triangle_geom
dEQP-VK.pipeline.extended_dynamic_state.before_good_static.topology_line_geom
+dEQP-VK.pipeline.extended_dynamic_state.before_good_static.topology_patch_geom
dEQP-VK.pipeline.extended_dynamic_state.before_good_static.2_viewports
dEQP-VK.pipeline.extended_dynamic_state.before_good_static.1_full_viewport
dEQP-VK.pipeline.extended_dynamic_state.before_good_static.2_viewports_switch
dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.patch_control_points
dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.topology_triangle
dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.topology_line
+dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.topology_patch
dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.topology_triangle_geom
dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.topology_line_geom
+dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.topology_patch_geom
dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.2_viewports
dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.1_full_viewport
dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.2_viewports_switch
dEQP-VK.pipeline.extended_dynamic_state.two_draws_static.patch_control_points
dEQP-VK.pipeline.extended_dynamic_state.two_draws_static.topology_triangle
dEQP-VK.pipeline.extended_dynamic_state.two_draws_static.topology_line
+dEQP-VK.pipeline.extended_dynamic_state.two_draws_static.topology_patch
dEQP-VK.pipeline.extended_dynamic_state.two_draws_static.topology_triangle_geom
dEQP-VK.pipeline.extended_dynamic_state.two_draws_static.topology_line_geom
+dEQP-VK.pipeline.extended_dynamic_state.two_draws_static.topology_patch_geom
dEQP-VK.pipeline.extended_dynamic_state.two_draws_static.2_viewports
dEQP-VK.pipeline.extended_dynamic_state.two_draws_static.1_full_viewport
dEQP-VK.pipeline.extended_dynamic_state.two_draws_static.2_viewports_switch