diff options
| author | Mark Lobodzinski <mark@lunarg.com> | 2017-07-25 15:29:36 -0600 |
|---|---|---|
| committer | Mark Lobodzinski <mark@lunarg.com> | 2017-07-26 14:30:46 -0600 |
| commit | 7db0c095d0a53fe9080f25465759b9d161822d5b (patch) | |
| tree | 9152622a0d1a622ca4bb03b6a36723d5b606b7f6 | |
| parent | 3a0c72c59bf6d378ea8802c532adb12e3cc4c546 (diff) | |
| download | usermoji-7db0c095d0a53fe9080f25465759b9d161822d5b.tar.xz | |
layers: Add new ranged_enum_array val routine
Change-Id: I2b78d90bd248a6800f719ef89c534140cb217ad8
| -rw-r--r-- | layers/parameter_validation_utils.h | 24 |
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. * |
