diff options
author | 2017-04-10 10:54:25 -0400 | |
---|---|---|
committer | 2017-04-10 15:38:47 +0000 | |
commit | d61c9d93b126dca0af17eff89be8536944dadf81 (patch) | |
tree | 975f3418b8f1f303a2530a2a4b67a97c82c86dcc /src/gpu/effects/GrPorterDuffXferProcessor.cpp | |
parent | f9aa9e51691d83970039f42c623c1fd354552378 (diff) |
Move ref counting out of GrProcessor and into subclasses.
This will allow different subclasses to use different models for lifetime management.
GrXferProcessor moves to simple ref counting since they don't own GrGpuResources.
This also constifies GrXferProcessor factories.
Change-Id: I6bea0ea8de718874063224232f9da50887868b16
Reviewed-on: https://skia-review.googlesource.com/11792
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Diffstat (limited to 'src/gpu/effects/GrPorterDuffXferProcessor.cpp')
-rw-r--r-- | src/gpu/effects/GrPorterDuffXferProcessor.cpp | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/gpu/effects/GrPorterDuffXferProcessor.cpp b/src/gpu/effects/GrPorterDuffXferProcessor.cpp index e5e2c1c57f..b4d917af17 100644 --- a/src/gpu/effects/GrPorterDuffXferProcessor.cpp +++ b/src/gpu/effects/GrPorterDuffXferProcessor.cpp @@ -518,8 +518,8 @@ GrGLSLXferProcessor* ShaderPDXferProcessor::createGLSLInstance() const { class PDLCDXferProcessor : public GrXferProcessor { public: - static sk_sp<GrXferProcessor> Make(SkBlendMode xfermode, - const GrProcessorAnalysisColor& inputColor); + static sk_sp<const GrXferProcessor> Make(SkBlendMode mode, + const GrProcessorAnalysisColor& inputColor); ~PDLCDXferProcessor() override; @@ -600,9 +600,9 @@ PDLCDXferProcessor::PDLCDXferProcessor(GrColor blendConstant, uint8_t alpha) this->initClassID<PDLCDXferProcessor>(); } -sk_sp<GrXferProcessor> PDLCDXferProcessor::Make(SkBlendMode xfermode, - const GrProcessorAnalysisColor& color) { - if (SkBlendMode::kSrcOver != xfermode) { +sk_sp<const GrXferProcessor> PDLCDXferProcessor::Make(SkBlendMode mode, + const GrProcessorAnalysisColor& color) { + if (SkBlendMode::kSrcOver != mode) { return nullptr; } GrColor blendConstant; @@ -696,7 +696,7 @@ const GrXPFactory* GrPorterDuffXPFactory::Get(SkBlendMode blendMode) { } } -sk_sp<GrXferProcessor> GrPorterDuffXPFactory::makeXferProcessor( +sk_sp<const GrXferProcessor> GrPorterDuffXPFactory::makeXferProcessor( const GrProcessorAnalysisColor& color, GrProcessorAnalysisCoverage coverage, bool hasMixedSamples, const GrCaps& caps) const { BlendFormula blendFormula; @@ -716,9 +716,9 @@ sk_sp<GrXferProcessor> GrPorterDuffXPFactory::makeXferProcessor( } if (blendFormula.hasSecondaryOutput() && !caps.shaderCaps()->dualSourceBlendingSupport()) { - return sk_sp<GrXferProcessor>(new ShaderPDXferProcessor(hasMixedSamples, fBlendMode)); + return sk_sp<const GrXferProcessor>(new ShaderPDXferProcessor(hasMixedSamples, fBlendMode)); } - return sk_sp<GrXferProcessor>(new PorterDuffXferProcessor(blendFormula)); + return sk_sp<const GrXferProcessor>(new PorterDuffXferProcessor(blendFormula)); } static inline GrXPFactory::AnalysisProperties analysis_properties( @@ -801,7 +801,7 @@ const GrXferProcessor& GrPorterDuffXPFactory::SimpleSrcOverXP() { return gSrcOverXP; } -sk_sp<GrXferProcessor> GrPorterDuffXPFactory::MakeSrcOverXferProcessor( +sk_sp<const GrXferProcessor> GrPorterDuffXPFactory::MakeSrcOverXferProcessor( const GrProcessorAnalysisColor& color, GrProcessorAnalysisCoverage coverage, bool hasMixedSamples, const GrCaps& caps) { // We want to not make an xfer processor if possible. Thus for the simple case where we are not @@ -833,7 +833,7 @@ sk_sp<GrXferProcessor> GrPorterDuffXPFactory::MakeSrcOverXferProcessor( return sk_sp<GrXferProcessor>(new PorterDuffXferProcessor(blendFormula)); } -sk_sp<GrXferProcessor> GrPorterDuffXPFactory::CreateNoCoverageXP(SkBlendMode blendmode) { +sk_sp<const GrXferProcessor> GrPorterDuffXPFactory::MakeNoCoverageXP(SkBlendMode blendmode) { BlendFormula formula = get_blend_formula(false, false, false, blendmode); return sk_make_sp<PorterDuffXferProcessor>(formula); } |