Make all GrFragmentProcessors GL independent.
[platform/upstream/libSkiaSharp.git] / src / gpu / glsl / GrGLSLUtil.cpp
1 /*
2 * Copyright 2015 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8 #include "GrGLSLUtil.h"
9 #include "SkMatrix.h"
10
11 template<> void GrGLSLGetMatrix<3>(float* dest, const SkMatrix& src) {
12     // Col 0
13     dest[0] = SkScalarToFloat(src[SkMatrix::kMScaleX]);
14     dest[1] = SkScalarToFloat(src[SkMatrix::kMSkewY]);
15     dest[2] = SkScalarToFloat(src[SkMatrix::kMPersp0]);
16
17     // Col 1
18     dest[3] = SkScalarToFloat(src[SkMatrix::kMSkewX]);
19     dest[4] = SkScalarToFloat(src[SkMatrix::kMScaleY]);
20     dest[5] = SkScalarToFloat(src[SkMatrix::kMPersp1]);
21
22     // Col 2
23     dest[6] = SkScalarToFloat(src[SkMatrix::kMTransX]);
24     dest[7] = SkScalarToFloat(src[SkMatrix::kMTransY]);
25     dest[8] = SkScalarToFloat(src[SkMatrix::kMPersp2]);
26 }
27
28 template<> void GrGLSLGetMatrix<4>(float* dest, const SkMatrix& src) {
29     // Col 0
30     dest[0] = SkScalarToFloat(src[SkMatrix::kMScaleX]);
31     dest[1] = SkScalarToFloat(src[SkMatrix::kMSkewY]);
32     dest[2] = 0;
33     dest[3] = SkScalarToFloat(src[SkMatrix::kMPersp0]);
34
35     // Col 1
36     dest[4] = SkScalarToFloat(src[SkMatrix::kMSkewX]);
37     dest[5] = SkScalarToFloat(src[SkMatrix::kMScaleY]);
38     dest[6] = 0;
39     dest[7] = SkScalarToFloat(src[SkMatrix::kMPersp1]);
40
41     // Col 2
42     dest[8] = 0;
43     dest[9] = 0;
44     dest[10] = 1;
45     dest[11] = 0;
46
47     // Col 3
48     dest[12] = SkScalarToFloat(src[SkMatrix::kMTransX]);
49     dest[13] = SkScalarToFloat(src[SkMatrix::kMTransY]);
50     dest[14] = 0;
51     dest[15] = SkScalarToFloat(src[SkMatrix::kMPersp2]);
52 }