Foray Library
rapid prototyping framework for crossplatform development of vulkan hardware ray tracing applications
Loading...
Searching...
No Matches
foray_vulkandevice.hpp
Go to the documentation of this file.
1#pragma once
2#include "../foray_basics.hpp"
3#include "../foray_vkb.hpp"
4#include <functional>
5
6namespace foray::base {
9 {
10 public:
12 using BeforePhysicalDeviceSelectFunctionPointer = std::function<void(vkb::PhysicalDeviceSelector&)>;
14 using BeforeDeviceBuildFunctionPointer = std::function<void(vkb::DeviceBuilder&)>;
15
16 VulkanDevice() = default;
19 inline VulkanDevice(core::Context* context, BeforePhysicalDeviceSelectFunctionPointer beforePhysicalDeviceSelectFunc, BeforeDeviceBuildFunctionPointer beforeDeviceBuildFunc)
20 : mBeforePhysicalDeviceSelectFunc{beforePhysicalDeviceSelectFunc}, mBeforeDeviceBuildFunc{beforeDeviceBuildFunc}, mContext{context}
21 {
22 }
23
24 inline operator bool() const { return !!mDevice.device; }
25 inline operator VkDevice() const { return mDevice.device; }
26 inline operator VkPhysicalDevice() const { return mPhysicalDevice.physical_device; }
27 inline operator vkb::Device&() { return mDevice; }
28 inline operator const vkb::Device&() const { return mDevice; }
29
34
35 FORAY_PROPERTY_V(SetDefaultCapabilitiesToDeviceSelector)
36 FORAY_PROPERTY_V(EnableDefaultDeviceFeatures)
37 FORAY_PROPERTY_V(EnableDefaultPhysicalDeviceFeatures)
38 FORAY_PROPERTY_V(ShowConsoleDeviceSelectionPrompt)
39 FORAY_PROPERTY_R(PhysicalDeviceFeatures)
40 FORAY_PROPERTY_R(PhysicalDevice)
41 FORAY_PROPERTY_R(Device)
42 FORAY_PROPERTY_R(DispatchTable)
43 FORAY_PROPERTY_V(Context)
44
45
47 void Create();
54 inline bool Exists() const { return !!mDevice.device; }
55 void Destroy();
56
58
59 protected:
62
69
72
74
75 vkb::PhysicalDevice mPhysicalDevice;
76 vkb::Device mDevice;
77 vkb::DispatchTable mDispatchTable;
78
80 {
81 VkPhysicalDeviceBufferDeviceAddressFeatures BufferDeviceAdressFeatures = {};
82 VkPhysicalDeviceRayTracingPipelineFeaturesKHR RayTracingPipelineFeatures = {};
83 VkPhysicalDeviceAccelerationStructureFeaturesKHR AccelerationStructureFeatures = {};
84 VkPhysicalDeviceDescriptorIndexingFeaturesEXT DescriptorIndexingFeatures = {};
85 VkPhysicalDeviceSynchronization2Features Sync2FEatures = {};
87
88 VkPhysicalDeviceFeatures mPhysicalDeviceFeatures{};
89 };
90} // namespace foray::base
Wraps selection and creation of a vulkan logical device.
Definition foray_vulkandevice.hpp:9
void BuildDevice()
If mEnableDefaultDeviceFeatures is set, configures defaults. If mBeforeDeviceBuildFunc is set,...
VulkanDevice & SetBeforePhysicalDeviceSelectFunc(BeforePhysicalDeviceSelectFunctionPointer beforePhysicalDeviceSelectFunc)
Set the function called after default configuration and before action with physical device selector.
vkb::DispatchTable mDispatchTable
Definition foray_vulkandevice.hpp:77
BeforeDeviceBuildFunctionPointer mBeforeDeviceBuildFunc
Definition foray_vulkandevice.hpp:61
bool mEnableDefaultPhysicalDeviceFeatures
Enables features a few physical device features (anisotrophy, etc.)
Definition foray_vulkandevice.hpp:68
vkb::Device mDevice
Definition foray_vulkandevice.hpp:76
bool Exists() const
Definition foray_vulkandevice.hpp:54
core::Context * mContext
Definition foray_vulkandevice.hpp:73
vkb::PhysicalDevice mPhysicalDevice
Definition foray_vulkandevice.hpp:75
std::function< void(vkb::PhysicalDeviceSelector &)> BeforePhysicalDeviceSelectFunctionPointer
Function called after default configuration and before action with physical device selector.
Definition foray_vulkandevice.hpp:12
VulkanDevice(core::Context *context, BeforePhysicalDeviceSelectFunctionPointer beforePhysicalDeviceSelectFunc, BeforeDeviceBuildFunctionPointer beforeDeviceBuildFunc)
Definition foray_vulkandevice.hpp:19
VulkanDevice & SetBeforeDeviceBuildFunc(BeforeDeviceBuildFunctionPointer beforeDeviceBuildFunc)
Set the function called after default configuration and before action with device builder.
std::function< void(vkb::DeviceBuilder &)> BeforeDeviceBuildFunctionPointer
Function called after default configuration and before action with device builder.
Definition foray_vulkandevice.hpp:14
struct foray::base::VulkanDevice::DefaultFeatures mDefaultFeatures
void SelectPhysicalDevice()
If mSetDefaultCapabilitiesToDeviceSelector is set, configures defaults. If mBeforePhysicalDeviceSelec...
BeforePhysicalDeviceSelectFunctionPointer mBeforePhysicalDeviceSelectFunc
Definition foray_vulkandevice.hpp:60
void Create()
Create logical device by invoking SelectPhysicalDevice(..,) and BuildDevice()
bool mSetDefaultCapabilitiesToDeviceSelector
Requires present capability, prefers dedicated devices. Enables VK_KHR_ACCELERATION_STRUCTURE,...
Definition foray_vulkandevice.hpp:64
VkPhysicalDeviceFeatures mPhysicalDeviceFeatures
Definition foray_vulkandevice.hpp:88
bool mEnableDefaultDeviceFeatures
Enables features listed in mDefaultFeatures member.
Definition foray_vulkandevice.hpp:66
bool mShowConsoleDeviceSelectionPrompt
If enabled, prompts the user in the console to select a device if multiple suitable devices are prese...
Definition foray_vulkandevice.hpp:71
#define FORAY_PROPERTY_V(member)
Getter+Setter shorthand for value types.
Definition foray_basics.hpp:81
#define FORAY_PROPERTY_R(member)
Getter+Setter shorthand for reference types.
Definition foray_basics.hpp:86
Definition foray_base_declares.hpp:3
Definition foray_vulkandevice.hpp:80
VkPhysicalDeviceAccelerationStructureFeaturesKHR AccelerationStructureFeatures
Definition foray_vulkandevice.hpp:83
VkPhysicalDeviceDescriptorIndexingFeaturesEXT DescriptorIndexingFeatures
Definition foray_vulkandevice.hpp:84
VkPhysicalDeviceRayTracingPipelineFeaturesKHR RayTracingPipelineFeatures
Definition foray_vulkandevice.hpp:82
VkPhysicalDeviceSynchronization2Features Sync2FEatures
Definition foray_vulkandevice.hpp:85
VkPhysicalDeviceBufferDeviceAddressFeatures BufferDeviceAdressFeatures
Definition foray_vulkandevice.hpp:81
Non owning context object.
Definition foray_context.hpp:16