Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
blit_pass_vk.cc
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
6
7#include "flutter/fml/logging.h"
8#include "flutter/fml/trace_event.h"
10
11namespace impeller {
12
13BlitPassVK::BlitPassVK(std::weak_ptr<CommandBufferVK> command_buffer)
14 : command_buffer_(std::move(command_buffer)) {}
15
16BlitPassVK::~BlitPassVK() = default;
17
18void BlitPassVK::OnSetLabel(std::string label) {
19 if (label.empty()) {
20 return;
21 }
22 label_ = std::move(label);
23}
24
25// |BlitPass|
26bool BlitPassVK::IsValid() const {
27 return true;
28}
29
30// |BlitPass|
31bool BlitPassVK::EncodeCommands(
32 const std::shared_ptr<Allocator>& transients_allocator) const {
33 TRACE_EVENT0("impeller", "BlitPassVK::EncodeCommands");
34
35 if (!IsValid()) {
36 return false;
37 }
38
39 auto command_buffer = command_buffer_.lock();
40 if (!command_buffer) {
41 return false;
42 }
43 auto encoder = command_buffer->GetEncoder();
44 if (!encoder) {
45 return false;
46 }
47
48 for (auto& command : commands_) {
49 if (!command->Encode(*encoder)) {
50 return false;
51 }
52 }
53
54 return true;
55}
56
57// |BlitPass|
58bool BlitPassVK::OnCopyTextureToTextureCommand(
59 std::shared_ptr<Texture> source,
60 std::shared_ptr<Texture> destination,
61 IRect source_region,
62 IPoint destination_origin,
63 std::string label) {
64 auto command = std::make_unique<BlitCopyTextureToTextureCommandVK>();
65
66 command->source = std::move(source);
67 command->destination = std::move(destination);
68 command->source_region = source_region;
69 command->destination_origin = destination_origin;
70 command->label = std::move(label);
71
72 commands_.push_back(std::move(command));
73 return true;
74}
75
76// |BlitPass|
77bool BlitPassVK::OnCopyTextureToBufferCommand(
78 std::shared_ptr<Texture> source,
79 std::shared_ptr<DeviceBuffer> destination,
80 IRect source_region,
81 size_t destination_offset,
82 std::string label) {
83 auto command = std::make_unique<BlitCopyTextureToBufferCommandVK>();
84
85 command->source = std::move(source);
86 command->destination = std::move(destination);
87 command->source_region = source_region;
88 command->destination_offset = destination_offset;
89 command->label = std::move(label);
90
91 commands_.push_back(std::move(command));
92 return true;
93}
94
95// |BlitPass|
96bool BlitPassVK::OnCopyBufferToTextureCommand(
98 std::shared_ptr<Texture> destination,
99 IPoint destination_origin,
100 std::string label) {
101 auto command = std::make_unique<BlitCopyBufferToTextureCommandVK>();
102
103 command->source = std::move(source);
104 command->destination = std::move(destination);
105 command->destination_origin = destination_origin;
106 command->label = std::move(label);
107
108 commands_.push_back(std::move(command));
109 return true;
110}
111
112// |BlitPass|
113bool BlitPassVK::OnGenerateMipmapCommand(std::shared_ptr<Texture> texture,
114 std::string label) {
115 auto command = std::make_unique<BlitGenerateMipmapCommandVK>();
116
117 command->texture = std::move(texture);
118 command->label = std::move(label);
119
120 commands_.push_back(std::move(command));
121 return true;
122}
123
124} // namespace impeller
SkBitmap source
Definition examples.cpp:28
FlTexture * texture
Definition ref_ptr.h:256
#define TRACE_EVENT0(category_group, name)