aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Lobodzinski <mark@lunarg.com>2017-07-25 15:29:36 -0600
committerMark Lobodzinski <mark@lunarg.com>2017-07-26 14:30:46 -0600
commit7db0c095d0a53fe9080f25465759b9d161822d5b (patch)
tree9152622a0d1a622ca4bb03b6a36723d5b606b7f6
parent3a0c72c59bf6d378ea8802c532adb12e3cc4c546 (diff)
downloadusermoji-7db0c095d0a53fe9080f25465759b9d161822d5b.tar.xz
layers: Add new ranged_enum_array val routine
Change-Id: I2b78d90bd248a6800f719ef89c534140cb217ad8
-rw-r--r--layers/parameter_validation_utils.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/layers/parameter_validation_utils.h b/layers/parameter_validation_utils.h
index 29ac542c..a1cbb9af 100644
--- a/layers/parameter_validation_utils.h
+++ b/layers/parameter_validation_utils.h
@@ -715,6 +715,30 @@ static bool validate_ranged_enum_array(debug_report_data *report_data, const cha
return skip_call;
}
+template <typename T>
+static bool validate_ranged_enum_array(debug_report_data *report_data, const char *apiName, const ParameterName &countName,
+ const ParameterName &arrayName, const char *enumName, const std::vector<T> &valid_values,
+ uint32_t count, const T *array, bool countRequired, bool arrayRequired) {
+ bool skip_call = false;
+
+ if ((count == 0) || (array == NULL)) {
+ skip_call |= validate_array(report_data, apiName, countName, arrayName, count, array, countRequired, arrayRequired,
+ VALIDATION_ERROR_UNDEFINED, VALIDATION_ERROR_UNDEFINED);
+ } else {
+ for (uint32_t i = 0; i < count; ++i) {
+ if (std::find(valid_values.begin(), valid_values.end(), array[i]) == valid_values.end()) {
+ skip_call |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0,
+ __LINE__, UNRECOGNIZED_VALUE, LayerName,
+ "%s: value of %s[%d] (%d) does not fall within the begin..end range of the core %s "
+ "enumeration tokens and is not an extension added token",
+ apiName, arrayName.get_name().c_str(), i, array[i], enumName);
+ }
+ }
+ }
+
+ return skip_call;
+}
+
/**
* Verify that a reserved VkFlags value is zero.
*