diff options
author | Greg Daniel <egdaniel@google.com> | 2018-02-14 21:10:02 +0000 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-02-14 21:10:15 +0000 |
commit | 7080a431a70c8323f127ee4ed76375d438c9a860 (patch) | |
tree | f52eb6ea80c25ce19417e1878ae65da74ee0e65a /src/gpu/GrSurfaceProxy.cpp | |
parent | cb25659eb152fe89efb7a44147853dda5e62b38d (diff) |
Revert "Revert "Revert "When creating emptyp MipMap proxies, don't instantiate them immediately."""
This reverts commit 95edb43251e8fcef4286c91d334c3259940a0095.
Reason for revert: breaking Ubuntu Linux GMs
Original change's description:
> Revert "Revert "When creating emptyp MipMap proxies, don't instantiate them immediately.""
>
> This reverts commit 0ee866dac78b60497b4c107995d3c2747309ef8b.
>
> Reason for revert: <INSERT REASONING HERE>
>
> Original change's description:
> > Revert "When creating emptyp MipMap proxies, don't instantiate them immediately."
> >
> > This reverts commit 8242c5c199f5d04e4209222b265f9e27f7c55fa7.
> >
> > Reason for revert: Hitting assert on intel bots on skbug6850overlay2.skp, SkASSERT(proxy->getUniqueKey().isValid()); in processInvalidProxyUniqueKey
> >
> > Original change's description:
> > > When creating emptyp MipMap proxies, don't instantiate them immediately.
> > >
> > > This chnages makes it match how we handle non mipped proxies where we
> > > don't actually instantiate them until we need to.
> > >
> > > Bug: skia:
> > > Change-Id: Id0c50eefce43ef1458a3ff0bb1881a817b045279
> > > Reviewed-on: https://skia-review.googlesource.com/106966
> > > Commit-Queue: Greg Daniel <egdaniel@google.com>
> > > Reviewed-by: Robert Phillips <robertphillips@google.com>
> >
> > TBR=egdaniel@google.com,robertphillips@google.com
> >
> > Change-Id: I1fa6165b69c5bbb1d6bb10abba33dcdb55a27ba3
> > No-Presubmit: true
> > No-Tree-Checks: true
> > No-Try: true
> > Bug: skia:
> > Reviewed-on: https://skia-review.googlesource.com/107263
> > Reviewed-by: Greg Daniel <egdaniel@google.com>
> > Commit-Queue: Greg Daniel <egdaniel@google.com>
>
> TBR=egdaniel@google.com,robertphillips@google.com
>
> Bug: skia:
> Change-Id: Ice34283f9ac183faed6e061d8162cf2226b18289
> Reviewed-on: https://skia-review.googlesource.com/107320
> Reviewed-by: Robert Phillips <robertphillips@google.com>
> Commit-Queue: Greg Daniel <egdaniel@google.com>
TBR=egdaniel@google.com,robertphillips@google.com
Change-Id: I53f166d508cc8ccd71e7473934a12a52f2eba7bb
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/107321
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Diffstat (limited to 'src/gpu/GrSurfaceProxy.cpp')
-rw-r--r-- | src/gpu/GrSurfaceProxy.cpp | 27 |
1 files changed, 4 insertions, 23 deletions
diff --git a/src/gpu/GrSurfaceProxy.cpp b/src/gpu/GrSurfaceProxy.cpp index 5b20ca5146..48d4be1c8a 100644 --- a/src/gpu/GrSurfaceProxy.cpp +++ b/src/gpu/GrSurfaceProxy.cpp @@ -117,6 +117,7 @@ sk_sp<GrSurface> GrSurfaceProxy::createSurfaceImpl( GrSurfaceFlags flags, GrMipMapped mipMapped) const { SkASSERT(GrSurfaceProxy::LazyState::kNot == this->lazyInstantiationState()); SkASSERT(!fTarget); + SkASSERT(GrMipMapped::kNo == mipMapped); GrSurfaceDesc desc; desc.fFlags = flags; if (fNeedsClear) { @@ -129,30 +130,10 @@ sk_sp<GrSurface> GrSurfaceProxy::createSurfaceImpl( desc.fSampleCnt = sampleCnt; sk_sp<GrSurface> surface; - if (GrMipMapped::kYes == mipMapped) { - SkASSERT(SkBackingFit::kExact == fFit); - - // SkMipMap doesn't include the base level in the level count so we have to add 1 - int mipCount = SkMipMap::ComputeLevelCount(desc.fWidth, desc.fHeight) + 1; - // We should have caught the case where mipCount == 1 when making the proxy and instead - // created a non-mipmapped proxy. - SkASSERT(mipCount > 1); - std::unique_ptr<GrMipLevel[]> texels(new GrMipLevel[mipCount]); - - // We don't want to upload any texel data - for (int i = 0; i < mipCount; i++) { - texels[i].fPixels = nullptr; - texels[i].fRowBytes = 0; - } - - surface = resourceProvider->createTexture(desc, fBudgeted, texels.get(), mipCount, - SkDestinationSurfaceColorMode::kLegacy); + if (SkBackingFit::kApprox == fFit) { + surface.reset(resourceProvider->createApproxTexture(desc, fFlags).release()); } else { - if (SkBackingFit::kApprox == fFit) { - surface = resourceProvider->createApproxTexture(desc, fFlags); - } else { - surface = resourceProvider->createTexture(desc, fBudgeted, fFlags); - } + surface.reset(resourceProvider->createTexture(desc, fBudgeted, fFlags).release()); } if (!surface) { return nullptr; |