-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvkc_device.h
62 lines (49 loc) · 1.48 KB
/
vkc_device.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#ifndef VKC_DEVICE_H
#define VKC_DEVICE_H
#include "stable.h"
#define ACTIVE_FAMILY 0
/**
* Struct used for device queues.
*
* Classes named "Vkc[class]" stand for "Vulkan custom class".
*/
struct VkcQueueFamily
{
uint32_t index = UINT32_MAX;
VkCommandPool commandPool = VK_NULL_HANDLE;
QVector<VkQueue> queues = {};
QVector<VkCommandBuffer> commandBuffers = {};
VkQueueFamilyProperties properties = {};
};
/**
* Class used for devices.
*
* Classes named "Vkc[class]" stand for "Vulkan custom class".
*/
class VkcDevice
{
// Objects:
public:
VkPhysicalDevice physical;
VkDevice logical;
QVector<VkcQueueFamily> queueFamilies;
VkPhysicalDeviceProperties properties;
VkPhysicalDeviceFeatures features;
VkPhysicalDeviceMemoryProperties memoryProperties;
// Functions
public:
VkcDevice();
VkcDevice(
VkPhysicalDevice physicalDevice
);
~VkcDevice();
void getQueueFamilies(
QVector<uint32_t> &queueFamilies
) const;
VkResult getMemoryTypeIndex(
VkMemoryPropertyFlags propertyMask,
VkMemoryRequirements requirements,
uint32_t* pTypeIdx
) const;
};
#endif // VKC_DEVICE_H