PixelBullet  0.0.1
A C++ game engine
Loading...
Searching...
No Matches
logical_device.h
1#pragma once
2
3#include <volk.h>
4
5#include <vector>
6
7namespace pixelbullet
8{
9class Instance;
10class PhysicalDevice;
11
13{
14 friend class Graphics;
15
16public:
17 LogicalDevice(const Instance& instance, const PhysicalDevice& physical_device);
19
20 operator const VkDevice&() const
21 {
22 return logical_device_;
23 }
24
25 const VkDevice& GetLogicalDevice() const
26 {
27 return logical_device_;
28 }
29 const VkPhysicalDeviceFeatures& GetEnabledFeatures() const
30 {
31 return enabled_features_;
32 }
33 const VkQueue& GetGraphicsQueue() const
34 {
35 return graphics_queue_;
36 }
37 const VkQueue& GetPresentQueue() const
38 {
39 return present_queue_;
40 }
41 const VkQueue& GetComputeQueue() const
42 {
43 return compute_queue_;
44 }
45 const VkQueue& GetTransferQueue() const
46 {
47 return transfer_queue_;
48 }
49 uint32_t GetGraphicsFamily() const
50 {
51 return graphics_family_;
52 }
53 uint32_t GetPresentFamily() const
54 {
55 return present_family_;
56 }
57 uint32_t GetComputeFamily() const
58 {
59 return compute_family_;
60 }
61 uint32_t GetTransferFamily() const
62 {
63 return transfer_family_;
64 }
65
66 static const std::vector<const char*> device_extensions;
67
68private:
69 void CreateQueueIndices();
70 void CreateLogicalDevice();
71
72 const Instance& instance_;
73 const PhysicalDevice& physical_device_;
74
75 VkDevice logical_device_ = VK_NULL_HANDLE;
76 VkPhysicalDeviceFeatures enabled_features_ = {};
77
78 VkQueueFlags supported_queues_ = {};
79 uint32_t graphics_family_ = 0;
80 uint32_t present_family_ = 0;
81 uint32_t compute_family_ = 0;
82 uint32_t transfer_family_ = 0;
83
84 VkQueue graphics_queue_ = VK_NULL_HANDLE;
85 VkQueue present_queue_ = VK_NULL_HANDLE;
86 VkQueue compute_queue_ = VK_NULL_HANDLE;
87 VkQueue transfer_queue_ = VK_NULL_HANDLE;
88};
89} // namespace pixelbullet
Module that manages the Vulkan instance_, Surface, Window and the renderpass structure.
Definition graphics.h:36
Definition instance.h:17
Definition logical_device.h:13
Definition physical_device.h:12