PixelBullet  0.0.1
A C++ game engine
Loading...
Searching...
No Matches
descriptor.h
1#pragma once
2
3#include <volk.h>
4
5#include <cstdint>
6#include <memory>
7#include <optional>
8
9namespace pixelbullet
10{
12{
13public:
14 OffsetSize(uint32_t offset, uint32_t size)
15 : offset_(offset)
16 , size_(size)
17 {
18 }
19
20 uint32_t GetOffset() const
21 {
22 return offset_;
23 }
24 uint32_t GetSize() const
25 {
26 return size_;
27 }
28
29 bool operator==(const OffsetSize& rhs) const
30 {
31 return offset_ == rhs.offset_ && size_ == rhs.size_;
32 }
33
34 bool operator!=(const OffsetSize& rhs) const
35 {
36 return !operator==(rhs);
37 }
38
39private:
40 uint32_t offset_;
41 uint32_t size_;
42};
43
45{
46public:
47 WriteDescriptorSet(const VkWriteDescriptorSet& writeDescriptorSet, const VkDescriptorImageInfo& imageInfo)
48 : write_descriptor_set_(writeDescriptorSet)
49 , image_info_(std::make_unique<VkDescriptorImageInfo>(imageInfo))
50 {
51 this->write_descriptor_set_.descriptorCount = 1;
52 this->write_descriptor_set_.pImageInfo = image_info_ ? image_info_.get() : nullptr;
53 }
54
55 WriteDescriptorSet(const VkWriteDescriptorSet& writeDescriptorSet, const VkDescriptorBufferInfo& bufferInfo)
56 : write_descriptor_set_(writeDescriptorSet)
57 , buffer_info_(std::make_unique<VkDescriptorBufferInfo>(bufferInfo))
58 {
59 this->write_descriptor_set_.descriptorCount = 1;
60 this->write_descriptor_set_.pBufferInfo = buffer_info_ ? buffer_info_.get() : nullptr;
61 }
62
63 const VkWriteDescriptorSet& GetWriteDescriptorSet() const
64 {
65 return write_descriptor_set_;
66 }
67
68private:
69 VkWriteDescriptorSet write_descriptor_set_;
70 std::unique_ptr<VkDescriptorImageInfo> image_info_;
71 std::unique_ptr<VkDescriptorBufferInfo> buffer_info_;
72};
73
75{
76public:
77 Descriptor() = default;
78 virtual ~Descriptor() = default;
79
80 virtual WriteDescriptorSet GetWriteDescriptor(uint32_t binding, VkDescriptorType descriptorType,
81 const std::optional<OffsetSize>& offsetSize) const = 0;
82
83 virtual uint64_t GetRevision() const
84 {
85 return 0;
86 }
87};
88} // namespace pixelbullet
Definition descriptor.h:75
Definition descriptor.h:12
Definition descriptor.h:45