Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
context_gles.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_RENDERER_BACKEND_GLES_CONTEXT_GLES_H_
6#define FLUTTER_IMPELLER_RENDERER_BACKEND_GLES_CONTEXT_GLES_H_
7
19
20namespace impeller {
21
22class ContextGLES final : public Context,
23 public BackendCast<ContextGLES, Context>,
24 public std::enable_shared_from_this<ContextGLES> {
25 public:
26 static std::shared_ptr<ContextGLES> Create(
27 std::unique_ptr<ProcTableGLES> gl,
28 const std::vector<std::shared_ptr<fml::Mapping>>& shader_libraries,
29 bool enable_gpu_tracing);
30
31 // |Context|
32 ~ContextGLES() override;
33
34 // |Context|
35 BackendType GetBackendType() const override;
36
37 const ReactorGLES::Ref& GetReactor() const;
38
39 std::optional<ReactorGLES::WorkerID> AddReactorWorker(
40 const std::shared_ptr<ReactorGLES::Worker>& worker);
41
43
44 std::shared_ptr<GPUTracerGLES> GetGPUTracer() const { return gpu_tracer_; }
45
46 private:
47 ReactorGLES::Ref reactor_;
48 std::shared_ptr<ShaderLibraryGLES> shader_library_;
49 std::shared_ptr<PipelineLibraryGLES> pipeline_library_;
50 std::shared_ptr<SamplerLibraryGLES> sampler_library_;
51 std::shared_ptr<AllocatorGLES> resource_allocator_;
52 std::shared_ptr<CommandQueue> command_queue_;
53 std::shared_ptr<GPUTracerGLES> gpu_tracer_;
54
55 // Note: This is stored separately from the ProcTableGLES CapabilitiesGLES
56 // in order to satisfy the Context::GetCapabilities signature which returns
57 // a reference.
58 std::shared_ptr<const Capabilities> device_capabilities_;
59 bool is_valid_ = false;
60
62 std::unique_ptr<ProcTableGLES> gl,
63 const std::vector<std::shared_ptr<fml::Mapping>>& shader_libraries,
64 bool enable_gpu_tracing);
65
66 // |Context|
67 std::string DescribeGpuModel() const override;
68
69 // |Context|
70 bool IsValid() const override;
71
72 // |Context|
73 std::shared_ptr<Allocator> GetResourceAllocator() const override;
74
75 // |Context|
76 std::shared_ptr<ShaderLibrary> GetShaderLibrary() const override;
77
78 // |Context|
79 std::shared_ptr<SamplerLibrary> GetSamplerLibrary() const override;
80
81 // |Context|
82 std::shared_ptr<PipelineLibrary> GetPipelineLibrary() const override;
83
84 // |Context|
85 std::shared_ptr<CommandBuffer> CreateCommandBuffer() const override;
86
87 // |Context|
88 const std::shared_ptr<const Capabilities>& GetCapabilities() const override;
89
90 // |Context|
91 std::shared_ptr<CommandQueue> GetCommandQueue() const override;
92
93 // |Context|
94 void Shutdown() override;
95
96 ContextGLES(const ContextGLES&) = delete;
97
98 ContextGLES& operator=(const ContextGLES&) = delete;
99};
100
101} // namespace impeller
102
103#endif // FLUTTER_IMPELLER_RENDERER_BACKEND_GLES_CONTEXT_GLES_H_
static sk_sp< Effect > Create()
std::string DescribeGpuModel() const override
const ReactorGLES::Ref & GetReactor() const
std::shared_ptr< CommandBuffer > CreateCommandBuffer() const override
Create a new command buffer. Command buffers can be used to encode graphics, blit,...
std::shared_ptr< Allocator > GetResourceAllocator() const override
Returns the allocator used to create textures and buffers on the device.
std::shared_ptr< GPUTracerGLES > GetGPUTracer() const
BackendType GetBackendType() const override
Get the graphics backend of an Impeller context.
std::shared_ptr< CommandQueue > GetCommandQueue() const override
Return the graphics queue for submitting command buffers.
bool RemoveReactorWorker(ReactorGLES::WorkerID id)
bool IsValid() const override
Determines if a context is valid. If the caller ever receives an invalid context, they must discard i...
void Shutdown() override
Force all pending asynchronous work to finish. This is achieved by deleting all owned concurrent mess...
std::shared_ptr< ShaderLibrary > GetShaderLibrary() const override
Returns the library of shaders used to specify the programmable stages of a pipeline.
std::shared_ptr< SamplerLibrary > GetSamplerLibrary() const override
Returns the library of combined image samplers used in shaders.
std::shared_ptr< PipelineLibrary > GetPipelineLibrary() const override
Returns the library of pipelines used by render or compute commands.
std::optional< ReactorGLES::WorkerID > AddReactorWorker(const std::shared_ptr< ReactorGLES::Worker > &worker)
const std::shared_ptr< const Capabilities > & GetCapabilities() const override
Get the capabilities of Impeller context. All optionally supported feature of the platform,...
To do anything rendering related with Impeller, you need a context.
Definition context.h:46
std::shared_ptr< ReactorGLES > Ref