Pass swizzle into createProxy instead of inferring from GrPixelConfig.
This whole change is basically work that will all get reverted shortly
when GrSurfaceProxy no longer stores swizzle. But for now this helps
get rid of a use of pixel config.
Bug: skia:6718
Change-Id: If911360a8a9d2c52a58b5795386484634885b3f3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265579
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
diff --git a/src/gpu/GrClipStackClip.cpp b/src/gpu/GrClipStackClip.cpp
index 40a9931..969ddbf 100644
--- a/src/gpu/GrClipStackClip.cpp
+++ b/src/gpu/GrClipStackClip.cpp
@@ -487,10 +487,13 @@
GrBackendFormat format = caps->getDefaultBackendFormat(GrColorType::kAlpha_8,
GrRenderable::kNo);
+ GrSwizzle swizzle = context->priv().caps()->getReadSwizzle(format, GrColorType::kAlpha_8);
+
// 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.
proxy = proxyProvider->createProxy(format,
desc,
+ swizzle,
GrRenderable::kNo,
1,
kTopLeft_GrSurfaceOrigin,
diff --git a/src/gpu/GrDrawOpAtlas.cpp b/src/gpu/GrDrawOpAtlas.cpp
index 466e98f..8f15db9 100644
--- a/src/gpu/GrDrawOpAtlas.cpp
+++ b/src/gpu/GrDrawOpAtlas.cpp
@@ -560,14 +560,14 @@
int numPlotsY = fTextureHeight/fPlotHeight;
for (uint32_t i = 0; i < this->maxPages(); ++i) {
+ GrSwizzle swizzle = proxyProvider->caps()->getReadSwizzle(fFormat, fColorType);
sk_sp<GrSurfaceProxy> proxy = proxyProvider->createProxy(
- fFormat, desc, GrRenderable::kNo, 1, kTopLeft_GrSurfaceOrigin, GrMipMapped::kNo,
- SkBackingFit::kExact, SkBudgeted::kYes, GrProtected::kNo,
+ fFormat, desc, swizzle, GrRenderable::kNo, 1, kTopLeft_GrSurfaceOrigin,
+ GrMipMapped::kNo, SkBackingFit::kExact, SkBudgeted::kYes, GrProtected::kNo,
GrInternalSurfaceFlags::kNone, GrSurfaceProxy::UseAllocator::kNo);
if (!proxy) {
return false;
}
- GrSwizzle swizzle = proxyProvider->caps()->getReadSwizzle(fFormat, fColorType);
fViews[i] = GrSurfaceProxyView(std::move(proxy), kTopLeft_GrSurfaceOrigin, swizzle);
// set up allocated plots
diff --git a/src/gpu/GrProxyProvider.cpp b/src/gpu/GrProxyProvider.cpp
index 34e2947..af6b8ae 100644
--- a/src/gpu/GrProxyProvider.cpp
+++ b/src/gpu/GrProxyProvider.cpp
@@ -425,6 +425,7 @@
sk_sp<GrTextureProxy> GrProxyProvider::createProxy(const GrBackendFormat& format,
const GrSurfaceDesc& desc,
+ GrSwizzle readSwizzle,
GrRenderable renderable,
int renderTargetSampleCnt,
GrSurfaceOrigin origin,
@@ -446,11 +447,6 @@
return nullptr;
}
- GrColorType colorType = GrPixelConfigToColorType(desc.fConfig);
-
- SkASSERT(GrCaps::AreConfigsCompatible(desc.fConfig,
- caps->getConfigFromBackendFormat(format, colorType)));
-
if (GrMipMapped::kYes == mipMapped) {
// 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;
@@ -467,7 +463,6 @@
GrMipMapsStatus mipMapsStatus = (GrMipMapped::kYes == mipMapped)
? GrMipMapsStatus::kDirty
: GrMipMapsStatus::kNotAllocated;
- GrSwizzle readSwizzle = caps->getReadSwizzle(format, colorType);
if (renderable == GrRenderable::kYes) {
renderTargetSampleCnt =
caps->getRenderTargetSampleCount(renderTargetSampleCnt, format);
diff --git a/src/gpu/GrProxyProvider.h b/src/gpu/GrProxyProvider.h
index 6b412ac..e0de00b 100644
--- a/src/gpu/GrProxyProvider.h
+++ b/src/gpu/GrProxyProvider.h
@@ -82,6 +82,7 @@
*/
sk_sp<GrTextureProxy> createProxy(const GrBackendFormat&,
const GrSurfaceDesc&,
+ GrSwizzle readSwizzle,
GrRenderable,
int renderTargetSampleCnt,
GrSurfaceOrigin,
diff --git a/src/gpu/GrRenderTargetContext.cpp b/src/gpu/GrRenderTargetContext.cpp
index 6c9ef47..cf2b8f2 100644
--- a/src/gpu/GrRenderTargetContext.cpp
+++ b/src/gpu/GrRenderTargetContext.cpp
@@ -190,8 +190,10 @@
desc.fHeight = dimensions.height();
desc.fConfig = config;
+ GrSwizzle swizzle = context->priv().caps()->getReadSwizzle(format, colorType);
+
sk_sp<GrTextureProxy> proxy = context->priv().proxyProvider()->createProxy(
- format, desc, GrRenderable::kYes, sampleCnt, origin, mipMapped, fit, budgeted,
+ format, desc, swizzle, GrRenderable::kYes, sampleCnt, origin, mipMapped, fit, budgeted,
isProtected);
if (!proxy) {
return nullptr;
diff --git a/src/gpu/GrSoftwarePathRenderer.cpp b/src/gpu/GrSoftwarePathRenderer.cpp
index ba75657..a3d1ecd 100644
--- a/src/gpu/GrSoftwarePathRenderer.cpp
+++ b/src/gpu/GrSoftwarePathRenderer.cpp
@@ -183,8 +183,11 @@
const GrBackendFormat format = caps->getDefaultBackendFormat(GrColorType::kAlpha_8,
GrRenderable::kNo);
- return proxyProvider->createProxy(format, desc, GrRenderable::kNo, 1, kTopLeft_GrSurfaceOrigin,
- GrMipMapped::kNo, fit, SkBudgeted::kYes, GrProtected::kNo);
+ GrSwizzle swizzle = caps->getReadSwizzle(format, GrColorType::kAlpha_8);
+
+ return proxyProvider->createProxy(format, desc, swizzle, GrRenderable::kNo, 1,
+ kTopLeft_GrSurfaceOrigin, GrMipMapped::kNo, fit,
+ SkBudgeted::kYes, GrProtected::kNo);
}
namespace {
diff --git a/src/gpu/GrSurfaceContext.cpp b/src/gpu/GrSurfaceContext.cpp
index 82be5aa..0a95298 100644
--- a/src/gpu/GrSurfaceContext.cpp
+++ b/src/gpu/GrSurfaceContext.cpp
@@ -84,14 +84,15 @@
desc.fHeight = dimensions.height();
desc.fConfig = config;
+ GrSwizzle swizzle = context->priv().caps()->getReadSwizzle(format, colorType);
+
sk_sp<GrTextureProxy> proxy = context->priv().proxyProvider()->createProxy(
- format, desc, renderable, renderTargetSampleCnt, origin, mipMapped, fit, budgeted,
- isProtected);
+ format, desc, swizzle, renderable, renderTargetSampleCnt, origin, mipMapped, fit,
+ budgeted, isProtected);
if (!proxy) {
return nullptr;
}
- GrSwizzle swizzle = context->priv().caps()->getReadSwizzle(format, colorType);
GrSurfaceProxyView view(std::move(proxy), origin, swizzle);
return GrSurfaceContext::Make(context, std::move(view), colorType, alphaType,
std::move(colorSpace));
@@ -387,7 +388,7 @@
GrSurfaceOrigin tempOrigin =
this->asRenderTargetContext() ? kTopLeft_GrSurfaceOrigin : dstProxy->origin();
auto tempProxy = direct->priv().proxyProvider()->createProxy(
- format, desc, GrRenderable::kNo, 1, tempOrigin, GrMipMapped::kNo,
+ format, desc, tempReadSwizzle, GrRenderable::kNo, 1, tempOrigin, GrMipMapped::kNo,
SkBackingFit::kApprox, SkBudgeted::kYes, GrProtected::kNo);
if (!tempProxy) {
return false;
diff --git a/src/gpu/ops/GrLatticeOp.cpp b/src/gpu/ops/GrLatticeOp.cpp
index 9d84a5b..f0ec914 100644
--- a/src/gpu/ops/GrLatticeOp.cpp
+++ b/src/gpu/ops/GrLatticeOp.cpp
@@ -411,8 +411,11 @@
const GrBackendFormat format =
context->priv().caps()->getDefaultBackendFormat(GrColorType::kRGBA_8888,
GrRenderable::kNo);
+ GrSwizzle swizzle = context->priv().caps()->getReadSwizzle(format, GrColorType::kRGBA_8888);
+
auto proxy = context->priv().proxyProvider()->createProxy(format,
desc,
+ swizzle,
GrRenderable::kNo,
1,
origin,
diff --git a/src/gpu/ops/GrTextureOp.cpp b/src/gpu/ops/GrTextureOp.cpp
index d27d634..b1e7a2b 100644
--- a/src/gpu/ops/GrTextureOp.cpp
+++ b/src/gpu/ops/GrTextureOp.cpp
@@ -1292,10 +1292,11 @@
const GrBackendFormat format =
context->priv().caps()->getDefaultBackendFormat(GrColorType::kRGBA_8888,
GrRenderable::kNo);
+ GrSwizzle swizzle = context->priv().caps()->getReadSwizzle(format, GrColorType::kRGBA_8888);
GrProxyProvider* proxyProvider = context->priv().proxyProvider();
sk_sp<GrTextureProxy> proxy = proxyProvider->createProxy(
- format, desc, GrRenderable::kNo, 1, origin, mipMapped, fit, SkBudgeted::kNo,
+ format, desc, swizzle, GrRenderable::kNo, 1, origin, mipMapped, fit, SkBudgeted::kNo,
GrProtected::kNo, GrInternalSurfaceFlags::kNone);
SkRect rect = GrTest::TestRect(random);