Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(140)

Unified Diff: gpu/command_buffer/service/program_manager_unittest.cc

Issue 10635011: Add glBindUniformLocationCHROMIUM (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gpu/command_buffer/service/program_manager.cc ('k') | gpu/command_buffer/service/test_helper.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « gpu/command_buffer/service/program_manager.cc ('k') | gpu/command_buffer/service/test_helper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698