 |
Flutter Windows Embedder
|
|
Go to the documentation of this file.
9 #include "flutter/fml/logging.h"
10 #include "flutter/shell/platform/embedder/embedder_struct_macros.h"
16 static constexpr int64_t kInvalidTexture = -1;
24 : engine_(engine), gl_procs_(gl_procs) {}
28 if (!gl_procs_.
valid) {
29 return kInvalidTexture;
34 FML_LOG(ERROR) <<
"Invalid pixel buffer texture callback.";
35 return kInvalidTexture;
38 return EmplaceTexture(std::make_unique<flutter::ExternalTexturePixelBuffer>(
44 auto surface_type = SAFE_ACCESS(gpu_surface_config,
type,
50 FML_LOG(ERROR) <<
"Invalid GPU surface descriptor callback.";
51 return kInvalidTexture;
55 return EmplaceTexture(std::make_unique<flutter::ExternalTextureD3d>(
61 FML_LOG(ERROR) <<
"Attempted to register texture of unsupport type.";
62 return kInvalidTexture;
65 int64_t FlutterWindowsTextureRegistrar::EmplaceTexture(
66 std::unique_ptr<ExternalTexture> texture) {
69 std::lock_guard<std::mutex> lock(map_mutex_);
88 std::lock_guard<std::mutex> lock(map_mutex_);
90 if (it != textures_.end()) {
107 engine->MarkExternalTextureFrameAvailable(
texture_id);
116 FlutterOpenGLTexture* opengl_texture) {
119 std::lock_guard<std::mutex> lock(map_mutex_);
121 if (it == textures_.end()) {
124 texture = it->second.get();
133 eglGetProcAddress(
"glDeleteTextures"));
137 eglGetProcAddress(
"glTexParameteri"));
glTexParameteriProc glTexParameteri
void RunNowOrPostTask(TaskClosure task)
@ kFlutterDesktopGpuSurfaceTexture
TaskRunner * task_runner()
bool MarkTextureFrameAvailable(int64_t texture_id)
void(* glDeleteTexturesProc)(GLsizei n, const GLuint *textures)
bool PopulateTexture(int64_t texture_id, size_t width, size_t height, FlutterOpenGLTexture *texture)
void(* glTexImage2DProc)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *data)
@ kFlutterDesktopGpuSurfaceTypeNone
enum flutter::testing::@66::KeyboardChange::Type type
glTexImage2DProc glTexImage2D
FlutterDesktopPixelBufferTextureCallback callback
virtual bool PopulateTexture(size_t width, size_t height, FlutterOpenGLTexture *opengl_texture)=0
void(* glGenTexturesProc)(GLsizei n, GLuint *textures)
FlutterDesktopTextureType type
void(* glTexParameteriProc)(GLenum target, GLenum pname, GLint param)
FlutterDesktopPixelBufferTextureConfig pixel_buffer_config
glBindTextureProc glBindTexture
@ kFlutterDesktopGpuSurfaceTypeD3d11Texture2D
FlutterDesktopGpuSurfaceTextureConfig gpu_surface_config
@ kFlutterDesktopGpuSurfaceTypeDxgiSharedHandle
void(* glBindTextureProc)(GLenum target, GLuint texture)
AngleSurfaceManager * surface_manager()
glGenTexturesProc glGenTextures
virtual bool PostRasterThreadTask(fml::closure callback)
static void ResolveGlFunctions(GlProcs &gl_procs)
FlutterWindowsTextureRegistrar(FlutterWindowsEngine *engine, const GlProcs &gl_procs)
@ kFlutterDesktopPixelBufferTexture
void UnregisterTexture(int64_t texture_id, fml::closure callback=nullptr)
glDeleteTexturesProc glDeleteTextures
int64_t RegisterTexture(const FlutterDesktopTextureInfo *texture_info)
FlutterDesktopBinaryReply callback