diff options
| author | Chris Forbes <chrisforbes@google.com> | 2017-06-19 17:21:50 -0700 |
|---|---|---|
| committer | Chris Forbes <chrisf@ijw.co.nz> | 2017-06-20 10:41:20 -0700 |
| commit | 15a45e38a9b8c235d963a308680c8dc324d027d0 (patch) | |
| tree | e09984c11e7fd16098405d3383ce825f89944a9e /layers/core_validation.cpp | |
| parent | 1826cd929ccf4e92f0cf24bb3c030ccfe8432d25 (diff) | |
| download | usermoji-15a45e38a9b8c235d963a308680c8dc324d027d0.tar.xz | |
layers: Avoid renderpass lookup in verifyPipelineCreateState
Diffstat (limited to 'layers/core_validation.cpp')
| -rw-r--r-- | layers/core_validation.cpp | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index a1670504..d7e05915 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -1218,20 +1218,19 @@ static bool verifyPipelineCreateState(layer_data *dev_data, std::vector<PIPELINE // Ensure the subpass index is valid. If not, then validate_and_capture_pipeline_shader_state // produces nonsense errors that confuse users. Other layers should already // emit errors for renderpass being invalid. - auto renderPass = GetRenderPassState(dev_data, pPipeline->graphicsPipelineCI.renderPass); - if (renderPass && pPipeline->graphicsPipelineCI.subpass >= renderPass->createInfo.subpassCount) { + auto subpass_desc = &pPipeline->render_pass_ci.pSubpasses[pPipeline->graphicsPipelineCI.subpass]; + if (pPipeline->graphicsPipelineCI.subpass >= pPipeline->render_pass_ci.subpassCount) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, HandleToUint64(pPipeline->pipeline), __LINE__, VALIDATION_ERROR_096005ee, "DS", "Invalid Pipeline CreateInfo State: Subpass index %u " "is out of range for this renderpass (0..%u). %s", - pPipeline->graphicsPipelineCI.subpass, renderPass->createInfo.subpassCount - 1, + pPipeline->graphicsPipelineCI.subpass, pPipeline->render_pass_ci.subpassCount - 1, validation_error_map[VALIDATION_ERROR_096005ee]); + subpass_desc = nullptr; } if (pPipeline->graphicsPipelineCI.pColorBlendState != NULL) { const safe_VkPipelineColorBlendStateCreateInfo *color_blend_state = pPipeline->graphicsPipelineCI.pColorBlendState; - auto const render_pass_info = GetRenderPassState(dev_data, pPipeline->graphicsPipelineCI.renderPass)->createInfo.ptr(); - const VkSubpassDescription *subpass_desc = &render_pass_info->pSubpasses[pPipeline->graphicsPipelineCI.subpass]; if (color_blend_state->attachmentCount != subpass_desc->colorAttachmentCount) { skip |= log_msg( dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, @@ -1368,8 +1367,6 @@ static bool verifyPipelineCreateState(layer_data *dev_data, std::vector<PIPELINE // If rasterization is enabled... if (pPipeline->graphicsPipelineCI.pRasterizationState->rasterizerDiscardEnable == VK_FALSE) { - auto subpass_desc = renderPass ? &renderPass->createInfo.pSubpasses[pPipeline->graphicsPipelineCI.subpass] : nullptr; - if ((pPipeline->graphicsPipelineCI.pMultisampleState->alphaToOneEnable == VK_TRUE) && (!dev_data->enabled_features.alphaToOne)) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, |
