aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorCamden <camden@lunarg.com>2019-07-26 11:00:09 -0600
committercamden-lunarg <51965765+camden-lunarg@users.noreply.github.com>2019-08-15 09:41:23 -0600
commiteaa86eafba6b833fe2613f8e1eec95b8c3eb970c (patch)
treeb23a147871782597c766cc6219e561d0f8dba9c1 /scripts
parente3d1c8a6a2d8e25b301912d2e5b04c9d93ab99f9 (diff)
downloadvulkan-validation-layers-eaa86eafba6b833fe2613f8e1eec95b8c3eb970c.tar.gz
layers: Setup for Best Practices Val object
Change-Id: I3641e2d69b1f6874c7c6eed70d2690476ac300ef
Diffstat (limited to 'scripts')
-rw-r--r--scripts/layer_chassis_generator.py26
1 files changed, 26 insertions, 0 deletions
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) {