Resources module

The resources group/module encompasses objects that especially require Vulkan/GPU resource allocation, lifetime management, and objects that most benefit from C++ abstraction to remove boilerplate code.

Contents

It also relates most to the allocator module: this was separated, however, as it mostly enables much of these classes to be abstract and is complex enough to warrant its own grouping.

Classes

class vpr::Buffer deprecated
class vpr::DescriptorPool
RAII wrapper around a VkDescriptorPool intended to facilitate sharing of descriptor pools between disparate objects, thus increasing resource sharing and avoiding allocating single-use descriptor pools (as this is an expensive operation).
class vpr::DescriptorSet
RAII wrapper around a descriptor set, simplifying adding individual descriptor bindings for whatever stage they're required at.
class vpr::DescriptorSetLayout
Simple wrapper around the VkDescriptorSetLayout object.
class vpr::Image deprecated
class vpr::PipelineCache
A PipelineCache is a wrapper around a VkPipelineCache that takes care of several important details that are otherwise difficult to handle: saving and loading pipeline cache data from a file, verifying integrity of pipeline cache files, and cleaning up / repairing old, unused, and outdated pipeline cache files.
class vpr::PipelineLayout
PipelineLayout is an RAII wrapper around a VkPipelineLayout object that also simplifies setting what resources the pipeline layout will have bound to it.
class vpr::Sampler
Bare minimum RAII wrapper around Vulkan sampler object.
class vpr::ShaderModule
A thoroughly thin wrapper around a VkShaderModule object, whose primary utility beyond RAII resource management is setting up the VkPipelineShaderStageCreateInfo required when creating/setting up an objects graphics pipeline.

Functions

auto SetLoggingRepository_VprResource(void* repo) -> VPR_API void
Pass an easyloggingpp logging repository pointer into this function, and it will be set as the repository for this module to use.

Function documentation

VPR_API void SetLoggingRepository_VprResource(void* repo)

Pass an easyloggingpp logging repository pointer into this function, and it will be set as the repository for this module to use.

That way, all log messages from all modules (even when using this as a shared library) will go to the same sinks