Index: gpu/command_buffer/service/program_manager_unittest.cc |
=================================================================== |
--- gpu/command_buffer/service/program_manager_unittest.cc (revision 124489) |
+++ gpu/command_buffer/service/program_manager_unittest.cc (working copy) |
@@ -938,6 +938,58 @@ |
static_cast<uint32>(input - inputs)); |
} |
+TEST_F(ProgramManagerWithShaderTest, BindAttribLocationConflicts) { |
+ // Set up shader |
+ const GLuint kShaderClientId = 1; |
+ const GLuint kShaderServiceId = 11; |
+ MockShaderTranslator shader_translator; |
+ ShaderTranslator::VariableMap attrib_map; |
+ for (uint32 ii = 0; ii < kNumAttribs; ++ii) { |
+ attrib_map[kAttribs[ii].name] = ShaderTranslatorInterface::VariableInfo( |
+ kAttribs[ii].type, kAttribs[ii].size, kAttribs[ii].name); |
+ } |
+ ShaderTranslator::VariableMap uniform_map; |
+ EXPECT_CALL(shader_translator, attrib_map()) |
+ .WillRepeatedly(ReturnRef(attrib_map)); |
+ EXPECT_CALL(shader_translator, uniform_map()) |
+ .WillRepeatedly(ReturnRef(uniform_map)); |
+ // Check we can create shader. |
+ ShaderManager::ShaderInfo* shader = shader_manager_.CreateShaderInfo( |
+ kShaderClientId, kShaderServiceId, GL_VERTEX_SHADER); |
+ // Check shader got created. |
+ ASSERT_TRUE(shader != NULL); |
+ // Set Status |
+ shader->SetStatus(true, "", &shader_translator); |
+ // Check attrib infos got copied. |
+ for (ShaderTranslator::VariableMap::const_iterator it = attrib_map.begin(); |
+ it != attrib_map.end(); ++it) { |
+ const ShaderManager::ShaderInfo::VariableInfo* variable_info = |
+ shader->GetAttribInfo(it->first); |
+ ASSERT_TRUE(variable_info != NULL); |
+ EXPECT_EQ(it->second.type, variable_info->type); |
+ EXPECT_EQ(it->second.size, variable_info->size); |
+ EXPECT_EQ(it->second.name, variable_info->name); |
+ } |
+ |
+ // Set up prgram |
greggman
2012/03/02 01:32:36
prgram->program
Zhenyao Mo
2012/03/02 18:58:22
Done.
|
+ const GLuint kClientProgramId = 6666; |
+ const GLuint kServiceProgramId = 8888; |
+ ProgramManager::ProgramInfo* program_info = |
+ manager_.CreateProgramInfo(kClientProgramId, kServiceProgramId); |
+ ASSERT_TRUE(program_info != NULL); |
+ EXPECT_TRUE(program_info->AttachShader(&shader_manager_, shader)); |
+ |
+ EXPECT_FALSE(program_info->DetectAttribLocationBindingConflicts()); |
+ program_info->SetAttribLocationBinding(kAttrib1Name, 0); |
+ EXPECT_FALSE(program_info->DetectAttribLocationBindingConflicts()); |
+ program_info->SetAttribLocationBinding("xxx", 0); |
+ EXPECT_FALSE(program_info->DetectAttribLocationBindingConflicts()); |
+ program_info->SetAttribLocationBinding(kAttrib2Name, 1); |
+ EXPECT_FALSE(program_info->DetectAttribLocationBindingConflicts()); |
+ program_info->SetAttribLocationBinding(kAttrib2Name, 0); |
+ EXPECT_TRUE(program_info->DetectAttribLocationBindingConflicts()); |
+} |
+ |
} // namespace gles2 |
} // namespace gpu |