From f81dbf9ed3e4972c7c3f79cf651e9ca046392a0c Mon Sep 17 00:00:00 2001 From: Mark Lobodzinski Date: Mon, 13 Mar 2017 15:10:23 -0600 Subject: layers: Add depthBiasClamp device feature checks Change-Id: I61e23e3c41a89763c9b65a2b5d7dbf92f015fa24 --- layers/core_validation.cpp | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'layers/core_validation.cpp') diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index aa5f9965..15583a3c 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -3249,6 +3249,16 @@ static bool verifyPipelineCreateState(layer_data *dev_data, std::vectorgraphicsPipelineCI.pRasterizationState->depthBiasClamp != 0.0) && + (!dev_data->enabled_features.depthBiasClamp)) { + skip_call |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, + __LINE__, DRAWSTATE_INVALID_FEATURE, "DS", + "vkCreateGraphicsPipelines(): the depthBiasClamp device feature is disabled: the depthBiasClamp " + "member of the VkPipelineRasterizationStateCreateInfo structure must be set to 0.0 unless the " + "VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state is enabled"); + } + // If rasterization is enabled... if (pPipeline->graphicsPipelineCI.pRasterizationState->rasterizerDiscardEnable == VK_FALSE) { auto subpass_desc = renderPass ? &renderPass->createInfo.pSubpasses[pPipeline->graphicsPipelineCI.subpass] : nullptr; @@ -7157,8 +7167,17 @@ VKAPI_ATTR void VKAPI_CALL CmdSetDepthBias(VkCommandBuffer commandBuffer, float GLOBAL_CB_NODE *pCB = GetCBNode(dev_data, commandBuffer); if (pCB) { skip_call |= ValidateCmd(dev_data, pCB, CMD_SETDEPTHBIASSTATE, "vkCmdSetDepthBias()"); - UpdateCmdBufferLastCmd(pCB, CMD_SETDEPTHBIASSTATE); - pCB->status |= CBSTATUS_DEPTH_BIAS_SET; + if ((depthBiasClamp != 0.0) && (!dev_data->enabled_features.depthBiasClamp)) { + skip_call |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, + __LINE__, VALIDATION_ERROR_01482, "DS", + "vkCmdSetDepthBias(): the depthBiasClamp device feature is disabled: the depthBiasClamp " + "parameter must be set to 0.0. %s", + validation_error_map[VALIDATION_ERROR_01482]); + } + if (!skip_call) { + UpdateCmdBufferLastCmd(pCB, CMD_SETDEPTHBIASSTATE); + pCB->status |= CBSTATUS_DEPTH_BIAS_SET; + } } lock.unlock(); if (!skip_call) -- cgit v1.2.3