layers: Add sType VUIDs to Parameter Validation

- Updated validation check to accept VUID
- Modified PV codegen to calculate VUIDs for sType checks
- Modified PV codegen to verify VUIDs are valid enums before using
- Updated error database for 65 new VUIDs covered

Change-Id: Ia964822d5a12db0da9c8b425e0ccb72d1bd550a8
diff --git a/layers/parameter_validation_utils.h b/layers/parameter_validation_utils.h
index c1d4b4d..679c050 100644
--- a/layers/parameter_validation_utils.h
+++ b/layers/parameter_validation_utils.h
@@ -280,7 +280,8 @@
  */
 template <typename T>
 bool validate_struct_type(debug_report_data *report_data, const char *apiName, const ParameterName &parameterName,
-                          const char *sTypeName, const T *value, VkStructureType sType, bool required) {
+                          const char *sTypeName, const T *value, VkStructureType sType, bool required,
+                          UNIQUE_VALIDATION_ERROR_CODE vuid) {
     bool skip_call = false;
 
     if (value == NULL) {
@@ -290,9 +291,9 @@
                                  parameterName.get_name().c_str());
         }
     } else if (value->sType != sType) {
-        skip_call |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__,
-                             INVALID_STRUCT_STYPE, LayerName, "%s: parameter %s->sType must be %s", apiName,
-                             parameterName.get_name().c_str(), sTypeName);
+        skip_call |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, vuid,
+                             LayerName, "%s: parameter %s->sType must be %s. %s", apiName, parameterName.get_name().c_str(),
+                             sTypeName, validation_error_map[vuid]);
     }
 
     return skip_call;