aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Zulauf <jzulauf@lunarg.com>2018-04-02 10:55:18 -0600
committerjzulauf-lunarg <32470354+jzulauf-lunarg@users.noreply.github.com>2018-04-03 16:35:29 -0600
commit4da0da044a455eb21ba4a73bd3c314f536de969d (patch)
treeacdc72da6221da3441ebc9b2697c60fb19d50d05
parent856d773b0e67e13848defe49109300315527ea0f (diff)
downloadusermoji-4da0da044a455eb21ba4a73bd3c314f536de969d.tar.xz
loader: Eliminate duplicate validation messages
Layer version mismatch validation messages were being generated multiple times for each mismatching layer. Eliminated duplicate error messages and fixed formatting issues. Change-Id: Iffc5ff94f70fefc075b74764ae87a6593143f503
-rw-r--r--loader/loader.c35
1 files changed, 21 insertions, 14 deletions
diff --git a/loader/loader.c b/loader/loader.c
index 266222f3..80d363b5 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -26,6 +26,7 @@
*/
#define _GNU_SOURCE
+#include <inttypes.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
@@ -1397,8 +1398,6 @@ void loader_destroy_layer_list(const struct loader_instance *inst, struct loader
VkResult loader_add_to_layer_list(const struct loader_instance *inst, struct loader_layer_list *list, uint32_t prop_list_count,
const struct loader_layer_properties *props) {
uint32_t i;
- uint16_t layer_api_major_version;
- uint16_t layer_api_minor_version;
struct loader_layer_properties *layer;
if (list->list == NULL || list->capacity == 0) {
@@ -1429,18 +1428,6 @@ VkResult loader_add_to_layer_list(const struct loader_instance *inst, struct loa
list->capacity = new_capacity;
}
- // Verify that the layer api version is at least that of the application's request, if not, throw a warning since
- // undefined behavior could occur.
- layer_api_major_version = VK_VERSION_MAJOR(props[i].info.specVersion);
- layer_api_minor_version = VK_VERSION_MINOR(props[i].info.specVersion);
- if (inst->app_api_major_version > layer_api_major_version ||
- (inst->app_api_major_version == layer_api_major_version && inst->app_api_minor_version > layer_api_minor_version)) {
- loader_log(
- inst, VK_DEBUG_REPORT_WARNING_BIT_EXT, 0,
- "loader_add_to_layer_list: Explicit layer %s is using an old API version %d.%d versus application requested %d.%d",
- props[i].info.layerName, layer_api_major_version, layer_api_minor_version, inst->app_api_major_version,- inst->app_api_minor_version);
- }
-
memcpy(&list->list[list->count], layer, sizeof(struct loader_layer_properties));
list->count++;
}
@@ -4538,6 +4525,10 @@ out:
VkResult loader_enable_instance_layers(struct loader_instance *inst, const VkInstanceCreateInfo *pCreateInfo,
const struct loader_layer_list *instance_layers) {
VkResult err;
+ uint16_t layer_api_major_version;
+ uint16_t layer_api_minor_version;
+ uint32_t i;
+ struct loader_layer_properties *prop;
assert(inst && "Cannot have null instance");
@@ -4566,6 +4557,22 @@ VkResult loader_enable_instance_layers(struct loader_instance *inst, const VkIns
err = loader_add_layer_names_to_list(inst, &inst->app_activated_layer_list, &inst->expanded_activated_layer_list,
pCreateInfo->enabledLayerCount, pCreateInfo->ppEnabledLayerNames, instance_layers);
+ for (i = 0; i < inst->expanded_activated_layer_list.count; i++) {
+ // Verify that the layer api version is at least that of the application's request, if not, throw a warning since
+ // undefined behavior could occur.
+ prop = inst->expanded_activated_layer_list.list + i;
+ layer_api_major_version = VK_VERSION_MAJOR(prop->info.specVersion);
+ layer_api_minor_version = VK_VERSION_MINOR(prop->info.specVersion);
+ if (inst->app_api_major_version > layer_api_major_version ||
+ (inst->app_api_major_version == layer_api_major_version && inst->app_api_minor_version > layer_api_minor_version)) {
+ loader_log(inst, VK_DEBUG_REPORT_WARNING_BIT_EXT, 0,
+ "loader_add_to_layer_list: Explicit layer %s is using an old API version %" PRIu16 ".%" PRIu16
+ " versus application requested %" PRIu16 ".%" PRIu16,
+ prop->info.layerName, layer_api_major_version, layer_api_minor_version, inst->app_api_major_version,
+ inst->app_api_minor_version);
+ }
+ }
+
return err;
}