17 : fGpu(gpu) {
18 fUniforms.push_back_n(uniforms.count());
19 int i = 0;
20 for (const GLUniformInfo& builderUniform : uniforms.items()) {
21 Uniform& uniform = fUniforms[i++];
23 builderUniform.fVariable.getArrayCount() > 0);
25 uniform.fArrayCount = builderUniform.fVariable.getArrayCount();
26 uniform.fType = builderUniform.fVariable.getType();
27 )
28 uniform.fLocation = builderUniform.fLocation;
29 }
30}
31
33 int startUnit) const {
34 int i = 0;
35 for (const GLUniformInfo& sampler : samplers.items()) {
37 if (kUnusedUniform != sampler.fLocation) {
39 }
40 ++i;
41 }
42}
43
45 const Uniform& uni = fUniforms[u.toIndex()];
48 if (kUnusedUniform != uni.fLocation) {
50 }
51}
52
54 int arrayCount,
55 const int32_t v[]) const {
56 const Uniform& uni = fUniforms[u.toIndex()];
60 if (kUnusedUniform != uni.fLocation) {
62 }
63}
64
66 const Uniform& uni = fUniforms[u.toIndex()];
69 if (kUnusedUniform != uni.fLocation) {
71 }
72}
73
75 int arrayCount,
76 const float v[]) const {
77 const Uniform& uni = fUniforms[u.toIndex()];
81
82
83
84
85 if (kUnusedUniform != uni.fLocation) {
87 }
88}
89
91 const Uniform& uni = fUniforms[u.toIndex()];
94 if (kUnusedUniform != uni.fLocation) {
96 }
97}
98
100 int arrayCount,
101 const int32_t v[]) const {
102 const Uniform& uni = fUniforms[u.toIndex()];
106 if (kUnusedUniform != uni.fLocation) {
108 }
109}
110
112 const Uniform& uni = fUniforms[u.toIndex()];
115 if (kUnusedUniform != uni.fLocation) {
117 }
118}
119
121 int arrayCount,
122 const float v[]) const {
123 const Uniform& uni = fUniforms[u.toIndex()];
127 if (kUnusedUniform != uni.fLocation) {
129 }
130}
131
133 const Uniform& uni = fUniforms[u.toIndex()];
136 if (kUnusedUniform != uni.fLocation) {
138 }
139}
140
142 int arrayCount,
143 const int32_t v[]) const {
144 const Uniform& uni = fUniforms[u.toIndex()];
148 if (kUnusedUniform != uni.fLocation) {
150 }
151}
152
154 const Uniform& uni = fUniforms[u.toIndex()];
157 if (kUnusedUniform != uni.fLocation) {
159 }
160}
161
163 int arrayCount,
164 const float v[]) const {
165 const Uniform& uni = fUniforms[u.toIndex()];
169 if (kUnusedUniform != uni.fLocation) {
171 }
172}
173
175 int32_t i0,
176 int32_t i1,
177 int32_t i2,
178 int32_t i3) const {
179 const Uniform& uni = fUniforms[u.toIndex()];
182 if (kUnusedUniform != uni.fLocation) {
184 }
185}
186
188 int arrayCount,
189 const int32_t v[]) const {
190 const Uniform& uni = fUniforms[u.toIndex()];
194 if (kUnusedUniform != uni.fLocation) {
196 }
197}
198
200 float v0,
201 float v1,
203 float v3) const {
204 const Uniform& uni = fUniforms[u.toIndex()];
207 if (kUnusedUniform != uni.fLocation) {
209 }
210}
211
213 int arrayCount,
214 const float v[]) const {
215 const Uniform& uni = fUniforms[u.toIndex()];
219 if (kUnusedUniform != uni.fLocation) {
221 }
222}
223
225 this->setMatrices<2>(u, 1, matrix);
226}
227
229 this->setMatrices<3>(u, 1, matrix);
230}
231
233 this->setMatrices<4>(u, 1, matrix);
234}
235
237 this->setMatrices<2>(u, arrayCount, m);
238}
239
241 this->setMatrices<3>(u, arrayCount, m);
242}
243
245 this->setMatrices<4>(u, arrayCount, m);
246}
247
249
250template<int N> inline void GrGLProgramDataManager::setMatrices(UniformHandle u,
251 int arrayCount,
252 const float matrices[]) const {
253 const Uniform& uni = fUniforms[u.toIndex()];
258 if (kUnusedUniform != uni.fLocation) {
260 }
261}
262
265 GR_GL_CALL(gli, UniformMatrix2fv(loc, cnt,
false, m));
266 }
267};
268
271 GR_GL_CALL(gli, UniformMatrix3fv(loc, cnt,
false, m));
272 }
273};
274
277 GR_GL_CALL(gli, UniformMatrix4fv(loc, cnt,
false, m));
278 }
279};
#define ASSERT_ARRAY_UPLOAD_IN_BOUNDS(UNI, COUNT)
#define GR_GL_CALL(IFACE, X)
const GrGLInterface * glInterface() const
void set1iv(UniformHandle, int arrayCount, const int32_t v[]) const override
void setMatrix4fv(UniformHandle, int arrayCount, const float matrices[]) const override
void set2i(UniformHandle, int32_t, int32_t) const override
void set3iv(UniformHandle, int arrayCount, const int32_t v[]) const override
void set4fv(UniformHandle, int arrayCount, const float v[]) const override
void set4iv(UniformHandle, int arrayCount, const int32_t v[]) const override
void setMatrix3fv(UniformHandle, int arrayCount, const float matrices[]) const override
void setMatrix3f(UniformHandle, const float matrix[]) const override
void setSamplerUniforms(const UniformInfoArray &samplers, int startUnit) const
void set3f(UniformHandle, float, float, float) const override
void setMatrix2fv(UniformHandle, int arrayCount, const float matrices[]) const override
void setMatrix2f(UniformHandle, const float matrix[]) const override
void setMatrix4f(UniformHandle, const float matrix[]) const override
void set4i(UniformHandle, int32_t, int32_t, int32_t, int32_t) const override
void set3fv(UniformHandle, int arrayCount, const float v[]) const override
void set4f(UniformHandle, float, float, float, float) const override
void set1i(UniformHandle, int32_t) const override
void set1f(UniformHandle, float v0) const override
void set2f(UniformHandle, float, float) const override
void set1fv(UniformHandle, int arrayCount, const float v[]) const override
void set2iv(UniformHandle, int arrayCount, const int32_t v[]) const override
void set2fv(UniformHandle, int arrayCount, const float v[]) const override
void set3i(UniformHandle, int32_t, int32_t, int32_t) const override