vk-layer-generate.py: put layer functions into a namespace
Move everything into namespace object_tracker and unique_objects
respectively. I had to add some wrappers to make everything work.
diff --git a/layers/object_tracker.h b/layers/object_tracker.h
index 30a1f29..623600a 100644
--- a/layers/object_tracker.h
+++ b/layers/object_tracker.h
@@ -28,6 +28,8 @@
#include "vk_layer_table.h"
#include "vk_layer_utils.h"
+namespace object_tracker {
+
// Object Tracker ERROR codes
enum OBJECT_TRACK_ERROR {
OBJTRACK_NONE, // Used for INFO & other non-error messages
@@ -107,8 +109,6 @@
static uint64_t numTotalObjs = 0;
std::vector<VkQueueFamilyProperties> queue_family_properties;
-template layer_data *get_my_data_ptr<layer_data>(void *data_key, std::unordered_map<void *, layer_data *> &data_map);
-
//
// Internal Object Tracker Functions
//
@@ -1059,3 +1059,5 @@
lock.unlock();
return result;
}
+
+} // namespace object_tracker
diff --git a/layers/unique_objects.h b/layers/unique_objects.h
index 6c2c2e3..0da90a1 100644
--- a/layers/unique_objects.h
+++ b/layers/unique_objects.h
@@ -39,6 +39,8 @@
#include "vk_safe_struct.h"
#include "vk_layer_utils.h"
+namespace unique_objects {
+
// All increments must be guarded by global_lock
static uint64_t global_unique_id = 1;
@@ -393,3 +395,5 @@
}
return result;
}
+
+} // namespace unique_objects
diff --git a/vk-layer-generate.py b/vk-layer-generate.py
index f48a1d3..3d45a69 100755
--- a/vk-layer-generate.py
+++ b/vk-layer-generate.py
@@ -347,6 +347,31 @@
r_body.append('}')
return "\n".join(r_body)
+ def _gen_layer_logging_workaround(self):
+ body = []
+ body.append('%s' % self.lineinfo.get())
+ body.append('// vk_layer_logging.h expects these to be defined')
+ body.append('')
+ body.append('VKAPI_ATTR VkResult VKAPI_CALL')
+ body.append('vkCreateDebugReportCallbackEXT(VkInstance instance, const VkDebugReportCallbackCreateInfoEXT *pCreateInfo,')
+ body.append(' const VkAllocationCallbacks *pAllocator, VkDebugReportCallbackEXT *pMsgCallback) {')
+ body.append(' return %s::vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pMsgCallback);' % self.layer_name)
+ body.append('}')
+ body.append('')
+ body.append('VKAPI_ATTR void VKAPI_CALL vkDestroyDebugReportCallbackEXT(VkInstance instance,')
+ body.append(' VkDebugReportCallbackEXT msgCallback,')
+ body.append(' const VkAllocationCallbacks *pAllocator) {')
+ body.append(' %s::vkDestroyDebugReportCallbackEXT(instance, msgCallback, pAllocator);' % self.layer_name)
+ body.append('}')
+ body.append('')
+ body.append('VKAPI_ATTR void VKAPI_CALL')
+ body.append('vkDebugReportMessageEXT(VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objType, uint64_t object,')
+ body.append(' size_t location, int32_t msgCode, const char *pLayerPrefix, const char *pMsg) {')
+ body.append(' %s::vkDebugReportMessageEXT(instance, flags, objType, object, location, msgCode, pLayerPrefix, pMsg);' % self.layer_name)
+ body.append('}')
+
+ return "\n".join(body)
+
def _gen_layer_interface_v0_functions(self):
body = []
body.append('%s' % self.lineinfo.get())
@@ -395,6 +420,16 @@
body.append('{')
body.append(' return util_GetLayerProperties(1, &globalLayerProps, pCount, pProperties);')
body.append('}')
+ body.append('')
+ body.append('VK_LAYER_EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetDeviceProcAddr(VkDevice dev, const char *funcName)')
+ body.append('{')
+ body.append(' return %s::vkGetDeviceProcAddr(dev, funcName);' % self.layer_name)
+ body.append('}')
+ body.append('')
+ body.append('VK_LAYER_EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(VkInstance instance, const char *funcName)')
+ body.append('{')
+ body.append(' return %s::vkGetInstanceProcAddr(instance, funcName);' % self.layer_name)
+ body.append('}')
return "\n".join(body)
@@ -1297,7 +1332,8 @@
print('Error: Undefined DisplayServer')
instance_extensions=[]
- body = [self.generate_maps(),
+ body = ["namespace %s {" % self.layer_name,
+ self.generate_maps(),
self.generate_procs(),
self.generate_destroy_instance(),
self.generate_destroy_device(),
@@ -1305,6 +1341,8 @@
self._generate_extensions(),
self._generate_layer_gpa_function(extensions,
instance_extensions),
+ "} // namespace %s" % self.layer_name,
+ self._gen_layer_logging_workaround(),
self._gen_layer_interface_v0_functions()]
return "\n\n".join(body)
@@ -1603,9 +1641,11 @@
print('Error: Undefined DisplayServer')
instance_extensions=[]
- body = [self._generate_dispatch_entrypoints("VK_LAYER_EXPORT"),
+ body = ["namespace %s {" % self.layer_name,
+ self._generate_dispatch_entrypoints("VK_LAYER_EXPORT"),
self._generate_layer_gpa_function(extensions,
instance_extensions),
+ "} // namespace %s" % self.layer_name,
self._gen_layer_interface_v0_functions()]
return "\n\n".join(body)