Move SkSLSampleMatrix to include/private

Switch it to use std::string (not SkSL::String). Along these lines,
remove SkSL::String's operator SkString, and instead add an explicit
SkString constructor from std::string.

Other changes aren't strictly necessary, but I wanted to clean up some
of the other SkSL vs. Skia code barriers. VS (since 2015) has had
vsnprintf that conforms to the C99 standard, the only difference with
_vsnprintf is a different (nonstandard) return value for overflowing
calls. Remove the special-case (the only use of SKSL_BUILD_FOR_WIN).

Change-Id: I8826af10c8e78a8d935c601d00b8ae9ba0640041
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/298816
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
diff --git a/src/gpu/glsl/GrGLSLFragmentProcessor.cpp b/src/gpu/glsl/GrGLSLFragmentProcessor.cpp
index dc42cf9..5d280d4 100644
--- a/src/gpu/glsl/GrGLSLFragmentProcessor.cpp
+++ b/src/gpu/glsl/GrGLSLFragmentProcessor.cpp
@@ -100,7 +100,7 @@
         // Empty matrix expression replaces with the sampleMatrix expression stored on the FP, but
         // that is only valid for const/uniform sampled FPs
         SkASSERT(childProc.sampleMatrix().isConstUniform());
-        skslMatrix = childProc.sampleMatrix().fExpression;
+        skslMatrix.assign(childProc.sampleMatrix().fExpression);
     }
 
     if (childProc.sampleMatrix().isConstUniform()) {
@@ -109,7 +109,7 @@
         // to the FP.
         SkASSERT(childProc.sampleMatrix().fExpression == skslMatrix);
         GrShaderVar uniform = args.fUniformHandler->getUniformMapping(
-                args.fFp, childProc.sampleMatrix().fExpression);
+                args.fFp, SkString(childProc.sampleMatrix().fExpression));
         if (uniform.getType() != kVoid_GrSLType) {
             // Found the uniform, so replace the expression with the actual uniform name
             SkASSERT(uniform.getType() == kFloat3x3_GrSLType);