From eaa86eafba6b833fe2613f8e1eec95b8c3eb970c Mon Sep 17 00:00:00 2001 From: Camden Date: Fri, 26 Jul 2019 11:00:09 -0600 Subject: layers: Setup for Best Practices Val object Change-Id: I3641e2d69b1f6874c7c6eed70d2690476ac300ef --- scripts/layer_chassis_generator.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'scripts') diff --git a/scripts/layer_chassis_generator.py b/scripts/layer_chassis_generator.py index bc53398ef..1b6e9d998 100644 --- a/scripts/layer_chassis_generator.py +++ b/scripts/layer_chassis_generator.py @@ -239,6 +239,7 @@ enum LayerObjectTypeId { LayerObjectTypeParameterValidation, // Instance or device parameter validation layer object LayerObjectTypeObjectTracker, // Instance or device object tracker layer object LayerObjectTypeCoreValidation, // Instance or device core validation layer object + LayerObjectTypeBestPractices, // Instance or device best practices layer object }; struct TEMPLATE_STATE { @@ -289,6 +290,7 @@ struct CHECK_DISABLED { struct CHECK_ENABLED { bool gpu_validation; bool gpu_validation_reserve_binding_slot; + bool best_practices; void SetAll(bool value) { std::fill(&gpu_validation, &gpu_validation_reserve_binding_slot + 1, value); } }; @@ -475,6 +477,9 @@ bool wrap_handles = false; #if BUILD_CORE_VALIDATION #include "core_validation.h" #endif +#if BUILD_BEST_PRACTICES +#include "best_practices.h" +#endif namespace vulkan_layer_chassis { @@ -840,6 +845,14 @@ VKAPI_ATTR VkResult VKAPI_CALL CreateInstance(const VkInstanceCreateInfo *pCreat core_checks->container_type = LayerObjectTypeCoreValidation; core_checks->api_version = api_version; #endif +#if BUILD_BEST_PRACTICES + auto best_practices = new BestPractices; + if (local_enables.best_practices) { + local_object_dispatch.emplace_back(best_practices); + } + best_practices->container_type = LayerObjectTypeBestPractices; + best_practices->api_version = api_version; +#endif // If handle wrapping is disabled via the ValidationFeatures extension, override build flag if (local_disables.handle_wrapping) { @@ -899,6 +912,12 @@ VKAPI_ATTR VkResult VKAPI_CALL CreateInstance(const VkInstanceCreateInfo *pCreat core_checks->disabled = framework->disabled; core_checks->instance_state = core_checks; #endif +#if BUILD_BEST_PRACTICES + best_practices->report_data = framework->report_data; + best_practices->instance_dispatch_table = framework->instance_dispatch_table; + best_practices->enabled = framework->enabled; + best_practices->disabled = framework->disabled; +#endif for (auto intercept : framework->object_dispatch) { intercept->PostCallRecordCreateInstance(pCreateInfo, pAllocator, pInstance, result); @@ -1039,6 +1058,13 @@ VKAPI_ATTR VkResult VKAPI_CALL CreateDevice(VkPhysicalDevice gpu, const VkDevice device_interceptor->object_dispatch.emplace_back(core_checks); } #endif +#if BUILD_BEST_PRACTICES + auto best_practices = new BestPractices; + best_practices->container_type = LayerObjectTypeBestPractices; + if (instance_interceptor->enabled.best_practices) { + device_interceptor->object_dispatch.emplace_back(best_practices); + } +#endif // Set per-intercept common data items for (auto dev_intercept : device_interceptor->object_dispatch) { -- cgit v1.2.3