Files
MacroLibX/runtime/Sources/Renderer/Vulkan/VulkanLoader.h
2024-09-16 05:07:02 +02:00

44 lines
1.1 KiB
C++

#ifndef __MLX_VULKAN_LOADER__
#define __MLX_VULKAN_LOADER__
#include <mlx_profile.h>
#ifdef MLX_PLAT_WINDOWS
typedef const char* LPCSTR;
typedef struct HINSTANCE__* HINSTANCE;
typedef HINSTANCE HMODULE;
#if defined(_MINWINDEF_)
/* minwindef.h defines FARPROC, and attempting to redefine it may conflict with -Wstrict-prototypes */
#elif defined(_WIN64)
typedef __int64 (__stdcall* FARPROC)(void);
#else
typedef int (__stdcall* FARPROC)(void);
#endif
#endif
namespace mlx
{
class VulkanLoader
{
public:
VulkanLoader();
void LoadInstance(VkInstance instance);
void LoadDevice(VkDevice device);
~VulkanLoader();
private:
void LoadGlobalFunctions(void* context, PFN_vkVoidFunction (*load)(void*, const char*)) noexcept;
void LoadInstanceFunctions(void* context, PFN_vkVoidFunction (*load)(void*, const char*)) noexcept;
void LoadDeviceFunctions(void* context, PFN_vkVoidFunction (*load)(void*, const char*)) noexcept;
private:
#ifdef MLX_PLAT_WINDOWS
HMODULE p_module = nullptr;
#else
Handle p_module = nullptr;
#endif
};
}
#endif