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

Unified Diff: src/gpu/GrBitmapTextContext.cpp

Issue 338093005: Cache the GrEffect used for text rendering in GrBitmapTextContext. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: simplify getGenerationID Created 6 years, 6 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
Index: src/gpu/GrBitmapTextContext.cpp
diff --git a/src/gpu/GrBitmapTextContext.cpp b/src/gpu/GrBitmapTextContext.cpp
index 696077dd95d364d7e5f8bfafe5f03d1e80504e7c..a97c7cedfdb31ba9b1f788cad070589797237094 100755
--- a/src/gpu/GrBitmapTextContext.cpp
+++ b/src/gpu/GrBitmapTextContext.cpp
@@ -56,6 +56,7 @@ GrBitmapTextContext::GrBitmapTextContext(GrContext* context,
fCurrTexture = NULL;
fCurrVertex = 0;
+ fEFfectTextureGenID = 0;
fVertices = NULL;
fMaxVertices = 0;
@@ -95,12 +96,17 @@ void GrBitmapTextContext::flushGlyphs() {
SkASSERT(fCurrTexture);
GrTextureParams params(SkShader::kRepeat_TileMode, GrTextureParams::kNone_FilterMode);
+ uint32_t textureGenID = fCurrTexture->getGenerationID();
+
+ if (textureGenID != fEFfectTextureGenID) {
+ fCachedEffect.reset(GrCustomCoordsTextureEffect::Create(fCurrTexture, params));
+ fEFfectTextureGenID = textureGenID;
+ }
+
// This effect could be stored with one of the cache objects (atlas?)
int coordsIdx = drawState->hasColorVertexAttribute() ? kGlyphCoordsWithColorAttributeIndex :
kGlyphCoordsNoColorAttributeIndex;
- drawState->addCoverageEffect(
- GrCustomCoordsTextureEffect::Create(fCurrTexture, params),
- coordsIdx)->unref();
+ drawState->addCoverageEffect(fCachedEffect.get(), coordsIdx);
SkASSERT(NULL != fStrike);
switch (fStrike->getMaskFormat()) {
// Color bitmap text

Powered by Google App Engine
This is Rietveld 408576698