virtual void setData(const GrGLProgramDataManager& pdman, const GrPrimitiveProcessor& processor, const GrBatchTracker& bt) override { SkASSERT(fDistanceAdjustUni.isValid()); const GrDistanceFieldLCDTextureEffect& dfTexEffect = processor.cast<GrDistanceFieldLCDTextureEffect>(); GrDistanceFieldLCDTextureEffect::DistanceAdjust wa = dfTexEffect.getDistanceAdjust(); if (wa != fDistanceAdjust) { pdman.set3f(fDistanceAdjustUni, wa.fR, wa.fG, wa.fB); fDistanceAdjust = wa; } this->setUniformViewMatrix(pdman, processor.viewMatrix()); const DistanceFieldLCDBatchTracker& local = bt.cast<DistanceFieldLCDBatchTracker>(); if (kUniform_GrGPInput == local.fInputColorType && local.fColor != fColor) { GrGLfloat c[4]; GrColorToRGBAFloat(local.fColor, c); pdman.set4fv(fColorUniform, 1, c); fColor = local.fColor; } }
virtual void setData(const GrGLProgramDataManager& pdman, const GrPrimitiveProcessor& gp, const GrBatchTracker& bt) override { this->setUniformViewMatrix(pdman, gp.viewMatrix()); const BitmapTextBatchTracker& local = bt.cast<BitmapTextBatchTracker>(); if (kUniform_GrGPInput == local.fInputColorType && local.fColor != fColor) { GrGLfloat c[4]; GrColorToRGBAFloat(local.fColor, c); pdman.set4fv(fColorUniform, 1, c); fColor = local.fColor; } }
bool GrPathProcessor::canMakeEqual(const GrBatchTracker& m, const GrPrimitiveProcessor& that, const GrBatchTracker& t) const { if (this->classID() != that.classID() || !this->hasSameTextureAccesses(that)) { return false; } if (!this->viewMatrix().cheapEqualTo(that.viewMatrix())) { return false; } const PathBatchTracker& mine = m.cast<PathBatchTracker>(); const PathBatchTracker& theirs = t.cast<PathBatchTracker>(); return CanCombineLocalMatrices(*this, mine.fUsesLocalCoords, that, theirs.fUsesLocalCoords) && CanCombineOutput(mine.fInputColorType, mine.fColor, theirs.fInputColorType, theirs.fColor) && CanCombineOutput(mine.fInputCoverageType, 0xff, theirs.fInputCoverageType, 0xff); }
virtual void setData(const GrGLProgramDataManager& pdman, const GrPrimitiveProcessor& proc, const GrBatchTracker& bt) override { #ifdef SK_GAMMA_APPLY_TO_A8 const GrDistanceFieldTextureEffect& dfTexEffect = proc.cast<GrDistanceFieldTextureEffect>(); float distanceAdjust = dfTexEffect.getDistanceAdjust(); if (distanceAdjust != fDistanceAdjust) { pdman.set1f(fDistanceAdjustUni, distanceAdjust); fDistanceAdjust = distanceAdjust; } #endif this->setUniformViewMatrix(pdman, proc.viewMatrix()); const DistanceFieldBatchTracker& local = bt.cast<DistanceFieldBatchTracker>(); if (kUniform_GrGPInput == local.fInputColorType && local.fColor != fColor) { GrGLfloat c[4]; GrColorToRGBAFloat(local.fColor, c); pdman.set4fv(fColorUniform, 1, c); fColor = local.fColor; } }
virtual void setData(const GrGLProgramDataManager& pdman, const GrPrimitiveProcessor& proc, const GrBatchTracker& bt) override { SkASSERT(fTextureSizeUni.isValid()); GrTexture* texture = proc.texture(0); if (texture->width() != fTextureSize.width() || texture->height() != fTextureSize.height()) { fTextureSize = SkISize::Make(texture->width(), texture->height()); pdman.set2f(fTextureSizeUni, SkIntToScalar(fTextureSize.width()), SkIntToScalar(fTextureSize.height())); } this->setUniformViewMatrix(pdman, proc.viewMatrix()); const DistanceFieldNoGammaBatchTracker& local = bt.cast<DistanceFieldNoGammaBatchTracker>(); if (kUniform_GrGPInput == local.fInputColorType && local.fColor != fColor) { GrGLfloat c[4]; GrColorToRGBAFloat(local.fColor, c); pdman.set4fv(fColorUniform, 1, c); fColor = local.fColor; } }