wren
Vulkan-based game engine
Loading...
Searching...
No Matches
vulkan.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <spdlog/spdlog.h>
4#include <vulkan/vk_platform.h>
5#include <vulkan/vulkan_core.h>
6
7#include <tl/expected.hpp>
8#include <vector>
9#include <vulkan/vulkan.hpp>
10#include <vulkan/vulkan_enums.hpp>
11#include <vulkan/vulkan_handles.hpp>
12#include <vulkan/vulkan_structs.hpp>
13#include <wren/utils/errors.hpp>
14
15// VKAPI_ATTR auto VKAPI_CALL vkCreateDebugUtilsMessengerEXT(
16// VkInstance instance,
17// VkDebugUtilsMessengerCreateInfoEXT const *pCreateInfo,
18// VkAllocationCallbacks const *pAllocator,
19// VkDebugUtilsMessengerEXT *pMessenger) -> VkResult;
20//
21// VKAPI_ATTR auto VKAPI_CALL vkCmdPushDescriptorSetKHR(
22// VkCommandBuffer buffer, VkPipelineLayout layout,
23// VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size,
24// void const *pValues);
25
26namespace wren::vulkan {
28 ::vk::SurfaceCapabilitiesKHR surface_capabilites;
29 std::vector<::vk::SurfaceFormatKHR> surface_formats;
30 std::vector<::vk::PresentModeKHR> present_modes;
31};
32
33auto load_functions(const ::vk::Instance &instance) -> expected<void>;
34
35auto get_swapchain_support_details(const ::vk::PhysicalDevice &physical_device,
36 const ::vk::SurfaceKHR &surface)
38
39VKAPI_ATTR auto VKAPI_CALL
40debug_callback(VkDebugUtilsMessageSeverityFlagBitsEXT message_severity,
41 VkDebugUtilsMessageTypeFlagsEXT message_type,
42 const VkDebugUtilsMessengerCallbackDataEXT *p_callback_data,
43 void *p_user_data) -> VkBool32;
44
45inline auto is_extension_supported(const std::string_view &name) -> bool {
46 const auto res = ::vk::enumerateInstanceExtensionProperties();
47
48 bool found = false;
49 for (const auto &ext : res.value) {
50 if (std::strcmp(ext.extensionName.data(), name.data())) {
51 found = true;
52 break;
53 }
54 }
55
56 return found;
57}
58
59inline auto is_layer_supported(const std::string_view &name) -> bool {
60 const auto res = ::vk::enumerateInstanceLayerProperties();
61
62 bool found = false;
63 for (const auto &ext : res.value) {
64 if (std::strcmp(ext.layerName, name.data())) {
65 found = true;
66 break;
67 }
68 }
69
70 return found;
71}
72
73inline auto is_device_extension_supported(const std::string_view &name,
74 const ::vk::PhysicalDevice &device) {
75 const auto res = device.enumerateDeviceExtensionProperties();
76
77 bool found = false;
78 for (const auto &ext : res.value) {
79 if (std::strcmp(ext.extensionName, name.data())) {
80 found = true;
81 break;
82 }
83 }
84
85 return found;
86}
87
88} // namespace wren::vulkan
Definition device.cpp:13
auto get_swapchain_support_details(const ::vk::PhysicalDevice &physical_device, const ::vk::SurfaceKHR &surface) -> expected< SwapchainSupportDetails >
Definition vulkan.cpp:78
auto is_device_extension_supported(const std::string_view &name, const ::vk::PhysicalDevice &device)
Definition vulkan.hpp:73
auto is_extension_supported(const std::string_view &name) -> bool
Definition vulkan.hpp:45
auto load_functions(const ::vk::Instance &instance) -> expected< void >
Definition vulkan.cpp:45
auto is_layer_supported(const std::string_view &name) -> bool
Definition vulkan.hpp:59
auto debug_callback(VkDebugUtilsMessageSeverityFlagBitsEXT severity, VkDebugUtilsMessageTypeFlagsEXT type, const VkDebugUtilsMessengerCallbackDataEXT *msg_data, void *user_data) -> VkBool32
Definition vulkan.cpp:52
tl::expected< T, Err > expected
Definition errors.hpp:49
::vk::SurfaceCapabilitiesKHR surface_capabilites
Definition vulkan.hpp:28
std::vector<::vk::PresentModeKHR > present_modes
Definition vulkan.hpp:30
std::vector<::vk::SurfaceFormatKHR > surface_formats
Definition vulkan.hpp:29