Skip to main content

Pipeline

The Pipeline class manages the configuration of a graphics pipeline, offering control over shader stages, primitive types, blending, depth and stencil testing, and rasterization. It allows users to configure and retrieve various pipeline parameters, including vertex attributes, texture and surface bindings, sampling configurations, and memory offsets. The class supports shader creation, loading, and compilation in multiple formats such as native, GLSL, and SPIRV, providing fine-grained control over pipeline states.

#include <platform/TellusimPipeline.h>

Constructors

Pipeline()

Methods

Pipeline platform.

Platform getPlatform() const
const char *getPlatformName() const

Pipeline device index.

uint32_t getIndex() const

Clear pipeline.

void clear()

Check pipeline.

bool isCreated() const

Pipeline name.

void setName(const char *name)
String getName() const

Create pipeline.

bool create()

Pipeline parameters.

void setParameters(const Pipeline &pipeline)
bool saveState(Stream &stream) const

Shader pointers.

void addShader(Shader &shader, bool owner = false)
Shader getVertexShader() const
Shader getControlShader() const
Shader getEvaluateShader() const
Shader getGeometryShader() const
Shader getFragmentShader() const
Shader getTaskShader() const
Shader getMeshShader() const

Load shaders.

bool loadShader(Type type, const char *name, const char *format)
bool loadShaderGLSL(Type type, const char *name, const char *format)
bool loadShader(Type type, const char *name, const String &macros = String::null, const char **includes = nullptr, uint32_t size = 0)
bool loadShaderGLSL(Type type, const char *name, const String &macros = String::null, const char **includes = nullptr, uint32_t size = 0)
bool loadShaderSPIRV(Type type, const char *name)

Create shaders.

bool createShader(Type type, const char *src, const char *format)
bool createShaderGLSL(Type type, const char *src, const char *format)
bool createShader(Type type, const char *src, const String &macros = String::null, const char **includes = nullptr, uint32_t size = 0)
bool createShaderGLSL(Type type, const char *src, const String &macros = String::null, const char **includes = nullptr, uint32_t size = 0)
bool createShaderSPIRV(Type type, Array<uint32_t> data)

Sampler parameters.

uint32_t addSampler(Mask mask)
uint32_t getNumSamplers() const
Pipeline setSamplerOffset(uint32_t offset)
uint32_t getSamplerOffset() const
Pipeline setSamplerMask(uint32_t index, Mask mask)
Mask getSamplerMask(uint32_t index) const
Pipeline setSamplerMasks(uint32_t index, uint32_t num, Mask mask, bool array = false)
Mask getSamplerMasks(uint32_t index, uint32_t num) const
Pipeline setSamplerArray(uint32_t index, uint32_t num, bool array)
uint32_t getSamplerArray(uint32_t index) const

Texture parameters.

uint32_t addTexture(Mask mask)
uint32_t getNumTextures() const
Pipeline setTextureOffset(uint32_t offset)
uint32_t getTextureOffset() const
Pipeline setTextureMask(uint32_t index, Mask mask)
Mask getTextureMask(uint32_t index) const
Pipeline setTextureMasks(uint32_t index, uint32_t num, Mask mask, bool array = false)
Mask getTextureMasks(uint32_t index, uint32_t num) const
Pipeline setTextureArray(uint32_t index, uint32_t num, bool array)
uint32_t getTextureArray(uint32_t index) const

Surface parameters.

uint32_t addSurface(Mask mask)
uint32_t getNumSurfaces() const
Pipeline setSurfaceOffset(uint32_t offset)
uint32_t getSurfaceOffset() const
Pipeline setSurfaceMask(uint32_t index, Mask mask)
Mask getSurfaceMask(uint32_t index) const
Pipeline setSurfaceMasks(uint32_t index, uint32_t num, Mask mask, bool array = false)
Mask getSurfaceMasks(uint32_t index, uint32_t num) const
Pipeline setSurfaceArray(uint32_t index, uint32_t num, bool array)
uint32_t getSurfaceArray(uint32_t index) const

Uniform parameters.

uint32_t addUniform(Mask mask, BindFlags flags = BindFlagNone)
uint32_t getNumUniforms() const
Pipeline setUniformOffset(uint32_t offset)
uint32_t getUniformOffset() const
Pipeline setUniformMask(uint32_t index, Mask mask, BindFlags flags = BindFlagNone)
Mask getUniformMask(uint32_t index) const
Pipeline setUniformMasks(uint32_t index, uint32_t num, Mask mask, BindFlags flags = BindFlagNone)
Mask getUniformMasks(uint32_t index, uint32_t num) const
Pipeline setUniformFlags(uint32_t index, BindFlags flags)
BindFlags getUniformFlags(uint32_t index) const

Storage parameters.

uint32_t addStorage(Mask mask, BindFlags flags = BindFlagNone)
uint32_t getNumStorages() const
Pipeline setStorageOffset(uint32_t offset)
uint32_t getStorageOffset() const
Pipeline setStorageMask(uint32_t index, Mask mask, BindFlags flags = BindFlagNone)
Mask getStorageMask(uint32_t index) const
Pipeline setStorageMasks(uint32_t index, uint32_t num, Mask mask, BindFlags flags = BindFlagNone)
Mask getStorageMasks(uint32_t index, uint32_t num) const
Pipeline setStorageFlags(uint32_t index, BindFlags flags)
BindFlags getStorageFlags(uint32_t index) const

Tracing parameters.

uint32_t addTracing(Mask mask)
uint32_t getNumTracings() const
Pipeline setTracingOffset(uint32_t offset)
uint32_t getTracingOffset() const
Pipeline setTracingMask(uint32_t index, Mask mask)
Mask getTracingMask(uint32_t index) const
Pipeline setTracingMasks(uint32_t index, uint32_t num, Mask mask)
Mask getTracingMasks(uint32_t index, uint32_t num) const

Texel parameters.

uint32_t addTexel(Mask mask)
uint32_t getNumTexels() const
Pipeline setTexelOffset(uint32_t offset)
uint32_t getTexelOffset() const
Pipeline setTexelMask(uint32_t index, Mask mask)
Mask getTexelMask(uint32_t index) const
Pipeline setTexelMasks(uint32_t index, uint32_t num, Mask mask)
Mask getTexelMasks(uint32_t index, uint32_t num) const

Table parameters.

uint32_t addTable(TableType type, uint32_t size, Mask mask, BindFlags flags = BindFlagNone)
uint32_t getNumTables() const
Pipeline setTableOffset(uint32_t offset)
uint32_t getTableOffset() const
Pipeline setTableType(uint32_t index, TableType type, uint32_t size, Mask mask, BindFlags flags = BindFlagNone)
TableType getTableType(uint32_t index) const
uint32_t getTableSize(uint32_t index) const
Pipeline setTableMask(uint32_t index, Mask mask, BindFlags flags = BindFlagNone)
Mask getTableMask(uint32_t index) const
Pipeline setTableFlags(uint32_t index, BindFlags flags)
BindFlags getTableFlags(uint32_t index) const

Vertex parameters.

uint32_t getNumVertices() const
uint32_t getVertexStride(uint32_t index) const
uint32_t getVertexRate(uint32_t index) const

Vertex attributes.

uint32_t addAttribute(Attribute attribute, Format format, uint32_t vertex, size_t offset, size_t stride, uint32_t rate = 0)
Pipeline setAttribute(uint32_t index, Attribute attribute, Format format, uint32_t vertex, size_t offset, size_t stride, uint32_t rate = 0)
Pipeline setAttributeType(uint32_t index, Attribute attribute)
Pipeline setAttributeFormat(uint32_t index, Format format)
Pipeline setAttributeVertex(uint32_t index, uint32_t vertex)
Pipeline setAttributeOffset(uint32_t index, size_t offset)
Pipeline setAttributeStride(uint32_t index, size_t stride)
Pipeline setAttributeRate(uint32_t index, uint32_t rate)
uint32_t getNumAttributes() const
Attribute getAttributeType(uint32_t index) const
Format getAttributeFormat(uint32_t index) const
uint32_t getAttributeVertex(uint32_t index) const
uint32_t getAttributeOffset(uint32_t index) const
uint32_t getAttributeStride(uint32_t index) const
uint32_t getAttributeRate(uint32_t index) const

Rasterization parameters.

void setPrimitive(Primitive primitive)
Primitive getPrimitive() const
void setFillMode(FillMode mode)
FillMode getFillMode() const
void setCullMode(CullMode mode)
CullMode getCullMode() const
void setFrontMode(FrontMode mode)
FrontMode getFrontMode() const
void setDepthBias(float32_t bias, float32_t slope, float32_t clamp = 0.0f)
float32_t getDepthBias() const
float32_t getDepthSlope() const
float32_t getDepthClamp() const
void setMultisample(uint32_t multisample)
uint32_t getMultisample() const
void setSampleMask(uint32_t sample_mask)
uint32_t getSampleMask() const
void setDepthClip(bool enabled)
bool getDepthClip() const
void setDepthReplace(bool enabled)
bool getDepthReplace() const
void setScissorTest(bool enabled)
bool getScissorTest() const
void setRasterDiscard(bool enabled)
bool getRasterDiscard() const
void setSampleShading(bool enabled)
bool getSampleShading() const
void setAlphaToCoverage(bool enabled)
bool getAlphaToCoverage() const
void setMultisampleRaster(bool enabled)
bool getMultisampleRaster() const
void setConservativeRaster(bool enabled)
bool getConservativeRaster() const
void setNumViewports(uint32_t num_viewports)
uint32_t getNumTargets() const
uint32_t getNumViewports() const
void setNumClipDistances(uint32_t num_distances)
uint32_t getNumClipDistances() const

Blending parameters.

void setBlend(BlendOp op, BlendFunc src, BlendFunc dest)
void setBlendColor(BlendOp op, BlendFunc src, BlendFunc dest)
void setBlendAlpha(BlendOp op, BlendFunc src, BlendFunc dest)
void setBlend(uint32_t index, BlendOp op, BlendFunc src, BlendFunc dest)
void setBlendColor(uint32_t index, BlendOp op, BlendFunc src, BlendFunc dest)
void setBlendAlpha(uint32_t index, BlendOp op, BlendFunc src, BlendFunc dest)
BlendOp getBlendColorOp(uint32_t index) const
BlendOp getBlendAlphaOp(uint32_t index) const
BlendFunc getBlendSrcColorFunc(uint32_t index) const
BlendFunc getBlendSrcAlphaFunc(uint32_t index) const
BlendFunc getBlendDestColorFunc(uint32_t index) const
BlendFunc getBlendDestAlphaFunc(uint32_t index) const

Color parameters.

void setColorMask(ColorMask mask)
void setColorMask(uint32_t index, ColorMask mask)
void setColorFormat(uint32_t index, Format format)
void setColorFormat(Format format, uint32_t num = 1)
ColorMask getColorMask(uint32_t index) const
Format getColorFormat(uint32_t index) const

Depth parameters.

void setDepthMask(DepthMask mask)
void setDepthFunc(DepthFunc func)
void setDepthFormat(Format format)
DepthMask getDepthMask() const
DepthFunc getDepthFunc() const
Format getDepthFormat() const

Stencil parameters.

void setStencilMask(uint32_t mask)
void setStencilBackMask(uint32_t mask)
void setStencilFrontMask(uint32_t mask)
void setStencilFunc(StencilFunc func, StencilOp dpass_op)
void setStencilBackFunc(StencilFunc func, StencilOp dpass_op)
void setStencilFrontFunc(StencilFunc func, StencilOp dpass_op)
void setStencilFunc(StencilFunc func, StencilOp fail_op, StencilOp dfail_op, StencilOp dpass_op)
void setStencilBackFunc(StencilFunc func, StencilOp fail_op, StencilOp dfail_op, StencilOp dpass_op)
void setStencilFrontFunc(StencilFunc func, StencilOp fail_op, StencilOp dfail_op, StencilOp dpass_op)
uint32_t getStencilBackMask() const
StencilFunc getStencilBackFunc() const
StencilOp getStencilBackFailOp() const
StencilOp getStencilBackDepthFailOp() const
StencilOp getStencilBackDepthPassOp() const
uint32_t getStencilFrontMask() const
StencilFunc getStencilFrontFunc() const
StencilOp getStencilFrontFailOp() const
StencilOp getStencilFrontDepthFailOp() const
StencilOp getStencilFrontDepthPassOp() const

Enums

Primitive

Primitive types.

NameValueDescription
PrimitivePoint0Point primitive.
PrimitivePointPatch1Point patch primitive.
PrimitiveLine2Line primitive.
PrimitiveLineAdj3Line with adjacency primitive.
PrimitiveLineStrip4Line strip primitive.
PrimitiveLinePatch5Line patch primitive.
PrimitiveTriangle6Triangle primitive.
PrimitiveTriangleAdj7Triangle with adjacency primitive.
PrimitiveTriangleStrip8Triangle strip primitive.
PrimitiveTrianglePatch9Triangle patch primitive.
PrimitiveQuadrilateralPatch10Quadrilateral patch primitive.
NumPrimitiveTypes11

Attribute

Attribute types.

NameValueDescription
AttributePosition0Position attribute.
AttributeBasis1Basis attribute.
AttributeNormal2Normal attribute.
AttributeTangent3Tangent attribute.
AttributeBinormal4Binormal attribute.
AttributeTexCoord5Texcoord attribute.
AttributeWeights6Joint weights attribute.
AttributeJoints7Joint indices attribute.
AttributeColor8Vertex color attribute.
AttributeIndex9Vertex index attribute.
NumAttributeTypes10

FillMode

Filling modes.

NameValue
FillModeLine0
FillModeSolid1
NumFillModes2

CullMode

Culling modes.

NameValue
CullModeNone0
CullModeBack1
CullModeFront2
NumCullModes3

FrontMode

Front modes.

NameValue
FrontModeCCW0
FrontModeCW1
NumFrontModes2

BlendOp

Blending operations.

NameValue
BlendOpAdd0
BlendOpSub1
BlendOpMin2
BlendOpMax3
NumBlendOperations4

BlendFunc

Blending functions.

NameValue
BlendFuncNone0
BlendFuncZero1
BlendFuncOne2
BlendFuncSrcColor3
BlendFuncSrcAlpha4
BlendFuncSrc1Color5
BlendFuncSrc1Alpha6
BlendFuncDestColor7
BlendFuncDestAlpha8
BlendFuncFactorColor9
BlendFuncFactorAlpha10
BlendFuncInvSrcColor11
BlendFuncInvSrcAlpha12
BlendFuncInvSrc1Color13
BlendFuncInvSrc1Alpha14
BlendFuncInvDestColor15
BlendFuncInvDestAlpha16
BlendFuncInvFactorColor17
BlendFuncInvFactorAlpha18
NumBlendFunctions19

ColorMask

Color masks.

NameValue
ColorMaskNone0
ColorMaskR(1 << 0)
ColorMaskG(1 << 1)
ColorMaskB(1 << 2)
ColorMaskA(1 << 3)
ColorMaskUnknown(1 << 4)
ColorMaskRGB(ColorMaskR | ColorMaskG | ColorMaskB)
ColorMaskAll(ColorMaskRGB | ColorMaskA)

DepthMask

Depth masks.

NameValue
DepthMaskNone0
DepthMaskRead1
DepthMaskWrite2
NumDepthMasks3

DepthFunc

Depth functions.

NameValue
DepthFuncNone0
DepthFuncNever1
DepthFuncAlways2
DepthFuncEqual3
DepthFuncLess4
DepthFuncGreater5
DepthFuncNotEqual6
DepthFuncLessEqual7
DepthFuncGreaterEqual8
NumDepthFunctions9

StencilOp

Stencil operations.

NameValue
StencilOpKeep0
StencilOpInvert1
StencilOpReplace2
StencilOpIncrWrap3
StencilOpDecrWrap4
StencilOpIncrSat5
StencilOpDecrSat6
NumStencilOperations7

StencilFunc

Stencil functions.

NameValue
StencilFuncNone0
StencilFuncNever1
StencilFuncAlways2
StencilFuncEqual3
StencilFuncLess4
StencilFuncGreater5
StencilFuncNotEqual6
StencilFuncLessEqual7
StencilFuncGreaterEqual8
NumStencilFunctions9