Remove sample count from GrSurfaceDesc.
This leaves just width, height, and GrPixelConfig. Once we remove the
latter we can replace GrSurfaceDesc with SkISize.
Also remove unused GrRenderTarget::overrideResolveRect
Also remove GrSurfaceProxy::Renderable and use GrRenderable instead.
Change-Id: I652fe6169a22ca33d199b144ec6385286ac07b5a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228570
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
diff --git a/src/gpu/GrProxyProvider.cpp b/src/gpu/GrProxyProvider.cpp
index d31e3d8..956d55b 100644
--- a/src/gpu/GrProxyProvider.cpp
+++ b/src/gpu/GrProxyProvider.cpp
@@ -115,8 +115,8 @@
#if GR_TEST_UTILS
sk_sp<GrTextureProxy> GrProxyProvider::testingOnly_createInstantiatedProxy(
- const GrSurfaceDesc& desc, GrRenderable renderable, GrSurfaceOrigin origin,
- SkBackingFit fit, SkBudgeted budgeted, GrProtected isProtected) {
+ const GrSurfaceDesc& desc, GrRenderable renderable, int renderTargetSampleCnt,
+ GrSurfaceOrigin origin, SkBackingFit fit, SkBudgeted budgeted, GrProtected isProtected) {
GrContext* direct = fImageContext->priv().asDirectContext();
if (!direct) {
return nullptr;
@@ -126,11 +126,12 @@
sk_sp<GrTexture> tex;
if (SkBackingFit::kApprox == fit) {
- tex = resourceProvider->createApproxTexture(desc, renderable, isProtected,
+ tex = resourceProvider->createApproxTexture(desc, renderable, renderTargetSampleCnt,
+ isProtected,
GrResourceProvider::Flags::kNoPendingIO);
} else {
- tex = resourceProvider->createTexture(desc, renderable, budgeted, isProtected,
- GrResourceProvider::Flags::kNoPendingIO);
+ tex = resourceProvider->createTexture(desc, renderable, renderTargetSampleCnt, budgeted,
+ isProtected, GrResourceProvider::Flags::kNoPendingIO);
}
if (!tex) {
return nullptr;
@@ -248,21 +249,21 @@
GrSurfaceDesc desc;
desc.fWidth = srcImage->width();
desc.fHeight = srcImage->height();
- desc.fSampleCnt = sampleCnt;
desc.fConfig = config;
sk_sp<GrTextureProxy> proxy = this->createLazyProxy(
- [desc, renderable, budgeted, srcImage, fit](GrResourceProvider* resourceProvider) {
+ [desc, renderable, sampleCnt, budgeted, srcImage,
+ fit](GrResourceProvider* resourceProvider) {
SkPixmap pixMap;
SkAssertResult(srcImage->peekPixels(&pixMap));
GrMipLevel mipLevel = { pixMap.addr(), pixMap.rowBytes() };
return LazyInstantiationResult(resourceProvider->createTexture(
- desc, renderable, budgeted, fit, GrProtected::kNo, mipLevel,
+ desc, renderable, sampleCnt, budgeted, fit, GrProtected::kNo, mipLevel,
GrResourceProvider::Flags::kNoPendingIO));
},
- format, desc, renderable, kTopLeft_GrSurfaceOrigin, GrMipMapped::kNo, surfaceFlags, fit,
- budgeted, GrProtected::kNo);
+ format, desc, renderable, sampleCnt, kTopLeft_GrSurfaceOrigin, GrMipMapped::kNo,
+ surfaceFlags, fit, budgeted, GrProtected::kNo);
if (!proxy) {
return nullptr;
@@ -287,6 +288,7 @@
sk_sp<GrTextureProxy> GrProxyProvider::createMipMapProxy(const GrBackendFormat& format,
const GrSurfaceDesc& desc,
GrRenderable renderable,
+ int renderTargetSampleCnt,
GrSurfaceOrigin origin,
SkBudgeted budgeted,
GrProtected isProtected) {
@@ -296,8 +298,8 @@
return nullptr;
}
- return this->createProxy(format, desc, renderable, origin, GrMipMapped::kYes,
- SkBackingFit::kExact, budgeted, isProtected,
+ return this->createProxy(format, desc, renderable, renderTargetSampleCnt, origin,
+ GrMipMapped::kYes, SkBackingFit::kExact, budgeted, isProtected,
GrInternalSurfaceFlags::kNone);
}
@@ -388,10 +390,10 @@
}
return LazyInstantiationResult(resourceProvider->createTexture(
- desc, GrRenderable::kNo, SkBudgeted::kYes, GrProtected::kNo, texels.get(),
- mipLevelCount));
+ desc, GrRenderable::kNo, 1, SkBudgeted::kYes, GrProtected::kNo,
+ texels.get(), mipLevelCount));
},
- format, desc, GrRenderable::kNo, kTopLeft_GrSurfaceOrigin, GrMipMapped::kYes,
+ format, desc, GrRenderable::kNo, 1, kTopLeft_GrSurfaceOrigin, GrMipMapped::kYes,
SkBackingFit::kExact, SkBudgeted::kYes, GrProtected::kNo);
if (!proxy) {
@@ -437,6 +439,7 @@
sk_sp<GrTextureProxy> GrProxyProvider::createProxy(const GrBackendFormat& format,
const GrSurfaceDesc& desc,
GrRenderable renderable,
+ int renderTargetSampleCnt,
GrSurfaceOrigin origin,
GrMipMapped mipMapped,
SkBackingFit fit,
@@ -462,24 +465,20 @@
}
}
- if (!caps->validateSurfaceDesc(desc, renderable, mipMapped)) {
+ if (!caps->validateSurfaceDesc(desc, renderable, renderTargetSampleCnt, mipMapped)) {
return nullptr;
}
GrSurfaceDesc copyDesc = desc;
- if (renderable == GrRenderable::kYes) {
- copyDesc.fSampleCnt = caps->getRenderTargetSampleCount(desc.fSampleCnt, colorType, format);
- }
-
GrSwizzle texSwizzle = caps->getTextureSwizzle(format, colorType);
-
if (renderable == GrRenderable::kYes) {
+ renderTargetSampleCnt =
+ caps->getRenderTargetSampleCount(renderTargetSampleCnt, colorType, format);
// We know anything we instantiate later from this deferred path will be
// both texturable and renderable
GrSwizzle outSwizzle = caps->getOutputSwizzle(format, colorType);
- return sk_sp<GrTextureProxy>(new GrTextureRenderTargetProxy(*caps, format, copyDesc,
- origin, mipMapped, texSwizzle,
- outSwizzle, fit, budgeted,
- isProtected, surfaceFlags));
+ return sk_sp<GrTextureProxy>(new GrTextureRenderTargetProxy(
+ *caps, format, copyDesc, renderTargetSampleCnt, origin, mipMapped, texSwizzle,
+ outSwizzle, fit, budgeted, isProtected, surfaceFlags));
}
return sk_sp<GrTextureProxy>(new GrTextureProxy(format, copyDesc, origin, mipMapped, texSwizzle,
@@ -505,7 +504,7 @@
return LazyInstantiationResult(resourceProvider->createCompressedTexture(
width, height, compressionType, budgeted, data.get()));
},
- format, desc, GrRenderable::kNo, kTopLeft_GrSurfaceOrigin, GrMipMapped::kNo,
+ format, desc, GrRenderable::kNo, 1, kTopLeft_GrSurfaceOrigin, GrMipMapped::kNo,
SkBackingFit::kExact, SkBudgeted::kYes, GrProtected::kNo);
if (!proxy) {
@@ -737,12 +736,14 @@
const GrBackendFormat& format,
const GrSurfaceDesc& desc,
GrRenderable renderable,
+ int renderTargetSampleCnt,
GrSurfaceOrigin origin,
GrMipMapped mipMapped,
SkBackingFit fit,
SkBudgeted budgeted,
GrProtected isProtected) {
- return this->createLazyProxy(std::move(callback), format, desc, renderable, origin, mipMapped,
+ return this->createLazyProxy(std::move(callback), format, desc, renderable,
+ renderTargetSampleCnt, origin, mipMapped,
GrInternalSurfaceFlags::kNone, fit, budgeted, isProtected);
}
@@ -750,6 +751,7 @@
const GrBackendFormat& format,
const GrSurfaceDesc& desc,
GrRenderable renderable,
+ int renderTargetSampleCnt,
GrSurfaceOrigin origin,
GrMipMapped mipMapped,
GrInternalSurfaceFlags surfaceFlags,
@@ -759,14 +761,16 @@
// For non-ddl draws always make lazy proxy's single use.
LazyInstantiationType lazyType = this->renderingDirectly() ? LazyInstantiationType::kSingleUse
: LazyInstantiationType::kMultipleUse;
- return this->createLazyProxy(std::move(callback), format, desc, renderable, origin, mipMapped,
- surfaceFlags, fit, budgeted, isProtected, lazyType);
+ return this->createLazyProxy(std::move(callback), format, desc, renderable,
+ renderTargetSampleCnt, origin, mipMapped, surfaceFlags, fit,
+ budgeted, isProtected, lazyType);
}
sk_sp<GrTextureProxy> GrProxyProvider::createLazyProxy(LazyInstantiateCallback&& callback,
const GrBackendFormat& format,
const GrSurfaceDesc& desc,
GrRenderable renderable,
+ int renderTargetSampleCnt,
GrSurfaceOrigin origin,
GrMipMapped mipMapped,
GrInternalSurfaceFlags surfaceFlags,
@@ -791,8 +795,9 @@
return sk_sp<GrTextureProxy>(
renderable == GrRenderable::kYes
? new GrTextureRenderTargetProxy(std::move(callback), lazyType, format, desc,
- origin, mipMapped, texSwizzle, outSwizzle, fit,
- budgeted, isProtected, surfaceFlags)
+ renderTargetSampleCnt, origin, mipMapped,
+ texSwizzle, outSwizzle, fit, budgeted,
+ isProtected, surfaceFlags)
: new GrTextureProxy(std::move(callback), lazyType, format, desc, origin,
mipMapped, texSwizzle, fit, budgeted, isProtected,
surfaceFlags));
@@ -800,9 +805,9 @@
sk_sp<GrRenderTargetProxy> GrProxyProvider::createLazyRenderTargetProxy(
LazyInstantiateCallback&& callback, const GrBackendFormat& format,
- const GrSurfaceDesc& desc, GrSurfaceOrigin origin, GrInternalSurfaceFlags surfaceFlags,
- const TextureInfo* textureInfo, SkBackingFit fit, SkBudgeted budgeted,
- GrProtected isProtected, bool wrapsVkSecondaryCB) {
+ const GrSurfaceDesc& desc, int sampleCnt, GrSurfaceOrigin origin,
+ GrInternalSurfaceFlags surfaceFlags, const TextureInfo* textureInfo, SkBackingFit fit,
+ SkBudgeted budgeted, GrProtected isProtected, bool wrapsVkSecondaryCB) {
SkASSERT((desc.fWidth <= 0 && desc.fHeight <= 0) ||
(desc.fWidth > 0 && desc.fHeight > 0));
@@ -827,41 +832,43 @@
// actual VkImage to texture from.
SkASSERT(!wrapsVkSecondaryCB);
return sk_sp<GrRenderTargetProxy>(new GrTextureRenderTargetProxy(
- std::move(callback), lazyType, format, desc, origin, textureInfo->fMipMapped,
- texSwizzle, outSwizzle, fit, budgeted, isProtected, surfaceFlags));
+ std::move(callback), lazyType, format, desc, sampleCnt, origin,
+ textureInfo->fMipMapped, texSwizzle, outSwizzle, fit, budgeted, isProtected,
+ surfaceFlags));
}
GrRenderTargetProxy::WrapsVkSecondaryCB vkSCB =
wrapsVkSecondaryCB ? GrRenderTargetProxy::WrapsVkSecondaryCB::kYes
: GrRenderTargetProxy::WrapsVkSecondaryCB::kNo;
- return sk_sp<GrRenderTargetProxy>(
- new GrRenderTargetProxy(std::move(callback), lazyType, format, desc, origin, texSwizzle,
- outSwizzle, fit, budgeted, isProtected, surfaceFlags, vkSCB));
+ return sk_sp<GrRenderTargetProxy>(new GrRenderTargetProxy(
+ std::move(callback), lazyType, format, desc, sampleCnt, origin, texSwizzle, outSwizzle,
+ fit, budgeted, isProtected, surfaceFlags, vkSCB));
}
sk_sp<GrTextureProxy> GrProxyProvider::MakeFullyLazyProxy(
- LazyInstantiateCallback&& callback, const GrBackendFormat& format, Renderable renderable,
- GrProtected isProtected, GrSurfaceOrigin origin, GrPixelConfig config, const GrCaps& caps,
- int sampleCnt) {
+ LazyInstantiateCallback&& callback, const GrBackendFormat& format, GrRenderable renderable,
+ int renderTargetSampleCnt, GrProtected isProtected, GrSurfaceOrigin origin,
+ GrPixelConfig config, const GrCaps& caps) {
+ SkASSERT(renderTargetSampleCnt == 1 || renderable == GrRenderable::kYes);
SkASSERT(validate_backend_format_and_config(&caps, format, config));
GrSurfaceDesc desc;
GrInternalSurfaceFlags surfaceFlags = GrInternalSurfaceFlags::kNone;
desc.fWidth = -1;
desc.fHeight = -1;
desc.fConfig = config;
- desc.fSampleCnt = sampleCnt;
GrColorType colorType = GrPixelConfigToColorType(desc.fConfig);
GrSwizzle texSwizzle = caps.getTextureSwizzle(format, colorType);
GrSwizzle outSwizzle = caps.getOutputSwizzle(format, colorType);
return sk_sp<GrTextureProxy>(
- (Renderable::kYes == renderable)
+ (GrRenderable::kYes == renderable)
? new GrTextureRenderTargetProxy(
std::move(callback), LazyInstantiationType::kSingleUse, format, desc,
- origin, GrMipMapped::kNo, texSwizzle, outSwizzle,
- SkBackingFit::kApprox, SkBudgeted::kYes, isProtected, surfaceFlags)
+ renderTargetSampleCnt, origin, GrMipMapped::kNo, texSwizzle,
+ outSwizzle, SkBackingFit::kApprox, SkBudgeted::kYes, isProtected,
+ surfaceFlags)
: new GrTextureProxy(std::move(callback), LazyInstantiationType::kSingleUse,
format, desc, origin, GrMipMapped::kNo, texSwizzle,
SkBackingFit::kApprox, SkBudgeted::kYes, isProtected,