layers: Add constructors for layer_data
diff --git a/layers/device_limits.cpp b/layers/device_limits.cpp
index 30e57d4..37ad695 100644
--- a/layers/device_limits.cpp
+++ b/layers/device_limits.cpp
@@ -52,11 +52,16 @@
#include "vk_layer_extension_utils.h"
#include "vk_layer_utils.h"
-typedef struct _layer_data {
+struct layer_data {
debug_report_data *report_data;
// TODO: put instance data here
VkDbgMsgCallback logging_callback;
-} layer_data;
+
+ layer_data() :
+ report_data(nullptr),
+ logging_callback(nullptr)
+ {};
+};
static std::unordered_map<void *, layer_data *> layer_data_map;
static device_table_map device_limits_device_table_map;
diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp
index 915b940..5a6d121 100644
--- a/layers/draw_state.cpp
+++ b/layers/draw_state.cpp
@@ -50,11 +50,16 @@
#include "vk_layer_logging.h"
#include "vk_layer_extension_utils.h"
-typedef struct _layer_data {
+struct layer_data {
debug_report_data *report_data;
// TODO: put instance data here
VkDbgMsgCallback logging_callback;
-} layer_data;
+
+ layer_data() :
+ report_data(nullptr),
+ logging_callback(nullptr)
+ {};
+};
static std::unordered_map<void *, layer_data *> layer_data_map;
static device_table_map draw_state_device_table_map;
diff --git a/layers/image.cpp b/layers/image.cpp
index c3ff045..d58f1a7 100644
--- a/layers/image.cpp
+++ b/layers/image.cpp
@@ -46,12 +46,18 @@
using namespace std;
-typedef struct _layer_data {
+struct layer_data {
debug_report_data *report_data;
VkDbgMsgCallback logging_callback;
VkPhysicalDevice physicalDevice;
unordered_map<uint64_t, unique_ptr<IMAGE_STATE>> imageMap;
-} layer_data;
+
+ layer_data() :
+ report_data(nullptr),
+ logging_callback(nullptr),
+ physicalDevice(0)
+ {};
+};
static unordered_map<void*, layer_data*> layer_data_map;
static device_table_map image_device_table_map;
diff --git a/layers/mem_tracker.cpp b/layers/mem_tracker.cpp
index 36574f6..f42b686 100644
--- a/layers/mem_tracker.cpp
+++ b/layers/mem_tracker.cpp
@@ -50,12 +50,18 @@
// Object value will be used to identify them internally.
static const VkDeviceMemory MEMTRACKER_SWAP_CHAIN_IMAGE_KEY = static_cast<VkDeviceMemory>(-1);
-typedef struct _layer_data {
+struct layer_data {
debug_report_data *report_data;
// TODO: put instance data here
VkDbgMsgCallback logging_callback;
bool wsi_enabled;
-} layer_data;
+
+ layer_data() :
+ report_data(nullptr),
+ logging_callback(nullptr),
+ wsi_enabled(false)
+ {};
+};
static unordered_map<void *, layer_data *> layer_data_map;
diff --git a/layers/object_track.h b/layers/object_track.h
index dd26610..e7d5820 100644
--- a/layers/object_track.h
+++ b/layers/object_track.h
@@ -65,13 +65,20 @@
typedef uint64_t (*OBJ_TRACK_GET_OBJECT_COUNT)(VkDevice);
typedef uint64_t (*OBJ_TRACK_GET_OBJECTS_OF_TYPE_COUNT)(VkDevice, VkDbgObjectType);
-typedef struct _layer_data {
+struct layer_data {
debug_report_data *report_data;
//TODO: put instance data here
VkDbgMsgCallback logging_callback;
bool wsi_enabled;
bool objtrack_extensions_enabled;
-} layer_data;
+
+ layer_data() :
+ report_data(nullptr),
+ logging_callback(nullptr),
+ wsi_enabled(false),
+ objtrack_extensions_enabled(false)
+ {};
+};
struct instExts {
bool wsi_enabled;
diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp
index 0b6909d..7c8d6c7 100644
--- a/layers/param_checker.cpp
+++ b/layers/param_checker.cpp
@@ -45,10 +45,15 @@
#include "vk_layer_logging.h"
#include "vk_layer_extension_utils.h"
-typedef struct _layer_data {
+struct layer_data {
debug_report_data *report_data;
VkDbgMsgCallback logging_callback;
-} layer_data;
+
+ layer_data() :
+ report_data(nullptr),
+ logging_callback(nullptr)
+ {};
+};
static std::unordered_map<void*, layer_data*> layer_data_map;
static device_table_map pc_device_table_map;
diff --git a/layers/shader_checker.cpp b/layers/shader_checker.cpp
index 41d10b1..6146b94 100644
--- a/layers/shader_checker.cpp
+++ b/layers/shader_checker.cpp
@@ -47,11 +47,16 @@
#include "spirv/spirv.hpp"
-typedef struct _layer_data {
+struct layer_data {
debug_report_data *report_data;
// TODO: put instance data here
VkDbgMsgCallback logging_callback;
-} layer_data;
+
+ layer_data() :
+ report_data(nullptr),
+ logging_callback(nullptr)
+ {};
+};
static std::unordered_map<void *, layer_data *> layer_data_map;
static device_table_map shader_checker_device_table_map;
diff --git a/layers/swapchain.cpp b/layers/swapchain.cpp
index bfcd2ab..a36854b 100644
--- a/layers/swapchain.cpp
+++ b/layers/swapchain.cpp
@@ -145,7 +145,7 @@
// Turn on logging, since it was requested:
option_str = getLayerOption("SwapchainLogFilename");
log_output = getLayerLogOutput(option_str, "Swapchain");
- layer_create_msg_callback(&mydata.report_data, report_flags,
+ layer_create_msg_callback(mydata.report_data, report_flags,
log_callback, (void *) log_output,
&mydata.logging_callback);
}
@@ -351,7 +351,6 @@
if (deviceMap[device].pPresentModes) {
free(deviceMap[device].pPresentModes);
}
- deviceMap.erase(device);
if (!pDevice->swapchains.empty()) {
LOG_ERROR(VK_OBJECT_TYPE_DEVICE, device, "VkDevice",
SWAPCHAIN_DEL_DEVICE_BEFORE_SWAPCHAINS,
@@ -366,6 +365,7 @@
}
pDevice->swapchains.clear();
}
+ deviceMap.erase(device);
}
}
@@ -657,7 +657,7 @@
}
}
// Log the message that we've built up:
- skipCall |= debug_report_log_msg(&mydata.report_data,
+ skipCall |= debug_report_log_msg(mydata.report_data,
VK_DBG_REPORT_ERROR_BIT,
VK_OBJECT_TYPE_DEVICE,
(uint64_t) device, 0,
@@ -1104,12 +1104,12 @@
VK_LAYER_EXPORT VkResult VKAPI vkDbgCreateMsgCallback(VkInstance instance, VkFlags msgFlags, const PFN_vkDbgMsgCallback pfnMsgCallback, void* pUserData, VkDbgMsgCallback* pMsgCallback)
{
- return layer_create_msg_callback(&mydata.report_data, msgFlags, pfnMsgCallback, pUserData, pMsgCallback);
+ return layer_create_msg_callback(mydata.report_data, msgFlags, pfnMsgCallback, pUserData, pMsgCallback);
}
VK_LAYER_EXPORT VkResult VKAPI vkDbgDestroyMsgCallback(VkInstance instance, VkDbgMsgCallback msgCallback)
{
- layer_destroy_msg_callback(&mydata.report_data, msgCallback);
+ layer_destroy_msg_callback(mydata.report_data, msgCallback);
return VK_SUCCESS;
}
diff --git a/layers/swapchain.h b/layers/swapchain.h
index 8414d47..9a33628 100644
--- a/layers/swapchain.h
+++ b/layers/swapchain.h
@@ -65,21 +65,27 @@
// The following is for logging error messages:
-typedef struct _layer_data {
- debug_report_data report_data;
+struct layer_data {
+ debug_report_data *report_data;
VkDbgMsgCallback logging_callback;
-} layer_data;
+
+ layer_data() :
+ report_data(nullptr),
+ logging_callback(nullptr)
+ {};
+};
+
#define LAYER_NAME (char *) "Swapchain"
#define LOG_ERROR_NON_VALID_OBJ(objType, type, obj) \
- log_msg(&mydata.report_data, VK_DBG_REPORT_ERROR_BIT, (objType), \
+ log_msg(mydata.report_data, VK_DBG_REPORT_ERROR_BIT, (objType), \
(uint64_t) (obj), 0, SWAPCHAIN_INVALID_HANDLE, LAYER_NAME, \
"%s() called with a non-valid %s.", __FUNCTION__, (obj))
#define LOG_ERROR(objType, type, obj, enm, fmt, ...) \
- log_msg(&mydata.report_data, VK_DBG_REPORT_ERROR_BIT, (objType), \
+ log_msg(mydata.report_data, VK_DBG_REPORT_ERROR_BIT, (objType), \
(uint64_t) (obj), 0, (enm), LAYER_NAME, (fmt), __VA_ARGS__)
#define LOG_PERF_WARNING(objType, type, obj, enm, fmt, ...) \
- log_msg(&mydata.report_data, VK_DBG_REPORT_PERF_WARN_BIT, (objType), \
+ log_msg(mydata.report_data, VK_DBG_REPORT_PERF_WARN_BIT, (objType), \
(uint64_t) (obj), 0, (enm), LAYER_NAME, (fmt), __VA_ARGS__)
diff --git a/layers/threading.h b/layers/threading.h
index 367679c..5335578 100644
--- a/layers/threading.h
+++ b/layers/threading.h
@@ -34,10 +34,15 @@
THREADING_CHECKER_SINGLE_THREAD_REUSE, // Object used simultaneously by recursion in single thread
} THREADING_CHECKER_ERROR;
-typedef struct _layer_data {
+struct layer_data {
debug_report_data *report_data;
VkDbgMsgCallback logging_callback;
-} layer_data;
+
+ layer_data() :
+ report_data(nullptr),
+ logging_callback(nullptr)
+ {};
+};
static std::unordered_map<void*, layer_data *> layer_data_map;
static device_table_map Threading_device_table_map;