Skip to content

Commit

Permalink
igl | vulkan | Merge VulkanFunctions.cpp/.h into Common.cpp/.h
Browse files Browse the repository at this point in the history
Summary: `VulkanFunctions.h` is always included together with `Common.h`. Merge them so we can get rid of an extra module burden and improve compilation time.

Reviewed By: rokuz, mmaurer

Differential Revision: D61736454

fbshipit-source-id: 2ba93e0f9ff196a43721af1c7cfc8bd59dd43040
  • Loading branch information
corporateshark authored and facebook-github-bot committed Aug 27, 2024
1 parent 54a7f26 commit 8c591a7
Show file tree
Hide file tree
Showing 15 changed files with 71 additions and 108 deletions.
64 changes: 63 additions & 1 deletion src/igl/vulkan/Common.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,16 @@
#include <cstdio>
#include <cstdlib>

// clang-format off
#if defined(VK_USE_PLATFORM_WIN32_KHR)
#include <windows.h>
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#else
#include <dlfcn.h>
#endif
// clang-format on

#include <igl/vulkan/ShaderModule.h>
#include <igl/vulkan/Texture.h>
Expand Down Expand Up @@ -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
8 changes: 8 additions & 0 deletions src/igl/vulkan/Common.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
1 change: 0 additions & 1 deletion src/igl/vulkan/VulkanCommandPool.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
#pragma once

#include <igl/vulkan/Common.h>
#include <igl/vulkan/VulkanFunctions.h>

namespace igl::vulkan {

Expand Down
1 change: 0 additions & 1 deletion src/igl/vulkan/VulkanContext.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
#include <igl/vulkan/VulkanDevice.h>
#include <igl/vulkan/VulkanExtensions.h>
#include <igl/vulkan/VulkanFeatures.h>
#include <igl/vulkan/VulkanFunctions.h>
#include <igl/vulkan/VulkanHelpers.h>
#include <igl/vulkan/VulkanImmediateCommands.h>
#include <igl/vulkan/VulkanQueuePool.h>
Expand Down
1 change: 0 additions & 1 deletion src/igl/vulkan/VulkanDescriptorSetLayout.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
#pragma once

#include <igl/vulkan/VulkanContext.h>
#include <igl/vulkan/VulkanFunctions.h>
#include <igl/vulkan/VulkanHelpers.h>
#include <memory>

Expand Down
1 change: 0 additions & 1 deletion src/igl/vulkan/VulkanDevice.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
#include <memory>

#include <igl/vulkan/Common.h>
#include <igl/vulkan/VulkanFunctions.h>
#include <igl/vulkan/VulkanHelpers.h>

namespace igl::vulkan {
Expand Down
1 change: 0 additions & 1 deletion src/igl/vulkan/VulkanExtensions.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
#include <vector>

#include <igl/vulkan/Common.h>
#include <igl/vulkan/VulkanFunctions.h>
#include <igl/vulkan/VulkanHelpers.h>

namespace igl::vulkan {
Expand Down
1 change: 0 additions & 1 deletion src/igl/vulkan/VulkanFence.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
#include <memory>

#include <igl/vulkan/Common.h>
#include <igl/vulkan/VulkanFunctions.h>
#include <igl/vulkan/VulkanHelpers.h>

namespace igl::vulkan {
Expand Down
76 changes: 0 additions & 76 deletions src/igl/vulkan/VulkanFunctions.cpp

This file was deleted.

20 changes: 0 additions & 20 deletions src/igl/vulkan/VulkanFunctions.h

This file was deleted.

1 change: 0 additions & 1 deletion src/igl/vulkan/VulkanPipelineBuilder.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
#pragma once

#include <igl/vulkan/Common.h>
#include <igl/vulkan/VulkanFunctions.h>
#include <igl/vulkan/VulkanHelpers.h>
#include <vector>

Expand Down
1 change: 0 additions & 1 deletion src/igl/vulkan/VulkanQueuePool.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
#include <vector>

#include <igl/vulkan/Common.h>
#include <igl/vulkan/VulkanFunctions.h>

namespace igl::vulkan {

Expand Down
1 change: 0 additions & 1 deletion src/igl/vulkan/VulkanRenderPassBuilder.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@

#include <igl/vulkan/Common.h>

#include <igl/vulkan/VulkanFunctions.h>
#include <igl/vulkan/VulkanHelpers.h>
#include <vector>

Expand Down
1 change: 0 additions & 1 deletion src/igl/vulkan/VulkanSemaphore.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
#include <memory>

#include <igl/vulkan/Common.h>
#include <igl/vulkan/VulkanFunctions.h>
#include <igl/vulkan/VulkanHelpers.h>

namespace igl::vulkan {
Expand Down
1 change: 0 additions & 1 deletion src/igl/vulkan/VulkanShaderModule.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
#include <vector>

#include <igl/vulkan/Common.h>
#include <igl/vulkan/VulkanFunctions.h>
#include <igl/vulkan/VulkanHelpers.h>
#include <igl/vulkan/util/SpvReflection.h>

Expand Down

0 comments on commit 8c591a7

Please sign in to comment.