Re-re-land sksl fragment processor support

This reverts commit 5ce397205528f82084fc650c2ce27d246c01da33.

Bug: skia:
Change-Id: I88260c90004610a1cf8ad1a87c2b4b222525bbb6
Reviewed-on: https://skia-review.googlesource.com/21108
Reviewed-by: Ben Wagner <benjaminwagner@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
diff --git a/src/sksl/SkSLCPP.h b/src/sksl/SkSLCPP.h
new file mode 100644
index 0000000..47f8a40
--- /dev/null
+++ b/src/sksl/SkSLCPP.h
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2017 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SKSL_CPP
+#define SKSL_CPP
+
+// functions used by CPP programs created by skslc
+
+#include "SkPoint.h"
+
+// macros to make sk_Caps.<cap name> work from C++ code
+#define sk_Caps (*args.fShaderCaps)
+
+#define floatPrecisionVaries floatPrecisionVaries()
+
+// functions to make GLSL constructors work from C++ code
+inline SkPoint vec2(float xy) { return SkPoint::Make(xy, xy); }
+
+inline SkPoint vec2(float x, float y) { return SkPoint::Make(x, y); }
+
+#endif