28 void setup_backend_service(
const std::shared_ptr<Registry::Service::BufferService>& buffer_service);
38 void initialize_buffer(
const std::shared_ptr<Buffers::VKBuffer>& buffer);
44 void cleanup_buffer(
const std::shared_ptr<Buffers::VKBuffer>& buffer);
49 void flush_pending_buffer_operations();
66 void initialize_image(
const std::shared_ptr<VKImage>& image);
72 void cleanup_image(
const std::shared_ptr<VKImage>& image);
85 void transition_image_layout(
87 vk::ImageLayout old_layout,
88 vk::ImageLayout new_layout,
89 uint32_t mip_levels = 1,
90 uint32_t array_layers = 1,
91 vk::ImageAspectFlags aspect_flags = vk::ImageAspectFlagBits::eColor);
99 void upload_image_data(
100 std::shared_ptr<VKImage> image,
110 void download_image_data(
111 std::shared_ptr<VKImage> image,
126 vk::Sampler create_sampler(
127 vk::Filter filter = vk::Filter::eLinear,
128 vk::SamplerAddressMode address_mode = vk::SamplerAddressMode::eRepeat,
129 float max_anisotropy = 0.0F);
134 void destroy_sampler(vk::Sampler sampler);
146 uint32_t find_memory_type(uint32_t type_filter, vk::MemoryPropertyFlags properties)
const;
156 void execute_immediate_commands(
const std::function<
void(vk::CommandBuffer)>& recorder);
162 void record_deferred_commands(
const std::function<
void(vk::CommandBuffer)>& recorder);
177 size_t compute_sampler_hash(vk::Filter filter, vk::SamplerAddressMode address_mode,
float max_anisotropy)
const;
High-level wrapper for Vulkan instance and device.