aboutsummaryrefslogtreecommitdiff
path: root/layers/core_validation.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'layers/core_validation.cpp')
-rw-r--r--layers/core_validation.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp
index 0f49d207..c3768da6 100644
--- a/layers/core_validation.cpp
+++ b/layers/core_validation.cpp
@@ -3133,6 +3133,17 @@ static bool verifyPipelineCreateState(layer_data *my_data, const VkDevice device
if (!validate_and_capture_pipeline_shader_state(my_data, pPipeline)) {
skipCall = true;
}
+ // Each shader's stage must be unique
+ if (pPipeline->duplicate_shaders) {
+ for (uint32_t stage = VK_SHADER_STAGE_VERTEX_BIT; stage & VK_SHADER_STAGE_ALL_GRAPHICS; stage <<= 1) {
+ if (pPipeline->duplicate_shaders & stage) {
+ skipCall |= log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VkDebugReportObjectTypeEXT(0), 0,
+ __LINE__, DRAWSTATE_INVALID_PIPELINE_CREATE_STATE, "DS",
+ "Invalid Pipeline CreateInfo State: Multiple shaders provided for stage %s",
+ string_VkShaderStageFlagBits(VkShaderStageFlagBits(stage)));
+ }
+ }
+ }
// VS is required
if (!(pPipeline->active_shaders & VK_SHADER_STAGE_VERTEX_BIT)) {
skipCall |=