Index: gpu/command_buffer/client/program_info_manager_unittest.cc |
diff --git a/gpu/command_buffer/client/program_info_manager_unittest.cc b/gpu/command_buffer/client/program_info_manager_unittest.cc |
index 6b0576cf82c11ca727ad2d85f40a8c414aaae509..316faa203b7777d457a4caf570d023d831e1841b 100644 |
--- a/gpu/command_buffer/client/program_info_manager_unittest.cc |
+++ b/gpu/command_buffer/client/program_info_manager_unittest.cc |
@@ -179,6 +179,55 @@ TEST_F(ProgramInfoManagerTest, GetActiveUniformBlockNameCached) { |
EXPECT_STREQ(std::string(data.name0).substr(0, length).c_str(), &buffer[0]); |
} |
+TEST_F(ProgramInfoManagerTest, GetActiveUniformBlockivCached) { |
+ UniformBlocksData data; |
+ SetupUniformBlocksData(&data); |
+ std::vector<int8> result(sizeof(data)); |
+ memcpy(&result[0], &data, sizeof(data)); |
+ program_->UpdateES3UniformBlocks(result); |
+ const char* kName[] = { data.name0, data.name1 }; |
+ const uint32_t* kIndices[] = { data.indices0, data.indices1 }; |
+ |
+ for (uint32_t ii = 0; ii < data.header.num_uniform_blocks; ++ii) { |
+ ASSERT_GE(2u, data.entry[ii].active_uniforms); |
+ GLint params[2]; |
+ EXPECT_EQ(true, program_info_manager_->GetActiveUniformBlockiv( |
+ NULL, kClientProgramId, ii, GL_UNIFORM_BLOCK_BINDING, params)); |
+ EXPECT_EQ(data.entry[ii].binding, static_cast<uint32_t>(params[0])); |
+ |
+ EXPECT_EQ(true, program_info_manager_->GetActiveUniformBlockiv( |
+ NULL, kClientProgramId, ii, GL_UNIFORM_BLOCK_DATA_SIZE, params)); |
+ EXPECT_EQ(data.entry[ii].data_size, static_cast<uint32_t>(params[0])); |
+ |
+ EXPECT_EQ(true, program_info_manager_->GetActiveUniformBlockiv( |
+ NULL, kClientProgramId, ii, GL_UNIFORM_BLOCK_NAME_LENGTH, params)); |
+ EXPECT_EQ(strlen(kName[ii]) + 1, static_cast<uint32_t>(params[0])); |
+ |
+ EXPECT_EQ(true, program_info_manager_->GetActiveUniformBlockiv( |
+ NULL, kClientProgramId, ii, GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS, params)); |
+ EXPECT_EQ(data.entry[ii].active_uniforms, static_cast<uint32_t>(params[0])); |
+ |
+ EXPECT_EQ(true, program_info_manager_->GetActiveUniformBlockiv( |
+ NULL, kClientProgramId, ii, |
+ GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES, params)); |
+ for (uint32_t uu = 0; uu < data.entry[ii].active_uniforms; ++uu) { |
+ EXPECT_EQ(kIndices[ii][uu], static_cast<uint32_t>(params[uu])); |
+ } |
+ |
+ EXPECT_EQ(true, program_info_manager_->GetActiveUniformBlockiv( |
+ NULL, kClientProgramId, ii, |
+ GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER, params)); |
+ EXPECT_EQ(data.entry[ii].referenced_by_vertex_shader, |
+ static_cast<uint32_t>(params[0])); |
+ |
+ EXPECT_EQ(true, program_info_manager_->GetActiveUniformBlockiv( |
+ NULL, kClientProgramId, ii, |
+ GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER, params)); |
+ EXPECT_EQ(data.entry[ii].referenced_by_fragment_shader, |
+ static_cast<uint32_t>(params[0])); |
+ } |
+} |
+ |
} // namespace gles2 |
} // namespace gpu |