aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Brian Salomon <bsalomon@google.com>2017-11-08 13:50:53 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-11-10 16:43:47 +0000
commitdeb53cceea94e2e10d9a0e33912d1c4c1ffbac8a (patch)
treea8ee594c817a92bc0da803768eef019142be77d7
parent0ecc2b7e1982a8b176c1c3a84e10bcb59c1e5c75 (diff)
Make GrTextBlob::VertexRegenerator determine vertex stride from mask format
Change-Id: Ib0910ca563150add6399ba3ca891ee23db3578ec Reviewed-on: https://skia-review.googlesource.com/68861 Reviewed-by: Jim Van Verth <jvanverth@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com>
-rw-r--r--src/gpu/ops/GrAtlasTextOp.cpp2
-rw-r--r--src/gpu/text/GrAtlasTextBlob.h3
-rw-r--r--src/gpu/text/GrAtlasTextBlobVertexRegenerator.cpp13
3 files changed, 9 insertions, 9 deletions
diff --git a/src/gpu/ops/GrAtlasTextOp.cpp b/src/gpu/ops/GrAtlasTextOp.cpp
index 9e98466d5d..6a26551f32 100644
--- a/src/gpu/ops/GrAtlasTextOp.cpp
+++ b/src/gpu/ops/GrAtlasTextOp.cpp
@@ -233,7 +233,7 @@ void GrAtlasTextOp::onPrepareDraws(Target* target) {
Blob* blob = args.fBlob;
GrAtlasTextBlob::VertexRegenerator regenerator(
blob, args.fRun, args.fSubRun, args.fViewMatrix, args.fX, args.fY, args.fColor,
- target->deferredUploadTarget(), fFontCache, &glyphCache, vertexStride);
+ target->deferredUploadTarget(), fFontCache, &glyphCache);
GrAtlasTextBlob::VertexRegenerator::Result result;
do {
result = regenerator.regenerate();
diff --git a/src/gpu/text/GrAtlasTextBlob.h b/src/gpu/text/GrAtlasTextBlob.h
index 403cbbfa3f..450e256d38 100644
--- a/src/gpu/text/GrAtlasTextBlob.h
+++ b/src/gpu/text/GrAtlasTextBlob.h
@@ -557,7 +557,7 @@ public:
*/
VertexRegenerator(GrAtlasTextBlob* blob, int runIdx, int subRunIdx, const SkMatrix& viewMatrix,
SkScalar x, SkScalar y, GrColor color, GrDeferredUploadTarget*,
- GrAtlasGlyphCache*, SkAutoGlyphCache*, size_t vertexStride);
+ GrAtlasGlyphCache*, SkAutoGlyphCache*);
struct Result {
/**
@@ -591,7 +591,6 @@ private:
SkAutoGlyphCache* fLazyCache;
Run* fRun;
Run::SubRunInfo* fSubRun;
- size_t fVertexStride;
GrColor fColor;
SkScalar fTransX;
SkScalar fTransY;
diff --git a/src/gpu/text/GrAtlasTextBlobVertexRegenerator.cpp b/src/gpu/text/GrAtlasTextBlobVertexRegenerator.cpp
index 6b242adcde..28b2e0f0c0 100644
--- a/src/gpu/text/GrAtlasTextBlobVertexRegenerator.cpp
+++ b/src/gpu/text/GrAtlasTextBlobVertexRegenerator.cpp
@@ -153,7 +153,7 @@ inline void regen_vertices(char* vertex, const GrGlyph* glyph, size_t vertexStri
Regenerator::VertexRegenerator(GrAtlasTextBlob* blob, int runIdx, int subRunIdx,
const SkMatrix& viewMatrix, SkScalar x, SkScalar y, GrColor color,
GrDeferredUploadTarget* uploadTarget, GrAtlasGlyphCache* glyphCache,
- SkAutoGlyphCache* lazyCache, size_t vertexStride)
+ SkAutoGlyphCache* lazyCache)
: fViewMatrix(viewMatrix)
, fBlob(blob)
, fUploadTarget(uploadTarget)
@@ -161,7 +161,6 @@ Regenerator::VertexRegenerator(GrAtlasTextBlob* blob, int runIdx, int subRunIdx,
, fLazyCache(lazyCache)
, fRun(&blob->fRuns[runIdx])
, fSubRun(&blob->fRuns[runIdx].fSubRunInfo[subRunIdx])
- , fVertexStride(vertexStride)
, fColor(color) {
// Compute translation if any
fSubRun->computeTranslation(fViewMatrix, x, y, &fTransX, &fTransY);
@@ -213,8 +212,9 @@ Regenerator::Result Regenerator::doRegen() {
}
Result result;
+ auto vertexStride = GetVertexStride(fSubRun->maskFormat());
char* currVertex = fBlob->fVertices + fSubRun->vertexStartIndex() +
- fCurrGlyph * kVerticesPerGlyph * fVertexStride;
+ fCurrGlyph * kVerticesPerGlyph * vertexStride;
result.fFirstVertex = currVertex;
for (int glyphIdx = fCurrGlyph; glyphIdx < (int)fSubRun->glyphCount(); glyphIdx++) {
@@ -244,10 +244,10 @@ Regenerator::Result Regenerator::doRegen() {
fUploadTarget->nextDrawToken());
}
- regen_vertices<regenPos, regenCol, regenTexCoords>(currVertex, glyph, fVertexStride,
+ regen_vertices<regenPos, regenCol, regenTexCoords>(currVertex, glyph, vertexStride,
fSubRun->drawAsDistanceFields(), fTransX,
fTransY, fColor);
- currVertex += fVertexStride * GrAtlasTextOp::kVerticesPerGlyph;
+ currVertex += vertexStride * GrAtlasTextOp::kVerticesPerGlyph;
++result.fGlyphsRegenerated;
++fCurrGlyph;
}
@@ -300,9 +300,10 @@ Regenerator::Result Regenerator::regenerate() {
return this->doRegen<false, true, true, true>();
case kNoRegen: {
Result result;
+ auto vertexStride = GetVertexStride(fSubRun->maskFormat());
result.fGlyphsRegenerated = fSubRun->glyphCount() - fCurrGlyph;
result.fFirstVertex = fBlob->fVertices + fSubRun->vertexStartIndex() +
- fCurrGlyph * kVerticesPerGlyph * fVertexStride;
+ fCurrGlyph * kVerticesPerGlyph * vertexStride;
fCurrGlyph = fSubRun->glyphCount();
// set use tokens for all of the glyphs in our subrun. This is only valid if we