layers: Move patchControlPoints validation
Move pTessellationState->patchControlPoints checks to parameter
validation where they will only be executed if the pipeline contains
tessellation stages.
Change-Id: I271f915625995f4a54045d0abe63ce27b9e023f9
diff --git a/layers/parameter_validation.cpp b/layers/parameter_validation.cpp
index d9cd7f7..301fb40 100644
--- a/layers/parameter_validation.cpp
+++ b/layers/parameter_validation.cpp
@@ -2961,6 +2961,19 @@
"be VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO. %s",
i, validation_error_map[VALIDATION_ERROR_00538]);
}
+
+ if (pCreateInfos[i].pTessellationState->patchControlPoints == 0 ||
+ pCreateInfos[i].pTessellationState->patchControlPoints >
+ device_data->device_limits.maxTessellationPatchSize) {
+ skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0,
+ __LINE__, VALIDATION_ERROR_01426, LayerName,
+ "vkCreateGraphicsPipelines: invalid parameter "
+ "pCreateInfos[%d].pTessellationState->patchControlPoints value %u. patchControlPoints "
+ "should be >0 and <=%u. %s",
+ i, pCreateInfos[i].pTessellationState->patchControlPoints,
+ device_data->device_limits.maxTessellationPatchSize,
+ validation_error_map[VALIDATION_ERROR_01426]);
+ }
}
}
}