Flutter Impeller
render_pass.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
#pragma once
6
7
#include <string>
8
9
#include "
impeller/renderer/command.h
"
10
#include "
impeller/renderer/command_buffer.h
"
11
#include "
impeller/renderer/render_target.h
"
12
13
namespace
impeller
{
14
15
class
HostBuffer;
16
class
Allocator;
17
18
//------------------------------------------------------------------------------
19
/// @brief Render passes encode render commands directed as one specific
20
/// render target into an underlying command buffer.
21
///
22
/// Render passes can be obtained from the command buffer in which
23
/// the pass is meant to encode commands into.
24
///
25
/// @see `CommandBuffer`
26
///
27
class
RenderPass
{
28
public
:
29
virtual
~RenderPass
();
30
31
const
RenderTarget
&
GetRenderTarget
()
const
;
32
33
ISize
GetRenderTargetSize
()
const
;
34
35
virtual
bool
IsValid
()
const
= 0;
36
37
void
SetLabel
(std::string label);
38
39
HostBuffer
&
GetTransientsBuffer
();
40
41
//----------------------------------------------------------------------------
42
/// @brief Record a command for subsequent encoding to the underlying
43
/// command buffer. No work is encoded into the command buffer at
44
/// this time.
45
///
46
/// @param[in] command The command
47
///
48
/// @return If the command was valid for subsequent commitment.
49
///
50
bool
AddCommand
(
Command
&& command);
51
52
//----------------------------------------------------------------------------
53
/// @brief Encode the recorded commands to the underlying command buffer.
54
///
55
/// @return If the commands were encoded to the underlying command
56
/// buffer.
57
///
58
bool
EncodeCommands
()
const
;
59
60
//----------------------------------------------------------------------------
61
/// @brief Accessor for the current Commands.
62
///
63
/// @details Visible for testing.
64
///
65
const
std::vector<Command>&
GetCommands
()
const
{
return
commands_
; }
66
67
protected
:
68
const
std::weak_ptr<const Context>
context_
;
69
const
RenderTarget
render_target_
;
70
std::shared_ptr<HostBuffer>
transients_buffer_
;
71
std::vector<Command>
commands_
;
72
73
RenderPass
(std::weak_ptr<const Context> context,
const
RenderTarget
& target);
74
75
const
std::weak_ptr<const Context>&
GetContext
()
const
;
76
77
virtual
void
OnSetLabel
(std::string label) = 0;
78
79
virtual
bool
OnEncodeCommands
(
const
Context
& context)
const
= 0;
80
81
private
:
82
FML_DISALLOW_COPY_AND_ASSIGN(
RenderPass
);
83
};
84
85
}
// namespace impeller
impeller::Command
An object used to specify work to the GPU along with references to resources the GPU will used when d...
Definition:
command.h:99
impeller::RenderPass::GetRenderTarget
const RenderTarget & GetRenderTarget() const
Definition:
render_pass.cc:26
impeller::HostBuffer
Definition:
host_buffer.h:20
impeller::RenderPass::GetCommands
const std::vector< Command > & GetCommands() const
Accessor for the current Commands.
Definition:
render_pass.h:65
impeller::RenderPass::RenderPass
RenderPass(std::weak_ptr< const Context > context, const RenderTarget &target)
Definition:
render_pass.cc:9
impeller::RenderPass::EncodeCommands
bool EncodeCommands() const
Encode the recorded commands to the underlying command buffer.
Definition:
render_pass.cc:77
command.h
impeller::RenderPass::GetRenderTargetSize
ISize GetRenderTargetSize() const
Definition:
render_pass.cc:30
impeller::TSize< int64_t >
impeller::RenderPass::OnEncodeCommands
virtual bool OnEncodeCommands(const Context &context) const =0
impeller::RenderTarget
Definition:
render_target.h:48
impeller::RenderPass::render_target_
const RenderTarget render_target_
Definition:
render_pass.h:69
impeller::RenderPass::~RenderPass
virtual ~RenderPass()
Definition:
render_pass.cc:19
impeller::RenderPass::commands_
std::vector< Command > commands_
Definition:
render_pass.h:71
impeller::RenderPass
Render passes encode render commands directed as one specific render target into an underlying comman...
Definition:
render_pass.h:27
command_buffer.h
impeller::RenderPass::SetLabel
void SetLabel(std::string label)
Definition:
render_pass.cc:38
impeller::Context
To do anything rendering related with Impeller, you need a context.
Definition:
context.h:47
impeller::RenderPass::OnSetLabel
virtual void OnSetLabel(std::string label)=0
render_target.h
impeller::RenderPass::IsValid
virtual bool IsValid() const =0
impeller::RenderPass::GetContext
const std::weak_ptr< const Context > & GetContext() const
Definition:
render_pass.cc:86
impeller::RenderPass::AddCommand
bool AddCommand(Command &&command)
Record a command for subsequent encoding to the underlying command buffer. No work is encoded into th...
Definition:
render_pass.cc:46
impeller
Definition:
aiks_context.cc:10
impeller::RenderPass::context_
const std::weak_ptr< const Context > context_
Definition:
render_pass.h:68
impeller::RenderPass::GetTransientsBuffer
HostBuffer & GetTransientsBuffer()
Definition:
render_pass.cc:34
impeller::RenderPass::transients_buffer_
std::shared_ptr< HostBuffer > transients_buffer_
Definition:
render_pass.h:70
impeller
renderer
render_pass.h
Generated by
1.8.17