Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
flutter::EmbedderSurfaceGLImpeller Class Referencefinal

#include <embedder_surface_gl_impeller.h>

Inheritance diagram for flutter::EmbedderSurfaceGLImpeller:
flutter::EmbedderSurface flutter::GPUSurfaceGLDelegate

Public Member Functions

 EmbedderSurfaceGLImpeller (EmbedderSurfaceGLSkia::GLDispatchTable gl_dispatch_table, bool fbo_reset_after_present, std::shared_ptr< EmbedderExternalViewEmbedder > external_view_embedder, std::shared_ptr< fml::BasicTaskRunner > io_task_runner, impeller::Flags impeller_flags={})
 
 ~EmbedderSurfaceGLImpeller () override
 
- Public Member Functions inherited from flutter::EmbedderSurface
 EmbedderSurface ()
 
virtual ~EmbedderSurface ()
 
- Public Member Functions inherited from flutter::GPUSurfaceGLDelegate
 ~GPUSurfaceGLDelegate ()
 
virtual void GLContextSetDamageRegion (const std::optional< DlIRect > &region)
 
virtual sk_sp< const GrGLInterface > GetGLInterface () const
 
virtual bool AllowsDrawingWhenGpuDisabled () const
 

Additional Inherited Members

- Public Types inherited from flutter::GPUSurfaceGLDelegate
using GLProcResolver = std::function< void *(const char *)>
 
- Static Public Member Functions inherited from flutter::GPUSurfaceGLDelegate
static sk_sp< const GrGLInterface > GetDefaultPlatformGLInterface ()
 

Detailed Description

Definition at line 29 of file embedder_surface_gl_impeller.h.

Constructor & Destructor Documentation

◆ EmbedderSurfaceGLImpeller()

flutter::EmbedderSurfaceGLImpeller::EmbedderSurfaceGLImpeller ( EmbedderSurfaceGLSkia::GLDispatchTable  gl_dispatch_table,
bool  fbo_reset_after_present,
std::shared_ptr< EmbedderExternalViewEmbedder external_view_embedder,
std::shared_ptr< fml::BasicTaskRunner io_task_runner,
impeller::Flags  impeller_flags = {} 
)

Definition at line 77 of file embedder_surface_gl_impeller.cc.

83 : gl_dispatch_table_(std::move(gl_dispatch_table)),
84 fbo_reset_after_present_(fbo_reset_after_present),
85 external_view_embedder_(std::move(external_view_embedder)),
86 worker_(std::make_shared<ReactorWorker>()) {
87 // Make sure all required members of the dispatch table are checked.
88 if (!gl_dispatch_table_.gl_make_current_callback ||
89 !gl_dispatch_table_.gl_clear_current_callback ||
90 !gl_dispatch_table_.gl_present_callback ||
91 !gl_dispatch_table_.gl_fbo_callback ||
92 !gl_dispatch_table_.gl_populate_existing_damage ||
93 !gl_dispatch_table_.gl_proc_resolver) {
94 return;
95 }
96 // Certain GL backends need to made current before any GL
97 // state can be accessed.
98 gl_dispatch_table_.gl_make_current_callback();
99
100 auto gl = std::make_unique<impeller::ProcTableGLES>(
101 gl_dispatch_table_.gl_proc_resolver);
102 if (!gl->IsValid()) {
103 return;
104 }
105
106 const auto is_gles3 =
107 gl->GetDescription()->GetGlVersion().IsAtLeast(impeller::Version(3));
108 const auto shader_mappings = GetShaderMappings(is_gles3);
109
110 impeller_context_ = impeller::ContextGLES::Create(
111 impeller_flags, std::move(gl), shader_mappings,
112 /*enable_gpu_tracing=*/false, std::move(io_task_runner));
113
114 if (!impeller_context_) {
115 FML_LOG(ERROR) << "Could not create Impeller context.";
116 return;
117 }
118
119 auto worker_id = impeller_context_->AddReactorWorker(worker_);
120 if (!worker_id.has_value()) {
121 FML_LOG(ERROR) << "Could not add reactor worker.";
122 return;
123 }
124
125 gl_dispatch_table_.gl_clear_current_callback();
126 if (impeller_flags.use_sdfs) {
127 FML_LOG(IMPORTANT) << "Using the Impeller rendering backend (OpenGLESSDF).";
128 } else {
129 FML_LOG(IMPORTANT) << "Using the Impeller rendering backend (OpenGLES).";
130 }
131 valid_ = true;
132}
static std::shared_ptr< ContextGLES > Create(const Flags &flags, std::unique_ptr< ProcTableGLES > gl, const std::vector< std::shared_ptr< fml::Mapping > > &shader_libraries, bool enable_gpu_tracing, std::shared_ptr< fml::BasicTaskRunner > io_task_runner=nullptr)
#define FML_LOG(severity)
Definition logging.h:101
std::function< GLFBOInfo(intptr_t)> gl_populate_existing_damage
std::function< intptr_t(GLFrameInfo)> gl_fbo_callback
std::function< bool(GLPresentInfo)> gl_present_callback
std::function< void *(const char *)> gl_proc_resolver
bool use_sdfs
Use SDFs for rendering.
Definition flags.h:11

References impeller::ContextGLES::Create(), FML_LOG, flutter::EmbedderSurfaceGLSkia::GLDispatchTable::gl_clear_current_callback, flutter::EmbedderSurfaceGLSkia::GLDispatchTable::gl_fbo_callback, flutter::EmbedderSurfaceGLSkia::GLDispatchTable::gl_make_current_callback, flutter::EmbedderSurfaceGLSkia::GLDispatchTable::gl_populate_existing_damage, flutter::EmbedderSurfaceGLSkia::GLDispatchTable::gl_present_callback, flutter::EmbedderSurfaceGLSkia::GLDispatchTable::gl_proc_resolver, and impeller::Flags::use_sdfs.

◆ ~EmbedderSurfaceGLImpeller()

flutter::EmbedderSurfaceGLImpeller::~EmbedderSurfaceGLImpeller ( )
overridedefault

The documentation for this class was generated from the following files: