layers: Complain about subpass mismatch between CB and pipeline
authorChris Forbes <chrisforbes@google.com>
Wed, 28 Sep 2016 02:19:39 +0000 (15:19 +1300)
committerChris Forbes <chrisforbes@google.com>
Thu, 29 Sep 2016 20:38:13 +0000 (09:38 +1300)
Fixes #933.

Signed-off-by: Chris Forbes <chrisforbes@google.com>
layers/core_validation.cpp

index a513989..b8eaa2c 100644 (file)
@@ -3180,6 +3180,14 @@ static bool validatePipelineDrawtimeState(layer_data const *my_data,
                         reinterpret_cast<uint64_t &>(pCB->activeRenderPass->renderPass), reinterpret_cast<uint64_t &>(pPipeline),
                         reinterpret_cast<const uint64_t &>(pPipeline->graphicsPipelineCI.renderPass), err_string.c_str());
         }
+
+        if (pPipeline->graphicsPipelineCI.subpass != pCB->activeSubpass) {
+            skip_call |=
+                log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT,
+                        reinterpret_cast<uint64_t const &>(pPipeline->pipeline), __LINE__, DRAWSTATE_RENDERPASS_INCOMPATIBLE, "DS",
+                        "Pipeline was built for subpass %u but used in subpass %u", pPipeline->graphicsPipelineCI.subpass,
+                        pCB->activeSubpass);
+        }
     }
     // TODO : Add more checks here