MayaFlux 0.5.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 278 of file StagingUtils.cpp.

283{
284 if (!target) {
285 error<std::invalid_argument>(
286 Journal::Component::Buffers,
287 Journal::Context::BufferProcessing,
288 std::source_location::current(),
289 "upload_to_gpu: target buffer is null");
290 }
291
292 if (size == 0) {
293 return;
294 }
295
296 std::vector<uint8_t> raw_bytes(size);
297 std::memcpy(raw_bytes.data(), data, size);
298 Kakshya::DataVariant data_variant(raw_bytes);
299
300 if (target->is_host_visible()) {
301 upload_host_visible(target, data_variant);
302 } else {
303 std::shared_ptr<VKBuffer> staging_buf = staging;
304
305 if (!staging_buf) {
306 staging_buf = create_staging_buffer(size);
307 }
308
309 upload_device_local(target, staging_buf, data_variant);
310 }
311}
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(), upload_device_local(), and upload_host_visible().

Referenced by MayaFlux::Buffers::FormaBindingsProcessor::flush_descriptor(), MayaFlux::Buffers::NodeTextureProcessor::initialize_gpu_resources(), MayaFlux::IO::ImageReader::load_into_buffer(), MayaFlux::Buffers::FormaProcessor::processing_function(), MayaFlux::Buffers::CompositeGeometryProcessor::processing_function(), MayaFlux::Buffers::NetworkGeometryProcessor::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(), MayaFlux::Buffers::DataWriteProcessor::upload_raw(), upload_resizing(), MayaFlux::Buffers::DataWriteProcessor::upload_secondary(), upload_structured_view(), upload_to_gpu(), upload_to_gpu(), and MayaFlux::Buffers::DataWriteProcessor::upload_vertex().

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