OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2012 Google Inc. | 2 * Copyright 2012 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include "SkMatrix.h" | 8 #include "SkMatrix.h" |
9 #include "gl/GrGLProgramDataManager.h" | 9 #include "gl/GrGLProgramDataManager.h" |
10 #include "gl/GrGLGpu.h" | 10 #include "gl/GrGLGpu.h" |
11 | 11 |
12 #define ASSERT_ARRAY_UPLOAD_IN_BOUNDS(UNI, COUNT) \ | 12 #define ASSERT_ARRAY_UPLOAD_IN_BOUNDS(UNI, COUNT) \ |
13 SkASSERT(arrayCount <= uni.fArrayCount || \ | 13 SkASSERT(arrayCount <= uni.fArrayCount || \ |
14 (1 == arrayCount && GrGLShaderVar::kNonArray == uni.fArrayCoun
t)) | 14 (1 == arrayCount && GrGLSLShaderVar::kNonArray == uni.fArrayCo
unt)) |
15 | 15 |
16 GrGLProgramDataManager::GrGLProgramDataManager(GrGLGpu* gpu, GrGLuint programID, | 16 GrGLProgramDataManager::GrGLProgramDataManager(GrGLGpu* gpu, GrGLuint programID, |
17 const UniformInfoArray& uniforms, | 17 const UniformInfoArray& uniforms, |
18 const SeparableVaryingInfoArray&
separableVaryings) | 18 const SeparableVaryingInfoArray&
separableVaryings) |
19 : fGpu(gpu) | 19 : fGpu(gpu) |
20 , fProgramID(programID) { | 20 , fProgramID(programID) { |
21 int count = uniforms.count(); | 21 int count = uniforms.count(); |
22 fUniforms.push_back_n(count); | 22 fUniforms.push_back_n(count); |
23 for (int i = 0; i < count; i++) { | 23 for (int i = 0; i < count; i++) { |
24 Uniform& uniform = fUniforms[i]; | 24 Uniform& uniform = fUniforms[i]; |
25 const UniformInfo& builderUniform = uniforms[i]; | 25 const UniformInfo& builderUniform = uniforms[i]; |
26 SkASSERT(GrGLShaderVar::kNonArray == builderUniform.fVariable.getArrayCo
unt() || | 26 SkASSERT(GrGLSLShaderVar::kNonArray == builderUniform.fVariable.getArray
Count() || |
27 builderUniform.fVariable.getArrayCount() > 0); | 27 builderUniform.fVariable.getArrayCount() > 0); |
28 SkDEBUGCODE( | 28 SkDEBUGCODE( |
29 uniform.fArrayCount = builderUniform.fVariable.getArrayCount(); | 29 uniform.fArrayCount = builderUniform.fVariable.getArrayCount(); |
30 uniform.fType = builderUniform.fVariable.getType(); | 30 uniform.fType = builderUniform.fVariable.getType(); |
31 ); | 31 ); |
32 // TODO: Move the Xoom uniform array in both FS and VS bug workaround he
re. | 32 // TODO: Move the Xoom uniform array in both FS and VS bug workaround he
re. |
33 | 33 |
34 if (GrGLProgramBuilder::kVertex_Visibility & builderUniform.fVisibility)
{ | 34 if (GrGLProgramBuilder::kVertex_Visibility & builderUniform.fVisibility)
{ |
35 uniform.fVSLocation = builderUniform.fLocation; | 35 uniform.fVSLocation = builderUniform.fLocation; |
36 } else { | 36 } else { |
37 uniform.fVSLocation = kUnusedUniform; | 37 uniform.fVSLocation = kUnusedUniform; |
38 } | 38 } |
39 if (GrGLProgramBuilder::kFragment_Visibility & builderUniform.fVisibilit
y) { | 39 if (GrGLProgramBuilder::kFragment_Visibility & builderUniform.fVisibilit
y) { |
40 uniform.fFSLocation = builderUniform.fLocation; | 40 uniform.fFSLocation = builderUniform.fLocation; |
41 } else { | 41 } else { |
42 uniform.fFSLocation = kUnusedUniform; | 42 uniform.fFSLocation = kUnusedUniform; |
43 } | 43 } |
44 } | 44 } |
45 | 45 |
46 // NVPR programs have separable varyings | 46 // NVPR programs have separable varyings |
47 count = separableVaryings.count(); | 47 count = separableVaryings.count(); |
48 fSeparableVaryings.push_back_n(count); | 48 fSeparableVaryings.push_back_n(count); |
49 for (int i = 0; i < count; i++) { | 49 for (int i = 0; i < count; i++) { |
50 SkASSERT(fGpu->glCaps().shaderCaps()->pathRenderingSupport()); | 50 SkASSERT(fGpu->glCaps().shaderCaps()->pathRenderingSupport()); |
51 SeparableVarying& separableVarying = fSeparableVaryings[i]; | 51 SeparableVarying& separableVarying = fSeparableVaryings[i]; |
52 const SeparableVaryingInfo& builderSeparableVarying = separableVaryings[
i]; | 52 const SeparableVaryingInfo& builderSeparableVarying = separableVaryings[
i]; |
53 SkASSERT(GrGLShaderVar::kNonArray == builderSeparableVarying.fVariable.g
etArrayCount() || | 53 SkASSERT(GrGLSLShaderVar::kNonArray == builderSeparableVarying.fVariable
.getArrayCount() || |
54 builderSeparableVarying.fVariable.getArrayCount() > 0); | 54 builderSeparableVarying.fVariable.getArrayCount() > 0); |
55 SkDEBUGCODE( | 55 SkDEBUGCODE( |
56 separableVarying.fArrayCount = builderSeparableVarying.fVariable.get
ArrayCount(); | 56 separableVarying.fArrayCount = builderSeparableVarying.fVariable.get
ArrayCount(); |
57 separableVarying.fType = builderSeparableVarying.fVariable.getType()
; | 57 separableVarying.fType = builderSeparableVarying.fVariable.getType()
; |
58 ); | 58 ); |
59 separableVarying.fLocation = builderSeparableVarying.fLocation; | 59 separableVarying.fLocation = builderSeparableVarying.fLocation; |
60 } | 60 } |
61 } | 61 } |
62 | 62 |
63 void GrGLProgramDataManager::setSampler(UniformHandle u, GrGLint texUnit) const
{ | 63 void GrGLProgramDataManager::setSampler(UniformHandle u, GrGLint texUnit) const
{ |
64 const Uniform& uni = fUniforms[u.toIndex()]; | 64 const Uniform& uni = fUniforms[u.toIndex()]; |
65 SkASSERT(uni.fType == kSampler2D_GrSLType); | 65 SkASSERT(uni.fType == kSampler2D_GrSLType); |
66 SkASSERT(GrGLShaderVar::kNonArray == uni.fArrayCount); | 66 SkASSERT(GrGLSLShaderVar::kNonArray == uni.fArrayCount); |
67 // FIXME: We still insert a single sampler uniform for every stage. If the s
hader does not | 67 // FIXME: We still insert a single sampler uniform for every stage. If the s
hader does not |
68 // reference the sampler then the compiler may have optimized it out. Uncomm
ent this assert | 68 // reference the sampler then the compiler may have optimized it out. Uncomm
ent this assert |
69 // once stages insert their own samplers. | 69 // once stages insert their own samplers. |
70 // this->printUnused(uni); | 70 // this->printUnused(uni); |
71 if (kUnusedUniform != uni.fFSLocation) { | 71 if (kUnusedUniform != uni.fFSLocation) { |
72 GR_GL_CALL(fGpu->glInterface(), Uniform1i(uni.fFSLocation, texUnit)); | 72 GR_GL_CALL(fGpu->glInterface(), Uniform1i(uni.fFSLocation, texUnit)); |
73 } | 73 } |
74 if (kUnusedUniform != uni.fVSLocation && uni.fVSLocation != uni.fFSLocation)
{ | 74 if (kUnusedUniform != uni.fVSLocation && uni.fVSLocation != uni.fFSLocation)
{ |
75 GR_GL_CALL(fGpu->glInterface(), Uniform1i(uni.fVSLocation, texUnit)); | 75 GR_GL_CALL(fGpu->glInterface(), Uniform1i(uni.fVSLocation, texUnit)); |
76 } | 76 } |
77 } | 77 } |
78 | 78 |
79 void GrGLProgramDataManager::set1f(UniformHandle u, GrGLfloat v0) const { | 79 void GrGLProgramDataManager::set1f(UniformHandle u, GrGLfloat v0) const { |
80 const Uniform& uni = fUniforms[u.toIndex()]; | 80 const Uniform& uni = fUniforms[u.toIndex()]; |
81 SkASSERT(uni.fType == kFloat_GrSLType); | 81 SkASSERT(uni.fType == kFloat_GrSLType); |
82 SkASSERT(GrGLShaderVar::kNonArray == uni.fArrayCount); | 82 SkASSERT(GrGLSLShaderVar::kNonArray == uni.fArrayCount); |
83 SkDEBUGCODE(this->printUnused(uni);) | 83 SkDEBUGCODE(this->printUnused(uni);) |
84 if (kUnusedUniform != uni.fFSLocation) { | 84 if (kUnusedUniform != uni.fFSLocation) { |
85 GR_GL_CALL(fGpu->glInterface(), Uniform1f(uni.fFSLocation, v0)); | 85 GR_GL_CALL(fGpu->glInterface(), Uniform1f(uni.fFSLocation, v0)); |
86 } | 86 } |
87 if (kUnusedUniform != uni.fVSLocation && uni.fVSLocation != uni.fFSLocation)
{ | 87 if (kUnusedUniform != uni.fVSLocation && uni.fVSLocation != uni.fFSLocation)
{ |
88 GR_GL_CALL(fGpu->glInterface(), Uniform1f(uni.fVSLocation, v0)); | 88 GR_GL_CALL(fGpu->glInterface(), Uniform1f(uni.fVSLocation, v0)); |
89 } | 89 } |
90 } | 90 } |
91 | 91 |
92 void GrGLProgramDataManager::set1fv(UniformHandle u, | 92 void GrGLProgramDataManager::set1fv(UniformHandle u, |
(...skipping 11 matching lines...) Expand all Loading... |
104 GR_GL_CALL(fGpu->glInterface(), Uniform1fv(uni.fFSLocation, arrayCount,
v)); | 104 GR_GL_CALL(fGpu->glInterface(), Uniform1fv(uni.fFSLocation, arrayCount,
v)); |
105 } | 105 } |
106 if (kUnusedUniform != uni.fVSLocation && uni.fVSLocation != uni.fFSLocation)
{ | 106 if (kUnusedUniform != uni.fVSLocation && uni.fVSLocation != uni.fFSLocation)
{ |
107 GR_GL_CALL(fGpu->glInterface(), Uniform1fv(uni.fVSLocation, arrayCount,
v)); | 107 GR_GL_CALL(fGpu->glInterface(), Uniform1fv(uni.fVSLocation, arrayCount,
v)); |
108 } | 108 } |
109 } | 109 } |
110 | 110 |
111 void GrGLProgramDataManager::set2f(UniformHandle u, GrGLfloat v0, GrGLfloat v1)
const { | 111 void GrGLProgramDataManager::set2f(UniformHandle u, GrGLfloat v0, GrGLfloat v1)
const { |
112 const Uniform& uni = fUniforms[u.toIndex()]; | 112 const Uniform& uni = fUniforms[u.toIndex()]; |
113 SkASSERT(uni.fType == kVec2f_GrSLType); | 113 SkASSERT(uni.fType == kVec2f_GrSLType); |
114 SkASSERT(GrGLShaderVar::kNonArray == uni.fArrayCount); | 114 SkASSERT(GrGLSLShaderVar::kNonArray == uni.fArrayCount); |
115 SkDEBUGCODE(this->printUnused(uni);) | 115 SkDEBUGCODE(this->printUnused(uni);) |
116 if (kUnusedUniform != uni.fFSLocation) { | 116 if (kUnusedUniform != uni.fFSLocation) { |
117 GR_GL_CALL(fGpu->glInterface(), Uniform2f(uni.fFSLocation, v0, v1)); | 117 GR_GL_CALL(fGpu->glInterface(), Uniform2f(uni.fFSLocation, v0, v1)); |
118 } | 118 } |
119 if (kUnusedUniform != uni.fVSLocation && uni.fVSLocation != uni.fFSLocation)
{ | 119 if (kUnusedUniform != uni.fVSLocation && uni.fVSLocation != uni.fFSLocation)
{ |
120 GR_GL_CALL(fGpu->glInterface(), Uniform2f(uni.fVSLocation, v0, v1)); | 120 GR_GL_CALL(fGpu->glInterface(), Uniform2f(uni.fVSLocation, v0, v1)); |
121 } | 121 } |
122 } | 122 } |
123 | 123 |
124 void GrGLProgramDataManager::set2fv(UniformHandle u, | 124 void GrGLProgramDataManager::set2fv(UniformHandle u, |
125 int arrayCount, | 125 int arrayCount, |
126 const GrGLfloat v[]) const { | 126 const GrGLfloat v[]) const { |
127 const Uniform& uni = fUniforms[u.toIndex()]; | 127 const Uniform& uni = fUniforms[u.toIndex()]; |
128 SkASSERT(uni.fType == kVec2f_GrSLType); | 128 SkASSERT(uni.fType == kVec2f_GrSLType); |
129 SkASSERT(arrayCount > 0); | 129 SkASSERT(arrayCount > 0); |
130 ASSERT_ARRAY_UPLOAD_IN_BOUNDS(uni, arrayCount); | 130 ASSERT_ARRAY_UPLOAD_IN_BOUNDS(uni, arrayCount); |
131 SkDEBUGCODE(this->printUnused(uni);) | 131 SkDEBUGCODE(this->printUnused(uni);) |
132 if (kUnusedUniform != uni.fFSLocation) { | 132 if (kUnusedUniform != uni.fFSLocation) { |
133 GR_GL_CALL(fGpu->glInterface(), Uniform2fv(uni.fFSLocation, arrayCount,
v)); | 133 GR_GL_CALL(fGpu->glInterface(), Uniform2fv(uni.fFSLocation, arrayCount,
v)); |
134 } | 134 } |
135 if (kUnusedUniform != uni.fVSLocation && uni.fVSLocation != uni.fFSLocation)
{ | 135 if (kUnusedUniform != uni.fVSLocation && uni.fVSLocation != uni.fFSLocation)
{ |
136 GR_GL_CALL(fGpu->glInterface(), Uniform2fv(uni.fVSLocation, arrayCount,
v)); | 136 GR_GL_CALL(fGpu->glInterface(), Uniform2fv(uni.fVSLocation, arrayCount,
v)); |
137 } | 137 } |
138 } | 138 } |
139 | 139 |
140 void GrGLProgramDataManager::set3f(UniformHandle u, GrGLfloat v0, GrGLfloat v1,
GrGLfloat v2) const { | 140 void GrGLProgramDataManager::set3f(UniformHandle u, GrGLfloat v0, GrGLfloat v1,
GrGLfloat v2) const { |
141 const Uniform& uni = fUniforms[u.toIndex()]; | 141 const Uniform& uni = fUniforms[u.toIndex()]; |
142 SkASSERT(uni.fType == kVec3f_GrSLType); | 142 SkASSERT(uni.fType == kVec3f_GrSLType); |
143 SkASSERT(GrGLShaderVar::kNonArray == uni.fArrayCount); | 143 SkASSERT(GrGLSLShaderVar::kNonArray == uni.fArrayCount); |
144 SkDEBUGCODE(this->printUnused(uni);) | 144 SkDEBUGCODE(this->printUnused(uni);) |
145 if (kUnusedUniform != uni.fFSLocation) { | 145 if (kUnusedUniform != uni.fFSLocation) { |
146 GR_GL_CALL(fGpu->glInterface(), Uniform3f(uni.fFSLocation, v0, v1, v2)); | 146 GR_GL_CALL(fGpu->glInterface(), Uniform3f(uni.fFSLocation, v0, v1, v2)); |
147 } | 147 } |
148 if (kUnusedUniform != uni.fVSLocation && uni.fVSLocation != uni.fFSLocation)
{ | 148 if (kUnusedUniform != uni.fVSLocation && uni.fVSLocation != uni.fFSLocation)
{ |
149 GR_GL_CALL(fGpu->glInterface(), Uniform3f(uni.fVSLocation, v0, v1, v2)); | 149 GR_GL_CALL(fGpu->glInterface(), Uniform3f(uni.fVSLocation, v0, v1, v2)); |
150 } | 150 } |
151 } | 151 } |
152 | 152 |
153 void GrGLProgramDataManager::set3fv(UniformHandle u, | 153 void GrGLProgramDataManager::set3fv(UniformHandle u, |
(...skipping 12 matching lines...) Expand all Loading... |
166 } | 166 } |
167 } | 167 } |
168 | 168 |
169 void GrGLProgramDataManager::set4f(UniformHandle u, | 169 void GrGLProgramDataManager::set4f(UniformHandle u, |
170 GrGLfloat v0, | 170 GrGLfloat v0, |
171 GrGLfloat v1, | 171 GrGLfloat v1, |
172 GrGLfloat v2, | 172 GrGLfloat v2, |
173 GrGLfloat v3) const { | 173 GrGLfloat v3) const { |
174 const Uniform& uni = fUniforms[u.toIndex()]; | 174 const Uniform& uni = fUniforms[u.toIndex()]; |
175 SkASSERT(uni.fType == kVec4f_GrSLType); | 175 SkASSERT(uni.fType == kVec4f_GrSLType); |
176 SkASSERT(GrGLShaderVar::kNonArray == uni.fArrayCount); | 176 SkASSERT(GrGLSLShaderVar::kNonArray == uni.fArrayCount); |
177 SkDEBUGCODE(this->printUnused(uni);) | 177 SkDEBUGCODE(this->printUnused(uni);) |
178 if (kUnusedUniform != uni.fFSLocation) { | 178 if (kUnusedUniform != uni.fFSLocation) { |
179 GR_GL_CALL(fGpu->glInterface(), Uniform4f(uni.fFSLocation, v0, v1, v2, v
3)); | 179 GR_GL_CALL(fGpu->glInterface(), Uniform4f(uni.fFSLocation, v0, v1, v2, v
3)); |
180 } | 180 } |
181 if (kUnusedUniform != uni.fVSLocation && uni.fVSLocation != uni.fFSLocation)
{ | 181 if (kUnusedUniform != uni.fVSLocation && uni.fVSLocation != uni.fFSLocation)
{ |
182 GR_GL_CALL(fGpu->glInterface(), Uniform4f(uni.fVSLocation, v0, v1, v2, v
3)); | 182 GR_GL_CALL(fGpu->glInterface(), Uniform4f(uni.fVSLocation, v0, v1, v2, v
3)); |
183 } | 183 } |
184 } | 184 } |
185 | 185 |
186 void GrGLProgramDataManager::set4fv(UniformHandle u, | 186 void GrGLProgramDataManager::set4fv(UniformHandle u, |
187 int arrayCount, | 187 int arrayCount, |
188 const GrGLfloat v[]) const { | 188 const GrGLfloat v[]) const { |
189 const Uniform& uni = fUniforms[u.toIndex()]; | 189 const Uniform& uni = fUniforms[u.toIndex()]; |
190 SkASSERT(uni.fType == kVec4f_GrSLType); | 190 SkASSERT(uni.fType == kVec4f_GrSLType); |
191 SkASSERT(arrayCount > 0); | 191 SkASSERT(arrayCount > 0); |
192 ASSERT_ARRAY_UPLOAD_IN_BOUNDS(uni, arrayCount); | 192 ASSERT_ARRAY_UPLOAD_IN_BOUNDS(uni, arrayCount); |
193 SkDEBUGCODE(this->printUnused(uni);) | 193 SkDEBUGCODE(this->printUnused(uni);) |
194 if (kUnusedUniform != uni.fFSLocation) { | 194 if (kUnusedUniform != uni.fFSLocation) { |
195 GR_GL_CALL(fGpu->glInterface(), Uniform4fv(uni.fFSLocation, arrayCount,
v)); | 195 GR_GL_CALL(fGpu->glInterface(), Uniform4fv(uni.fFSLocation, arrayCount,
v)); |
196 } | 196 } |
197 if (kUnusedUniform != uni.fVSLocation && uni.fVSLocation != uni.fFSLocation)
{ | 197 if (kUnusedUniform != uni.fVSLocation && uni.fVSLocation != uni.fFSLocation)
{ |
198 GR_GL_CALL(fGpu->glInterface(), Uniform4fv(uni.fVSLocation, arrayCount,
v)); | 198 GR_GL_CALL(fGpu->glInterface(), Uniform4fv(uni.fVSLocation, arrayCount,
v)); |
199 } | 199 } |
200 } | 200 } |
201 | 201 |
202 void GrGLProgramDataManager::setMatrix3f(UniformHandle u, const GrGLfloat matrix
[]) const { | 202 void GrGLProgramDataManager::setMatrix3f(UniformHandle u, const GrGLfloat matrix
[]) const { |
203 const Uniform& uni = fUniforms[u.toIndex()]; | 203 const Uniform& uni = fUniforms[u.toIndex()]; |
204 SkASSERT(uni.fType == kMat33f_GrSLType); | 204 SkASSERT(uni.fType == kMat33f_GrSLType); |
205 SkASSERT(GrGLShaderVar::kNonArray == uni.fArrayCount); | 205 SkASSERT(GrGLSLShaderVar::kNonArray == uni.fArrayCount); |
206 SkDEBUGCODE(this->printUnused(uni);) | 206 SkDEBUGCODE(this->printUnused(uni);) |
207 if (kUnusedUniform != uni.fFSLocation) { | 207 if (kUnusedUniform != uni.fFSLocation) { |
208 GR_GL_CALL(fGpu->glInterface(), UniformMatrix3fv(uni.fFSLocation, 1, fal
se, matrix)); | 208 GR_GL_CALL(fGpu->glInterface(), UniformMatrix3fv(uni.fFSLocation, 1, fal
se, matrix)); |
209 } | 209 } |
210 if (kUnusedUniform != uni.fVSLocation && uni.fVSLocation != uni.fFSLocation)
{ | 210 if (kUnusedUniform != uni.fVSLocation && uni.fVSLocation != uni.fFSLocation)
{ |
211 GR_GL_CALL(fGpu->glInterface(), UniformMatrix3fv(uni.fVSLocation, 1, fal
se, matrix)); | 211 GR_GL_CALL(fGpu->glInterface(), UniformMatrix3fv(uni.fVSLocation, 1, fal
se, matrix)); |
212 } | 212 } |
213 } | 213 } |
214 | 214 |
215 void GrGLProgramDataManager::setMatrix4f(UniformHandle u, const GrGLfloat matrix
[]) const { | 215 void GrGLProgramDataManager::setMatrix4f(UniformHandle u, const GrGLfloat matrix
[]) const { |
216 const Uniform& uni = fUniforms[u.toIndex()]; | 216 const Uniform& uni = fUniforms[u.toIndex()]; |
217 SkASSERT(uni.fType == kMat44f_GrSLType); | 217 SkASSERT(uni.fType == kMat44f_GrSLType); |
218 SkASSERT(GrGLShaderVar::kNonArray == uni.fArrayCount); | 218 SkASSERT(GrGLSLShaderVar::kNonArray == uni.fArrayCount); |
219 SkDEBUGCODE(this->printUnused(uni);) | 219 SkDEBUGCODE(this->printUnused(uni);) |
220 if (kUnusedUniform != uni.fFSLocation) { | 220 if (kUnusedUniform != uni.fFSLocation) { |
221 GR_GL_CALL(fGpu->glInterface(), UniformMatrix4fv(uni.fFSLocation, 1, fal
se, matrix)); | 221 GR_GL_CALL(fGpu->glInterface(), UniformMatrix4fv(uni.fFSLocation, 1, fal
se, matrix)); |
222 } | 222 } |
223 if (kUnusedUniform != uni.fVSLocation && uni.fVSLocation != uni.fFSLocation)
{ | 223 if (kUnusedUniform != uni.fVSLocation && uni.fVSLocation != uni.fFSLocation)
{ |
224 GR_GL_CALL(fGpu->glInterface(), UniformMatrix4fv(uni.fVSLocation, 1, fal
se, matrix)); | 224 GR_GL_CALL(fGpu->glInterface(), UniformMatrix4fv(uni.fVSLocation, 1, fal
se, matrix)); |
225 } | 225 } |
226 } | 226 } |
227 | 227 |
228 void GrGLProgramDataManager::setMatrix3fv(UniformHandle u, | 228 void GrGLProgramDataManager::setMatrix3fv(UniformHandle u, |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
292 matrix); | 292 matrix); |
293 } | 293 } |
294 | 294 |
295 #ifdef SK_DEBUG | 295 #ifdef SK_DEBUG |
296 void GrGLProgramDataManager::printUnused(const Uniform& uni) const { | 296 void GrGLProgramDataManager::printUnused(const Uniform& uni) const { |
297 if (kUnusedUniform == uni.fFSLocation && kUnusedUniform == uni.fVSLocation)
{ | 297 if (kUnusedUniform == uni.fFSLocation && kUnusedUniform == uni.fVSLocation)
{ |
298 GrCapsDebugf(fGpu->caps(), "Unused uniform in shader\n"); | 298 GrCapsDebugf(fGpu->caps(), "Unused uniform in shader\n"); |
299 } | 299 } |
300 } | 300 } |
301 #endif | 301 #endif |
OLD | NEW |