aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChia-I Wu <olv@google.com>2016-05-17 07:43:59 +0800
committerTobin Ehlis <tobine@google.com>2016-05-24 06:29:13 -0600
commit3a95297e852daec72bd7bad002eeab34eead22c2 (patch)
tree2bdb2bb3c5c69d434797459bd21b665b7ef0d964
parentbf301faff7f013958051788f2f161003b1c22b59 (diff)
downloadusermoji-3a95297e852daec72bd7bad002eeab34eead22c2.tar.xz
vk-layer-generate.py: handle device commands in GetInstanceProcAddr
Per commit 5bf16c33b9c1f38fc467d94716f276620a265327, extension check is bypassed in GetInstanceProcAddr for VK_KHR_swapchain functions.
-rwxr-xr-xvk-layer-generate.py19
1 files changed, 15 insertions, 4 deletions
diff --git a/vk-layer-generate.py b/vk-layer-generate.py
index 5f074477..24f3c93b 100755
--- a/vk-layer-generate.py
+++ b/vk-layer-generate.py
@@ -535,9 +535,11 @@ class Subcommand(object):
func_body.append('%s' % self.lineinfo.get())
func_body.append('static inline PFN_vkVoidFunction intercept_%s_command(const char *name, VkDevice dev)' % ext_enable)
func_body.append('{')
- func_body.append(' layer_data *my_data = get_my_data_ptr(get_dispatch_key(dev), layer_data_map);')
- func_body.append(' if (!my_data->%s)' % ext_enable)
- func_body.append(' return nullptr;\n')
+ func_body.append(' if (dev) {')
+ func_body.append(' layer_data *my_data = get_my_data_ptr(get_dispatch_key(dev), layer_data_map);')
+ func_body.append(' if (!my_data->%s)' % ext_enable)
+ func_body.append(' return nullptr;')
+ func_body.append(' }\n')
for ext_name in ext_list:
func_body.append(' if (!strcmp("%s", name))\n'
@@ -588,7 +590,16 @@ class Subcommand(object):
"{\n"
" PFN_vkVoidFunction addr;\n"
" addr = intercept_core_instance_command(funcName);\n"
- " if (addr) {\n"
+ " if (!addr) {\n"
+ " addr = intercept_core_device_command(funcName);\n"
+ " }")
+
+ for ext_enable, _ in extensions:
+ func_body.append(" if (!addr) {\n"
+ " addr = intercept_%s_command(funcName, VkDevice(VK_NULL_HANDLE));\n"
+ " }" % ext_enable)
+
+ func_body.append(" if (addr) {\n"
" return addr;\n"
" }\n"
" assert(instance);\n"