layers: Move PV layer data structs into header

Change-Id: Ie8fb823f1bfa97047cb2d361bc0daea5ee504673
diff --git a/layers/parameter_validation_utils.h b/layers/parameter_validation_utils.h
index 791a7a1..a0f268b 100644
--- a/layers/parameter_validation_utils.h
+++ b/layers/parameter_validation_utils.h
@@ -30,11 +30,43 @@
 #include "vk_enum_string_helper.h"
 #include "vk_layer_logging.h"
 #include "vk_validation_error_messages.h"
+#include "device_extensions.h"
+
 
 #include "parameter_name.h"
 
 namespace parameter_validation {
 
+struct instance_layer_data {
+    VkInstance instance = VK_NULL_HANDLE;
+
+    debug_report_data *report_data = nullptr;
+    std::vector<VkDebugReportCallbackEXT> logging_callback;
+
+    // The following are for keeping track of the temporary callbacks that can
+    // be used in vkCreateInstance and vkDestroyInstance:
+    uint32_t num_tmp_callbacks = 0;
+    VkDebugReportCallbackCreateInfoEXT *tmp_dbg_create_infos = nullptr;
+    VkDebugReportCallbackEXT *tmp_callbacks = nullptr;
+    InstanceExtensions extensions = {};
+    std::unordered_set<std::string> enabled_extensions;
+    VkLayerInstanceDispatchTable dispatch_table = {};
+};
+
+struct layer_data {
+    debug_report_data *report_data = nullptr;
+    // Map for queue family index to queue count
+    std::unordered_map<uint32_t, uint32_t> queueFamilyIndexMap;
+    VkPhysicalDeviceLimits device_limits = {};
+    VkPhysicalDeviceFeatures physical_device_features = {};
+    VkPhysicalDevice physical_device = VK_NULL_HANDLE;
+    VkDevice device = VK_NULL_HANDLE;
+    DeviceExtensions enables;
+    std::unordered_set<std::string> enabled_extensions;
+
+    VkLayerDispatchTable dispatch_table = {};
+};
+
 enum ErrorCode {
     NONE,                   // Used for INFO & other non-error messages
     INVALID_USAGE,          // The value of a parameter is not consistent