LiteFX 0.4.1.2025
Computer Graphics Engine
Loading...
Searching...
No Matches
LiteFX::Rendering::Barrier< TBuffer, TImage > Class Template Referenceabstract

A barrier used for GPU resource synchronization. More...

#include <rendering.hpp>

Inherits LiteFX::Rendering::IBarrier.

Public Types

using buffer_type = TBuffer
 
using image_type = TImage
 

Public Member Functions

constexpr ~Barrier () noexcept override=default
 
virtual constexpr void transition (const buffer_type &buffer, ResourceAccess accessBefore, ResourceAccess accessAfter)=0
 
virtual constexpr void transition (const buffer_type &buffer, UInt32 element, ResourceAccess accessBefore, ResourceAccess accessAfter)=0
 
virtual constexpr void transition (const image_type &image, ResourceAccess accessBefore, ResourceAccess accessAfter, ImageLayout layout)=0
 
virtual constexpr void transition (const image_type &image, ResourceAccess accessBefore, ResourceAccess accessAfter, ImageLayout fromLayout, ImageLayout toLayout)=0
 
virtual constexpr void transition (const image_type &image, UInt32 level, UInt32 levels, UInt32 layer, UInt32 layers, UInt32 plane, ResourceAccess accessBefore, ResourceAccess accessAfter, ImageLayout layout)=0
 
virtual constexpr void transition (const image_type &image, UInt32 level, UInt32 levels, UInt32 layer, UInt32 layers, UInt32 plane, ResourceAccess accessBefore, ResourceAccess accessAfter, ImageLayout fromLayout, ImageLayout toLayout)=0
 
constexpr void transition (const IBuffer &buffer, ResourceAccess accessBefore, ResourceAccess accessAfter)
 Inserts a buffer barrier that blocks access to buffer of types contained in accessAfter for subsequent commands until previous commands have finished accesses contained in accessBefore .
 
constexpr void transition (const IBuffer &buffer, UInt32 element, ResourceAccess accessBefore, ResourceAccess accessAfter)
 Inserts a buffer barrier that blocks access to a buffer s element of types contained in accessAfter for subsequent commands until previous commands have finished accesses contained in accessBefore .
 
constexpr void transition (const IImage &image, ResourceAccess accessBefore, ResourceAccess accessAfter, ImageLayout layout)
 Inserts an image barrier that blocks access to all sub-resources of image of the types contained in accessAfter for subsequent commands until previous commands have finished accesses contained in accessBefore and transitions all sub-resources into layout .
 
constexpr void transition (const IImage &image, UInt32 level, UInt32 levels, UInt32 layer, UInt32 layers, UInt32 plane, ResourceAccess accessBefore, ResourceAccess accessAfter, ImageLayout layout)
 Inserts an image barrier that blocks access to a sub-resource range of image of the types contained in accessAfter for subsequent commands until previous commands have finished accesses contained in accessBefore and transitions the sub-resource into layout .
 
constexpr void transition (const IImage &image, ResourceAccess accessBefore, ResourceAccess accessAfter, ImageLayout fromLayout, ImageLayout toLayout)
 Inserts an image barrier that blocks access to all sub-resources of image of the types contained in accessAfter for subsequent commands until previous commands have finished accesses contained in accessBefore and transitions all sub-resources into layout .
 
constexpr void transition (const IImage &image, UInt32 level, UInt32 levels, UInt32 layer, UInt32 layers, UInt32 plane, ResourceAccess accessBefore, ResourceAccess accessAfter, ImageLayout fromLayout, ImageLayout toLayout)
 Inserts an image barrier that blocks access to a sub-resource range of image of the types contained in accessAfter for subsequent commands until previous commands have finished accesses contained in accessBefore and transitions the sub-resource into layout .
 
- Public Member Functions inherited from LiteFX::Rendering::IBarrier
virtual ~IBarrier () noexcept=default
 
virtual constexpr PipelineStage syncBefore () const noexcept=0
 Returns the stage that all previous commands need to reach before continuing execution.
 
virtual constexpr PipelineStage syncAfter () const noexcept=0
 Returns the stage all subsequent commands need to wait for before continuing execution.
 
virtual constexpr void wait (ResourceAccess accessBefore, ResourceAccess accessAfter)=0
 Inserts a global barrier that waits for previous commands to finish accesses described by accessBefore before subsequent commands can continue with accesses described by accessAfter .
 
constexpr void transition (const IBuffer &buffer, ResourceAccess accessBefore, ResourceAccess accessAfter)
 Inserts a buffer barrier that blocks access to buffer of types contained in accessAfter for subsequent commands until previous commands have finished accesses contained in accessBefore .
 
constexpr void transition (const IBuffer &buffer, UInt32 element, ResourceAccess accessBefore, ResourceAccess accessAfter)
 Inserts a buffer barrier that blocks access to a buffer s element of types contained in accessAfter for subsequent commands until previous commands have finished accesses contained in accessBefore .
 
constexpr void transition (const IImage &image, ResourceAccess accessBefore, ResourceAccess accessAfter, ImageLayout layout)
 Inserts an image barrier that blocks access to all sub-resources of image of the types contained in accessAfter for subsequent commands until previous commands have finished accesses contained in accessBefore and transitions all sub-resources into layout .
 
constexpr void transition (const IImage &image, UInt32 level, UInt32 levels, UInt32 layer, UInt32 layers, UInt32 plane, ResourceAccess accessBefore, ResourceAccess accessAfter, ImageLayout layout)
 Inserts an image barrier that blocks access to a sub-resource range of image of the types contained in accessAfter for subsequent commands until previous commands have finished accesses contained in accessBefore and transitions the sub-resource into layout .
 
constexpr void transition (const IImage &image, ResourceAccess accessBefore, ResourceAccess accessAfter, ImageLayout fromLayout, ImageLayout toLayout)
 Inserts an image barrier that blocks access to all sub-resources of image of the types contained in accessAfter for subsequent commands until previous commands have finished accesses contained in accessBefore and transitions all sub-resources into layout .
 
constexpr void transition (const IImage &image, UInt32 level, UInt32 levels, UInt32 layer, UInt32 layers, UInt32 plane, ResourceAccess accessBefore, ResourceAccess accessAfter, ImageLayout fromLayout, ImageLayout toLayout)
 Inserts an image barrier that blocks access to a sub-resource range of image of the types contained in accessAfter for subsequent commands until previous commands have finished accesses contained in accessBefore and transitions the sub-resource into layout .
 

Protected Member Functions

 Barrier () noexcept=default
 
 Barrier (const Barrier &)=default
 
 Barrier (Barrier &&) noexcept=default
 
Barrieroperator= (const Barrier &)=default
 
Barrieroperator= (Barrier &&) noexcept=default
 
- Protected Member Functions inherited from LiteFX::Rendering::IBarrier
 IBarrier () noexcept=default
 
 IBarrier (const IBarrier &)=default
 
 IBarrier (IBarrier &&) noexcept=default
 
IBarrieroperator= (const IBarrier &)=default
 
IBarrieroperator= (IBarrier &&) noexcept=default
 

Detailed Description

template<typename TBuffer, typename TImage>
requires std::derived_from<TBuffer, IBuffer> && std::derived_from<TImage, IImage>
class LiteFX::Rendering::Barrier< TBuffer, TImage >

A barrier used for GPU resource synchronization.

See also
IBarrier

Member Typedef Documentation

◆ buffer_type

template<typename TBuffer , typename TImage >
using LiteFX::Rendering::Barrier< TBuffer, TImage >::buffer_type = TBuffer

◆ image_type

template<typename TBuffer , typename TImage >
using LiteFX::Rendering::Barrier< TBuffer, TImage >::image_type = TImage

Constructor & Destructor Documentation

◆ Barrier() [1/3]

template<typename TBuffer , typename TImage >
LiteFX::Rendering::Barrier< TBuffer, TImage >::Barrier ( )
protecteddefaultnoexcept

◆ Barrier() [2/3]

template<typename TBuffer , typename TImage >
LiteFX::Rendering::Barrier< TBuffer, TImage >::Barrier ( const Barrier< TBuffer, TImage > & )
protecteddefault

◆ Barrier() [3/3]

template<typename TBuffer , typename TImage >
LiteFX::Rendering::Barrier< TBuffer, TImage >::Barrier ( Barrier< TBuffer, TImage > && )
protecteddefaultnoexcept

◆ ~Barrier()

template<typename TBuffer , typename TImage >
LiteFX::Rendering::Barrier< TBuffer, TImage >::~Barrier ( )
constexproverridedefaultnoexcept

Member Function Documentation

◆ operator=() [1/2]

template<typename TBuffer , typename TImage >
Barrier & LiteFX::Rendering::Barrier< TBuffer, TImage >::operator= ( Barrier< TBuffer, TImage > && )
protecteddefaultnoexcept

◆ operator=() [2/2]

template<typename TBuffer , typename TImage >
Barrier & LiteFX::Rendering::Barrier< TBuffer, TImage >::operator= ( const Barrier< TBuffer, TImage > & )
protecteddefault

◆ transition() [1/12]

template<typename TBuffer , typename TImage >
virtual constexpr void LiteFX::Rendering::Barrier< TBuffer, TImage >::transition ( const buffer_type & buffer,
ResourceAccess accessBefore,
ResourceAccess accessAfter )
constexprpure virtual

◆ transition() [2/12]

template<typename TBuffer , typename TImage >
virtual constexpr void LiteFX::Rendering::Barrier< TBuffer, TImage >::transition ( const buffer_type & buffer,
UInt32 element,
ResourceAccess accessBefore,
ResourceAccess accessAfter )
constexprpure virtual

◆ transition() [3/12]

template<typename TBuffer , typename TImage >
void LiteFX::Rendering::IBarrier::transition ( const IBuffer & buffer,
ResourceAccess accessBefore,
ResourceAccess accessAfter )
inlineconstexpr

Inserts a buffer barrier that blocks access to buffer of types contained in accessAfter for subsequent commands until previous commands have finished accesses contained in accessBefore .

Parameters
bufferThe buffer resource to transition.
accessBeforeThe access types previous commands have to finish.
accessAfterThe access types that subsequent commands continue with.

◆ transition() [4/12]

template<typename TBuffer , typename TImage >
void LiteFX::Rendering::IBarrier::transition ( const IBuffer & buffer,
UInt32 element,
ResourceAccess accessBefore,
ResourceAccess accessAfter )
inlineconstexpr

Inserts a buffer barrier that blocks access to a buffer s element of types contained in accessAfter for subsequent commands until previous commands have finished accesses contained in accessBefore .

Due to driver restrictions, this is overload is currently redundant, but might be available in the future. Currently, calling this method ignores the element parameter and transitions the whole buffer.

Parameters
bufferThe buffer resource to transition.
elementThe element of the resource to transition.
accessBeforeThe access types previous commands have to finish.
accessAfterThe access types that subsequent commands continue with.

◆ transition() [5/12]

template<typename TBuffer , typename TImage >
void LiteFX::Rendering::IBarrier::transition ( const IImage & image,
ResourceAccess accessBefore,
ResourceAccess accessAfter,
ImageLayout fromLayout,
ImageLayout toLayout )
inlineconstexpr

Inserts an image barrier that blocks access to all sub-resources of image of the types contained in accessAfter for subsequent commands until previous commands have finished accesses contained in accessBefore and transitions all sub-resources into layout .

This overload let's you explicitly specify the fromLayout . This is required, if you use any external transition mechanism that causes the engine to lose track of the image layout. If you are not running into issues with the other overloads, you probably do not want to call this method.

Parameters
imageThe image resource to transition.
accessBeforeThe access types previous commands have to finish.
accessAfterThe access types that subsequent commands continue with.
fromLayoutThe image layout to transition from.
toLayoutThe image layout to transition into.

◆ transition() [6/12]

template<typename TBuffer , typename TImage >
void LiteFX::Rendering::IBarrier::transition ( const IImage & image,
ResourceAccess accessBefore,
ResourceAccess accessAfter,
ImageLayout layout )
inlineconstexpr

Inserts an image barrier that blocks access to all sub-resources of image of the types contained in accessAfter for subsequent commands until previous commands have finished accesses contained in accessBefore and transitions all sub-resources into layout .

Parameters
imageThe image resource to transition.
accessBeforeThe access types previous commands have to finish.
accessAfterThe access types that subsequent commands continue with.
layoutThe image layout to transition into.

◆ transition() [7/12]

template<typename TBuffer , typename TImage >
void LiteFX::Rendering::IBarrier::transition ( const IImage & image,
UInt32 level,
UInt32 levels,
UInt32 layer,
UInt32 layers,
UInt32 plane,
ResourceAccess accessBefore,
ResourceAccess accessAfter,
ImageLayout fromLayout,
ImageLayout toLayout )
inlineconstexpr

Inserts an image barrier that blocks access to a sub-resource range of image of the types contained in accessAfter for subsequent commands until previous commands have finished accesses contained in accessBefore and transitions the sub-resource into layout .

This overload let's you explicitly specify the fromLayout . This is required, if you use any external transition mechanism that causes the engine to lose track of the image layout. If you are not running into issues with the other overloads, you probably do not want to call this method.

Parameters
imageThe image resource to transition.
levelThe base mip-map level of the sub-resource range.
levelsThe number of mip-map levels of the sub-resource range.
layerThe base array layer of the sub-resource range.
layersThe number of array layer of the sub-resource range.
planeThe plane of the sub-resource.
accessBeforeThe access types previous commands have to finish.
accessAfterThe access types that subsequent commands continue with.
fromLayoutThe image layout to transition from.
toLayoutThe image layout to transition into.

◆ transition() [8/12]

template<typename TBuffer , typename TImage >
void LiteFX::Rendering::IBarrier::transition ( const IImage & image,
UInt32 level,
UInt32 levels,
UInt32 layer,
UInt32 layers,
UInt32 plane,
ResourceAccess accessBefore,
ResourceAccess accessAfter,
ImageLayout layout )
inlineconstexpr

Inserts an image barrier that blocks access to a sub-resource range of image of the types contained in accessAfter for subsequent commands until previous commands have finished accesses contained in accessBefore and transitions the sub-resource into layout .

Parameters
imageThe image resource to transition.
levelThe base mip-map level of the sub-resource range.
levelsThe number of mip-map levels of the sub-resource range.
layerThe base array layer of the sub-resource range.
layersThe number of array layer of the sub-resource range.
planeThe plane of the sub-resource.
accessBeforeThe access types previous commands have to finish.
accessAfterThe access types that subsequent commands continue with.
layoutThe image layout to transition into.

◆ transition() [9/12]

template<typename TBuffer , typename TImage >
virtual constexpr void LiteFX::Rendering::Barrier< TBuffer, TImage >::transition ( const image_type & image,
ResourceAccess accessBefore,
ResourceAccess accessAfter,
ImageLayout fromLayout,
ImageLayout toLayout )
constexprpure virtual

◆ transition() [10/12]

template<typename TBuffer , typename TImage >
virtual constexpr void LiteFX::Rendering::Barrier< TBuffer, TImage >::transition ( const image_type & image,
ResourceAccess accessBefore,
ResourceAccess accessAfter,
ImageLayout layout )
constexprpure virtual

◆ transition() [11/12]

template<typename TBuffer , typename TImage >
virtual constexpr void LiteFX::Rendering::Barrier< TBuffer, TImage >::transition ( const image_type & image,
UInt32 level,
UInt32 levels,
UInt32 layer,
UInt32 layers,
UInt32 plane,
ResourceAccess accessBefore,
ResourceAccess accessAfter,
ImageLayout fromLayout,
ImageLayout toLayout )
constexprpure virtual

◆ transition() [12/12]

template<typename TBuffer , typename TImage >
virtual constexpr void LiteFX::Rendering::Barrier< TBuffer, TImage >::transition ( const image_type & image,
UInt32 level,
UInt32 levels,
UInt32 layer,
UInt32 layers,
UInt32 plane,
ResourceAccess accessBefore,
ResourceAccess accessAfter,
ImageLayout layout )
constexprpure virtual