OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "gpu/command_buffer/service/program_manager.h" | 5 #include "gpu/command_buffer/service/program_manager.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
204 static const GLenum kUniform3Type = GL_FLOAT_VEC3; | 204 static const GLenum kUniform3Type = GL_FLOAT_VEC3; |
205 static const GLint kInvalidUniformLocation = 30; | 205 static const GLint kInvalidUniformLocation = 30; |
206 static const GLint kBadUniformIndex = 1000; | 206 static const GLint kBadUniformIndex = 1000; |
207 | 207 |
208 static const size_t kNumAttribs; | 208 static const size_t kNumAttribs; |
209 static const size_t kNumUniforms; | 209 static const size_t kNumUniforms; |
210 | 210 |
211 protected: | 211 protected: |
212 typedef TestHelper::AttribInfo AttribInfo; | 212 typedef TestHelper::AttribInfo AttribInfo; |
213 typedef TestHelper::UniformInfo UniformInfo; | 213 typedef TestHelper::UniformInfo UniformInfo; |
| 214 |
| 215 typedef enum { |
| 216 kVarUniform, |
| 217 kVarVarying, |
| 218 kVarAttribute |
| 219 } VarCategory; |
| 220 |
214 typedef struct { | 221 typedef struct { |
215 int type; | 222 int type; |
216 int size; | 223 int size; |
217 int precision; | 224 int precision; |
218 int static_use; | 225 int static_use; |
219 std::string name; | 226 std::string name; |
| 227 VarCategory category; |
220 } VarInfo; | 228 } VarInfo; |
221 | 229 |
222 virtual void SetUp() { | 230 virtual void SetUp() { |
223 gl_.reset(new StrictMock<gfx::MockGLInterface>()); | 231 gl_.reset(new StrictMock<gfx::MockGLInterface>()); |
224 ::gfx::GLInterface::SetGLInterface(gl_.get()); | 232 ::gfx::GLInterface::SetGLInterface(gl_.get()); |
225 | 233 |
226 SetupDefaultShaderExpectations(); | 234 SetupDefaultShaderExpectations(); |
227 | 235 |
228 Shader* vertex_shader = shader_manager_.CreateShader( | 236 Shader* vertex_shader = shader_manager_.CreateShader( |
229 kVertexShaderClientId, kVertexShaderServiceId, GL_VERTEX_SHADER); | 237 kVertexShaderClientId, kVertexShaderServiceId, GL_VERTEX_SHADER); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
274 if (expected_link_status) { | 282 if (expected_link_status) { |
275 SetupShader(kAttribs, kNumAttribs, kUniforms, kNumUniforms, | 283 SetupShader(kAttribs, kNumAttribs, kUniforms, kNumUniforms, |
276 service_id); | 284 service_id); |
277 } | 285 } |
278 program->Link(NULL, NULL, NULL, NULL, base::Bind(&ShaderCacheCb)); | 286 program->Link(NULL, NULL, NULL, NULL, base::Bind(&ShaderCacheCb)); |
279 GLint link_status; | 287 GLint link_status; |
280 program->GetProgramiv(GL_LINK_STATUS, &link_status); | 288 program->GetProgramiv(GL_LINK_STATUS, &link_status); |
281 return (static_cast<bool>(link_status) == expected_link_status); | 289 return (static_cast<bool>(link_status) == expected_link_status); |
282 } | 290 } |
283 | 291 |
284 Program* SetupVaryingsTest(const VarInfo* vertex_varyings, | 292 Program* SetupShaderVariableTest(const VarInfo* vertex_variables, |
285 size_t vertex_varying_size, | 293 size_t vertex_variable_size, |
286 const VarInfo* fragment_varyings, | 294 const VarInfo* fragment_variables, |
287 size_t fragment_varying_size) { | 295 size_t fragment_variable_size) { |
288 // Set up shader | 296 // Set up shader |
289 const GLuint kVShaderClientId = 1; | 297 const GLuint kVShaderClientId = 1; |
290 const GLuint kVShaderServiceId = 11; | 298 const GLuint kVShaderServiceId = 11; |
291 const GLuint kFShaderClientId = 2; | 299 const GLuint kFShaderClientId = 2; |
292 const GLuint kFShaderServiceId = 12; | 300 const GLuint kFShaderServiceId = 12; |
293 | 301 |
294 MockShaderTranslator vertex_shader_translator; | 302 MockShaderTranslator vertex_shader_translator; |
295 ShaderTranslator::VariableMap vertex_attrib_map; | 303 ShaderTranslator::VariableMap vertex_attrib_map; |
296 ShaderTranslator::VariableMap vertex_uniform_map; | 304 ShaderTranslator::VariableMap vertex_uniform_map; |
297 ShaderTranslator::VariableMap vertex_varying_map; | 305 ShaderTranslator::VariableMap vertex_varying_map; |
298 for (size_t ii = 0; ii < vertex_varying_size; ++ii) { | 306 for (size_t ii = 0; ii < vertex_variable_size; ++ii) { |
299 vertex_varying_map[vertex_varyings[ii].name] = | 307 ShaderTranslator::VariableMap* map = NULL; |
300 ShaderTranslator::VariableInfo(vertex_varyings[ii].type, | 308 switch (vertex_variables[ii].category) { |
301 vertex_varyings[ii].size, | 309 case kVarAttribute: |
302 vertex_varyings[ii].precision, | 310 map = &vertex_attrib_map; |
303 vertex_varyings[ii].static_use, | 311 break; |
304 vertex_varyings[ii].name); | 312 case kVarUniform: |
| 313 map = &vertex_uniform_map; |
| 314 break; |
| 315 case kVarVarying: |
| 316 map = &vertex_varying_map; |
| 317 break; |
| 318 default: |
| 319 NOTREACHED(); |
| 320 } |
| 321 (*map)[vertex_variables[ii].name] = |
| 322 ShaderTranslator::VariableInfo(vertex_variables[ii].type, |
| 323 vertex_variables[ii].size, |
| 324 vertex_variables[ii].precision, |
| 325 vertex_variables[ii].static_use, |
| 326 vertex_variables[ii].name); |
305 } | 327 } |
306 ShaderTranslator::NameMap vertex_name_map; | 328 ShaderTranslator::NameMap vertex_name_map; |
307 EXPECT_CALL(vertex_shader_translator, attrib_map()) | 329 EXPECT_CALL(vertex_shader_translator, attrib_map()) |
308 .WillRepeatedly(ReturnRef(vertex_attrib_map)); | 330 .WillRepeatedly(ReturnRef(vertex_attrib_map)); |
309 EXPECT_CALL(vertex_shader_translator, uniform_map()) | 331 EXPECT_CALL(vertex_shader_translator, uniform_map()) |
310 .WillRepeatedly(ReturnRef(vertex_uniform_map)); | 332 .WillRepeatedly(ReturnRef(vertex_uniform_map)); |
311 EXPECT_CALL(vertex_shader_translator, varying_map()) | 333 EXPECT_CALL(vertex_shader_translator, varying_map()) |
312 .WillRepeatedly(ReturnRef(vertex_varying_map)); | 334 .WillRepeatedly(ReturnRef(vertex_varying_map)); |
313 EXPECT_CALL(vertex_shader_translator, name_map()) | 335 EXPECT_CALL(vertex_shader_translator, name_map()) |
314 .WillRepeatedly(ReturnRef(vertex_name_map)); | 336 .WillRepeatedly(ReturnRef(vertex_name_map)); |
315 | 337 |
316 MockShaderTranslator frag_shader_translator; | 338 MockShaderTranslator frag_shader_translator; |
317 ShaderTranslator::VariableMap frag_attrib_map; | 339 ShaderTranslator::VariableMap frag_attrib_map; |
318 ShaderTranslator::VariableMap frag_uniform_map; | 340 ShaderTranslator::VariableMap frag_uniform_map; |
319 ShaderTranslator::VariableMap frag_varying_map; | 341 ShaderTranslator::VariableMap frag_varying_map; |
320 for (size_t ii = 0; ii < fragment_varying_size; ++ii) { | 342 for (size_t ii = 0; ii < fragment_variable_size; ++ii) { |
321 frag_varying_map[fragment_varyings[ii].name] = | 343 ShaderTranslator::VariableMap* map = NULL; |
322 ShaderTranslator::VariableInfo(fragment_varyings[ii].type, | 344 switch (fragment_variables[ii].category) { |
323 fragment_varyings[ii].size, | 345 case kVarAttribute: |
324 fragment_varyings[ii].precision, | 346 map = &frag_attrib_map; |
325 fragment_varyings[ii].static_use, | 347 break; |
326 fragment_varyings[ii].name); | 348 case kVarUniform: |
| 349 map = &frag_uniform_map; |
| 350 break; |
| 351 case kVarVarying: |
| 352 map = &frag_varying_map; |
| 353 break; |
| 354 default: |
| 355 NOTREACHED(); |
| 356 } |
| 357 (*map)[fragment_variables[ii].name] = |
| 358 ShaderTranslator::VariableInfo(fragment_variables[ii].type, |
| 359 fragment_variables[ii].size, |
| 360 fragment_variables[ii].precision, |
| 361 fragment_variables[ii].static_use, |
| 362 fragment_variables[ii].name); |
327 } | 363 } |
328 ShaderTranslator::NameMap frag_name_map; | 364 ShaderTranslator::NameMap frag_name_map; |
329 EXPECT_CALL(frag_shader_translator, attrib_map()) | 365 EXPECT_CALL(frag_shader_translator, attrib_map()) |
330 .WillRepeatedly(ReturnRef(frag_attrib_map)); | 366 .WillRepeatedly(ReturnRef(frag_attrib_map)); |
331 EXPECT_CALL(frag_shader_translator, uniform_map()) | 367 EXPECT_CALL(frag_shader_translator, uniform_map()) |
332 .WillRepeatedly(ReturnRef(frag_uniform_map)); | 368 .WillRepeatedly(ReturnRef(frag_uniform_map)); |
333 EXPECT_CALL(frag_shader_translator, varying_map()) | 369 EXPECT_CALL(frag_shader_translator, varying_map()) |
334 .WillRepeatedly(ReturnRef(frag_varying_map)); | 370 .WillRepeatedly(ReturnRef(frag_varying_map)); |
335 EXPECT_CALL(frag_shader_translator, name_map()) | 371 EXPECT_CALL(frag_shader_translator, name_map()) |
336 .WillRepeatedly(ReturnRef(frag_name_map)); | 372 .WillRepeatedly(ReturnRef(frag_name_map)); |
(...skipping 833 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1170 EXPECT_TRUE(program->AttachShader(&shader_manager_, fshader)); | 1206 EXPECT_TRUE(program->AttachShader(&shader_manager_, fshader)); |
1171 | 1207 |
1172 EXPECT_TRUE(program->DetectUniformsMismatch()); | 1208 EXPECT_TRUE(program->DetectUniformsMismatch()); |
1173 EXPECT_TRUE(LinkAsExpected(program, false)); | 1209 EXPECT_TRUE(LinkAsExpected(program, false)); |
1174 } | 1210 } |
1175 | 1211 |
1176 // If a varying has different type in the vertex and fragment | 1212 // If a varying has different type in the vertex and fragment |
1177 // shader, linking should fail. | 1213 // shader, linking should fail. |
1178 TEST_F(ProgramManagerWithShaderTest, VaryingTypeMismatch) { | 1214 TEST_F(ProgramManagerWithShaderTest, VaryingTypeMismatch) { |
1179 const VarInfo kVertexVarying = | 1215 const VarInfo kVertexVarying = |
1180 { SH_FLOAT_VEC3, 1, SH_PRECISION_MEDIUMP, 1, "a" }; | 1216 { SH_FLOAT_VEC3, 1, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }; |
1181 const VarInfo kFragmentVarying = | 1217 const VarInfo kFragmentVarying = |
1182 { SH_FLOAT_VEC4, 1, SH_PRECISION_MEDIUMP, 1, "a" }; | 1218 { SH_FLOAT_VEC4, 1, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }; |
1183 Program* program = SetupVaryingsTest( | 1219 Program* program = SetupShaderVariableTest( |
1184 &kVertexVarying, 1, &kFragmentVarying, 1); | 1220 &kVertexVarying, 1, &kFragmentVarying, 1); |
1185 | 1221 |
1186 EXPECT_TRUE(program->DetectVaryingsMismatch()); | 1222 EXPECT_TRUE(program->DetectVaryingsMismatch()); |
1187 EXPECT_TRUE(LinkAsExpected(program, false)); | 1223 EXPECT_TRUE(LinkAsExpected(program, false)); |
1188 } | 1224 } |
1189 | 1225 |
1190 // If a varying has different array size in the vertex and fragment | 1226 // If a varying has different array size in the vertex and fragment |
1191 // shader, linking should fail. | 1227 // shader, linking should fail. |
1192 TEST_F(ProgramManagerWithShaderTest, VaryingArraySizeMismatch) { | 1228 TEST_F(ProgramManagerWithShaderTest, VaryingArraySizeMismatch) { |
1193 const VarInfo kVertexVarying = | 1229 const VarInfo kVertexVarying = |
1194 { SH_FLOAT, 2, SH_PRECISION_MEDIUMP, 1, "a" }; | 1230 { SH_FLOAT, 2, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }; |
1195 const VarInfo kFragmentVarying = | 1231 const VarInfo kFragmentVarying = |
1196 { SH_FLOAT, 3, SH_PRECISION_MEDIUMP, 1, "a" }; | 1232 { SH_FLOAT, 3, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }; |
1197 Program* program = SetupVaryingsTest( | 1233 Program* program = SetupShaderVariableTest( |
1198 &kVertexVarying, 1, &kFragmentVarying, 1); | 1234 &kVertexVarying, 1, &kFragmentVarying, 1); |
1199 | 1235 |
1200 EXPECT_TRUE(program->DetectVaryingsMismatch()); | 1236 EXPECT_TRUE(program->DetectVaryingsMismatch()); |
1201 EXPECT_TRUE(LinkAsExpected(program, false)); | 1237 EXPECT_TRUE(LinkAsExpected(program, false)); |
1202 } | 1238 } |
1203 | 1239 |
1204 // If a varying has different precision in the vertex and fragment | 1240 // If a varying has different precision in the vertex and fragment |
1205 // shader, linking should succeed. | 1241 // shader, linking should succeed. |
1206 TEST_F(ProgramManagerWithShaderTest, VaryingPrecisionMismatch) { | 1242 TEST_F(ProgramManagerWithShaderTest, VaryingPrecisionMismatch) { |
1207 const VarInfo kVertexVarying = | 1243 const VarInfo kVertexVarying = |
1208 { SH_FLOAT, 2, SH_PRECISION_HIGHP, 1, "a" }; | 1244 { SH_FLOAT, 2, SH_PRECISION_HIGHP, 1, "a", kVarVarying }; |
1209 const VarInfo kFragmentVarying = | 1245 const VarInfo kFragmentVarying = |
1210 { SH_FLOAT, 2, SH_PRECISION_MEDIUMP, 1, "a" }; | 1246 { SH_FLOAT, 2, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }; |
1211 Program* program = SetupVaryingsTest( | 1247 Program* program = SetupShaderVariableTest( |
1212 &kVertexVarying, 1, &kFragmentVarying, 1); | 1248 &kVertexVarying, 1, &kFragmentVarying, 1); |
1213 | 1249 |
1214 EXPECT_FALSE(program->DetectVaryingsMismatch()); | 1250 EXPECT_FALSE(program->DetectVaryingsMismatch()); |
1215 EXPECT_TRUE(LinkAsExpected(program, true)); | 1251 EXPECT_TRUE(LinkAsExpected(program, true)); |
1216 } | 1252 } |
1217 | 1253 |
1218 // If a varying is statically used in fragment shader but not | 1254 // If a varying is statically used in fragment shader but not |
1219 // declared in vertex shader, link should fail. | 1255 // declared in vertex shader, link should fail. |
1220 TEST_F(ProgramManagerWithShaderTest, VaryingMissing) { | 1256 TEST_F(ProgramManagerWithShaderTest, VaryingMissing) { |
1221 const VarInfo kFragmentVarying = | 1257 const VarInfo kFragmentVarying = |
1222 { SH_FLOAT, 3, SH_PRECISION_MEDIUMP, 1, "a" }; | 1258 { SH_FLOAT, 3, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }; |
1223 Program* program = SetupVaryingsTest( | 1259 Program* program = SetupShaderVariableTest( |
1224 NULL, 0, &kFragmentVarying, 1); | 1260 NULL, 0, &kFragmentVarying, 1); |
1225 | 1261 |
1226 EXPECT_TRUE(program->DetectVaryingsMismatch()); | 1262 EXPECT_TRUE(program->DetectVaryingsMismatch()); |
1227 EXPECT_TRUE(LinkAsExpected(program, false)); | 1263 EXPECT_TRUE(LinkAsExpected(program, false)); |
1228 } | 1264 } |
1229 | 1265 |
1230 // If a varying is declared but not statically used in fragment | 1266 // If a varying is declared but not statically used in fragment |
1231 // shader, even if it's not declared in vertex shader, link should | 1267 // shader, even if it's not declared in vertex shader, link should |
1232 // succeed. | 1268 // succeed. |
1233 TEST_F(ProgramManagerWithShaderTest, InactiveVarying) { | 1269 TEST_F(ProgramManagerWithShaderTest, InactiveVarying) { |
1234 const VarInfo kFragmentVarying = | 1270 const VarInfo kFragmentVarying = |
1235 { SH_FLOAT, 3, SH_PRECISION_MEDIUMP, 0, "a" }; | 1271 { SH_FLOAT, 3, SH_PRECISION_MEDIUMP, 0, "a", kVarVarying }; |
1236 Program* program = SetupVaryingsTest( | 1272 Program* program = SetupShaderVariableTest( |
1237 NULL, 0, &kFragmentVarying, 1); | 1273 NULL, 0, &kFragmentVarying, 1); |
1238 | 1274 |
1239 EXPECT_FALSE(program->DetectVaryingsMismatch()); | 1275 EXPECT_FALSE(program->DetectVaryingsMismatch()); |
1240 EXPECT_TRUE(LinkAsExpected(program, true)); | 1276 EXPECT_TRUE(LinkAsExpected(program, true)); |
1241 } | 1277 } |
1242 | 1278 |
| 1279 // Uniforms and attributes are both global variables, thus sharing |
| 1280 // the same namespace. Any name conflicts should cause link |
| 1281 // failure. |
| 1282 TEST_F(ProgramManagerWithShaderTest, AttribUniformNameConflict) { |
| 1283 const VarInfo kVertexAttribute = |
| 1284 { SH_FLOAT_VEC4, 1, SH_PRECISION_MEDIUMP, 1, "a", kVarAttribute }; |
| 1285 const VarInfo kFragmentUniform = |
| 1286 { SH_FLOAT_VEC4, 1, SH_PRECISION_MEDIUMP, 1, "a", kVarUniform }; |
| 1287 Program* program = SetupShaderVariableTest( |
| 1288 &kVertexAttribute, 1, &kFragmentUniform, 1); |
| 1289 |
| 1290 EXPECT_TRUE(program->DetectGlobalNameConflicts()); |
| 1291 EXPECT_TRUE(LinkAsExpected(program, false)); |
| 1292 } |
| 1293 |
1243 // Varyings go over 8 rows. | 1294 // Varyings go over 8 rows. |
1244 TEST_F(ProgramManagerWithShaderTest, TooManyVaryings) { | 1295 TEST_F(ProgramManagerWithShaderTest, TooManyVaryings) { |
1245 const VarInfo kVertexVaryings[] = { | 1296 const VarInfo kVertexVaryings[] = { |
1246 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a" }, | 1297 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, |
1247 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b" } | 1298 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } |
1248 }; | 1299 }; |
1249 const VarInfo kFragmentVaryings[] = { | 1300 const VarInfo kFragmentVaryings[] = { |
1250 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a" }, | 1301 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, |
1251 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b" } | 1302 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } |
1252 }; | 1303 }; |
1253 Program* program = SetupVaryingsTest( | 1304 Program* program = SetupShaderVariableTest( |
1254 kVertexVaryings, 2, kFragmentVaryings, 2); | 1305 kVertexVaryings, 2, kFragmentVaryings, 2); |
1255 | 1306 |
1256 EXPECT_FALSE(program->CheckVaryingsPacking()); | 1307 EXPECT_FALSE(program->CheckVaryingsPacking()); |
1257 EXPECT_TRUE(LinkAsExpected(program, false)); | 1308 EXPECT_TRUE(LinkAsExpected(program, false)); |
1258 } | 1309 } |
1259 | 1310 |
1260 // Varyings go over 8 rows but some are inactive | 1311 // Varyings go over 8 rows but some are inactive |
1261 TEST_F(ProgramManagerWithShaderTest, TooManyInactiveVaryings) { | 1312 TEST_F(ProgramManagerWithShaderTest, TooManyInactiveVaryings) { |
1262 const VarInfo kVertexVaryings[] = { | 1313 const VarInfo kVertexVaryings[] = { |
1263 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a" }, | 1314 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, |
1264 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b" } | 1315 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } |
1265 }; | 1316 }; |
1266 const VarInfo kFragmentVaryings[] = { | 1317 const VarInfo kFragmentVaryings[] = { |
1267 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 0, "a" }, | 1318 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 0, "a", kVarVarying }, |
1268 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b" } | 1319 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } |
1269 }; | 1320 }; |
1270 Program* program = SetupVaryingsTest( | 1321 Program* program = SetupShaderVariableTest( |
1271 kVertexVaryings, 2, kFragmentVaryings, 2); | 1322 kVertexVaryings, 2, kFragmentVaryings, 2); |
1272 | 1323 |
1273 EXPECT_TRUE(program->CheckVaryingsPacking()); | 1324 EXPECT_TRUE(program->CheckVaryingsPacking()); |
1274 EXPECT_TRUE(LinkAsExpected(program, true)); | 1325 EXPECT_TRUE(LinkAsExpected(program, true)); |
1275 } | 1326 } |
1276 | 1327 |
1277 TEST_F(ProgramManagerWithShaderTest, ClearWithSamplerTypes) { | 1328 TEST_F(ProgramManagerWithShaderTest, ClearWithSamplerTypes) { |
1278 const GLuint kVShaderClientId = 2001; | 1329 const GLuint kVShaderClientId = 2001; |
1279 const GLuint kFShaderClientId = 2002; | 1330 const GLuint kFShaderClientId = 2002; |
1280 const GLuint kVShaderServiceId = 3001; | 1331 const GLuint kVShaderServiceId = 3001; |
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1647 SetExpectationsForProgramLoad(ProgramCache::PROGRAM_LOAD_SUCCESS); | 1698 SetExpectationsForProgramLoad(ProgramCache::PROGRAM_LOAD_SUCCESS); |
1648 SetExpectationsForNotCachingProgram(); | 1699 SetExpectationsForNotCachingProgram(); |
1649 SetExpectationsForProgramLoadSuccess(); | 1700 SetExpectationsForProgramLoadSuccess(); |
1650 | 1701 |
1651 EXPECT_TRUE(program_->Link(NULL, NULL, NULL, NULL, | 1702 EXPECT_TRUE(program_->Link(NULL, NULL, NULL, NULL, |
1652 base::Bind(&ShaderCacheCb))); | 1703 base::Bind(&ShaderCacheCb))); |
1653 } | 1704 } |
1654 | 1705 |
1655 } // namespace gles2 | 1706 } // namespace gles2 |
1656 } // namespace gpu | 1707 } // namespace gpu |
OLD | NEW |