diff options
Diffstat (limited to 'tools/viewer/sk_app/android/VulkanWindowContext_android.cpp')
-rw-r--r-- | tools/viewer/sk_app/android/VulkanWindowContext_android.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/tools/viewer/sk_app/android/VulkanWindowContext_android.cpp b/tools/viewer/sk_app/android/VulkanWindowContext_android.cpp index b50e152291..a7d8aa7ea1 100644 --- a/tools/viewer/sk_app/android/VulkanWindowContext_android.cpp +++ b/tools/viewer/sk_app/android/VulkanWindowContext_android.cpp @@ -9,15 +9,22 @@ #include "WindowContextFactory_android.h" #include "../VulkanWindowContext.h" +#include "vk/VkTestUtils.h" + namespace sk_app { namespace window_context_factory { WindowContext* NewVulkanForAndroid(ANativeWindow* window, const DisplayParams& params) { - auto createVkSurface = [window] (VkInstance instance) -> VkSurfaceKHR { + PFN_vkGetInstanceProcAddr instProc; + PFN_vkGetDeviceProcAddr devProc; + if (!sk_gpu_test::LoadVkLibraryAndGetProcAddrFuncs(&instProc, &devProc)) { + return nullptr; + } + + auto createVkSurface = [window, instProc] (VkInstance instance) -> VkSurfaceKHR { PFN_vkCreateAndroidSurfaceKHR createAndroidSurfaceKHR = - (PFN_vkCreateAndroidSurfaceKHR)vkGetInstanceProcAddr(instance, - "vkCreateAndroidSurfaceKHR"); + (PFN_vkCreateAndroidSurfaceKHR) instProc(instance, "vkCreateAndroidSurfaceKHR"); if (!window) { return VK_NULL_HANDLE; @@ -38,7 +45,8 @@ WindowContext* NewVulkanForAndroid(ANativeWindow* window, const DisplayParams& p auto canPresent = [](VkInstance, VkPhysicalDevice, uint32_t) { return true; }; - WindowContext* ctx = new VulkanWindowContext(params, createVkSurface, canPresent); + WindowContext* ctx = new VulkanWindowContext(params, createVkSurface, canPresent, + instProc, devProc); if (!ctx->isValid()) { delete ctx; return nullptr; |