|
VisuTwin Canvas
C++ 3D Engine — Metal Backend
|
#include <platform/graphics/metal/metalBuffer.h>
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 |
Metal implementation of a GPU buffer. Wraps MTL::Buffer and provides buffer management functionality.
Definition at line 32 of file metalBuffer.h.
|
inlineexplicit |
Definition at line 34 of file metalBuffer.h.
Referenced by visutwin::canvas::MetalIndexBuffer::MetalIndexBuffer(), visutwin::canvas::MetalVertexBuffer::MetalVertexBuffer(), and visutwin::canvas::MetalVertexBuffer::MetalVertexBuffer().
|
override |
Definition at line 12 of file metalBuffer.cpp.
| 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().
| void visutwin::canvas::gpu::MetalBuffer::allocate | ( | MetalGraphicsDevice * | device, |
| size_t | size ) |
Definition at line 73 of file metalBuffer.cpp.
References visutwin::canvas::gpu::INDEX, visutwin::canvas::MetalGraphicsDevice::raw(), size(), visutwin::canvas::gpu::STORAGE, visutwin::canvas::gpu::UNIFORM, and visutwin::canvas::gpu::VERTEX.
| void visutwin::canvas::gpu::MetalBuffer::allocate | ( | MTL::Device * | device, |
| size_t | size ) |
Definition at line 20 of file metalBuffer.cpp.
References visutwin::canvas::gpu::INDEX, size(), visutwin::canvas::gpu::STORAGE, visutwin::canvas::gpu::UNIFORM, and visutwin::canvas::gpu::VERTEX.
|
inlineoverridevirtual |
Returns the backend-specific native handle (MTL::Buffer*, VkBuffer, etc.).
Implements visutwin::canvas::gpu::HardwareBuffer.
Definition at line 58 of file metalBuffer.h.
|
inlinenodiscard |
Definition at line 52 of file metalBuffer.h.
Referenced by visutwin::canvas::MetalIndexBuffer::raw(), and visutwin::canvas::MetalVertexBuffer::raw().
|
inlinenodiscard |
Definition at line 48 of file metalBuffer.h.
Referenced by allocate(), allocate(), visutwin::canvas::MetalVertexBuffer::MetalVertexBuffer(), unlock(), and write().
| 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().
|
overridevirtual |
Upload data to the GPU buffer.
Implements visutwin::canvas::gpu::HardwareBuffer.
Definition at line 108 of file metalBuffer.cpp.
References allocate(), and write().
| void visutwin::canvas::gpu::MetalBuffer::write | ( | size_t | bufferOffset, |
| const void * | data, | ||
| size_t | dataSize ) const |
Write data to a storage buffer
| 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().