Toast Engine
Loading...
Searching...
No Matches
descriptor_writer.hpp
Go to the documentation of this file.
1
6
7#pragma once
8
9#include "vulkan_common.hpp"
10
11#include <cstdint>
12#include <deque>
13#include <span>
14#include <vector>
15
16namespace renderer {
17
19public:
20 auto buffer(
21 vk::DescriptorSet set, uint32_t binding, vk::DescriptorType type, vk::Buffer buffer, vk::DeviceSize range = VK_WHOLE_SIZE,
22 vk::DeviceSize offset = 0
23 ) -> DescriptorWriter&;
24
25 auto image(
26 vk::DescriptorSet set, uint32_t binding, vk::DescriptorType type, vk::Sampler sampler, vk::ImageView view,
27 vk::ImageLayout layout
28 ) -> DescriptorWriter&;
29
30 auto
31 imageArray(vk::DescriptorSet set, uint32_t binding, vk::DescriptorType type, std::span<const vk::DescriptorImageInfo> infos)
33
34 auto accelerationStructure(vk::DescriptorSet set, uint32_t binding, vk::AccelerationStructureKHR structure)
36
37 void flush(const vk::raii::Device& device);
38
39private:
40 std::vector<vk::WriteDescriptorSet> m_writes;
41
42 // Deques since writes point into these and a deque never moves its elements
43 std::deque<vk::DescriptorBufferInfo> m_buffer_infos;
44 std::deque<std::vector<vk::DescriptorImageInfo>> m_image_infos;
45 std::deque<vk::AccelerationStructureKHR> m_structures;
46 std::deque<vk::WriteDescriptorSetAccelerationStructureKHR> m_structure_writes;
47};
48
49}
Definition descriptor_writer.hpp:18