diff options
author | 2017-11-08 13:50:53 -0500 | |
---|---|---|
committer | 2017-11-10 16:43:47 +0000 | |
commit | deb53cceea94e2e10d9a0e33912d1c4c1ffbac8a (patch) | |
tree | a8ee594c817a92bc0da803768eef019142be77d7 | |
parent | 0ecc2b7e1982a8b176c1c3a84e10bcb59c1e5c75 (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.cpp | 2 | ||||
-rw-r--r-- | src/gpu/text/GrAtlasTextBlob.h | 3 | ||||
-rw-r--r-- | src/gpu/text/GrAtlasTextBlobVertexRegenerator.cpp | 13 |
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 |