Check for depthBounds support in shader builtin frag depth tests Depth bounds testing was enabled without checking for feature support in a couple of tests. With this change, tests that don't need this feature leave it disabled, whereas other tests (currently only dEQP-VK.glsl.builtin_var.fragdepth.*) now throw NotSupported when the device doesn't support it. Affects: dEQP-VK.clipping.* dEQP-VK.glsl.builtin_var.* Components: Vulkan VK-GL-CTS issue: 685 Change-Id: I44d94142e295ff135ad1a55d0d6e212b65994257
diff --git a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderBuiltinVarTests.cpp b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderBuiltinVarTests.cpp index e7d75fa..eaedb30 100644 --- a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderBuiltinVarTests.cpp +++ b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderBuiltinVarTests.cpp
@@ -789,6 +789,7 @@ drawState.compareOp = rr::TESTFUNC_ALWAYS; drawState.depthTestEnable = true; drawState.depthWriteEnable = true; + drawState.depthBoundsTestEnable = true; drawState.sampleShadingEnable = true; vulkanProgram.depthImageView = *depthImageView; vulkanProgram.descriptorSetLayout = *descriptorSetLayout;
diff --git a/external/vulkancts/modules/vulkan/vktDrawUtil.cpp b/external/vulkancts/modules/vulkan/vktDrawUtil.cpp index ecf66bd..2325f54 100644 --- a/external/vulkancts/modules/vulkan/vktDrawUtil.cpp +++ b/external/vulkancts/modules/vulkan/vktDrawUtil.cpp
@@ -312,6 +312,7 @@ , depthTestEnable (false) , depthWriteEnable (false) , compareOp (rr::TESTFUNC_LESS) + , depthBoundsTestEnable (false) , blendEnable (false) , lineWidth (1.0) , numPatchControlPoints (0) @@ -653,6 +654,9 @@ 0u, // write mask 0u); // reference + if (m_drawState.depthBoundsTestEnable && context.getDeviceFeatures().depthBounds) + TCU_THROW(NotSupportedError, "depthBounds not supported"); + const VkPipelineDepthStencilStateCreateInfo pipelineDepthStencilStateInfo = { VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO, // VkStructureType sType; @@ -661,7 +665,7 @@ m_drawState.depthTestEnable, // VkBool32 depthTestEnable; m_drawState.depthWriteEnable, // VkBool32 depthWriteEnable; mapCompareOp(m_drawState.compareOp), // VkCompareOp depthCompareOp; - VK_TRUE, // VkBool32 depthBoundsTestEnable; + m_drawState.depthBoundsTestEnable, // VkBool32 depthBoundsTestEnable VK_FALSE, // VkBool32 stencilTestEnable; stencilOpState, // VkStencilOpState front; stencilOpState, // VkStencilOpState back;
diff --git a/external/vulkancts/modules/vulkan/vktDrawUtil.hpp b/external/vulkancts/modules/vulkan/vktDrawUtil.hpp index 8ea74b8..adda78b 100644 --- a/external/vulkancts/modules/vulkan/vktDrawUtil.hpp +++ b/external/vulkancts/modules/vulkan/vktDrawUtil.hpp
@@ -50,6 +50,7 @@ bool depthTestEnable; bool depthWriteEnable; rr::TestFunc compareOp; + bool depthBoundsTestEnable; bool blendEnable; float lineWidth; deUint32 numPatchControlPoints;