Propagate GrRenderable flag to GrCaps::getBackendFormatFromColorType
This makes calling GrCaps::getBackendFormatFromColorType equivalent to calling GrContext::defaultBackendFormat
Change-Id: Ic402245fa0502920c47c2a29aadc4e559abdc09b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230416
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
diff --git a/gm/asyncrescaleandread.cpp b/gm/asyncrescaleandread.cpp
index 723212a..2144185 100644
--- a/gm/asyncrescaleandread.cpp
+++ b/gm/asyncrescaleandread.cpp
@@ -98,8 +98,9 @@
}
auto* gr = surface->getCanvas()->getGrContext();
GrBackendTexture backendTextures[3];
- GrBackendFormat format =
- gr->priv().caps()->getBackendFormatFromColorType(GrColorType::kAlpha_8);
+ GrBackendFormat format = gr->defaultBackendFormat(kAlpha_8_SkColorType, GrRenderable::kNo);
+
+ // TODO: swap these over to GrContext::createBackendTexture
backendTextures[0] = gr->priv().getGpu()->createBackendTexture(
dstW, dstH, format, GrMipMapped::kNo, GrRenderable::kNo, yData.get(), dstW, nullptr,
GrProtected::kNo);
diff --git a/gm/wacky_yuv_formats.cpp b/gm/wacky_yuv_formats.cpp
index ad0497e..3b35334 100644
--- a/gm/wacky_yuv_formats.cpp
+++ b/gm/wacky_yuv_formats.cpp
@@ -935,7 +935,7 @@
currPixel += 2;
}
}
- *format = caps->getBackendFormatFromColorType(GrColorType::kRG_88);
+ *format = caps->getDefaultBackendFormat(GrColorType::kRG_88, GrRenderable::kNo);
}
static void make_RG_1616(const GrCaps* caps,
@@ -969,7 +969,7 @@
}
}
- *format = caps->getBackendFormatFromColorType(GrColorType::kRG_1616);
+ *format = caps->getDefaultBackendFormat(GrColorType::kRG_1616, GrRenderable::kNo);
}
static void make_RGBA_16(const GrCaps* caps,
@@ -1002,7 +1002,7 @@
}
}
- *format = caps->getBackendFormatFromColorType(GrColorType::kRGBA_16161616);
+ *format = caps->getDefaultBackendFormat(GrColorType::kRGBA_16161616, GrRenderable::kNo);
return;
}
@@ -1035,7 +1035,7 @@
}
}
- *format = caps->getBackendFormatFromColorType(GrColorType::kR_16);
+ *format = caps->getDefaultBackendFormat(GrColorType::kR_16, GrRenderable::kNo);
}
static GrBackendTexture create_yuva_texture(GrContext* context, const SkBitmap& bm,
diff --git a/src/gpu/GrCaps.cpp b/src/gpu/GrCaps.cpp
index b6fd67f..32714b8 100644
--- a/src/gpu/GrCaps.cpp
+++ b/src/gpu/GrCaps.cpp
@@ -422,3 +422,19 @@
return compatible;
}
#endif
+
+GrBackendFormat GrCaps::getDefaultBackendFormat(GrColorType grColorType,
+ GrRenderable renderable) const {
+ GrBackendFormat format = this->onGetDefaultBackendFormat(grColorType, renderable);
+ if (!this->isFormatTexturable(grColorType, format)) {
+ return {};
+ }
+
+ if (renderable == GrRenderable::kYes) {
+ if (!this->isFormatRenderable(grColorType, format)) {
+ return {};
+ }
+ }
+
+ return format;
+}
diff --git a/src/gpu/GrCaps.h b/src/gpu/GrCaps.h
index 492af04..91f0450 100644
--- a/src/gpu/GrCaps.h
+++ b/src/gpu/GrCaps.h
@@ -394,8 +394,7 @@
virtual GrColorType getYUVAColorTypeFromBackendFormat(const GrBackendFormat&) const = 0;
/** These are used when creating a new texture internally. */
- // TODO: also take a GrRenderable parameter.
- virtual GrBackendFormat getBackendFormatFromColorType(GrColorType ct) const = 0;
+ GrBackendFormat getDefaultBackendFormat(GrColorType, GrRenderable) const;
virtual GrBackendFormat getBackendFormatFromCompressionType(SkImage::CompressionType) const = 0;
@@ -529,6 +528,7 @@
virtual bool onSurfaceSupportsWritePixels(const GrSurface*) const = 0;
virtual bool onCanCopySurface(const GrSurfaceProxy* dst, const GrSurfaceProxy* src,
const SkIRect& srcRect, const SkIPoint& dstPoint) const = 0;
+ virtual GrBackendFormat onGetDefaultBackendFormat(GrColorType, GrRenderable) const = 0;
// Backends should implement this if they have any extra requirements for use of window
// rectangles for a specific GrBackendRenderTarget outside of basic support.
diff --git a/src/gpu/GrClipStackClip.cpp b/src/gpu/GrClipStackClip.cpp
index e5c92c5..c29e63e 100644
--- a/src/gpu/GrClipStackClip.cpp
+++ b/src/gpu/GrClipStackClip.cpp
@@ -470,6 +470,7 @@
reducedClip.numAnalyticFPs(), &key);
GrProxyProvider* proxyProvider = context->priv().proxyProvider();
+ const GrCaps* caps = context->priv().caps();
sk_sp<GrTextureProxy> proxy(proxyProvider->findOrCreateProxyByUniqueKey(
key, kTopLeft_GrSurfaceOrigin));
@@ -493,8 +494,8 @@
desc.fHeight = maskSpaceIBounds.height();
desc.fConfig = kAlpha_8_GrPixelConfig;
- GrBackendFormat format =
- context->priv().caps()->getBackendFormatFromColorType(GrColorType::kAlpha_8);
+ GrBackendFormat format = caps->getDefaultBackendFormat(GrColorType::kAlpha_8,
+ GrRenderable::kNo);
// MDB TODO: We're going to fill this proxy with an ASAP upload (which is out of order wrt
// to ops), so it can't have any pending IO.
diff --git a/src/gpu/GrDrawOpAtlas.cpp b/src/gpu/GrDrawOpAtlas.cpp
index 4747b14..e11d857 100644
--- a/src/gpu/GrDrawOpAtlas.cpp
+++ b/src/gpu/GrDrawOpAtlas.cpp
@@ -39,6 +39,10 @@
int height, int plotWidth, int plotHeight,
AllowMultitexturing allowMultitexturing,
GrDrawOpAtlas::EvictionFunc func, void* data) {
+ if (!format.isValid()) {
+ return nullptr;
+ }
+
std::unique_ptr<GrDrawOpAtlas> atlas(new GrDrawOpAtlas(proxyProvider, format, colorType, width,
height, plotWidth, plotHeight,
allowMultitexturing));
diff --git a/src/gpu/GrProxyProvider.cpp b/src/gpu/GrProxyProvider.cpp
index 48a24fe..e70917c 100644
--- a/src/gpu/GrProxyProvider.cpp
+++ b/src/gpu/GrProxyProvider.cpp
@@ -216,9 +216,9 @@
SkColorType ct = info.colorType();
GrColorType grCT = SkColorTypeToGrColorType(ct);
- GrBackendFormat format = this->caps()->getBackendFormatFromColorType(grCT);
+ GrBackendFormat format = this->caps()->getDefaultBackendFormat(grCT, renderable);
- if (!format.isValid() || !this->caps()->isFormatTexturable(grCT, format)) {
+ if (!format.isValid()) {
SkBitmap copy8888;
if (!copy8888.tryAllocPixels(info.makeColorType(kRGBA_8888_SkColorType)) ||
!srcImage->readPixels(copy8888.pixmap(), 0, 0)) {
@@ -228,7 +228,7 @@
srcImage = SkMakeImageFromRasterBitmap(copy8888, kNever_SkCopyPixelsMode);
ct = kRGBA_8888_SkColorType;
grCT = GrColorType::kRGBA_8888;
- format = this->caps()->getBackendFormatFromColorType(grCT);
+ format = this->caps()->getDefaultBackendFormat(grCT, renderable);
if (!format.isValid()) {
return nullptr;
}
@@ -337,14 +337,11 @@
SkBudgeted::kYes, SkBackingFit::kExact);
}
- GrColorType grColorType = SkColorTypeToGrColorType(bitmap.info().colorType());
- GrBackendFormat format = this->caps()->getBackendFormatFromColorType(grColorType);
- if (!format.isValid()) {
- return nullptr;
- }
GrSurfaceDesc desc = GrImageInfoToSurfaceDesc(bitmap.info());
- if (!this->caps()->isFormatTexturable(grColorType, format)) {
+ GrColorType grColorType = SkColorTypeToGrColorType(bitmap.info().colorType());
+ GrBackendFormat format = this->caps()->getDefaultBackendFormat(grColorType, GrRenderable::kNo);
+ if (!format.isValid()) {
SkBitmap copy8888;
if (!copy8888.tryAllocPixels(bitmap.info().makeColorType(kRGBA_8888_SkColorType)) ||
!bitmap.readPixels(copy8888.pixmap())) {
@@ -354,13 +351,12 @@
baseLevel = SkMakeImageFromRasterBitmap(copy8888, kNever_SkCopyPixelsMode);
desc.fConfig = kRGBA_8888_GrPixelConfig;
grColorType = GrColorType::kRGBA_8888;
- format = this->caps()->getBackendFormatFromColorType(grColorType);
+ format = this->caps()->getDefaultBackendFormat(grColorType, GrRenderable::kNo);
if (!format.isValid()) {
return nullptr;
}
}
-
SkPixmap pixmap;
SkAssertResult(baseLevel->peekPixels(&pixmap));
sk_sp<SkMipMap> mipmaps(SkMipMap::Build(pixmap, nullptr));
@@ -775,6 +771,10 @@
SkASSERT((desc.fWidth <= 0 && desc.fHeight <= 0) ||
(desc.fWidth > 0 && desc.fHeight > 0));
+ if (!format.isValid()) {
+ return nullptr;
+ }
+
if (desc.fWidth > this->caps()->maxTextureSize() ||
desc.fHeight > this->caps()->maxTextureSize()) {
return nullptr;
@@ -844,6 +844,10 @@
LazyInstantiateCallback&& callback, const GrBackendFormat& format, GrRenderable renderable,
int renderTargetSampleCnt, GrProtected isProtected, GrSurfaceOrigin origin,
GrPixelConfig config, const GrCaps& caps) {
+ if (!format.isValid()) {
+ return nullptr;
+ }
+
SkASSERT(renderTargetSampleCnt == 1 || renderable == GrRenderable::kYes);
SkASSERT(validate_backend_format_and_config(&caps, format, config));
GrSurfaceDesc desc;
diff --git a/src/gpu/GrRecordingContext.cpp b/src/gpu/GrRecordingContext.cpp
index 64f4a40..d3a550f 100644
--- a/src/gpu/GrRecordingContext.cpp
+++ b/src/gpu/GrRecordingContext.cpp
@@ -176,7 +176,7 @@
GrSurfaceOrigin origin,
SkBudgeted budgeted,
GrProtected isProtected) {
- auto format = this->caps()->getBackendFormatFromColorType(colorType);
+ auto format = this->caps()->getDefaultBackendFormat(colorType, GrRenderable::kNo);
if (!format.isValid()) {
return nullptr;
}
@@ -225,7 +225,7 @@
return nullptr;
}
- auto format = this->caps()->getBackendFormatFromColorType(colorType);
+ auto format = this->caps()->getDefaultBackendFormat(colorType, GrRenderable::kYes);
if (!format.isValid()) {
return nullptr;
}
@@ -409,19 +409,13 @@
GrColorType grColorType = SkColorTypeToGrColorType(skColorType);
- // TODO: pass the 'renderable' parameter into getBackendFormatFromColorType and change
- // the texturabilit and renderability tests below into asserts
- GrBackendFormat format = caps->getBackendFormatFromColorType(grColorType);
- if (!caps->isFormatTexturable(grColorType, format)) {
+ GrBackendFormat format = caps->getDefaultBackendFormat(grColorType, renderable);
+ if (!format.isValid()) {
return GrBackendFormat();
}
- if (renderable == GrRenderable::kYes) {
- if (!caps->isFormatRenderable(grColorType, format)) {
- return GrBackendFormat();
- }
- }
+ SkASSERT(caps->isFormatTexturable(grColorType, format));
+ SkASSERT(renderable == GrRenderable::kNo || caps->isFormatRenderable(grColorType, format));
return format;
}
-
diff --git a/src/gpu/GrRenderTargetContext.cpp b/src/gpu/GrRenderTargetContext.cpp
index 90f82b8..5905c72 100644
--- a/src/gpu/GrRenderTargetContext.cpp
+++ b/src/gpu/GrRenderTargetContext.cpp
@@ -1586,7 +1586,8 @@
auto backendFormatOfFinalContext = fRenderTargetProxy->backendFormat();
if (needsRescale) {
colorTypeOfFinalContext = dstCT;
- backendFormatOfFinalContext = this->caps()->getBackendFormatFromColorType(dstCT);
+ backendFormatOfFinalContext = this->caps()->getDefaultBackendFormat(dstCT,
+ GrRenderable::kYes);
}
auto readInfo = this->caps()->supportedReadPixelsColorType(colorTypeOfFinalContext,
backendFormatOfFinalContext, dstCT);
diff --git a/src/gpu/GrSoftwarePathRenderer.cpp b/src/gpu/GrSoftwarePathRenderer.cpp
index febf245..d43775e 100644
--- a/src/gpu/GrSoftwarePathRenderer.cpp
+++ b/src/gpu/GrSoftwarePathRenderer.cpp
@@ -175,14 +175,15 @@
SkBackingFit fit,
int width, int height) {
GrProxyProvider* proxyProvider = context->priv().proxyProvider();
+ const GrCaps* caps = context->priv().caps();
GrSurfaceDesc desc;
desc.fWidth = width;
desc.fHeight = height;
desc.fConfig = kAlpha_8_GrPixelConfig;
- const GrBackendFormat format =
- context->priv().caps()->getBackendFormatFromColorType(GrColorType::kAlpha_8);
+ const GrBackendFormat format = caps->getDefaultBackendFormat(GrColorType::kAlpha_8,
+ GrRenderable::kNo);
return proxyProvider->createProxy(format, desc, GrRenderable::kNo, 1, kTopLeft_GrSurfaceOrigin,
fit, SkBudgeted::kYes, GrProtected::kNo);
diff --git a/src/gpu/GrSurfaceContext.cpp b/src/gpu/GrSurfaceContext.cpp
index 0b6dd31..15dad7a 100644
--- a/src/gpu/GrSurfaceContext.cpp
+++ b/src/gpu/GrSurfaceContext.cpp
@@ -290,7 +290,7 @@
if (canvas2DFastPath) {
desc.fConfig = kRGBA_8888_GrPixelConfig;
colorType = GrColorType::kRGBA_8888;
- format = caps->getBackendFormatFromColorType(colorType);
+ format = caps->getDefaultBackendFormat(colorType, GrRenderable::kNo);
alphaType = kUnpremul_SkAlphaType;
} else {
desc.fConfig = dstProxy->config();
diff --git a/src/gpu/ccpr/GrCCAtlas.cpp b/src/gpu/ccpr/GrCCAtlas.cpp
index e32036d..c994998 100644
--- a/src/gpu/ccpr/GrCCAtlas.cpp
+++ b/src/gpu/ccpr/GrCCAtlas.cpp
@@ -76,7 +76,7 @@
break;
}
- const GrBackendFormat format = caps.getBackendFormatFromColorType(colorType);
+ auto format = caps.getDefaultBackendFormat(colorType, GrRenderable::kYes);
sk_sp<GrTextureProxy> proxy = GrProxyProvider::MakeFullyLazyProxy(
std::bind(callback, std::placeholders::_1, pixelConfig, sampleCount), format,
diff --git a/src/gpu/dawn/GrDawnCaps.cpp b/src/gpu/dawn/GrDawnCaps.cpp
index c9381bc..a7aaf91 100644
--- a/src/gpu/dawn/GrDawnCaps.cpp
+++ b/src/gpu/dawn/GrDawnCaps.cpp
@@ -112,7 +112,8 @@
return this->getRenderTargetSampleCount(requestedCount, config);
}
-GrBackendFormat GrDawnCaps::getBackendFormatFromColorType(GrColorType ct) const {
+GrBackendFormat GrDawnCaps::onGetDefaultBackendFormat(GrColorType ct,
+ GrRenderable renderable) const {
GrPixelConfig config = GrColorTypeToPixelConfig(ct);
if (config == kUnknown_GrPixelConfig) {
return GrBackendFormat();
diff --git a/src/gpu/dawn/GrDawnCaps.h b/src/gpu/dawn/GrDawnCaps.h
index f975990..b2c2f89 100644
--- a/src/gpu/dawn/GrDawnCaps.h
+++ b/src/gpu/dawn/GrDawnCaps.h
@@ -29,13 +29,6 @@
return true;
}
- bool onCanCopySurface(const GrSurfaceProxy* dst, const GrSurfaceProxy* src,
- const SkIRect& srcRect, const SkIPoint& dstPoint) const override {
- return true;
- }
-
- GrPixelConfig onGetConfigFromBackendFormat(const GrBackendFormat&, GrColorType) const override;
-
SupportedWrite supportedWritePixelsColorType(GrPixelConfig config,
GrColorType srcColorType) const override {
return {GrColorType::kUnknown, 1};
@@ -45,16 +38,6 @@
return SurfaceReadPixelsSupport::kSupported;
}
- SupportedRead onSupportedReadPixelsColorType(GrColorType srcColorType,
- const GrBackendFormat& backendFormat,
- GrColorType dstColorType) const override {
- return {GrSwizzle(), GrColorType::kUnknown, 0};
- }
-
- bool onSurfaceSupportsWritePixels(const GrSurface* surface) const override {
- return true;
- }
-
int getRenderTargetSampleCount(int requestedCount, GrColorType,
const GrBackendFormat&) const override;
@@ -71,8 +54,6 @@
return this->isConfigTexturable(config) ? 1 : 0;
}
- GrBackendFormat getBackendFormatFromColorType(GrColorType ct) const override;
-
GrBackendFormat getBackendFormatFromCompressionType(SkImage::CompressionType) const override;
bool canClearTextureOnCreation() const override;
@@ -81,9 +62,27 @@
GrSwizzle getOutputSwizzle(const GrBackendFormat&, GrColorType) const override;
+ GrColorType getYUVAColorTypeFromBackendFormat(const GrBackendFormat&) const override;
+
+private:
+ bool onSurfaceSupportsWritePixels(const GrSurface* surface) const override {
+ return true;
+ }
+ bool onCanCopySurface(const GrSurfaceProxy* dst, const GrSurfaceProxy* src,
+ const SkIRect& srcRect, const SkIPoint& dstPoint) const override {
+ return true;
+ }
+ GrBackendFormat onGetDefaultBackendFormat(GrColorType, GrRenderable) const override;
+
+ GrPixelConfig onGetConfigFromBackendFormat(const GrBackendFormat&, GrColorType) const override;
+
bool onAreColorTypeAndFormatCompatible(GrColorType, const GrBackendFormat&) const override;
- GrColorType getYUVAColorTypeFromBackendFormat(const GrBackendFormat&) const override;
+ SupportedRead onSupportedReadPixelsColorType(GrColorType srcColorType,
+ const GrBackendFormat& backendFormat,
+ GrColorType dstColorType) const override {
+ return { GrSwizzle(), GrColorType::kUnknown, 0 };
+ }
typedef GrCaps INHERITED;
};
diff --git a/src/gpu/gl/GrGLCaps.cpp b/src/gpu/gl/GrGLCaps.cpp
index d781865..49fb56f 100644
--- a/src/gpu/gl/GrGLCaps.cpp
+++ b/src/gpu/gl/GrGLCaps.cpp
@@ -4063,11 +4063,13 @@
SkUNREACHABLE;
}
-GrBackendFormat GrGLCaps::getBackendFormatFromColorType(GrColorType ct) const {
+GrBackendFormat GrGLCaps::onGetDefaultBackendFormat(GrColorType ct,
+ GrRenderable renderable) const {
auto format = this->getFormatFromColorType(ct);
if (format == GrGLFormat::kUnknown) {
return GrBackendFormat();
}
+ // TODO: plumb 'renderable' into getSizedInternalFormat (or, at least, make use of it)
return GrBackendFormat::MakeGL(this->getSizedInternalFormat(format), GR_GL_TEXTURE_2D);
}
diff --git a/src/gpu/gl/GrGLCaps.h b/src/gpu/gl/GrGLCaps.h
index f4fa5e1..c8540ed 100644
--- a/src/gpu/gl/GrGLCaps.h
+++ b/src/gpu/gl/GrGLCaps.h
@@ -451,7 +451,6 @@
GrColorType getYUVAColorTypeFromBackendFormat(const GrBackendFormat&) const override;
- GrBackendFormat getBackendFormatFromColorType(GrColorType ct) const override;
GrBackendFormat getBackendFormatFromCompressionType(SkImage::CompressionType) const override;
bool canClearTextureOnCreation() const override;
@@ -503,6 +502,7 @@
bool onSurfaceSupportsWritePixels(const GrSurface*) const override;
bool onCanCopySurface(const GrSurfaceProxy* dst, const GrSurfaceProxy* src,
const SkIRect& srcRect, const SkIPoint& dstPoint) const override;
+ GrBackendFormat onGetDefaultBackendFormat(GrColorType, GrRenderable) const override;
GrPixelConfig onGetConfigFromBackendFormat(const GrBackendFormat&, GrColorType) const override;
bool onAreColorTypeAndFormatCompatible(GrColorType, const GrBackendFormat&) const override;
diff --git a/src/gpu/mock/GrMockCaps.h b/src/gpu/mock/GrMockCaps.h
index 73f3611..0d43316 100644
--- a/src/gpu/mock/GrMockCaps.h
+++ b/src/gpu/mock/GrMockCaps.h
@@ -139,10 +139,6 @@
return *format.getMockColorType();
}
- GrBackendFormat getBackendFormatFromColorType(GrColorType ct) const override {
- return GrBackendFormat::MakeMock(ct);
- }
-
GrBackendFormat getBackendFormatFromCompressionType(SkImage::CompressionType) const override {
return {};
}
@@ -162,6 +158,9 @@
const SkIRect& srcRect, const SkIPoint& dstPoint) const override {
return true;
}
+ GrBackendFormat onGetDefaultBackendFormat(GrColorType ct, GrRenderable) const override {
+ return GrBackendFormat::MakeMock(ct);
+ }
GrPixelConfig onGetConfigFromBackendFormat(const GrBackendFormat& format,
GrColorType) const override {
diff --git a/src/gpu/mtl/GrMtlCaps.h b/src/gpu/mtl/GrMtlCaps.h
index f982c02..3e9f343 100644
--- a/src/gpu/mtl/GrMtlCaps.h
+++ b/src/gpu/mtl/GrMtlCaps.h
@@ -70,7 +70,6 @@
GrColorType getYUVAColorTypeFromBackendFormat(const GrBackendFormat&) const override;
- GrBackendFormat getBackendFormatFromColorType(GrColorType ct) const override;
GrBackendFormat getBackendFormatFromCompressionType(SkImage::CompressionType) const override;
bool canClearTextureOnCreation() const override { return true; }
@@ -91,6 +90,7 @@
bool onSurfaceSupportsWritePixels(const GrSurface*) const override;
bool onCanCopySurface(const GrSurfaceProxy* dst, const GrSurfaceProxy* src,
const SkIRect& srcRect, const SkIPoint& dstPoint) const override;
+ GrBackendFormat onGetDefaultBackendFormat(GrColorType, GrRenderable) const override;
GrPixelConfig onGetConfigFromBackendFormat(const GrBackendFormat&, GrColorType) const override;
bool onAreColorTypeAndFormatCompatible(GrColorType, const GrBackendFormat&) const override;
diff --git a/src/gpu/mtl/GrMtlCaps.mm b/src/gpu/mtl/GrMtlCaps.mm
index af94b4d..56ad7e8 100644
--- a/src/gpu/mtl/GrMtlCaps.mm
+++ b/src/gpu/mtl/GrMtlCaps.mm
@@ -754,7 +754,8 @@
SkUNREACHABLE;
}
-GrBackendFormat GrMtlCaps::getBackendFormatFromColorType(GrColorType ct) const {
+GrBackendFormat GrMtlCaps::onGetDefaultBackendFormat(GrColorType ct,
+ GrRenderable renderable) const {
GrPixelConfig config = GrColorTypeToPixelConfig(ct);
if (config == kUnknown_GrPixelConfig) {
return GrBackendFormat();
diff --git a/src/gpu/ops/GrLatticeOp.cpp b/src/gpu/ops/GrLatticeOp.cpp
index d53f8f9..4b9a09a 100644
--- a/src/gpu/ops/GrLatticeOp.cpp
+++ b/src/gpu/ops/GrLatticeOp.cpp
@@ -404,10 +404,11 @@
desc.fConfig = kRGBA_8888_GrPixelConfig;
desc.fWidth = random->nextRangeU(1, 1000);
desc.fHeight = random->nextRangeU(1, 1000);
- GrSurfaceOrigin origin =
- random->nextBool() ? kTopLeft_GrSurfaceOrigin : kBottomLeft_GrSurfaceOrigin;
+ GrSurfaceOrigin origin = random->nextBool() ? kTopLeft_GrSurfaceOrigin
+ : kBottomLeft_GrSurfaceOrigin;
const GrBackendFormat format =
- context->priv().caps()->getBackendFormatFromColorType(GrColorType::kRGBA_8888);
+ context->priv().caps()->getDefaultBackendFormat(GrColorType::kRGBA_8888,
+ GrRenderable::kNo);
auto proxy = context->priv().proxyProvider()->createProxy(format, desc, GrRenderable::kNo, 1,
origin, SkBackingFit::kExact,
SkBudgeted::kYes, GrProtected::kNo);
diff --git a/src/gpu/ops/GrSmallPathRenderer.cpp b/src/gpu/ops/GrSmallPathRenderer.cpp
index c9c3d08..f6a3705 100644
--- a/src/gpu/ops/GrSmallPathRenderer.cpp
+++ b/src/gpu/ops/GrSmallPathRenderer.cpp
@@ -874,9 +874,8 @@
SkASSERT(!args.fShape->isEmpty());
SkASSERT(args.fShape->hasUnstyledKey());
if (!fAtlas) {
- const GrBackendFormat format =
- args.fContext->priv().caps()->getBackendFormatFromColorType(
- GrColorType::kAlpha_8);
+ const GrBackendFormat format = args.fContext->priv().caps()->getDefaultBackendFormat(
+ GrColorType::kAlpha_8, GrRenderable::kNo);
fAtlas = GrDrawOpAtlas::Make(args.fContext->priv().proxyProvider(),
format,
GrColorType::kAlpha_8,
@@ -965,8 +964,8 @@
if (context->priv().contextID() != gTestStruct.fContextID) {
gTestStruct.fContextID = context->priv().contextID();
gTestStruct.reset();
- const GrBackendFormat format =
- context->priv().caps()->getBackendFormatFromColorType(GrColorType::kAlpha_8);
+ const GrBackendFormat format = context->priv().caps()->getDefaultBackendFormat(
+ GrColorType::kAlpha_8, GrRenderable::kNo);
gTestStruct.fAtlas = GrDrawOpAtlas::Make(context->priv().proxyProvider(),
format, GrColorType::kAlpha_8,
ATLAS_TEXTURE_WIDTH, ATLAS_TEXTURE_HEIGHT,
diff --git a/src/gpu/ops/GrTextureOp.cpp b/src/gpu/ops/GrTextureOp.cpp
index 8b7d8c1..e7bf602 100644
--- a/src/gpu/ops/GrTextureOp.cpp
+++ b/src/gpu/ops/GrTextureOp.cpp
@@ -688,9 +688,9 @@
if (mipMapped == GrMipMapped::kNo) {
fit = random->nextBool() ? SkBackingFit::kApprox : SkBackingFit::kExact;
}
-
const GrBackendFormat format =
- context->priv().caps()->getBackendFormatFromColorType(GrColorType::kRGBA_8888);
+ context->priv().caps()->getDefaultBackendFormat(GrColorType::kRGBA_8888,
+ GrRenderable::kNo);
GrProxyProvider* proxyProvider = context->priv().proxyProvider();
sk_sp<GrTextureProxy> proxy = proxyProvider->createProxy(
diff --git a/src/gpu/text/GrAtlasManager.cpp b/src/gpu/text/GrAtlasManager.cpp
index 94082ca..6ae06a4 100644
--- a/src/gpu/text/GrAtlasManager.cpp
+++ b/src/gpu/text/GrAtlasManager.cpp
@@ -166,7 +166,8 @@
SkISize atlasDimensions = fAtlasConfig.atlasDimensions(format);
SkISize plotDimensions = fAtlasConfig.plotDimensions(format);
- const GrBackendFormat format = fCaps->getBackendFormatFromColorType(grColorType);
+ const GrBackendFormat format = fCaps->getDefaultBackendFormat(grColorType,
+ GrRenderable::kNo);
fAtlases[index] = GrDrawOpAtlas::Make(
fProxyProvider, format, grColorType,
diff --git a/src/gpu/vk/GrVkCaps.cpp b/src/gpu/vk/GrVkCaps.cpp
index 3ee070b..563fb65 100644
--- a/src/gpu/vk/GrVkCaps.cpp
+++ b/src/gpu/vk/GrVkCaps.cpp
@@ -1116,7 +1116,8 @@
SkUNREACHABLE;
}
-GrBackendFormat GrVkCaps::getBackendFormatFromColorType(GrColorType ct) const {
+GrBackendFormat GrVkCaps::onGetDefaultBackendFormat(GrColorType ct,
+ GrRenderable renderable) const {
GrPixelConfig config = GrColorTypeToPixelConfig(ct);
if (config == kUnknown_GrPixelConfig) {
return GrBackendFormat();
diff --git a/src/gpu/vk/GrVkCaps.h b/src/gpu/vk/GrVkCaps.h
index af1bfd3..1b20196 100644
--- a/src/gpu/vk/GrVkCaps.h
+++ b/src/gpu/vk/GrVkCaps.h
@@ -165,7 +165,6 @@
GrColorType getYUVAColorTypeFromBackendFormat(const GrBackendFormat&) const override;
- GrBackendFormat getBackendFormatFromColorType(GrColorType ct) const override;
GrBackendFormat getBackendFormatFromCompressionType(SkImage::CompressionType) const override;
bool canClearTextureOnCreation() const override;
@@ -202,6 +201,7 @@
bool onSurfaceSupportsWritePixels(const GrSurface*) const override;
bool onCanCopySurface(const GrSurfaceProxy* dst, const GrSurfaceProxy* src,
const SkIRect& srcRect, const SkIPoint& dstPoint) const override;
+ GrBackendFormat onGetDefaultBackendFormat(GrColorType, GrRenderable) const override;
GrPixelConfig onGetConfigFromBackendFormat(const GrBackendFormat&, GrColorType) const override;
bool onAreColorTypeAndFormatCompatible(GrColorType, const GrBackendFormat&) const override;
diff --git a/tests/DeferredDisplayListTest.cpp b/tests/DeferredDisplayListTest.cpp
index 72e423f..c559de4 100644
--- a/tests/DeferredDisplayListTest.cpp
+++ b/tests/DeferredDisplayListTest.cpp
@@ -150,9 +150,8 @@
SkImageInfo ii = SkImageInfo::Make(fWidth, fHeight, fColorType,
kPremul_SkAlphaType, fColorSpace);
- const GrCaps* caps = context->priv().caps();
- GrBackendFormat backendFormat =
- caps->getBackendFormatFromColorType(SkColorTypeToGrColorType(fColorType));
+ GrBackendFormat backendFormat = context->defaultBackendFormat(fColorType,
+ GrRenderable::kYes);
if (!backendFormat.isValid()) {
return SkSurfaceCharacterization();
}
@@ -764,8 +763,9 @@
REPORTER_ASSERT(reporter, !recorder.getCanvas());
REPORTER_ASSERT(reporter, !recorder.detach());
- const GrCaps* caps = context->priv().caps();
- GrBackendFormat format = caps->getBackendFormatFromColorType(GrColorType::kRGBA_8888);
+ GrBackendFormat format = context->defaultBackendFormat(kRGBA_8888_SkColorType,
+ GrRenderable::kNo);
+ SkASSERT(format.isValid());
sk_sp<SkImage> image = recorder.makePromiseTexture(
format, 32, 32, GrMipMapped::kNo,
@@ -850,8 +850,9 @@
{
SkDeferredDisplayListRecorder recorder(characterization);
- const GrCaps* caps = context->priv().caps();
- GrBackendFormat format = caps->getBackendFormatFromColorType(GrColorType::kRGBA_8888);
+ GrBackendFormat format = context->defaultBackendFormat(kRGBA_8888_SkColorType,
+ GrRenderable::kNo);
+ SkASSERT(format.isValid());
sk_sp<SkImage> promiseImage = recorder.makePromiseTexture(
format, 32, 32, GrMipMapped::kNo,
diff --git a/tests/DetermineDomainModeTest.cpp b/tests/DetermineDomainModeTest.cpp
index b01f1b4..9a732c2 100644
--- a/tests/DetermineDomainModeTest.cpp
+++ b/tests/DetermineDomainModeTest.cpp
@@ -125,6 +125,8 @@
bool isExact,
RectInfo* rect) {
GrProxyProvider* proxyProvider = ctx->priv().proxyProvider();
+ const GrCaps* caps = ctx->priv().caps();
+
int size = isPowerOfTwo ? 128 : 100;
SkBackingFit fit = isExact ? SkBackingFit::kExact : SkBackingFit::kApprox;
@@ -133,8 +135,8 @@
desc.fHeight = size;
desc.fConfig = kRGBA_8888_GrPixelConfig;
- GrBackendFormat format =
- ctx->priv().caps()->getBackendFormatFromColorType(GrColorType::kRGBA_8888);
+ GrBackendFormat format = caps->getDefaultBackendFormat(GrColorType::kRGBA_8888,
+ GrRenderable::kNo);
static const char* name = "proxy";
diff --git a/tests/DrawOpAtlasTest.cpp b/tests/DrawOpAtlasTest.cpp
index 45deed5..c7245ce 100644
--- a/tests/DrawOpAtlasTest.cpp
+++ b/tests/DrawOpAtlasTest.cpp
@@ -134,12 +134,13 @@
auto proxyProvider = context->priv().proxyProvider();
auto resourceProvider = context->priv().resourceProvider();
auto drawingManager = context->priv().drawingManager();
+ const GrCaps* caps = context->priv().caps();
GrOnFlushResourceProvider onFlushResourceProvider(drawingManager);
TestingUploadTarget uploadTarget;
- GrBackendFormat format =
- context->priv().caps()->getBackendFormatFromColorType(GrColorType::kAlpha_8);
+ GrBackendFormat format = caps->getDefaultBackendFormat(GrColorType::kAlpha_8,
+ GrRenderable::kNo);
std::unique_ptr<GrDrawOpAtlas> atlas = GrDrawOpAtlas::Make(
proxyProvider,
diff --git a/tests/GLProgramsTest.cpp b/tests/GLProgramsTest.cpp
index bbe2962..ef25d7f0 100644
--- a/tests/GLProgramsTest.cpp
+++ b/tests/GLProgramsTest.cpp
@@ -149,7 +149,7 @@
: kBottomLeft_GrSurfaceOrigin;
GrColorType ct = GrColorType::kRGBA_8888;
- const GrBackendFormat format = caps->getBackendFormatFromColorType(ct);
+ const GrBackendFormat format = caps->getDefaultBackendFormat(ct, GrRenderable::kYes);
int sampleCnt = random->nextBool() ? caps->getRenderTargetSampleCount(2, ct, format) : 1;
// Above could be 0 if msaa isn't supported.
@@ -272,7 +272,8 @@
dummyDesc.fHeight = 18;
dummyDesc.fConfig = kRGBA_8888_GrPixelConfig;
const GrBackendFormat format =
- context->priv().caps()->getBackendFormatFromColorType(GrColorType::kRGBA_8888);
+ context->priv().caps()->getDefaultBackendFormat(GrColorType::kRGBA_8888,
+ GrRenderable::kYes);
proxies[0] = proxyProvider->createProxy(format, dummyDesc, GrRenderable::kYes, 1,
kBottomLeft_GrSurfaceOrigin, mipMapped,
SkBackingFit::kExact, SkBudgeted::kNo,
@@ -284,7 +285,8 @@
dummyDesc.fHeight = 22;
dummyDesc.fConfig = kAlpha_8_GrPixelConfig;
const GrBackendFormat format =
- context->priv().caps()->getBackendFormatFromColorType(GrColorType::kAlpha_8);
+ context->priv().caps()->getDefaultBackendFormat(GrColorType::kAlpha_8,
+ GrRenderable::kNo);
proxies[1] = proxyProvider->createProxy(format, dummyDesc, GrRenderable::kNo, 1,
kTopLeft_GrSurfaceOrigin, mipMapped,
SkBackingFit::kExact, SkBudgeted::kNo,
diff --git a/tests/GrSurfaceTest.cpp b/tests/GrSurfaceTest.cpp
index 47e5b13..c3d1685 100644
--- a/tests/GrSurfaceTest.cpp
+++ b/tests/GrSurfaceTest.cpp
@@ -149,7 +149,8 @@
"config:%d, tex:%d, isConfigTexturable:%d", config, SkToBool(tex), ict);
GrColorType colorType = GrPixelConfigToColorType(config);
- const GrBackendFormat format = caps->getBackendFormatFromColorType(colorType);
+ const GrBackendFormat format = caps->getDefaultBackendFormat(colorType,
+ GrRenderable::kNo);
if (!format.isValid()) {
continue;
}
diff --git a/tests/GrTestingBackendTextureUploadTest.cpp b/tests/GrTestingBackendTextureUploadTest.cpp
index f47bb94..cf0ac31 100644
--- a/tests/GrTestingBackendTextureUploadTest.cpp
+++ b/tests/GrTestingBackendTextureUploadTest.cpp
@@ -29,8 +29,8 @@
GrColorType grCT = SkColorTypeToGrColorType(ct);
- GrBackendFormat backendFormat = caps->getBackendFormatFromColorType(grCT);
- if (!caps->isFormatTexturable(grCT, backendFormat)) {
+ GrBackendFormat backendFormat = context->defaultBackendFormat(ct, renderable);
+ if (!backendFormat.isValid()) {
return;
}
diff --git a/tests/LazyProxyTest.cpp b/tests/LazyProxyTest.cpp
index d051fc5..a94b880 100644
--- a/tests/LazyProxyTest.cpp
+++ b/tests/LazyProxyTest.cpp
@@ -82,7 +82,8 @@
LazyProxyTest* test, bool nullTexture)
: GrDrawOp(ClassID()), fTest(test) {
const GrBackendFormat format =
- ctx->priv().caps()->getBackendFormatFromColorType(GrColorType::kBGR_565);
+ ctx->priv().caps()->getDefaultBackendFormat(GrColorType::kBGR_565,
+ GrRenderable::kNo);
fProxy = GrProxyProvider::MakeFullyLazyProxy(
[this, nullTexture](
GrResourceProvider* rp) -> GrSurfaceProxy::LazyInstantiationResult {
@@ -131,7 +132,8 @@
, fTest(test)
, fAtlas(atlas) {
const GrBackendFormat format =
- ctx->priv().caps()->getBackendFormatFromColorType(GrColorType::kAlpha_F16);
+ ctx->priv().caps()->getDefaultBackendFormat(GrColorType::kAlpha_F16,
+ GrRenderable::kYes);
fLazyProxy = GrProxyProvider::MakeFullyLazyProxy(
[this](GrResourceProvider* rp) -> GrSurfaceProxy::LazyInstantiationResult {
REPORTER_ASSERT(fTest->fReporter, !fTest->fHasClipTexture);
@@ -225,14 +227,15 @@
GrMockOptions mockOptions;
sk_sp<GrContext> ctx = GrContext::MakeMock(&mockOptions, GrContextOptions());
auto proxyProvider = ctx->priv().proxyProvider();
+ const GrCaps* caps = ctx->priv().caps();
GrSurfaceDesc desc;
desc.fWidth = kSize;
desc.fHeight = kSize;
desc.fConfig = kRGBA_8888_GrPixelConfig;
- GrBackendFormat format =
- ctx->priv().caps()->getBackendFormatFromColorType(GrColorType::kRGBA_8888);
+ GrBackendFormat format = caps->getDefaultBackendFormat(GrColorType::kRGBA_8888,
+ GrRenderable::kNo);
using LazyInstantiationType = GrSurfaceProxy::LazyInstantiationType;
using LazyInstantiationResult = GrSurfaceProxy::LazyInstantiationResult;
@@ -322,7 +325,8 @@
desc.fHeight = kSize;
desc.fConfig = kRGBA_8888_GrPixelConfig;
GrBackendFormat format =
- ctx->priv().caps()->getBackendFormatFromColorType(GrColorType::kRGBA_8888);
+ ctx->priv().caps()->getDefaultBackendFormat(GrColorType::kRGBA_8888,
+ GrRenderable::kNo);
fLazyProxy = proxyProvider->createLazyProxy(
[testExecuteValue, shouldFailInstantiation,
@@ -435,7 +439,8 @@
GrProxyProvider* proxyProvider = ctx->priv().proxyProvider();
GrBackendFormat format =
- ctx->priv().caps()->getBackendFormatFromColorType(GrColorType::kRGBA_8888);
+ ctx->priv().caps()->getDefaultBackendFormat(GrColorType::kRGBA_8888,
+ GrRenderable::kNo);
using LazyType = GrSurfaceProxy::LazyInstantiationType;
for (auto lazyType : {LazyType::kSingleUse, LazyType::kMultipleUse, LazyType::kDeinstantiate}) {
diff --git a/tests/OnFlushCallbackTest.cpp b/tests/OnFlushCallbackTest.cpp
index 8502724..d531054 100644
--- a/tests/OnFlushCallbackTest.cpp
+++ b/tests/OnFlushCallbackTest.cpp
@@ -301,7 +301,8 @@
return fAtlasProxy;
}
- const GrBackendFormat format = caps->getBackendFormatFromColorType(GrColorType::kRGBA_8888);
+ const GrBackendFormat format = caps->getDefaultBackendFormat(GrColorType::kRGBA_8888,
+ GrRenderable::kYes);
fAtlasProxy = GrProxyProvider::MakeFullyLazyProxy(
[](GrResourceProvider* resourceProvider)
diff --git a/tests/OpChainTest.cpp b/tests/OpChainTest.cpp
index f650149..b078986 100644
--- a/tests/OpChainTest.cpp
+++ b/tests/OpChainTest.cpp
@@ -168,7 +168,8 @@
desc.fHeight = 1;
const GrBackendFormat format =
- context->priv().caps()->getBackendFormatFromColorType(GrColorType::kRGBA_8888);
+ context->priv().caps()->getDefaultBackendFormat(GrColorType::kRGBA_8888,
+ GrRenderable::kYes);
auto proxy = context->priv().proxyProvider()->createProxy(
format, desc, GrRenderable::kYes, 1, kTopLeft_GrSurfaceOrigin, GrMipMapped::kNo,
diff --git a/tests/ProcessorTest.cpp b/tests/ProcessorTest.cpp
index 15ae0a5..260aad6 100644
--- a/tests/ProcessorTest.cpp
+++ b/tests/ProcessorTest.cpp
@@ -169,7 +169,8 @@
desc.fConfig = kRGBA_8888_GrPixelConfig;
const GrBackendFormat format =
- context->priv().caps()->getBackendFormatFromColorType(GrColorType::kRGBA_8888);
+ context->priv().caps()->getDefaultBackendFormat(GrColorType::kRGBA_8888,
+ GrRenderable::kNo);
for (bool makeClone : {false, true}) {
for (int parentCnt = 0; parentCnt < 2; parentCnt++) {
diff --git a/tests/PromiseImageTest.cpp b/tests/PromiseImageTest.cpp
index 4ee3db6..12f01a3 100644
--- a/tests/PromiseImageTest.cpp
+++ b/tests/PromiseImageTest.cpp
@@ -242,10 +242,11 @@
GrContext* ctx = ctxInfo.grContext();
GrGpu* gpu = ctx->priv().getGpu();
- const GrCaps* caps = ctx->priv().caps();
- GrBackendFormat gray8Format = caps->getBackendFormatFromColorType(GrColorType::kGray_8);
- GrBackendFormat alpha8Format = caps->getBackendFormatFromColorType(GrColorType::kAlpha_8);
+ GrBackendFormat gray8Format = ctx->defaultBackendFormat(kGray_8_SkColorType,
+ GrRenderable::kNo);
+ GrBackendFormat alpha8Format = ctx->defaultBackendFormat(kAlpha_8_SkColorType,
+ GrRenderable::kNo);
if (gray8Format != alpha8Format) {
// kGray_8 and kAlpha_8 won't share the same backend texture
return;
diff --git a/tests/ProxyConversionTest.cpp b/tests/ProxyConversionTest.cpp
index 2bbe164..9d1af4f 100644
--- a/tests/ProxyConversionTest.cpp
+++ b/tests/ProxyConversionTest.cpp
@@ -124,16 +124,18 @@
// Test converting between RenderTargetProxies and TextureProxies for deferred
// Proxies
DEF_GPUTEST_FOR_RENDERING_CONTEXTS(DefferredProxyConversionTest, reporter, ctxInfo) {
- GrProxyProvider* proxyProvider = ctxInfo.grContext()->priv().proxyProvider();
+ GrContext* context = ctxInfo.grContext();
+ GrProxyProvider* proxyProvider = context->priv().proxyProvider();
+ const GrCaps* caps = context->priv().caps();
GrSurfaceDesc desc;
desc.fWidth = 64;
desc.fHeight = 64;
desc.fConfig = kRGBA_8888_GrPixelConfig;
- const GrBackendFormat format =
- ctxInfo.grContext()->priv().caps()->getBackendFormatFromColorType(
- GrColorType::kRGBA_8888);
+ const GrBackendFormat format = caps->getDefaultBackendFormat(GrColorType::kRGBA_8888,
+ GrRenderable::kYes);
+
{
sk_sp<GrTextureProxy> proxy = proxyProvider->createProxy(
format, desc, GrRenderable::kYes, 1, kBottomLeft_GrSurfaceOrigin,
diff --git a/tests/ProxyRefTest.cpp b/tests/ProxyRefTest.cpp
index 8123864..4dd831d 100644
--- a/tests/ProxyRefTest.cpp
+++ b/tests/ProxyRefTest.cpp
@@ -34,19 +34,25 @@
REPORTER_ASSERT(reporter, actualBackingRefs == expectedBackingRefs);
}
-static sk_sp<GrTextureProxy> make_deferred(GrProxyProvider* proxyProvider, const GrCaps* caps) {
+static sk_sp<GrTextureProxy> make_deferred(GrContext* context) {
+ GrProxyProvider* proxyProvider = context->priv().proxyProvider();
+ const GrCaps* caps = context->priv().caps();
+
GrSurfaceDesc desc;
desc.fWidth = kWidthHeight;
desc.fHeight = kWidthHeight;
desc.fConfig = kRGBA_8888_GrPixelConfig;
- const GrBackendFormat format = caps->getBackendFormatFromColorType(GrColorType::kRGBA_8888);
+ const GrBackendFormat format = caps->getDefaultBackendFormat(GrColorType::kRGBA_8888,
+ GrRenderable::kYes);
return proxyProvider->createProxy(format, desc, GrRenderable::kYes, 1,
kBottomLeft_GrSurfaceOrigin, SkBackingFit::kApprox,
SkBudgeted::kYes, GrProtected::kNo);
}
-static sk_sp<GrTextureProxy> make_wrapped(GrProxyProvider* proxyProvider, const GrCaps* caps) {
+static sk_sp<GrTextureProxy> make_wrapped(GrContext* context) {
+ GrProxyProvider* proxyProvider = context->priv().proxyProvider();
+
GrSurfaceDesc desc;
desc.fWidth = kWidthHeight;
desc.fHeight = kWidthHeight;
@@ -58,14 +64,12 @@
}
DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ProxyRefTest, reporter, ctxInfo) {
- GrProxyProvider* proxyProvider = ctxInfo.grContext()->priv().proxyProvider();
GrResourceProvider* resourceProvider = ctxInfo.grContext()->priv().resourceProvider();
- const GrCaps* caps = ctxInfo.grContext()->priv().caps();
for (auto make : { make_deferred, make_wrapped }) {
// Pending IO ref
{
- sk_sp<GrTextureProxy> proxy((*make)(proxyProvider, caps));
+ sk_sp<GrTextureProxy> proxy((*make)(ctxInfo.grContext()));
if (proxy.get()) {
GrProxyPendingIO pendingIO(proxy.get());
@@ -82,7 +86,7 @@
// Multiple normal refs
{
- sk_sp<GrTextureProxy> proxy((*make)(proxyProvider, caps));
+ sk_sp<GrTextureProxy> proxy((*make)(ctxInfo.grContext()));
if (proxy.get()) {
proxy->ref();
proxy->ref();
@@ -103,7 +107,7 @@
// Continue using (reffing) proxy after instantiation
{
- sk_sp<GrTextureProxy> proxy((*make)(proxyProvider, caps));
+ sk_sp<GrTextureProxy> proxy((*make)(ctxInfo.grContext()));
if (proxy.get()) {
proxy->ref();
diff --git a/tests/ProxyTest.cpp b/tests/ProxyTest.cpp
index 2cc5e97..de2ed87 100644
--- a/tests/ProxyTest.cpp
+++ b/tests/ProxyTest.cpp
@@ -127,7 +127,7 @@
desc.fHeight = widthHeight;
desc.fConfig = config;
- const GrBackendFormat format = caps.getBackendFormatFromColorType(ct);
+ auto format = caps.getDefaultBackendFormat(ct, GrRenderable::kYes);
if (!format.isValid()) {
continue;
}
@@ -257,7 +257,7 @@
// Test wrapping FBO 0 (with made up properties). This tests sample count and the
// special case where FBO 0 doesn't support window rectangles.
if (GrBackendApi::kOpenGL == ctxInfo.backend()) {
- GrBackendFormat beFormat = caps.getBackendFormatFromColorType(grColorType);
+ auto beFormat = caps.getDefaultBackendFormat(grColorType, GrRenderable::kYes);
GrGLFramebufferInfo fboInfo;
fboInfo.fFBOID = 0;
SkASSERT(beFormat.getGLFormat());
@@ -366,7 +366,8 @@
}
DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ZeroSizedProxyTest, reporter, ctxInfo) {
- GrProxyProvider* provider = ctxInfo.grContext()->priv().proxyProvider();
+ GrContext* context = ctxInfo.grContext();
+ GrProxyProvider* provider = context->priv().proxyProvider();
for (auto renderable : {GrRenderable::kNo, GrRenderable::kYes}) {
for (auto fit : { SkBackingFit::kExact, SkBackingFit::kApprox }) {
@@ -382,8 +383,9 @@
desc.fConfig = kRGBA_8888_GrPixelConfig;
const GrBackendFormat format =
- ctxInfo.grContext()->priv().caps()->getBackendFormatFromColorType(
- GrColorType::kRGBA_8888);
+ context->priv().caps()->getDefaultBackendFormat(
+ GrColorType::kRGBA_8888,
+ renderable);
sk_sp<GrTextureProxy> proxy = provider->createProxy(
format, desc, renderable, 1, kBottomLeft_GrSurfaceOrigin, fit,
diff --git a/tests/ResourceAllocatorTest.cpp b/tests/ResourceAllocatorTest.cpp
index 9ee9212..ce257b5 100644
--- a/tests/ResourceAllocatorTest.cpp
+++ b/tests/ResourceAllocatorTest.cpp
@@ -41,7 +41,7 @@
desc.fHeight = p.fSize;
desc.fConfig = config;
- const GrBackendFormat format = caps->getBackendFormatFromColorType(p.fColorType);
+ const GrBackendFormat format = caps->getDefaultBackendFormat(p.fColorType, p.fRenderable);
return proxyProvider->createProxy(format, desc, p.fRenderable, p.fSampleCnt, p.fOrigin, p.fFit,
p.fBudgeted, GrProtected::kNo);
@@ -292,7 +292,7 @@
}
return GrSurfaceProxy::LazyInstantiationResult(std::move(texture));
};
- const GrBackendFormat format = caps->getBackendFormatFromColorType(p.fColorType);
+ const GrBackendFormat format = caps->getDefaultBackendFormat(p.fColorType, p.fRenderable);
auto lazyType = deinstantiate ? GrSurfaceProxy::LazyInstantiationType ::kDeinstantiate
: GrSurfaceProxy::LazyInstantiationType ::kSingleUse;
GrInternalSurfaceFlags flags = GrInternalSurfaceFlags::kNone;
diff --git a/tests/ResourceCacheTest.cpp b/tests/ResourceCacheTest.cpp
index 2cef6e9..561f495 100644
--- a/tests/ResourceCacheTest.cpp
+++ b/tests/ResourceCacheTest.cpp
@@ -124,7 +124,7 @@
GrResourceProvider* resourceProvider = context->priv().resourceProvider();
GrColorType grColorType = GrColorType::kRGBA_8888;
- GrBackendFormat format = caps->getBackendFormatFromColorType(grColorType);
+ GrBackendFormat format = caps->getDefaultBackendFormat(grColorType, GrRenderable::kYes);
sk_sp<GrRenderTarget> smallRT0 = create_RT_with_SB(resourceProvider, 4, 1, SkBudgeted::kYes);
REPORTER_ASSERT(reporter, smallRT0);
@@ -1623,17 +1623,20 @@
GrResourceProvider::Flags::kNoPendingIO);
}
-static sk_sp<GrTextureProxy> make_mipmap_proxy(GrProxyProvider* proxyProvider,
- const GrCaps* caps,
+static sk_sp<GrTextureProxy> make_mipmap_proxy(GrContext * context,
GrRenderable renderable,
int width, int height,
int sampleCnt) {
+ GrProxyProvider* proxyProvider = context->priv().proxyProvider();
+ const GrCaps* caps = context->priv().caps();
+
GrSurfaceDesc desc;
desc.fWidth = width;
desc.fHeight = height;
desc.fConfig = kRGBA_8888_GrPixelConfig;
- const GrBackendFormat format = caps->getBackendFormatFromColorType(GrColorType::kRGBA_8888);
+ const GrBackendFormat format = caps->getDefaultBackendFormat(GrColorType::kRGBA_8888,
+ GrRenderable::kNo);
auto origin = renderable == GrRenderable::kYes ? kBottomLeft_GrSurfaceOrigin
: kTopLeft_GrSurfaceOrigin;
@@ -1645,8 +1648,8 @@
// Texture-only, both-RT-and-Texture and MIPmapped
DEF_GPUTEST_FOR_RENDERING_CONTEXTS(GPUMemorySize, reporter, ctxInfo) {
GrContext* context = ctxInfo.grContext();
- GrProxyProvider* proxyProvider = context->priv().proxyProvider();
GrResourceProvider* resourceProvider = context->priv().resourceProvider();
+ const GrCaps* caps = context->priv().caps();
static const int kSize = 64;
@@ -1658,8 +1661,7 @@
size_t size = tex->gpuMemorySize();
REPORTER_ASSERT(reporter, kSize*kSize*4 == size);
- size_t sampleCount = (size_t)context->priv().caps()->getRenderTargetSampleCount(
- 4, kRGBA_8888_GrPixelConfig);
+ size_t sampleCount = (size_t)caps->getRenderTargetSampleCount(4, kRGBA_8888_GrPixelConfig);
if (sampleCount >= 4) {
tex = make_normal_texture(resourceProvider, GrRenderable::kYes, kSize, kSize,
sampleCount);
@@ -1675,21 +1677,17 @@
REPORTER_ASSERT(reporter, kSize*kSize*4 == size);
}
-
// Mipmapped versions
- const GrCaps* caps = context->priv().caps();
if (caps->mipMapSupport()) {
sk_sp<GrTextureProxy> proxy;
- proxy = make_mipmap_proxy(proxyProvider, caps, GrRenderable::kYes, kSize, kSize, 1);
+ proxy = make_mipmap_proxy(context, GrRenderable::kYes, kSize, kSize, 1);
size_t size = proxy->gpuMemorySize();
REPORTER_ASSERT(reporter, kSize*kSize*4+(kSize*kSize*4)/3 == size);
- size_t sampleCount = (size_t)context->priv().caps()->getRenderTargetSampleCount(
- 4, kRGBA_8888_GrPixelConfig);
+ size_t sampleCount = (size_t)caps->getRenderTargetSampleCount(4, kRGBA_8888_GrPixelConfig);
if (sampleCount >= 4) {
- proxy = make_mipmap_proxy(proxyProvider, caps, GrRenderable::kYes, kSize, kSize,
- sampleCount);
+ proxy = make_mipmap_proxy(context, GrRenderable::kYes, kSize, kSize, sampleCount);
size = proxy->gpuMemorySize();
REPORTER_ASSERT(reporter,
kSize*kSize*4+(kSize*kSize*4)/3 == size || // msaa4 failed
@@ -1697,7 +1695,7 @@
kSize*kSize*4*(sampleCount+1)+(kSize*kSize*4)/3 == size); // explicit resolve buffer
}
- proxy = make_mipmap_proxy(proxyProvider, caps, GrRenderable::kNo, kSize, kSize, 1);
+ proxy = make_mipmap_proxy(context, GrRenderable::kNo, kSize, kSize, 1);
size = proxy->gpuMemorySize();
REPORTER_ASSERT(reporter, kSize*kSize*4+(kSize*kSize*4)/3 == size);
}
diff --git a/tests/TextureProxyTest.cpp b/tests/TextureProxyTest.cpp
index e6bc9bb..ae5a4d8 100644
--- a/tests/TextureProxyTest.cpp
+++ b/tests/TextureProxyTest.cpp
@@ -38,9 +38,11 @@
static sk_sp<GrTextureProxy> deferred_tex(skiatest::Reporter* reporter, GrContext* ctx,
GrProxyProvider* proxyProvider, SkBackingFit fit) {
+ const GrCaps* caps = ctx->priv().caps();
+
const GrSurfaceDesc desc = make_desc();
- GrBackendFormat format =
- ctx->priv().caps()->getBackendFormatFromColorType(GrColorType::kRGBA_8888);
+ GrBackendFormat format = caps->getDefaultBackendFormat(GrColorType::kRGBA_8888,
+ GrRenderable::kNo);
sk_sp<GrTextureProxy> proxy = proxyProvider->createProxy(format, desc, GrRenderable::kNo, 1,
kBottomLeft_GrSurfaceOrigin, fit,
@@ -52,9 +54,12 @@
static sk_sp<GrTextureProxy> deferred_texRT(skiatest::Reporter* reporter, GrContext* ctx,
GrProxyProvider* proxyProvider, SkBackingFit fit) {
+ const GrCaps* caps = ctx->priv().caps();
+
const GrSurfaceDesc desc = make_desc();
- GrBackendFormat format =
- ctx->priv().caps()->getBackendFormatFromColorType(GrColorType::kRGBA_8888);
+
+ GrBackendFormat format = caps->getDefaultBackendFormat(GrColorType::kRGBA_8888,
+ GrRenderable::kYes);
sk_sp<GrTextureProxy> proxy = proxyProvider->createProxy(format, desc, GrRenderable::kYes, 1,
kBottomLeft_GrSurfaceOrigin, fit,
diff --git a/tests/TransferPixelsTest.cpp b/tests/TransferPixelsTest.cpp
index 3d0fb2b..d4c4aab 100644
--- a/tests/TransferPixelsTest.cpp
+++ b/tests/TransferPixelsTest.cpp
@@ -102,12 +102,8 @@
auto* caps = context->priv().caps();
- auto backendFormat = caps->getBackendFormatFromColorType(colorType);
- if (!caps->isFormatTexturable(colorType, backendFormat)) {
- return;
- }
-
- if ((renderable == GrRenderable::kYes && !caps->isFormatRenderable(colorType, backendFormat))) {
+ auto backendFormat = caps->getDefaultBackendFormat(colorType, renderable);
+ if (!backendFormat.isValid()) {
return;
}
diff --git a/tests/WritePixelsTest.cpp b/tests/WritePixelsTest.cpp
index c34c6c2..ea0a524 100644
--- a/tests/WritePixelsTest.cpp
+++ b/tests/WritePixelsTest.cpp
@@ -506,6 +506,7 @@
DEF_GPUTEST_FOR_RENDERING_CONTEXTS(WritePixelsPendingIO, reporter, ctxInfo) {
GrContext* context = ctxInfo.grContext();
GrProxyProvider* proxyProvider = context->priv().proxyProvider();
+ const GrCaps* caps = context->priv().caps();
static const int kFullSize = 62;
static const int kHalfSize = 31;
@@ -527,8 +528,8 @@
desc.fHeight = 64;
desc.fConfig = kRGBA_8888_GrPixelConfig;
- const GrBackendFormat format =
- context->priv().caps()->getBackendFormatFromColorType(GrColorType::kRGBA_8888);
+ const GrBackendFormat format = caps->getDefaultBackendFormat(GrColorType::kRGBA_8888,
+ GrRenderable::kNo);
sk_sp<GrTextureProxy> temp = proxyProvider->createProxy(
format, desc, GrRenderable::kNo, 1, kTopLeft_GrSurfaceOrigin, SkBackingFit::kApprox,
diff --git a/tools/DDLPromiseImageHelper.cpp b/tools/DDLPromiseImageHelper.cpp
index 2906843..dc01185 100644
--- a/tools/DDLPromiseImageHelper.cpp
+++ b/tools/DDLPromiseImageHelper.cpp
@@ -83,7 +83,8 @@
}
}
- GrBackendFormat format = caps->getBackendFormatFromColorType(GrColorType::kRG_88);
+ GrBackendFormat format = caps->getDefaultBackendFormat(GrColorType::kRG_88,
+ GrRenderable::kNo);
tex = gpu->createBackendTexture(pm.width(), pm.height(), format,
GrMipMapped::kNo, GrRenderable::kNo,
pixels, 2 * pm.width(), nullptr, GrProtected::kNo);
diff --git a/tools/gpu/ProxyUtils.cpp b/tools/gpu/ProxyUtils.cpp
index 7f759ca..1ecb651 100644
--- a/tools/gpu/ProxyUtils.cpp
+++ b/tools/gpu/ProxyUtils.cpp
@@ -28,7 +28,7 @@
const GrCaps* caps = context->priv().caps();
- const GrBackendFormat format = caps->getBackendFormatFromColorType(colorType);
+ const GrBackendFormat format = caps->getDefaultBackendFormat(colorType, renderable);
if (!format.isValid()) {
return nullptr;
}