Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Functions
skgpu::graphite::PrecompileShaders Namespace Reference

Functions

SK_API sk_sp< PrecompileShaderEmpty ()
 
SK_API sk_sp< PrecompileShaderColor ()
 
SK_API sk_sp< PrecompileShaderColor (sk_sp< SkColorSpace >)
 
SK_API sk_sp< PrecompileShaderBlend (SkSpan< SkBlendMode > blendModes, SkSpan< const sk_sp< PrecompileShader > > dsts, SkSpan< const sk_sp< PrecompileShader > > srcs)
 
SK_API sk_sp< PrecompileShaderBlend (SkSpan< const sk_sp< PrecompileBlender > > blenders, SkSpan< const sk_sp< PrecompileShader > > dsts, SkSpan< const sk_sp< PrecompileShader > > srcs)
 
SK_API sk_sp< PrecompileShaderCoordClamp (SkSpan< const sk_sp< PrecompileShader > >)
 
SK_API sk_sp< PrecompileShaderMakeFractalNoise ()
 
SK_API sk_sp< PrecompileShaderMakeTurbulence ()
 
SK_API sk_sp< PrecompileShaderImage ()
 
SK_API sk_sp< PrecompileShaderRawImage ()
 
SK_API sk_sp< PrecompileShaderYUVImage ()
 
SK_API sk_sp< PrecompileShaderLinearGradient ()
 
SK_API sk_sp< PrecompileShaderRadialGradient ()
 
SK_API sk_sp< PrecompileShaderTwoPointConicalGradient ()
 
SK_API sk_sp< PrecompileShaderSweepGradient ()
 
SK_API sk_sp< PrecompileShaderPicture ()
 
SK_API sk_sp< PrecompileShaderLocalMatrix (SkSpan< const sk_sp< PrecompileShader > > wrapped)
 
SK_API sk_sp< PrecompileShaderColorFilter (SkSpan< const sk_sp< PrecompileShader > > shaders, SkSpan< const sk_sp< PrecompileColorFilter > > colorFilters)
 
SK_API sk_sp< PrecompileShaderWorkingColorSpace (SkSpan< const sk_sp< PrecompileShader > > shaders, SkSpan< const sk_sp< SkColorSpace > > colorSpaces)
 

Function Documentation

◆ Blend() [1/2]

sk_sp< PrecompileShader > skgpu::graphite::PrecompileShaders::Blend ( SkSpan< const sk_sp< PrecompileBlender > >  blenders,
SkSpan< const sk_sp< PrecompileShader > >  dsts,
SkSpan< const sk_sp< PrecompileShader > >  srcs 
)

Definition at line 303 of file FactoryFunctions.cpp.

306 {
307 std::vector<sk_sp<PrecompileBlender>> tmp;
308 tmp.reserve(blenders.size());
309
310 bool needsPorterDuffBased = false;
311 bool needsBlendModeBased = false;
312
313 for (const auto& b : blenders) {
314 if (!b) {
315 needsPorterDuffBased = true; // fall back to kSrcOver
316 } else if (b->asBlendMode().has_value()) {
317 SkBlendMode bm = b->asBlendMode().value();
318
320 if (!coeffs.empty()) {
321 needsPorterDuffBased = true;
322 } else {
323 needsBlendModeBased = true;
324 }
325 } else {
326 tmp.push_back(b);
327 }
328 }
329
330 if (!needsPorterDuffBased && !needsBlendModeBased && tmp.empty()) {
331 needsPorterDuffBased = true; // fallback to kSrcOver
332 }
333
334 return sk_make_sp<PrecompileBlendShader>(SkSpan<const sk_sp<PrecompileBlender>>(tmp),
335 dsts, srcs,
336 needsPorterDuffBased, needsBlendModeBased);
337}
static const char * srcs[2]
SkBlendMode
Definition SkBlendMode.h:38
constexpr size_t size() const
Definition SkSpan_impl.h:95
static bool b
SkSpan< const float > GetPorterDuffBlendConstants(SkBlendMode mode)
Definition Blend.cpp:53

◆ Blend() [2/2]

sk_sp< PrecompileShader > skgpu::graphite::PrecompileShaders::Blend ( SkSpan< SkBlendMode blendModes,
SkSpan< const sk_sp< PrecompileShader > >  dsts,
SkSpan< const sk_sp< PrecompileShader > >  srcs 
)

Definition at line 339 of file FactoryFunctions.cpp.

342 {
343
344 bool needsPorterDuffBased = false;
345 bool needsBlendModeBased = false;
346
347 for (SkBlendMode bm : blendModes) {
349 if (!porterDuffConstants.empty()) {
350 needsPorterDuffBased = true;
351 } else {
352 needsBlendModeBased = true;
353 }
354 }
355
356 if (!needsPorterDuffBased && !needsBlendModeBased) {
357 needsPorterDuffBased = true; // fallback to kSrcOver
358 }
359
360 return sk_make_sp<PrecompileBlendShader>(SkSpan<const sk_sp<PrecompileBlender>>(),
361 dsts, srcs,
362 needsPorterDuffBased, needsBlendModeBased);
363}
constexpr bool empty() const
Definition SkSpan_impl.h:96

◆ Color() [1/2]

sk_sp< PrecompileShader > skgpu::graphite::PrecompileShaders::Color ( )

Definition at line 171 of file FactoryFunctions.cpp.

171 {
172 return sk_make_sp<PrecompileColorShader>();
173}

◆ Color() [2/2]

sk_sp< PrecompileShader > skgpu::graphite::PrecompileShaders::Color ( sk_sp< SkColorSpace )

Definition at line 177 of file FactoryFunctions.cpp.

177 {
178 return sk_make_sp<PrecompileColorShader>();
179}

◆ ColorFilter()

sk_sp< PrecompileShader > skgpu::graphite::PrecompileShaders::ColorFilter ( SkSpan< const sk_sp< PrecompileShader > >  shaders,
SkSpan< const sk_sp< PrecompileColorFilter > >  colorFilters 
)

Definition at line 816 of file FactoryFunctions.cpp.

818 {
819 return sk_make_sp<PrecompileColorFilterShader>(std::move(shaders), std::move(colorFilters));
820}

◆ CoordClamp()

sk_sp< PrecompileShader > skgpu::graphite::PrecompileShaders::CoordClamp ( SkSpan< const sk_sp< PrecompileShader > >  input)

Definition at line 401 of file FactoryFunctions.cpp.

401 {
402 return sk_make_sp<PrecompileCoordClampShader>(input);
403}

◆ Empty()

sk_sp< PrecompileShader > skgpu::graphite::PrecompileShaders::Empty ( )

Definition at line 114 of file FactoryFunctions.cpp.

114 {
115 return sk_make_sp<PrecompileEmptyShader>();
116}

◆ Image()

sk_sp< PrecompileShader > skgpu::graphite::PrecompileShaders::Image ( )

Definition at line 2021 of file raw_object.h.

◆ LinearGradient()

sk_sp< PrecompileShader > skgpu::graphite::PrecompileShaders::LinearGradient ( )

Definition at line 605 of file FactoryFunctions.cpp.

605 {
607 sk_make_sp<PrecompileGradientShader>(SkShaderBase::GradientType::kLinear);
608 return PrecompileShadersPriv::LocalMatrixBothVariants({ std::move(s) });
609}
struct MyStruct s

◆ LocalMatrix()

sk_sp< PrecompileShader > skgpu::graphite::PrecompileShaders::LocalMatrix ( SkSpan< const sk_sp< PrecompileShader > >  wrapped)

Definition at line 757 of file FactoryFunctions.cpp.

758 {
759 return sk_make_sp<PrecompileLocalMatrixShader>(std::move(wrapped));
760}
static sk_sp< GrTextureProxy > wrapped(skiatest::Reporter *reporter, GrRecordingContext *rContext, GrProxyProvider *proxyProvider, SkBackingFit fit)

◆ MakeFractalNoise()

sk_sp< PrecompileShader > skgpu::graphite::PrecompileShaders::MakeFractalNoise ( )

Definition at line 140 of file FactoryFunctions.cpp.

140 {
141 return sk_make_sp<PrecompilePerlinNoiseShader>();
142}

◆ MakeTurbulence()

sk_sp< PrecompileShader > skgpu::graphite::PrecompileShaders::MakeTurbulence ( )

Definition at line 144 of file FactoryFunctions.cpp.

144 {
145 return sk_make_sp<PrecompilePerlinNoiseShader>();
146}

◆ Picture()

sk_sp< PrecompileShader > skgpu::graphite::PrecompileShaders::Picture ( )

Definition at line 548 of file FactoryFunctions.cpp.

548 {
549 // Note: We don't need to consider the PrecompileYUVImageShader since the image
550 // being drawn was created internally by Skia (as non-YUV).
551 return PrecompileShadersPriv::LocalMatrixBothVariants({ PrecompileShaders::Image() });
552}

◆ RadialGradient()

sk_sp< PrecompileShader > skgpu::graphite::PrecompileShaders::RadialGradient ( )

Definition at line 620 of file FactoryFunctions.cpp.

620 {
622 sk_make_sp<PrecompileGradientShader>(SkShaderBase::GradientType::kRadial);
623 return PrecompileShadersPriv::LocalMatrixBothVariants({ std::move(s) });
624}

◆ RawImage()

sk_sp< PrecompileShader > skgpu::graphite::PrecompileShaders::RawImage ( )

Definition at line 498 of file FactoryFunctions.cpp.

498 {
499 // Raw images do not perform color space conversion, but in Graphite, this is represented as
500 // an identity color space xform, not as a distinct shader
501 return PrecompileShaders::LocalMatrix(
502 { sk_make_sp<PrecompileImageShader>(PrecompileImageShaderFlags::kExcludeAlpha) });
503}

◆ SweepGradient()

sk_sp< PrecompileShader > skgpu::graphite::PrecompileShaders::SweepGradient ( )

Definition at line 635 of file FactoryFunctions.cpp.

635 {
637 sk_make_sp<PrecompileGradientShader>(SkShaderBase::GradientType::kSweep);
638 return PrecompileShadersPriv::LocalMatrixBothVariants({ std::move(s) });
639}

◆ TwoPointConicalGradient()

sk_sp< PrecompileShader > skgpu::graphite::PrecompileShaders::TwoPointConicalGradient ( )

Definition at line 650 of file FactoryFunctions.cpp.

650 {
652 sk_make_sp<PrecompileGradientShader>(SkShaderBase::GradientType::kConical);
653 return PrecompileShadersPriv::LocalMatrixBothVariants({ std::move(s) });
654}

◆ WorkingColorSpace()

sk_sp< PrecompileShader > skgpu::graphite::PrecompileShaders::WorkingColorSpace ( SkSpan< const sk_sp< PrecompileShader > >  shaders,
SkSpan< const sk_sp< SkColorSpace > >  colorSpaces 
)

Definition at line 876 of file FactoryFunctions.cpp.

878 {
879 return sk_make_sp<PrecompileWorkingColorSpaceShader>(std::move(shaders),
880 std::move(colorSpaces));
881}

◆ YUVImage()

sk_sp< PrecompileShader > skgpu::graphite::PrecompileShaders::YUVImage ( )

Definition at line 539 of file FactoryFunctions.cpp.

539 {
540 return sk_make_sp<PrecompileYUVImageShader>();
541}