Flutter Impeller
render_pass_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 #pragma once
6 
7 #include "flutter/fml/macros.h"
16 
17 namespace impeller {
18 
19 class CommandBufferVK;
20 
21 class RenderPassVK final : public RenderPass {
22  public:
23  // |RenderPass|
24  ~RenderPassVK() override;
25 
26  private:
27  friend class CommandBufferVK;
28 
29  std::weak_ptr<CommandBufferVK> command_buffer_;
30  std::string debug_label_;
31  bool is_valid_ = false;
32  mutable PassBindingsCache pass_bindings_cache_;
33 
34  RenderPassVK(const std::shared_ptr<const Context>& context,
35  const RenderTarget& target,
36  std::weak_ptr<CommandBufferVK> command_buffer);
37 
38  // |RenderPass|
39  bool IsValid() const override;
40 
41  // |RenderPass|
42  void OnSetLabel(std::string label) override;
43 
44  // |RenderPass|
45  bool OnEncodeCommands(const Context& context) const override;
46 
47  SharedHandleVK<vk::RenderPass> CreateVKRenderPass(
48  const ContextVK& context,
49  const std::shared_ptr<CommandBufferVK>& command_buffer) const;
50 
51  SharedHandleVK<vk::Framebuffer> CreateVKFramebuffer(
52  const ContextVK& context,
53  const vk::RenderPass& pass) const;
54 
55  FML_DISALLOW_COPY_AND_ASSIGN(RenderPassVK);
56 };
57 
58 } // namespace impeller
shared_object_vk.h
vk.h
command.h
render_pass.h
pass_bindings_cache.h
impeller::PassBindingsCache
Ensures that bindings on the pass are not redundantly set or updated. Avoids making the driver do add...
Definition: render_pass_mtl.mm:194
impeller::RenderTarget
Definition: render_target.h:48
impeller::CommandBufferVK
Definition: command_buffer_vk.h:18
texture_vk.h
impeller::ContextVK
Definition: context_vk.h:36
impeller::RenderPass
Render passes encode render commands directed as one specific render target into an underlying comman...
Definition: render_pass.h:27
impeller::Context
To do anything rendering related with Impeller, you need a context.
Definition: context.h:47
impeller::RenderPassVK
Definition: render_pass_vk.h:21
impeller::SharedHandleVK
std::shared_ptr< SharedObjectVKT< T > > SharedHandleVK
Definition: shared_object_vk.h:48
impeller::RenderPassVK::~RenderPassVK
~RenderPassVK() override
render_target.h
context_vk.h
impeller
Definition: aiks_context.cc:10