| 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 <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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |