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