PVRUtils Structs#

NativeDisplayHandle_#

Struct Documentation#

struct NativeDisplayHandle_#

Forward-declare and smart pointer friendly handle to an EGL display.

Public Functions

inline operator NativeDisplay&()#

Operator() for the NativeDisplayHandle_ structure which retrieves the native display handle.

Returns:

Returns a reference to the native display handle.

inline operator const NativeDisplay&() const#

const Operator() for the NativeDisplayHandle_ structure which retrieves the native display handle.

Returns:

Returns a const reference to the native display handle.

Public Members

NativeDisplay nativeDisplay#

A native display handle or EGL display type.

NativePlatformHandles_#

Struct Documentation#

struct NativePlatformHandles_#

Forward-declare and smart pointer friendly handle to all the objects that EGL needs to identify a rendering context.

Public Functions

inline NativePlatformHandles_()#

Default constructor for the NativePlatformHandles_ structure initialising the display, drawSurface, readSurface and context to initial values.

Public Members

EGLDisplay display#

EGL display type.

EGLSurface drawSurface#

EGL draw Surface.

EGLSurface readSurface#

EGL read surface.

EGLContext context#

EGL context.

NativeWindowHandle_#

Struct Documentation#

struct NativeWindowHandle_#

Forward-declare and smart pointer friendly handle to an EGL window.

Public Functions

inline operator NativeWindow&()#

Operator() for the NativeWindowHandle_ structure which retrieves the native window.

Returns:

Returns a reference to the native window.

inline operator const NativeWindow&() const#

const Operator() for the NativeWindowHandle_ structure which retrieves the native window.

Returns:

Returns a const reference to the native window.

Public Members

NativeWindow nativeWindow#

A Native window or EGL window type.

Font_::CharacterUV#

Nested Relationships#

This struct is a nested type of Font_.

Struct Documentation#

struct CharacterUV

struct containing the UV’s corresponding to the UV coordinates of a character of a Font.

Public Members

float ul

The ul coordinate.

float vt

The vt coordinate.

float ur

The ur coordinate.

float vb

The vb coordinate.

Font_::CharMetrics#

Nested Relationships#

This struct is a nested type of Font_.

Struct Documentation#

struct CharMetrics

struct representing the metrics of a character of a Font.

Public Members

int16_t xOff

Prefix offset.

uint16_t characterWidth

The width of the character.

Font_::Header#

Nested Relationships#

This struct is a nested type of Font_.

Struct Documentation#

struct Header#

Public Members

uint8_t version#

Version of Font_.

uint8_t spaceWidth#

The width of the ‘Space’ character.

int16_t numCharacters#

Total number of characters contained in this file.

int16_t numKerningPairs#

Number of characters which kern against each other.

int16_t ascent#

The height of the character, in pixels, from the base line.

int16_t lineSpace#

The base line to base line dimension, in pixels.

int16_t borderWidth#

px Border around each character.

Font_::KerningPair#

Nested Relationships#

This struct is a nested type of Font_.

Struct Documentation#

struct KerningPair#

Public Members

uint64_t pair#

Shifted and OR’d pair for 32bit characters

int32_t offset#

Kerning offset (in pixels)

Group_::SpriteEntryEquals#

Nested Relationships#

This struct is a nested type of Group_.

Struct Documentation#

struct SpriteEntryEquals#

Public Functions

inline SpriteEntryEquals(const Sprite &sprite)#
inline bool operator()(const Sprite &rhs)#
inline SpriteEntryEquals(const Sprite &sprite)
inline bool operator()(const Sprite &rhs)

Public Members

Sprite sprite#

Image_::MaterialUboData#

Nested Relationships#

This struct is a nested type of Image_.

Struct Documentation#

struct MaterialUboData

Holds data specific to rendering a particular sprite in particular its color and alpha mode.

Public Functions

inline MaterialUboData()

Default constructor for the MaterialUboData structure.

Public Members

glm::vec4 color

Rendering color.

uint32_t isAlphaMode

Specifies whether alpha rendering mode is being used.

mutable int32_t bufferArrayId

A buffer array identifier.

Image_::MvpData#

Nested Relationships#

This struct is a nested type of Image_.

Struct Documentation#

struct MvpData

Holds data specific to rendering a particular sprite in particular its model view project matrix.

Public Functions

inline MvpData()

Default constructor for the MvpData structure.

Public Members

glm::mat4 mvp

Model view project matrix.

Image_::MvpUboData#

Nested Relationships#

This struct is a nested type of Image_.

Struct Documentation#

struct MvpUboData

Holds data specific to rendering a particular sprite in particular its model view project matrix.

Public Functions

inline MvpUboData()

Default constructor for the MvpUboData structure.

Public Members

glm::mat4 mvp

Model view project matrix.

mutable int32_t bufferArrayId

A buffer array identifier.

Text_::MaterialUboData#

Nested Relationships#

This struct is a nested type of Text_.

Struct Documentation#

struct MaterialUboData#

Public Functions

inline MaterialUboData()#

Public Members

glm::vec4 color#
uint32_t isAlphaMode#
mutable int32_t bufferArrayId#

Text_::MvpData#

Nested Relationships#

This struct is a nested type of Text_.

Struct Documentation#

struct MvpData#

Public Members

glm::mat4 mvp#

Text_::MvpUboData#

Nested Relationships#

This struct is a nested type of Text_.

Struct Documentation#

struct MvpUboData#

Public Functions

inline MvpUboData()#

Public Members

glm::mat4 mvp#
mutable int32_t bufferArrayId#

Vertex#

Struct Documentation#

struct Vertex#

UIRenderer vertex format.

Public Functions

inline void setData(float inX, float inY, float inZ, float inRhw, float inU, float inV)#

Setter for a Vertex’s data.

Parameters:
  • inX – The x position.

  • inY – The y position.

  • inZ – The z position.

  • inRhw – The w coordinate.

  • inU – The texture u coordinate.

  • inV – The texture v coordinate.

inline void setData(float inX, float inY, float inZ, float inRhw, float inU, float inV)

Setter for a Vertex’s data.

Parameters:
  • inX – The x position.

  • inY – The y position.

  • inZ – The z position.

  • inRhw – The w coordinate.

  • inU – The texture u coordinate.

  • inV – The texture v coordinate.

Public Members

float x#

x position.

float y#

y position.

float z#

z position.

float rhw#

w coordinate.

float tu#

texture u coordinate.

float tv#

texture v coordinate.

GLState#

Inheritance Relationships#

Derived Type#

Struct Documentation#

struct GLState#

The GLState structure is designed and used to hold the current OpenGL ES state. The UIRenderer then makes use of this structure to efficiently and as optimally as possibly only change the state which is necessary to be changed when carrying out rendering commands.

Subclassed by pvr::ui::GLStateTracker

Public Functions

void storeCurrentGlState(Api api)#

Stores the current OpenGL ES state so that it can be modified and reset without issues.

Parameters:

api – Specifies the OpenGL ES version supported.

inline GLState()#

Default constructor for GLState which initialises the OpenGL ES states for the GLState structure.

Public Members

GLint activeProgram#

The active program.

GLint activeTextureUnit#

The active texture unit.

GLint boundTexture#

The currently bound texture.

GLint blendEnabled#

Specifies whether blending is enabled.

GLint blendSrcRgb#

Specifies the source rgb blending mode.

GLint blendSrcAlpha#

Specifies the source alpha blending mode.

GLint blendDstRgb#

Specifies the destination rgb blending mode.

GLint blendDstAlpha#

Specifies the destination alpha blending mode.

GLint blendEqationRgb#

Specifies the blending equation to use for rgb blending.

GLint blendEqationAlpha#

Specifies the blending equation to use for alpha blending.

GLboolean colorMask[4]#

Specifies the color mask.

GLint depthTest#

Specifies whether depth testing is enabled.

GLint depthMask#

Specifies the depth mask.

GLint stencilTest#

Specifies whether stencil testing is enabled.

GLint cullingEnabled#

Specifies whether culling is enabled.

GLint culling#

Specifies the culling mode.

GLint windingOrder#

Specifies the winding order.

GLint sampler7#

Specifies the sampler used at binding index 7.

GLint vbo#

Specifies the vertex buffer object.

GLint ibo#

Specifies the index buffer object.

GLint vao#

Specifies the vertex array object.

std::vector<bool> vertexAttribArray#

Specifies a list of vertex array bindings.

std::vector<GLint> vertexAttribBindings#

Specifies a list of vertex attribute bindings.

std::vector<GLint> vertexAttribSizes#

Specifies a list of vertex attribute binding sizes.

std::vector<GLint> vertexAttribTypes#

Specifies a list of vertex attribute binding types.

std::vector<GLint> vertexAttribNormalized#

Specifies a list of vertex attribute bindings and whether they are normalized.

std::vector<GLint> vertexAttribStride#

Specifies a list of vertex attribute binding strides.

std::vector<GLvoid*> vertexAttribOffset#

Specifies a list of vertex attribute binding offsets.

GLStateTracker#

Inheritance Relationships#

Base Type#

  • public pvr::ui::GLState (GLState)

Struct Documentation#

struct GLStateTracker : public pvr::ui::GLState#

The GLStateTracker structure extends the functionality set out by the GLState structure to additionally help in determining what state has been changed. The UIRenderer then makes use of this structure to check what state must be changed, set UIRenderer state appropriately and reset the state after the UIRenderer has finished its rendering.

Public Functions

void setUiState(Api api)#

Sets the OpenGL ES state based on what state must be changed from the current OpenGL ES state to the states required for rendering the UIRenderer and its sprites.

Parameters:

api – Specifies the API type/version used.

void checkStateChanged(const GLState &currentGlState)#

Checks what OpenGL ES state has been changed based on differences between the current GLState object and the currentGlState structure.

Parameters:

currentGlState – Specifies whether OpenGL ES state which should be checked for differences with the current GLState object to determine what state has been modified.

void checkStateChanged(const GLStateTracker &stateTracker)#

Uses the provided GLStateTracker to blindly determine what state has been changed. Usage of this function requires full tracking of the OpenGL ES state as no state will be checked but will be taken as fact from stateTracker.

Parameters:

stateTracker – Specifies what OpenGL ES state has been changed.

void restoreState(const GLState &currentGlState, Api api)#

Restores the OpenGL ES state back to what was stored prior to UIRenderer rendering.

Parameters:
  • currentGlState – The OpenGL ES state to use for restoring.

  • api – Specifies the OpenGL ES version used.

inline GLStateTracker()#

Default constructor for GLStateTracker which initialises the OpenGL ES state tracking.

Public Members

bool activeProgramChanged#

Specifies whther the current program has changed.

bool activeTextureUnitChanged#

Specifies whther the active texture unit has changed.

bool boundTextureChanged#

Specifies whther the bound texture has changed.

bool blendEnabledChanged#

Specifies whether the enabling/disabling of blending has changed.

bool blendSrcRgbChanged#

Specifies whether the source rgb blending mode has changed.

bool blendSrcAlphaChanged#

Specifies whether the source alpha blending mode has changed.

bool blendDstRgbChanged#

Specifies whether the destination rgb blending mode has changed.

bool blendDstAlphaChanged#

Specifies whether the destination alpha blending mode has changed.

bool blendEqationRgbChanged#

Specifies whether the blending equation for rgb blending has changed.

bool blendEqationAlphaChanged#

Specifies whether the blending equation for alpha blending has changed.

bool colorMaskChanged#

Specifies whether the color mask has changed.

bool depthTestChanged#

Specifies whether depth testing has changed.

bool depthMaskChanged#

Specifies whether the depth mask has changed.

bool stencilTestChanged#

Specifies whether stencil testing state has changed.

bool cullingEnabledChanged#

Specifies whether culling state has changed.

bool cullingChanged#

Specifies whether the culling mode has changed.

bool windingOrderChanged#

Specifies whether the winding order has changed.

bool sampler7Changed#

Specifies whether the sampler at binding index 7 has changed.

bool vboChanged#

Specifies whether the vertex buffer object has changed.

bool iboChanged#

Specifies whether the index buffer object has changed.

bool vaoChanged#

Specifies whether the vertex array object has changed.

std::vector<bool> vertexAttribArrayChanged#

Specifies whether the vertex attribute array states have changed.

std::vector<bool> vertexAttribPointerChanged#

Specifies whether the vertex attribute pointer states have changed.

UIRenderer::ProgramData#

Nested Relationships#

This struct is a nested type of UIRenderer.

Struct Documentation#

struct ProgramData

Information used for uploading required info to the shaders (matrices, attributes etc).

Public Types

enum Uniform

Uniform index information.

Values:

enumerator UniformMVPmtx
enumerator UniformFontTexture
enumerator UniformColor
enumerator UniformAlphaMode
enumerator UniformUVmtx
enumerator NumUniform
enumerator UniformMVPmtx
enumerator UniformFontTexture
enumerator UniformColor
enumerator UniformAlphaMode
enumerator UniformUVmtx
enumerator NumUniform
enum Attribute

Attribute index information.

Values:

enumerator AttributeVertex
enumerator AttributeUV
enumerator NumAttribute
enumerator AttributeVertex
enumerator AttributeUV
enumerator NumAttribute
enum Uniform

Uniform index information.

Values:

enumerator UniformMVPmtx
enumerator UniformFontTexture
enumerator UniformColor
enumerator UniformAlphaMode
enumerator UniformUVmtx
enumerator NumUniform
enumerator UniformMVPmtx
enumerator UniformFontTexture
enumerator UniformColor
enumerator UniformAlphaMode
enumerator UniformUVmtx
enumerator NumUniform
enum Attribute

Attribute index information.

Values:

enumerator AttributeVertex
enumerator AttributeUV
enumerator NumAttribute
enumerator AttributeVertex
enumerator AttributeUV
enumerator NumAttribute

Public Members

int32_t uniforms[NumUniform]

An array of uniforms used by the UIRenderer.

int32_t attributes[NumAttribute]

An array of attributes used by the UIRenderer.

UIRenderer::UboMaterial#

Nested Relationships#

This struct is a nested type of UIRenderer.

Struct Documentation#

struct UboMaterial#

Public Functions

inline UboMaterial()#
inline void reset()#
void init(pvrvk::Device &device, pvrvk::DescriptorSetLayout &descLayout, pvrvk::DescriptorPool &pool, UIRenderer &uirenderer)#
void initLayout(pvrvk::Device &device, uint32_t numArrayId)#
void updateMaterial(uint32_t arrayIndex, const glm::vec4 &color, int32_t alphaMode, const glm::mat4 &uv)#
inline int32_t getNewBufferArray()#
inline void releaseBufferArray(uint32_t id)#
inline void bindUboDynamic(pvrvk::CommandBufferBase &cb, const pvrvk::PipelineLayout &pipelayout, uint32_t bufferSlice)#
inline uint32_t getNumAvailableBufferArrays() const#

Friends

friend class ::pvr::ui::UIRenderer

UIRenderer::UboMvp#

Nested Relationships#

This struct is a nested type of UIRenderer.

Struct Documentation#

struct UboMvp#

Public Functions

inline UboMvp()#
void init(pvrvk::Device &device, pvrvk::DescriptorSetLayout &descLayout, pvrvk::DescriptorPool &pool, UIRenderer &uirenderer)#
void initLayout(pvrvk::Device &device, uint32_t numElements)#
inline void reset()#
void updateMvp(uint32_t bufferArrayId, const glm::mat4x4 &mvp)#
inline int32_t getNewBufferSlice()#
inline void releaseBufferSlice(uint32_t id)#
inline void bindUboDynamic(pvrvk::CommandBufferBase &cb, const pvrvk::PipelineLayout &pipelayout, uint32_t mvpBufferSlice)#
inline uint32_t getNumAvailableBufferArrays() const#

Friends

friend class ::pvr::ui::UIRenderer

AllocationCreateInfo#

Struct Documentation#

struct AllocationCreateInfo#

The AllocationCreateInfo structure will control the way in which any one particular allocation is made.

Public Functions

inline AllocationCreateInfo()#

Default Constructor.

Public Members

AllocationCreateFlags flags#

Use AllocationCreateFlags enum.

MemoryUsage usage#

Intended usage of memory. Leave MemoryUsage::e_UNKNOWN if you specify requiredFlags. You can also use both. If pool is not null, this member is ignored.

pvrvk::MemoryPropertyFlags requiredFlags#

Flags that must be set in a Memory Type chosen for an allocation. Leave 0 if you specify requirement via usage. If pool is not null, this member is ignored.

pvrvk::MemoryPropertyFlags preferredFlags#

Flags that preferably should be set in a Memory Type chosen for an allocation. Set to 0 if no additional flags are prefered and only requiredFlags should be used. If not 0, it must be a superset or equal to requiredFlags. If pool is not null, this member is ignored.

uint32_t memoryTypeBits#

Bitmask containing one bit set for every memory type acceptable for this allocation. Value 0 is equivalent to UINT32_MAX - it means any memory type is accepted if it meets other requirements specified by this structure, with no further restrictions on memory type index. If pool is not null, this member is ignored.

Pool pool#

Pool that this allocation should be created in. Leave VK_NULL_HANDLE to allocate from general memory.

void *pUserData#

Custom general-purpose pointer that will be stored in VmaAllocation, can be read as VmaAllocationInfo::pUserData and changed using vmaSetAllocationUserData().

AllocatorCreateInfo#

Struct Documentation#

struct AllocatorCreateInfo#

The AllocatorCreateInfo struct specifies the way in which a VmaAllocator will be created.

Public Functions

inline AllocatorCreateInfo()#

Default Constructor.

inline AllocatorCreateInfo(pvrvk::Device &device, pvrvk::DeviceSize preferredLargeHeapBlockSize = 0, AllocatorCreateFlags flags = AllocatorCreateFlags::e_NONE, DebugReportFlags debugReportFlags = DebugReportFlags::None, uint32_t frameInUseCount = 0, const pvrvk::DeviceSize *pHeapSizeLimit = nullptr, const pvrvk::AllocationCallbacks *pAllocationCallbacks = nullptr, const DeviceMemoryCallbacks *pDeviceMemoryCallbacks = nullptr)#

Constructor.

Parameters:
  • device – The device to be used for allocating memory by this allocator

  • preferredLargeHeapBlockSize – The preferred size of any single allocation from large heaps

  • flags – Flags which will effect the way in which the allocator functions

  • debugReportFlags – A set of debug report flags which will effect the way in which the allocator providing debug logging

  • frameInUseCount – Maximum number of additional frames that are in use at the same time as current frame

  • pHeapSizeLimit – Either NULL or a pointer to an array of limits on maximum number of bytes that can be allocated out of particular Vulkan memory heap

  • pAllocationCallbacks – Custom CPU memory allocation callbacks

  • pDeviceMemoryCallbacks – Informative callbacks for vkAllocateMemory, vkFreeMemory

Public Members

AllocatorCreateFlags flags#

Flags for created allocator. Use VmaAllocatorCreateFlags enum.

pvrvk::Device device#

Vulkan device. It must be valid throughout whole lifetime of created allocator.

pvrvk::DeviceSize preferredLargeHeapBlockSize#

Preferred size of a single pvrvk::DeviceMemory block to be allocated from large heaps. Set to 0 to use default, which is currently 256 MB.

const pvrvk::AllocationCallbacks *pAllocationCallbacks#

Custom CPU memory allocation callbacks. Optional, can be null. When specified, will also be used for all CPU-side memory allocations.

const DeviceMemoryCallbacks *pDeviceMemoryCallbacks#

Informative callbacks for vkAllocateMemory, vkFreeMemory. Optional, can be null.

uint32_t frameInUseCount#

Maximum number of additional frames that are in use at the same time as current frame. This value is used only when you make allocations with AllocationCreateFlags::e_CAN_BECOME_LOST_BIT flag. Such allocation cannot become lost if allocation.lastUseFrameIndex >= allocator.currentFrameIndex - frameInUseCount. For example, if you double-buffer your command buffers, so resources used for rendering in previous frame may still be in use by the GPU at the moment you allocate resources needed for the current frame, set this value to 1. If you want to allow any allocations other than used in the current frame to become lost, set this value to 0.

const pvrvk::DeviceSize *pHeapSizeLimit#

Either NULL or a pointer to an array of limits on maximum number of bytes that can be allocated out of particular Vulkan memory heap. If not NULL, it must be a pointer to an array of pvrvk::PhysicalDeviceMemoryProperties::memoryHeapCount elements, defining limit on maximum number of bytes that can be allocated out of particular Vulkan memory heap. Any of the elements may be equal to VK_WHOLE_SIZE, which means no limit on that heap. This is also the default in case of pHeapSizeLimit = NULL. If there is a limit defined for a heap:

  • If user tries to allocate more memory from that heap using this allocator, the allocation fails with pvrvk::Error::e_OUT_OF_DEVICE_MEMORY.

  • If the limit is smaller than heap size reported in pvrvk::MemoryHeap::size, the value of this limit will be reported instead when using vmaGetMemoryProperties().

DebugReportFlags reportFlags#

Flags which will effect the way in which the debug report mechanism will function.

DefragmentationInfo#

Inheritance Relationships#

Base Type#

  • private impl::VmaDefragmentationInfo

Struct Documentation#

struct DefragmentationInfo : private impl::VmaDefragmentationInfo#

Optional configuration parameters to be passed to function vmaDefragment().

Public Functions

inline pvrvk::DeviceSize getMaxBytesToMove() const#

Maximum total numbers of bytes that can be copied while moving allocations to different places. Default is VK_WHOLE_SIZE, which means no limit.

Returns:

The maximum total number of bytes which can be copied while moving allocations

inline uint32_t getMaxAllocationsToMove() const#

Maximum number of allocations that can be moved to different place. Default is UINT32_MAX, which means no limit.

Returns:

The maximum number of allocation which can be moved

inline DefragmentationInfo &setMaxBytesToMove(pvrvk::DeviceSize bytesToMove)#

Setter for controlling the maximum number of bytes which can be copied when moving allocations.

Parameters:

bytesToMove – The maximum number of bytes which can be copied when moving allocations

Returns:

This - allows chaining

inline DefragmentationInfo &setMaxAllocationsToMove(uint32_t allocationToMove)#

Setter for controlling the maximum number of allocations that can be moved to different place.

Parameters:

allocationToMove – The maximum number of allocations that can be moved to different place

Returns:

This - allows chaining

DefragmentationStats#

Inheritance Relationships#

Base Type#

  • public impl::VmaDefragmentationStats

Struct Documentation#

struct DefragmentationStats : public impl::VmaDefragmentationStats#

Statistics returned by function vmaDefragment().

Public Functions

inline pvrvk::DeviceSize getBytesMoved() const#

Total number of bytes that have been copied while moving allocations to different places.

Retrieves DefragmentationStats regarding the bytes which have been moved.

Returns:

A set of DefragmentationStats corresponding to which bytes which have been moved.

inline pvrvk::DeviceSize getBytesFreed() const#

Total number of bytes that have been released to the system by freeing empty pvrvk::DeviceMemory objects.

Retrieves DefragmentationStats regarding the bytes which have been freed.

Returns:

A set of DefragmentationStats corresponding to which bytes which have been freed.

inline uint32_t getAllocationsMoved() const#

Number of allocations that have been moved to different places.

Retrieves DefragmentationStats regarding the device memory blocks which have been moved.

Returns:

A set of DefragmentationStats corresponding to which device memory blocks which have been moved.

inline uint32_t getDeviceMemoryBlocksFreed() const#

Number of empty pvrvk::DeviceMemory objects that have been released to the system.

Retrieves DefragmentationStats regarding the device memory blocks which have been freed.

Returns:

A set of DefragmentationStats corresponding to which device memory blocks which have been freed.

DeviceMemoryCallbacks#

Struct Documentation#

struct DeviceMemoryCallbacks#

The DeviceMemoryCallbacks struct defines a set of callbacks that the library will call for vkAllocateMemory and vkFreeMemory. Provided for informative purpose, e.g. to gather statistics about number of allocations or total amount of memory allocated in Vulkan. Used in AllocatorCreateInfo::pDeviceMemoryCallbacks.

Public Functions

inline DeviceMemoryCallbacks()#

Default Constructor.

Public Members

PFN_AllocateDeviceMemoryFunction pfnAllocate#

Optional, can be null.

PFN_FreeDeviceMemoryFunction pfnFree#

Optional, can be null.

PoolCreateInfo#

Struct Documentation#

struct PoolCreateInfo#

PoolCreateInfo.

Public Functions

inline PoolCreateInfo()#

Constructor for a pool creation info structure.

inline PoolCreateInfo(uint32_t memoryTypeIndex, PoolCreateFlags flags, pvrvk::DeviceSize blockSize = 0, size_t minBlockCount = 0, size_t maxBlockCount = 0, uint32_t frameInUseCount = 0)#

Constructor for a pool creation info structure.

Parameters:
  • memoryTypeIndex – Vulkan memory type index to allocate this pool from

  • flags – A set of PoolCreateFlags

  • blockSize – Size of a single pvrvk::DeviceMemory block to be allocated as part of this pool, in bytes

  • minBlockCount – Minimum number of blocks to be always allocated in this pool, even if they stay empty.

  • maxBlockCount – Maximum number of blocks that can be allocated in this pool.

  • frameInUseCount – Maximum number of additional frames that are in use at the same time as current frame.

Public Members

uint32_t memoryTypeIndex#

Vulkan memory type index to allocate this pool from.

PoolCreateFlags flags#

Use combination of PoolCreateFlags.

pvrvk::DeviceSize blockSize#

Size of a single pvrvk::DeviceMemory block to be allocated as part of this pool, in bytes. Optional. Leave 0 to use default.

size_t minBlockCount#

Minimum number of blocks to be always allocated in this pool, even if they stay empty. Set to 0 to have no preallocated blocks and let the pool be completely empty.

size_t maxBlockCount#

Maximum number of blocks that can be allocated in this pool. Optional. Set to 0 to use SIZE_MAX, which means no limit. Set to same value as minBlockCount to have fixed amount of memory allocated throuout whole lifetime of this pool.

uint32_t frameInUseCount#

Maximum number of additional frames that are in use at the same time as current frame. This value is used only when you make allocations with AllocationCreateFlags::e_CAN_BECOME_LOST_BIT flag. Such allocation cannot become lost if allocation.lastUseFrameIndex >= allocator.currentFrameIndex - frameInUseCount. For example, if you double-buffer your command buffers, so resources used for rendering in previous frame may still be in use by the GPU at the moment you allocate resources needed for the current frame, set this value to 1. If you want to allow any allocations other than used in the current frame to become lost, set this value to 0.

PoolStats#

Inheritance Relationships#

Base Type#

  • private impl::VmaPoolStats

Struct Documentation#

struct PoolStats : private impl::VmaPoolStats#

Describes parameter of existing VmaPool.

Public Functions

inline pvrvk::DeviceSize getUnusedSize() const#

Total number of bytes in the pool not used by any Allocation.

Returns:

Returns the number of bytes not used by any allocation.

inline size_t getAllocationCount() const#

Number of VmaAllocation objects created from this pool that were not destroyed or lost.

Returns:

Returns the number of VmaAllocation objects created from this pool.

inline pvrvk::DeviceSize getUnusedRangeSizeMax() const#

Number of continuous memory ranges in the pool not used by any VmaAllocation.

Returns:

Returns the number of continuous memory ranges in the pool not used by any VmaAllocation.

inline size_t getUnusedRangeCount() const#

Size of the largest continuous free memory region. Making a new allocation of that size is not guaranteed to succeed because of possible additional margin required to respect alignment and buffer/image granularity.

Returns:

Returns the size of the largest continuous free memory region.

inline pvrvk::DeviceSize getSize() const#

Total amount of pvrvk::DeviceMemory allocated from Vulkan for this pool, in bytes.

Returns:

Returns the total amount of pvrvk::DeviceMemory allocated from Vulkan for this pool, in bytes

Stats#

Struct Documentation#

struct Stats#

General statistics from current state of Allocator.

Public Members

StatInfo memoryType[VK_MAX_MEMORY_TYPES]#

The set of memory types supported.

StatInfo memoryHeap[VK_MAX_MEMORY_HEAPS]#

The set of memory heaps supported.

StatInfo total#

The total set of statistics.

Friends

friend class impl::Allocator_

StatInfo#

Inheritance Relationships#

Base Type#

  • private impl::VmaStatInfo

Struct Documentation#

struct StatInfo : private impl::VmaStatInfo#

Calculated statistics of memory usage in entire allocator.

Public Functions

inline uint32_t getBlockCount() const#

Getter for the number of VkDeviceMemory Vulkan memory blocks allocated.

Returns:

The number of VkDeviceMemory Vulkan memory blocks allocated

inline uint32_t getAllocationCount() const#

Getter for the number of VmaAllocation allocation objects allocated.

Returns:

The number of VmaAllocation allocation objects allocated.

inline uint32_t getUnusedRangeCount() const#

Getter for the number of free ranges of memory between allocations.

Returns:

The number of free ranges of memory between allocations.

inline VkDeviceSize getUsedBytes() const#

Getter for the total number of bytes occupied.

Returns:

The total number of bytes occupied

inline VkDeviceSize getUnusedBytes() const#

Getter for the total number of bytes occupied by unused ranges.

Returns:

The total number of bytes occupied by unused ranges

inline VkDeviceSize getAllocationSizeMin() const#

Getter for the minimum allocation size.

Returns:

The minimum allocation size

inline VkDeviceSize getAllocationSizeAvg() const#

Getter for the average allocation size.

Returns:

The average allocation size

inline VkDeviceSize getAllocationSizeMax() const#

Getter for the maximum allocation size.

Returns:

The maximum allocation size

inline VkDeviceSize getUnusedRangeSizeMin() const#

Getter for the minimum number of bytes occupied by unused ranges.

Returns:

The minimum number of bytes occupied by unused ranges

inline VkDeviceSize getUnusedRangeSizeAvg() const#

Getter for the average number of bytes occupied by unused ranges.

Returns:

The average number of bytes occupied by unused ranges

inline VkDeviceSize getUnusedRangeSizeMax() const#

Getter for the maximum number of bytes occupied by unused ranges.

Returns:

The maximum number of bytes occupied by unused ranges

ASVertexFormat#

Struct Documentation#

struct ASVertexFormat#

Vertex format of the acceleration primitive elements, in the future this vertex information wil be customizable.

Public Members

glm::vec3 pos#

Vertex position.

glm::vec3 nrm#

Vertex normal.

glm::vec2 texCoord#

Vertex texture coordinate.

glm::vec3 tangent#

Vertex tangent.

CreateSwapchainParameters#

Struct Documentation#

struct CreateSwapchainParameters#

Parameter object for the createSwapchainRenderpassFramebuffers call. Defaults are sensible and immediately usable, can be used, but it is recommended to pass the Vulkan Memory Allocator if one is used in the application.

Public Functions

inline void addPreferredColorFormat(pvrvk::Format format)#
inline void addPreferredDepthStencilFormat(pvrvk::Format format)#
inline CreateSwapchainParameters(bool createDepthBuffer = true, pvrvk::ImageUsageFlags colorBufferImageUsageFlags = pvrvk::ImageUsageFlags::e_COLOR_ATTACHMENT_BIT, pvrvk::ImageUsageFlags depthStencilBufferImageUsageFlags = pvrvk::ImageUsageFlags::e_DEPTH_STENCIL_ATTACHMENT_BIT | pvrvk::ImageUsageFlags::e_TRANSIENT_ATTACHMENT_BIT, pvrvk::ImageUsageFlags intermediateColorImageUsageFlagsIfMultisampled = pvrvk::ImageUsageFlags::e_COLOR_ATTACHMENT_BIT, pvrvk::ImageUsageFlags intermediateDepthStencilImageUsageFlags = pvrvk::ImageUsageFlags::e_DEPTH_STENCIL_ATTACHMENT_BIT | pvrvk::ImageUsageFlags::e_TRANSIENT_ATTACHMENT_BIT, vma::Allocator imageAllocator = nullptr, vma::AllocationCreateFlags imageAllocatorFlags = vma::AllocationCreateFlags::e_DEDICATED_MEMORY_BIT)#
inline CreateSwapchainParameters &setAllocator(vma::Allocator allocator)#
inline CreateSwapchainParameters &setAllocatorFlags(vma::AllocationCreateFlags flags)#
inline CreateSwapchainParameters &enableDepthBuffer(bool enableCreateDepthBuffer)#
inline CreateSwapchainParameters &setColorImageUsageFlags(pvrvk::ImageUsageFlags flags)#
inline CreateSwapchainParameters &setMultisampledColorResolveImageUsageFlags(pvrvk::ImageUsageFlags flags)#
inline CreateSwapchainParameters &setDepthStencilImageUsageFlags(pvrvk::ImageUsageFlags flags)#
inline CreateSwapchainParameters &setMultisampledDepthStencilResolveImageUsageFlags(pvrvk::ImageUsageFlags flags)#
inline CreateSwapchainParameters &setMultisampledDepthStencilAttachmentFlags(pvrvk::ImageUsageFlags flags)#
inline CreateSwapchainParameters &setMultisampledColorAttachmentFlags(pvrvk::ImageUsageFlags flags)#
inline CreateSwapchainParameters &setColorLoadOp(pvrvk::AttachmentLoadOp op)#
inline CreateSwapchainParameters &setColorStoreOp(pvrvk::AttachmentStoreOp op)#
inline CreateSwapchainParameters &setDepthStencilLoadOp(pvrvk::AttachmentLoadOp op)#
inline CreateSwapchainParameters &setDepthStencilStoreOp(pvrvk::AttachmentStoreOp op)#
inline CreateSwapchainParameters &setInitialSwapchainLayout(pvrvk::ImageLayout layout)#
inline CreateSwapchainParameters &setInitialDepthStencilLayout(pvrvk::ImageLayout layout)#

Public Members

bool createDepthBuffer = true#
pvrvk::ImageUsageFlags colorImageUsageFlags = pvrvk::ImageUsageFlags::e_COLOR_ATTACHMENT_BIT#

If multisampled, this is actually the “resolve” flags. Otherwise, these are the flags for the one and only “color attachment”.

pvrvk::ImageUsageFlags depthStencilImageUsageFlags = pvrvk::ImageUsageFlags::e_DEPTH_STENCIL_ATTACHMENT_BIT | pvrvk::ImageUsageFlags::e_TRANSIENT_ATTACHMENT_BIT#

If multisampled, this is actually the depth “resolve” flags. Otherwise, these are the flags for the one and only “depth stencil attachment”.

pvrvk::ImageUsageFlags colorAttachmentFlagsIfMultisampled = pvrvk::ImageUsageFlags::e_COLOR_ATTACHMENT_BIT | pvrvk::ImageUsageFlags::e_TRANSIENT_ATTACHMENT_BIT#

Only used if multisampled. These are the flags for the attachment, the multisampled intermediate color image.

pvrvk::ImageUsageFlags depthStencilAttachmentFlagsIfMultisampled = pvrvk::ImageUsageFlags::e_DEPTH_STENCIL_ATTACHMENT_BIT | pvrvk::ImageUsageFlags::e_TRANSIENT_ATTACHMENT_BIT#

Only used if multisampled. These are the flags for the attachment, the multisampled intermediate depth/stencil image.

vma::Allocator imageAllocator = nullptr#

The allocator to use for all the images.

vma::AllocationCreateFlags imageAllocatorFlags = vma::AllocationCreateFlags::e_DEDICATED_MEMORY_BIT#

The flags to use when allocating the attachments.

pvrvk::ImageLayout initialSwapchainLayout = pvrvk::ImageLayout::e_UNDEFINED#

Layout that the swapchain images will be in on creation.

pvrvk::ImageLayout initialDepthStencilLayout = pvrvk::ImageLayout::e_UNDEFINED#

Layout that the depth stencil images will be in on creation.

pvrvk::AttachmentLoadOp colorLoadOp = pvrvk::AttachmentLoadOp::e_CLEAR#

Color image load op. Usually default (clear) is best for performance as it allows to skip loading from the framebuffer.

pvrvk::AttachmentStoreOp colorStoreOp = pvrvk::AttachmentStoreOp::e_STORE#

Color image load op. Usually default (store) is necessary for the rendering to be visible.

pvrvk::AttachmentLoadOp depthStencilLoadOp = pvrvk::AttachmentLoadOp::e_CLEAR#

Color image load op. Default (clear) is very important for performance as it allows to skip loading from the framebuffer.

pvrvk::AttachmentStoreOp depthStencilStoreOp = pvrvk::AttachmentStoreOp::e_DONT_CARE#

Color image load op. Default (don’t care) is very critical for performance as it allows to completely skip creating a physical memory backing for the depth buffer..

std::vector<pvrvk::Format> preferredColorFormats#
std::vector<pvrvk::Format> preferredDepthStencilFormats#

DebugUtilsCallbacks#

Struct Documentation#

struct DebugUtilsCallbacks#

A simple wrapper structure which provides a more abstract representation of a set of debug utils messengers or debug callbacks when using either VK_EXT_debug_utils or VK_EXT_debug_report respectively.

Public Members

pvrvk::DebugUtilsMessenger debugUtilsMessengers[2]#

A set of debug utils messengers which may be used when VK_EXT_debug_utils is supported and enabled via the Vulkan instance.

pvrvk::DebugReportCallback debugCallbacks[2]#

A set of debug report callbacks which may be used when VK_EXT_debug_report is supported and enabled via the Vulkan instance.

DeviceExtensions#

Inheritance Relationships#

Base Type#

  • public pvrvk::VulkanExtensionList

Struct Documentation#

struct DeviceExtensions : public pvrvk::VulkanExtensionList#

Container for a list of device extensions to be used for initiailising a device using the helper function ‘createDeviceAndQueues’.

Public Functions

DeviceExtensions(VulkanVersion vkVersion = VulkanVersion())#

Default constructor. Initialises a list of device extensions to be used by default when using the Framework. Changes based on the targetted instance version.

Parameters:

vkVersion – Targetted Vulkan version, defaults to 1.1

DeviceExtensions &addExtensionFeature(pvrvk::ExtensionFeatures &extensionFeature)#

Add extension feature to the device extensions.

Parameters:

extensionFeature – Extension features for a physical device.

Returns:

Self

DeviceExtensions &addFragmentShadingRateExtensionAndFeature(pvrvk::PhysicalDevice &physicalDevice)#

Helper function to add the fragment shading rate extension and feature.

Parameters:

physicalDevice – Reference to a physical device. Make sure it is capable of performing FSR with PhysicalDevice_::getFragmentShadingRateFeatures()

Returns:

Self

ImageUpdateInfo#

Struct Documentation#

struct ImageUpdateInfo#

The ImageUpdateInfo struct.

Public Functions

inline ImageUpdateInfo()#

Public Members

int32_t offsetX#

Valid for all.

uint32_t imageWidth#

Valid for all.

uint32_t dataWidth#

Valid for all.

uint32_t arrayIndex#

Valid for 1D,2D and Cube texture updates.

uint32_t mipLevel#

Valid for all.

const void *data#

Valid for all.

uint32_t dataSize#

Valid for all.

int32_t offsetY#

Valid for 2D, 3D and Cube texture updates.

uint32_t imageHeight#

Valid for 2D, 3D and Cube texture updates.

uint32_t dataHeight#

Valid for 2D, 3D and Cube texture updates.

uint32_t cubeFace#

Valid for Cube texture updates only.

int32_t offsetZ#

Valid for 3D texture updates only.

uint32_t depth#

Valid for texture updates only.

uint32_t numPlanes#

Valid for YCbCr texture updates only.

uint32_t planeIndex#

Valid for YCbCr texture updates only.

ImageUploadFuture_#

Inheritance Relationships#

Base Types#

  • public async::IFrameworkAsyncResult< pvrvk::ImageView >

  • public std::enable_shared_from_this< ImageUploadFuture_ >

Struct Documentation#

struct ImageUploadFuture_ : public async::IFrameworkAsyncResult<pvrvk::ImageView>, public std::enable_shared_from_this<ImageUploadFuture_>#

This class provides a wrapper for a Image upload future.

Public Types

typedef IFrameworkAsyncResult<pvrvk::ImageView>::Callback CallbackType#

The type of the optional callback that is called at the end of the operation.

Public Functions

inline ImageUploadFuture_()#

Default constructor for a pvr::utils::ImageUploadFuture_.

inline void setCallBack(CallbackType callback)#

Sets a callback which will be called after the image upload has completed.

Parameters:

callback – Specifies a callback to call when the image upload has completed.

inline void loadNow()#

Initiates the asynchronous image upload.

inline const pvrvk::ImageView &getResult()#

Returns the result of the asynchronous image upload.

Returns:

The result of the asynchronous image upload which is an ImageView.

Public Members

pvrvk::Queue _queue#

A queue to be used to submit image upload operations.

pvrvk::Device _device#

A _device to be used for creating temporary resources required for uploading an image.

AsyncTexture _texture#

A pvr::Texture to asynchronously upload to the Gpu.

pvrvk::CommandPool _cmdPool#

A command pool from which comand buffers will be allocated to record image upload operations.

async::Mutex *_cmdQueueMutex#

A semaphore used to guard access to submitting to the CommandQueue.

bool _allowDecompress#

Specifies whether the uploaded texture can be decompressed as it is uploaded.

mutable async::SemaphorePtr _resultSemaphore#

Specifies a semaphore which will be signalled at the point the upload of the texture is finished.

bool _callbackBeforeSignal = false#

Specifies whether the callback should be called prior to signalling the completion of the image upload.

InstanceExtensions#

Inheritance Relationships#

Base Type#

  • public pvrvk::VulkanExtensionList

Struct Documentation#

struct InstanceExtensions : public pvrvk::VulkanExtensionList#

Container for a list of instance extensions to be used for initiailising an instance using the helper function ‘createInstanceAndSurface’.

Public Functions

InstanceExtensions(VulkanVersion vkVersion = VulkanVersion())#

Default constructor. Initialises a list of instance extensions to be used by default when using the Framework. Changes based on the targetted instance version.

Parameters:

vkVersion – Targetted Vulkan version, defaults to 1.1

InstanceLayers#

Inheritance Relationships#

Base Type#

  • public pvrvk::VulkanLayerList

Struct Documentation#

struct InstanceLayers : public pvrvk::VulkanLayerList#

Container for a list of instance layers to be used for initiailising an instance using the helper function ‘createInstanceAndSurface’.

Public Functions

InstanceLayers(bool forceLayers = false)#

Default constructor. Initialises the list of instance layers based on whether the build is Debug/Release.

Parameters:

forceLayers – A boolean flag which can be used to force the use of VK_LAYER_KHRONOS_validation or the now deprecated VK_LAYER_LUNARG_standard_validation even when in Releae builds. Note that the VK_LAYER_KHRONOS_validation layers will be enabled by default in Debug builds.

ModelGles::ApiMeshGles#

Nested Relationships#

This struct is a nested type of ModelGles.

Struct Documentation#

struct ApiMeshGles

The ApiMeshGles structure handles the encapsulation of all buffers (vbos and ibos) for a particular mesh of a model.

Public Members

std::vector<GLuint> vbos

A list of vertex buffer objects in use for the mesh.

GLuint ibo

An index buffer objects in use for the mesh.

OnScreenObjects#

Struct Documentation#

struct OnScreenObjects#

Packaging for Swapchain, on screen Framebuffers, Renderpass, Attachments. Returned by createSwapchainRenderpassFramebuffers.

Public Functions

inline bool isMultisampled()#
inline bool hasDepthStencil()#

Public Members

pvrvk::RenderPass renderPass#

The renderpass object.

std::vector<pvrvk::Framebuffer> framebuffer#

The collection of framebuffer objects.

pvrvk::Swapchain swapchain#

The swapchain object.

std::vector<pvrvk::ImageView> depthStencilImages#

The final depth stencil images. If multisampled, will contain the “Depth Resolve” attachments, not the “Depth” attachments.

std::vector<pvrvk::ImageView> colorMultisampledAttachmentImages#

If multisampled, the “Color Attachments” (this is where multisampled rendering will be happening), otherwise empty.

std::vector<pvrvk::ImageView> depthStencilMultisampledAttachmentImages#

If multisampled, the “Depth Attachments” (this is where multisampled rendering will be happening), otherwise empty.

QueueAccessInfo#

Struct Documentation#

struct QueueAccessInfo#

A structure encapsulating the family id and queue id of a particular queue retrieved via the helper function ‘createDeviceAndQueues’. The family id corresponds to the family id the queue was retrieved from. The queue id corresponds to the particular queue index for the retrieved queue.

Public Functions

inline QueueAccessInfo()#

Constructor for a QueueAccessInfo which sets family id and queue id to invalid values.

Public Members

uint32_t familyId#

The queue family identifier the queue with queueId was retrieved from.

uint32_t queueId#

The queue identifier for the retrieved queue in queue family with identifier familyId.

QueuePopulateInfo#

Struct Documentation#

struct QueuePopulateInfo#

A structure encapsulating the set of queue flags required for a particular queue retrieved via the helper function ‘createDeviceAndQueues’. Optionally additionally providing a surface will indicate that the queue must support presentation via the provided surface.

Public Functions

inline QueuePopulateInfo(pvrvk::QueueFlags queueFlags, float priority = 1.0f)#

Constructor for a QueuePopulateInfo requiring that a set of queue flags is provided.

Parameters:
  • queueFlags – The queue flags the queue must support.

  • priority – Specifies the priority which should be given to the retrieved queue.

inline QueuePopulateInfo(pvrvk::QueueFlags queueFlags, pvrvk::Surface &surface, float priority = 1.0f)#

Constructor for a QueuePopulateInfo requiring that a set of queue flags and a surface are provided.

Parameters:
  • queueFlags – The queue flags the queue must support.

  • surface – Indicates that the retrieved queue must support presentation to the provided surface.

  • priority – Specifies the priority which should be given to the retrieved queue.

Public Members

pvrvk::QueueFlags queueFlags#

The queue flags the queue must support.

pvrvk::Surface surface#

Indicates that the retrieved queue must support presentation to the provided surface.

float priority#

Specifies the priority which should be given to the retrieved queue.

RTInstance#

Struct Documentation#

struct RTInstance#

Information about each scene element that can be ray traced at high level (instance).

Public Members

uint32_t modelIndex = 0#

Index of the corresponding bottom element in the bottom level acceleration structure.

uint32_t instanceId = 0#

Index of the instance, at shader level given by gl_InstanceID.

uint32_t hitGroupId = 0#

Index of the hit group.

uint32_t mask = 0xFF#

Visibility mask.

pvrvk::GeometryInstanceFlagsKHR flags = pvrvk::GeometryInstanceFlagsKHR::e_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR#

Ray Traced instance flags.

glm::mat4 transform = glm::mat4(1.0)#

Instance RTS (rotation, translation and scale) matrix.

RTModelInfo#

Struct Documentation#

struct RTModelInfo#

Information per bottom level acceleration structure element.

Public Members

pvrvk::Buffer vertexBuffer#

Vertex buffer with the botom level geometry information.

pvrvk::Buffer indexBuffer#

Index buffer with the botom level geometry information.

uint32_t primitiveCount#

Amount of primitives this geometry has.

uint32_t vertexCount#

Amount of vertices in this geometry.

size_t vertexStride#

Stride for this geometry.

SceneDescription#

Struct Documentation#

struct SceneDescription#

Struct to store scene instance elements information, will be copied to a GPU buffer.

Public Members

uint32_t modelIndex = 0#

Reference to the top level instance by index.

glm::mat4 transform = glm::mat4(1)#

RTS (rotation, translation and scale) matrix of the instance.

glm::mat4 transformIT = glm::mat4(1)#

Inverse transpose of RTS.

StructuredMemoryEntry::IsEqual#

Nested Relationships#

This struct is a nested type of StructuredMemoryEntry.

Struct Documentation#

struct IsEqual#

Public Functions

inline IsEqual(const StringHash &name)#
inline bool operator()(const StructuredMemoryEntry &rhs) const#

Public Members

const StringHash &_hash#

TextureUploadResults#

Struct Documentation#

struct TextureUploadResults#

The TextureUploadResults structure provides the results for texture upload functions in a simple to use structure.

Public Functions

inline TextureUploadResults()#

Default constructor for a TextureUploadResults structure.

inline ~TextureUploadResults()#

Destructor for a TextureUploadResults structure.

inline TextureUploadResults(TextureUploadResults &&rhs)#

Move constructor for a TextureUploadResults structure.

Parameters:

rhs – The TextureUploadResults structure to use as the source of the move.

Public Members

GLenum target#

The texture target to be used for the resulting texture.

GLuint image#

A native texture handle where the texture was uploaded.

PixelFormat format#

The format of the created texture.

bool isDecompressed#

Will be set to ‘true’ if the file was of an uncompressed format unsupported by the platform, and it was (software) decompressed to a supported uncompressed format.

VertexAttributeInfo#

Inheritance Relationships#

Derived Type#

Struct Documentation#

struct VertexAttributeInfo#

Contains a full description of a Vertex Attribute: Index, format, number of elements, offset in the buffer, optionally name. All values (except attributeName) must be set explicitly.

Subclassed by pvr::utils::VertexAttributeInfoWithBinding

Public Functions

inline VertexAttributeInfo()#

Default constructor. Uninitialized values, except for AttributeName.

inline VertexAttributeInfo(uint16_t index, DataType format, uint8_t width, uint32_t offsetInBytes, const char *attribName = "")#

Create a new VertexAttributeInfo object.

Parameters:
  • index – Attribute binding index

  • format – Attribute data type

  • width – Number of elements in attribute

  • offsetInBytes – Interleaved: offset of the attribute from the start of data of each vertex

  • attribName – Name of the attribute in the shader.

inline bool operator==(VertexAttributeInfo const &rhs) const#

Return true if the right hand object is equal to this.

Parameters:

rhs – The right hand side of the operator

Returns:

True if index, format, width and offset are all equal, otherwise false

inline bool operator!=(VertexAttributeInfo const &rhs) const#

Return true if the right hand object is not equal to this.

Parameters:

rhs – The right hand side of the operator

Returns:

True if at least one of index, format, width and offset is not equal, otherwise false

Public Members

uint16_t index#

Attribute index.

DataType format#

Data type of each element of the attribute.

uint8_t width#

Number of elements in attribute, e.g 1,2,3,4.

uint32_t offsetInBytes#

Offset of the first element in the buffer.

std::string attribName#

Optional: Name(in the shader) of the attribute.

VertexAttributeInfoGles#

Struct Documentation#

struct VertexAttributeInfoGles#

A container struct carrying Vertex Attribute information (vertex layout, plus binding point)

Public Functions

inline VertexAttributeInfoGles()#
inline VertexAttributeInfoGles(const VertexAttributeInfoWithBinding &attr, const VertexInputBindingInfo &bind)#
inline void callVertexAttribPtr()#

Public Members

GLuint index#

The Vertex Buffer binding point this attribute is bound to.

Attribute index

GLuint vboIndex#
GLuint stride#
GLenum format#

Data type of each element of the attribute.

GLint size#

Number of elements in attribute, e.g 1,2,3,4.

void *offset#

Offset of the first element in the buffer.

VertexAttributeInfoWithBinding#

Inheritance Relationships#

Base Type#

Struct Documentation#

struct VertexAttributeInfoWithBinding : public pvr::utils::VertexAttributeInfo#

A container struct carrying Vertex Attribute information (vertex layout, plus binding point)

Public Functions

inline VertexAttributeInfoWithBinding()#

Constructor.

inline VertexAttributeInfoWithBinding(const VertexAttributeInfo &nfo, uint16_t binding)#

Constructor from VertexAttributeInfo and Binding.

Parameters:
  • nfo – A vertexAttributeInfo

  • binding – The VBO binding index from where this vertex attribute will be sourced

inline VertexAttributeInfoWithBinding(uint16_t index, DataType format, uint8_t width, uint32_t offsetInBytes, uint16_t binding, const char *attribName = "")#

Constructor from individual values.

Parameters:
  • index – The index of the vertex attribute

  • format – The vertex attribute format

  • width – The number of elements in the vertex attribute (e.g. 4 for a vec4)

  • offsetInBytes – The offset of the vertex attribute from the start of the buffer

  • binding – The VBO binding index from where this vertex attribute will be sourced

  • attribName – The Attribute name (optional, only required/supported in some apis)

Public Members

uint16_t binding#

The Vertex Buffer binding point this attribute is bound to.

VertexBindings#

Struct Documentation#

struct VertexBindings#

Represents a shader Explicit binding, tying a Semantic name to an Attribute Index.

Public Members

std::string semanticName#

Effect semantic.

uint16_t binding#
int16_t location#

shader attribute location.

VertexBindings_Name#

Struct Documentation#

struct VertexBindings_Name#

Represents a shader Reflective binding, tying a Semantic name to an Attribute variable name.

Public Members

StringHash semantic#

Effect semantic.

StringHash variableName#

Shader attribute name.

VertexBindingInfoGles#

Struct Documentation#

struct VertexBindingInfoGles#

A container struct carrying Vertex Attribute information (vertex layout, plus binding point)

Public Functions

inline VertexBindingInfoGles()#

Public Members

GLuint bindingId#
GLuint stride#
GLenum stepRate#

VertexConfiguration#

Struct Documentation#

struct VertexConfiguration#

Public Functions

inline VertexConfiguration &addVertexAttribute(uint16_t bufferBinding, const VertexAttributeInfo &attrib)#

Add vertex layout information to a buffer binding index using a VertexAttributeInfo object.

Parameters:
  • bufferBinding – The binding index to add the vertex attribute information.

  • attrib – Vertex Attribute information object.

Returns:

this object (allows chained calls)

inline VertexConfiguration &addVertexAttributes(uint16_t bufferBinding, const VertexAttributeInfo *attrib, uint32_t numAttributes)#

Add vertex layout information to a buffer binding index using an array of VertexAttributeInfo object.

Parameters:
  • bufferBinding – The binding index to add the vertex attribute information.

  • attrib – Attribute information object.

  • numAttributes – Number of attributues in the array

Returns:

this object (allows chained calls)

inline VertexConfiguration &addVertexAttribute(uint16_t index, uint16_t bufferBinding, const VertexAttributeLayout &layout, const char *attributeName = "")#

Add vertex layout information to a buffer binding index using a VertexAttributeLayout object and an attrib name.

Parameters:
  • index – The index of the vertex attribute

  • bufferBinding – The binding index of the buffer from which vertex data will be read.

  • layout – Vertex Attribute Layout object

  • attributeName – The name of the variable in shader code. Required for API’s that only support Reflective attribute binding and not Explicit binding of attributes to indices in shader code.

Returns:

this object (allows chained calls)

inline VertexConfiguration &setInputBinding(uint16_t bufferBinding, uint16_t strideInBytes = 0, StepRate stepRate = StepRate::Vertex)#

Set the vertex input buffer bindings.

Parameters:
  • bufferBinding – Vertex buffer binding index

  • strideInBytes – specifies the char offset between consecutive generic vertex attributes. If stride is 0, the generic vertex attributes are understood to be tightly packed in the array. The initial value is 0.

  • stepRate – The rate at which this binding is incremented (used for Instancing).

Returns:

this object (allows chained calls)

Public Members

PrimitiveTopology topology#
std::vector<VertexAttributeInfoWithBinding> attributes#
std::vector<VertexInputBindingInfo> bindings#

VertexInputBindingInfo#

Struct Documentation#

struct VertexInputBindingInfo#

Information about a Buffer binding: Binding index, stride, (instance) step rate.

Public Functions

inline VertexInputBindingInfo()#

Construct with Uninitialized values.

inline VertexInputBindingInfo(uint16_t bindId, uint32_t strideInBytes, StepRate stepRate = StepRate::Vertex)#

Add a buffer binding.

Parameters:
  • bindId – Buffer binding point

  • strideInBytes – Buffer stride of each vertex attribute to the next

  • stepRate – Vertex Attribute Step Rate

Public Members

uint16_t bindingId#

buffer binding index

uint32_t strideInBytes#

buffer stride in bytes

StepRate stepRate#

buffer step rate

VulkanVersion#

Struct Documentation#

struct VulkanVersion#

The VulkanVersion structure provides an easy mechanism for constructing the Vulkan version for use when creating a Vulkan instance.

Public Functions

inline VulkanVersion(uint32_t inMajorVersion = 1, uint32_t inMinorVersion = 0, uint32_t inPatchVersion = 0)#

Default constructor for the VulkanVersion structure initialising the version to the first Vulkan release 1.0.0.

Parameters:
  • inMajorVersion – The major Vulkan version.

  • inMinorVersion – The minor Vulkan version.

  • inPatchVersion – The Vulkan patch version.

inline VulkanVersion(uint32_t inMajorVersion, uint32_t inMinorVersion, uint32_t inPatchVersion, bool inIsSafetyCritical)#

Default constructor for the VulkanVersion structure initialising the version to the first Vulkan release 1.0.0.

Parameters:
  • inMajorVersion – The major Vulkan version.

  • inMinorVersion – The minor Vulkan version.

  • inPatchVersion – The Vulkan patch version.

  • inIsSafetyCritical – Whether the API used is standard Vulkan or Vulkan Safety Critical.

inline uint32_t toVulkanVersion()#

Converts the major, minor and patch versions to a uint32_t which can be directly used when creating a Vulkan instance.

Returns:

A uint32_t value which can be directly as the vulkan api version when creating a Vulkan instance set as pvrvk::ApplicationInfo.apiVersion

Public Members

uint32_t majorVersion#

The major version number.

uint32_t minorVersion#

The minor version number.

uint32_t patchVersion#

The patch version number.

bool isSafetyCritical#

Whether the Vulkan API version used is standard Vulkan or Vulkan Safety Critical.