diff options
author | Steven Le Rouzic <steven.lerouzic@gmail.com> | 2024-04-30 22:20:36 +0200 |
---|---|---|
committer | Steven Le Rouzic <steven.lerouzic@gmail.com> | 2024-04-30 22:20:36 +0200 |
commit | 89ae6838075f3579a85d7824d49a051b90c8ed92 (patch) | |
tree | 6369a8af2bef2929a89c8cceb16aded1bc4941fe /deimos/vulkan | |
parent | e02f9fd89b059919baf3a8d8bf8b783470976a27 (diff) |
Vulkan device & queue creation
Diffstat (limited to 'deimos/vulkan')
-rw-r--r-- | deimos/vulkan/BUILD | 1 | ||||
-rw-r--r-- | deimos/vulkan/vulkan.h | 2 | ||||
-rw-r--r-- | deimos/vulkan/vulkan_device_functions.inc | 4 | ||||
-rw-r--r-- | deimos/vulkan/vulkan_instance_functions.inc | 2 | ||||
-rw-r--r-- | deimos/vulkan/vulkan_loader.cpp | 11 |
5 files changed, 20 insertions, 0 deletions
diff --git a/deimos/vulkan/BUILD b/deimos/vulkan/BUILD index 8f0a79e..5eae9ef 100644 --- a/deimos/vulkan/BUILD +++ b/deimos/vulkan/BUILD @@ -8,6 +8,7 @@ cc_library( "vulkan_bootstrap_functions.inc",
"vulkan_entry_functions.inc",
"vulkan_instance_functions.inc",
+ "vulkan_device_functions.inc",
],
deps = [
"//deimos/core",
diff --git a/deimos/vulkan/vulkan.h b/deimos/vulkan/vulkan.h index 4315230..f116fc0 100644 --- a/deimos/vulkan/vulkan.h +++ b/deimos/vulkan/vulkan.h @@ -23,6 +23,7 @@ struct VulkanApi #include "deimos/vulkan/vulkan_bootstrap_functions.inc"
#include "deimos/vulkan/vulkan_entry_functions.inc"
#include "deimos/vulkan/vulkan_instance_functions.inc"
+#include "deimos/vulkan/vulkan_device_functions.inc"
#undef FN
};
@@ -38,6 +39,7 @@ public: virtual VulkanApi* LoadEntry() = 0;
virtual void LoadInstance(VulkanApi*, VkInstance) = 0;
+ virtual void LoadDevice(VulkanApi*, VkDevice) = 0;
};
void RegisterVulkanLoaderApi(ApiRegistry*);
diff --git a/deimos/vulkan/vulkan_device_functions.inc b/deimos/vulkan/vulkan_device_functions.inc new file mode 100644 index 0000000..8267fb9 --- /dev/null +++ b/deimos/vulkan/vulkan_device_functions.inc @@ -0,0 +1,4 @@ +// NOLINTBEGIN
+FN(DestroyDevice)
+FN(GetDeviceQueue)
+// NOLINTEND
diff --git a/deimos/vulkan/vulkan_instance_functions.inc b/deimos/vulkan/vulkan_instance_functions.inc index 34535ad..c9862a5 100644 --- a/deimos/vulkan/vulkan_instance_functions.inc +++ b/deimos/vulkan/vulkan_instance_functions.inc @@ -3,4 +3,6 @@ FN(EnumeratePhysicalDevices) FN(GetPhysicalDeviceProperties2)
FN(GetPhysicalDeviceQueueFamilyProperties)
FN(DestroyInstance)
+FN(CreateDevice)
+FN(GetDeviceProcAddr)
// NOLINTEND
diff --git a/deimos/vulkan/vulkan_loader.cpp b/deimos/vulkan/vulkan_loader.cpp index 0760c67..b9980af 100644 --- a/deimos/vulkan/vulkan_loader.cpp +++ b/deimos/vulkan/vulkan_loader.cpp @@ -57,6 +57,17 @@ public: #include "deimos/vulkan/vulkan_instance_functions.inc"
#undef FN
}
+
+ void LoadDevice(VulkanApi* api, VkDevice device) override
+ {
+ Expects(api != nullptr);
+ Expects(device != VK_NULL_HANDLE);
+ Expects(api->GetDeviceProcAddr != nullptr);
+
+#define FN(NAME) api->NAME = (PFN_vk##NAME)api->GetDeviceProcAddr(device, "vk" #NAME);
+#include "deimos/vulkan/vulkan_device_functions.inc"
+#undef FN
+ }
};
void RegisterVulkanLoaderApi(ApiRegistry* registry)
|