Flutter Impeller
impeller::TrackedObjectsVK Class Reference

A per-frame object used to track resource lifetimes and allocate command buffers and descriptor sets. More...

#include <tracked_objects_vk.h>

Public Member Functions

 TrackedObjectsVK (const std::weak_ptr< const ContextVK > &context, const std::shared_ptr< CommandPoolVK > &pool, std::unique_ptr< GPUProbe > probe)
 
 ~TrackedObjectsVK ()
 
bool IsValid () const
 
void Track (std::shared_ptr< SharedObjectVK > object)
 
void Track (std::shared_ptr< const DeviceBuffer > buffer)
 
bool IsTracking (const std::shared_ptr< const DeviceBuffer > &buffer) const
 
void Track (std::shared_ptr< const TextureSourceVK > texture)
 
bool IsTracking (const std::shared_ptr< const TextureSourceVK > &texture) const
 
vk::CommandBuffer GetCommandBuffer () const
 
DescriptorPoolVKGetDescriptorPool ()
 
GPUProbeGetGPUProbe () const
 

Detailed Description

A per-frame object used to track resource lifetimes and allocate command buffers and descriptor sets.

Definition at line 17 of file tracked_objects_vk.h.

Constructor & Destructor Documentation

◆ TrackedObjectsVK()

impeller::TrackedObjectsVK::TrackedObjectsVK ( const std::weak_ptr< const ContextVK > &  context,
const std::shared_ptr< CommandPoolVK > &  pool,
std::unique_ptr< GPUProbe probe 
)
explicit

Definition at line 11 of file tracked_objects_vk.cc.

15  : desc_pool_(context), probe_(std::move(probe)) {
16  if (!pool) {
17  return;
18  }
19  auto buffer = pool->CreateCommandBuffer();
20  if (!buffer) {
21  return;
22  }
23  pool_ = pool;
24  buffer_ = std::move(buffer);
25  is_valid_ = true;
26 }

◆ ~TrackedObjectsVK()

impeller::TrackedObjectsVK::~TrackedObjectsVK ( )

Definition at line 28 of file tracked_objects_vk.cc.

28  {
29  if (!buffer_) {
30  return;
31  }
32  pool_->CollectCommandBuffer(std::move(buffer_));
33 }

Member Function Documentation

◆ GetCommandBuffer()

vk::CommandBuffer impeller::TrackedObjectsVK::GetCommandBuffer ( ) const

Definition at line 76 of file tracked_objects_vk.cc.

76  {
77  return *buffer_;
78 }

◆ GetDescriptorPool()

DescriptorPoolVK & impeller::TrackedObjectsVK::GetDescriptorPool ( )

Definition at line 80 of file tracked_objects_vk.cc.

80  {
81  return desc_pool_;
82 }

◆ GetGPUProbe()

GPUProbe & impeller::TrackedObjectsVK::GetGPUProbe ( ) const

Definition at line 84 of file tracked_objects_vk.cc.

84  {
85  return *probe_.get();
86 }

◆ IsTracking() [1/2]

bool impeller::TrackedObjectsVK::IsTracking ( const std::shared_ptr< const DeviceBuffer > &  buffer) const

Definition at line 53 of file tracked_objects_vk.cc.

54  {
55  if (!buffer) {
56  return false;
57  }
58  return tracked_buffers_.find(buffer) != tracked_buffers_.end();
59 }

◆ IsTracking() [2/2]

bool impeller::TrackedObjectsVK::IsTracking ( const std::shared_ptr< const TextureSourceVK > &  texture) const

Definition at line 68 of file tracked_objects_vk.cc.

69  {
70  if (!texture) {
71  return false;
72  }
73  return tracked_textures_.find(texture) != tracked_textures_.end();
74 }

◆ IsValid()

bool impeller::TrackedObjectsVK::IsValid ( ) const

Definition at line 35 of file tracked_objects_vk.cc.

35  {
36  return is_valid_;
37 }

◆ Track() [1/3]

void impeller::TrackedObjectsVK::Track ( std::shared_ptr< const DeviceBuffer buffer)

Definition at line 46 of file tracked_objects_vk.cc.

46  {
47  if (!buffer) {
48  return;
49  }
50  tracked_buffers_.insert(std::move(buffer));
51 }

◆ Track() [2/3]

void impeller::TrackedObjectsVK::Track ( std::shared_ptr< const TextureSourceVK texture)

Definition at line 61 of file tracked_objects_vk.cc.

61  {
62  if (!texture) {
63  return;
64  }
65  tracked_textures_.insert(std::move(texture));
66 }

◆ Track() [3/3]

void impeller::TrackedObjectsVK::Track ( std::shared_ptr< SharedObjectVK object)

Definition at line 39 of file tracked_objects_vk.cc.

39  {
40  if (!object) {
41  return;
42  }
43  tracked_objects_.insert(std::move(object));
44 }

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