From 4dc7b7627671eeaefda55b21bc9a7a5a06b43c30 Mon Sep 17 00:00:00 2001 From: Eduardo Lima Mitev Date: Sat, 21 Mar 2020 20:18:56 +0100 Subject: [PATCH] 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 Part-of: --- 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) -- 2.30.2