| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "gpu/command_buffer/service/memory_program_cache.h" | 5 #include "gpu/command_buffer/service/memory_program_cache.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "gpu/command_buffer/common/gles2_cmd_format.h" | 8 #include "gpu/command_buffer/common/gles2_cmd_format.h" |
| 9 #include "gpu/command_buffer/service/gl_utils.h" | 9 #include "gpu/command_buffer/service/gl_utils.h" |
| 10 #include "gpu/command_buffer/service/gpu_service_test.h" | 10 #include "gpu/command_buffer/service/gpu_service_test.h" |
| 11 #include "gpu/command_buffer/service/shader_manager.h" | 11 #include "gpu/command_buffer/service/shader_manager.h" |
| 12 #include "gpu/command_buffer/service/shader_translator.h" | 12 #include "gpu/command_buffer/service/shader_translator.h" |
| 13 #include "gpu/command_buffer/service/test_helper.h" |
| 13 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
| 14 #include "ui/gl/gl_bindings.h" | 15 #include "ui/gl/gl_bindings.h" |
| 15 #include "ui/gl/gl_mock.h" | 16 #include "ui/gl/gl_mock.h" |
| 16 | 17 |
| 17 using ::testing::_; | 18 using ::testing::_; |
| 18 using ::testing::ElementsAreArray; | 19 using ::testing::ElementsAreArray; |
| 19 using ::testing::Invoke; | 20 using ::testing::Invoke; |
| 20 using ::testing::SetArgPointee; | 21 using ::testing::SetArgPointee; |
| 21 using ::testing::SetArrayArgument; | 22 using ::testing::SetArrayArgument; |
| 22 | 23 |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 116 vertex_attrib_map["a"] = VariableInfo(1, 34, SH_PRECISION_LOWP, 0, "a"); | 117 vertex_attrib_map["a"] = VariableInfo(1, 34, SH_PRECISION_LOWP, 0, "a"); |
| 117 vertex_uniform_map["a"] = VariableInfo(0, 10, SH_PRECISION_MEDIUMP, 1, "a"); | 118 vertex_uniform_map["a"] = VariableInfo(0, 10, SH_PRECISION_MEDIUMP, 1, "a"); |
| 118 vertex_uniform_map["b"] = VariableInfo(2, 3114, SH_PRECISION_HIGHP, 1, "b"); | 119 vertex_uniform_map["b"] = VariableInfo(2, 3114, SH_PRECISION_HIGHP, 1, "b"); |
| 119 vertex_varying_map["c"] = VariableInfo(3, 2, SH_PRECISION_HIGHP, 1, "c"); | 120 vertex_varying_map["c"] = VariableInfo(3, 2, SH_PRECISION_HIGHP, 1, "c"); |
| 120 fragment_attrib_map["jjjbb"] = | 121 fragment_attrib_map["jjjbb"] = |
| 121 VariableInfo(463, 1114, SH_PRECISION_MEDIUMP, 0, "jjjbb"); | 122 VariableInfo(463, 1114, SH_PRECISION_MEDIUMP, 0, "jjjbb"); |
| 122 fragment_uniform_map["k"] = | 123 fragment_uniform_map["k"] = |
| 123 VariableInfo(10, 34413, SH_PRECISION_MEDIUMP, 1, "k"); | 124 VariableInfo(10, 34413, SH_PRECISION_MEDIUMP, 1, "k"); |
| 124 fragment_varying_map["c"] = VariableInfo(3, 2, SH_PRECISION_HIGHP, 1, "c"); | 125 fragment_varying_map["c"] = VariableInfo(3, 2, SH_PRECISION_HIGHP, 1, "c"); |
| 125 | 126 |
| 126 vertex_shader_->set_attrib_map(vertex_attrib_map); | 127 vertex_shader_->set_source("bbbalsldkdkdkd"); |
| 127 vertex_shader_->set_uniform_map(vertex_uniform_map); | 128 fragment_shader_->set_source("bbbal sldkdkdkas 134 ad"); |
| 128 vertex_shader_->set_varying_map(vertex_varying_map); | |
| 129 fragment_shader_->set_attrib_map(vertex_attrib_map); | |
| 130 fragment_shader_->set_uniform_map(vertex_uniform_map); | |
| 131 fragment_shader_->set_varying_map(vertex_varying_map); | |
| 132 | 129 |
| 133 vertex_shader_->UpdateSource("bbbalsldkdkdkd"); | 130 TestHelper::SetShaderStates( |
| 134 fragment_shader_->UpdateSource("bbbal sldkdkdkas 134 ad"); | 131 gl_.get(), vertex_shader_, true, NULL, NULL, |
| 135 | 132 &vertex_attrib_map, &vertex_uniform_map, &vertex_varying_map, |
| 136 vertex_shader_->SetStatus(true, NULL, NULL); | 133 NULL); |
| 137 fragment_shader_->SetStatus(true, NULL, NULL); | 134 TestHelper::SetShaderStates( |
| 135 gl_.get(), fragment_shader_, true, NULL, NULL, |
| 136 &fragment_attrib_map, &fragment_uniform_map, &fragment_varying_map, |
| 137 NULL); |
| 138 } | 138 } |
| 139 | 139 |
| 140 void SetExpectationsForSaveLinkedProgram( | 140 void SetExpectationsForSaveLinkedProgram( |
| 141 const GLint program_id, | 141 const GLint program_id, |
| 142 ProgramBinaryEmulator* emulator) const { | 142 ProgramBinaryEmulator* emulator) const { |
| 143 EXPECT_CALL(*gl_.get(), | 143 EXPECT_CALL(*gl_.get(), |
| 144 GetProgramiv(program_id, GL_PROGRAM_BINARY_LENGTH_OES, _)) | 144 GetProgramiv(program_id, GL_PROGRAM_BINARY_LENGTH_OES, _)) |
| 145 .WillOnce(SetArgPointee<2>(emulator->length())); | 145 .WillOnce(SetArgPointee<2>(emulator->length())); |
| 146 EXPECT_CALL(*gl_.get(), | 146 EXPECT_CALL(*gl_.get(), |
| 147 GetProgramBinary(program_id, emulator->length(), _, _, _)) | 147 GetProgramBinary(program_id, emulator->length(), _, _, _)) |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 194 } | 194 } |
| 195 ProgramBinaryEmulator emulator(kBinaryLength, kFormat, test_binary); | 195 ProgramBinaryEmulator emulator(kBinaryLength, kFormat, test_binary); |
| 196 | 196 |
| 197 SetExpectationsForSaveLinkedProgram(kProgramId, &emulator); | 197 SetExpectationsForSaveLinkedProgram(kProgramId, &emulator); |
| 198 cache_->SaveLinkedProgram(kProgramId, vertex_shader_, NULL, | 198 cache_->SaveLinkedProgram(kProgramId, vertex_shader_, NULL, |
| 199 fragment_shader_, NULL, NULL, | 199 fragment_shader_, NULL, NULL, |
| 200 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, | 200 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, |
| 201 base::Unretained(this))); | 201 base::Unretained(this))); |
| 202 | 202 |
| 203 EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus( | 203 EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus( |
| 204 *vertex_shader_->signature_source(), | 204 vertex_shader_->signature_source(), |
| 205 NULL, | 205 NULL, |
| 206 *fragment_shader_->signature_source(), | 206 fragment_shader_->signature_source(), |
| 207 NULL, | 207 NULL, |
| 208 NULL)); | 208 NULL)); |
| 209 EXPECT_EQ(1, shader_cache_count()); | 209 EXPECT_EQ(1, shader_cache_count()); |
| 210 } | 210 } |
| 211 | 211 |
| 212 TEST_F(MemoryProgramCacheTest, LoadProgram) { | 212 TEST_F(MemoryProgramCacheTest, LoadProgram) { |
| 213 const GLenum kFormat = 1; | 213 const GLenum kFormat = 1; |
| 214 const int kProgramId = 10; | 214 const int kProgramId = 10; |
| 215 const int kBinaryLength = 20; | 215 const int kBinaryLength = 20; |
| 216 char test_binary[kBinaryLength]; | 216 char test_binary[kBinaryLength]; |
| 217 for (int i = 0; i < kBinaryLength; ++i) { | 217 for (int i = 0; i < kBinaryLength; ++i) { |
| 218 test_binary[i] = i; | 218 test_binary[i] = i; |
| 219 } | 219 } |
| 220 ProgramBinaryEmulator emulator(kBinaryLength, kFormat, test_binary); | 220 ProgramBinaryEmulator emulator(kBinaryLength, kFormat, test_binary); |
| 221 | 221 |
| 222 SetExpectationsForSaveLinkedProgram(kProgramId, &emulator); | 222 SetExpectationsForSaveLinkedProgram(kProgramId, &emulator); |
| 223 cache_->SaveLinkedProgram(kProgramId, vertex_shader_, NULL, | 223 cache_->SaveLinkedProgram(kProgramId, vertex_shader_, NULL, |
| 224 fragment_shader_, NULL, NULL, | 224 fragment_shader_, NULL, NULL, |
| 225 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, | 225 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, |
| 226 base::Unretained(this))); | 226 base::Unretained(this))); |
| 227 | 227 |
| 228 EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus( | 228 EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus( |
| 229 *vertex_shader_->signature_source(), | 229 vertex_shader_->signature_source(), |
| 230 NULL, | 230 NULL, |
| 231 *fragment_shader_->signature_source(), | 231 fragment_shader_->signature_source(), |
| 232 NULL, | 232 NULL, |
| 233 NULL)); | 233 NULL)); |
| 234 EXPECT_EQ(1, shader_cache_count()); | 234 EXPECT_EQ(1, shader_cache_count()); |
| 235 | 235 |
| 236 cache_->Clear(); | 236 cache_->Clear(); |
| 237 | 237 |
| 238 cache_->LoadProgram(shader_cache_shader()); | 238 cache_->LoadProgram(shader_cache_shader()); |
| 239 EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus( | 239 EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus( |
| 240 *vertex_shader_->signature_source(), | 240 vertex_shader_->signature_source(), |
| 241 NULL, | 241 NULL, |
| 242 *fragment_shader_->signature_source(), | 242 fragment_shader_->signature_source(), |
| 243 NULL, | 243 NULL, |
| 244 NULL)); | 244 NULL)); |
| 245 } | 245 } |
| 246 | 246 |
| 247 TEST_F(MemoryProgramCacheTest, CacheLoadMatchesSave) { | 247 TEST_F(MemoryProgramCacheTest, CacheLoadMatchesSave) { |
| 248 const GLenum kFormat = 1; | 248 const GLenum kFormat = 1; |
| 249 const int kProgramId = 10; | 249 const int kProgramId = 10; |
| 250 const int kBinaryLength = 20; | 250 const int kBinaryLength = 20; |
| 251 char test_binary[kBinaryLength]; | 251 char test_binary[kBinaryLength]; |
| 252 for (int i = 0; i < kBinaryLength; ++i) { | 252 for (int i = 0; i < kBinaryLength; ++i) { |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 394 test_binary[i] = i; | 394 test_binary[i] = i; |
| 395 } | 395 } |
| 396 ProgramBinaryEmulator emulator(kBinaryLength, kFormat, test_binary); | 396 ProgramBinaryEmulator emulator(kBinaryLength, kFormat, test_binary); |
| 397 | 397 |
| 398 SetExpectationsForSaveLinkedProgram(kProgramId, &emulator); | 398 SetExpectationsForSaveLinkedProgram(kProgramId, &emulator); |
| 399 cache_->SaveLinkedProgram(kProgramId, vertex_shader_, NULL, | 399 cache_->SaveLinkedProgram(kProgramId, vertex_shader_, NULL, |
| 400 fragment_shader_, NULL, NULL, | 400 fragment_shader_, NULL, NULL, |
| 401 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, | 401 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, |
| 402 base::Unretained(this))); | 402 base::Unretained(this))); |
| 403 | 403 |
| 404 const std::string vertex_orig_source = | 404 const std::string vertex_orig_source = vertex_shader_->signature_source(); |
| 405 *vertex_shader_->signature_source(); | 405 vertex_shader_->set_source("different!"); |
| 406 vertex_shader_->UpdateSource("different!"); | 406 TestHelper::SetShaderStates(gl_.get(), vertex_shader_, true); |
| 407 vertex_shader_->SetStatus(true, NULL, NULL); | |
| 408 EXPECT_EQ(ProgramCache::PROGRAM_LOAD_FAILURE, cache_->LoadLinkedProgram( | 407 EXPECT_EQ(ProgramCache::PROGRAM_LOAD_FAILURE, cache_->LoadLinkedProgram( |
| 409 kProgramId, | 408 kProgramId, |
| 410 vertex_shader_, | 409 vertex_shader_, |
| 411 NULL, | 410 NULL, |
| 412 fragment_shader_, | 411 fragment_shader_, |
| 413 NULL, | 412 NULL, |
| 414 NULL, | 413 NULL, |
| 415 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, | 414 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, |
| 416 base::Unretained(this)))); | 415 base::Unretained(this)))); |
| 417 | 416 |
| 418 vertex_shader_->UpdateSource(vertex_orig_source.c_str()); | 417 vertex_shader_->set_source(vertex_orig_source); |
| 419 vertex_shader_->SetStatus(true, NULL, NULL); | 418 TestHelper::SetShaderStates(gl_.get(), vertex_shader_, true); |
| 420 fragment_shader_->UpdateSource("different!"); | 419 fragment_shader_->set_source("different!"); |
| 421 fragment_shader_->SetStatus(true, NULL, NULL); | 420 TestHelper::SetShaderStates(gl_.get(), fragment_shader_, true); |
| 422 EXPECT_EQ(ProgramCache::PROGRAM_LOAD_FAILURE, cache_->LoadLinkedProgram( | 421 EXPECT_EQ(ProgramCache::PROGRAM_LOAD_FAILURE, cache_->LoadLinkedProgram( |
| 423 kProgramId, | 422 kProgramId, |
| 424 vertex_shader_, | 423 vertex_shader_, |
| 425 NULL, | 424 NULL, |
| 426 fragment_shader_, | 425 fragment_shader_, |
| 427 NULL, | 426 NULL, |
| 428 NULL, | 427 NULL, |
| 429 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, | 428 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, |
| 430 base::Unretained(this)))); | 429 base::Unretained(this)))); |
| 431 } | 430 } |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 487 SetExpectationsForSaveLinkedProgram(kProgramId, &emulator1); | 486 SetExpectationsForSaveLinkedProgram(kProgramId, &emulator1); |
| 488 cache_->SaveLinkedProgram(kProgramId, vertex_shader_, NULL, | 487 cache_->SaveLinkedProgram(kProgramId, vertex_shader_, NULL, |
| 489 fragment_shader_, NULL, NULL, | 488 fragment_shader_, NULL, NULL, |
| 490 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, | 489 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, |
| 491 base::Unretained(this))); | 490 base::Unretained(this))); |
| 492 | 491 |
| 493 const int kEvictingProgramId = 11; | 492 const int kEvictingProgramId = 11; |
| 494 const GLuint kEvictingBinaryLength = kCacheSizeBytes - kBinaryLength + 1; | 493 const GLuint kEvictingBinaryLength = kCacheSizeBytes - kBinaryLength + 1; |
| 495 | 494 |
| 496 // save old source and modify for new program | 495 // save old source and modify for new program |
| 497 const std::string old_source = | 496 const std::string& old_source = fragment_shader_->signature_source(); |
| 498 *fragment_shader_->signature_source(); | 497 fragment_shader_->set_source("al sdfkjdk"); |
| 499 fragment_shader_->UpdateSource("al sdfkjdk"); | 498 TestHelper::SetShaderStates(gl_.get(), fragment_shader_, true); |
| 500 fragment_shader_->SetStatus(true, NULL, NULL); | |
| 501 | 499 |
| 502 scoped_ptr<char[]> bigTestBinary = | 500 scoped_ptr<char[]> bigTestBinary = |
| 503 scoped_ptr<char[]>(new char[kEvictingBinaryLength]); | 501 scoped_ptr<char[]>(new char[kEvictingBinaryLength]); |
| 504 for (size_t i = 0; i < kEvictingBinaryLength; ++i) { | 502 for (size_t i = 0; i < kEvictingBinaryLength; ++i) { |
| 505 bigTestBinary[i] = i % 250; | 503 bigTestBinary[i] = i % 250; |
| 506 } | 504 } |
| 507 ProgramBinaryEmulator emulator2(kEvictingBinaryLength, | 505 ProgramBinaryEmulator emulator2(kEvictingBinaryLength, |
| 508 kFormat, | 506 kFormat, |
| 509 bigTestBinary.get()); | 507 bigTestBinary.get()); |
| 510 | 508 |
| 511 SetExpectationsForSaveLinkedProgram(kEvictingProgramId, &emulator2); | 509 SetExpectationsForSaveLinkedProgram(kEvictingProgramId, &emulator2); |
| 512 cache_->SaveLinkedProgram(kEvictingProgramId, | 510 cache_->SaveLinkedProgram(kEvictingProgramId, |
| 513 vertex_shader_, | 511 vertex_shader_, |
| 514 NULL, | 512 NULL, |
| 515 fragment_shader_, | 513 fragment_shader_, |
| 516 NULL, | 514 NULL, |
| 517 NULL, | 515 NULL, |
| 518 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, | 516 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, |
| 519 base::Unretained(this))); | 517 base::Unretained(this))); |
| 520 | 518 |
| 521 EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus( | 519 EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus( |
| 522 *vertex_shader_->signature_source(), | 520 vertex_shader_->signature_source(), |
| 523 NULL, | 521 NULL, |
| 524 *fragment_shader_->signature_source(), | 522 fragment_shader_->signature_source(), |
| 525 NULL, | 523 NULL, |
| 526 NULL)); | 524 NULL)); |
| 527 EXPECT_EQ(ProgramCache::LINK_UNKNOWN, cache_->GetLinkedProgramStatus( | 525 EXPECT_EQ(ProgramCache::LINK_UNKNOWN, cache_->GetLinkedProgramStatus( |
| 528 old_source, | 526 old_source, |
| 529 NULL, | 527 NULL, |
| 530 *fragment_shader_->signature_source(), | 528 fragment_shader_->signature_source(), |
| 531 NULL, | 529 NULL, |
| 532 NULL)); | 530 NULL)); |
| 533 } | 531 } |
| 534 | 532 |
| 535 TEST_F(MemoryProgramCacheTest, SaveCorrectProgram) { | 533 TEST_F(MemoryProgramCacheTest, SaveCorrectProgram) { |
| 536 const GLenum kFormat = 1; | 534 const GLenum kFormat = 1; |
| 537 const int kProgramId = 10; | 535 const int kProgramId = 10; |
| 538 const int kBinaryLength = 20; | 536 const int kBinaryLength = 20; |
| 539 char test_binary[kBinaryLength]; | 537 char test_binary[kBinaryLength]; |
| 540 for (int i = 0; i < kBinaryLength; ++i) { | 538 for (int i = 0; i < kBinaryLength; ++i) { |
| 541 test_binary[i] = i; | 539 test_binary[i] = i; |
| 542 } | 540 } |
| 543 ProgramBinaryEmulator emulator1(kBinaryLength, kFormat, test_binary); | 541 ProgramBinaryEmulator emulator1(kBinaryLength, kFormat, test_binary); |
| 544 | 542 |
| 545 vertex_shader_->UpdateSource("different!"); | 543 vertex_shader_->set_source("different!"); |
| 546 SetExpectationsForSaveLinkedProgram(kProgramId, &emulator1); | 544 SetExpectationsForSaveLinkedProgram(kProgramId, &emulator1); |
| 547 cache_->SaveLinkedProgram(kProgramId, vertex_shader_, NULL, | 545 cache_->SaveLinkedProgram(kProgramId, vertex_shader_, NULL, |
| 548 fragment_shader_, NULL, NULL, | 546 fragment_shader_, NULL, NULL, |
| 549 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, | 547 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, |
| 550 base::Unretained(this))); | 548 base::Unretained(this))); |
| 551 | 549 |
| 552 EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus( | 550 EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus( |
| 553 *vertex_shader_->signature_source(), | 551 vertex_shader_->signature_source(), |
| 554 NULL, | 552 NULL, |
| 555 *fragment_shader_->signature_source(), | 553 fragment_shader_->signature_source(), |
| 556 NULL, | 554 NULL, |
| 557 NULL)); | 555 NULL)); |
| 558 } | 556 } |
| 559 | 557 |
| 560 TEST_F(MemoryProgramCacheTest, LoadCorrectProgram) { | 558 TEST_F(MemoryProgramCacheTest, LoadCorrectProgram) { |
| 561 const GLenum kFormat = 1; | 559 const GLenum kFormat = 1; |
| 562 const int kProgramId = 10; | 560 const int kProgramId = 10; |
| 563 const int kBinaryLength = 20; | 561 const int kBinaryLength = 20; |
| 564 char test_binary[kBinaryLength]; | 562 char test_binary[kBinaryLength]; |
| 565 for (int i = 0; i < kBinaryLength; ++i) { | 563 for (int i = 0; i < kBinaryLength; ++i) { |
| 566 test_binary[i] = i; | 564 test_binary[i] = i; |
| 567 } | 565 } |
| 568 ProgramBinaryEmulator emulator(kBinaryLength, kFormat, test_binary); | 566 ProgramBinaryEmulator emulator(kBinaryLength, kFormat, test_binary); |
| 569 | 567 |
| 570 SetExpectationsForSaveLinkedProgram(kProgramId, &emulator); | 568 SetExpectationsForSaveLinkedProgram(kProgramId, &emulator); |
| 571 cache_->SaveLinkedProgram(kProgramId, vertex_shader_, NULL, | 569 cache_->SaveLinkedProgram(kProgramId, vertex_shader_, NULL, |
| 572 fragment_shader_, NULL, NULL, | 570 fragment_shader_, NULL, NULL, |
| 573 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, | 571 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, |
| 574 base::Unretained(this))); | 572 base::Unretained(this))); |
| 575 | 573 |
| 576 EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus( | 574 EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus( |
| 577 *vertex_shader_->signature_source(), | 575 vertex_shader_->signature_source(), |
| 578 NULL, | 576 NULL, |
| 579 *fragment_shader_->signature_source(), | 577 fragment_shader_->signature_source(), |
| 580 NULL, | 578 NULL, |
| 581 NULL)); | 579 NULL)); |
| 582 | 580 |
| 583 SetExpectationsForLoadLinkedProgram(kProgramId, &emulator); | 581 SetExpectationsForLoadLinkedProgram(kProgramId, &emulator); |
| 584 | 582 |
| 585 fragment_shader_->UpdateSource("different!"); | 583 fragment_shader_->set_source("different!"); |
| 586 EXPECT_EQ(ProgramCache::PROGRAM_LOAD_SUCCESS, cache_->LoadLinkedProgram( | 584 EXPECT_EQ(ProgramCache::PROGRAM_LOAD_SUCCESS, cache_->LoadLinkedProgram( |
| 587 kProgramId, | 585 kProgramId, |
| 588 vertex_shader_, | 586 vertex_shader_, |
| 589 NULL, | 587 NULL, |
| 590 fragment_shader_, | 588 fragment_shader_, |
| 591 NULL, | 589 NULL, |
| 592 NULL, | 590 NULL, |
| 593 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, | 591 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, |
| 594 base::Unretained(this)))); | 592 base::Unretained(this)))); |
| 595 } | 593 } |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 629 NULL, | 627 NULL, |
| 630 fragment_shader_, | 628 fragment_shader_, |
| 631 NULL, | 629 NULL, |
| 632 NULL, | 630 NULL, |
| 633 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, | 631 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, |
| 634 base::Unretained(this)))); | 632 base::Unretained(this)))); |
| 635 } | 633 } |
| 636 | 634 |
| 637 } // namespace gles2 | 635 } // namespace gles2 |
| 638 } // namespace gpu | 636 } // namespace gpu |
| OLD | NEW |