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);
51 [[nodiscard]] vk::DeviceAddress get_buffer_device_address(
52 const std::shared_ptr<Buffers::VKBuffer>& buffer)
const;
57 void flush_pending_buffer_operations();
74 void initialize_image(
const std::shared_ptr<VKImage>&
image);
80 void cleanup_image(
const std::shared_ptr<VKImage>&
image);
93 void transition_image_layout(
95 vk::ImageLayout old_layout,
96 vk::ImageLayout new_layout,
97 uint32_t mip_levels = 1,
98 uint32_t array_layers = 1,
99 vk::ImageAspectFlags aspect_flags = vk::ImageAspectFlagBits::eColor);
107 void upload_image_data(
108 std::shared_ptr<VKImage>
image,
122 void upload_image_data_with_staging(
123 std::shared_ptr<VKImage>
image,
126 const std::shared_ptr<Buffers::VKBuffer>& staging);
145 void download_image_data(
146 std::shared_ptr<VKImage>
image,
149 vk::ImageLayout restore_layout = vk::ImageLayout::eShaderReadOnlyOptimal,
150 vk::PipelineStageFlags restore_stage = vk::PipelineStageFlagBits::eFragmentShader);
164 vk::Filter filter = vk::Filter::eLinear,
165 vk::SamplerAddressMode address_mode = vk::SamplerAddressMode::eRepeat,
166 float max_anisotropy = 0.0F);
171 void destroy_sampler(vk::Sampler sampler);
183 uint32_t find_memory_type(uint32_t type_filter, vk::MemoryPropertyFlags properties)
const;
193 void execute_immediate_commands(
const std::function<
void(vk::CommandBuffer)>& recorder);
199 void record_deferred_commands(
const std::function<
void(vk::CommandBuffer)>& recorder);
214 size_t compute_sampler_hash(vk::Filter filter, vk::SamplerAddressMode address_mode,
float max_anisotropy)
const;
High-level wrapper for Vulkan instance and device.
std::shared_ptr< Kriya::SamplingPipeline > create_sampler(const std::string &filepath, uint32_t num_samples, bool truncate, uint32_t channel, uint64_t max_dur_ms)
Construct a built SamplingPipeline from an audio file.