MayaFlux 0.1.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 246 of file StagingUtils.cpp.

251{
252 if (!target) {
253 error<std::invalid_argument>(
254 Journal::Component::Buffers,
255 Journal::Context::BufferProcessing,
256 std::source_location::current(),
257 "upload_to_gpu: target buffer is null");
258 }
259
260 if (size == 0) {
261 return;
262 }
263
264 std::vector<uint8_t> raw_bytes(size);
265 std::memcpy(raw_bytes.data(), data, size);
266 Kakshya::DataVariant data_variant(raw_bytes);
267
268 if (target->is_host_visible()) {
269 upload_host_visible(target, data_variant);
270 } else {
271 std::shared_ptr<VKBuffer> staging_buf = staging;
272
273 if (!staging_buf) {
274 staging_buf = create_staging_buffer(size);
275 }
276
277 upload_device_local(target, staging_buf, data_variant);
278 }
279}
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::IO::ImageReader::load_into_buffer(), MayaFlux::Buffers::GeometryBindingsProcessor::processing_function(), MayaFlux::Buffers::NetworkGeometryProcessor::processing_function(), MayaFlux::Buffers::AggregateBindingsProcessor::processing_function(), MayaFlux::Buffers::TextureBindingsProcessor::processing_function(), MayaFlux::Buffers::DescriptorBindingsProcessor::update_descriptor_from_node(), MayaFlux::Buffers::TextureProcessor::update_geometry_if_dirty(), upload_audio_to_gpu(), upload_from_view(), MayaFlux::Buffers::TextureProcessor::upload_initial_geometry(), 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: