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

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

Issue 2615573002: Add disable_program_caching_for_transform_feedback workaround. (Closed)
Patch Set: Created 3 years, 11 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 <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <memory> 10 #include <memory>
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 private: 63 private:
64 GLsizei length_; 64 GLsizei length_;
65 GLenum format_; 65 GLenum format_;
66 const char* binary_; 66 const char* binary_;
67 }; 67 };
68 68
69 class MemoryProgramCacheTest : public GpuServiceTest { 69 class MemoryProgramCacheTest : public GpuServiceTest {
70 public: 70 public:
71 static const size_t kCacheSizeBytes = 1024; 71 static const size_t kCacheSizeBytes = 1024;
72 static const bool kDisableGpuDiskCache = false; 72 static const bool kDisableGpuDiskCache = false;
73 static const bool kDisableCachingForTransformFeedback = false;
73 static const GLuint kVertexShaderClientId = 90; 74 static const GLuint kVertexShaderClientId = 90;
74 static const GLuint kVertexShaderServiceId = 100; 75 static const GLuint kVertexShaderServiceId = 100;
75 static const GLuint kFragmentShaderClientId = 91; 76 static const GLuint kFragmentShaderClientId = 91;
76 static const GLuint kFragmentShaderServiceId = 100; 77 static const GLuint kFragmentShaderServiceId = 100;
77 78
78 MemoryProgramCacheTest() 79 MemoryProgramCacheTest()
79 : cache_(new MemoryProgramCache(kCacheSizeBytes, kDisableGpuDiskCache)), 80 : cache_(new MemoryProgramCache(kCacheSizeBytes, kDisableGpuDiskCache,
81 kDisableCachingForTransformFeedback)),
80 shader_manager_(nullptr), 82 shader_manager_(nullptr),
81 vertex_shader_(nullptr), 83 vertex_shader_(nullptr),
82 fragment_shader_(nullptr), 84 fragment_shader_(nullptr),
83 shader_cache_count_(0) {} 85 shader_cache_count_(0) {}
84 ~MemoryProgramCacheTest() override { shader_manager_.Destroy(false); } 86 ~MemoryProgramCacheTest() override { shader_manager_.Destroy(false); }
85 87
86 void ShaderCacheCb(const std::string& key, const std::string& shader) { 88 void ShaderCacheCb(const std::string& key, const std::string& shader) {
87 shader_cache_count_++; 89 shader_cache_count_++;
88 shader_cache_shader_ = shader; 90 shader_cache_shader_ = shader;
89 } 91 }
(...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after
530 kProgramId, 532 kProgramId,
531 vertex_shader_, 533 vertex_shader_,
532 fragment_shader_, 534 fragment_shader_,
533 NULL, 535 NULL,
534 varyings_, 536 varyings_,
535 GL_INTERLEAVED_ATTRIBS, 537 GL_INTERLEAVED_ATTRIBS,
536 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, 538 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
537 base::Unretained(this)))); 539 base::Unretained(this))));
538 } 540 }
539 541
542 TEST_F(MemoryProgramCacheTest, LoadFailIfTransformFeedbackCachingDisabled) {
543 const GLenum kFormat = 1;
544 const int kProgramId = 10;
545 const int kBinaryLength = 20;
546 char test_binary[kBinaryLength];
547 for (int i = 0; i < kBinaryLength; ++i) {
548 test_binary[i] = i;
549 }
550 ProgramBinaryEmulator emulator(kBinaryLength, kFormat, test_binary);
551
552 // Forcibly reset the program cache so we can disable caching of
553 // programs which include transform feedback varyings.
554 cache_.reset(new MemoryProgramCache(
555 kCacheSizeBytes, kDisableGpuDiskCache, true));
556 varyings_.push_back("test");
557 cache_->SaveLinkedProgram(kProgramId,
558 vertex_shader_,
559 fragment_shader_,
560 NULL,
561 varyings_,
562 GL_INTERLEAVED_ATTRIBS,
563 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
564 base::Unretained(this)));
565 EXPECT_EQ(ProgramCache::PROGRAM_LOAD_FAILURE, cache_->LoadLinkedProgram(
566 kProgramId,
567 vertex_shader_,
568 fragment_shader_,
569 NULL,
570 varyings_,
571 GL_INTERLEAVED_ATTRIBS,
572 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
573 base::Unretained(this))));
574 }
575
540 TEST_F(MemoryProgramCacheTest, MemoryProgramCacheEviction) { 576 TEST_F(MemoryProgramCacheTest, MemoryProgramCacheEviction) {
541 const GLenum kFormat = 1; 577 const GLenum kFormat = 1;
542 const int kProgramId = 10; 578 const int kProgramId = 10;
543 const int kBinaryLength = 20; 579 const int kBinaryLength = 20;
544 char test_binary[kBinaryLength]; 580 char test_binary[kBinaryLength];
545 for (int i = 0; i < kBinaryLength; ++i) { 581 for (int i = 0; i < kBinaryLength; ++i) {
546 test_binary[i] = i; 582 test_binary[i] = i;
547 } 583 }
548 ProgramBinaryEmulator emulator1(kBinaryLength, kFormat, test_binary); 584 ProgramBinaryEmulator emulator1(kBinaryLength, kFormat, test_binary);
549 585
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
684 fragment_shader_, 720 fragment_shader_,
685 NULL, 721 NULL,
686 varyings_, 722 varyings_,
687 GL_NONE, 723 GL_NONE,
688 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, 724 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
689 base::Unretained(this)))); 725 base::Unretained(this))));
690 } 726 }
691 727
692 } // namespace gles2 728 } // namespace gles2
693 } // namespace gpu 729 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/memory_program_cache.cc ('k') | gpu/config/gpu_driver_bug_list_json.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698