MayaFlux 0.4.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ upload_to_gpu() [2/3]

MAYAFLUX_API void MayaFlux::Buffers::upload_to_gpu ( const void *  data,
size_t  size,
const std::shared_ptr< VKBuffer > &  target,
const std::shared_ptr< VKBuffer > &  staging = nullptr 
)

Upload raw data to GPU buffer (auto-detects host-visible vs device-local)

Parameters
dataSource data pointer
sizeSize in bytes
targetTarget GPU buffer
stagingOptional staging buffer (created if needed for device-local)

Convenience wrapper over StagingUtils that:

  • Converts raw pointer → DataVariant
  • Auto-detects if buffer is host-visible or device-local
  • Handles staging buffer creation if needed

Definition at line 291 of file StagingUtils.cpp.

296{
297 if (!target) {
298 error<std::invalid_argument>(
299 Journal::Component::Buffers,
300 Journal::Context::BufferProcessing,
301 std::source_location::current(),
302 "upload_to_gpu: target buffer is null");
303 }
304
305 if (size == 0) {
306 return;
307 }
308
309 std::vector<uint8_t> raw_bytes(size);
310 std::memcpy(raw_bytes.data(), data, size);
311 Kakshya::DataVariant data_variant(raw_bytes);
312
313 if (target->is_host_visible()) {
314 upload_host_visible(target, data_variant);
315 } else {
316 std::shared_ptr<VKBuffer> staging_buf = staging;
317
318 if (!staging_buf) {
319 staging_buf = create_staging_buffer(size);
320 }
321
322 upload_device_local(target, staging_buf, data_variant);
323 }
324}
Range size
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::shared_ptr< VKBuffer > create_staging_buffer(size_t size)
Create staging buffer for transfers.

References MayaFlux::Journal::BufferProcessing, MayaFlux::Journal::Buffers, create_staging_buffer(), size, upload_device_local(), and upload_host_visible().

Referenced by MayaFlux::Buffers::NodeTextureProcessor::initialize_gpu_resources(), MayaFlux::IO::ImageReader::load_into_buffer(), MayaFlux::Buffers::CompositeGeometryProcessor::processing_function(), MayaFlux::Buffers::GeometryWriteProcessor::processing_function(), MayaFlux::Buffers::AggregateBindingsProcessor::processing_function(), MayaFlux::Buffers::DescriptorBindingsProcessor::update_from_buffer(), MayaFlux::Buffers::DescriptorBindingsProcessor::update_from_network(), MayaFlux::Buffers::DescriptorBindingsProcessor::update_from_node(), MayaFlux::Buffers::TextureProcessor::update_geometry_if_dirty(), upload_audio_to_gpu(), MayaFlux::Buffers::MeshNetworkProcessor::upload_combined(), upload_from_view(), MayaFlux::Nexus::Emitter::upload_influence_ubo(), MayaFlux::Buffers::TextureProcessor::upload_initial_geometry(), upload_resizing(), upload_structured_view(), upload_to_gpu(), and upload_to_gpu().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: