Require explicit GrWrapCacheable specification in more places.
Make all wrapped resources be kUnbudgetedUncacheable except those
created by AHardwareBuffer image generators and as backings for promise
images.
Make all non-wrapped unbudgeted resources be kUnbudgetedUncacheable.
Update unit tests to mostly use GrWrapCacheable::kNo except where they
are testing the distinction.
Update unit tests for new expectations.
Bug: chromium:922851
Change-Id: I4d3bdaa161ffc76390f26334bcb7e2b47dd9319d
Reviewed-on: https://skia-review.googlesource.com/c/185004
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
diff --git a/src/gpu/mtl/GrMtlTextureRenderTarget.mm b/src/gpu/mtl/GrMtlTextureRenderTarget.mm
index 62fd2ab..7bd53e1 100644
--- a/src/gpu/mtl/GrMtlTextureRenderTarget.mm
+++ b/src/gpu/mtl/GrMtlTextureRenderTarget.mm
@@ -23,58 +23,43 @@
GrMtlTextureRenderTarget::GrMtlTextureRenderTarget(GrMtlGpu* gpu,
const GrSurfaceDesc& desc,
id<MTLTexture> renderTexture,
- GrMipMapsStatus mipMapsStatus)
+ GrMipMapsStatus mipMapsStatus,
+ GrWrapCacheable cacheable)
: GrSurface(gpu, desc)
, GrMtlTexture(gpu, desc, renderTexture, mipMapsStatus)
, GrMtlRenderTarget(gpu, desc, renderTexture) {
- this->registerWithCacheWrapped();
+ this->registerWithCacheWrapped(cacheable);
}
sk_sp<GrMtlTextureRenderTarget>
-GrMtlTextureRenderTarget::Make(GrMtlGpu* gpu,
- const GrSurfaceDesc& desc,
- id<MTLTexture> renderTexture,
- GrMipMapsStatus mipMapsStatus,
- SkBudgeted budgeted,
- bool isWrapped) {
- SkASSERT(nil != renderTexture);
- if (desc.fSampleCnt > 1) {
- return nullptr;
- }
- SkASSERT((MTLTextureUsageShaderRead | MTLTextureUsageRenderTarget) & renderTexture.usage);
- if (!isWrapped) {
- return sk_sp<GrMtlTextureRenderTarget>(new GrMtlTextureRenderTarget(gpu,
- budgeted,
- desc,
- renderTexture,
- mipMapsStatus));
- } else {
- return sk_sp<GrMtlTextureRenderTarget>(new GrMtlTextureRenderTarget(gpu,
- desc,
- renderTexture,
- mipMapsStatus));
- }
-}
-
-
-sk_sp<GrMtlTextureRenderTarget>
GrMtlTextureRenderTarget::CreateNewTextureRenderTarget(GrMtlGpu* gpu,
SkBudgeted budgeted,
const GrSurfaceDesc& desc,
MTLTextureDescriptor* texDesc,
GrMipMapsStatus mipMapsStatus) {
- id<MTLTexture> texture = [gpu->device() newTextureWithDescriptor:texDesc];
- return Make(gpu, desc, texture, mipMapsStatus, budgeted, false);
+ id<MTLTexture> renderTexture = [gpu->device() newTextureWithDescriptor:texDesc];
+ SkASSERT(nil != renderTexture);
+ if (desc.fSampleCnt > 1) {
+ return nullptr;
+ }
+ SkASSERT((MTLTextureUsageShaderRead | MTLTextureUsageRenderTarget) & renderTexture.usage);
+ return sk_sp<GrMtlTextureRenderTarget>(
+ new GrMtlTextureRenderTarget(gpu, budgeted, desc, renderTexture, mipMapsStatus));
}
-sk_sp<GrMtlTextureRenderTarget>
-GrMtlTextureRenderTarget::MakeWrappedTextureRenderTarget(GrMtlGpu* gpu,
- const GrSurfaceDesc& desc,
- id<MTLTexture> texture) {
-
- SkASSERT(nil != texture);
- GrMipMapsStatus mipMapsStatus = texture.mipmapLevelCount > 1 ? GrMipMapsStatus::kDirty
- : GrMipMapsStatus::kNotAllocated;
- return Make(gpu, desc, texture, mipMapsStatus, SkBudgeted::kNo, true);
+sk_sp<GrMtlTextureRenderTarget> GrMtlTextureRenderTarget::MakeWrappedTextureRenderTarget(
+ GrMtlGpu* gpu,
+ const GrSurfaceDesc& desc,
+ id<MTLTexture> renderTexture,
+ GrWrapCacheable cacheable) {
+ SkASSERT(nil != renderTexture);
+ GrMipMapsStatus mipMapsStatus = renderTexture.mipmapLevelCount > 1
+ ? GrMipMapsStatus::kDirty
+ : GrMipMapsStatus::kNotAllocated;
+ if (desc.fSampleCnt > 1) {
+ return nullptr;
+ }
+ SkASSERT((MTLTextureUsageShaderRead | MTLTextureUsageRenderTarget) & renderTexture.usage);
+ return sk_sp<GrMtlTextureRenderTarget>(
+ new GrMtlTextureRenderTarget(gpu, desc, renderTexture, mipMapsStatus, cacheable));
}
-