Blender V4.3
blender::gpu::VKResourceTracker< Resource > Class Template Referenceabstract

#include <vk_resource_tracker.hh>

Inherits blender::NonCopyable.

Protected Member Functions

 VKResourceTracker ()=default
 
 VKResourceTracker (VKResourceTracker< Resource > &&other)
 
VKResourceTracker< Resource > & operator= (VKResourceTracker< Resource > &&other)
 
virtual ~VKResourceTracker ()
 
std::unique_ptr< Resource > & tracked_resource_for (VKContext &context, const bool is_dirty)
 
virtual std::unique_ptr< Resource > create_resource (VKContext &context)=0
 
bool has_active_resource ()
 
std::unique_ptr< Resource > & active_resource ()
 

Detailed Description

template<typename Resource>
class blender::gpu::VKResourceTracker< Resource >

VKResourceTracker will keep track of resources.

Definition at line 114 of file vk_resource_tracker.hh.

Constructor & Destructor Documentation

◆ VKResourceTracker() [1/2]

template<typename Resource >
blender::gpu::VKResourceTracker< Resource >::VKResourceTracker ( )
protecteddefault

◆ VKResourceTracker() [2/2]

template<typename Resource >
blender::gpu::VKResourceTracker< Resource >::VKResourceTracker ( VKResourceTracker< Resource > && other)
inlineprotected

Definition at line 116 of file vk_resource_tracker.hh.

◆ ~VKResourceTracker()

template<typename Resource >
virtual blender::gpu::VKResourceTracker< Resource >::~VKResourceTracker ( )
inlineprotectedvirtual

Definition at line 133 of file vk_resource_tracker.hh.

Member Function Documentation

◆ active_resource()

template<typename Resource >
std::unique_ptr< Resource > & blender::gpu::VKResourceTracker< Resource >::active_resource ( )
inlineprotected

◆ create_resource()

template<typename Resource >
virtual std::unique_ptr< Resource > blender::gpu::VKResourceTracker< Resource >::create_resource ( VKContext & context)
protectedpure virtual

Callback to create a new resource. Can be called by the tracked_resource_for method.

Implemented in blender::gpu::VKDrawList, and blender::gpu::VKPushConstants.

Referenced by blender::gpu::VKResourceTracker< Resource >::tracked_resource_for().

◆ has_active_resource()

template<typename Resource >
bool blender::gpu::VKResourceTracker< Resource >::has_active_resource ( )
inlineprotected

Does this instance have an active resource.

Definition at line 174 of file vk_resource_tracker.hh.

References blender::Vector< T, InlineBufferCapacity, Allocator >::is_empty().

◆ operator=()

template<typename Resource >
VKResourceTracker< Resource > & blender::gpu::VKResourceTracker< Resource >::operator= ( VKResourceTracker< Resource > && other)
inlineprotected

Definition at line 126 of file vk_resource_tracker.hh.

◆ tracked_resource_for()

template<typename Resource >
std::unique_ptr< Resource > & blender::gpu::VKResourceTracker< Resource >::tracked_resource_for ( VKContext & context,
const bool is_dirty )
inlineprotected

Get a resource what can be used by the resource tracker.

When a different submission was detected all previous resources will be freed and a new resource will be returned.

When still in the same submission and we need to update the resource (is_dirty=true) then a new resource will be returned. Otherwise the previous used resource will be used.

When no resources exists, a new resource will be created.

The resource given back is owned by this resource tracker. And the resource should not be stored outside this class as it might be destroyed when the next submission is detected.

Definition at line 154 of file vk_resource_tracker.hh.

References blender::gpu::VKResourceTracker< Resource >::active_resource(), blender::Vector< T, InlineBufferCapacity, Allocator >::append(), blender::gpu::VKResourceTracker< Resource >::create_resource(), blender::gpu::VKSubmissionTracker::is_changed(), and blender::Vector< T, InlineBufferCapacity, Allocator >::is_empty().


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