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

Side by Side Diff: content/browser/gpu/gpu_ipc_browsertests.cc

Issue 1827123002: Move content/common/gpu/client to gpu/ipc/client (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update Created 4 years, 8 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "base/command_line.h" 5 #include "base/command_line.h"
6 #include "base/run_loop.h" 6 #include "base/run_loop.h"
7 #include "build/build_config.h" 7 #include "build/build_config.h"
8 #include "content/browser/gpu/browser_gpu_channel_host_factory.h" 8 #include "content/browser/gpu/browser_gpu_channel_host_factory.h"
9 #include "content/browser/gpu/gpu_process_host_ui_shim.h" 9 #include "content/browser/gpu/gpu_process_host_ui_shim.h"
10 #include "content/common/gpu/client/context_provider_command_buffer.h" 10 #include "content/common/gpu/client/context_provider_command_buffer.h"
(...skipping 10 matching lines...) Expand all
21 21
22 namespace { 22 namespace {
23 23
24 using content::WebGraphicsContext3DCommandBufferImpl; 24 using content::WebGraphicsContext3DCommandBufferImpl;
25 25
26 const content::CauseForGpuLaunch kInitCause = 26 const content::CauseForGpuLaunch kInitCause =
27 content:: 27 content::
28 CAUSE_FOR_GPU_LAUNCH_WEBGRAPHICSCONTEXT3DCOMMANDBUFFERIMPL_INITIALIZE; 28 CAUSE_FOR_GPU_LAUNCH_WEBGRAPHICSCONTEXT3DCOMMANDBUFFERIMPL_INITIALIZE;
29 29
30 scoped_ptr<WebGraphicsContext3DCommandBufferImpl> CreateContext( 30 scoped_ptr<WebGraphicsContext3DCommandBufferImpl> CreateContext(
31 content::GpuChannelHost* gpu_channel_host) { 31 gpu::GpuChannelHost* gpu_channel_host) {
32 // This is for an offscreen context, so the default framebuffer doesn't need 32 // This is for an offscreen context, so the default framebuffer doesn't need
33 // any alpha, depth, stencil, antialiasing. 33 // any alpha, depth, stencil, antialiasing.
34 gpu::gles2::ContextCreationAttribHelper attributes; 34 gpu::gles2::ContextCreationAttribHelper attributes;
35 attributes.alpha_size = -1; 35 attributes.alpha_size = -1;
36 attributes.depth_size = 0; 36 attributes.depth_size = 0;
37 attributes.stencil_size = 0; 37 attributes.stencil_size = 0;
38 attributes.samples = 0; 38 attributes.samples = 0;
39 attributes.sample_buffers = 0; 39 attributes.sample_buffers = 0;
40 attributes.bind_generates_resource = false; 40 attributes.bind_generates_resource = false;
41 bool share_resources = false; 41 bool share_resources = false;
(...skipping 16 matching lines...) Expand all
58 58
59 if (!content::BrowserGpuChannelHostFactory::instance()) 59 if (!content::BrowserGpuChannelHostFactory::instance())
60 content::BrowserGpuChannelHostFactory::Initialize(true); 60 content::BrowserGpuChannelHostFactory::Initialize(true);
61 61
62 content::BrowserGpuChannelHostFactory* factory = 62 content::BrowserGpuChannelHostFactory* factory =
63 content::BrowserGpuChannelHostFactory::instance(); 63 content::BrowserGpuChannelHostFactory::instance();
64 CHECK(factory); 64 CHECK(factory);
65 base::RunLoop run_loop; 65 base::RunLoop run_loop;
66 factory->EstablishGpuChannel(kInitCause, run_loop.QuitClosure()); 66 factory->EstablishGpuChannel(kInitCause, run_loop.QuitClosure());
67 run_loop.Run(); 67 run_loop.Run();
68 scoped_refptr<content::GpuChannelHost> 68 scoped_refptr<gpu::GpuChannelHost> gpu_channel_host(
69 gpu_channel_host(factory->GetGpuChannel()); 69 factory->GetGpuChannel());
70 CHECK(gpu_channel_host); 70 CHECK(gpu_channel_host);
71 71
72 provider_ = content::ContextProviderCommandBuffer::Create( 72 provider_ = content::ContextProviderCommandBuffer::Create(
73 CreateContext(gpu_channel_host.get()), 73 CreateContext(gpu_channel_host.get()),
74 content::OFFSCREEN_CONTEXT_FOR_TESTING); 74 content::OFFSCREEN_CONTEXT_FOR_TESTING);
75 bool bound = provider_->BindToCurrentThread(); 75 bool bound = provider_->BindToCurrentThread();
76 CHECK(bound); 76 CHECK(bound);
77 gl_ = provider_->ContextGL(); 77 gl_ = provider_->ContextGL();
78 context_support_ = provider_->ContextSupport(); 78 context_support_ = provider_->ContextSupport();
79 79
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 bool IsChannelEstablished() { 137 bool IsChannelEstablished() {
138 return GetFactory()->GetGpuChannel() != NULL; 138 return GetFactory()->GetGpuChannel() != NULL;
139 } 139 }
140 140
141 void EstablishAndWait() { 141 void EstablishAndWait() {
142 base::RunLoop run_loop; 142 base::RunLoop run_loop;
143 GetFactory()->EstablishGpuChannel(kInitCause, run_loop.QuitClosure()); 143 GetFactory()->EstablishGpuChannel(kInitCause, run_loop.QuitClosure());
144 run_loop.Run(); 144 run_loop.Run();
145 } 145 }
146 146
147 GpuChannelHost* GetGpuChannel() { 147 gpu::GpuChannelHost* GetGpuChannel() { return GetFactory()->GetGpuChannel(); }
148 return GetFactory()->GetGpuChannel();
149 }
150 148
151 static void Signal(bool *event) { 149 static void Signal(bool *event) {
152 CHECK_EQ(*event, false); 150 CHECK_EQ(*event, false);
153 *event = true; 151 *event = true;
154 } 152 }
155 }; 153 };
156 154
157 // Test fails on Chromeos + Mac, flaky on Windows because UI Compositor 155 // Test fails on Chromeos + Mac, flaky on Windows because UI Compositor
158 // establishes a GPU channel. 156 // establishes a GPU channel.
159 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) 157 #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
(...skipping 29 matching lines...) Expand all
189 // Test fails on Chromeos + Mac, flaky on Windows because UI Compositor 187 // Test fails on Chromeos + Mac, flaky on Windows because UI Compositor
190 // establishes a GPU channel. 188 // establishes a GPU channel.
191 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) 189 #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
192 #define MAYBE_AlreadyEstablished AlreadyEstablished 190 #define MAYBE_AlreadyEstablished AlreadyEstablished
193 #else 191 #else
194 #define MAYBE_AlreadyEstablished DISABLED_AlreadyEstablished 192 #define MAYBE_AlreadyEstablished DISABLED_AlreadyEstablished
195 #endif 193 #endif
196 IN_PROC_BROWSER_TEST_F(BrowserGpuChannelHostFactoryTest, 194 IN_PROC_BROWSER_TEST_F(BrowserGpuChannelHostFactoryTest,
197 MAYBE_AlreadyEstablished) { 195 MAYBE_AlreadyEstablished) {
198 DCHECK(!IsChannelEstablished()); 196 DCHECK(!IsChannelEstablished());
199 scoped_refptr<GpuChannelHost> gpu_channel = 197 scoped_refptr<gpu::GpuChannelHost> gpu_channel =
200 GetFactory()->EstablishGpuChannelSync(kInitCause); 198 GetFactory()->EstablishGpuChannelSync(kInitCause);
201 199
202 // Expect established callback immediately. 200 // Expect established callback immediately.
203 bool event = false; 201 bool event = false;
204 GetFactory()->EstablishGpuChannel( 202 GetFactory()->EstablishGpuChannel(
205 kInitCause, 203 kInitCause,
206 base::Bind(&BrowserGpuChannelHostFactoryTest::Signal, &event)); 204 base::Bind(&BrowserGpuChannelHostFactoryTest::Signal, &event));
207 EXPECT_TRUE(event); 205 EXPECT_TRUE(event);
208 EXPECT_EQ(gpu_channel.get(), GetGpuChannel()); 206 EXPECT_EQ(gpu_channel.get(), GetGpuChannel());
209 } 207 }
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 // establishes a GPU channel. 255 // establishes a GPU channel.
258 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) 256 #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
259 #define MAYBE_CrashAndRecover 257 #define MAYBE_CrashAndRecover
260 #else 258 #else
261 #define MAYBE_CrashAndRecover DISABLED_CrashAndRecover 259 #define MAYBE_CrashAndRecover DISABLED_CrashAndRecover
262 #endif 260 #endif
263 IN_PROC_BROWSER_TEST_F(BrowserGpuChannelHostFactoryTest, 261 IN_PROC_BROWSER_TEST_F(BrowserGpuChannelHostFactoryTest,
264 MAYBE_CrashAndRecover) { 262 MAYBE_CrashAndRecover) {
265 DCHECK(!IsChannelEstablished()); 263 DCHECK(!IsChannelEstablished());
266 EstablishAndWait(); 264 EstablishAndWait();
267 scoped_refptr<GpuChannelHost> host = GetGpuChannel(); 265 scoped_refptr<gpu::GpuChannelHost> host = GetGpuChannel();
268 266
269 scoped_refptr<ContextProviderCommandBuffer> provider = 267 scoped_refptr<ContextProviderCommandBuffer> provider =
270 ContextProviderCommandBuffer::Create(CreateContext(GetGpuChannel()), 268 ContextProviderCommandBuffer::Create(CreateContext(GetGpuChannel()),
271 OFFSCREEN_CONTEXT_FOR_TESTING); 269 OFFSCREEN_CONTEXT_FOR_TESTING);
272 base::RunLoop run_loop; 270 base::RunLoop run_loop;
273 int counter = 0; 271 int counter = 0;
274 provider->SetLostContextCallback( 272 provider->SetLostContextCallback(
275 base::Bind(&BrowserGpuChannelHostFactoryTest::OnContextLost, 273 base::Bind(&BrowserGpuChannelHostFactoryTest::OnContextLost,
276 base::Unretained(this), run_loop.QuitClosure(), &counter)); 274 base::Unretained(this), run_loop.QuitClosure(), &counter));
277 EXPECT_TRUE(provider->BindToCurrentThread()); 275 EXPECT_TRUE(provider->BindToCurrentThread());
278 GpuProcessHostUIShim* shim = 276 GpuProcessHostUIShim* shim =
279 GpuProcessHostUIShim::FromID(GetFactory()->GpuProcessHostId()); 277 GpuProcessHostUIShim::FromID(GetFactory()->GpuProcessHostId());
280 EXPECT_TRUE(shim != NULL); 278 EXPECT_TRUE(shim != NULL);
281 shim->SimulateCrash(); 279 shim->SimulateCrash();
282 run_loop.Run(); 280 run_loop.Run();
283 281
284 EXPECT_EQ(1, counter); 282 EXPECT_EQ(1, counter);
285 EXPECT_FALSE(IsChannelEstablished()); 283 EXPECT_FALSE(IsChannelEstablished());
286 EstablishAndWait(); 284 EstablishAndWait();
287 EXPECT_TRUE(IsChannelEstablished()); 285 EXPECT_TRUE(IsChannelEstablished());
288 } 286 }
289 287
290 } // namespace content 288 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/gpu/browser_gpu_memory_buffer_manager.cc ('k') | content/browser/renderer_host/compositor_impl_android.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698