![]() |
Mako 8.4.0 API
MakoCore SDK API Documentation
|
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 |
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:
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.
|
inline |
|
inline |
|
inline |
| void* JawsMako::CFrameBufferInfo::buffer |
Pointer to the frame buffer.
| uint32 JawsMako::CFrameBufferInfo::bufferOfs |
Offset to the byte containing the first first pixel to be written to.
| 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.
| 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.
| 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.
| int32 JawsMako::CFrameBufferInfo::rowStride |
The distance, in bytes, from one scanline in the frame buffer to the next. May be negative.