Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
Loading...
Searching...
No Matches
surface.h
Go to the documentation of this file.
1
// Copyright 2013 The Flutter Authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style license that can be
3
// found in the LICENSE file.
4
5
#ifndef FLUTTER_SKWASM_SURFACE_H_
6
#define FLUTTER_SKWASM_SURFACE_H_
7
8
#include <cassert>
9
10
#include <GLES2/gl2.h>
11
#include <GLES2/gl2ext.h>
12
#include <emscripten.h>
13
#include <emscripten/html5_webgl.h>
14
#include <emscripten/threading.h>
15
#include <webgl/webgl1.h>
16
17
#include "
flutter/display_list/image/dl_image.h
"
18
#include "
flutter/skwasm/export.h
"
19
#include "
flutter/skwasm/render_context.h
"
20
#include "
flutter/skwasm/wrappers.h
"
21
#include "third_party/skia/include/core/SkData.h"
22
#include "third_party/skia/include/core/SkRefCnt.h"
23
24
namespace
flutter
{
25
class
DisplayList
;
26
}
27
28
namespace
Skwasm
{
29
30
class
TextureSourceWrapper
{
31
public
:
32
TextureSourceWrapper
(
unsigned
long
thread_id,
SkwasmObject
texture_source);
33
~TextureSourceWrapper
();
34
35
SkwasmObject
GetTextureSource
();
36
37
private
:
38
unsigned
long
raster_thread_id_;
39
};
40
41
class
Surface
{
42
public
:
43
using
CallbackHandler
= void(uint32_t,
void
*,
SkwasmObject
);
44
45
// Main thread only
46
Surface
();
47
48
unsigned
long
GetThreadId
() {
return
thread_; }
49
50
// Main thread only
51
void
Dispose
();
52
void
SetResourceCacheLimit
(
int
bytes);
53
uint32_t
RenderPictures
(
flutter::DisplayList
** pictures,
54
int
width
,
55
int
height
,
56
int
count);
57
uint32_t
RasterizeImage
(
flutter::DlImage
*
image
,
ImageByteFormat
format);
58
void
SetCallbackHandler
(
CallbackHandler
*
callback_handler
);
59
void
OnRenderComplete
(uint32_t callback_id,
SkwasmObject
image_bitmap);
60
void
OnRasterizeComplete
(uint32_t callback_id, SkData*
data
);
61
62
// Any thread
63
std::unique_ptr<TextureSourceWrapper>
CreateTextureSourceWrapper
(
64
SkwasmObject
texture_source);
65
66
// Worker thread
67
void
RenderPicturesOnWorker
(sk_sp<flutter::DisplayList>* pictures,
68
int
width
,
69
int
height
,
70
int
picture_count,
71
uint32_t callback_id,
72
double
raster_start);
73
void
RasterizeImageOnWorker
(
flutter::DlImage
*
image
,
74
ImageByteFormat
format,
75
uint32_t callback_id);
76
77
private
:
78
void
Init();
79
void
ResizeSurface(
int
width
,
int
height
);
80
void
RecreateSurface();
81
82
CallbackHandler
* callback_handler_ =
nullptr
;
83
uint32_t current_callback_id_ = 0;
84
85
int
canvas_width_ = 0;
86
int
canvas_height_ = 0;
87
88
EMSCRIPTEN_WEBGL_CONTEXT_HANDLE gl_context_ = 0;
89
std::unique_ptr<RenderContext> render_context_;
90
unsigned
long
thread_;
91
92
bool
is_initialized_ =
false
;
93
};
94
}
// namespace Skwasm
95
96
#endif
// FLUTTER_SKWASM_SURFACE_H_
Skwasm::Surface
Definition
surface.h:41
Skwasm::Surface::RenderPictures
uint32_t RenderPictures(flutter::DisplayList **pictures, int width, int height, int count)
Definition
surface.cc:45
Skwasm::Surface::GetThreadId
unsigned long GetThreadId()
Definition
surface.h:48
Skwasm::Surface::CreateTextureSourceWrapper
std::unique_ptr< TextureSourceWrapper > CreateTextureSourceWrapper(SkwasmObject texture_source)
Definition
surface.cc:76
Skwasm::Surface::Surface
Surface()
Definition
surface.cc:17
Skwasm::Surface::RenderPicturesOnWorker
void RenderPicturesOnWorker(sk_sp< flutter::DisplayList > *pictures, int width, int height, int picture_count, uint32_t callback_id, double raster_start)
Definition
surface.cc:137
Skwasm::Surface::RasterizeImageOnWorker
void RasterizeImageOnWorker(flutter::DlImage *image, ImageByteFormat format, uint32_t callback_id)
Definition
surface.cc:166
Skwasm::Surface::CallbackHandler
void(uint32_t, void *, SkwasmObject) CallbackHandler
Definition
surface.h:43
Skwasm::Surface::RasterizeImage
uint32_t RasterizeImage(flutter::DlImage *image, ImageByteFormat format)
Definition
surface.cc:65
Skwasm::Surface::OnRenderComplete
void OnRenderComplete(uint32_t callback_id, SkwasmObject image_bitmap)
Definition
surface.cc:211
Skwasm::Surface::OnRasterizeComplete
void OnRasterizeComplete(uint32_t callback_id, SkData *data)
Definition
surface.cc:206
Skwasm::Surface::Dispose
void Dispose()
Definition
surface.cc:35
Skwasm::Surface::SetCallbackHandler
void SetCallbackHandler(CallbackHandler *callback_handler)
Definition
surface.cc:83
Skwasm::Surface::SetResourceCacheLimit
void SetResourceCacheLimit(int bytes)
Definition
surface.cc:40
Skwasm::TextureSourceWrapper
Definition
surface.h:30
Skwasm::TextureSourceWrapper::GetTextureSource
SkwasmObject GetTextureSource()
Definition
surface.cc:228
Skwasm::TextureSourceWrapper::~TextureSourceWrapper
~TextureSourceWrapper()
Definition
surface.cc:224
flutter::DisplayList
Definition
display_list.h:266
flutter::DlImage
Represents an image whose allocation is (usually) resident on device memory.
Definition
dl_image.h:32
dl_image.h
image
FlutterVulkanImage * image
Definition
embedder_test_backingstore_producer_vulkan.cc:19
callback_handler
CallbackHandler callback_handler
Definition
keyboard_key_handler_unittests.cc:169
Skwasm
Definition
helpers.h:14
Skwasm::SkwasmObject
__externref_t SkwasmObject
Definition
wrappers.h:18
Skwasm::ImageByteFormat
ImageByteFormat
Definition
helpers.h:75
flutter
Definition
asset_manager.cc:10
std::DisplayList
flutter::DisplayList DisplayList
Definition
display_list_testing.cc:47
render_context.h
height
int32_t height
Definition
serialization_callbacks.cc:1
width
int32_t width
Definition
serialization_callbacks.cc:0
export.h
data
std::shared_ptr< const fml::Mapping > data
Definition
texture_gles.cc:69
wrappers.h
skwasm
surface.h
Generated on Sun Dec 14 2025 04:48:31 for Flutter Engine Uber Docs by
1.9.8