Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
render_pipeline.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
5#include "flutter/lib/gpu/render_pipeline.h"
6
7#include "flutter/lib/gpu/shader.h"
9
10namespace flutter {
11namespace gpu {
12
14
18 : vertex_shader_(std::move(vertex_shader)),
19 fragment_shader_(std::move(fragment_shader)) {}
20
24 desc.SetVertexDescriptor(vertex_shader_->GetVertexDescriptor());
25
26 desc.AddStageEntrypoint(vertex_shader_->GetFunctionFromLibrary(library));
27 desc.AddStageEntrypoint(fragment_shader_->GetFunctionFromLibrary(library));
28}
29
31
32} // namespace gpu
33} // namespace flutter
34
35//----------------------------------------------------------------------------
36/// Exports
37///
38
40 Dart_Handle wrapper,
41 flutter::gpu::Context* gpu_context,
42 flutter::gpu::Shader* vertex_shader,
43 flutter::gpu::Shader* fragment_shader) {
44 // Lazily register the shaders synchronously if they haven't been already.
45 vertex_shader->RegisterSync(*gpu_context);
46 fragment_shader->RegisterSync(*gpu_context);
47
48 auto res = fml::MakeRefCounted<flutter::gpu::RenderPipeline>(
49 fml::RefPtr<flutter::gpu::Shader>(vertex_shader), //
50 fml::RefPtr<flutter::gpu::Shader>(fragment_shader));
51 res->AssociateWithDartWrapper(wrapper);
52
53 return Dart_Null();
54}
RenderPipeline(fml::RefPtr< flutter::gpu::Shader > vertex_shader, fml::RefPtr< flutter::gpu::Shader > fragment_shader)
void BindToPipelineDescriptor(impeller::ShaderLibrary &library, impeller::PipelineDescriptor &desc)
An immutable collection of shaders loaded from a shader bundle asset.
Definition shader.h:23
bool RegisterSync(Context &context)
Definition shader.cc:66
std::shared_ptr< impeller::VertexDescriptor > GetVertexDescriptor() const
Definition shader.cc:86
std::shared_ptr< const impeller::ShaderFunction > GetFunctionFromLibrary(impeller::ShaderLibrary &library)
Definition shader.cc:56
struct _Dart_Handle * Dart_Handle
Definition dart_api.h:258
DART_EXPORT Dart_Handle Dart_Null(void)
#define IMPLEMENT_WRAPPERTYPEINFO(LibraryName, ClassName)
Definition ref_ptr.h:256
Dart_Handle InternalFlutterGpu_RenderPipeline_Initialize(Dart_Handle wrapper, flutter::gpu::Context *gpu_context, flutter::gpu::Shader *vertex_shader, flutter::gpu::Shader *fragment_shader)