30 void processing_function(std::shared_ptr<Buffer> buffer)
override;
31 void on_attach(std::shared_ptr<Buffer> buffer)
override;
32 void on_detach(std::shared_ptr<Buffer> buffer)
override;
34 [[nodiscard]]
bool is_compatible_with(std::shared_ptr<Buffer> buffer)
const override;
41 void configure_source(
const std::shared_ptr<Buffer>& target, std::shared_ptr<Buffer> source);
47 void remove_source(
const std::shared_ptr<Buffer>& target);
54 [[nodiscard]] std::shared_ptr<Buffer> get_source(
const std::shared_ptr<Buffer>& target)
const;
58 std::unordered_map<std::shared_ptr<Buffer>, std::shared_ptr<Buffer>>
m_source_map;
63 void ensure_staging_buffer(
const std::shared_ptr<VKBuffer>& target);
void upload_device_local(const std::shared_ptr< VKBuffer > &target, const std::shared_ptr< VKBuffer > &staging_buffer, const Kakshya::DataVariant &data)
Upload data to a device-local buffer using a staging buffer.
std::variant< std::vector< double >, std::vector< float >, std::vector< uint8_t >, std::vector< uint16_t >, std::vector< uint32_t >, std::vector< std::complex< float > >, std::vector< std::complex< double > >, std::vector< glm::vec2 >, std::vector< glm::vec3 >, std::vector< glm::vec4 >, std::vector< glm::mat4 > > DataVariant
Multi-type data storage for different precision needs.