From a63104a7d8b03df54a294e0d3685c7f22d66f370 Mon Sep 17 00:00:00 2001 From: Boris Brezillon Date: Mon, 25 Oct 2021 18:37:21 +0200 Subject: [PATCH] vulkan: Fix entrypoint generation when compiling for x86 with MSVC When compiling for x86 with MSVC, Vulkan API entry points follow the __stdcall convention (VKAPI_CALL maps to __stdcall), which uses the following name mangling: _@ Fix the vk_entrypoint_stub()/alternatename definitions accordingly. Fixes: 6d44b21d4fd ("vulkan: Fix weak symbol emulation when compiling with MSVC") Signed-off-by: Boris Brezillon Reviewed-by: Jesse Natalie Part-of: (cherry picked from commit 1813bb59174a8f6e60a4f7aff2ac9af81a8810f5) --- .pick_status.json | 2 +- src/vulkan/util/vk_dispatch_table_gen.py | 4 ++-- src/vulkan/util/vk_entrypoints_gen.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index b71decb9724..48296b88307 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -562,7 +562,7 @@ "description": "vulkan: Fix entrypoint generation when compiling for x86 with MSVC", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "6d44b21d4fdea89673541de265f69258747c5499" }, diff --git a/src/vulkan/util/vk_dispatch_table_gen.py b/src/vulkan/util/vk_dispatch_table_gen.py index d07d5120d1e..eb6b0cd28e2 100644 --- a/src/vulkan/util/vk_dispatch_table_gen.py +++ b/src/vulkan/util/vk_dispatch_table_gen.py @@ -69,7 +69,7 @@ extern "C" { #endif #ifdef _MSC_VER -void vk_entrypoint_stub(void); +VKAPI_ATTR void VKAPI_CALL vk_entrypoint_stub(void); #endif <%def name="dispatch_table(entrypoints)"> @@ -469,7 +469,7 @@ vk_device_entrypoint_is_enabled(int index, uint32_t core_version, } #ifdef _MSC_VER -void vk_entrypoint_stub(void) +VKAPI_ATTR void VKAPI_CALL vk_entrypoint_stub(void) { unreachable(!"Entrypoint not implemented"); } diff --git a/src/vulkan/util/vk_entrypoints_gen.py b/src/vulkan/util/vk_entrypoints_gen.py index 2c234911b24..078b6daec0b 100644 --- a/src/vulkan/util/vk_entrypoints_gen.py +++ b/src/vulkan/util/vk_entrypoints_gen.py @@ -125,7 +125,7 @@ TEMPLATE_C = Template(COPYRIGHT + """ #ifdef _MSC_VER #ifdef _M_IX86 % for args_size in [4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 60, 104]: - #pragma comment(linker, "/alternatename:_${p}_${e.name}@${args_size}=_vk_entrypoint_stub") + #pragma comment(linker, "/alternatename:_${p}_${e.name}@${args_size}=_vk_entrypoint_stub@0") % endfor #else #pragma comment(linker, "/alternatename:${p}_${e.name}=vk_entrypoint_stub")