Flutter Engine
 
Loading...
Searching...
No Matches
tracked_objects_vk.h
Go to the documentation of this file.
1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_TRACKED_OBJECTS_VK_H_
6#define FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_TRACKED_OBJECTS_VK_H_
7
8#include <memory>
9
14
15namespace impeller {
16
17/// @brief A per-frame object used to track resource lifetimes and allocate
18/// command buffers and descriptor sets.
20 public:
21 explicit TrackedObjectsVK(const std::weak_ptr<const ContextVK>& context,
22 const std::shared_ptr<CommandPoolVK>& pool,
23 std::shared_ptr<DescriptorPoolVK> descriptor_pool,
24 std::unique_ptr<GPUProbe> probe);
25
27
28 bool IsValid() const;
29
30 void Track(const std::shared_ptr<SharedObjectVK>& object);
31
32 void Track(const std::shared_ptr<const DeviceBuffer>& buffer);
33
34 void Track(const std::shared_ptr<const TextureSourceVK>& texture);
35
36 vk::CommandBuffer GetCommandBuffer() const;
37
39
40 GPUProbe& GetGPUProbe() const;
41
42 private:
43 std::shared_ptr<DescriptorPoolVK> desc_pool_;
44 // `shared_ptr` since command buffers have a link to the command pool.
45 std::shared_ptr<CommandPoolVK> pool_;
46 vk::UniqueCommandBuffer buffer_;
47 std::vector<std::shared_ptr<SharedObjectVK>> tracked_objects_;
48 std::vector<std::shared_ptr<const DeviceBuffer>> tracked_buffers_;
49 std::vector<std::shared_ptr<const TextureSourceVK>> tracked_textures_;
50 std::unique_ptr<GPUProbe> probe_;
51 bool is_valid_ = false;
52
53 TrackedObjectsVK(const TrackedObjectsVK&) = delete;
54
55 TrackedObjectsVK& operator=(const TrackedObjectsVK&) = delete;
56};
57
58} // namespace impeller
59
60#endif // FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_TRACKED_OBJECTS_VK_H_
A per-frame descriptor pool. Descriptors from this pool don't need to be freed individually....
A per-frame object used to track resource lifetimes and allocate command buffers and descriptor sets.
void Track(const std::shared_ptr< SharedObjectVK > &object)
DescriptorPoolVK & GetDescriptorPool()
vk::CommandBuffer GetCommandBuffer() const
FlTexture * texture