VPP  0.7
A high-level modern C++ API for Vulkan
Public Member Functions | List of all members
vpp::Computation Class Reference

Base class for single computation routine. More...

#include <vppComputationEngine.hpp>

Inheritance diagram for vpp::Computation:
vpp::ComputePass vpp::NonRenderingCommands vpp::UniversalCommands

Public Member Functions

 Computation ()
 Creates a computation without dependency.
 
 Computation (Computation &predecessor)
 Creates a computation with a dependency. More...
 
void operator() (const Fence &sigFenceOnEnd=Fence())
 Launches a computation on GPU. More...
 
bool operator() (std::uint64_t waitTimeout)
 Launches a computation on GPU and waits for completion. More...
 
void operator() (const Queue &hQueue, const Fence &sigFenceOnEnd=Fence())
 Schedules a computation to specified queue on the GPU. More...
 
void operator() (const Queue &hQueue, const Semaphore &waitSem, const Semaphore &sigSem=Semaphore())
 Schedules a synchronized computation to specified queue on the GPU. More...
 
- Public Member Functions inherited from vpp::ComputePass
 ComputePass (const Device &hDevice)
 Construct a compute pass.
 
 ComputePass (const Device &hDevice, const PipelineCache &hPipelineCache)
 Construct a compute pass with user-supplied pipeline cache.
 
const Devicedevice () const
 Retrieves the device associated with this compute pass.
 
const PipelineCachepipelineCache () const
 Retrieves the pipeline cache associated with this compute pass.
 
const ComputePipelinepipeline (std::uint32_t iPipeline) const
 Retrieves a pipeline associated with this compute pass and specified pipeline index.
 
template<class DefinitionT >
std::uint32_t addPipeline (const ComputePipelineLayout< DefinitionT > layout)
 Registers a pipeline with this compute pass. Returns pipeline index.
 
void operator<< (const std::function< void() > &cmds)
 Defines a command sequence for compute pass.
 

Additional Inherited Members

- Static Public Member Functions inherited from vpp::ComputePass
static void cmdDispatch (unsigned int nx=1, unsigned int ny=1, unsigned int nz=1, CommandBuffer hCmdBuffer=CommandBuffer())
 Generates a command which starts execution of currently selected pipeline in the compute pass. More...
 
static void cmdDispatchIndirect (const IndirectBufferView &data, unsigned int index, CommandBuffer hCmdBuffer=CommandBuffer())
 Generates a command to dispatch specified item of indirect dispatch buffer. More...
 
- Static Public Member Functions inherited from vpp::NonRenderingCommands
static void cmdFillBuffer (const Buf &hDstBuffer, size_t offset, size_t size, std::uint32_t value, CommandBuffer hCmdBuffer=CommandBuffer())
 Fills specified buffer (or a region of it) with constant value.
 
static void cmdCopyBuffer (const Buf &hSrcBuffer, const Buf &hDstBuffer, CommandBuffer hCmdBuffer=CommandBuffer())
 Copies entire contents from one buffer to another.
 
static void cmdCopyBuffer (const Buf &hSrcBuffer, const Buf &hDstBuffer, const std::vector< VkBufferCopy > &regions, CommandBuffer hCmdBuffer=CommandBuffer())
 Copies a list of regions from one buffer to another.
 
static void cmdUpdateBuffer (const Buf &hDstBuffer, size_t offset, size_t size, const std::uint32_t *pData, CommandBuffer hCmdBuffer=CommandBuffer())
 Modifies a buffer region with specified data. More...
 
static void cmdCopyImage (const Img &hSrcImage, VkImageLayout srcImageLayout, const Img &hDstImage, VkImageLayout dstImageLayout, CommandBuffer hCmdBuffer=CommandBuffer())
 Copies entire contents from one image to another.
 
static void cmdCopyImage (const Img &hSrcImage, VkImageLayout srcImageLayout, const Img &hDstImage, VkImageLayout dstImageLayout, const std::vector< VkImageCopy > &regions, CommandBuffer hCmdBuffer=CommandBuffer())
 Copies a list of regions from one image to another.
 
static void cmdCopyBufferToImage (const Buf &hSrcBuffer, const Img &hDstImage, VkImageLayout dstImageLayout, CommandBuffer hCmdBuffer=CommandBuffer())
 Copies entire contents from a buffer to an image.
 
static void cmdCopyBufferToImage (const Buf &hSrcBuffer, const Img &hDstImage, VkImageLayout dstImageLayout, const std::vector< VkBufferImageCopy > &regions, CommandBuffer hCmdBuffer=CommandBuffer())
 Copies a list of regions from a buffer to an image.
 
static void cmdCopyImageToBuffer (const Img &hSrcImage, VkImageLayout srcImageLayout, const Buf &hDstBuffer, CommandBuffer hCmdBuffer=CommandBuffer())
 Copies entire contents from an image to a buffer.
 
static void cmdCopyImageToBuffer (const Img &hSrcImage, VkImageLayout srcImageLayout, const Buf &hDstBuffer, const std::vector< VkBufferImageCopy > &regions, CommandBuffer hCmdBuffer=CommandBuffer())
 Copies a list of regions from an image to a buffer.
 
static void cmdBlitImage (const Img &hSrcImage, VkImageLayout srcImageLayout, const Img &hDstImage, VkImageLayout dstImageLayout, const VkOffset3D &srcBegin, const VkOffset3D &srcEnd, const VkOffset3D &dstBegin, const VkOffset3D &dstEnd, CommandBuffer hCmdBuffer=CommandBuffer())
 Copies source image region into destination image, potentially performing format conversion, arbitrary scaling and filtering.
 
static void cmdBlitImage (const Img &hSrcImage, VkImageLayout srcImageLayout, const Img &hDstImage, VkImageLayout dstImageLayout, const VkOffset3D &srcBegin, const VkOffset3D &srcEnd, const VkOffset3D &dstBegin, CommandBuffer hCmdBuffer=CommandBuffer())
 Copies source image region into destination image, potentially performing format conversion, but no scaling.
 
static void cmdBlitImage (const Img &hSrcImage, VkImageLayout srcImageLayout, const Img &hDstImage, VkImageLayout dstImageLayout, const std::vector< VkImageBlit > &regions, CommandBuffer hCmdBuffer=CommandBuffer())
 Copies source image regions into destination image, potentially performing format conversion, arbitrary scaling and filtering.
 
static void cmdResolveImage (const Img &hSrcImage, VkImageLayout srcImageLayout, const Img &hDstImage, VkImageLayout dstImageLayout, const VkOffset3D &srcOffset, const VkOffset3D &dstOffset, const VkExtent3D &size, CommandBuffer hCmdBuffer=CommandBuffer())
 Resolves source multisampled image region into destination regular image. More...
 
static void cmdResolveImage (const Img &hSrcImage, VkImageLayout srcImageLayout, const Img &hDstImage, VkImageLayout dstImageLayout, CommandBuffer hCmdBuffer=CommandBuffer())
 Resolves source multisampled image into destination regular image. More...
 
static void cmdResolveImage (const Img &hSrcImage, VkImageLayout srcImageLayout, const Img &hDstImage, VkImageLayout dstImageLayout, const std::vector< VkImageResolve > &regions, CommandBuffer hCmdBuffer=CommandBuffer())
 Resolves a list of source multisampled image regions into destination regular image regions. More...
 
static void cmdClearColorImage (const Img &hImage, VkImageLayout imageLayout, const VkClearColorValue &color, CommandBuffer hCmdBuffer=CommandBuffer())
 Clears an image with specified color.
 
static void cmdClearColorImage (const Img &hImage, VkImageLayout imageLayout, const VkClearColorValue &color, const std::vector< VkImageSubresourceRange > &regions, CommandBuffer hCmdBuffer=CommandBuffer())
 Clears a list of regions in specified image with specified color.
 
static void cmdClearDepthStencilImage (const Img &hImage, VkImageLayout imageLayout, float depth, std::uint32_t stencil, CommandBuffer hCmdBuffer=CommandBuffer())
 Clears a depth or stencil image with specified value.
 
static void cmdClearDepthStencilImage (const Img &hImage, VkImageLayout imageLayout, float depth, std::uint32_t stencil, const std::vector< VkImageSubresourceRange > &regions, CommandBuffer hCmdBuffer=CommandBuffer())
 Clears a list of regions in depth or stencil image with specified value.
 
static void cmdResetQueryPool (const QueryPool &hPool, std::uint32_t first, std::uint32_t count, CommandBuffer hCmdBuffer=CommandBuffer())
 Resets a range of queries in a query pool.
 
static void cmdResetQueryPool (const QueryPool &hPool, CommandBuffer hCmdBuffer=CommandBuffer())
 Resets all queries in a query pool.
 
static void cmdCopyQueryPoolResults (const Buf &hDstBuffer, const QueryPool &hPool, VkQueryResultFlags flags, std::uint32_t count, std::uint32_t first, VkDeviceSize dstOffset, CommandBuffer hCmdBuffer=CommandBuffer())
 
static void cmdCopyQueryPoolResults (const Buf &hDstBuffer, const QueryPool &hPool, VkQueryResultFlags flags, CommandBuffer hCmdBuffer=CommandBuffer())
 
- Static Public Member Functions inherited from vpp::UniversalCommands
static void cmdExecuteCommands (const VkCommandBuffer *pBuffers, size_t size, CommandBuffer hCmdBuffer=CommandBuffer())
 
static void cmdExecuteCommands (const CommandBuffer *pBuffers, size_t size, CommandBuffer hCmdBuffer=CommandBuffer())
 
static void cmdExecuteCommands (const std::vector< CommandBuffer > &buffers, CommandBuffer hCmdBuffer=CommandBuffer())
 
static void cmdWaitEvents (const std::vector< Event > &events, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, const Barriers &barriers=Barriers(), CommandBuffer hCmdBuffer=CommandBuffer())
 
static void cmdPipelineBarrier (VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, const Barriers &barriers, CommandBuffer hCmdBuffer=CommandBuffer())
 
static void cmdImagePipelineBarrier (const Img &image, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkAccessFlags srcAccessMask, VkAccessFlags dstAccessMask, bool bByRegion, VkImageLayout oldLayout=VK_IMAGE_LAYOUT_GENERAL, VkImageLayout newLayout=VK_IMAGE_LAYOUT_GENERAL, int mipLevel=-1, int arrayLayer=-1, CommandBuffer hCmdBuffer=CommandBuffer())
 
static void cmdBufferPipelineBarrier (const Buf &hBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkAccessFlags srcAccessMask, VkAccessFlags dstAccessMask, CommandBuffer hCmdBuffer=CommandBuffer())
 
static void cmdSetViewport (const VkViewport &viewport, std::uint32_t index=0, CommandBuffer hCmdBuffer=CommandBuffer())
 
static void cmdSetViewport (const std::vector< VkViewport > &viewports, std::uint32_t first=0, CommandBuffer hCmdBuffer=CommandBuffer())
 
static void cmdSetLineWidth (float lineWidth, CommandBuffer hCmdBuffer=CommandBuffer())
 
static void cmdSetDepthBias (float constantFactor, float clamp, float slopeFactor, CommandBuffer hCmdBuffer=CommandBuffer())
 
static void cmdSetDepthBounds (float minDepthBounds, float maxDepthBounds, CommandBuffer hCmdBuffer=CommandBuffer())
 
static void cmdSetScissor (const VkRect2D &scissor, std::uint32_t index=0, CommandBuffer hCmdBuffer=CommandBuffer())
 
static void cmdSetScissor (const std::vector< VkRect2D > &scissors, std::uint32_t first=0, CommandBuffer hCmdBuffer=CommandBuffer())
 
static void cmdSetStencilCompareMask (VkStencilFaceFlags faceMask, std::uint32_t compareMask, CommandBuffer hCmdBuffer=CommandBuffer())
 
static void cmdSetStencilWriteMask (VkStencilFaceFlags faceMask, std::uint32_t writeMask, CommandBuffer hCmdBuffer=CommandBuffer())
 
static void cmdSetStencilReference (VkStencilFaceFlags faceMask, std::uint32_t reference, CommandBuffer hCmdBuffer=CommandBuffer())
 
static void cmdSetBlendConstants (const float blendConstants [4], CommandBuffer hCmdBuffer=CommandBuffer())
 
static void cmdBeginQuery (const QueryPool &hPool, std::uint32_t query, VkQueryControlFlags flags, CommandBuffer hCmdBuffer=CommandBuffer())
 
static void cmdEndQuery (const QueryPool &hPool, std::uint32_t query, CommandBuffer hCmdBuffer=CommandBuffer())
 
static void cmdWriteTimestamp (const QueryPool &hPool, std::uint32_t query, VkPipelineStageFlagBits pipelineStage, CommandBuffer hCmdBuffer=CommandBuffer())
 
static void cmdBindPipeline (const Pipeline &hPipeline, VkPipelineBindPoint pipelineBindPoint, CommandBuffer hCmdBuffer=CommandBuffer())
 
static void cmdBindDescriptorSets (const ShaderDataBlock &hDataBlock, CommandBuffer hCmdBuffer=CommandBuffer())
 
static void cmdBindIndexInput (const Buf &hBuffer, VkIndexType indexType, VkDeviceSize offset, CommandBuffer hCmdBuffer=CommandBuffer())
 
static void cmdBindVertexBuffers (const std::vector< Buf > &buffers, const std::vector< VkDeviceSize > &offsets, std::uint32_t first=0, CommandBuffer hCmdBuffer=CommandBuffer())
 
static void cmdBindVertexBuffers (const std::vector< Buf > &buffers, std::uint32_t first=0, CommandBuffer hCmdBuffer=CommandBuffer())
 
static void cmdPushConstants (const PipelineLayoutBase &hPipelineLayout, VkShaderStageFlags stageFlags, const void *pValues, std::uint32_t size, std::uint32_t offset=0, CommandBuffer hCmdBuffer=CommandBuffer())
 

Detailed Description

Base class for single computation routine.

Derive your own subclass from this class instead of a ComputePass, in order to obtain a callable object which can be placed within a ComputationEngine derived class, and used like a method.

Constructor & Destructor Documentation

◆ Computation()

vpp::Computation::Computation ( Computation predecessor)

Creates a computation with a dependency.

Execution of this computation will wait until the predecessor finishes.

Member Function Documentation

◆ operator()() [1/4]

void vpp::Computation::operator() ( const Fence sigFenceOnEnd = Fence())

Launches a computation on GPU.

It launches the computation asynchronously and will exit immediately, without waiting. You can optionally specify a fence object to signal when computation ends. A fence object can be waited for on the CPU side.

◆ operator()() [2/4]

bool vpp::Computation::operator() ( std::uint64_t  waitTimeout)

Launches a computation on GPU and waits for completion.

It launches the computation asynchronously, but will wait until it finishes.

Specify timeout in nanoseconds or vpp::NO_TIMEOUT constant for indefinite waiting.

Returns true if the operation finished successfully before the timeout has expired. Returns false otherwise (timeout has expired or error occurred).

◆ operator()() [3/4]

void vpp::Computation::operator() ( const Queue hQueue,
const Fence sigFenceOnEnd = Fence() 
)

Schedules a computation to specified queue on the GPU.

It launches the computation asynchronously and will exit immediately, without waiting. You can optionally specify a fence object to signal when computation ends. A fence object can be waited fro on the CPU side.

◆ operator()() [4/4]

void vpp::Computation::operator() ( const Queue hQueue,
const Semaphore waitSem,
const Semaphore sigSem = Semaphore() 
)

Schedules a synchronized computation to specified queue on the GPU.

It launches the computation synchronized by a semaphore. GPU will begin execution as soon as the semaphore is signaled. This is all done on the GPU, the CPU side will not wait and this method will exit immediately.

You can optionally specify a semaphore object to signal when computation ends.


The documentation for this class was generated from the following file: