Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
shaders.cc File Reference
#include <vector>
#include "flutter/display_list/effects/dl_color_source.h"
#include "flutter/display_list/effects/dl_runtime_effect_skia.h"
#include "flutter/display_list/image/dl_image.h"
#include "flutter/skwasm/export.h"
#include "flutter/skwasm/helpers.h"
#include "flutter/skwasm/live_objects.h"
#include "flutter/skwasm/wrappers.h"
#include "third_party/skia/include/effects/SkRuntimeEffect.h"

Go to the source code of this file.

Classes

struct  Skwasm::UniformData
 

Namespaces

namespace  Skwasm
 

Functions

sk_sp< flutter::DlRuntimeEffectSkwasm::CreateRuntimeEffect (SkString *string)
 
SKWASM_EXPORT Skwasm::sp_wrapper< flutter::DlColorSource > * shader_createLinearGradient (flutter::DlPoint *end_points, uint32_t *colors, flutter::DlScalar *stops, int count, flutter::DlTileMode tile_mode, flutter::DlScalar *matrix_33)
 
SKWASM_EXPORT Skwasm::sp_wrapper< flutter::DlColorSource > * shader_createRadialGradient (flutter::DlScalar center_x, flutter::DlScalar center_y, flutter::DlScalar radius, uint32_t *colors, flutter::DlScalar *stops, int count, flutter::DlTileMode tile_mode, flutter::DlScalar *matrix_33)
 
SKWASM_EXPORT Skwasm::sp_wrapper< flutter::DlColorSource > * shader_createConicalGradient (flutter::DlPoint *end_points, flutter::DlScalar start_radius, flutter::DlScalar end_radius, uint32_t *colors, flutter::DlScalar *stops, int count, flutter::DlTileMode tile_mode, flutter::DlScalar *matrix_33)
 
SKWASM_EXPORT Skwasm::sp_wrapper< flutter::DlColorSource > * shader_createSweepGradient (flutter::DlScalar center_x, flutter::DlScalar center_y, uint32_t *colors, flutter::DlScalar *stops, int count, flutter::DlTileMode tile_mode, flutter::DlScalar start_angle, flutter::DlScalar end_angle, flutter::DlScalar *matrix_33)
 
SKWASM_EXPORT void shader_dispose (Skwasm::sp_wrapper< flutter::DlColorSource > *shader)
 
SKWASM_EXPORT flutter::DlRuntimeEffectruntimeEffect_create (SkString *source)
 
SKWASM_EXPORT void runtimeEffect_dispose (flutter::DlRuntimeEffect *effect)
 
SKWASM_EXPORT size_t runtimeEffect_getUniformSize (flutter::DlRuntimeEffect *effect)
 
SKWASM_EXPORT Skwasm::sp_wrapper< flutter::DlColorSource > * shader_createRuntimeEffectShader (flutter::DlRuntimeEffect *runtime_effect, Skwasm::UniformData *uniforms, Skwasm::sp_wrapper< flutter::DlColorSource > **children, size_t child_count)
 
SKWASM_EXPORT Skwasm::sp_wrapper< flutter::DlColorSource > * shader_createFromImage (flutter::DlImage *image, flutter::DlTileMode tile_mode_x, flutter::DlTileMode tile_mode_y, Skwasm::FilterQuality quality, flutter::DlScalar *matrix_33)
 
SKWASM_EXPORT Skwasm::UniformDatauniformData_create (int size)
 
SKWASM_EXPORT void uniformData_dispose (Skwasm::UniformData *data)
 
SKWASM_EXPORT void * uniformData_getPointer (Skwasm::UniformData *data)
 

Function Documentation

◆ runtimeEffect_create()

SKWASM_EXPORT flutter::DlRuntimeEffect * runtimeEffect_create ( SkString *  source)

Definition at line 145 of file shaders.cc.

145 {
147 return Skwasm::CreateRuntimeEffect(source).release();
148}
sk_sp< flutter::DlRuntimeEffect > CreateRuntimeEffect(SkString *string)
uint32_t live_runtime_effect_count

References Skwasm::CreateRuntimeEffect(), and Skwasm::live_runtime_effect_count.

◆ runtimeEffect_dispose()

SKWASM_EXPORT void runtimeEffect_dispose ( flutter::DlRuntimeEffect effect)

Definition at line 150 of file shaders.cc.

150 {
152 effect->unref();
153}

References Skwasm::live_runtime_effect_count.

◆ runtimeEffect_getUniformSize()

SKWASM_EXPORT size_t runtimeEffect_getUniformSize ( flutter::DlRuntimeEffect effect)

Definition at line 156 of file shaders.cc.

156 {
157 return effect->uniform_size();
158}
virtual size_t uniform_size() const =0
Returns the total combined size of all uniforms in bytes.

References flutter::DlRuntimeEffect::uniform_size().

◆ shader_createConicalGradient()

SKWASM_EXPORT Skwasm::sp_wrapper< flutter::DlColorSource > * shader_createConicalGradient ( flutter::DlPoint end_points,
flutter::DlScalar  start_radius,
flutter::DlScalar  end_radius,
uint32_t *  colors,
flutter::DlScalar stops,
int  count,
flutter::DlTileMode  tile_mode,
flutter::DlScalar matrix_33 
)

Definition at line 81 of file shaders.cc.

88 {
90 std::vector<flutter::DlColor> dl_colors;
91 dl_colors.resize(count);
92 for (int i = 0; i < count; i++) {
93 dl_colors[i] = flutter::DlColor(colors[i]);
94 }
95 if (matrix_33) {
96 auto local_matrix = Skwasm::CreateDlMatrixFrom3x3(matrix_33);
99 end_points[0], start_radius, end_points[1], end_radius, count,
100 dl_colors.data(), stops, tile_mode, &local_matrix));
101 } else {
104 end_points[0], start_radius, end_points[1], end_radius, count,
105 dl_colors.data(), stops, tile_mode));
106 }
107}
static std::shared_ptr< DlColorSource > MakeConical(DlPoint start_center, DlScalar start_radius, DlPoint end_center, DlScalar end_radius, uint32_t stop_count, const DlColor *colors, const float *stops, DlTileMode tile_mode, const DlMatrix *matrix=nullptr)
flutter::DlMatrix CreateDlMatrixFrom3x3(const flutter::DlScalar *f)
Definition helpers.h:29
uint32_t live_shader_count

References Skwasm::CreateDlMatrixFrom3x3(), i, Skwasm::live_shader_count, and flutter::DlColorSource::MakeConical().

◆ shader_createFromImage()

SKWASM_EXPORT Skwasm::sp_wrapper< flutter::DlColorSource > * shader_createFromImage ( flutter::DlImage image,
flutter::DlTileMode  tile_mode_x,
flutter::DlTileMode  tile_mode_y,
Skwasm::FilterQuality  quality,
flutter::DlScalar matrix_33 
)

Definition at line 180 of file shaders.cc.

184 {
186 if (matrix_33) {
187 auto local_matrix = Skwasm::CreateDlMatrixFrom3x3(matrix_33);
190 sk_ref_sp(image), tile_mode_x, tile_mode_y,
191 Skwasm::SamplingOptionsForQuality(quality), &local_matrix));
192 } else {
195 sk_ref_sp(image), tile_mode_x, tile_mode_y,
197 }
198}
static std::shared_ptr< DlColorSource > MakeImage(const sk_sp< const DlImage > &image, DlTileMode horizontal_tile_mode, DlTileMode vertical_tile_mode, DlImageSampling sampling=DlImageSampling::kLinear, const DlMatrix *matrix=nullptr)
FlutterVulkanImage * image
flutter::DlImageSampling SamplingOptionsForQuality(FilterQuality quality)
Definition helpers.h:101

References Skwasm::CreateDlMatrixFrom3x3(), image, Skwasm::live_shader_count, flutter::DlColorSource::MakeImage(), and Skwasm::SamplingOptionsForQuality().

◆ shader_createLinearGradient()

SKWASM_EXPORT Skwasm::sp_wrapper< flutter::DlColorSource > * shader_createLinearGradient ( flutter::DlPoint end_points,
uint32_t *  colors,
flutter::DlScalar stops,
int  count,
flutter::DlTileMode  tile_mode,
flutter::DlScalar matrix_33 
)

Definition at line 25 of file shaders.cc.

31 {
33 std::vector<flutter::DlColor> dl_colors;
34 dl_colors.resize(count);
35 for (int i = 0; i < count; i++) {
36 dl_colors[i] = flutter::DlColor(colors[i]);
37 }
38 if (matrix_33) {
39 auto matrix = Skwasm::CreateDlMatrixFrom3x3(matrix_33);
41 flutter::DlColorSource::MakeLinear(end_points[0], end_points[1], count,
42 dl_colors.data(), stops, tile_mode,
43 &matrix));
44 } else {
46 flutter::DlColorSource::MakeLinear(end_points[0], end_points[1], count,
47 dl_colors.data(), stops, tile_mode));
48 }
49}
static std::shared_ptr< DlColorSource > MakeLinear(const DlPoint start_point, const DlPoint end_point, uint32_t stop_count, const DlColor *colors, const float *stops, DlTileMode tile_mode, const DlMatrix *matrix=nullptr)

References Skwasm::CreateDlMatrixFrom3x3(), i, Skwasm::live_shader_count, and flutter::DlColorSource::MakeLinear().

◆ shader_createRadialGradient()

SKWASM_EXPORT Skwasm::sp_wrapper< flutter::DlColorSource > * shader_createRadialGradient ( flutter::DlScalar  center_x,
flutter::DlScalar  center_y,
flutter::DlScalar  radius,
uint32_t *  colors,
flutter::DlScalar stops,
int  count,
flutter::DlTileMode  tile_mode,
flutter::DlScalar matrix_33 
)

Definition at line 52 of file shaders.cc.

59 {
61 std::vector<flutter::DlColor> dl_colors;
62 dl_colors.resize(count);
63 for (int i = 0; i < count; i++) {
64 dl_colors[i] = flutter::DlColor(colors[i]);
65 }
66 if (matrix_33) {
67 auto local_matrix = Skwasm::CreateDlMatrixFrom3x3(matrix_33);
70 radius, count, dl_colors.data(),
71 stops, tile_mode, &local_matrix));
72 } else {
75 radius, count, dl_colors.data(),
76 stops, tile_mode));
77 }
78}
static std::shared_ptr< DlColorSource > MakeRadial(DlPoint center, DlScalar radius, uint32_t stop_count, const DlColor *colors, const float *stops, DlTileMode tile_mode, const DlMatrix *matrix=nullptr)

References Skwasm::CreateDlMatrixFrom3x3(), i, Skwasm::live_shader_count, and flutter::DlColorSource::MakeRadial().

◆ shader_createRuntimeEffectShader()

SKWASM_EXPORT Skwasm::sp_wrapper< flutter::DlColorSource > * shader_createRuntimeEffectShader ( flutter::DlRuntimeEffect runtime_effect,
Skwasm::UniformData uniforms,
Skwasm::sp_wrapper< flutter::DlColorSource > **  children,
size_t  child_count 
)

Definition at line 161 of file shaders.cc.

165 {
167 std::vector<std::shared_ptr<flutter::DlColorSource>> child_pointers;
168 child_pointers.resize(child_count);
169 for (size_t i = 0; i < child_count; i++) {
170 child_pointers[i] = children[i]->Shared();
171 }
172
174 flutter::DlColorSource::MakeRuntimeEffect(sk_ref_sp(runtime_effect),
175 std::move(child_pointers),
176 uniforms->data));
177}
const std::shared_ptr< T > & Shared()
Definition helpers.h:21
static std::shared_ptr< DlColorSource > MakeRuntimeEffect(sk_sp< DlRuntimeEffect > runtime_effect, std::vector< std::shared_ptr< DlColorSource > > samplers, std::shared_ptr< std::vector< uint8_t > > uniform_data)
std::shared_ptr< std::vector< uint8_t > > data
Definition shaders.cc:18

References Skwasm::UniformData::data, i, Skwasm::live_shader_count, flutter::DlColorSource::MakeRuntimeEffect(), and Skwasm::sp_wrapper< T >::Shared().

◆ shader_createSweepGradient()

SKWASM_EXPORT Skwasm::sp_wrapper< flutter::DlColorSource > * shader_createSweepGradient ( flutter::DlScalar  center_x,
flutter::DlScalar  center_y,
uint32_t *  colors,
flutter::DlScalar stops,
int  count,
flutter::DlTileMode  tile_mode,
flutter::DlScalar  start_angle,
flutter::DlScalar  end_angle,
flutter::DlScalar matrix_33 
)

Definition at line 110 of file shaders.cc.

118 {
120 std::vector<flutter::DlColor> dl_colors;
121 dl_colors.resize(count);
122 for (int i = 0; i < count; i++) {
123 dl_colors[i] = flutter::DlColor(colors[i]);
124 }
125 if (matrix_33) {
126 auto local_matrix = Skwasm::CreateDlMatrixFrom3x3(matrix_33);
129 flutter::DlPoint{center_x, center_y}, start_angle, end_angle, count,
130 dl_colors.data(), stops, tile_mode, &local_matrix));
131 } else {
134 start_angle, end_angle, count,
135 dl_colors.data(), stops, tile_mode));
136 }
137}
static std::shared_ptr< DlColorSource > MakeSweep(DlPoint center, DlScalar start, DlScalar end, uint32_t stop_count, const DlColor *colors, const float *stops, DlTileMode tile_mode, const DlMatrix *matrix=nullptr)

References Skwasm::CreateDlMatrixFrom3x3(), i, Skwasm::live_shader_count, and flutter::DlColorSource::MakeSweep().

◆ shader_dispose()

SKWASM_EXPORT void shader_dispose ( Skwasm::sp_wrapper< flutter::DlColorSource > *  shader)

Definition at line 139 of file shaders.cc.

140 {
142 delete shader;
143}

References Skwasm::live_shader_count.

◆ uniformData_create()

SKWASM_EXPORT Skwasm::UniformData * uniformData_create ( int  size)

Definition at line 200 of file shaders.cc.

200 {
201 return new Skwasm::UniformData{std::make_shared<std::vector<uint8_t>>(size)};
202}
it will be possible to load the file into Perfetto s trace viewer use test Running tests that layout and measure text will not yield consistent results across various platforms Enabling this option will make font resolution default to the Ahem test font on all disable asset Prevents usage of any non test fonts unless they were explicitly Loaded via prefetched default font Indicates whether the embedding started a prefetch of the default font manager before creating the engine run In non interactive keep the shell running after the Dart script has completed enable serial On low power devices with low core running concurrent GC tasks on threads can cause them to contend with the UI thread which could potentially lead to jank This option turns off all concurrent GC activities domain network JSON encoded network policy per domain This overrides the DisallowInsecureConnections switch Embedder can specify whether to allow or disallow insecure connections at a domain level old gen heap size

◆ uniformData_dispose()

SKWASM_EXPORT void uniformData_dispose ( Skwasm::UniformData data)

Definition at line 204 of file shaders.cc.

204 {
205 delete data;
206}
std::shared_ptr< const fml::Mapping > data

References data.

◆ uniformData_getPointer()

SKWASM_EXPORT void * uniformData_getPointer ( Skwasm::UniformData data)

Definition at line 208 of file shaders.cc.

208 {
209 return data->data->data();
210}

References data, and Skwasm::UniformData::data.