diff options
author | 2015-11-13 06:54:19 -0800 | |
---|---|---|
committer | 2015-11-13 06:54:19 -0800 | |
commit | 64c4728c70001ed074fecf5c4e083781987b12e9 (patch) | |
tree | 9c46b7028d1d04b526cca0671deb88aa003fc8d6 /src/gpu/glsl/GrGLSLUtil.cpp | |
parent | 6b90df6b1c6ed843be3ac09605050605f9ec9150 (diff) |
Make all GrFragmentProcessors GL independent.
TBR=bsalomon@google.com
BUG=skia:
Review URL: https://codereview.chromium.org/1434313002
Diffstat (limited to 'src/gpu/glsl/GrGLSLUtil.cpp')
-rw-r--r-- | src/gpu/glsl/GrGLSLUtil.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/gpu/glsl/GrGLSLUtil.cpp b/src/gpu/glsl/GrGLSLUtil.cpp new file mode 100644 index 0000000000..5a333244b2 --- /dev/null +++ b/src/gpu/glsl/GrGLSLUtil.cpp @@ -0,0 +1,52 @@ +/* +* Copyright 2015 Google Inc. +* +* Use of this source code is governed by a BSD-style license that can be +* found in the LICENSE file. +*/ + +#include "GrGLSLUtil.h" +#include "SkMatrix.h" + +template<> void GrGLSLGetMatrix<3>(float* dest, const SkMatrix& src) { + // Col 0 + dest[0] = SkScalarToFloat(src[SkMatrix::kMScaleX]); + dest[1] = SkScalarToFloat(src[SkMatrix::kMSkewY]); + dest[2] = SkScalarToFloat(src[SkMatrix::kMPersp0]); + + // Col 1 + dest[3] = SkScalarToFloat(src[SkMatrix::kMSkewX]); + dest[4] = SkScalarToFloat(src[SkMatrix::kMScaleY]); + dest[5] = SkScalarToFloat(src[SkMatrix::kMPersp1]); + + // Col 2 + dest[6] = SkScalarToFloat(src[SkMatrix::kMTransX]); + dest[7] = SkScalarToFloat(src[SkMatrix::kMTransY]); + dest[8] = SkScalarToFloat(src[SkMatrix::kMPersp2]); +} + +template<> void GrGLSLGetMatrix<4>(float* dest, const SkMatrix& src) { + // Col 0 + dest[0] = SkScalarToFloat(src[SkMatrix::kMScaleX]); + dest[1] = SkScalarToFloat(src[SkMatrix::kMSkewY]); + dest[2] = 0; + dest[3] = SkScalarToFloat(src[SkMatrix::kMPersp0]); + + // Col 1 + dest[4] = SkScalarToFloat(src[SkMatrix::kMSkewX]); + dest[5] = SkScalarToFloat(src[SkMatrix::kMScaleY]); + dest[6] = 0; + dest[7] = SkScalarToFloat(src[SkMatrix::kMPersp1]); + + // Col 2 + dest[8] = 0; + dest[9] = 0; + dest[10] = 1; + dest[11] = 0; + + // Col 3 + dest[12] = SkScalarToFloat(src[SkMatrix::kMTransX]); + dest[13] = SkScalarToFloat(src[SkMatrix::kMTransY]); + dest[14] = 0; + dest[15] = SkScalarToFloat(src[SkMatrix::kMPersp2]); +} |