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

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

Public Member Functions

size_t allocate (const void *data, size_t size)
void beginFrame ()
MTL::Buffer * buffer () const
void endFrame (MTL::CommandBuffer *commandBuffer)
 MetalPaletteRingBuffer (const MetalPaletteRingBuffer &)=delete
 MetalPaletteRingBuffer (MetalPaletteRingBuffer &&)=delete
 MetalPaletteRingBuffer (MTL::Device *device, const char *label="PaletteRing")
MetalPaletteRingBufferoperator= (const MetalPaletteRingBuffer &)=delete
MetalPaletteRingBufferoperator= (MetalPaletteRingBuffer &&)=delete
size_t totalSize () const
size_t writeOffset () const
 ~MetalPaletteRingBuffer ()

Static Public Attributes

static constexpr size_t kAlignment = 256
static constexpr int kMaxInflightFrames = 3
static constexpr size_t kRegionSize = 256 * 1024

Detailed Description

Definition at line 31 of file metalPaletteRingBuffer.h.

Constructor & Destructor Documentation

◆ MetalPaletteRingBuffer() [1/3]

visutwin::canvas::MetalPaletteRingBuffer::MetalPaletteRingBuffer ( MTL::Device * device,
const char * label = "PaletteRing" )
inline

◆ ~MetalPaletteRingBuffer()

visutwin::canvas::MetalPaletteRingBuffer::~MetalPaletteRingBuffer ( )
inline

Definition at line 51 of file metalPaletteRingBuffer.h.

◆ MetalPaletteRingBuffer() [2/3]

visutwin::canvas::MetalPaletteRingBuffer::MetalPaletteRingBuffer ( const MetalPaletteRingBuffer & )
delete

◆ MetalPaletteRingBuffer() [3/3]

visutwin::canvas::MetalPaletteRingBuffer::MetalPaletteRingBuffer ( MetalPaletteRingBuffer && )
delete

Member Function Documentation

◆ allocate()

size_t visutwin::canvas::MetalPaletteRingBuffer::allocate ( const void * data,
size_t size )
inlinenodiscard

Bump-allocate palette data into the ring buffer.

Parameters
dataPointer to palette data (N × float4x4, column-major)
sizeSize in bytes of the palette data
Returns
Byte offset into the MTLBuffer — pass to setVertexBufferOffset()

Returns SIZE_MAX if the allocation would exceed the frame region budget.

Definition at line 85 of file metalPaletteRingBuffer.h.

References kAlignment, and kRegionSize.

◆ beginFrame()

void visutwin::canvas::MetalPaletteRingBuffer::beginFrame ( )
inline

Call at frame start. Blocks if GPU hasn't finished with this region. Must be called before any allocate() calls for the new frame.

Definition at line 69 of file metalPaletteRingBuffer.h.

References kMaxInflightFrames.

◆ buffer()

MTL::Buffer * visutwin::canvas::MetalPaletteRingBuffer::buffer ( ) const
inlinenodiscard

Definition at line 116 of file metalPaletteRingBuffer.h.

◆ endFrame()

void visutwin::canvas::MetalPaletteRingBuffer::endFrame ( MTL::CommandBuffer * commandBuffer)
inline

Register GPU completion signal on the frame's command buffer. Must be called on the LAST command buffer committed per frame.

Definition at line 107 of file metalPaletteRingBuffer.h.

◆ operator=() [1/2]

MetalPaletteRingBuffer & visutwin::canvas::MetalPaletteRingBuffer::operator= ( const MetalPaletteRingBuffer & )
delete

◆ operator=() [2/2]

MetalPaletteRingBuffer & visutwin::canvas::MetalPaletteRingBuffer::operator= ( MetalPaletteRingBuffer && )
delete

◆ totalSize()

size_t visutwin::canvas::MetalPaletteRingBuffer::totalSize ( ) const
inlinenodiscard

Definition at line 118 of file metalPaletteRingBuffer.h.

◆ writeOffset()

size_t visutwin::canvas::MetalPaletteRingBuffer::writeOffset ( ) const
inlinenodiscard

Definition at line 117 of file metalPaletteRingBuffer.h.

Member Data Documentation

◆ kAlignment

size_t visutwin::canvas::MetalPaletteRingBuffer::kAlignment = 256
staticconstexpr

Definition at line 35 of file metalPaletteRingBuffer.h.

Referenced by allocate().

◆ kMaxInflightFrames

int visutwin::canvas::MetalPaletteRingBuffer::kMaxInflightFrames = 3
staticconstexpr

Definition at line 34 of file metalPaletteRingBuffer.h.

Referenced by beginFrame(), and MetalPaletteRingBuffer().

◆ kRegionSize

size_t visutwin::canvas::MetalPaletteRingBuffer::kRegionSize = 256 * 1024
staticconstexpr

Definition at line 36 of file metalPaletteRingBuffer.h.

Referenced by allocate(), and MetalPaletteRingBuffer().


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