dEQP-VK.rasterization.line_continuity.polygon-mode-lines
dEQP-VK.rasterization.frag_side_effects.color_at_beginning.kill
dEQP-VK.rasterization.frag_side_effects.color_at_beginning.demote
+dEQP-VK.rasterization.frag_side_effects.color_at_beginning.terminate_invocation
dEQP-VK.rasterization.frag_side_effects.color_at_beginning.sample_mask_before
dEQP-VK.rasterization.frag_side_effects.color_at_beginning.sample_mask_after
dEQP-VK.rasterization.frag_side_effects.color_at_beginning.stencil_never
dEQP-VK.rasterization.frag_side_effects.color_at_beginning.depth_bounds
dEQP-VK.rasterization.frag_side_effects.color_at_end.kill
dEQP-VK.rasterization.frag_side_effects.color_at_end.demote
+dEQP-VK.rasterization.frag_side_effects.color_at_end.terminate_invocation
dEQP-VK.rasterization.frag_side_effects.color_at_end.sample_mask_before
dEQP-VK.rasterization.frag_side_effects.color_at_end.sample_mask_after
dEQP-VK.rasterization.frag_side_effects.color_at_end.stencil_never
dEQP-VK.rasterization.line_continuity.polygon-mode-lines
dEQP-VK.rasterization.frag_side_effects.color_at_beginning.kill
dEQP-VK.rasterization.frag_side_effects.color_at_beginning.demote
+dEQP-VK.rasterization.frag_side_effects.color_at_beginning.terminate_invocation
dEQP-VK.rasterization.frag_side_effects.color_at_beginning.sample_mask_before
dEQP-VK.rasterization.frag_side_effects.color_at_beginning.sample_mask_after
dEQP-VK.rasterization.frag_side_effects.color_at_beginning.stencil_never
dEQP-VK.rasterization.frag_side_effects.color_at_beginning.depth_bounds
dEQP-VK.rasterization.frag_side_effects.color_at_end.kill
dEQP-VK.rasterization.frag_side_effects.color_at_end.demote
+dEQP-VK.rasterization.frag_side_effects.color_at_end.terminate_invocation
dEQP-VK.rasterization.frag_side_effects.color_at_end.sample_mask_before
dEQP-VK.rasterization.frag_side_effects.color_at_end.sample_mask_after
dEQP-VK.rasterization.frag_side_effects.color_at_end.stencil_never
{
KILL,
DEMOTE,
+ TERMINATE_INVOCATION,
SAMPLE_MASK_BEFORE,
SAMPLE_MASK_AFTER,
ALPHA_COVERAGE_BEFORE,
{
context.requireDeviceFunctionality("VK_EXT_shader_demote_to_helper_invocation");
}
+ else if (m_params.caseType == CaseType::TERMINATE_INVOCATION)
+ {
+ context.requireDeviceFunctionality("VK_KHR_shader_terminate_invocation");
+ }
const auto colorFormatProperties = vk::getPhysicalDeviceFormatProperties(vki, physicalDevice, kColorFormat);
if ((colorFormatProperties.optimalTilingFeatures & kNeededColorFeatures) != kNeededColorFeatures)
headers << "#extension GL_EXT_demote_to_helper_invocation : enable\n";
after << " demote;\n";
break;
+ case CaseType::TERMINATE_INVOCATION:
+ headers << "#extension GL_EXT_terminate_invocation : enable\n";
+ after << " terminateInvocation;\n";
+ break;
case CaseType::SAMPLE_MASK_BEFORE:
before << " gl_SampleMask[0] = 0;\n";
break;
colorOrderGroup->addChild(new FragSideEffectsTestCase(testCtx, "demote", "OpDemoteToHelperInvocation after SSBO write", params));
}
{
+ TestParams params(CaseType::TERMINATE_INVOCATION, kDefaultClearColor, kDefaultDrawColor, colorAtEnd, kDefaultDepthBoundsParams);
+ colorOrderGroup->addChild(new FragSideEffectsTestCase(testCtx, "terminate_invocation", "OpTerminateInvocation after SSBO write", params));
+ }
+ {
TestParams params(CaseType::SAMPLE_MASK_BEFORE, kDefaultClearColor, kDefaultDrawColor, colorAtEnd, kDefaultDepthBoundsParams);
colorOrderGroup->addChild(new FragSideEffectsTestCase(testCtx, "sample_mask_before", "Set sample mask to zero before SSBO write", params));
}
dEQP-VK.rasterization.line_continuity.polygon-mode-lines
dEQP-VK.rasterization.frag_side_effects.color_at_beginning.kill
dEQP-VK.rasterization.frag_side_effects.color_at_beginning.demote
+dEQP-VK.rasterization.frag_side_effects.color_at_beginning.terminate_invocation
dEQP-VK.rasterization.frag_side_effects.color_at_beginning.sample_mask_before
dEQP-VK.rasterization.frag_side_effects.color_at_beginning.sample_mask_after
dEQP-VK.rasterization.frag_side_effects.color_at_beginning.stencil_never
dEQP-VK.rasterization.frag_side_effects.color_at_beginning.depth_bounds
dEQP-VK.rasterization.frag_side_effects.color_at_end.kill
dEQP-VK.rasterization.frag_side_effects.color_at_end.demote
+dEQP-VK.rasterization.frag_side_effects.color_at_end.terminate_invocation
dEQP-VK.rasterization.frag_side_effects.color_at_end.sample_mask_before
dEQP-VK.rasterization.frag_side_effects.color_at_end.sample_mask_after
dEQP-VK.rasterization.frag_side_effects.color_at_end.stencil_never