core::ivk::pipeline class

encapsulated the concept of a graphics pipeline on the GPU

constructors, destructors, conversion operators

pipeline
creates a graphics pipeline
public
pipeline
creates a compute pipeline
public
operator bool
const public noexcept

member-functions

has_pushconstants
const public noexcept
vkPipeline
const public noexcept
vkLayout
const public noexcept
vkDescriptorSet
const public noexcept
get
public
update
public
update
public
update
public
unsafe_update
public
is_complete
const public noexcept
is_valid
const public noexcept

Function documentation

core::ivk::pipeline::pipeline(core::resource::cache_t& cache, const core::resource::metadata& metaData, psl::meta::file* metaFile, core::resource::handle<core::ivk::context> context, core::resource::handle<core::data::material_t> data, vk::PipelineCache& pipelineCache, vk::RenderPass renderPass, uint32_t attachmentCount)

Brief

creates a graphics pipeline

Details

core::ivk::pipeline::pipeline(core::resource::cache_t& cache, const core::resource::metadata& metaData, psl::meta::file* metaFile, core::resource::handle<core::ivk::context> context, core::resource::handle<core::data::material_t> data, vk::PipelineCache& pipelineCache)

Brief

creates a compute pipeline

Details

core::ivk::pipeline::operator bool() const noexcept

Returns if the pipeline was successfully created, when false the pipeline is unrecoverable (inspect logs for reasons)

bool core::ivk::pipeline::has_pushconstants() const noexcept

Returns if the pipeline uses any push constants.

vk::Pipeline core::ivk::pipeline::vkPipeline() const noexcept

Returns the vulkan pipeline object of this instance.

vk::PipelineLayout core::ivk::pipeline::vkLayout() const noexcept

Returns the vulkan pipeline layout of this instance.

vk::DescriptorSet const* core::ivk::pipeline::vkDescriptorSet() const noexcept

Returns the allocated descriptor set for this instance.

bool core::ivk::pipeline::get(uint32_t bindingLocation, vk::WriteDescriptorSet& out)

Parameters
bindingLocation in the binding location to check.
out out the resulting descriptor set.
Returns true if there was a binding at that binding location.

bool core::ivk::pipeline::update(uint32_t bindingLocation, vk::WriteDescriptorSet descriptor)

Parameters
bindingLocation in the binding location to update.
descriptor in the new information to emplace at the location.
Returns if updating that binding location was successful. It has to be a binding point that exists, and is of the correct type, otherwise it returns false.

bool core::ivk::pipeline::update(uint32_t bindingLocation, const psl::UID& textureMeta, const psl::UID& samplerMeta)

Parameters
bindingLocation in the binding location to update.
textureMeta in the new texture to bind to that location.
samplerMeta in the new sampler to bind to that location.
Returns if updating that binding location was successful. It has to be a eCombinedImageSampler descriptor binding point to be successful.

bool core::ivk::pipeline::update(uint32_t bindingLocation, vk::DeviceSize offset, vk::DeviceSize range)

Parameters
bindingLocation in the binding location to update.
offset in the new offset of the buffer binding.
range in the new size of the buffer binding.
Returns if updating that binding location was successful. It has to be an eStorageBuffer or eUniformBuffer descriptor binding point to be successful.

bool core::ivk::pipeline::unsafe_update(uint32_t bindingLocation, core::resource::handle<core::ivk::buffer_t> buffer, vk::DeviceSize offset, vk::DeviceSize range)

Details

Parameters
bindingLocation in the binding location to update.
buffer in the new buffer to bind this descriptorset to.
offset in the new offset of the buffer binding.
range in the new size of the buffer binding.
Returns if updating the binding location was successful.

bool core::ivk::pipeline::is_complete() const noexcept

Details

Returns if the pipeline's descriptors have been completely filled in

bool core::ivk::pipeline::is_valid() const noexcept

Returns if the pipeline was successfully created, when false the pipeline is unrecoverable (inspect logs for reasons)