layers: Move parameter validation to layer chassis
Change-Id: I22724f632ca80354ce59fe535979250f65e1c9b6
diff --git a/scripts/layer_chassis_generator.py b/scripts/layer_chassis_generator.py
index d1744dc..8f31fe3 100644
--- a/scripts/layer_chassis_generator.py
+++ b/scripts/layer_chassis_generator.py
@@ -391,6 +391,7 @@
#include "thread_safety.h"
#define OBJECT_LAYER_NAME "VK_LAYER_GOOGLE_threading"
#elif BUILD_PARAMETER_VALIDATION
+#include "stateless_validation.h"
#define OBJECT_LAYER_NAME "VK_LAYER_LUNARG_parameter_validation"
#elif BUILD_CORE_VALIDATION
#define OBJECT_LAYER_NAME "VK_LAYER_LUNARG_core_validation"
@@ -518,6 +519,10 @@
auto thread_checker = new ThreadSafety;
local_object_dispatch.emplace_back(thread_checker);
thread_checker->container_type = LayerObjectTypeThreading;
+#elif BUILD_PARAMETER_VALIDATION
+ auto parameter_validation = new StatelessValidation;
+ local_object_dispatch.emplace_back(parameter_validation);
+ parameter_validation->container_type = LayerObjectTypeParameterValidation;
#endif
@@ -544,8 +549,16 @@
(pCreateInfo->pApplicationInfo ? pCreateInfo->pApplicationInfo->apiVersion : VK_API_VERSION_1_0), pCreateInfo);
#if BUILD_OBJECT_TRACKER
layer_debug_messenger_actions(framework->report_data, framework->logging_messenger, pAllocator, "lunarg_object_tracker");
+ object_tracker->report_data = framework->report_data;
+ object_tracker->api_version = framework->api_version;
#elif BUILD_THREAD_SAFETY
layer_debug_messenger_actions(framework->report_data, framework->logging_messenger, pAllocator, "google_thread_checker");
+ thread_checker->report_data = framework->report_data;
+ thread_checker->api_version = framework->api_version;
+#elif BUILD_PARAMETER_VALIDATION
+ layer_debug_messenger_actions(framework->report_data, framework->logging_messenger, pAllocator, "lunarg_parameter_validation");
+ parameter_validation->report_data = framework->report_data;
+ parameter_validation->api_version = framework->api_version;
#else
layer_debug_messenger_actions(framework->report_data, framework->logging_messenger, pAllocator, "lunarg_unique_objects");
#endif
@@ -659,7 +672,6 @@
device_interceptor->physical_device = gpu;
device_interceptor->instance = instance_interceptor->instance;
device_interceptor->report_data = layer_debug_utils_create_device(instance_interceptor->report_data, *pDevice);
- device_interceptor->api_version = instance_interceptor->api_version;
#if BUILD_OBJECT_TRACKER
// Create child layer objects for this key and add to dispatch vector
@@ -670,6 +682,7 @@
object_tracker->instance = instance_interceptor->instance;
object_tracker->report_data = device_interceptor->report_data;
object_tracker->device_dispatch_table = device_interceptor->device_dispatch_table;
+ object_tracker->api_version = device_interceptor->api_version;
device_interceptor->object_dispatch.emplace_back(object_tracker);
#elif BUILD_THREAD_SAFETY
auto thread_safety = new ThreadSafety;
@@ -679,7 +692,18 @@
thread_safety->instance = instance_interceptor->instance;
thread_safety->report_data = device_interceptor->report_data;
thread_safety->device_dispatch_table = device_interceptor->device_dispatch_table;
+ thread_safety->api_version = device_interceptor->api_version;
device_interceptor->object_dispatch.emplace_back(thread_safety);
+#elif BUILD_PARAMETER_VALIDATION
+ auto stateless_validation = new StatelessValidation;
+ // TODO: Initialize child objects with parent info thru constuctor taking a parent object
+ stateless_validation->container_type = LayerObjectTypeParameterValidation;
+ stateless_validation->physical_device = gpu;
+ stateless_validation->instance = instance_interceptor->instance;
+ stateless_validation->report_data = device_interceptor->report_data;
+ stateless_validation->device_dispatch_table = device_interceptor->device_dispatch_table;
+ stateless_validation->api_version = device_interceptor->api_version;
+ device_interceptor->object_dispatch.emplace_back(stateless_validation);
#endif
for (auto intercept : instance_interceptor->object_dispatch) {