Mesa (master): anv/radv: Resolving 'GetInstanceProcAddr' should not require a valid instance

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Apr 24 09:21:33 UTC 2020


Module: Mesa
Branch: master
Commit: 4dc7b7627671eeaefda55b21bc9a7a5a06b43c30
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=4dc7b7627671eeaefda55b21bc9a7a5a06b43c30

Author: Eduardo Lima Mitev <elima at igalia.com>
Date:   Sat Mar 21 20:18:56 2020 +0100

anv/radv: Resolving 'GetInstanceProcAddr' should not require a valid instance

Since vk_icdGetInstanceProcAddr() is wired through
vkGetInstanceProcAddr() in both drivers, we lost the ability for
'GetInstanceProcAddr' to resolve itself prior to having a valid
instance.

An upcoming spec change will fix that and allow
vkGetInstanceProcAddr() to resolve itself passing NULL as
instance. See https://gitlab.khronos.org/vulkan/vulkan/issues/2057
for details.

This patch implements the change in both radv and anvil.

CTS changes have already landed:
https://gitlab.khronos.org/Tracker/vk-gl-cts/issues/2278

vulkan-loader changes have also landed:
https://gitlab.khronos.org/Tracker/vk-gl-cts/issues/2278

Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4273>

---

 src/amd/vulkan/radv_device.c  | 5 +++++
 src/intel/vulkan/anv_device.c | 5 +++++
 2 files changed, 10 insertions(+)

diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
index 730d1a67747..bed7062ec1d 100644
--- a/src/amd/vulkan/radv_device.c
+++ b/src/amd/vulkan/radv_device.c
@@ -4948,6 +4948,11 @@ PFN_vkVoidFunction radv_GetInstanceProcAddr(
 	LOOKUP_RADV_ENTRYPOINT(EnumerateInstanceVersion);
 	LOOKUP_RADV_ENTRYPOINT(CreateInstance);
 
+	/* GetInstanceProcAddr() can also be called with a NULL instance.
+	 * See https://gitlab.khronos.org/vulkan/vulkan/issues/2057
+	 */
+	LOOKUP_RADV_ENTRYPOINT(GetInstanceProcAddr);
+
 #undef LOOKUP_RADV_ENTRYPOINT
 
 	if (instance == NULL)
diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c
index 1462b761576..caa622d5f4e 100644
--- a/src/intel/vulkan/anv_device.c
+++ b/src/intel/vulkan/anv_device.c
@@ -2204,6 +2204,11 @@ PFN_vkVoidFunction anv_GetInstanceProcAddr(
    LOOKUP_ANV_ENTRYPOINT(EnumerateInstanceVersion);
    LOOKUP_ANV_ENTRYPOINT(CreateInstance);
 
+   /* GetInstanceProcAddr() can also be called with a NULL instance.
+    * See https://gitlab.khronos.org/vulkan/vulkan/issues/2057
+    */
+   LOOKUP_ANV_ENTRYPOINT(GetInstanceProcAddr);
+
 #undef LOOKUP_ANV_ENTRYPOINT
 
    if (instance == NULL)



More information about the mesa-commit mailing list