diff --git a/src/igl/vulkan/Common.cpp b/src/igl/vulkan/Common.cpp index 716c4ad53..4d53d38f8 100644 --- a/src/igl/vulkan/Common.cpp +++ b/src/igl/vulkan/Common.cpp @@ -12,9 +12,16 @@ #include #include +// clang-format off #if defined(VK_USE_PLATFORM_WIN32_KHR) -#include + #ifndef WIN32_LEAN_AND_MEAN + #define WIN32_LEAN_AND_MEAN + #endif + #include +#else + #include #endif +// clang-format on #include #include @@ -641,3 +648,58 @@ uint32_t getNumImagePlanes(VkFormat format) { } } } // namespace igl::vulkan + +namespace igl::vulkan::functions { + +namespace { +PFN_vkGetInstanceProcAddr getVkGetInstanceProcAddr() { +#if defined(_WIN32) + HMODULE lib = LoadLibraryA("vulkan-1.dll"); + if (!lib) { + return nullptr; + } + return (PFN_vkGetInstanceProcAddr)GetProcAddress(lib, "vkGetInstanceProcAddr"); +#elif defined(__APPLE__) + void* lib = dlopen("libvulkan.dylib", RTLD_NOW | RTLD_LOCAL); + if (!lib) { + lib = dlopen("libvulkan.1.dylib", RTLD_NOW | RTLD_LOCAL); + } + if (!lib) { + lib = dlopen("libMoltenVK.dylib", RTLD_NOW | RTLD_LOCAL); + } + if (!lib) { + return nullptr; + } + return (PFN_vkGetInstanceProcAddr)dlsym(lib, "vkGetInstanceProcAddr"); +#else + void* lib = dlopen("libvulkan.so.1", RTLD_NOW | RTLD_LOCAL); + if (!lib) { + lib = dlopen("libvulkan.so", RTLD_NOW | RTLD_LOCAL); + } + if (!lib) { + return nullptr; + } + return (PFN_vkGetInstanceProcAddr)dlsym(lib, "vkGetInstanceProcAddr"); +#endif + return nullptr; +} +} // namespace + +void initialize(VulkanFunctionTable& table) { + table.vkGetInstanceProcAddr = getVkGetInstanceProcAddr(); + IGL_ASSERT(table.vkGetInstanceProcAddr != nullptr); + + loadVulkanLoaderFunctions(&table, table.vkGetInstanceProcAddr); +} + +void loadInstanceFunctions(VulkanFunctionTable& table, VkInstance instance) { + IGL_ASSERT(table.vkGetInstanceProcAddr != nullptr); + loadVulkanInstanceFunctions(&table, instance, table.vkGetInstanceProcAddr); +} + +void loadDeviceFunctions(VulkanFunctionTable& table, VkDevice device) { + IGL_ASSERT(table.vkGetDeviceProcAddr != nullptr); + loadVulkanDeviceFunctions(&table, device, table.vkGetDeviceProcAddr); +} + +} // namespace igl::vulkan::functions diff --git a/src/igl/vulkan/Common.h b/src/igl/vulkan/Common.h index f95b0c093..eca872a68 100644 --- a/src/igl/vulkan/Common.h +++ b/src/igl/vulkan/Common.h @@ -196,4 +196,12 @@ void ensureShaderModule(IShaderModule* sm); } // namespace igl::vulkan +namespace igl::vulkan::functions { + +void initialize(VulkanFunctionTable& table); +void loadInstanceFunctions(VulkanFunctionTable& table, VkInstance instance); +void loadDeviceFunctions(VulkanFunctionTable& table, VkDevice device); + +} // namespace igl::vulkan::functions + #endif // IGL_VULKAN_COMMON_H diff --git a/src/igl/vulkan/VulkanCommandPool.h b/src/igl/vulkan/VulkanCommandPool.h index e50fd8b84..869a0ad00 100644 --- a/src/igl/vulkan/VulkanCommandPool.h +++ b/src/igl/vulkan/VulkanCommandPool.h @@ -8,7 +8,6 @@ #pragma once #include -#include namespace igl::vulkan { diff --git a/src/igl/vulkan/VulkanContext.h b/src/igl/vulkan/VulkanContext.h index 1344de7e3..516b87016 100644 --- a/src/igl/vulkan/VulkanContext.h +++ b/src/igl/vulkan/VulkanContext.h @@ -18,7 +18,6 @@ #include #include #include -#include #include #include #include diff --git a/src/igl/vulkan/VulkanDescriptorSetLayout.h b/src/igl/vulkan/VulkanDescriptorSetLayout.h index cafc60e60..c35c203f4 100644 --- a/src/igl/vulkan/VulkanDescriptorSetLayout.h +++ b/src/igl/vulkan/VulkanDescriptorSetLayout.h @@ -8,7 +8,6 @@ #pragma once #include -#include #include #include diff --git a/src/igl/vulkan/VulkanDevice.h b/src/igl/vulkan/VulkanDevice.h index a4ce30381..1e93aacb5 100644 --- a/src/igl/vulkan/VulkanDevice.h +++ b/src/igl/vulkan/VulkanDevice.h @@ -10,7 +10,6 @@ #include #include -#include #include namespace igl::vulkan { diff --git a/src/igl/vulkan/VulkanExtensions.h b/src/igl/vulkan/VulkanExtensions.h index 8ddf96937..d7c64a397 100644 --- a/src/igl/vulkan/VulkanExtensions.h +++ b/src/igl/vulkan/VulkanExtensions.h @@ -12,7 +12,6 @@ #include #include -#include #include namespace igl::vulkan { diff --git a/src/igl/vulkan/VulkanFence.h b/src/igl/vulkan/VulkanFence.h index 81ac6045f..73fca3f66 100644 --- a/src/igl/vulkan/VulkanFence.h +++ b/src/igl/vulkan/VulkanFence.h @@ -10,7 +10,6 @@ #include #include -#include #include namespace igl::vulkan { diff --git a/src/igl/vulkan/VulkanFunctions.cpp b/src/igl/vulkan/VulkanFunctions.cpp deleted file mode 100644 index ddbb770fe..000000000 --- a/src/igl/vulkan/VulkanFunctions.cpp +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -#include "VulkanFunctions.h" - -#include - -// clang-format off -#ifdef _WIN32 - #ifndef WIN32_LEAN_AND_MEAN - #define WIN32_LEAN_AND_MEAN - #endif - #include -#else - #include -#endif -// clang-format on - -namespace igl::vulkan::functions { - -namespace { -PFN_vkGetInstanceProcAddr getVkGetInstanceProcAddr() { -#if defined(_WIN32) - HMODULE lib = LoadLibraryA("vulkan-1.dll"); - if (!lib) { - return nullptr; - } - return (PFN_vkGetInstanceProcAddr)GetProcAddress(lib, "vkGetInstanceProcAddr"); -#elif defined(__APPLE__) - void* lib = dlopen("libvulkan.dylib", RTLD_NOW | RTLD_LOCAL); - if (!lib) { - lib = dlopen("libvulkan.1.dylib", RTLD_NOW | RTLD_LOCAL); - } - if (!lib) { - lib = dlopen("libMoltenVK.dylib", RTLD_NOW | RTLD_LOCAL); - } - if (!lib) { - return nullptr; - } - return (PFN_vkGetInstanceProcAddr)dlsym(lib, "vkGetInstanceProcAddr"); -#else - void* lib = dlopen("libvulkan.so.1", RTLD_NOW | RTLD_LOCAL); - if (!lib) { - lib = dlopen("libvulkan.so", RTLD_NOW | RTLD_LOCAL); - } - if (!lib) { - return nullptr; - } - return (PFN_vkGetInstanceProcAddr)dlsym(lib, "vkGetInstanceProcAddr"); -#endif - return nullptr; -} -} // namespace - -void initialize(VulkanFunctionTable& table) { - table.vkGetInstanceProcAddr = getVkGetInstanceProcAddr(); - IGL_ASSERT(table.vkGetInstanceProcAddr != nullptr); - - loadVulkanLoaderFunctions(&table, table.vkGetInstanceProcAddr); -} - -void loadInstanceFunctions(VulkanFunctionTable& table, VkInstance instance) { - IGL_ASSERT(table.vkGetInstanceProcAddr != nullptr); - loadVulkanInstanceFunctions(&table, instance, table.vkGetInstanceProcAddr); -} - -void loadDeviceFunctions(VulkanFunctionTable& table, VkDevice device) { - IGL_ASSERT(table.vkGetDeviceProcAddr != nullptr); - loadVulkanDeviceFunctions(&table, device, table.vkGetDeviceProcAddr); -} - -} // namespace igl::vulkan::functions diff --git a/src/igl/vulkan/VulkanFunctions.h b/src/igl/vulkan/VulkanFunctions.h deleted file mode 100644 index 763cd51d8..000000000 --- a/src/igl/vulkan/VulkanFunctions.h +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -#pragma once - -#include - -namespace igl::vulkan::functions { - -void initialize(VulkanFunctionTable& table); - -void loadInstanceFunctions(VulkanFunctionTable& table, VkInstance instance); - -void loadDeviceFunctions(VulkanFunctionTable& table, VkDevice device); - -} // namespace igl::vulkan::functions diff --git a/src/igl/vulkan/VulkanPipelineBuilder.h b/src/igl/vulkan/VulkanPipelineBuilder.h index 85821c6c1..6571ca2db 100644 --- a/src/igl/vulkan/VulkanPipelineBuilder.h +++ b/src/igl/vulkan/VulkanPipelineBuilder.h @@ -8,7 +8,6 @@ #pragma once #include -#include #include #include diff --git a/src/igl/vulkan/VulkanQueuePool.h b/src/igl/vulkan/VulkanQueuePool.h index 4e5b2c549..1a4167b44 100644 --- a/src/igl/vulkan/VulkanQueuePool.h +++ b/src/igl/vulkan/VulkanQueuePool.h @@ -11,7 +11,6 @@ #include #include -#include namespace igl::vulkan { diff --git a/src/igl/vulkan/VulkanRenderPassBuilder.h b/src/igl/vulkan/VulkanRenderPassBuilder.h index a09a9c392..400fa7248 100644 --- a/src/igl/vulkan/VulkanRenderPassBuilder.h +++ b/src/igl/vulkan/VulkanRenderPassBuilder.h @@ -9,7 +9,6 @@ #include -#include #include #include diff --git a/src/igl/vulkan/VulkanSemaphore.h b/src/igl/vulkan/VulkanSemaphore.h index 1936e493a..5df797267 100644 --- a/src/igl/vulkan/VulkanSemaphore.h +++ b/src/igl/vulkan/VulkanSemaphore.h @@ -10,7 +10,6 @@ #include #include -#include #include namespace igl::vulkan { diff --git a/src/igl/vulkan/VulkanShaderModule.h b/src/igl/vulkan/VulkanShaderModule.h index 03a6fedcf..cd410a0e5 100644 --- a/src/igl/vulkan/VulkanShaderModule.h +++ b/src/igl/vulkan/VulkanShaderModule.h @@ -11,7 +11,6 @@ #include #include -#include #include #include