| Index: gpu/command_buffer/service/memory_program_cache_unittest.cc
|
| diff --git a/gpu/command_buffer/service/memory_program_cache_unittest.cc b/gpu/command_buffer/service/memory_program_cache_unittest.cc
|
| index 795b0afc072fc33c3dc728ebc041f3e90eb1dd3b..8dba185cd9f4ed9506a85efc40d0778427236c5f 100644
|
| --- a/gpu/command_buffer/service/memory_program_cache_unittest.cc
|
| +++ b/gpu/command_buffer/service/memory_program_cache_unittest.cc
|
| @@ -177,6 +177,7 @@ class MemoryProgramCacheTest : public GpuServiceTest {
|
| Shader* fragment_shader_;
|
| int32 shader_cache_count_;
|
| std::string shader_cache_shader_;
|
| + std::vector<std::string> varyings_;
|
| };
|
|
|
| TEST_F(MemoryProgramCacheTest, CacheSave) {
|
| @@ -191,14 +192,14 @@ TEST_F(MemoryProgramCacheTest, CacheSave) {
|
|
|
| SetExpectationsForSaveLinkedProgram(kProgramId, &emulator);
|
| cache_->SaveLinkedProgram(kProgramId, vertex_shader_,
|
| - fragment_shader_, NULL,
|
| + fragment_shader_, NULL, varyings_, GL_NONE,
|
| base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
|
| base::Unretained(this)));
|
|
|
| EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus(
|
| vertex_shader_->last_compiled_signature(),
|
| fragment_shader_->last_compiled_signature(),
|
| - NULL));
|
| + NULL, varyings_, GL_NONE));
|
| EXPECT_EQ(1, shader_cache_count());
|
| }
|
|
|
| @@ -214,14 +215,14 @@ TEST_F(MemoryProgramCacheTest, LoadProgram) {
|
|
|
| SetExpectationsForSaveLinkedProgram(kProgramId, &emulator);
|
| cache_->SaveLinkedProgram(kProgramId, vertex_shader_,
|
| - fragment_shader_, NULL,
|
| + fragment_shader_, NULL, varyings_, GL_NONE,
|
| base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
|
| base::Unretained(this)));
|
|
|
| EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus(
|
| vertex_shader_->last_compiled_signature(),
|
| fragment_shader_->last_compiled_signature(),
|
| - NULL));
|
| + NULL, varyings_, GL_NONE));
|
| EXPECT_EQ(1, shader_cache_count());
|
|
|
| cache_->Clear();
|
| @@ -230,7 +231,7 @@ TEST_F(MemoryProgramCacheTest, LoadProgram) {
|
| EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus(
|
| vertex_shader_->last_compiled_signature(),
|
| fragment_shader_->last_compiled_signature(),
|
| - NULL));
|
| + NULL, varyings_, GL_NONE));
|
| }
|
|
|
| TEST_F(MemoryProgramCacheTest, CacheLoadMatchesSave) {
|
| @@ -245,7 +246,7 @@ TEST_F(MemoryProgramCacheTest, CacheLoadMatchesSave) {
|
|
|
| SetExpectationsForSaveLinkedProgram(kProgramId, &emulator);
|
| cache_->SaveLinkedProgram(kProgramId, vertex_shader_,
|
| - fragment_shader_, NULL,
|
| + fragment_shader_, NULL, varyings_, GL_NONE,
|
| base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
|
| base::Unretained(this)));
|
| EXPECT_EQ(1, shader_cache_count());
|
| @@ -271,6 +272,8 @@ TEST_F(MemoryProgramCacheTest, CacheLoadMatchesSave) {
|
| vertex_shader_,
|
| fragment_shader_,
|
| NULL,
|
| + varyings_,
|
| + GL_NONE,
|
| base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
|
| base::Unretained(this))));
|
|
|
| @@ -298,7 +301,7 @@ TEST_F(MemoryProgramCacheTest, LoadProgramMatchesSave) {
|
|
|
| SetExpectationsForSaveLinkedProgram(kProgramId, &emulator);
|
| cache_->SaveLinkedProgram(kProgramId, vertex_shader_,
|
| - fragment_shader_, NULL,
|
| + fragment_shader_, NULL, varyings_, GL_NONE,
|
| base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
|
| base::Unretained(this)));
|
| EXPECT_EQ(1, shader_cache_count());
|
| @@ -327,6 +330,8 @@ TEST_F(MemoryProgramCacheTest, LoadProgramMatchesSave) {
|
| vertex_shader_,
|
| fragment_shader_,
|
| NULL,
|
| + varyings_,
|
| + GL_NONE,
|
| base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
|
| base::Unretained(this))));
|
|
|
| @@ -354,7 +359,7 @@ TEST_F(MemoryProgramCacheTest, LoadFailOnLinkFalse) {
|
|
|
| SetExpectationsForSaveLinkedProgram(kProgramId, &emulator);
|
| cache_->SaveLinkedProgram(kProgramId, vertex_shader_,
|
| - fragment_shader_, NULL,
|
| + fragment_shader_, NULL, varyings_, GL_NONE,
|
| base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
|
| base::Unretained(this)));
|
|
|
| @@ -364,6 +369,8 @@ TEST_F(MemoryProgramCacheTest, LoadFailOnLinkFalse) {
|
| vertex_shader_,
|
| fragment_shader_,
|
| NULL,
|
| + varyings_,
|
| + GL_NONE,
|
| base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
|
| base::Unretained(this))));
|
| }
|
| @@ -380,7 +387,7 @@ TEST_F(MemoryProgramCacheTest, LoadFailOnDifferentSource) {
|
|
|
| SetExpectationsForSaveLinkedProgram(kProgramId, &emulator);
|
| cache_->SaveLinkedProgram(kProgramId, vertex_shader_,
|
| - fragment_shader_, NULL,
|
| + fragment_shader_, NULL, varyings_, GL_NONE,
|
| base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
|
| base::Unretained(this)));
|
|
|
| @@ -392,6 +399,8 @@ TEST_F(MemoryProgramCacheTest, LoadFailOnDifferentSource) {
|
| vertex_shader_,
|
| fragment_shader_,
|
| NULL,
|
| + varyings_,
|
| + GL_NONE,
|
| base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
|
| base::Unretained(this))));
|
|
|
| @@ -404,6 +413,8 @@ TEST_F(MemoryProgramCacheTest, LoadFailOnDifferentSource) {
|
| vertex_shader_,
|
| fragment_shader_,
|
| NULL,
|
| + varyings_,
|
| + GL_NONE,
|
| base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
|
| base::Unretained(this))));
|
| }
|
| @@ -425,6 +436,8 @@ TEST_F(MemoryProgramCacheTest, LoadFailOnDifferentMap) {
|
| vertex_shader_,
|
| fragment_shader_,
|
| &binding_map,
|
| + varyings_,
|
| + GL_NONE,
|
| base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
|
| base::Unretained(this)));
|
|
|
| @@ -434,6 +447,8 @@ TEST_F(MemoryProgramCacheTest, LoadFailOnDifferentMap) {
|
| vertex_shader_,
|
| fragment_shader_,
|
| &binding_map,
|
| + varyings_,
|
| + GL_NONE,
|
| base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
|
| base::Unretained(this))));
|
| EXPECT_EQ(ProgramCache::PROGRAM_LOAD_FAILURE, cache_->LoadLinkedProgram(
|
| @@ -441,6 +456,51 @@ TEST_F(MemoryProgramCacheTest, LoadFailOnDifferentMap) {
|
| vertex_shader_,
|
| fragment_shader_,
|
| NULL,
|
| + varyings_,
|
| + GL_NONE,
|
| + base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
|
| + base::Unretained(this))));
|
| +}
|
| +
|
| +TEST_F(MemoryProgramCacheTest, LoadFailOnDifferentTransformFeedbackVaryings) {
|
| + const GLenum kFormat = 1;
|
| + const int kProgramId = 10;
|
| + const int kBinaryLength = 20;
|
| + char test_binary[kBinaryLength];
|
| + for (int i = 0; i < kBinaryLength; ++i) {
|
| + test_binary[i] = i;
|
| + }
|
| + ProgramBinaryEmulator emulator(kBinaryLength, kFormat, test_binary);
|
| +
|
| + SetExpectationsForSaveLinkedProgram(kProgramId, &emulator);
|
| + varyings_.push_back("test");
|
| + cache_->SaveLinkedProgram(kProgramId,
|
| + vertex_shader_,
|
| + fragment_shader_,
|
| + NULL,
|
| + varyings_,
|
| + GL_INTERLEAVED_ATTRIBS,
|
| + base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
|
| + base::Unretained(this)));
|
| +
|
| + EXPECT_EQ(ProgramCache::PROGRAM_LOAD_FAILURE, cache_->LoadLinkedProgram(
|
| + kProgramId,
|
| + vertex_shader_,
|
| + fragment_shader_,
|
| + NULL,
|
| + varyings_,
|
| + GL_SEPARATE_ATTRIBS,
|
| + base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
|
| + base::Unretained(this))));
|
| +
|
| + varyings_.push_back("different!");
|
| + EXPECT_EQ(ProgramCache::PROGRAM_LOAD_FAILURE, cache_->LoadLinkedProgram(
|
| + kProgramId,
|
| + vertex_shader_,
|
| + fragment_shader_,
|
| + NULL,
|
| + varyings_,
|
| + GL_INTERLEAVED_ATTRIBS,
|
| base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
|
| base::Unretained(this))));
|
| }
|
| @@ -458,7 +518,7 @@ TEST_F(MemoryProgramCacheTest, MemoryProgramCacheEviction) {
|
|
|
| SetExpectationsForSaveLinkedProgram(kProgramId, &emulator1);
|
| cache_->SaveLinkedProgram(kProgramId, vertex_shader_,
|
| - fragment_shader_, NULL,
|
| + fragment_shader_, NULL, varyings_, GL_NONE,
|
| base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
|
| base::Unretained(this)));
|
|
|
| @@ -484,17 +544,19 @@ TEST_F(MemoryProgramCacheTest, MemoryProgramCacheEviction) {
|
| vertex_shader_,
|
| fragment_shader_,
|
| NULL,
|
| + varyings_,
|
| + GL_NONE,
|
| base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
|
| base::Unretained(this)));
|
|
|
| EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus(
|
| vertex_shader_->last_compiled_signature(),
|
| fragment_shader_->last_compiled_signature(),
|
| - NULL));
|
| + NULL, varyings_, GL_NONE));
|
| EXPECT_EQ(ProgramCache::LINK_UNKNOWN, cache_->GetLinkedProgramStatus(
|
| old_sig,
|
| fragment_shader_->last_compiled_signature(),
|
| - NULL));
|
| + NULL, varyings_, GL_NONE));
|
| }
|
|
|
| TEST_F(MemoryProgramCacheTest, SaveCorrectProgram) {
|
| @@ -510,14 +572,14 @@ TEST_F(MemoryProgramCacheTest, SaveCorrectProgram) {
|
| vertex_shader_->set_source("different!");
|
| SetExpectationsForSaveLinkedProgram(kProgramId, &emulator1);
|
| cache_->SaveLinkedProgram(kProgramId, vertex_shader_,
|
| - fragment_shader_, NULL,
|
| + fragment_shader_, NULL, varyings_, GL_NONE,
|
| base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
|
| base::Unretained(this)));
|
|
|
| EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus(
|
| vertex_shader_->last_compiled_signature(),
|
| fragment_shader_->last_compiled_signature(),
|
| - NULL));
|
| + NULL, varyings_, GL_NONE));
|
| }
|
|
|
| TEST_F(MemoryProgramCacheTest, LoadCorrectProgram) {
|
| @@ -532,14 +594,14 @@ TEST_F(MemoryProgramCacheTest, LoadCorrectProgram) {
|
|
|
| SetExpectationsForSaveLinkedProgram(kProgramId, &emulator);
|
| cache_->SaveLinkedProgram(kProgramId, vertex_shader_,
|
| - fragment_shader_, NULL,
|
| + fragment_shader_, NULL, varyings_, GL_NONE,
|
| base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
|
| base::Unretained(this)));
|
|
|
| EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus(
|
| vertex_shader_->last_compiled_signature(),
|
| fragment_shader_->last_compiled_signature(),
|
| - NULL));
|
| + NULL, varyings_, GL_NONE));
|
|
|
| SetExpectationsForLoadLinkedProgram(kProgramId, &emulator);
|
|
|
| @@ -549,6 +611,8 @@ TEST_F(MemoryProgramCacheTest, LoadCorrectProgram) {
|
| vertex_shader_,
|
| fragment_shader_,
|
| NULL,
|
| + varyings_,
|
| + GL_NONE,
|
| base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
|
| base::Unretained(this))));
|
| }
|
| @@ -565,7 +629,7 @@ TEST_F(MemoryProgramCacheTest, OverwriteOnNewSave) {
|
|
|
| SetExpectationsForSaveLinkedProgram(kProgramId, &emulator);
|
| cache_->SaveLinkedProgram(kProgramId, vertex_shader_,
|
| - fragment_shader_, NULL,
|
| + fragment_shader_, NULL, varyings_, GL_NONE,
|
| base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
|
| base::Unretained(this)));
|
|
|
| @@ -577,7 +641,7 @@ TEST_F(MemoryProgramCacheTest, OverwriteOnNewSave) {
|
| ProgramBinaryEmulator emulator2(kBinaryLength, kFormat, test_binary2);
|
| SetExpectationsForSaveLinkedProgram(kProgramId, &emulator2);
|
| cache_->SaveLinkedProgram(kProgramId, vertex_shader_,
|
| - fragment_shader_, NULL,
|
| + fragment_shader_, NULL, varyings_, GL_NONE,
|
| base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
|
| base::Unretained(this)));
|
|
|
| @@ -587,6 +651,8 @@ TEST_F(MemoryProgramCacheTest, OverwriteOnNewSave) {
|
| vertex_shader_,
|
| fragment_shader_,
|
| NULL,
|
| + varyings_,
|
| + GL_NONE,
|
| base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
|
| base::Unretained(this))));
|
| }
|
|
|