Flutter Engine
 
Loading...
Searching...
No Matches
runtime_effect_contents.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_ENTITY_CONTENTS_RUNTIME_EFFECT_CONTENTS_H_
6#define FLUTTER_IMPELLER_ENTITY_CONTENTS_RUNTIME_EFFECT_CONTENTS_H_
7
8#include <memory>
9#include <vector>
10
15
16namespace impeller {
17
19 public:
20 struct TextureInput {
22 std::shared_ptr<Texture> texture;
23 };
24
25 void SetRuntimeStage(std::shared_ptr<RuntimeStage> runtime_stage);
26
27 void SetUniformData(std::shared_ptr<std::vector<uint8_t>> uniform_data);
28
29 void SetTextureInputs(std::vector<TextureInput> texture_inputs);
30
31 // |Contents|
32 bool Render(const ContentContext& renderer,
33 const Entity& entity,
34 RenderPass& pass) const override;
35
36 /// Load the runtime effect and ensure a default PSO is initialized.
37 bool BootstrapShader(const ContentContext& renderer) const;
38
39 // Visible for testing
41 const std::shared_ptr<const std::vector<uint8_t>>& input_data,
42 HostBuffer& host_buffer,
43 const RuntimeUniformDescription& uniform,
44 size_t minimum_uniform_alignment);
45
46 private:
47 bool RegisterShader(const ContentContext& renderer) const;
48
49 // If async is true, this will always return nullptr as pipeline creation
50 // is not blocked on.
51 std::shared_ptr<Pipeline<PipelineDescriptor>> CreatePipeline(
52 const ContentContext& renderer,
54 bool async) const;
55
56 std::shared_ptr<RuntimeStage> runtime_stage_;
57 std::shared_ptr<std::vector<uint8_t>> uniform_data_;
58 std::vector<TextureInput> texture_inputs_;
59};
60
61} // namespace impeller
62
63#endif // FLUTTER_IMPELLER_ENTITY_CONTENTS_RUNTIME_EFFECT_CONTENTS_H_
Render passes encode render commands directed as one specific render target into an underlying comman...
Definition render_pass.h:30
bool Render(const ContentContext &renderer, const Entity &entity, RenderPass &pass) const override
bool BootstrapShader(const ContentContext &renderer) const
Load the runtime effect and ensure a default PSO is initialized.
void SetRuntimeStage(std::shared_ptr< RuntimeStage > runtime_stage)
void SetTextureInputs(std::vector< TextureInput > texture_inputs)
void SetUniformData(std::shared_ptr< std::vector< uint8_t > > uniform_data)
static BufferView EmplaceVulkanUniform(const std::shared_ptr< const std::vector< uint8_t > > &input_data, HostBuffer &host_buffer, const RuntimeUniformDescription &uniform, size_t minimum_uniform_alignment)