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,
123 void upload_image_data(
124 std::shared_ptr<VKImage>
image,
127 const std::shared_ptr<Buffers::VKBuffer>& staging,
bool deferred =
false);
146 void download_image_data(
147 std::shared_ptr<VKImage>
image,
150 vk::ImageLayout restore_layout = vk::ImageLayout::eShaderReadOnlyOptimal,
151 vk::PipelineStageFlags restore_stage = vk::PipelineStageFlagBits::eFragmentShader);
165 vk::Filter filter = vk::Filter::eLinear,
166 vk::SamplerAddressMode address_mode = vk::SamplerAddressMode::eRepeat,
167 float max_anisotropy = 0.0F);
172 void destroy_sampler(vk::Sampler sampler);
184 uint32_t find_memory_type(uint32_t type_filter, vk::MemoryPropertyFlags properties)
const;
194 void execute_immediate_commands(
const std::function<
void(vk::CommandBuffer)>& recorder);
200 void record_deferred_commands(
const std::function<
void(vk::CommandBuffer)>& recorder);
206 vk::Semaphore flush_deferred_commands();
221 vk::Semaphore m_deferred_semaphore {};
223 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.