diff options
| author | Mark Lobodzinski <mark@lunarg.com> | 2017-03-13 15:10:23 -0600 |
|---|---|---|
| committer | Mark Lobodzinski <mark@lunarg.com> | 2017-03-13 16:02:59 -0600 |
| commit | f81dbf9ed3e4972c7c3f79cf651e9ca046392a0c (patch) | |
| tree | d8844e6f6212ef3ea1abf5dd1cc4bab633454cb8 /layers/core_validation.cpp | |
| parent | 60bf33a652246fbdad453aee5e5bcc890f84db2a (diff) | |
| download | usermoji-f81dbf9ed3e4972c7c3f79cf651e9ca046392a0c.tar.xz | |
layers: Add depthBiasClamp device feature checks
Change-Id: I61e23e3c41a89763c9b65a2b5d7dbf92f015fa24
Diffstat (limited to 'layers/core_validation.cpp')
| -rw-r--r-- | layers/core_validation.cpp | 23 |
1 files changed, 21 insertions, 2 deletions
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::vector<PIPELINE validation_error_map[VALIDATION_ERROR_01455]); } + if (!isDynamic(pPipeline, VK_DYNAMIC_STATE_DEPTH_BIAS) && + (pPipeline->graphicsPipelineCI.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) |
