| 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 c0fad679a4a97da74c57c38beba93a50372670a4..c05113f0f17da66991363a51498fe78f81d16b3c 100644
|
| --- a/gpu/command_buffer/service/program_manager_unittest.cc
|
| +++ b/gpu/command_buffer/service/program_manager_unittest.cc
|
| @@ -11,6 +11,7 @@
|
| #include "base/string_util.h"
|
| #include "gpu/command_buffer/common/gl_mock.h"
|
| #include "gpu/command_buffer/common/gles2_cmd_format.h"
|
| +#include "gpu/command_buffer/common/gles2_cmd_utils.h"
|
| #include "gpu/command_buffer/service/common_decoder.h"
|
| #include "gpu/command_buffer/service/mocks.h"
|
| #include "gpu/command_buffer/service/test_helper.h"
|
| @@ -130,17 +131,6 @@ TEST_F(ProgramManagerTest, ProgramInfo) {
|
| EXPECT_TRUE(info1->log_info() == NULL);
|
| }
|
|
|
| -TEST_F(ProgramManagerTest, SwizzleLocation) {
|
| - GLint power = 1;
|
| - for (GLint p = 0; p < 5; ++p, power *= 10) {
|
| - GLint limit = power * 20 + 1;
|
| - for (GLint ii = -limit; ii < limit; ii += power) {
|
| - GLint s = manager_.SwizzleLocation(ii);
|
| - EXPECT_EQ(ii, manager_.UnswizzleLocation(s));
|
| - }
|
| - }
|
| -}
|
| -
|
| class ProgramManagerWithShaderTest : public testing::Test {
|
| public:
|
| ProgramManagerWithShaderTest()
|
| @@ -493,15 +483,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(ProgramManager::ProgramInfo::GetFakeLocation(
|
| - kUniform2FakeLocation, 1),
|
| + EXPECT_EQ(GLES2Util::MakeFakeLocation(kUniform2FakeLocation, 1),
|
| program_info->GetUniformFakeLocation("uniform2[1]"));
|
| - EXPECT_EQ(ProgramManager::ProgramInfo::GetFakeLocation(
|
| - kUniform2FakeLocation, 2),
|
| + EXPECT_EQ(GLES2Util::MakeFakeLocation(kUniform2FakeLocation, 2),
|
| program_info->GetUniformFakeLocation("uniform2[2]"));
|
| EXPECT_EQ(-1, program_info->GetUniformFakeLocation("uniform2[3]"));
|
| - EXPECT_EQ(ProgramManager::ProgramInfo::GetFakeLocation(
|
| - kUniform3FakeLocation, 1),
|
| + EXPECT_EQ(GLES2Util::MakeFakeLocation(kUniform3FakeLocation, 1),
|
| program_info->GetUniformFakeLocation("uniform3[1]"));
|
| EXPECT_EQ(-1, program_info->GetUniformFakeLocation("uniform3[2]"));
|
| }
|
| @@ -848,9 +835,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(manager_.SwizzleLocation(
|
| - ProgramManager::ProgramInfo::GetFakeLocation(
|
| - expected.fake_location, jj)),
|
| + EXPECT_EQ(GLES2Util::SwizzleLocation(
|
| + GLES2Util::MakeFakeLocation(expected.fake_location, jj)),
|
| locations[jj]);
|
| }
|
| const char* name_buf = bucket.GetDataAs<const char*>(
|
| @@ -999,6 +985,75 @@ TEST_F(ProgramManagerWithShaderTest, ClearWithSamplerTypes) {
|
| }
|
| }
|
|
|
| +TEST_F(ProgramManagerWithShaderTest, UniformsAreSorted) {
|
| + const GLuint kVShaderClientId = 2001;
|
| + const GLuint kFShaderClientId = 2002;
|
| + const GLuint kVShaderServiceId = 3001;
|
| + const GLuint kFShaderServiceId = 3002;
|
| + ShaderManager::ShaderInfo* vshader = shader_manager_.CreateShaderInfo(
|
| + kVShaderClientId, kVShaderServiceId, GL_VERTEX_SHADER);
|
| + ASSERT_TRUE(vshader != NULL);
|
| + vshader->SetStatus(true, "", NULL);
|
| + ShaderManager::ShaderInfo* fshader = shader_manager_.CreateShaderInfo(
|
| + kFShaderClientId, kFShaderServiceId, GL_FRAGMENT_SHADER);
|
| + ASSERT_TRUE(fshader != NULL);
|
| + fshader->SetStatus(true, "", NULL);
|
| + static ProgramManagerWithShaderTest::AttribInfo kAttribs[] = {
|
| + { kAttrib1Name, kAttrib1Size, kAttrib1Type, kAttrib1Location, },
|
| + { kAttrib2Name, kAttrib2Size, kAttrib2Type, kAttrib2Location, },
|
| + { kAttrib3Name, kAttrib3Size, kAttrib3Type, kAttrib3Location, },
|
| + };
|
| + static ProgramManagerWithShaderTest::UniformInfo kUniforms[] = {
|
| + { kUniform2Name,
|
| + kUniform2Size,
|
| + kUniform2Type,
|
| + kUniform2FakeLocation,
|
| + kUniform2RealLocation,
|
| + kUniform2Name,
|
| + },
|
| + { kUniform3GoodName,
|
| + kUniform3Size,
|
| + kUniform3Type,
|
| + kUniform3FakeLocation,
|
| + kUniform3RealLocation,
|
| + kUniform3GoodName,
|
| + },
|
| + { kUniform1Name,
|
| + kUniform1Size,
|
| + kUniform1Type,
|
| + kUniform1FakeLocation,
|
| + kUniform1RealLocation,
|
| + kUniform1Name,
|
| + },
|
| + };
|
| + 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);
|
| +}
|
| +
|
| } // namespace gles2
|
| } // namespace gpu
|
|
|
|
|