Switch GPU blur code over to using GrRecordingContext
This is split out of: https://skia-review.googlesource.com/c/skia/+/191287 (Move DrawingManager to RecordingContext)
Change-Id: I305249f1e63bd4720264b0531733a219c79fe10a
Reviewed-on: https://skia-review.googlesource.com/c/192686
Auto-Submit: Robert Phillips <robertphillips@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
diff --git a/src/core/SkBlurMF.cpp b/src/core/SkBlurMF.cpp
index b3a1a6a..e175d2e 100644
--- a/src/core/SkBlurMF.cpp
+++ b/src/core/SkBlurMF.cpp
@@ -20,9 +20,9 @@
#if SK_SUPPORT_GPU
#include "GrClip.h"
-#include "GrContext.h"
-#include "GrContextPriv.h"
#include "GrFragmentProcessor.h"
+#include "GrRecordingContext.h"
+#include "GrRecordingContextPriv.h"
#include "GrRenderTargetContext.h"
#include "GrResourceProvider.h"
#include "GrShaderCaps.h"
@@ -55,13 +55,13 @@
const SkIRect& clipBounds,
const SkMatrix& ctm,
SkIRect* maskRect) const override;
- bool directFilterMaskGPU(GrContext*,
+ bool directFilterMaskGPU(GrRecordingContext*,
GrRenderTargetContext* renderTargetContext,
GrPaint&&,
const GrClip&,
const SkMatrix& viewMatrix,
const GrShape& shape) const override;
- sk_sp<GrTextureProxy> filterMaskGPU(GrContext*,
+ sk_sp<GrTextureProxy> filterMaskGPU(GrRecordingContext*,
sk_sp<GrTextureProxy> srcProxy,
const SkMatrix& ctm,
const SkIRect& maskRect) const override;
@@ -716,7 +716,7 @@
#if SK_SUPPORT_GPU
-bool SkBlurMaskFilterImpl::directFilterMaskGPU(GrContext* context,
+bool SkBlurMaskFilterImpl::directFilterMaskGPU(GrRecordingContext* context,
GrRenderTargetContext* renderTargetContext,
GrPaint&& paint,
const GrClip& clip,
@@ -868,7 +868,7 @@
return true;
}
-sk_sp<GrTextureProxy> SkBlurMaskFilterImpl::filterMaskGPU(GrContext* context,
+sk_sp<GrTextureProxy> SkBlurMaskFilterImpl::filterMaskGPU(GrRecordingContext* context,
sk_sp<GrTextureProxy> srcProxy,
const SkMatrix& ctm,
const SkIRect& maskRect) const {
diff --git a/src/core/SkGpuBlurUtils.cpp b/src/core/SkGpuBlurUtils.cpp
index 7c79d72..b6db18a 100644
--- a/src/core/SkGpuBlurUtils.cpp
+++ b/src/core/SkGpuBlurUtils.cpp
@@ -11,8 +11,9 @@
#if SK_SUPPORT_GPU
#include "GrCaps.h"
-#include "GrContext.h"
#include "GrFixedClip.h"
+#include "GrRecordingContext.h"
+#include "GrRecordingContextPriv.h"
#include "GrRenderTargetContext.h"
#include "GrRenderTargetContextPriv.h"
#include "effects/GrGaussianConvolutionFragmentProcessor.h"
@@ -103,7 +104,7 @@
return config;
}
-static sk_sp<GrRenderTargetContext> convolve_gaussian_2d(GrContext* context,
+static sk_sp<GrRenderTargetContext> convolve_gaussian_2d(GrRecordingContext* context,
sk_sp<GrTextureProxy> proxy,
const SkIRect& srcBounds,
const SkIPoint& srcOffset,
@@ -150,7 +151,7 @@
return renderTargetContext;
}
-static sk_sp<GrRenderTargetContext> convolve_gaussian(GrContext* context,
+static sk_sp<GrRenderTargetContext> convolve_gaussian(GrRecordingContext* context,
sk_sp<GrTextureProxy> proxy,
const SkIRect& srcRect,
const SkIPoint& srcOffset,
@@ -259,7 +260,7 @@
return dstRenderTargetContext;
}
-static sk_sp<GrTextureProxy> decimate(GrContext* context,
+static sk_sp<GrTextureProxy> decimate(GrRecordingContext* context,
sk_sp<GrTextureProxy> src,
SkIPoint* srcOffset,
SkIRect* contentRect,
@@ -373,7 +374,7 @@
}
// Expand the contents of 'srcRenderTargetContext' to fit in 'dstII'.
-static sk_sp<GrRenderTargetContext> reexpand(GrContext* context,
+static sk_sp<GrRenderTargetContext> reexpand(GrRecordingContext* context,
sk_sp<GrRenderTargetContext> srcRenderTargetContext,
const SkIRect& localSrcBounds,
int scaleFactorX, int scaleFactorY,
@@ -449,7 +450,7 @@
namespace SkGpuBlurUtils {
-sk_sp<GrRenderTargetContext> GaussianBlur(GrContext* context,
+sk_sp<GrRenderTargetContext> GaussianBlur(GrRecordingContext* context,
sk_sp<GrTextureProxy> srcProxy,
sk_sp<SkColorSpace> colorSpace,
const SkIRect& dstBounds,
diff --git a/src/core/SkGpuBlurUtils.h b/src/core/SkGpuBlurUtils.h
index e06dc8b..cfee28e 100644
--- a/src/core/SkGpuBlurUtils.h
+++ b/src/core/SkGpuBlurUtils.h
@@ -36,7 +36,7 @@
* @return The renderTargetContext containing the blurred result.
*/
sk_sp<GrRenderTargetContext> GaussianBlur(
- GrContext* context,
+ GrRecordingContext* context,
sk_sp<GrTextureProxy> src,
sk_sp<SkColorSpace> colorSpace,
const SkIRect& dstBounds,
diff --git a/src/core/SkMaskFilter.cpp b/src/core/SkMaskFilter.cpp
index 07e00a8..766be2b 100644
--- a/src/core/SkMaskFilter.cpp
+++ b/src/core/SkMaskFilter.cpp
@@ -331,7 +331,7 @@
return false;
}
-bool SkMaskFilterBase::directFilterMaskGPU(GrContext*,
+bool SkMaskFilterBase::directFilterMaskGPU(GrRecordingContext*,
GrRenderTargetContext*,
GrPaint&&,
const GrClip&,
@@ -340,7 +340,7 @@
return false;
}
-sk_sp<GrTextureProxy> SkMaskFilterBase::filterMaskGPU(GrContext*,
+sk_sp<GrTextureProxy> SkMaskFilterBase::filterMaskGPU(GrRecordingContext*,
sk_sp<GrTextureProxy> srcProxy,
const SkMatrix& ctm,
const SkIRect& maskRect) const {
diff --git a/src/core/SkMaskFilterBase.h b/src/core/SkMaskFilterBase.h
index d3a257c..b692e56 100644
--- a/src/core/SkMaskFilterBase.h
+++ b/src/core/SkMaskFilterBase.h
@@ -17,10 +17,10 @@
#include "SkStrokeRec.h"
class GrClip;
-class GrContext;
struct GrFPArgs;
class GrFragmentProcessor;
class GrPaint;
+class GrRecordingContext;
class GrRenderTarget;
class GrRenderTargetContext;
class GrResourceProvider;
@@ -108,7 +108,7 @@
* Try to directly render the mask filter into the target. Returns true if drawing was
* successful. If false is returned then paint is unmodified.
*/
- virtual bool directFilterMaskGPU(GrContext*,
+ virtual bool directFilterMaskGPU(GrRecordingContext*,
GrRenderTargetContext*,
GrPaint&& paint,
const GrClip&,
@@ -122,7 +122,7 @@
* Implementations are free to get the GrContext from the src texture in order to create
* additional textures and perform multiple passes.
*/
- virtual sk_sp<GrTextureProxy> filterMaskGPU(GrContext*,
+ virtual sk_sp<GrTextureProxy> filterMaskGPU(GrRecordingContext*,
sk_sp<GrTextureProxy> srcProxy,
const SkMatrix& ctm,
const SkIRect& maskRect) const;
diff --git a/src/gpu/GrBlurUtils.cpp b/src/gpu/GrBlurUtils.cpp
index 816801a..9ff53b6 100644
--- a/src/gpu/GrBlurUtils.cpp
+++ b/src/gpu/GrBlurUtils.cpp
@@ -8,10 +8,10 @@
#include "GrBlurUtils.h"
#include "GrCaps.h"
-#include "GrContext.h"
-#include "GrContextPriv.h"
#include "GrFixedClip.h"
#include "GrProxyProvider.h"
+#include "GrRecordingContext.h"
+#include "GrRecordingContextPriv.h"
#include "GrRenderTargetContext.h"
#include "GrRenderTargetContextPriv.h"
#include "GrShape.h"
@@ -58,7 +58,7 @@
SkMask::FreeImage(addr);
}
-static bool sw_draw_with_mask_filter(GrContext* context,
+static bool sw_draw_with_mask_filter(GrRecordingContext* context,
GrRenderTargetContext* renderTargetContext,
const GrClip& clipData,
const SkMatrix& viewMatrix,
@@ -170,7 +170,7 @@
}
// Create a mask of 'shape' and place the result in 'mask'.
-static sk_sp<GrTextureProxy> create_mask_GPU(GrContext* context,
+static sk_sp<GrTextureProxy> create_mask_GPU(GrRecordingContext* context,
const SkIRect& maskRect,
const SkMatrix& origViewMatrix,
const GrShape& shape,
@@ -249,7 +249,7 @@
return true;
}
-static void draw_shape_with_mask_filter(GrContext* context,
+static void draw_shape_with_mask_filter(GrRecordingContext* context,
GrRenderTargetContext* renderTargetContext,
const GrClip& clip,
GrPaint&& paint,
@@ -430,7 +430,7 @@
maskFilter, *boundsForClip, std::move(paint), maskKey);
}
-void GrBlurUtils::drawShapeWithMaskFilter(GrContext* context,
+void GrBlurUtils::drawShapeWithMaskFilter(GrRecordingContext* context,
GrRenderTargetContext* renderTargetContext,
const GrClip& clip,
const GrShape& shape,
diff --git a/src/gpu/GrBlurUtils.h b/src/gpu/GrBlurUtils.h
index 6db3cd2..bb7adbf 100644
--- a/src/gpu/GrBlurUtils.h
+++ b/src/gpu/GrBlurUtils.h
@@ -13,6 +13,7 @@
class GrClip;
class GrContext;
class GrPaint;
+class GrRecordingContext;
class GrRenderTarget;
class GrRenderTargetContext;
class GrShape;
@@ -43,7 +44,7 @@
* Draw a shape handling the mask filter. The mask filter is not optional.
* The GrPaint will be modified after return.
*/
- void drawShapeWithMaskFilter(GrContext*,
+ void drawShapeWithMaskFilter(GrRecordingContext*,
GrRenderTargetContext*,
const GrClip&,
const GrShape&,
diff --git a/src/gpu/effects/GrRRectBlurEffect.cpp b/src/gpu/effects/GrRRectBlurEffect.cpp
index e84fae2..6f1f62b 100644
--- a/src/gpu/effects/GrRRectBlurEffect.cpp
+++ b/src/gpu/effects/GrRRectBlurEffect.cpp
@@ -10,7 +10,8 @@
**************************************************************************************************/
#include "GrRRectBlurEffect.h"
-std::unique_ptr<GrFragmentProcessor> GrRRectBlurEffect::Make(GrContext* context, float sigma,
+std::unique_ptr<GrFragmentProcessor> GrRRectBlurEffect::Make(GrRecordingContext* context,
+ float sigma,
float xformedSigma,
const SkRRect& srcRRect,
const SkRRect& devRRect) {
diff --git a/src/gpu/effects/GrRRectBlurEffect.fp b/src/gpu/effects/GrRRectBlurEffect.fp
index 698851b5..8289d56 100644
--- a/src/gpu/effects/GrRRectBlurEffect.fp
+++ b/src/gpu/effects/GrRRectBlurEffect.fp
@@ -14,10 +14,10 @@
@header {
#include "GrClip.h"
- #include "GrContext.h"
- #include "GrContextPriv.h"
#include "GrPaint.h"
#include "GrProxyProvider.h"
+ #include "GrRecordingContext.h"
+ #include "GrRecordingContextPriv.h"
#include "GrRenderTargetContext.h"
#include "GrStyle.h"
#include "SkBlurMaskFilter.h"
@@ -27,7 +27,7 @@
}
@class {
- static sk_sp<GrTextureProxy> find_or_create_rrect_blur_mask(GrContext* context,
+ static sk_sp<GrTextureProxy> find_or_create_rrect_blur_mask(GrRecordingContext* context,
const SkRRect& rrectToDraw,
const SkISize& size,
float xformedSigma) {
@@ -105,14 +105,16 @@
}
@make {
- static std::unique_ptr<GrFragmentProcessor> Make(GrContext* context, float sigma,
+ static std::unique_ptr<GrFragmentProcessor> Make(GrRecordingContext* context,
+ float sigma,
float xformedSigma,
const SkRRect& srcRRect,
const SkRRect& devRRect);
}
@cpp {
- std::unique_ptr<GrFragmentProcessor> GrRRectBlurEffect::Make(GrContext* context, float sigma,
+ std::unique_ptr<GrFragmentProcessor> GrRRectBlurEffect::Make(GrRecordingContext* context,
+ float sigma,
float xformedSigma,
const SkRRect& srcRRect,
const SkRRect& devRRect) {
diff --git a/src/gpu/effects/GrRRectBlurEffect.h b/src/gpu/effects/GrRRectBlurEffect.h
index ae43a33..720167d 100644
--- a/src/gpu/effects/GrRRectBlurEffect.h
+++ b/src/gpu/effects/GrRRectBlurEffect.h
@@ -13,10 +13,10 @@
#include "SkTypes.h"
#include "GrClip.h"
-#include "GrContext.h"
-#include "GrContextPriv.h"
#include "GrPaint.h"
#include "GrProxyProvider.h"
+#include "GrRecordingContext.h"
+#include "GrRecordingContextPriv.h"
#include "GrRenderTargetContext.h"
#include "GrStyle.h"
#include "SkBlurMaskFilter.h"
@@ -27,7 +27,7 @@
#include "GrCoordTransform.h"
class GrRRectBlurEffect : public GrFragmentProcessor {
public:
- static sk_sp<GrTextureProxy> find_or_create_rrect_blur_mask(GrContext* context,
+ static sk_sp<GrTextureProxy> find_or_create_rrect_blur_mask(GrRecordingContext* context,
const SkRRect& rrectToDraw,
const SkISize& size,
float xformedSigma) {
@@ -102,8 +102,10 @@
const SkRect& rect() const { return fRect; }
float cornerRadius() const { return fCornerRadius; }
- static std::unique_ptr<GrFragmentProcessor> Make(GrContext* context, float sigma,
- float xformedSigma, const SkRRect& srcRRect,
+ static std::unique_ptr<GrFragmentProcessor> Make(GrRecordingContext* context,
+ float sigma,
+ float xformedSigma,
+ const SkRRect& srcRRect,
const SkRRect& devRRect);
GrRRectBlurEffect(const GrRRectBlurEffect& src);
std::unique_ptr<GrFragmentProcessor> clone() const override;