VisuTwin Canvas
C++ 3D Engine — Metal Backend
Loading...
Searching...
No Matches
visutwin::canvas::gpu::MetalBuffer Class Reference

#include <platform/graphics/metal/metalBuffer.h>

Inheritance diagram for visutwin::canvas::gpu::MetalBuffer:
[legend]

Public Member Functions

void adoptBuffer (MTL::Buffer *buffer)
void allocate (MetalGraphicsDevice *device, size_t size)
void allocate (MTL::Device *device, size_t size)
 MetalBuffer (const BufferUsage usageFlags)
void * nativeHandle () const override
 Returns the backend-specific native handle (MTL::Buffer*, VkBuffer, etc.).
MTL::Buffer * raw () const
size_t size () const
void unlock (MetalGraphicsDevice *device, const std::vector< uint8_t > &storage)
void upload (GraphicsDevice *device, const void *data, size_t size) override
 Upload data to the GPU buffer.
void write (size_t bufferOffset, const void *data, size_t dataSize) const
 ~MetalBuffer () override
Public Member Functions inherited from visutwin::canvas::gpu::HardwareBuffer
virtual ~HardwareBuffer ()=default

Detailed Description

Metal implementation of a GPU buffer. Wraps MTL::Buffer and provides buffer management functionality.

Definition at line 32 of file metalBuffer.h.

Constructor & Destructor Documentation

◆ MetalBuffer()

visutwin::canvas::gpu::MetalBuffer::MetalBuffer ( const BufferUsage usageFlags)
inlineexplicit

◆ ~MetalBuffer()

visutwin::canvas::gpu::MetalBuffer::~MetalBuffer ( )
override

Definition at line 12 of file metalBuffer.cpp.

Member Function Documentation

◆ adoptBuffer()

void visutwin::canvas::gpu::MetalBuffer::adoptBuffer ( MTL::Buffer * buffer)

Adopt a pre-existing MTL::Buffer, taking ownership via retain/release. Used for zero-copy paths where the buffer was allocated externally (e.g., GPU compute output buffers).

Definition at line 119 of file metalBuffer.cpp.

Referenced by visutwin::canvas::MetalVertexBuffer::MetalVertexBuffer().

◆ allocate() [1/2]

void visutwin::canvas::gpu::MetalBuffer::allocate ( MetalGraphicsDevice * device,
size_t size )

◆ allocate() [2/2]

void visutwin::canvas::gpu::MetalBuffer::allocate ( MTL::Device * device,
size_t size )

◆ nativeHandle()

void * visutwin::canvas::gpu::MetalBuffer::nativeHandle ( ) const
inlineoverridevirtual

Returns the backend-specific native handle (MTL::Buffer*, VkBuffer, etc.).

Implements visutwin::canvas::gpu::HardwareBuffer.

Definition at line 58 of file metalBuffer.h.

◆ raw()

MTL::Buffer * visutwin::canvas::gpu::MetalBuffer::raw ( ) const
inlinenodiscard

◆ size()

size_t visutwin::canvas::gpu::MetalBuffer::size ( ) const
inlinenodiscard

◆ unlock()

void visutwin::canvas::gpu::MetalBuffer::unlock ( MetalGraphicsDevice * device,
const std::vector< uint8_t > & storage )

Definition at line 47 of file metalBuffer.cpp.

References allocate(), visutwin::canvas::gpu::COPY_DST, size(), and write().

◆ upload()

void visutwin::canvas::gpu::MetalBuffer::upload ( GraphicsDevice * device,
const void * data,
size_t size )
overridevirtual

Upload data to the GPU buffer.

Implements visutwin::canvas::gpu::HardwareBuffer.

Definition at line 108 of file metalBuffer.cpp.

References allocate(), and write().

◆ write()

void visutwin::canvas::gpu::MetalBuffer::write ( size_t bufferOffset,
const void * data,
size_t dataSize ) const

Write data to a storage buffer

Parameters
bufferOffset- The offset into the buffer to write to
data- The source data
dataSize- The number of bytes to write

Definition at line 40 of file metalBuffer.cpp.

References size().

Referenced by unlock(), and upload().


The documentation for this class was generated from the following files: