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

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

Issue 2744363002: Clear shader disk cache after glProgramBinary failure. (Closed)
Patch Set: Remove singleton and clean up init Created 3 years, 9 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
« no previous file with comments | « gpu/command_buffer/service/memory_program_cache.cc ('k') | gpu/ipc/host/shader_disk_cache.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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>
11 11
12 #include "base/bind.h" 12 #include "base/bind.h"
13 #include "gpu/command_buffer/common/activity_flags.h"
13 #include "gpu/command_buffer/common/gles2_cmd_format.h" 14 #include "gpu/command_buffer/common/gles2_cmd_format.h"
14 #include "gpu/command_buffer/service/gl_utils.h" 15 #include "gpu/command_buffer/service/gl_utils.h"
15 #include "gpu/command_buffer/service/gpu_service_test.h" 16 #include "gpu/command_buffer/service/gpu_service_test.h"
16 #include "gpu/command_buffer/service/shader_manager.h" 17 #include "gpu/command_buffer/service/shader_manager.h"
17 #include "gpu/command_buffer/service/shader_translator.h" 18 #include "gpu/command_buffer/service/shader_translator.h"
18 #include "gpu/command_buffer/service/test_helper.h" 19 #include "gpu/command_buffer/service/test_helper.h"
19 #include "testing/gtest/include/gtest/gtest.h" 20 #include "testing/gtest/include/gtest/gtest.h"
20 #include "ui/gl/gl_bindings.h" 21 #include "ui/gl/gl_bindings.h"
21 #include "ui/gl/gl_mock.h" 22 #include "ui/gl/gl_mock.h"
22 23
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 public: 71 public:
71 static const size_t kCacheSizeBytes = 1024; 72 static const size_t kCacheSizeBytes = 1024;
72 static const bool kDisableGpuDiskCache = false; 73 static const bool kDisableGpuDiskCache = false;
73 static const bool kDisableCachingForTransformFeedback = false; 74 static const bool kDisableCachingForTransformFeedback = false;
74 static const GLuint kVertexShaderClientId = 90; 75 static const GLuint kVertexShaderClientId = 90;
75 static const GLuint kVertexShaderServiceId = 100; 76 static const GLuint kVertexShaderServiceId = 100;
76 static const GLuint kFragmentShaderClientId = 91; 77 static const GLuint kFragmentShaderClientId = 91;
77 static const GLuint kFragmentShaderServiceId = 100; 78 static const GLuint kFragmentShaderServiceId = 100;
78 79
79 MemoryProgramCacheTest() 80 MemoryProgramCacheTest()
80 : cache_(new MemoryProgramCache(kCacheSizeBytes, kDisableGpuDiskCache, 81 : cache_(new MemoryProgramCache(kCacheSizeBytes,
81 kDisableCachingForTransformFeedback)), 82 kDisableGpuDiskCache,
83 kDisableCachingForTransformFeedback,
84 &activity_flags_)),
82 shader_manager_(nullptr), 85 shader_manager_(nullptr),
83 vertex_shader_(nullptr), 86 vertex_shader_(nullptr),
84 fragment_shader_(nullptr), 87 fragment_shader_(nullptr),
85 shader_cache_count_(0) {} 88 shader_cache_count_(0) {}
86 ~MemoryProgramCacheTest() override { shader_manager_.Destroy(false); } 89 ~MemoryProgramCacheTest() override { shader_manager_.Destroy(false); }
87 90
88 void ShaderCacheCb(const std::string& key, const std::string& shader) { 91 void ShaderCacheCb(const std::string& key, const std::string& shader) {
89 shader_cache_count_++; 92 shader_cache_count_++;
90 shader_cache_shader_ = shader; 93 shader_cache_shader_ = shader;
91 } 94 }
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 ProgramBinary(program_id, 182 ProgramBinary(program_id,
180 emulator->format(), 183 emulator->format(),
181 _, 184 _,
182 emulator->length())) 185 emulator->length()))
183 .WillOnce(Invoke(emulator, &ProgramBinaryEmulator::ProgramBinary)); 186 .WillOnce(Invoke(emulator, &ProgramBinaryEmulator::ProgramBinary));
184 EXPECT_CALL(*gl_.get(), 187 EXPECT_CALL(*gl_.get(),
185 GetProgramiv(program_id, GL_LINK_STATUS, _)) 188 GetProgramiv(program_id, GL_LINK_STATUS, _))
186 .WillOnce(SetArgPointee<2>(GL_FALSE)); 189 .WillOnce(SetArgPointee<2>(GL_FALSE));
187 } 190 }
188 191
192 GpuProcessActivityFlags activity_flags_;
189 std::unique_ptr<MemoryProgramCache> cache_; 193 std::unique_ptr<MemoryProgramCache> cache_;
190 ShaderManager shader_manager_; 194 ShaderManager shader_manager_;
191 Shader* vertex_shader_; 195 Shader* vertex_shader_;
192 Shader* fragment_shader_; 196 Shader* fragment_shader_;
193 int32_t shader_cache_count_; 197 int32_t shader_cache_count_;
194 std::string shader_cache_shader_; 198 std::string shader_cache_shader_;
195 std::vector<std::string> varyings_; 199 std::vector<std::string> varyings_;
196 }; 200 };
197 201
198 TEST_F(MemoryProgramCacheTest, CacheSave) { 202 TEST_F(MemoryProgramCacheTest, CacheSave) {
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after
544 const int kProgramId = 10; 548 const int kProgramId = 10;
545 const int kBinaryLength = 20; 549 const int kBinaryLength = 20;
546 char test_binary[kBinaryLength]; 550 char test_binary[kBinaryLength];
547 for (int i = 0; i < kBinaryLength; ++i) { 551 for (int i = 0; i < kBinaryLength; ++i) {
548 test_binary[i] = i; 552 test_binary[i] = i;
549 } 553 }
550 ProgramBinaryEmulator emulator(kBinaryLength, kFormat, test_binary); 554 ProgramBinaryEmulator emulator(kBinaryLength, kFormat, test_binary);
551 555
552 // Forcibly reset the program cache so we can disable caching of 556 // Forcibly reset the program cache so we can disable caching of
553 // programs which include transform feedback varyings. 557 // programs which include transform feedback varyings.
554 cache_.reset(new MemoryProgramCache( 558 cache_.reset(new MemoryProgramCache(kCacheSizeBytes, kDisableGpuDiskCache,
555 kCacheSizeBytes, kDisableGpuDiskCache, true)); 559 true, &activity_flags_));
556 varyings_.push_back("test"); 560 varyings_.push_back("test");
557 cache_->SaveLinkedProgram(kProgramId, 561 cache_->SaveLinkedProgram(kProgramId,
558 vertex_shader_, 562 vertex_shader_,
559 fragment_shader_, 563 fragment_shader_,
560 NULL, 564 NULL,
561 varyings_, 565 varyings_,
562 GL_INTERLEAVED_ATTRIBS, 566 GL_INTERLEAVED_ATTRIBS,
563 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, 567 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
564 base::Unretained(this))); 568 base::Unretained(this)));
565 EXPECT_EQ(ProgramCache::PROGRAM_LOAD_FAILURE, cache_->LoadLinkedProgram( 569 EXPECT_EQ(ProgramCache::PROGRAM_LOAD_FAILURE, cache_->LoadLinkedProgram(
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
720 fragment_shader_, 724 fragment_shader_,
721 NULL, 725 NULL,
722 varyings_, 726 varyings_,
723 GL_NONE, 727 GL_NONE,
724 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb, 728 base::Bind(&MemoryProgramCacheTest::ShaderCacheCb,
725 base::Unretained(this)))); 729 base::Unretained(this))));
726 } 730 }
727 731
728 } // namespace gles2 732 } // namespace gles2
729 } // namespace gpu 733 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/memory_program_cache.cc ('k') | gpu/ipc/host/shader_disk_cache.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698