From 3a95297e852daec72bd7bad002eeab34eead22c2 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Tue, 17 May 2016 07:43:59 +0800 Subject: vk-layer-generate.py: handle device commands in GetInstanceProcAddr Per commit 5bf16c33b9c1f38fc467d94716f276620a265327, extension check is bypassed in GetInstanceProcAddr for VK_KHR_swapchain functions. --- vk-layer-generate.py | 19 +++++++++++++++---- 1 file 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" -- cgit v1.2.3