aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/dcshader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gm/dcshader.cpp')
-rw-r--r--gm/dcshader.cpp24
1 files changed, 14 insertions, 10 deletions
diff --git a/gm/dcshader.cpp b/gm/dcshader.cpp
index 3eee43d147..976e2530ea 100644
--- a/gm/dcshader.cpp
+++ b/gm/dcshader.cpp
@@ -10,6 +10,7 @@
#if SK_SUPPORT_GPU
#include "GrFragmentProcessor.h"
#include "GrCoordTransform.h"
+#include "effects/GrExtractAlphaFragmentProcessor.h"
#include "gl/GrGLProcessor.h"
#include "gl/builders/GrGLProgramBuilder.h"
#include "Resources.h"
@@ -33,9 +34,11 @@ public:
buf.writeMatrix(fDeviceMatrix);
}
- bool asFragmentProcessor(GrContext*, const SkPaint& paint, const SkMatrix& viewM,
- const SkMatrix* localMatrix, GrColor* color, GrProcessorDataManager*,
- GrFragmentProcessor** fp) const override;
+ const GrFragmentProcessor* asFragmentProcessor(GrContext*,
+ const SkMatrix& viewM,
+ const SkMatrix* localMatrix,
+ SkFilterQuality,
+ GrProcessorDataManager*) const override;
#ifndef SK_IGNORE_TO_STRING
void toString(SkString* str) const override {
@@ -94,13 +97,14 @@ private:
GrCoordTransform fDeviceTransform;
};
-bool DCShader::asFragmentProcessor(GrContext*, const SkPaint& paint, const SkMatrix& viewM,
- const SkMatrix* localMatrix, GrColor* color,
- GrProcessorDataManager* procDataManager,
- GrFragmentProcessor** fp) const {
- *fp = new DCFP(procDataManager, fDeviceMatrix);
- *color = GrColorPackA4(paint.getAlpha());
- return true;
+const GrFragmentProcessor* DCShader::asFragmentProcessor(
+ GrContext*,
+ const SkMatrix& viewM,
+ const SkMatrix* localMatrix,
+ SkFilterQuality,
+ GrProcessorDataManager* procDataManager) const {
+ SkAutoTUnref<const GrFragmentProcessor> inner(new DCFP(procDataManager, fDeviceMatrix));
+ return GrExtractAlphaFragmentProcessor::Create(inner);
}
class DCShaderGM : public GM {