| Index: gpu/command_buffer/service/program_manager_unittest.cc
|
| diff --git a/gpu/command_buffer/service/program_manager_unittest.cc b/gpu/command_buffer/service/program_manager_unittest.cc
|
| index 1386088f54cb3ecca009cd9db96c3f88156f7c61..5d80694434c47d404fe81ae90968f20ff67bcea1 100644
|
| --- a/gpu/command_buffer/service/program_manager_unittest.cc
|
| +++ b/gpu/command_buffer/service/program_manager_unittest.cc
|
| @@ -154,7 +154,7 @@ class ProgramManagerWithShaderTest : public GpuServiceTest {
|
| static const GLenum kAttrib1Precision = GL_MEDIUM_FLOAT;
|
| static const GLenum kAttrib2Precision = GL_HIGH_FLOAT;
|
| static const GLenum kAttrib3Precision = GL_LOW_FLOAT;
|
| - static const bool kAttribStaticUse = false;
|
| + static const bool kAttribStaticUse = true;
|
| static const GLint kAttrib1Location = 0;
|
| static const GLint kAttrib2Location = 1;
|
| static const GLint kAttrib3Location = 2;
|
| @@ -1134,6 +1134,13 @@ TEST_F(ProgramManagerWithShaderTest, BindAttribLocationConflicts) {
|
| kAttribStaticUse,
|
| kAttribs[ii].name);
|
| }
|
| + const char kAttribMatName[] = "matAttrib";
|
| + attrib_map[kAttribMatName] = TestHelper::ConstructAttribute(
|
| + GL_FLOAT_MAT2,
|
| + 1,
|
| + SH_PRECISION_MEDIUMP,
|
| + kAttribStaticUse,
|
| + kAttribMatName);
|
| // Check we can create shader.
|
| Shader* vshader = shader_manager_.CreateShader(
|
| kVShaderClientId, kVShaderServiceId, GL_VERTEX_SHADER);
|
| @@ -1173,19 +1180,40 @@ TEST_F(ProgramManagerWithShaderTest, BindAttribLocationConflicts) {
|
|
|
| program->SetAttribLocationBinding(kAttrib1Name, 0);
|
| EXPECT_FALSE(program->DetectAttribLocationBindingConflicts());
|
| + EXPECT_CALL(*(gl_.get()), BindAttribLocation(_, 0, _))
|
| + .Times(1)
|
| + .RetiresOnSaturation();
|
| EXPECT_TRUE(LinkAsExpected(program, true));
|
|
|
| program->SetAttribLocationBinding("xxx", 0);
|
| EXPECT_FALSE(program->DetectAttribLocationBindingConflicts());
|
| + EXPECT_CALL(*(gl_.get()), BindAttribLocation(_, 0, _))
|
| + .Times(1)
|
| + .RetiresOnSaturation();
|
| EXPECT_TRUE(LinkAsExpected(program, true));
|
|
|
| program->SetAttribLocationBinding(kAttrib2Name, 1);
|
| EXPECT_FALSE(program->DetectAttribLocationBindingConflicts());
|
| + EXPECT_CALL(*(gl_.get()), BindAttribLocation(_, _, _))
|
| + .Times(2)
|
| + .RetiresOnSaturation();
|
| EXPECT_TRUE(LinkAsExpected(program, true));
|
|
|
| program->SetAttribLocationBinding(kAttrib2Name, 0);
|
| EXPECT_TRUE(program->DetectAttribLocationBindingConflicts());
|
| EXPECT_TRUE(LinkAsExpected(program, false));
|
| +
|
| + program->SetAttribLocationBinding(kAttribMatName, 1);
|
| + program->SetAttribLocationBinding(kAttrib2Name, 3);
|
| + EXPECT_CALL(*(gl_.get()), BindAttribLocation(_, _, _))
|
| + .Times(3)
|
| + .RetiresOnSaturation();
|
| + EXPECT_FALSE(program->DetectAttribLocationBindingConflicts());
|
| + EXPECT_TRUE(LinkAsExpected(program, true));
|
| +
|
| + program->SetAttribLocationBinding(kAttrib2Name, 2);
|
| + EXPECT_TRUE(program->DetectAttribLocationBindingConflicts());
|
| + EXPECT_TRUE(LinkAsExpected(program, false));
|
| }
|
|
|
| TEST_F(ProgramManagerWithShaderTest, UniformsPrecisionMismatch) {
|
|
|