From 7db0c095d0a53fe9080f25465759b9d161822d5b Mon Sep 17 00:00:00 2001 From: Mark Lobodzinski Date: Tue, 25 Jul 2017 15:29:36 -0600 Subject: layers: Add new ranged_enum_array val routine Change-Id: I2b78d90bd248a6800f719ef89c534140cb217ad8 --- layers/parameter_validation_utils.h | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) 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 +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 &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. * -- cgit v1.2.3