layers: Revert "Prevent layer calls with null ..."
Incomplete solution, with new null derefence side affects.
This reverts commit 9652bf9ce450f79ccf69de911a9744a8d7ed6222.
Change-Id: I5530fd496d3495bc9863ddaf709b32c6f7b95329
diff --git a/scripts/dispatch_table_helper_generator.py b/scripts/dispatch_table_helper_generator.py
index 081c953..6ecd43b 100644
--- a/scripts/dispatch_table_helper_generator.py
+++ b/scripts/dispatch_table_helper_generator.py
@@ -238,16 +238,7 @@
table = ''
if table_type == 'device':
entries = self.device_dispatch_list
- table += 'static inline void layer_init_device_dispatch_table(VkDevice device, VkLayerDispatchTable *table, PFN_vkGetDeviceProcAddr gpa_func,\n'
- table += ' std::unordered_map<std::string, void *> *layer_entrypoint_map = nullptr) {\n'
- table += ' // Wrap the gpa function to update the supplied map\n'
- table += ' auto gpa = [gpa_func, layer_entrypoint_map] (VkDevice device, const char *entry_point) {\n'
- table += ' PFN_vkVoidFunction proc_addr = gpa_func(device, entry_point);\n'
- table += ' if (!proc_addr && layer_entrypoint_map) {\n'
- table += ' (*layer_entrypoint_map)[entry_point] = nullptr;\n'
- table += ' }\n'
- table += ' return proc_addr;\n'
- table += ' };\n\n'
+ table += 'static inline void layer_init_device_dispatch_table(VkDevice device, VkLayerDispatchTable *table, PFN_vkGetDeviceProcAddr gpa) {\n'
table += ' memset(table, 0, sizeof(*table));\n'
table += ' // Device function pointers\n'
else:
@@ -267,7 +258,7 @@
# If we're looking for the proc we are passing in, just point the table to it. This fixes the issue where
# a layer overrides the function name for the loader.
if ('device' in table_type and base_name == 'GetDeviceProcAddr'):
- table += ' table->GetDeviceProcAddr = gpa_func;\n'
+ table += ' table->GetDeviceProcAddr = gpa;\n'
elif ('device' not in table_type and base_name == 'GetInstanceProcAddr'):
table += ' table->GetInstanceProcAddr = gpa;\n'
else:
diff --git a/scripts/object_tracker_generator.py b/scripts/object_tracker_generator.py
index 6d16dce..8608605 100644
--- a/scripts/object_tracker_generator.py
+++ b/scripts/object_tracker_generator.py
@@ -447,7 +447,7 @@
# Record intercepted procedures
write('// Map of all APIs to be intercepted by this layer', file=self.outFile)
- write('std::unordered_map<std::string, void*> name_to_funcptr_map = {', file=self.outFile)
+ write('const std::unordered_map<std::string, void*> name_to_funcptr_map = {', file=self.outFile)
write('\n'.join(self.intercepts), file=self.outFile)
write('};\n', file=self.outFile)
self.newline()
diff --git a/scripts/parameter_validation_generator.py b/scripts/parameter_validation_generator.py
index 0119f12..735916c 100644
--- a/scripts/parameter_validation_generator.py
+++ b/scripts/parameter_validation_generator.py
@@ -357,7 +357,7 @@
write('// Declarations', file=self.outFile)
write('\n'.join(self.declarations), file=self.outFile)
write('// Map of all APIs to be intercepted by this layer', file=self.outFile)
- write('std::unordered_map<std::string, void*> name_to_funcptr_map = {', file=self.outFile)
+ write('const std::unordered_map<std::string, void*> name_to_funcptr_map = {', file=self.outFile)
write('\n'.join(self.intercepts), file=self.outFile)
write('};\n', file=self.outFile)
self.newline()
diff --git a/scripts/threading_generator.py b/scripts/threading_generator.py
index 7475898..5cfb4d7 100644
--- a/scripts/threading_generator.py
+++ b/scripts/threading_generator.py
@@ -274,7 +274,7 @@
self.newline()
# record intercepted procedures
write('// Map of all APIs to be intercepted by this layer', file=self.outFile)
- write('static std::unordered_map<std::string, void*> name_to_funcptr_map = {', file=self.outFile)
+ write('static const std::unordered_map<std::string, void*> name_to_funcptr_map = {', file=self.outFile)
write('\n'.join(self.intercepts), file=self.outFile)
write('};\n', file=self.outFile)
self.newline()
diff --git a/scripts/unique_objects_generator.py b/scripts/unique_objects_generator.py
index 5b5138b..9fd6328 100644
--- a/scripts/unique_objects_generator.py
+++ b/scripts/unique_objects_generator.py
@@ -250,7 +250,7 @@
# Record intercepted procedures
write('// Map of all APIs to be intercepted by this layer', file=self.outFile)
- write('static std::unordered_map<std::string, void*> name_to_funcptr_map = {', file=self.outFile)
+ write('static const std::unordered_map<std::string, void*> name_to_funcptr_map = {', file=self.outFile)
write('\n'.join(self.intercepts), file=self.outFile)
write('};\n', file=self.outFile)
self.newline()