Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
AdvancedBlendTest.cpp
Go to the documentation of this file.
1/*
2 * Copyright 2019 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
12#include "src/gpu/Blend.h"
22#include "tests/Test.h"
23
24#include <utility>
25
26struct GrContextOptions;
27
30 ctxInfo,
32 static constexpr auto opaque = GrProcessorAnalysisColor::Opaque::kYes;
33 static constexpr auto coverage = GrProcessorAnalysisCoverage::kSingleChannel;
34 const GrCaps& caps = *ctxInfo.directContext()->priv().caps();
35
36 for (int mode = (int)SkBlendMode::kLastMode; mode > (int)SkBlendMode::kLastCoeffMode; --mode) {
37 const SkBlendMode blendMode = (SkBlendMode)mode;
38 const skgpu::BlendEquation blendEquation = (skgpu::BlendEquation)(mode +
40 const GrXPFactory* xpf = GrCustomXfermode::Get(blendMode);
41
43 GrXPFactory::GetAnalysisProperties(xpf, opaque, coverage, caps, GrClampType::kAuto);
44
46 paint.setXPFactory(xpf);
47 GrProcessorSet procs(std::move(paint));
48 SkPMColor4f overrideColor;
49 GrProcessorSet::Analysis processorAnalysis = procs.finalize(
50 opaque, coverage, nullptr, &GrUserStencilSettings::kUnused, caps,
51 GrClampType::kAuto, &overrideColor);
52
54 !caps.isAdvancedBlendEquationDisabled(blendEquation)) {
59 } else {
62 == caps.blendEquationSupport());
64 }
65 } else {
70 } else {
72 }
73 }
74 }
75}
reporter
SkBlendMode
Definition SkBlendMode.h:38
@ kLastCoeffMode
last porter duff blend mode
@ kOverlay
multiply or screen, depending on destination
@ kLastMode
last valid value
#define REPORTER_ASSERT(r, cond,...)
Definition Test.h:286
#define DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS(name, reporter, context_info, ctsEnforcement)
Definition Test.h:434
Type::kYUV Type::kRGBA() int(0.7 *637)
bool advancedBlendEquationSupport() const
Definition GrCaps.h:162
@ kAdvancedCoherent_BlendEquationSupport
Definition GrCaps.h:154
@ kAdvanced_BlendEquationSupport
Definition GrCaps.h:152
bool isAdvancedBlendEquationDisabled(skgpu::BlendEquation equation) const
Definition GrCaps.h:170
BlendEquationSupport blendEquationSupport() const
Definition GrCaps.h:160
bool requiresNonOverlappingDraws() const
Analysis finalize(const GrProcessorAnalysisColor &, const GrProcessorAnalysisCoverage, const GrAppliedClip *, const GrUserStencilSettings *, const GrCaps &, GrClampType, SkPMColor4f *inputColorOverride)
static AnalysisProperties GetAnalysisProperties(const GrXPFactory *, const GrProcessorAnalysisColor &, const GrProcessorAnalysisCoverage &, const GrCaps &, GrClampType)
const Paint & paint
const GrXPFactory * Get(SkBlendMode mode)
BlendEquation
Definition Blend.h:26
static const GrUserStencilSettings & kUnused