Mesa (staging/21.2): vulkan: Fix entrypoint generation when compiling for x86 with MSVC

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Oct 27 21:53:15 UTC 2021


Module: Mesa
Branch: staging/21.2
Commit: 73b35cb7e8b274c042f2355b668086204d05fb07
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=73b35cb7e8b274c042f2355b668086204d05fb07

Author: Boris Brezillon <boris.brezillon at collabora.com>
Date:   Mon Oct 25 18:37:21 2021 +0200

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:

   _<function_name>@<arguments_size>

Fix the vk_entrypoint_stub()/alternatename definitions accordingly.

Fixes: 6d44b21d4fd ("vulkan: Fix weak symbol emulation when compiling with MSVC")
Signed-off-by: Boris Brezillon <boris.brezillon at collabora.com>
Reviewed-by: Jesse Natalie <jenatali at microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13516>
(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 45cd1feef0d..1620345fd5d 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -580,7 +580,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 0567163cf0d..25794484bac 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 70f9ef5a992..0c0ef815bf4 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 at 0")
       % endfor
 #else
     #pragma comment(linker, "/alternatename:${p}_${e.name}=vk_entrypoint_stub")



More information about the mesa-commit mailing list