Initial implementation of GPU no filter NinePatch
TBR=bsalomon@google.com
BUG=skia:
Review URL: https://codereview.chromium.org/1454933002
diff --git a/src/gpu/SkGr.cpp b/src/gpu/SkGr.cpp
index affd6cd..411b5b2 100644
--- a/src/gpu/SkGr.cpp
+++ b/src/gpu/SkGr.cpp
@@ -545,6 +545,34 @@
grPaint);
}
+bool SkPaintToGrPaintWithTexture(GrContext* context,
+ const SkPaint& paint,
+ const SkMatrix& viewM,
+ const GrFragmentProcessor* fp,
+ bool textureIsAlphaOnly,
+ GrPaint* grPaint) {
+ SkAutoTUnref<const GrFragmentProcessor> shaderFP;
+ if (textureIsAlphaOnly) {
+ if (const SkShader* shader = paint.getShader()) {
+ shaderFP.reset(shader->asFragmentProcessor(context,
+ viewM,
+ nullptr,
+ paint.getFilterQuality()));
+ if (!shaderFP) {
+ return false;
+ }
+ const GrFragmentProcessor* fpSeries[] = { shaderFP.get(), fp };
+ shaderFP.reset(GrFragmentProcessor::RunInSeries(fpSeries, 2));
+ } else {
+ shaderFP.reset(GrFragmentProcessor::MulOutputByInputUnpremulColor(fp));
+ }
+ } else {
+ shaderFP.reset(GrFragmentProcessor::MulOutputByInputAlpha(fp));
+ }
+
+ return SkPaintToGrPaintReplaceShader(context, paint, shaderFP.get(), grPaint);
+}
+
////////////////////////////////////////////////////////////////////////////////////////////////