#include <angle_surface_manager.h>
Definition at line 28 of file angle_surface_manager.h.
◆ ~AngleSurfaceManager()
flutter::AngleSurfaceManager::~AngleSurfaceManager |
( |
| ) |
|
|
virtual |
◆ AngleSurfaceManager()
flutter::AngleSurfaceManager::AngleSurfaceManager |
( |
bool |
enable_impeller | ) |
|
|
explicitprotected |
Definition at line 33 of file angle_surface_manager.cc.
34 : egl_config_(
nullptr),
35 egl_display_(EGL_NO_DISPLAY),
36 egl_context_(EGL_NO_CONTEXT) {
37 initialize_succeeded_ = Initialize(enable_impeller);
Referenced by Create().
◆ ClearContext()
bool flutter::AngleSurfaceManager::ClearContext |
( |
| ) |
|
◆ ClearCurrent()
bool flutter::AngleSurfaceManager::ClearCurrent |
( |
| ) |
|
Definition at line 317 of file angle_surface_manager.cc.
318 return (eglMakeCurrent(egl_display_, EGL_NO_SURFACE, EGL_NO_SURFACE,
319 EGL_NO_CONTEXT) == EGL_TRUE);
◆ Create()
std::unique_ptr< AngleSurfaceManager > flutter::AngleSurfaceManager::Create |
( |
bool |
enable_impeller | ) |
|
|
static |
◆ CreateSurface()
bool flutter::AngleSurfaceManager::CreateSurface |
( |
WindowsRenderTarget * |
render_target, |
|
|
EGLint |
width, |
|
|
EGLint |
height, |
|
|
bool |
enable_vsync |
|
) |
| |
|
virtual |
Definition at line 232 of file angle_surface_manager.cc.
236 if (!render_target || !initialize_succeeded_) {
240 EGLSurface surface = EGL_NO_SURFACE;
242 const EGLint surfaceAttributes[] = {
243 EGL_FIXED_SIZE_ANGLE, EGL_TRUE, EGL_WIDTH, width,
244 EGL_HEIGHT, height, EGL_NONE};
246 surface = eglCreateWindowSurface(
247 egl_display_, egl_config_,
248 static_cast<EGLNativeWindowType
>(std::get<HWND>(*render_target)),
250 if (surface == EGL_NO_SURFACE) {
255 surface_width_ = width;
256 surface_height_ = height;
257 render_surface_ = surface;
260 LogEglError(
"Unable to make surface current to update the swap interval");
References LogEglError(), MakeCurrent(), and SetVSyncEnabled().
Referenced by ResizeSurface().
◆ CreateSurfaceFromHandle()
EGLSurface flutter::AngleSurfaceManager::CreateSurfaceFromHandle |
( |
EGLenum |
handle_type, |
|
|
EGLClientBuffer |
handle, |
|
|
const EGLint * |
attributes |
|
) |
| const |
Definition at line 336 of file angle_surface_manager.cc.
340 return eglCreatePbufferFromClientBuffer(egl_display_, handle_type, handle,
341 egl_config_, attributes);
◆ DestroySurface()
void flutter::AngleSurfaceManager::DestroySurface |
( |
| ) |
|
|
virtual |
Definition at line 301 of file angle_surface_manager.cc.
302 if (egl_display_ != EGL_NO_DISPLAY && render_surface_ != EGL_NO_SURFACE) {
303 eglDestroySurface(egl_display_, render_surface_);
305 render_surface_ = EGL_NO_SURFACE;
Referenced by ResizeSurface().
◆ egl_display()
EGLDisplay flutter::AngleSurfaceManager::egl_display |
( |
| ) |
const |
|
inline |
◆ GetDevice()
bool flutter::AngleSurfaceManager::GetDevice |
( |
ID3D11Device ** |
device | ) |
|
Definition at line 356 of file angle_surface_manager.cc.
357 if (!resolved_device_) {
358 PFNEGLQUERYDISPLAYATTRIBEXTPROC egl_query_display_attrib_EXT =
359 reinterpret_cast<PFNEGLQUERYDISPLAYATTRIBEXTPROC
>(
360 eglGetProcAddress(
"eglQueryDisplayAttribEXT"));
362 PFNEGLQUERYDEVICEATTRIBEXTPROC egl_query_device_attrib_EXT =
363 reinterpret_cast<PFNEGLQUERYDEVICEATTRIBEXTPROC
>(
364 eglGetProcAddress(
"eglQueryDeviceAttribEXT"));
366 if (!egl_query_display_attrib_EXT || !egl_query_device_attrib_EXT) {
370 EGLAttrib egl_device = 0;
371 EGLAttrib angle_device = 0;
372 if (egl_query_display_attrib_EXT(egl_display_, EGL_DEVICE_EXT,
373 &egl_device) == EGL_TRUE) {
374 if (egl_query_device_attrib_EXT(
375 reinterpret_cast<EGLDeviceEXT
>(egl_device),
376 EGL_D3D11_DEVICE_ANGLE, &angle_device) == EGL_TRUE) {
377 resolved_device_ =
reinterpret_cast<ID3D11Device*
>(angle_device);
382 resolved_device_.CopyTo(device);
383 return (resolved_device_ !=
nullptr);
◆ GetSurfaceDimensions()
void flutter::AngleSurfaceManager::GetSurfaceDimensions |
( |
EGLint * |
width, |
|
|
EGLint * |
height |
|
) |
| |
Definition at line 287 of file angle_surface_manager.cc.
288 if (render_surface_ == EGL_NO_SURFACE || !initialize_succeeded_) {
297 *width = surface_width_;
298 *height = surface_height_;
Referenced by ResizeSurface().
◆ HasContextCurrent()
bool flutter::AngleSurfaceManager::HasContextCurrent |
( |
| ) |
|
◆ MakeCurrent()
bool flutter::AngleSurfaceManager::MakeCurrent |
( |
| ) |
|
◆ MakeResourceCurrent()
bool flutter::AngleSurfaceManager::MakeResourceCurrent |
( |
| ) |
|
Definition at line 327 of file angle_surface_manager.cc.
328 return (eglMakeCurrent(egl_display_, EGL_NO_SURFACE, EGL_NO_SURFACE,
329 egl_resource_context_) == EGL_TRUE);
◆ ResizeSurface()
void flutter::AngleSurfaceManager::ResizeSurface |
( |
WindowsRenderTarget * |
render_target, |
|
|
EGLint |
width, |
|
|
EGLint |
height, |
|
|
bool |
enable_vsync |
|
) |
| |
|
virtual |
◆ SetVSyncEnabled()
void flutter::AngleSurfaceManager::SetVSyncEnabled |
( |
bool |
enabled | ) |
|
|
virtual |
◆ SwapBuffers()
EGLBoolean flutter::AngleSurfaceManager::SwapBuffers |
( |
| ) |
|
The documentation for this class was generated from the following files: