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, 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,
impeller::Flags  impeller_flags = {} 
)

Definition at line 77 of file embedder_surface_gl_impeller.cc.

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

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: