Revert "Simplify VertexRegenerator GrStrikeCache handling"
This reverts commit 59d529cafa86b2bf4522bfcdac2fef05b5467900.
Reason for revert: use-after-frees, *SAN bots
Original change's description:
> Simplify VertexRegenerator GrStrikeCache handling
>
> The SubRun has access to the GrStrikeCache pointer, there is
> no need to pass it around the VertexRegenerator.
>
> Change-Id: I867b1b29b29e595f92ad57505dcd27dd0f6b726f
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264649
> Commit-Queue: Herb Derby <herb@google.com>
> Reviewed-by: Mike Klein <mtklein@google.com>
TBR=mtklein@google.com,herb@google.com
Change-Id: I7de7841fdd1efb5df845613bd0116fbaf12d1c49
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264756
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
diff --git a/src/gpu/text/GrTextBlob.cpp b/src/gpu/text/GrTextBlob.cpp
index 49a6b90..24d147c 100644
--- a/src/gpu/text/GrTextBlob.cpp
+++ b/src/gpu/text/GrTextBlob.cpp
@@ -127,9 +127,6 @@
GrDrawOpAtlas::BulkUseTokenUpdater* GrTextBlob::SubRun::bulkUseToken() { return &fBulkUseToken; }
void GrTextBlob::SubRun::setStrike(sk_sp<GrTextStrike> strike) { fStrike = std::move(strike); }
GrTextStrike* GrTextBlob::SubRun::strike() const { return fStrike.get(); }
-GrStrikeCache* GrTextBlob::SubRun::grStrikeCache() const {
- return fBlob->fStrikeCache;
-}
GrMaskFormat GrTextBlob::SubRun::maskFormat() const { return fMaskFormat; }
size_t GrTextBlob::SubRun::vertexStride() const {
return GetVertexStride(this->maskFormat(), this->hasW());
@@ -783,9 +780,11 @@
GrTextBlob::VertexRegenerator::VertexRegenerator(GrResourceProvider* resourceProvider,
GrTextBlob::SubRun* subRun,
GrDeferredUploadTarget* uploadTarget,
+ GrStrikeCache* grStrikeCache,
GrAtlasManager* fullAtlasManager)
: fResourceProvider(resourceProvider)
, fUploadTarget(uploadTarget)
+ , fGrStrikeCache(grStrikeCache)
, fFullAtlasManager(fullAtlasManager)
, fSubRun(subRun){
// Because the GrStrikeCache may evict the strike a blob depends on using for
@@ -814,7 +813,7 @@
if (fActions.regenStrike) {
// Take the glyphs from the old strike, and translate them a new strike.
- sk_sp<GrTextStrike> newStrike = strikeSpec.findOrCreateGrStrike(fSubRun->grStrikeCache());
+ sk_sp<GrTextStrike> newStrike = strikeSpec.findOrCreateGrStrike(fGrStrikeCache);
// Start this batch at the start of the subRun plus any glyphs that were previously
// processed.
@@ -841,9 +840,8 @@
if (!fFullAtlasManager->hasGlyph(glyph)) {
code = grStrike->addGlyphToAtlas(
- fResourceProvider, fUploadTarget, fSubRun->grStrikeCache(), fFullAtlasManager,
- glyph, fMetricsAndImages.get(), fSubRun->maskFormat(),
- fSubRun->needsTransform());
+ fResourceProvider, fUploadTarget, fGrStrikeCache, fFullAtlasManager, glyph,
+ fMetricsAndImages.get(), fSubRun->maskFormat(), fSubRun->needsTransform());
if (code != GrDrawOpAtlas::ErrorCode::kSucceeded) {
break;
}