From 82525e1015d965665bca01f3d333d8d88c08a39d Mon Sep 17 00:00:00 2001 From: Leonardo Mariscal Date: Wed, 6 Nov 2019 09:14:50 -0600 Subject: [PATCH] Fix dylib for MacOSX and create Windows only loader section --- examples/tvulkan.nim | 6 +++++- src/nimgl/vulkan.nim | 14 ++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/examples/tvulkan.nim b/examples/tvulkan.nim index 82d5ede..3180f7d 100644 --- a/examples/tvulkan.nim +++ b/examples/tvulkan.nim @@ -36,12 +36,16 @@ proc cleanUp() = glfwTerminate() proc initVulkan() = + when defined(macosx): + let vkVersion = vkApiVersion1_0.uint32 + else: + let vkVersion = vkApiVersion1_1.uint32 var appInfo = newVkApplicationInfo( pApplicationName = "NimGL Vulkan Example", applicationVersion = vkMakeVersion(1, 0, 0), pEngineName = "No Engine", engineVersion = vkMakeVersion(1, 0, 0), - apiVersion = vkApiVersion1_1 + apiVersion = vkVersion ) var glfwExtensionCount: uint32 = 0 diff --git a/src/nimgl/vulkan.nim b/src/nimgl/vulkan.nim index 029c9da..06c546a 100644 --- a/src/nimgl/vulkan.nim +++ b/src/nimgl/vulkan.nim @@ -13,7 +13,7 @@ when not defined(vkCustomLoader): when defined(windows): const vkDLL = "vulkan-1.dll" elif defined(macosx): - quit("libvulkan.1.dylib") + const vkDLL = "libMoltenVK.dylib" else: const vkDLL = "libvulkan.so.1" @@ -26,9 +26,10 @@ when not defined(vkCustomLoader): quit("failed to load `vkGetInstanceProcAddr` from " & vkDLL) vkGetProc = proc(procName: cstring): pointer {.cdecl.} = - result = vkGetProcAddress(procName) - if result != nil: - return + when defined(windows): + result = vkGetProcAddress(procName) + if result != nil: + return result = symAddr(vkHandleDLL, procName) if result == nil: raiseInvalidLibrary(procName) @@ -9263,6 +9264,7 @@ proc loadVK_KHR_pipeline_executable_properties*() = proc vkInit*(load1_0: bool = true, load1_1: bool = true): bool = if load1_0: vkLoad1_0() - if load1_1: - vkLoad1_1() + when not defined(macosx): + if load1_1: + vkLoad1_1() return true