Skip to main content

Kernel

The Kernel class represents a compute kernel responsible for managing shaders, textures, buffers, samplers, surfaces, uniforms, and storage within a computational pipeline. It allows users to set and retrieve various parameters, including device index, platform, and kernel state, while supporting shader compilation, loading, and creation in formats like native, GLSL, and SPIRV. The class also provides functionality for configuring kernel parameters such as texture, surface, and storage settings, along with memory alignment and sampler configurations, offering comprehensive control over the pipeline compute operations.

#include <platform/TellusimKernel.h>

Constructors

Kernel()

Methods

Kernel platform.

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

Kernel device index.

uint32_t getIndex() const

Clear kernel.

void clear()

Check kernel.

bool isCreated() const

Kernel name.

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

Create kernel.

bool create()

Kernel parameters.

void setParameters(const Kernel &kernel)
bool saveState(Stream &stream) const

Shader pointer.

void setShader(Shader &shader, bool owner = false)
Shader getComputeShader() const

Load shaders.

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

Create shaders.

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

Sampler parameters.

uint32_t addSampler()
Kernel setSamplers(uint32_t num)
uint32_t getNumSamplers() const
Kernel setSamplerOffset(uint32_t offset)
uint32_t getSamplerOffset() const
Kernel setSamplerArray(uint32_t index, uint32_t num, bool array)
uint32_t getSamplerArray(uint32_t index) const

Texture parameters.

uint32_t addTexture()
Kernel setTextures(uint32_t num)
uint32_t getNumTextures() const
Kernel setTextureOffset(uint32_t offset)
uint32_t getTextureOffset() const
Kernel setTextureArray(uint32_t index, uint32_t num, bool array)
uint32_t getTextureArray(uint32_t index) const

Surface parameters.

uint32_t addSurface()
Kernel setSurfaces(uint32_t num)
uint32_t getNumSurfaces() const
Kernel setSurfaceOffset(uint32_t offset)
uint32_t getSurfaceOffset() const
Kernel setSurfaceArray(uint32_t index, uint32_t num, bool array)
uint32_t getSurfaceArray(uint32_t index) const

Uniform parameters.

uint32_t addUniform(BindFlags flags = BindFlagNone)
Kernel setUniforms(uint32_t num, BindFlags flags = BindFlagNone)
uint32_t getNumUniforms() const
Kernel setUniformOffset(uint32_t offset)
uint32_t getUniformOffset() const
Kernel setUniformFlags(uint32_t index, BindFlags flags)
BindFlags getUniformFlags(uint32_t index) const

Storage parameters.

uint32_t addStorage(BindFlags flags = BindFlagNone)
Kernel setStorages(uint32_t num, BindFlags flags = BindFlagNone)
uint32_t getNumStorages() const
Kernel setStorageOffset(uint32_t offset)
uint32_t getStorageOffset() const
Kernel setStorageFlags(uint32_t index, BindFlags flags)
BindFlags getStorageFlags(uint32_t index) const

Tracing parameters.

uint32_t addTracing()
Kernel setTracings(uint32_t num)
uint32_t getNumTracings() const
Kernel setTracingOffset(uint32_t offset)
uint32_t getTracingOffset() const

Texel parameters.

uint32_t addTexel()
Kernel setTexels(uint32_t num)
uint32_t getNumTexels() const
Kernel setTexelOffset(uint32_t offset)
uint32_t getTexelOffset() const

Table parameters.

uint32_t addTable(TableType type, uint32_t size)
uint32_t getNumTables() const
Kernel setTableOffset(uint32_t offset)
uint32_t getTableOffset() const
Kernel setTableType(uint32_t index, TableType type, uint32_t size, BindFlags flags = BindFlagNone)
TableType getTableType(uint32_t index) const
uint32_t getTableSize(uint32_t index) const
Kernel setTableFlags(uint32_t index, BindFlags flags)
BindFlags getTableFlags(uint32_t index) const

Thread group size.

void setGroupSize(uint32_t width, uint32_t height = 1, uint32_t depth = 1)
uint32_t getGroupSizeX() const
uint32_t getGroupSizeY() const
uint32_t getGroupSizeZ() const