layers: Fix getting shader stage spirv
diff --git a/layers/core_checks/cc_shader_interface.cpp b/layers/core_checks/cc_shader_interface.cpp
index a6aa1ed..51c0f84 100644
--- a/layers/core_checks/cc_shader_interface.cpp
+++ b/layers/core_checks/cc_shader_interface.cpp
@@ -647,12 +647,16 @@
for (size_t i = 1; i < pipeline.stage_states.size(); i++) {
const auto &producer = pipeline.stage_states[i - 1];
const auto &consumer = pipeline.stage_states[i];
- assert(producer.spirv_state);
+ const std::shared_ptr<const SPIRV_MODULE_STATE> &producer_spirv =
+ producer.spirv_state ? producer.spirv_state : producer.module_state->spirv;
+ const std::shared_ptr<const SPIRV_MODULE_STATE> &consumer_spirv =
+ consumer.spirv_state ? consumer.spirv_state : consumer.module_state->spirv;
+ assert(producer.module_state);
if (&producer == fragment_stage) {
break;
}
- if (consumer.spirv_state && producer.spirv_state && consumer.entrypoint && producer.entrypoint) {
- skip |= ValidateInterfaceBetweenStages(*producer.spirv_state.get(), *producer.entrypoint, *consumer.spirv_state.get(),
+ if (consumer_spirv && producer_spirv && consumer.entrypoint && producer.entrypoint) {
+ skip |= ValidateInterfaceBetweenStages(*producer_spirv.get(), *producer.entrypoint, *consumer_spirv.get(),
*consumer.entrypoint, pipeline.create_index);
}
}