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

Unified Diff: src/gpu/batches/GrAtlasTextBatch.cpp

Issue 1459343006: Small tidys GrAtlasTextContext (Closed) Base URL: https://skia.googlesource.com/skia.git@text2
Patch Set: small tidys Created 5 years, 1 month 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/batches/GrAtlasTextBatch.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gpu/batches/GrAtlasTextBatch.cpp
diff --git a/src/gpu/batches/GrAtlasTextBatch.cpp b/src/gpu/batches/GrAtlasTextBatch.cpp
index 91088c0c59068811a94fea0a48c9ba6dca51d39a..48892946733f4ce32575802942b82491350155a9 100644
--- a/src/gpu/batches/GrAtlasTextBatch.cpp
+++ b/src/gpu/batches/GrAtlasTextBatch.cpp
@@ -96,12 +96,11 @@ void GrAtlasTextBatch::onPrepareDraws(Target* target) {
return;
}
- bool usesDistanceFields = this->usesDistanceFields();
GrMaskFormat maskFormat = this->maskFormat();
bool isLCD = this->isLCD();
SkAutoTUnref<const GrGeometryProcessor> gp;
- if (usesDistanceFields) {
+ if (this->usesDistanceFields()) {
gp.reset(this->setupDfProcessor(this->viewMatrix(), fFilteredColor, this->color(),
texture));
} else {
@@ -117,7 +116,7 @@ void GrAtlasTextBatch::onPrepareDraws(Target* target) {
FlushInfo flushInfo;
flushInfo.fGlyphsToFlush = 0;
size_t vertexStride = gp->getVertexStride();
- SkASSERT(vertexStride == (usesDistanceFields ?
+ SkASSERT(vertexStride == (this->usesDistanceFields() ?
GetVertexStrideDf(maskFormat, isLCD) :
GetVertexStride(maskFormat)));
@@ -153,8 +152,9 @@ void GrAtlasTextBatch::onPrepareDraws(Target* target) {
TextInfo& info = run.fSubRunInfo[args.fSubRun];
uint64_t currentAtlasGen = fFontCache->atlasGeneration(maskFormat);
+ bool regenerateGlyphs = info.fStrike->isAbandoned();
bool regenerateTextureCoords = info.fAtlasGeneration != currentAtlasGen ||
- info.fStrike->isAbandoned();
+ regenerateGlyphs;
bool regenerateColors;
if (usesDistanceFields) {
regenerateColors = !isLCD && run.fColor != args.fColor;
@@ -184,7 +184,6 @@ void GrAtlasTextBatch::onPrepareDraws(Target* target) {
// new strike, we instead keep our ref to the old strike and use the packed ids from
// it. These ids will still be valid as long as we hold the ref. When we are done
// updating our cache of the GrGlyph*s, we drop our ref on the old strike
- bool regenerateGlyphs = false;
GrBatchTextStrike* strike = nullptr;
if (regenerateTextureCoords) {
info.fBulkUseToken.reset();
@@ -192,7 +191,8 @@ void GrAtlasTextBatch::onPrepareDraws(Target* target) {
// We can reuse if we have a valid strike and our descriptors / typeface are the
// same. The override descriptor is only for the non distance field text within
// a run
- const SkDescriptor* newDesc = (run.fOverrideDescriptor && !usesDistanceFields) ?
+ const SkDescriptor* newDesc = (run.fOverrideDescriptor &&
+ !this->usesDistanceFields()) ?
run.fOverrideDescriptor->getDesc() :
run.fDescriptor.getDesc();
if (!cache || !SkTypeface::Equal(typeface, run.fTypeface) ||
@@ -207,8 +207,7 @@ void GrAtlasTextBatch::onPrepareDraws(Target* target) {
typeface = run.fTypeface;
}
- if (info.fStrike->isAbandoned()) {
- regenerateGlyphs = true;
+ if (regenerateGlyphs) {
strike = fFontCache->getStrike(scaler);
} else {
strike = info.fStrike;
@@ -231,9 +230,7 @@ void GrAtlasTextBatch::onPrepareDraws(Target* target) {
glyph = blob->fGlyphs[glyphOffset];
SkASSERT(glyph);
SkASSERT(id == glyph->fPackedID);
- // We want to be able to assert this but cannot for testing purposes.
- // once skbug:4143 has landed we can revist this assert
- //SkASSERT(glyph->fMaskFormat == this->maskFormat());
+ SkASSERT(glyph->fMaskFormat == this->maskFormat());
if (!fFontCache->hasGlyph(glyph) &&
!strike->addGlyphToAtlas(target, glyph, scaler, skGlyph, maskFormat)) {
@@ -251,30 +248,18 @@ void GrAtlasTextBatch::onPrepareDraws(Target* target) {
fFontCache->addGlyphToBulkAndSetUseToken(&info.fBulkUseToken, glyph,
target->currentToken());
- // Texture coords are the last vertex attribute so we get a pointer to the
- // first one and then map with stride in regenerateTextureCoords
- intptr_t vertex = reinterpret_cast<intptr_t>(blob->fVertices);
- vertex += info.fVertexStartIndex;
- vertex += vertexStride * glyphIdx * kVerticesPerGlyph;
- vertex += vertexStride - sizeof(SkIPoint16);
-
- this->regenerateTextureCoords(glyph, vertex, vertexStride);
+ this->regenerateTextureCoords(glyph, blob->fVertices, glyphIdx,
+ info.fVertexStartIndex, vertexStride);
}
if (regenerateColors) {
- intptr_t vertex = reinterpret_cast<intptr_t>(blob->fVertices);
- vertex += info.fVertexStartIndex;
- vertex += vertexStride * glyphIdx * kVerticesPerGlyph + sizeof(SkPoint);
- this->regenerateColors(vertex, vertexStride, args.fColor);
+ this->regenerateColors(blob->fVertices, glyphIdx, info.fVertexStartIndex,
+ vertexStride, args.fColor);
}
if (regeneratePositions) {
- intptr_t vertex = reinterpret_cast<intptr_t>(blob->fVertices);
- vertex += info.fVertexStartIndex;
- vertex += vertexStride * glyphIdx * kVerticesPerGlyph;
- SkScalar transX = args.fTransX;
- SkScalar transY = args.fTransY;
- this->regeneratePositions(vertex, vertexStride, transX, transY);
+ this->regeneratePositions(blob->fVertices, glyphIdx, info.fVertexStartIndex,
+ vertexStride, args.fTransX, args.fTransY);
}
flushInfo.fGlyphsToFlush++;
}
@@ -309,8 +294,8 @@ void GrAtlasTextBatch::onPrepareDraws(Target* target) {
this->flush(target, &flushInfo);
}
-void GrAtlasTextBatch::regenerateTextureCoords(GrGlyph* glyph, intptr_t vertex,
- size_t vertexStride) {
+void GrAtlasTextBatch::regenerateTextureCoords(const GrGlyph* glyph, void* vertices, int glyphIdx,
+ size_t vertexStartIndex, size_t vertexStride) {
int width = glyph->fBounds.width();
int height = glyph->fBounds.height();
@@ -327,6 +312,13 @@ void GrAtlasTextBatch::regenerateTextureCoords(GrGlyph* glyph, intptr_t vertex,
v1 = v0 + height;
}
+ // Texture coords are the last vertex attribute so we get a pointer to the
+ // first one and then map with stride in regenerateTextureCoords
+ intptr_t vertex = reinterpret_cast<intptr_t>(vertices);
+ vertex += vertexStartIndex;
+ vertex += vertexStride * glyphIdx * kVerticesPerGlyph;
+ vertex += vertexStride - sizeof(SkIPoint16);
+
SkIPoint16* textureCoords;
// V0
textureCoords = reinterpret_cast<SkIPoint16*>(vertex);
@@ -348,7 +340,12 @@ void GrAtlasTextBatch::regenerateTextureCoords(GrGlyph* glyph, intptr_t vertex,
textureCoords->set(u1, v0);
}
robertphillips 2015/11/20 18:43:02 can this be static ?
-void GrAtlasTextBatch::regenerateColors(intptr_t vertex, size_t vertexStride, GrColor color) {
+void GrAtlasTextBatch::regenerateColors(void* vertices, int glyphIdx, size_t vertexStartIndex,
+ size_t vertexStride, GrColor color) {
+ intptr_t vertex = reinterpret_cast<intptr_t>(vertices);
+ vertex += vertexStartIndex;
+ vertex += vertexStride * glyphIdx * kVerticesPerGlyph + sizeof(SkPoint);
+
for (int i = 0; i < kVerticesPerGlyph; i++) {
SkColor* vcolor = reinterpret_cast<SkColor*>(vertex);
*vcolor = color;
@@ -356,8 +353,11 @@ void GrAtlasTextBatch::regenerateColors(intptr_t vertex, size_t vertexStride, Gr
}
}
robertphillips 2015/11/20 18:43:02 this guy too ?
-void GrAtlasTextBatch::regeneratePositions(intptr_t vertex, size_t vertexStride, SkScalar transX,
- SkScalar transY) {
+void GrAtlasTextBatch::regeneratePositions(void* vertices, int glyphIdx, size_t vertexStartIndex,
+ size_t vertexStride, SkScalar transX, SkScalar transY) {
+ intptr_t vertex = reinterpret_cast<intptr_t>(vertices);
+ vertex += vertexStartIndex;
+ vertex += vertexStride * glyphIdx * kVerticesPerGlyph;
for (int i = 0; i < kVerticesPerGlyph; i++) {
SkPoint* point = reinterpret_cast<SkPoint*>(vertex);
point->fX += transX;
« no previous file with comments | « src/gpu/batches/GrAtlasTextBatch.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698