Use views where needed in CCPR.
Bug: skia:9556
Change-Id: Ib8c97a85ff76d3b2a9b501c2372f60e851cee46f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/269479
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Chris Dalton <csmartdalton@google.com>
diff --git a/src/gpu/ccpr/GrCCClipProcessor.cpp b/src/gpu/ccpr/GrCCClipProcessor.cpp
index badbaeb..77ee55d 100644
--- a/src/gpu/ccpr/GrCCClipProcessor.cpp
+++ b/src/gpu/ccpr/GrCCClipProcessor.cpp
@@ -13,20 +13,37 @@
#include "src/gpu/glsl/GrGLSLFragmentProcessor.h"
#include "src/gpu/glsl/GrGLSLFragmentShaderBuilder.h"
-GrCCClipProcessor::GrCCClipProcessor(const GrCCClipPath* clipPath, IsCoverageCount isCoverageCount,
+static GrSurfaceProxyView make_view(const GrCaps& caps, GrSurfaceProxy* proxy,
+ bool isCoverageCount) {
+ GrColorType ct = isCoverageCount ? GrColorType::kAlpha_F16 : GrColorType::kAlpha_8;
+ GrSwizzle swizzle = caps.getReadSwizzle(proxy->backendFormat(), ct);
+ return { sk_ref_sp(proxy), GrCCAtlas::kTextureOrigin, swizzle };
+}
+
+GrCCClipProcessor::GrCCClipProcessor(GrSurfaceProxyView view, const GrCCClipPath* clipPath,
+ IsCoverageCount isCoverageCount,
MustCheckBounds mustCheckBounds)
: INHERITED(kGrCCClipProcessor_ClassID, kCompatibleWithCoverageAsAlpha_OptimizationFlag)
, fClipPath(clipPath)
, fIsCoverageCount(IsCoverageCount::kYes == isCoverageCount)
, fMustCheckBounds(MustCheckBounds::kYes == mustCheckBounds)
- , fAtlasAccess(sk_ref_sp(fClipPath->atlasLazyProxy())) {
- SkASSERT(fAtlasAccess.view().proxy());
+ , fAtlasAccess(std::move(view)) {
+ SkASSERT(fAtlasAccess.view());
this->setTextureSamplerCnt(1);
}
+GrCCClipProcessor::GrCCClipProcessor(const GrCaps& caps, const GrCCClipPath* clipPath,
+ IsCoverageCount isCoverageCount,
+ MustCheckBounds mustCheckBounds)
+ : GrCCClipProcessor(make_view(caps, clipPath->atlasLazyProxy(),
+ IsCoverageCount::kYes == isCoverageCount),
+ clipPath, isCoverageCount, mustCheckBounds) {
+}
+
std::unique_ptr<GrFragmentProcessor> GrCCClipProcessor::clone() const {
return std::make_unique<GrCCClipProcessor>(
- fClipPath, IsCoverageCount(fIsCoverageCount), MustCheckBounds(fMustCheckBounds));
+ fAtlasAccess.view(), fClipPath, IsCoverageCount(fIsCoverageCount),
+ MustCheckBounds(fMustCheckBounds));
}
void GrCCClipProcessor::onGetGLSLProcessorKey(const GrShaderCaps&, GrProcessorKeyBuilder* b) const {