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

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

Issue 2378583003: Ping watchdog thread during GpuChannel destruction (Closed)
Patch Set: revert to passing via destructor Created 4 years, 2 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/program_manager.h" 5 #include "gpu/command_buffer/service/program_manager.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
11 #include <memory> 11 #include <memory>
12 12
13 #include "base/command_line.h" 13 #include "base/command_line.h"
14 #include "base/strings/string_number_conversions.h" 14 #include "base/strings/string_number_conversions.h"
15 #include "base/strings/string_util.h" 15 #include "base/strings/string_util.h"
16 #include "gpu/command_buffer/common/gles2_cmd_format.h" 16 #include "gpu/command_buffer/common/gles2_cmd_format.h"
17 #include "gpu/command_buffer/common/gles2_cmd_utils.h" 17 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
18 #include "gpu/command_buffer/service/common_decoder.h" 18 #include "gpu/command_buffer/service/common_decoder.h"
19 #include "gpu/command_buffer/service/feature_info.h" 19 #include "gpu/command_buffer/service/feature_info.h"
20 #include "gpu/command_buffer/service/gpu_preferences.h" 20 #include "gpu/command_buffer/service/gpu_preferences.h"
21 #include "gpu/command_buffer/service/gpu_service_test.h" 21 #include "gpu/command_buffer/service/gpu_service_test.h"
22 #include "gpu/command_buffer/service/gpu_switches.h" 22 #include "gpu/command_buffer/service/gpu_switches.h"
23 #include "gpu/command_buffer/service/mocks.h" 23 #include "gpu/command_buffer/service/mocks.h"
24 #include "gpu/command_buffer/service/progress_reporter_stub.h"
24 #include "gpu/command_buffer/service/shader_manager.h" 25 #include "gpu/command_buffer/service/shader_manager.h"
25 #include "gpu/command_buffer/service/test_helper.h" 26 #include "gpu/command_buffer/service/test_helper.h"
26 #include "testing/gtest/include/gtest/gtest.h" 27 #include "testing/gtest/include/gtest/gtest.h"
27 #include "ui/gl/gl_mock.h" 28 #include "ui/gl/gl_mock.h"
28 #include "ui/gl/gl_version_info.h" 29 #include "ui/gl/gl_version_info.h"
29 30
30 using ::testing::_; 31 using ::testing::_;
31 using ::testing::DoAll; 32 using ::testing::DoAll;
32 using ::testing::InSequence; 33 using ::testing::InSequence;
33 using ::testing::MatcherCast; 34 using ::testing::MatcherCast;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 gl_.get(), gl_extensions, "", gl_version, feature_info->context_type()); 77 gl_.get(), gl_extensions, "", gl_version, feature_info->context_type());
77 feature_info->InitializeForTesting(); 78 feature_info->InitializeForTesting();
78 feature_info_ = feature_info; 79 feature_info_ = feature_info;
79 SetupProgramManager(); 80 SetupProgramManager();
80 } 81 }
81 void SetUp() override { 82 void SetUp() override {
82 // Parameters same as GpuServiceTest::SetUp 83 // Parameters same as GpuServiceTest::SetUp
83 SetUpBase("2.0", "GL_EXT_framebuffer_object"); 84 SetUpBase("2.0", "GL_EXT_framebuffer_object");
84 } 85 }
85 void TearDown() override { 86 void TearDown() override {
86 manager_->Destroy(false); 87 ProgressReporterStub progress_reporter;
88 manager_->Destroy(false, &progress_reporter);
87 manager_.reset(); 89 manager_.reset();
88 feature_info_ = nullptr; 90 feature_info_ = nullptr;
89 GpuServiceTest::TearDown(); 91 GpuServiceTest::TearDown();
90 } 92 }
91 93
92 std::unique_ptr<ProgramManager> manager_; 94 std::unique_ptr<ProgramManager> manager_;
93 GpuPreferences gpu_preferences_; 95 GpuPreferences gpu_preferences_;
94 scoped_refptr<FeatureInfo> feature_info_; 96 scoped_refptr<FeatureInfo> feature_info_;
95 }; 97 };
96 98
(...skipping 20 matching lines...) Expand all
117 const GLuint kService1Id = 11; 119 const GLuint kService1Id = 11;
118 // Check we can create program. 120 // Check we can create program.
119 Program* program0 = manager_->CreateProgram(kClient1Id, kService1Id); 121 Program* program0 = manager_->CreateProgram(kClient1Id, kService1Id);
120 ASSERT_TRUE(program0 != NULL); 122 ASSERT_TRUE(program0 != NULL);
121 // Check program got created. 123 // Check program got created.
122 Program* program1 = manager_->GetProgram(kClient1Id); 124 Program* program1 = manager_->GetProgram(kClient1Id);
123 ASSERT_EQ(program0, program1); 125 ASSERT_EQ(program0, program1);
124 EXPECT_CALL(*gl_, DeleteProgram(kService1Id)) 126 EXPECT_CALL(*gl_, DeleteProgram(kService1Id))
125 .Times(1) 127 .Times(1)
126 .RetiresOnSaturation(); 128 .RetiresOnSaturation();
127 manager_->Destroy(true); 129 ProgressReporterStub progress_reporter;
130 manager_->Destroy(true, &progress_reporter);
128 // Check the resources were released. 131 // Check the resources were released.
129 program1 = manager_->GetProgram(kClient1Id); 132 program1 = manager_->GetProgram(kClient1Id);
130 ASSERT_TRUE(program1 == NULL); 133 ASSERT_TRUE(program1 == NULL);
131 } 134 }
132 135
133 TEST_F(ProgramManagerTest, DeleteBug) { 136 TEST_F(ProgramManagerTest, DeleteBug) {
134 ShaderManager shader_manager; 137 ShaderManager shader_manager;
135 const GLuint kClient1Id = 1; 138 const GLuint kClient1Id = 1;
136 const GLuint kClient2Id = 2; 139 const GLuint kClient2Id = 2;
137 const GLuint kService1Id = 11; 140 const GLuint kService1Id = 11;
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 // Set up program 440 // Set up program
438 Program* program = 441 Program* program =
439 manager_->CreateProgram(kClientProgramId, kServiceProgramId); 442 manager_->CreateProgram(kClientProgramId, kServiceProgramId);
440 EXPECT_TRUE(program != NULL); 443 EXPECT_TRUE(program != NULL);
441 EXPECT_TRUE(program->AttachShader(&shader_manager_, vshader)); 444 EXPECT_TRUE(program->AttachShader(&shader_manager_, vshader));
442 EXPECT_TRUE(program->AttachShader(&shader_manager_, fshader)); 445 EXPECT_TRUE(program->AttachShader(&shader_manager_, fshader));
443 return program; 446 return program;
444 } 447 }
445 448
446 void TearDown() override { 449 void TearDown() override {
447 shader_manager_.Destroy(false); 450 ProgressReporterStub progress_reporter;
451 shader_manager_.Destroy(false, &progress_reporter);
448 ProgramManagerTestBase::TearDown(); 452 ProgramManagerTestBase::TearDown();
449 } 453 }
450 454
451 static AttribInfo kAttribs[]; 455 static AttribInfo kAttribs[];
452 static UniformInfo kUniforms[]; 456 static UniformInfo kUniforms[];
453 ShaderManager shader_manager_; 457 ShaderManager shader_manager_;
454 }; 458 };
455 459
456 ProgramManagerWithShaderTest::AttribInfo 460 ProgramManagerWithShaderTest::AttribInfo
457 ProgramManagerWithShaderTest::kAttribs[] = { 461 ProgramManagerWithShaderTest::kAttribs[] = {
(...skipping 1634 matching lines...) Expand 10 before | Expand all | Expand 10 after
2092 fragment_shader_->set_source("lka asjf a fasgag 3rdsf3 bjajsdfj"); 2096 fragment_shader_->set_source("lka asjf a fasgag 3rdsf3 bjajsdfj");
2093 2097
2094 program_ = manager_->CreateProgram(kClientProgramId, kServiceProgramId); 2098 program_ = manager_->CreateProgram(kClientProgramId, kServiceProgramId);
2095 ASSERT_TRUE(program_ != NULL); 2099 ASSERT_TRUE(program_ != NULL);
2096 2100
2097 program_->AttachShader(&shader_manager_, vertex_shader_); 2101 program_->AttachShader(&shader_manager_, vertex_shader_);
2098 program_->AttachShader(&shader_manager_, fragment_shader_); 2102 program_->AttachShader(&shader_manager_, fragment_shader_);
2099 } 2103 }
2100 2104
2101 void TearDown() override { 2105 void TearDown() override {
2102 shader_manager_.Destroy(false); 2106 ProgressReporterStub progress_reporter;
2107 shader_manager_.Destroy(false, &progress_reporter);
2103 ProgramManagerTestBase::TearDown(); 2108 ProgramManagerTestBase::TearDown();
2104 } 2109 }
2105 2110
2106 void SetShadersCompiled() { 2111 void SetShadersCompiled() {
2107 TestHelper::SetShaderStates(gl_.get(), vertex_shader_, true); 2112 TestHelper::SetShaderStates(gl_.get(), vertex_shader_, true);
2108 TestHelper::SetShaderStates(gl_.get(), fragment_shader_, true); 2113 TestHelper::SetShaderStates(gl_.get(), fragment_shader_, true);
2109 } 2114 }
2110 2115
2111 void SetProgramCached() { 2116 void SetProgramCached() {
2112 cache_->LinkedProgramCacheSuccess( 2117 cache_->LinkedProgramCacheSuccess(
(...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after
2521 ProgramManagerDualSourceBlendingES2Test, 2526 ProgramManagerDualSourceBlendingES2Test,
2522 testing::Values( 2527 testing::Values(
2523 make_gl_ext_tuple("3.2", 2528 make_gl_ext_tuple("3.2",
2524 "GL_ARB_draw_buffers GL_ARB_blend_func_extended " 2529 "GL_ARB_draw_buffers GL_ARB_blend_func_extended "
2525 "GL_ARB_program_interface_query"), 2530 "GL_ARB_program_interface_query"),
2526 make_gl_ext_tuple("opengl es 3.1", 2531 make_gl_ext_tuple("opengl es 3.1",
2527 "GL_EXT_draw_buffers GL_EXT_blend_func_extended"))); 2532 "GL_EXT_draw_buffers GL_EXT_blend_func_extended")));
2528 2533
2529 } // namespace gles2 2534 } // namespace gles2
2530 } // namespace gpu 2535 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698