rename inner AsFPArgs to stand-alone GrFPArgs
This prepares us to share this with other effects (most notably maskfilters)
Bug: skia:
Change-Id: I12530fdf10c4e5f2a9ab6d394bf9e87c54ea60c4
Reviewed-on: https://skia-review.googlesource.com/97062
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
diff --git a/src/gpu/GrFPArgs.h b/src/gpu/GrFPArgs.h
new file mode 100644
index 0000000..58f12c5
--- /dev/null
+++ b/src/gpu/GrFPArgs.h
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2018 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef GrFPArgs_DEFINED
+#define GrFPArgs_DEFINED
+
+#include "SkFilterQuality.h"
+
+class SkMatrix;
+class GrContext;
+class GrColorSpaceInfo;
+
+struct GrFPArgs {
+ GrFPArgs() {}
+ GrFPArgs(GrContext* context,
+ const SkMatrix* viewMatrix,
+ const SkMatrix* localMatrix,
+ SkFilterQuality filterQuality,
+ const GrColorSpaceInfo* dstColorSpaceInfo)
+ : fContext(context)
+ , fViewMatrix(viewMatrix)
+ , fLocalMatrix(localMatrix)
+ , fFilterQuality(filterQuality)
+ , fDstColorSpaceInfo(dstColorSpaceInfo) {}
+
+ GrContext* fContext;
+ const SkMatrix* fViewMatrix;
+ const SkMatrix* fLocalMatrix;
+ SkFilterQuality fFilterQuality;
+ const GrColorSpaceInfo* fDstColorSpaceInfo;
+};
+
+#endif
+
diff --git a/src/gpu/GrTestUtils.h b/src/gpu/GrTestUtils.h
index 9a1ae28..12e2ea3 100644
--- a/src/gpu/GrTestUtils.h
+++ b/src/gpu/GrTestUtils.h
@@ -14,6 +14,7 @@
#include "../private/SkTemplates.h"
#include "GrColor.h"
+#include "GrFPArgs.h"
#include "GrSamplerState.h"
#include "SkPathEffect.h"
#include "SkRandom.h"
@@ -54,10 +55,10 @@
public:
TestAsFPArgs(GrProcessorTestData*);
~TestAsFPArgs();
- const SkShaderBase::AsFPArgs& args() const { return fArgs; }
+ const GrFPArgs& args() const { return fArgs; }
private:
- SkShaderBase::AsFPArgs fArgs;
+ GrFPArgs fArgs;
SkMatrix fViewMatrixStorage;
std::unique_ptr<GrColorSpaceInfo> fColorSpaceInfoStorage;
};
diff --git a/src/gpu/SkGr.cpp b/src/gpu/SkGr.cpp
index 8faa9d4..58dbb10 100644
--- a/src/gpu/SkGr.cpp
+++ b/src/gpu/SkGr.cpp
@@ -382,7 +382,7 @@
if (shaderProcessor) {
shaderFP = std::move(*shaderProcessor);
} else if (const auto* shader = as_SB(skPaint.getShader())) {
- shaderFP = shader->asFragmentProcessor(SkShaderBase::AsFPArgs(
+ shaderFP = shader->asFragmentProcessor(GrFPArgs(
context, &viewM, nullptr, skPaint.getFilterQuality(), &colorSpaceInfo));
}
}
@@ -559,7 +559,7 @@
std::unique_ptr<GrFragmentProcessor> shaderFP;
if (textureIsAlphaOnly) {
if (const auto* shader = as_SB(paint.getShader())) {
- shaderFP = shader->asFragmentProcessor(SkShaderBase::AsFPArgs(
+ shaderFP = shader->asFragmentProcessor(GrFPArgs(
context, &viewM, nullptr, paint.getFilterQuality(), &colorSpaceInfo));
if (!shaderFP) {
return false;
diff --git a/src/shaders/SkColorFilterShader.cpp b/src/shaders/SkColorFilterShader.cpp
index b407ed8..0bb3afc 100644
--- a/src/shaders/SkColorFilterShader.cpp
+++ b/src/shaders/SkColorFilterShader.cpp
@@ -55,7 +55,7 @@
/////////////////////////////////////////////////////////////////////
std::unique_ptr<GrFragmentProcessor> SkColorFilterShader::asFragmentProcessor(
- const AsFPArgs& args) const {
+ const GrFPArgs& args) const {
auto fp1 = as_SB(fShader)->asFragmentProcessor(args);
if (!fp1) {
return nullptr;
diff --git a/src/shaders/SkColorFilterShader.h b/src/shaders/SkColorFilterShader.h
index f69aa0d..e771f38 100644
--- a/src/shaders/SkColorFilterShader.h
+++ b/src/shaders/SkColorFilterShader.h
@@ -18,7 +18,7 @@
SkColorFilterShader(sk_sp<SkShader> shader, sk_sp<SkColorFilter> filter);
#if SK_SUPPORT_GPU
- std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const AsFPArgs&) const override;
+ std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const GrFPArgs&) const override;
#endif
SK_TO_STRING_OVERRIDE()
diff --git a/src/shaders/SkColorShader.cpp b/src/shaders/SkColorShader.cpp
index 74680d6..b5b13cd 100644
--- a/src/shaders/SkColorShader.cpp
+++ b/src/shaders/SkColorShader.cpp
@@ -90,7 +90,7 @@
#include "SkGr.h"
#include "effects/GrConstColorProcessor.h"
std::unique_ptr<GrFragmentProcessor> SkColorShader::asFragmentProcessor(
- const AsFPArgs& args) const {
+ const GrFPArgs& args) const {
GrColor4f color = SkColorToPremulGrColor4f(fColor, *args.fDstColorSpaceInfo);
return GrConstColorProcessor::Make(color, GrConstColorProcessor::InputMode::kModulateA);
}
@@ -210,7 +210,7 @@
#include "effects/GrConstColorProcessor.h"
std::unique_ptr<GrFragmentProcessor> SkColor4Shader::asFragmentProcessor(
- const AsFPArgs& args) const {
+ const GrFPArgs& args) const {
// Construct an xform assuming float inputs. The color space can have a transfer function on
// it, which will be applied below.
auto colorSpaceXform = GrColorSpaceXform::Make(fColorSpace.get(), kRGBA_float_GrPixelConfig,
diff --git a/src/shaders/SkColorShader.h b/src/shaders/SkColorShader.h
index e545514..4c67e09 100644
--- a/src/shaders/SkColorShader.h
+++ b/src/shaders/SkColorShader.h
@@ -47,7 +47,7 @@
GradientType asAGradient(GradientInfo* info) const override;
#if SK_SUPPORT_GPU
- std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const AsFPArgs&) const override;
+ std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const GrFPArgs&) const override;
#endif
SK_TO_STRING_OVERRIDE()
@@ -103,7 +103,7 @@
GradientType asAGradient(GradientInfo* info) const override;
#if SK_SUPPORT_GPU
- std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const AsFPArgs&) const override;
+ std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const GrFPArgs&) const override;
#endif
SK_TO_STRING_OVERRIDE()
diff --git a/src/shaders/SkComposeShader.cpp b/src/shaders/SkComposeShader.cpp
index 2feae77..a6df8b2 100644
--- a/src/shaders/SkComposeShader.cpp
+++ b/src/shaders/SkComposeShader.cpp
@@ -119,7 +119,7 @@
/////////////////////////////////////////////////////////////////////
std::unique_ptr<GrFragmentProcessor> SkComposeShader::asFragmentProcessor(
- const AsFPArgs& args) const {
+ const GrFPArgs& args) const {
if (this->isJustMode()) {
SkASSERT(fMode != SkBlendMode::kSrc && fMode != SkBlendMode::kDst); // caught in factory
if (fMode == SkBlendMode::kClear) {
diff --git a/src/shaders/SkComposeShader.h b/src/shaders/SkComposeShader.h
index 85d56cc..7efa06c 100644
--- a/src/shaders/SkComposeShader.h
+++ b/src/shaders/SkComposeShader.h
@@ -23,7 +23,7 @@
}
#if SK_SUPPORT_GPU
- std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const AsFPArgs&) const override;
+ std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const GrFPArgs&) const override;
#endif
#ifdef SK_DEBUGx
diff --git a/src/shaders/SkImageShader.cpp b/src/shaders/SkImageShader.cpp
index 77d172a..af3dab9 100644
--- a/src/shaders/SkImageShader.cpp
+++ b/src/shaders/SkImageShader.cpp
@@ -185,7 +185,7 @@
}
std::unique_ptr<GrFragmentProcessor> SkImageShader::asFragmentProcessor(
- const AsFPArgs& args) const {
+ const GrFPArgs& args) const {
SkMatrix lmInverse;
if (!this->getLocalMatrix().invert(&lmInverse)) {
return nullptr;
diff --git a/src/shaders/SkImageShader.h b/src/shaders/SkImageShader.h
index c981b5c..a3cf3db 100644
--- a/src/shaders/SkImageShader.h
+++ b/src/shaders/SkImageShader.h
@@ -24,7 +24,7 @@
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkImageShader)
#if SK_SUPPORT_GPU
- std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const AsFPArgs&) const override;
+ std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const GrFPArgs&) const override;
#endif
SkImageShader(sk_sp<SkImage>, TileMode tx, TileMode ty, const SkMatrix* localMatrix);
diff --git a/src/shaders/SkLocalMatrixShader.cpp b/src/shaders/SkLocalMatrixShader.cpp
index 172eca1..a08fea1 100644
--- a/src/shaders/SkLocalMatrixShader.cpp
+++ b/src/shaders/SkLocalMatrixShader.cpp
@@ -13,13 +13,13 @@
#if SK_SUPPORT_GPU
std::unique_ptr<GrFragmentProcessor> SkLocalMatrixShader::asFragmentProcessor(
- const AsFPArgs& args) const {
+ const GrFPArgs& args) const {
SkMatrix tmp = this->getLocalMatrix();
if (args.fLocalMatrix) {
tmp.preConcat(*args.fLocalMatrix);
}
return as_SB(fProxyShader)
- ->asFragmentProcessor(AsFPArgs(args.fContext, args.fViewMatrix, &tmp,
+ ->asFragmentProcessor(GrFPArgs(args.fContext, args.fViewMatrix, &tmp,
args.fFilterQuality, args.fDstColorSpaceInfo));
}
#endif
diff --git a/src/shaders/SkLocalMatrixShader.h b/src/shaders/SkLocalMatrixShader.h
index b16b243..2d7e313 100644
--- a/src/shaders/SkLocalMatrixShader.h
+++ b/src/shaders/SkLocalMatrixShader.h
@@ -28,7 +28,7 @@
}
#if SK_SUPPORT_GPU
- std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const AsFPArgs&) const override;
+ std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const GrFPArgs&) const override;
#endif
sk_sp<SkShader> makeAsALocalMatrixShader(SkMatrix* localMatrix) const override {
diff --git a/src/shaders/SkPerlinNoiseShader.cpp b/src/shaders/SkPerlinNoiseShader.cpp
index 6577a12..ba85a8b 100644
--- a/src/shaders/SkPerlinNoiseShader.cpp
+++ b/src/shaders/SkPerlinNoiseShader.cpp
@@ -351,7 +351,7 @@
};
#if SK_SUPPORT_GPU
- std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const AsFPArgs&) const override;
+ std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const GrFPArgs&) const override;
#endif
SK_TO_STRING_OVERRIDE()
@@ -1378,7 +1378,7 @@
/////////////////////////////////////////////////////////////////////
std::unique_ptr<GrFragmentProcessor> SkPerlinNoiseShaderImpl::asFragmentProcessor(
- const AsFPArgs& args) const {
+ const GrFPArgs& args) const {
SkASSERT(args.fContext);
SkMatrix localMatrix = this->getLocalMatrix();
diff --git a/src/shaders/SkPictureShader.cpp b/src/shaders/SkPictureShader.cpp
index c536350..9e4eb51 100644
--- a/src/shaders/SkPictureShader.cpp
+++ b/src/shaders/SkPictureShader.cpp
@@ -357,7 +357,7 @@
#if SK_SUPPORT_GPU
std::unique_ptr<GrFragmentProcessor> SkPictureShader::asFragmentProcessor(
- const AsFPArgs& args) const {
+ const GrFPArgs& args) const {
int maxTextureSize = 0;
if (args.fContext) {
maxTextureSize = args.fContext->caps()->maxTextureSize();
@@ -369,8 +369,7 @@
return nullptr;
}
return as_SB(bitmapShader)
- ->asFragmentProcessor(SkShaderBase::AsFPArgs(args.fContext, args.fViewMatrix, nullptr,
- args.fFilterQuality,
- args.fDstColorSpaceInfo));
+ ->asFragmentProcessor(GrFPArgs(args.fContext, args.fViewMatrix, nullptr,
+ args.fFilterQuality, args.fDstColorSpaceInfo));
}
#endif
diff --git a/src/shaders/SkPictureShader.h b/src/shaders/SkPictureShader.h
index 6b23fa3..fe388ee 100644
--- a/src/shaders/SkPictureShader.h
+++ b/src/shaders/SkPictureShader.h
@@ -32,7 +32,7 @@
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkPictureShader)
#if SK_SUPPORT_GPU
- std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const AsFPArgs&) const override;
+ std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const GrFPArgs&) const override;
#endif
protected:
diff --git a/src/shaders/SkShader.cpp b/src/shaders/SkShader.cpp
index c72c759..17b56a2 100644
--- a/src/shaders/SkShader.cpp
+++ b/src/shaders/SkShader.cpp
@@ -163,7 +163,7 @@
}
#if SK_SUPPORT_GPU
-std::unique_ptr<GrFragmentProcessor> SkShaderBase::asFragmentProcessor(const AsFPArgs&) const {
+std::unique_ptr<GrFragmentProcessor> SkShaderBase::asFragmentProcessor(const GrFPArgs&) const {
return nullptr;
}
#endif
diff --git a/src/shaders/SkShaderBase.h b/src/shaders/SkShaderBase.h
index 85c08fe..8831878 100644
--- a/src/shaders/SkShaderBase.h
+++ b/src/shaders/SkShaderBase.h
@@ -12,6 +12,10 @@
#include "SkMatrix.h"
#include "SkShader.h"
+#if SK_SUPPORT_GPU
+#include "GrFPArgs.h"
+#endif
+
class GrContext;
class GrColorSpaceInfo;
class GrFragmentProcessor;
@@ -135,26 +139,6 @@
Context* makeBurstPipelineContext(const ContextRec&, SkArenaAlloc*) const;
#if SK_SUPPORT_GPU
- struct AsFPArgs {
- AsFPArgs() {}
- AsFPArgs(GrContext* context,
- const SkMatrix* viewMatrix,
- const SkMatrix* localMatrix,
- SkFilterQuality filterQuality,
- const GrColorSpaceInfo* dstColorSpaceInfo)
- : fContext(context)
- , fViewMatrix(viewMatrix)
- , fLocalMatrix(localMatrix)
- , fFilterQuality(filterQuality)
- , fDstColorSpaceInfo(dstColorSpaceInfo) {}
-
- GrContext* fContext;
- const SkMatrix* fViewMatrix;
- const SkMatrix* fLocalMatrix;
- SkFilterQuality fFilterQuality;
- const GrColorSpaceInfo* fDstColorSpaceInfo;
- };
-
/**
* Returns a GrFragmentProcessor that implements the shader for the GPU backend. NULL is
* returned if there is no GPU implementation.
@@ -168,7 +152,7 @@
* The returned GrFragmentProcessor should expect an unpremultiplied input color and
* produce a premultiplied output.
*/
- virtual std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const AsFPArgs&) const;
+ virtual std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const GrFPArgs&) const;
#endif
/**
diff --git a/src/shaders/gradients/SkLinearGradient.cpp b/src/shaders/gradients/SkLinearGradient.cpp
index 40e2271..86e8179 100644
--- a/src/shaders/gradients/SkLinearGradient.cpp
+++ b/src/shaders/gradients/SkLinearGradient.cpp
@@ -185,7 +185,7 @@
/////////////////////////////////////////////////////////////////////
std::unique_ptr<GrFragmentProcessor> SkLinearGradient::asFragmentProcessor(
- const AsFPArgs& args) const {
+ const GrFPArgs& args) const {
SkASSERT(args.fContext);
SkMatrix matrix;
diff --git a/src/shaders/gradients/SkLinearGradient.h b/src/shaders/gradients/SkLinearGradient.h
index c93f2b4..efe3996 100644
--- a/src/shaders/gradients/SkLinearGradient.h
+++ b/src/shaders/gradients/SkLinearGradient.h
@@ -16,7 +16,7 @@
GradientType asAGradient(GradientInfo* info) const override;
#if SK_SUPPORT_GPU
- std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const AsFPArgs&) const override;
+ std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const GrFPArgs&) const override;
#endif
SK_TO_STRING_OVERRIDE()
diff --git a/src/shaders/gradients/SkRadialGradient.cpp b/src/shaders/gradients/SkRadialGradient.cpp
index 49cfae1..becf4ff 100644
--- a/src/shaders/gradients/SkRadialGradient.cpp
+++ b/src/shaders/gradients/SkRadialGradient.cpp
@@ -161,7 +161,7 @@
/////////////////////////////////////////////////////////////////////
std::unique_ptr<GrFragmentProcessor> SkRadialGradient::asFragmentProcessor(
- const AsFPArgs& args) const {
+ const GrFPArgs& args) const {
SkASSERT(args.fContext);
SkMatrix matrix;
diff --git a/src/shaders/gradients/SkRadialGradient.h b/src/shaders/gradients/SkRadialGradient.h
index 1f6441b..06ba27f 100644
--- a/src/shaders/gradients/SkRadialGradient.h
+++ b/src/shaders/gradients/SkRadialGradient.h
@@ -16,7 +16,7 @@
GradientType asAGradient(GradientInfo* info) const override;
#if SK_SUPPORT_GPU
- std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const AsFPArgs&) const override;
+ std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const GrFPArgs&) const override;
#endif
SK_TO_STRING_OVERRIDE()
diff --git a/src/shaders/gradients/SkSweepGradient.cpp b/src/shaders/gradients/SkSweepGradient.cpp
index 93746f6..e9e0208 100644
--- a/src/shaders/gradients/SkSweepGradient.cpp
+++ b/src/shaders/gradients/SkSweepGradient.cpp
@@ -214,7 +214,7 @@
/////////////////////////////////////////////////////////////////////
std::unique_ptr<GrFragmentProcessor> SkSweepGradient::asFragmentProcessor(
- const AsFPArgs& args) const {
+ const GrFPArgs& args) const {
SkMatrix matrix;
if (!this->getLocalMatrix().invert(&matrix)) {
return nullptr;
diff --git a/src/shaders/gradients/SkSweepGradient.h b/src/shaders/gradients/SkSweepGradient.h
index 061d699..c4b5c67 100644
--- a/src/shaders/gradients/SkSweepGradient.h
+++ b/src/shaders/gradients/SkSweepGradient.h
@@ -17,7 +17,7 @@
GradientType asAGradient(GradientInfo* info) const override;
#if SK_SUPPORT_GPU
- std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const AsFPArgs&) const override;
+ std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const GrFPArgs&) const override;
#endif
SK_TO_STRING_OVERRIDE()
diff --git a/src/shaders/gradients/SkTwoPointConicalGradient.cpp b/src/shaders/gradients/SkTwoPointConicalGradient.cpp
index a3b02bb..024937a 100644
--- a/src/shaders/gradients/SkTwoPointConicalGradient.cpp
+++ b/src/shaders/gradients/SkTwoPointConicalGradient.cpp
@@ -174,7 +174,7 @@
#include "SkTwoPointConicalGradient_gpu.h"
std::unique_ptr<GrFragmentProcessor> SkTwoPointConicalGradient::asFragmentProcessor(
- const AsFPArgs& args) const {
+ const GrFPArgs& args) const {
SkASSERT(args.fContext);
return Gr2PtConicalGradientEffect::Make(
GrGradientEffect::CreateArgs(args.fContext, this, args.fLocalMatrix, fTileMode,
diff --git a/src/shaders/gradients/SkTwoPointConicalGradient.h b/src/shaders/gradients/SkTwoPointConicalGradient.h
index 37c0471..413a199 100644
--- a/src/shaders/gradients/SkTwoPointConicalGradient.h
+++ b/src/shaders/gradients/SkTwoPointConicalGradient.h
@@ -49,7 +49,7 @@
SkShader::GradientType asAGradient(GradientInfo* info) const override;
#if SK_SUPPORT_GPU
- std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const AsFPArgs&) const override;
+ std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const GrFPArgs&) const override;
#endif
bool isOpaque() const override;