Add GrSurfaceProxyView to the various draw atlas ops.
Bug: skia:9556
Change-Id: I9eb825ab241fd0d0d4e63408af270a89e872d1c9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/258802
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
diff --git a/src/gpu/effects/GrBitmapTextGeoProc.cpp b/src/gpu/effects/GrBitmapTextGeoProc.cpp
index 5c710cc..6927157 100644
--- a/src/gpu/effects/GrBitmapTextGeoProc.cpp
+++ b/src/gpu/effects/GrBitmapTextGeoProc.cpp
@@ -121,8 +121,8 @@
GrBitmapTextGeoProc::GrBitmapTextGeoProc(const GrShaderCaps& caps,
const SkPMColor4f& color,
bool wideColor,
- const sk_sp<GrTextureProxy>* proxies,
- int numActiveProxies,
+ const GrSurfaceProxyView* views,
+ int numActiveViews,
const GrSamplerState& params, GrMaskFormat format,
const SkMatrix& localMatrix, bool usesW)
: INHERITED(kGrBitmapTextGeoProc_ClassID)
@@ -130,7 +130,7 @@
, fLocalMatrix(localMatrix)
, fUsesW(usesW)
, fMaskFormat(format) {
- SkASSERT(numActiveProxies <= kMaxTextures);
+ SkASSERT(numActiveViews <= kMaxTextures);
if (usesW) {
fInPosition = {"inPosition", kFloat3_GrVertexAttribType, kFloat3_GrSLType};
@@ -148,39 +148,39 @@
caps.integerSupport() ? kUShort2_GrSLType : kFloat2_GrSLType};
this->setVertexAttributes(&fInPosition, 3);
- if (numActiveProxies) {
- fAtlasDimensions = proxies[0]->dimensions();
+ if (numActiveViews) {
+ fAtlasDimensions = views[0].proxy()->dimensions();
}
- for (int i = 0; i < numActiveProxies; ++i) {
- SkASSERT(proxies[i]);
- SkASSERT(proxies[i]->dimensions() == fAtlasDimensions);
- fTextureSamplers[i].reset(params, proxies[i]->backendFormat(),
- proxies[i]->textureSwizzle());
+ for (int i = 0; i < numActiveViews; ++i) {
+ const GrSurfaceProxy* proxy = views[i].proxy();
+ SkASSERT(proxy);
+ SkASSERT(proxy->dimensions() == fAtlasDimensions);
+ fTextureSamplers[i].reset(params, proxy->backendFormat(), views[i].swizzle());
}
- this->setTextureSamplerCnt(numActiveProxies);
+ this->setTextureSamplerCnt(numActiveViews);
}
-void GrBitmapTextGeoProc::addNewProxies(const sk_sp<GrTextureProxy>* proxies,
- int numActiveProxies,
- const GrSamplerState& params) {
- SkASSERT(numActiveProxies <= kMaxTextures);
+void GrBitmapTextGeoProc::addNewViews(const GrSurfaceProxyView* views,
+ int numActiveViews,
+ const GrSamplerState& params) {
+ SkASSERT(numActiveViews <= kMaxTextures);
// Just to make sure we don't try to add too many proxies
- numActiveProxies = SkTMin(numActiveProxies, kMaxTextures);
+ numActiveViews = SkTMin(numActiveViews, kMaxTextures);
if (!fTextureSamplers[0].isInitialized()) {
- fAtlasDimensions = proxies[0]->dimensions();
+ fAtlasDimensions = views[0].proxy()->dimensions();
}
- for (int i = 0; i < numActiveProxies; ++i) {
- SkASSERT(proxies[i]);
- SkASSERT(proxies[i]->dimensions() == fAtlasDimensions);
+ for (int i = 0; i < numActiveViews; ++i) {
+ const GrSurfaceProxy* proxy = views[i].proxy();
+ SkASSERT(proxy);
+ SkASSERT(proxy->dimensions() == fAtlasDimensions);
if (!fTextureSamplers[i].isInitialized()) {
- fTextureSamplers[i].reset(params, proxies[i]->backendFormat(),
- proxies[i]->textureSwizzle());
+ fTextureSamplers[i].reset(params, proxy->backendFormat(), views[i].swizzle());
}
}
- this->setTextureSamplerCnt(numActiveProxies);
+ this->setTextureSamplerCnt(numActiveViews);
}
void GrBitmapTextGeoProc::getGLSLProcessorKey(const GrShaderCaps& caps,
@@ -201,12 +201,7 @@
GrGeometryProcessor* GrBitmapTextGeoProc::TestCreate(GrProcessorTestData* d) {
int texIdx = d->fRandom->nextBool() ? GrProcessorUnitTest::kSkiaPMTextureIdx
: GrProcessorUnitTest::kAlphaTextureIdx;
- sk_sp<GrTextureProxy> proxies[kMaxTextures] = {
- d->textureProxy(texIdx),
- nullptr,
- nullptr,
- nullptr
- };
+ sk_sp<GrTextureProxy> proxy = d->textureProxy(texIdx);
GrSamplerState::WrapMode wrapModes[2];
GrTest::TestWrapModes(d->fRandom, wrapModes);
@@ -226,11 +221,14 @@
format = kARGB_GrMaskFormat;
break;
}
+ GrSurfaceOrigin origin = proxy->origin();
+ const GrSwizzle& swizzle = proxy->textureSwizzle();
+ GrSurfaceProxyView view(std::move(proxy), origin, swizzle);
return GrBitmapTextGeoProc::Make(d->allocator(), *d->caps()->shaderCaps(),
SkPMColor4f::FromBytes_RGBA(GrRandomColor(d->fRandom)),
d->fRandom->nextBool(),
- proxies, 1, samplerState, format,
+ &view, 1, samplerState, format,
GrTest::TestMatrix(d->fRandom), d->fRandom->nextBool());
}
#endif