| 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 c05113f0f17da66991363a51498fe78f81d16b3c..8dca84db7e752ad89fe0be4f2dd26c43b82b36b1 100644
|
| --- a/gpu/command_buffer/service/program_manager_unittest.cc
|
| +++ b/gpu/command_buffer/service/program_manager_unittest.cc
|
| @@ -179,6 +179,9 @@ class ProgramManagerWithShaderTest : public testing::Test {
|
| static const GLint kUniform1RealLocation = 11;
|
| static const GLint kUniform2RealLocation = 22;
|
| static const GLint kUniform3RealLocation = 33;
|
| + static const GLint kUniform1DesiredLocation = -1;
|
| + static const GLint kUniform2DesiredLocation = -1;
|
| + static const GLint kUniform3DesiredLocation = -1;
|
| static const GLenum kUniform1Type = GL_FLOAT_VEC4;
|
| static const GLenum kUniform2Type = GL_INT_VEC2;
|
| static const GLenum kUniform3Type = GL_FLOAT_VEC3;
|
| @@ -300,6 +303,9 @@ const GLint ProgramManagerWithShaderTest::kUniform3FakeLocation;
|
| const GLint ProgramManagerWithShaderTest::kUniform1RealLocation;
|
| const GLint ProgramManagerWithShaderTest::kUniform2RealLocation;
|
| const GLint ProgramManagerWithShaderTest::kUniform3RealLocation;
|
| +const GLint ProgramManagerWithShaderTest::kUniform1DesiredLocation;
|
| +const GLint ProgramManagerWithShaderTest::kUniform2DesiredLocation;
|
| +const GLint ProgramManagerWithShaderTest::kUniform3DesiredLocation;
|
| const GLenum ProgramManagerWithShaderTest::kUniform1Type;
|
| const GLenum ProgramManagerWithShaderTest::kUniform2Type;
|
| const GLenum ProgramManagerWithShaderTest::kUniform3Type;
|
| @@ -317,6 +323,7 @@ ProgramManagerWithShaderTest::UniformInfo
|
| kUniform1Type,
|
| kUniform1FakeLocation,
|
| kUniform1RealLocation,
|
| + kUniform1DesiredLocation,
|
| kUniform1Name,
|
| },
|
| { kUniform2Name,
|
| @@ -324,6 +331,7 @@ ProgramManagerWithShaderTest::UniformInfo
|
| kUniform2Type,
|
| kUniform2FakeLocation,
|
| kUniform2RealLocation,
|
| + kUniform2DesiredLocation,
|
| kUniform2Name,
|
| },
|
| { kUniform3BadName,
|
| @@ -331,6 +339,7 @@ ProgramManagerWithShaderTest::UniformInfo
|
| kUniform3Type,
|
| kUniform3FakeLocation,
|
| kUniform3RealLocation,
|
| + kUniform3DesiredLocation,
|
| kUniform3GoodName,
|
| },
|
| };
|
| @@ -483,12 +492,12 @@ TEST_F(ProgramManagerWithShaderTest, GetUniformFakeLocation) {
|
| EXPECT_EQ(kUniform3FakeLocation,
|
| program_info->GetUniformFakeLocation(kUniform3GoodName));
|
| // Check that we can get the locations of the array elements > 1
|
| - EXPECT_EQ(GLES2Util::MakeFakeLocation(kUniform2FakeLocation, 1),
|
| + EXPECT_EQ(ProgramManager::MakeFakeLocation(kUniform2FakeLocation, 1),
|
| program_info->GetUniformFakeLocation("uniform2[1]"));
|
| - EXPECT_EQ(GLES2Util::MakeFakeLocation(kUniform2FakeLocation, 2),
|
| + EXPECT_EQ(ProgramManager::MakeFakeLocation(kUniform2FakeLocation, 2),
|
| program_info->GetUniformFakeLocation("uniform2[2]"));
|
| EXPECT_EQ(-1, program_info->GetUniformFakeLocation("uniform2[3]"));
|
| - EXPECT_EQ(GLES2Util::MakeFakeLocation(kUniform3FakeLocation, 1),
|
| + EXPECT_EQ(ProgramManager::MakeFakeLocation(kUniform3FakeLocation, 1),
|
| program_info->GetUniformFakeLocation("uniform3[1]"));
|
| EXPECT_EQ(-1, program_info->GetUniformFakeLocation("uniform3[2]"));
|
| }
|
| @@ -533,6 +542,7 @@ TEST_F(ProgramManagerWithShaderTest, GLDriverReturnsGLUnderscoreUniform) {
|
| kUniform1Type,
|
| kUniform1FakeLocation,
|
| kUniform1RealLocation,
|
| + kUniform1DesiredLocation,
|
| kUniform1Name,
|
| },
|
| { kUniform2Name,
|
| @@ -540,6 +550,7 @@ TEST_F(ProgramManagerWithShaderTest, GLDriverReturnsGLUnderscoreUniform) {
|
| kUniform2Type,
|
| kUniform2FakeLocation,
|
| kUniform2RealLocation,
|
| + kUniform2DesiredLocation,
|
| kUniform2Name,
|
| },
|
| { kUniform3BadName,
|
| @@ -547,6 +558,7 @@ TEST_F(ProgramManagerWithShaderTest, GLDriverReturnsGLUnderscoreUniform) {
|
| kUniform3Type,
|
| kUniform3FakeLocation,
|
| kUniform3RealLocation,
|
| + kUniform3DesiredLocation,
|
| kUniform3GoodName,
|
| },
|
| };
|
| @@ -635,6 +647,7 @@ TEST_F(ProgramManagerWithShaderTest, GLDriverReturnsWrongTypeInfo) {
|
| kUniform1Type,
|
| kUniform1FakeLocation,
|
| kUniform1RealLocation,
|
| + kUniform1DesiredLocation,
|
| kUniform1Name,
|
| },
|
| { kUniform2Name,
|
| @@ -642,6 +655,7 @@ TEST_F(ProgramManagerWithShaderTest, GLDriverReturnsWrongTypeInfo) {
|
| kUniform2BadType,
|
| kUniform2FakeLocation,
|
| kUniform2RealLocation,
|
| + kUniform2DesiredLocation,
|
| kUniform2Name,
|
| },
|
| { kUniform3BadName,
|
| @@ -649,6 +663,7 @@ TEST_F(ProgramManagerWithShaderTest, GLDriverReturnsWrongTypeInfo) {
|
| kUniform3Type,
|
| kUniform3FakeLocation,
|
| kUniform3RealLocation,
|
| + kUniform3DesiredLocation,
|
| kUniform3GoodName,
|
| },
|
| };
|
| @@ -835,8 +850,8 @@ TEST_F(ProgramManagerWithShaderTest, ProgramInfoGetProgramInfo) {
|
| input->location_offset, sizeof(int32) * input->size);
|
| ASSERT_TRUE(locations != NULL);
|
| for (int32 jj = 0; jj < input->size; ++jj) {
|
| - EXPECT_EQ(GLES2Util::SwizzleLocation(
|
| - GLES2Util::MakeFakeLocation(expected.fake_location, jj)),
|
| + EXPECT_EQ(
|
| + ProgramManager::MakeFakeLocation(expected.fake_location, jj),
|
| locations[jj]);
|
| }
|
| const char* name_buf = bucket.GetDataAs<const char*>(
|
| @@ -958,6 +973,7 @@ TEST_F(ProgramManagerWithShaderTest, ClearWithSamplerTypes) {
|
| kUniform1Type,
|
| kUniform1FakeLocation,
|
| kUniform1RealLocation,
|
| + kUniform1DesiredLocation,
|
| kUniform1Name,
|
| },
|
| { kUniform2Name,
|
| @@ -965,6 +981,7 @@ TEST_F(ProgramManagerWithShaderTest, ClearWithSamplerTypes) {
|
| kSamplerTypes[ii],
|
| kUniform2FakeLocation,
|
| kUniform2RealLocation,
|
| + kUniform2DesiredLocation,
|
| kUniform2Name,
|
| },
|
| { kUniform3BadName,
|
| @@ -972,6 +989,7 @@ TEST_F(ProgramManagerWithShaderTest, ClearWithSamplerTypes) {
|
| kUniform3Type,
|
| kUniform3FakeLocation,
|
| kUniform3RealLocation,
|
| + kUniform3DesiredLocation,
|
| kUniform3GoodName,
|
| },
|
| };
|
| @@ -985,73 +1003,80 @@ TEST_F(ProgramManagerWithShaderTest, ClearWithSamplerTypes) {
|
| }
|
| }
|
|
|
| -TEST_F(ProgramManagerWithShaderTest, UniformsAreSorted) {
|
| +TEST_F(ProgramManagerWithShaderTest, BindUniformLocation) {
|
| const GLuint kVShaderClientId = 2001;
|
| const GLuint kFShaderClientId = 2002;
|
| const GLuint kVShaderServiceId = 3001;
|
| const GLuint kFShaderServiceId = 3002;
|
| +
|
| + const GLint kUniform1DesiredLocation = 10;
|
| + const GLint kUniform2DesiredLocation = -1;
|
| + const GLint kUniform3DesiredLocation = 5;
|
| +
|
| ShaderManager::ShaderInfo* vshader = shader_manager_.CreateShaderInfo(
|
| kVShaderClientId, kVShaderServiceId, GL_VERTEX_SHADER);
|
| ASSERT_TRUE(vshader != NULL);
|
| - vshader->SetStatus(true, "", NULL);
|
| + vshader->SetStatus(true, NULL, NULL);
|
| ShaderManager::ShaderInfo* fshader = shader_manager_.CreateShaderInfo(
|
| kFShaderClientId, kFShaderServiceId, GL_FRAGMENT_SHADER);
|
| ASSERT_TRUE(fshader != NULL);
|
| - fshader->SetStatus(true, "", NULL);
|
| + fshader->SetStatus(true, NULL, NULL);
|
| + static const GLuint kClientProgramId = 1234;
|
| + static const GLuint kServiceProgramId = 5679;
|
| + ProgramManager::ProgramInfo* program_info = manager_.CreateProgramInfo(
|
| + kClientProgramId, kServiceProgramId);
|
| + ASSERT_TRUE(program_info != NULL);
|
| + EXPECT_TRUE(program_info->AttachShader(&shader_manager_, vshader));
|
| + EXPECT_TRUE(program_info->AttachShader(&shader_manager_, fshader));
|
| + EXPECT_TRUE(program_info->SetUniformLocationBinding(
|
| + kUniform1Name, kUniform1DesiredLocation));
|
| + EXPECT_TRUE(program_info->SetUniformLocationBinding(
|
| + kUniform3BadName, kUniform3DesiredLocation));
|
| +
|
| static ProgramManagerWithShaderTest::AttribInfo kAttribs[] = {
|
| { kAttrib1Name, kAttrib1Size, kAttrib1Type, kAttrib1Location, },
|
| { kAttrib2Name, kAttrib2Size, kAttrib2Type, kAttrib2Location, },
|
| { kAttrib3Name, kAttrib3Size, kAttrib3Type, kAttrib3Location, },
|
| };
|
| - static ProgramManagerWithShaderTest::UniformInfo kUniforms[] = {
|
| + ProgramManagerWithShaderTest::UniformInfo kUniforms[] = {
|
| + { kUniform1Name,
|
| + kUniform1Size,
|
| + kUniform1Type,
|
| + kUniform1FakeLocation,
|
| + kUniform1RealLocation,
|
| + kUniform1DesiredLocation,
|
| + kUniform1Name,
|
| + },
|
| { kUniform2Name,
|
| kUniform2Size,
|
| kUniform2Type,
|
| kUniform2FakeLocation,
|
| kUniform2RealLocation,
|
| + kUniform2DesiredLocation,
|
| kUniform2Name,
|
| },
|
| - { kUniform3GoodName,
|
| + { kUniform3BadName,
|
| kUniform3Size,
|
| kUniform3Type,
|
| kUniform3FakeLocation,
|
| kUniform3RealLocation,
|
| + kUniform3DesiredLocation,
|
| kUniform3GoodName,
|
| },
|
| - { kUniform1Name,
|
| - kUniform1Size,
|
| - kUniform1Type,
|
| - kUniform1FakeLocation,
|
| - kUniform1RealLocation,
|
| - kUniform1Name,
|
| - },
|
| };
|
| - const size_t kNumAttribs= arraysize(kAttribs);
|
| +
|
| + const size_t kNumAttribs = arraysize(kAttribs);
|
| const size_t kNumUniforms = arraysize(kUniforms);
|
| - static const GLuint kClientProgramId = 1234;
|
| - static const GLuint kServiceProgramId = 5679;
|
| SetupShader(kAttribs, kNumAttribs, kUniforms, kNumUniforms,
|
| kServiceProgramId);
|
| - ProgramManager::ProgramInfo* program_info = manager_.CreateProgramInfo(
|
| - kClientProgramId, kServiceProgramId);
|
| - ASSERT_TRUE(program_info != NULL);
|
| - EXPECT_TRUE(program_info->AttachShader(&shader_manager_, vshader));
|
| - EXPECT_TRUE(program_info->AttachShader(&shader_manager_, fshader));
|
| program_info->Link();
|
| - // Check Uniforms
|
| - const ProgramManager::ProgramInfo::UniformInfo* uniform_info =
|
| - program_info->GetUniformInfo(0);
|
| - ASSERT_TRUE(uniform_info != NULL);
|
| - EXPECT_STREQ(kUniform1Name, uniform_info->name.c_str());
|
| - EXPECT_EQ(0, uniform_info->fake_location_base);
|
| - uniform_info = program_info->GetUniformInfo(1);
|
| - ASSERT_TRUE(uniform_info != NULL);
|
| - EXPECT_STREQ(kUniform2Name, uniform_info->name.c_str());
|
| - EXPECT_EQ(1, uniform_info->fake_location_base);
|
| - uniform_info = program_info->GetUniformInfo(2);
|
| - ASSERT_TRUE(uniform_info != NULL);
|
| - EXPECT_STREQ(kUniform3GoodName, uniform_info->name.c_str());
|
| - EXPECT_EQ(2, uniform_info->fake_location_base);
|
| +
|
| + EXPECT_EQ(kUniform1DesiredLocation,
|
| + program_info->GetUniformFakeLocation(kUniform1Name));
|
| + EXPECT_EQ(kUniform3DesiredLocation,
|
| + program_info->GetUniformFakeLocation(kUniform3BadName));
|
| + EXPECT_EQ(kUniform3DesiredLocation,
|
| + program_info->GetUniformFakeLocation(kUniform3GoodName));
|
| }
|
|
|
| } // namespace gles2
|
|
|