aboutsummaryrefslogtreecommitdiff
path: root/layers/core_validation.cpp
diff options
context:
space:
mode:
authorChris Forbes <chrisforbes@google.com>2017-06-19 17:21:50 -0700
committerChris Forbes <chrisf@ijw.co.nz>2017-06-20 10:41:20 -0700
commit15a45e38a9b8c235d963a308680c8dc324d027d0 (patch)
treee09984c11e7fd16098405d3383ce825f89944a9e /layers/core_validation.cpp
parent1826cd929ccf4e92f0cf24bb3c030ccfe8432d25 (diff)
downloadusermoji-15a45e38a9b8c235d963a308680c8dc324d027d0.tar.xz
layers: Avoid renderpass lookup in verifyPipelineCreateState
Diffstat (limited to 'layers/core_validation.cpp')
-rw-r--r--layers/core_validation.cpp11
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,