Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(246)

Unified Diff: src/gpu/effects/GrPorterDuffXferProcessor.cpp

Issue 1225923010: Refugee from Dead Machine 4: MDB Monster Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Last update from dead machine Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/gpu/effects/GrMatrixConvolutionEffect.cpp ('k') | src/gpu/effects/GrSimpleTextureEffect.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gpu/effects/GrPorterDuffXferProcessor.cpp
diff --git a/src/gpu/effects/GrPorterDuffXferProcessor.cpp b/src/gpu/effects/GrPorterDuffXferProcessor.cpp
index 650a1e7622fae6010aeaf4af87950a75763788bf..cd85c5bbcb27b4fdefc278b1907bdbd0459a501c 100644
--- a/src/gpu/effects/GrPorterDuffXferProcessor.cpp
+++ b/src/gpu/effects/GrPorterDuffXferProcessor.cpp
@@ -341,7 +341,7 @@ static BlendFormula get_lcd_blend_formula(const GrProcOptInfo& coveragePOI,
class PorterDuffXferProcessor : public GrXferProcessor {
public:
- PorterDuffXferProcessor(BlendFormula blendFormula) : fBlendFormula(blendFormula) {
+ PorterDuffXferProcessor(BlendFormula blendFormula, GrRenderTarget* dst) : INHERITED(dst), fBlendFormula(blendFormula) {
this->initClassID<PorterDuffXferProcessor>();
}
@@ -479,15 +479,17 @@ PorterDuffXferProcessor::onGetOptimizations(const GrProcOptInfo& colorPOI,
if (!doesStencilWrite) {
optFlags |= GrXferProcessor::kSkipDraw_OptFlag;
}
- optFlags |= (GrXferProcessor::kIgnoreColor_OptFlag |
- GrXferProcessor::kIgnoreCoverage_OptFlag |
+ optFlags |= (//GrXferProcessor::kIgnoreColor_OptFlag |
+ //GrXferProcessor::kIgnoreCoverage_OptFlag |
GrXferProcessor::kCanTweakAlphaForCoverage_OptFlag);
} else {
if (!fBlendFormula.usesInputColor()) {
- optFlags |= GrXferProcessor::kIgnoreColor_OptFlag;
+ // This optimization winds up having the texture access counted
+ // but the pipe-line access not - this is good but messes up the asserts
+ //optFlags |= GrXferProcessor::kIgnoreColor_OptFlag;
}
if (coveragePOI.isSolidWhite()) {
- optFlags |= GrXferProcessor::kIgnoreCoverage_OptFlag;
+ //optFlags |= GrXferProcessor::kIgnoreCoverage_OptFlag;
}
if (colorPOI.allStagesMultiplyInput() &&
fBlendFormula.canTweakAlphaForCoverage() &&
@@ -504,8 +506,8 @@ class ShaderPDXferProcessor : public GrXferProcessor {
public:
ShaderPDXferProcessor(const DstTexture* dstTexture,
bool hasMixedSamples,
- SkXfermode::Mode xfermode)
- : INHERITED(dstTexture, true, hasMixedSamples)
+ SkXfermode::Mode xfermode, GrRenderTarget* dst)
+ : INHERITED(dstTexture, true, hasMixedSamples, dst)
, fXfermode(xfermode) {
this->initClassID<ShaderPDXferProcessor>();
}
@@ -572,7 +574,7 @@ GrGLXferProcessor* ShaderPDXferProcessor::createGLInstance() const {
class PDLCDXferProcessor : public GrXferProcessor {
public:
- static GrXferProcessor* Create(SkXfermode::Mode xfermode, const GrProcOptInfo& colorPOI);
+ static GrXferProcessor* Create(SkXfermode::Mode xfermode, const GrProcOptInfo& colorPOI, GrRenderTarget* dst);
~PDLCDXferProcessor() override;
@@ -581,7 +583,7 @@ public:
GrGLXferProcessor* createGLInstance() const override;
private:
- PDLCDXferProcessor(GrColor blendConstant, uint8_t alpha);
+ PDLCDXferProcessor(GrColor blendConstant, uint8_t alpha, GrRenderTarget* dst);
GrXferProcessor::OptFlags onGetOptimizations(const GrProcOptInfo& colorPOI,
const GrProcOptInfo& coveragePOI,
@@ -637,14 +639,14 @@ private:
///////////////////////////////////////////////////////////////////////////////
-PDLCDXferProcessor::PDLCDXferProcessor(GrColor blendConstant, uint8_t alpha)
- : fBlendConstant(blendConstant)
+PDLCDXferProcessor::PDLCDXferProcessor(GrColor blendConstant, uint8_t alpha, GrRenderTarget* dst)
+ : INHERITED(dst), fBlendConstant(blendConstant)
, fAlpha(alpha) {
this->initClassID<PDLCDXferProcessor>();
}
GrXferProcessor* PDLCDXferProcessor::Create(SkXfermode::Mode xfermode,
- const GrProcOptInfo& colorPOI) {
+ const GrProcOptInfo& colorPOI, GrRenderTarget* dst) {
if (SkXfermode::kSrcOver_Mode != xfermode) {
return nullptr;
}
@@ -657,7 +659,7 @@ GrXferProcessor* PDLCDXferProcessor::Create(SkXfermode::Mode xfermode,
uint8_t alpha = GrColorUnpackA(blendConstant);
blendConstant |= (0xff << GrColor_SHIFT_A);
- return new PDLCDXferProcessor(blendConstant, alpha);
+ return new PDLCDXferProcessor(blendConstant, alpha, dst);
}
PDLCDXferProcessor::~PDLCDXferProcessor() {
@@ -729,7 +731,7 @@ GrPorterDuffXPFactory::onCreateXferProcessor(const GrCaps& caps,
const GrProcOptInfo& colorPOI,
const GrProcOptInfo& covPOI,
bool hasMixedSamples,
- const DstTexture* dstTexture) const {
+ const DstTexture* dstTexture, GrRenderTarget* dst) const {
BlendFormula blendFormula;
if (covPOI.isFourChannelOutput()) {
if (SkXfermode::kSrcOver_Mode == fXfermode &&
@@ -739,7 +741,7 @@ GrPorterDuffXPFactory::onCreateXferProcessor(const GrCaps& caps,
// If we don't have dual source blending or in shader dst reads, we fall back to this
// trick for rendering SrcOver LCD text instead of doing a dst copy.
SkASSERT(!dstTexture || !dstTexture->texture());
- return PDLCDXferProcessor::Create(fXfermode, colorPOI);
+ return PDLCDXferProcessor::Create(fXfermode, colorPOI, dst);
}
blendFormula = get_lcd_blend_formula(covPOI, fXfermode);
} else {
@@ -747,11 +749,11 @@ GrPorterDuffXPFactory::onCreateXferProcessor(const GrCaps& caps,
}
if (blendFormula.hasSecondaryOutput() && !caps.shaderCaps()->dualSourceBlendingSupport()) {
- return new ShaderPDXferProcessor(dstTexture, hasMixedSamples, fXfermode);
+ return new ShaderPDXferProcessor(dstTexture, hasMixedSamples, fXfermode, dst);
}
SkASSERT(!dstTexture || !dstTexture->texture());
- return new PorterDuffXferProcessor(blendFormula);
+ return new PorterDuffXferProcessor(blendFormula, dst);
}
void GrPorterDuffXPFactory::getInvariantBlendedColor(const GrProcOptInfo& colorPOI,
« no previous file with comments | « src/gpu/effects/GrMatrixConvolutionEffect.cpp ('k') | src/gpu/effects/GrSimpleTextureEffect.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698