diff options
| author | Chia-I Wu <olv@google.com> | 2016-05-17 07:43:59 +0800 |
|---|---|---|
| committer | Tobin Ehlis <tobine@google.com> | 2016-05-24 06:29:13 -0600 |
| commit | 3a95297e852daec72bd7bad002eeab34eead22c2 (patch) | |
| tree | 2bdb2bb3c5c69d434797459bd21b665b7ef0d964 | |
| parent | bf301faff7f013958051788f2f161003b1c22b59 (diff) | |
| download | usermoji-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-x | vk-layer-generate.py | 19 |
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" |
