Mako 8.4.0 API
MakoCore SDK API Documentation
Loading...
Searching...
No Matches
JawsMako::CFrameBufferInfo Class Reference

Description of a frame buffer for use with renderSeparationsToFrameBuffers and Apex rendering functions. More...

#include <jawsmako/renderspec.h>

Public Member Functions

 CFrameBufferInfo ()
bool operator== (const CFrameBufferInfo &other) const
bool operator!= (const CFrameBufferInfo &other) const

Public Attributes

void * buffer
 Pointer to the frame buffer.
uint32 bufferOfs
 Offset to the byte containing the first first pixel to be written to.
uint8 bufferOfsBits
int32 rowStride
int32 pixelStride
int8 pixelStrideBits

Detailed Description

Description of a frame buffer for use with renderSeparationsToFrameBuffers and Apex rendering functions.

Does not own any buffer memory; merely points into an externally supplied buffer.

Please note that there are additional restrictions for low depth (1, 2, 4-bit) renders with Apex. Apex may render tiles of a render in parallel before copying into these buffers. As a result, for low depth renders (ie 1, 2 or 4 bit renders), different threads may attempt to copy GPU results into the frame buffers and these copies could result in threads attempting to update the same byte, which can result in data races when updating affected bytes.

Apex takes steps such that in almost all cases this will not be an issue. However there is one case where this could potentially present an issue where:

  • The frame buffers are configured such that different channels write into the same memory buffer.
  • The frame buffers are set up such that most individual channels are interleaved in order, but with one or more channels set up such that the results are interleaved with pixels to the left or right, or to scanlines above or below.

This case would be used where an interleaved low-depth render is required but where one or more channels are to be shifted compared to the others. For low bit-depth rendering, this is currently unsafe. If such use-cases are required, or if there is uncertainty, please contact Mako support.

Constructor & Destructor Documentation

◆ CFrameBufferInfo()

JawsMako::CFrameBufferInfo::CFrameBufferInfo ( )
inline

Member Function Documentation

◆ operator!=()

bool JawsMako::CFrameBufferInfo::operator!= ( const CFrameBufferInfo & other) const
inline

◆ operator==()

bool JawsMako::CFrameBufferInfo::operator== ( const CFrameBufferInfo & other) const
inline

Member Data Documentation

◆ buffer

void* JawsMako::CFrameBufferInfo::buffer

Pointer to the frame buffer.

◆ bufferOfs

uint32 JawsMako::CFrameBufferInfo::bufferOfs

Offset to the byte containing the first first pixel to be written to.

◆ bufferOfsBits

uint8 JawsMako::CFrameBufferInfo::bufferOfsBits

Apex only, and must be zero when rendering to an 8 or 16 bit result. This the offset, within the first byte (where 0 is the most-significant-bit), where the first pixel is to be written. Must be less than 8. For IJawsRenderer, this must always be zero.

◆ pixelStride

int32 JawsMako::CFrameBufferInfo::pixelStride

The integral byte portion of the distance from one sample to the next. Used with pixelStrideBits (in situations where pixelStride is used). In such situations, the total pixel stride, in bits, is calculated as: pixelStride * 8 + pixelStrideBits. If both pixelStride and pixelStrideBits are zero, then the samples are assumed to be packed.

◆ pixelStrideBits

int8 JawsMako::CFrameBufferInfo::pixelStrideBits

Apex only, and must be zero for 8 or 16 bit output. This is the bit-portion of the difference from one sample to the next, used in conjunction with pixelStride to create a total offset. Must be 0 through +/-7. For IJawsRenderer, this must always be zero. See pixelStride for details.

◆ rowStride

int32 JawsMako::CFrameBufferInfo::rowStride

The distance, in bytes, from one scanline in the frame buffer to the next. May be negative.


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