Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Classes | Public Member Functions | Private Member Functions | List of all members
flutter::EmbedderSurfaceGL Class Referencefinal

#include <embedder_surface_gl.h>

Inheritance diagram for flutter::EmbedderSurfaceGL:
flutter::EmbedderSurface flutter::GPUSurfaceGLDelegate

Classes

struct  GLDispatchTable
 

Public Member Functions

 EmbedderSurfaceGL (GLDispatchTable gl_dispatch_table, bool fbo_reset_after_present, std::shared_ptr< EmbedderExternalViewEmbedder > external_view_embedder)
 
 ~EmbedderSurfaceGL () override
 
- Public Member Functions inherited from flutter::EmbedderSurface
 EmbedderSurface ()
 
virtual ~EmbedderSurface ()
 
virtual std::shared_ptr< impeller::ContextCreateImpellerContext () const
 
- Public Member Functions inherited from flutter::GPUSurfaceGLDelegate
 ~GPUSurfaceGLDelegate ()
 
virtual void GLContextSetDamageRegion (const std::optional< SkIRect > &region)
 
virtual sk_sp< const GrGLInterfaceGetGLInterface () const
 
virtual bool AllowsDrawingWhenGpuDisabled () const
 

Private Member Functions

bool IsValid () const override
 
std::unique_ptr< SurfaceCreateGPUSurface () override
 
sk_sp< GrDirectContextCreateResourceContext () const override
 
std::unique_ptr< GLContextResultGLContextMakeCurrent () override
 
bool GLContextClearCurrent () override
 
bool GLContextPresent (const GLPresentInfo &present_info) override
 
GLFBOInfo GLContextFBO (GLFrameInfo frame_info) const override
 
bool GLContextFBOResetAfterPresent () const override
 
SkMatrix GLContextSurfaceTransformation () const override
 
GLProcResolver GetGLProcResolver () const override
 
SurfaceFrame::FramebufferInfo GLContextFramebufferInfo () const override
 

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 GrGLInterfaceGetDefaultPlatformGLInterface ()
 

Detailed Description

Definition at line 15 of file embedder_surface_gl.h.

Constructor & Destructor Documentation

◆ EmbedderSurfaceGL()

flutter::EmbedderSurfaceGL::EmbedderSurfaceGL ( GLDispatchTable  gl_dispatch_table,
bool  fbo_reset_after_present,
std::shared_ptr< EmbedderExternalViewEmbedder external_view_embedder 
)

Definition at line 13 of file embedder_surface_gl.cc.

17 : gl_dispatch_table_(std::move(gl_dispatch_table)),
18 fbo_reset_after_present_(fbo_reset_after_present),
19 external_view_embedder_(std::move(external_view_embedder)) {
20 // Make sure all required members of the dispatch table are checked.
21 if (!gl_dispatch_table_.gl_make_current_callback ||
22 !gl_dispatch_table_.gl_clear_current_callback ||
23 !gl_dispatch_table_.gl_present_callback ||
24 !gl_dispatch_table_.gl_fbo_callback ||
25 !gl_dispatch_table_.gl_populate_existing_damage) {
26 return;
27 }
28
29 valid_ = true;
30}
std::function< bool(GLPresentInfo)> gl_present_callback
std::function< bool(void)> gl_clear_current_callback
std::function< bool(void)> gl_make_current_callback
std::function< intptr_t(GLFrameInfo)> gl_fbo_callback
std::function< GLFBOInfo(intptr_t)> gl_populate_existing_damage

◆ ~EmbedderSurfaceGL()

flutter::EmbedderSurfaceGL::~EmbedderSurfaceGL ( )
overridedefault

Member Function Documentation

◆ CreateGPUSurface()

std::unique_ptr< Surface > flutter::EmbedderSurfaceGL::CreateGPUSurface ( )
overrideprivatevirtual

Implements flutter::EmbedderSurface.

Definition at line 97 of file embedder_surface_gl.cc.

97 {
98 const bool render_to_surface = !external_view_embedder_;
99 return std::make_unique<GPUSurfaceGLSkia>(
100 this, // GPU surface GL delegate
101 render_to_surface // render to surface
102 );
103}

◆ CreateResourceContext()

sk_sp< GrDirectContext > flutter::EmbedderSurfaceGL::CreateResourceContext ( ) const
overrideprivatevirtual

Reimplemented from flutter::EmbedderSurface.

Definition at line 106 of file embedder_surface_gl.cc.

106 {
107 auto callback = gl_dispatch_table_.gl_make_resource_current_callback;
108 if (callback && callback()) {
111 return context;
112 } else {
114 << "Internal error: Resource context available but could not create "
115 "a compatible Skia context.";
116 return nullptr;
117 }
118 }
119
120 // The callback was not available or failed.
122 << "Could not create a resource context for async texture uploads. "
123 "Expect degraded performance. Set a valid make_resource_current "
124 "callback on FlutterOpenGLRendererConfig.";
125 return nullptr;
126}
virtual sk_sp< const GrGLInterface > GetGLInterface() const
static sk_sp< GrDirectContext > CreateCompatibleResourceLoadingContext(GrBackendApi backend, const sk_sp< const GrGLInterface > &gl_interface)
FlKeyEvent uint64_t FlKeyResponderAsyncCallback callback
#define FML_LOG(severity)
Definition logging.h:82
std::function< bool(void)> gl_make_resource_current_callback
#define ERROR(message)

◆ GetGLProcResolver()

EmbedderSurfaceGL::GLProcResolver flutter::EmbedderSurfaceGL::GetGLProcResolver ( ) const
overrideprivatevirtual

Reimplemented from flutter::GPUSurfaceGLDelegate.

Definition at line 81 of file embedder_surface_gl.cc.

81 {
82 return gl_dispatch_table_.gl_proc_resolver;
83}
std::function< void *(const char *)> gl_proc_resolver

◆ GLContextClearCurrent()

bool flutter::EmbedderSurfaceGL::GLContextClearCurrent ( )
overrideprivatevirtual

Implements flutter::GPUSurfaceGLDelegate.

Definition at line 46 of file embedder_surface_gl.cc.

46 {
47 return gl_dispatch_table_.gl_clear_current_callback();
48}

◆ GLContextFBO()

GLFBOInfo flutter::EmbedderSurfaceGL::GLContextFBO ( GLFrameInfo  frame_info) const
overrideprivatevirtual

Implements flutter::GPUSurfaceGLDelegate.

Definition at line 57 of file embedder_surface_gl.cc.

57 {
58 // Get the FBO ID using the gl_fbo_callback and then get exiting damage by
59 // passing that ID to the gl_populate_existing_damage.
60 return gl_dispatch_table_.gl_populate_existing_damage(
61 gl_dispatch_table_.gl_fbo_callback(frame_info));
62}

◆ GLContextFBOResetAfterPresent()

bool flutter::EmbedderSurfaceGL::GLContextFBOResetAfterPresent ( ) const
overrideprivatevirtual

Reimplemented from flutter::GPUSurfaceGLDelegate.

Definition at line 65 of file embedder_surface_gl.cc.

65 {
66 return fbo_reset_after_present_;
67}

◆ GLContextFramebufferInfo()

SurfaceFrame::FramebufferInfo flutter::EmbedderSurfaceGL::GLContextFramebufferInfo ( ) const
overrideprivatevirtual

Reimplemented from flutter::GPUSurfaceGLDelegate.

Definition at line 86 of file embedder_surface_gl.cc.

87 {
88 // Enable partial repaint by default on the embedders.
89 auto info = SurfaceFrame::FramebufferInfo{};
90 info.supports_readback = true;
91 info.supports_partial_repaint =
92 gl_dispatch_table_.gl_populate_existing_damage != nullptr;
93 return info;
94}
static void info(const char *fmt,...) SK_PRINTF_LIKE(1
Definition DM.cpp:213

◆ GLContextMakeCurrent()

std::unique_ptr< GLContextResult > flutter::EmbedderSurfaceGL::GLContextMakeCurrent ( )
overrideprivatevirtual

Implements flutter::GPUSurfaceGLDelegate.

Definition at line 40 of file embedder_surface_gl.cc.

40 {
41 return std::make_unique<GLContextDefaultResult>(
42 gl_dispatch_table_.gl_make_current_callback());
43}

◆ GLContextPresent()

bool flutter::EmbedderSurfaceGL::GLContextPresent ( const GLPresentInfo present_info)
overrideprivatevirtual

Implements flutter::GPUSurfaceGLDelegate.

Definition at line 51 of file embedder_surface_gl.cc.

51 {
52 // Pass the present information to the embedder present callback.
53 return gl_dispatch_table_.gl_present_callback(present_info);
54}

◆ GLContextSurfaceTransformation()

SkMatrix flutter::EmbedderSurfaceGL::GLContextSurfaceTransformation ( ) const
overrideprivatevirtual

Reimplemented from flutter::GPUSurfaceGLDelegate.

Definition at line 70 of file embedder_surface_gl.cc.

70 {
71 auto callback = gl_dispatch_table_.gl_surface_transformation_callback;
72 if (!callback) {
74 matrix.setIdentity();
75 return matrix;
76 }
77 return callback();
78}
unsigned useCenter Optional< SkMatrix > matrix
Definition SkRecords.h:258
std::function< SkMatrix(void)> gl_surface_transformation_callback

◆ IsValid()

bool flutter::EmbedderSurfaceGL::IsValid ( ) const
overrideprivatevirtual

Implements flutter::EmbedderSurface.

Definition at line 35 of file embedder_surface_gl.cc.

35 {
36 return valid_;
37}

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