5#ifndef FLUTTER_SHELL_PLATFORM_WINDOWS_EGL_MANAGER_H_
6#define FLUTTER_SHELL_PLATFORM_WINDOWS_EGL_MANAGER_H_
10#include <EGL/eglext.h>
11#include <EGL/eglplatform.h>
13#include <GLES2/gl2ext.h>
20#include <wrl/client.h>
68 EGLClientBuffer handle,
69 const EGLint* attributes)
const;
94 static int instance_count_;
97 static std::optional<LUID> GetGpuLuidByPreference(
98 DXGI_GPU_PREFERENCE preference);
104 bool InitializeConfig();
107 bool InitializeContexts();
110 bool InitializeDevice();
115 bool is_valid_ =
false;
118 EGLDisplay display_ = EGL_NO_DISPLAY;
121 EGLConfig config_ =
nullptr;
124 std::unique_ptr<Context> render_context_;
127 std::unique_ptr<Context> resource_context_;
130 Microsoft::WRL::ComPtr<ID3D11Device> resolved_device_ =
nullptr;
virtual Context * resource_context() const
EGLSurface CreateSurfaceFromHandle(EGLenum handle_type, EGLClientBuffer handle, const EGLint *attributes) const
static std::optional< LUID > GetLowPowerGpuLuid()
virtual Context * render_context() const
static std::optional< LUID > GetHighPerformanceGpuLuid()
static std::unique_ptr< Manager > Create(GpuPreference gpu_preference)
virtual std::unique_ptr< WindowSurface > CreateWindowSurface(HWND hwnd, size_t width, size_t height)
bool GetDevice(ID3D11Device **device)
EGLDisplay egl_display() const
@ HighPerformancePreference
#define FML_DISALLOW_COPY_AND_ASSIGN(TypeName)