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

Side by Side Diff: gpu/command_buffer/service/memory_program_cache_unittest.cc

Issue 903273002: Update from https://crrev.com/315085 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 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 unified diff | Download patch
OLDNEW
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"
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 } 189 }
190 ProgramBinaryEmulator emulator(kBinaryLength, kFormat, test_binary); 190 ProgramBinaryEmulator emulator(kBinaryLength, kFormat, test_binary);
191 191
192 SetExpectationsForSaveLinkedProgram(kProgramId, &emulator); 192 SetExpectationsForSaveLinkedProgram(kProgramId, &emulator);
193 cache_->SaveLinkedProgram(kProgramId, vertex_shader_, NULL, 193 cache_->SaveLinkedProgram(kProgramId, vertex_shader_, NULL,
194 fragment_shader_, NULL, NULL, 194 fragment_shader_, NULL, NULL,
195 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, 195 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
196 base::Unretained(this))); 196 base::Unretained(this)));
197 197
198 EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus( 198 EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus(
199 vertex_shader_->signature_source(), 199 vertex_shader_->last_compiled_source(),
200 NULL, 200 NULL,
201 fragment_shader_->signature_source(), 201 fragment_shader_->last_compiled_source(),
202 NULL, 202 NULL,
203 NULL)); 203 NULL));
204 EXPECT_EQ(1, shader_cache_count()); 204 EXPECT_EQ(1, shader_cache_count());
205 } 205 }
206 206
207 TEST_F(MemoryProgramCacheTest, LoadProgram) { 207 TEST_F(MemoryProgramCacheTest, LoadProgram) {
208 const GLenum kFormat = 1; 208 const GLenum kFormat = 1;
209 const int kProgramId = 10; 209 const int kProgramId = 10;
210 const int kBinaryLength = 20; 210 const int kBinaryLength = 20;
211 char test_binary[kBinaryLength]; 211 char test_binary[kBinaryLength];
212 for (int i = 0; i < kBinaryLength; ++i) { 212 for (int i = 0; i < kBinaryLength; ++i) {
213 test_binary[i] = i; 213 test_binary[i] = i;
214 } 214 }
215 ProgramBinaryEmulator emulator(kBinaryLength, kFormat, test_binary); 215 ProgramBinaryEmulator emulator(kBinaryLength, kFormat, test_binary);
216 216
217 SetExpectationsForSaveLinkedProgram(kProgramId, &emulator); 217 SetExpectationsForSaveLinkedProgram(kProgramId, &emulator);
218 cache_->SaveLinkedProgram(kProgramId, vertex_shader_, NULL, 218 cache_->SaveLinkedProgram(kProgramId, vertex_shader_, NULL,
219 fragment_shader_, NULL, NULL, 219 fragment_shader_, NULL, NULL,
220 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, 220 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
221 base::Unretained(this))); 221 base::Unretained(this)));
222 222
223 EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus( 223 EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus(
224 vertex_shader_->signature_source(), 224 vertex_shader_->last_compiled_source(),
225 NULL, 225 NULL,
226 fragment_shader_->signature_source(), 226 fragment_shader_->last_compiled_source(),
227 NULL, 227 NULL,
228 NULL)); 228 NULL));
229 EXPECT_EQ(1, shader_cache_count()); 229 EXPECT_EQ(1, shader_cache_count());
230 230
231 cache_->Clear(); 231 cache_->Clear();
232 232
233 cache_->LoadProgram(shader_cache_shader()); 233 cache_->LoadProgram(shader_cache_shader());
234 EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus( 234 EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus(
235 vertex_shader_->signature_source(), 235 vertex_shader_->last_compiled_source(),
236 NULL, 236 NULL,
237 fragment_shader_->signature_source(), 237 fragment_shader_->last_compiled_source(),
238 NULL, 238 NULL,
239 NULL)); 239 NULL));
240 } 240 }
241 241
242 TEST_F(MemoryProgramCacheTest, CacheLoadMatchesSave) { 242 TEST_F(MemoryProgramCacheTest, CacheLoadMatchesSave) {
243 const GLenum kFormat = 1; 243 const GLenum kFormat = 1;
244 const int kProgramId = 10; 244 const int kProgramId = 10;
245 const int kBinaryLength = 20; 245 const int kBinaryLength = 20;
246 char test_binary[kBinaryLength]; 246 char test_binary[kBinaryLength];
247 for (int i = 0; i < kBinaryLength; ++i) { 247 for (int i = 0; i < kBinaryLength; ++i) {
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 test_binary[i] = i; 389 test_binary[i] = i;
390 } 390 }
391 ProgramBinaryEmulator emulator(kBinaryLength, kFormat, test_binary); 391 ProgramBinaryEmulator emulator(kBinaryLength, kFormat, test_binary);
392 392
393 SetExpectationsForSaveLinkedProgram(kProgramId, &emulator); 393 SetExpectationsForSaveLinkedProgram(kProgramId, &emulator);
394 cache_->SaveLinkedProgram(kProgramId, vertex_shader_, NULL, 394 cache_->SaveLinkedProgram(kProgramId, vertex_shader_, NULL,
395 fragment_shader_, NULL, NULL, 395 fragment_shader_, NULL, NULL,
396 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, 396 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
397 base::Unretained(this))); 397 base::Unretained(this)));
398 398
399 const std::string vertex_orig_source = vertex_shader_->signature_source(); 399 const std::string vertex_orig_source = vertex_shader_->last_compiled_source();
400 vertex_shader_->set_source("different!"); 400 vertex_shader_->set_source("different!");
401 TestHelper::SetShaderStates(gl_.get(), vertex_shader_, true); 401 TestHelper::SetShaderStates(gl_.get(), vertex_shader_, true);
402 EXPECT_EQ(ProgramCache::PROGRAM_LOAD_FAILURE, cache_->LoadLinkedProgram( 402 EXPECT_EQ(ProgramCache::PROGRAM_LOAD_FAILURE, cache_->LoadLinkedProgram(
403 kProgramId, 403 kProgramId,
404 vertex_shader_, 404 vertex_shader_,
405 NULL, 405 NULL,
406 fragment_shader_, 406 fragment_shader_,
407 NULL, 407 NULL,
408 NULL, 408 NULL,
409 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, 409 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
481 SetExpectationsForSaveLinkedProgram(kProgramId, &emulator1); 481 SetExpectationsForSaveLinkedProgram(kProgramId, &emulator1);
482 cache_->SaveLinkedProgram(kProgramId, vertex_shader_, NULL, 482 cache_->SaveLinkedProgram(kProgramId, vertex_shader_, NULL,
483 fragment_shader_, NULL, NULL, 483 fragment_shader_, NULL, NULL,
484 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, 484 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
485 base::Unretained(this))); 485 base::Unretained(this)));
486 486
487 const int kEvictingProgramId = 11; 487 const int kEvictingProgramId = 11;
488 const GLuint kEvictingBinaryLength = kCacheSizeBytes - kBinaryLength + 1; 488 const GLuint kEvictingBinaryLength = kCacheSizeBytes - kBinaryLength + 1;
489 489
490 // save old source and modify for new program 490 // save old source and modify for new program
491 const std::string& old_source = fragment_shader_->signature_source(); 491 const std::string& old_source = fragment_shader_->last_compiled_source();
492 fragment_shader_->set_source("al sdfkjdk"); 492 fragment_shader_->set_source("al sdfkjdk");
493 TestHelper::SetShaderStates(gl_.get(), fragment_shader_, true); 493 TestHelper::SetShaderStates(gl_.get(), fragment_shader_, true);
494 494
495 scoped_ptr<char[]> bigTestBinary = 495 scoped_ptr<char[]> bigTestBinary =
496 scoped_ptr<char[]>(new char[kEvictingBinaryLength]); 496 scoped_ptr<char[]>(new char[kEvictingBinaryLength]);
497 for (size_t i = 0; i < kEvictingBinaryLength; ++i) { 497 for (size_t i = 0; i < kEvictingBinaryLength; ++i) {
498 bigTestBinary[i] = i % 250; 498 bigTestBinary[i] = i % 250;
499 } 499 }
500 ProgramBinaryEmulator emulator2(kEvictingBinaryLength, 500 ProgramBinaryEmulator emulator2(kEvictingBinaryLength,
501 kFormat, 501 kFormat,
502 bigTestBinary.get()); 502 bigTestBinary.get());
503 503
504 SetExpectationsForSaveLinkedProgram(kEvictingProgramId, &emulator2); 504 SetExpectationsForSaveLinkedProgram(kEvictingProgramId, &emulator2);
505 cache_->SaveLinkedProgram(kEvictingProgramId, 505 cache_->SaveLinkedProgram(kEvictingProgramId,
506 vertex_shader_, 506 vertex_shader_,
507 NULL, 507 NULL,
508 fragment_shader_, 508 fragment_shader_,
509 NULL, 509 NULL,
510 NULL, 510 NULL,
511 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, 511 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
512 base::Unretained(this))); 512 base::Unretained(this)));
513 513
514 EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus( 514 EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus(
515 vertex_shader_->signature_source(), 515 vertex_shader_->last_compiled_source(),
516 NULL, 516 NULL,
517 fragment_shader_->signature_source(), 517 fragment_shader_->last_compiled_source(),
518 NULL, 518 NULL,
519 NULL)); 519 NULL));
520 EXPECT_EQ(ProgramCache::LINK_UNKNOWN, cache_->GetLinkedProgramStatus( 520 EXPECT_EQ(ProgramCache::LINK_UNKNOWN, cache_->GetLinkedProgramStatus(
521 old_source, 521 old_source,
522 NULL, 522 NULL,
523 fragment_shader_->signature_source(), 523 fragment_shader_->last_compiled_source(),
524 NULL, 524 NULL,
525 NULL)); 525 NULL));
526 } 526 }
527 527
528 TEST_F(MemoryProgramCacheTest, SaveCorrectProgram) { 528 TEST_F(MemoryProgramCacheTest, SaveCorrectProgram) {
529 const GLenum kFormat = 1; 529 const GLenum kFormat = 1;
530 const int kProgramId = 10; 530 const int kProgramId = 10;
531 const int kBinaryLength = 20; 531 const int kBinaryLength = 20;
532 char test_binary[kBinaryLength]; 532 char test_binary[kBinaryLength];
533 for (int i = 0; i < kBinaryLength; ++i) { 533 for (int i = 0; i < kBinaryLength; ++i) {
534 test_binary[i] = i; 534 test_binary[i] = i;
535 } 535 }
536 ProgramBinaryEmulator emulator1(kBinaryLength, kFormat, test_binary); 536 ProgramBinaryEmulator emulator1(kBinaryLength, kFormat, test_binary);
537 537
538 vertex_shader_->set_source("different!"); 538 vertex_shader_->set_source("different!");
539 SetExpectationsForSaveLinkedProgram(kProgramId, &emulator1); 539 SetExpectationsForSaveLinkedProgram(kProgramId, &emulator1);
540 cache_->SaveLinkedProgram(kProgramId, vertex_shader_, NULL, 540 cache_->SaveLinkedProgram(kProgramId, vertex_shader_, NULL,
541 fragment_shader_, NULL, NULL, 541 fragment_shader_, NULL, NULL,
542 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, 542 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
543 base::Unretained(this))); 543 base::Unretained(this)));
544 544
545 EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus( 545 EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus(
546 vertex_shader_->signature_source(), 546 vertex_shader_->last_compiled_source(),
547 NULL, 547 NULL,
548 fragment_shader_->signature_source(), 548 fragment_shader_->last_compiled_source(),
549 NULL, 549 NULL,
550 NULL)); 550 NULL));
551 } 551 }
552 552
553 TEST_F(MemoryProgramCacheTest, LoadCorrectProgram) { 553 TEST_F(MemoryProgramCacheTest, LoadCorrectProgram) {
554 const GLenum kFormat = 1; 554 const GLenum kFormat = 1;
555 const int kProgramId = 10; 555 const int kProgramId = 10;
556 const int kBinaryLength = 20; 556 const int kBinaryLength = 20;
557 char test_binary[kBinaryLength]; 557 char test_binary[kBinaryLength];
558 for (int i = 0; i < kBinaryLength; ++i) { 558 for (int i = 0; i < kBinaryLength; ++i) {
559 test_binary[i] = i; 559 test_binary[i] = i;
560 } 560 }
561 ProgramBinaryEmulator emulator(kBinaryLength, kFormat, test_binary); 561 ProgramBinaryEmulator emulator(kBinaryLength, kFormat, test_binary);
562 562
563 SetExpectationsForSaveLinkedProgram(kProgramId, &emulator); 563 SetExpectationsForSaveLinkedProgram(kProgramId, &emulator);
564 cache_->SaveLinkedProgram(kProgramId, vertex_shader_, NULL, 564 cache_->SaveLinkedProgram(kProgramId, vertex_shader_, NULL,
565 fragment_shader_, NULL, NULL, 565 fragment_shader_, NULL, NULL,
566 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, 566 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
567 base::Unretained(this))); 567 base::Unretained(this)));
568 568
569 EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus( 569 EXPECT_EQ(ProgramCache::LINK_SUCCEEDED, cache_->GetLinkedProgramStatus(
570 vertex_shader_->signature_source(), 570 vertex_shader_->last_compiled_source(),
571 NULL, 571 NULL,
572 fragment_shader_->signature_source(), 572 fragment_shader_->last_compiled_source(),
573 NULL, 573 NULL,
574 NULL)); 574 NULL));
575 575
576 SetExpectationsForLoadLinkedProgram(kProgramId, &emulator); 576 SetExpectationsForLoadLinkedProgram(kProgramId, &emulator);
577 577
578 fragment_shader_->set_source("different!"); 578 fragment_shader_->set_source("different!");
579 EXPECT_EQ(ProgramCache::PROGRAM_LOAD_SUCCESS, cache_->LoadLinkedProgram( 579 EXPECT_EQ(ProgramCache::PROGRAM_LOAD_SUCCESS, cache_->LoadLinkedProgram(
580 kProgramId, 580 kProgramId,
581 vertex_shader_, 581 vertex_shader_,
582 NULL, 582 NULL,
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
622 NULL, 622 NULL,
623 fragment_shader_, 623 fragment_shader_,
624 NULL, 624 NULL,
625 NULL, 625 NULL,
626 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, 626 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
627 base::Unretained(this)))); 627 base::Unretained(this))));
628 } 628 }
629 629
630 } // namespace gles2 630 } // namespace gles2
631 } // namespace gpu 631 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/memory_program_cache.cc ('k') | gpu/command_buffer/service/program_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698