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

Side by Side Diff: content/common/gpu/client/content_gl_context.cc

Issue 9340012: Move gpu client files to content_common, in content/common/gpu/client (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remove unneeded enums Created 8 years, 10 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 | Annotate | Revision Log
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 "content/renderer/gpu/renderer_gl_context.h" 5 #include "content/common/gpu/client/content_gl_context.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/debug/trace_event.h" 8 #include "base/debug/trace_event.h"
9 #include "base/lazy_instance.h" 9 #include "base/lazy_instance.h"
10 #include "base/memory/ref_counted.h" 10 #include "base/memory/ref_counted.h"
11 #include "base/memory/scoped_ptr.h" 11 #include "base/memory/scoped_ptr.h"
12 #include "base/memory/singleton.h" 12 #include "base/memory/singleton.h"
13 #include "base/memory/weak_ptr.h" 13 #include "base/memory/weak_ptr.h"
14 #include "base/shared_memory.h" 14 #include "base/shared_memory.h"
15 #include "content/common/view_messages.h" 15 #include "content/common/gpu/client/command_buffer_proxy.h"
16 #include "content/renderer/gpu/command_buffer_proxy.h" 16 #include "content/common/gpu/client/gpu_channel_host.h"
17 #include "content/renderer/gpu/gpu_channel_host.h"
18 #include "content/renderer/render_widget.h"
19 #include "googleurl/src/gurl.h" 17 #include "googleurl/src/gurl.h"
20 #include "ipc/ipc_channel_handle.h" 18 #include "ipc/ipc_channel_handle.h"
21 19
22 #if defined(ENABLE_GPU) 20 #if defined(ENABLE_GPU)
23 #include "gpu/command_buffer/client/gles2_cmd_helper.h" 21 #include "gpu/command_buffer/client/gles2_cmd_helper.h"
24 #include "gpu/command_buffer/client/gles2_implementation.h" 22 #include "gpu/command_buffer/client/gles2_implementation.h"
25 #include "gpu/command_buffer/client/gles2_lib.h" 23 #include "gpu/command_buffer/client/gles2_lib.h"
26 #include "gpu/command_buffer/client/transfer_buffer.h" 24 #include "gpu/command_buffer/client/transfer_buffer.h"
27 #include "gpu/command_buffer/common/constants.h" 25 #include "gpu/command_buffer/common/constants.h"
28 #endif // ENABLE_GPU 26 #endif // ENABLE_GPU
(...skipping 23 matching lines...) Expand all
52 }; 50 };
53 51
54 //////////////////////////////////////////////////////////////////////////////// 52 ////////////////////////////////////////////////////////////////////////////////
55 53
56 base::LazyInstance<GLES2Initializer> g_gles2_initializer = 54 base::LazyInstance<GLES2Initializer> g_gles2_initializer =
57 LAZY_INSTANCE_INITIALIZER; 55 LAZY_INSTANCE_INITIALIZER;
58 56
59 //////////////////////////////////////////////////////////////////////////////// 57 ////////////////////////////////////////////////////////////////////////////////
60 58
61 #if defined(ENABLE_GPU) 59 #if defined(ENABLE_GPU)
62 RendererGLContext::ContextLostReason ConvertReason( 60 ContentGLContext::ContextLostReason ConvertReason(
63 gpu::error::ContextLostReason reason) { 61 gpu::error::ContextLostReason reason) {
64 switch (reason) { 62 switch (reason) {
65 case gpu::error::kGuilty: 63 case gpu::error::kGuilty:
66 return RendererGLContext::kGuilty; 64 return ContentGLContext::kGuilty;
67 case gpu::error::kInnocent: 65 case gpu::error::kInnocent:
68 return RendererGLContext::kInnocent; 66 return ContentGLContext::kInnocent;
69 case gpu::error::kUnknown: 67 case gpu::error::kUnknown:
70 return RendererGLContext::kUnknown; 68 return ContentGLContext::kUnknown;
71 } 69 }
72 NOTREACHED(); 70 NOTREACHED();
73 return RendererGLContext::kUnknown; 71 return ContentGLContext::kUnknown;
74 } 72 }
75 #endif 73 #endif
76 74
77 } // namespace 75 } // namespace
78 76
79 RendererGLContext::~RendererGLContext() { 77 ContentGLContext::~ContentGLContext() {
80 Destroy(); 78 Destroy();
81 } 79 }
82 80
83 RendererGLContext* RendererGLContext::CreateViewContext( 81 ContentGLContext* ContentGLContext::CreateViewContext(
84 GpuChannelHost* channel, 82 GpuChannelHost* channel,
85 int32 surface_id, 83 int32 surface_id,
86 RendererGLContext* share_group, 84 ContentGLContext* share_group,
87 const char* allowed_extensions, 85 const char* allowed_extensions,
88 const int32* attrib_list, 86 const int32* attrib_list,
89 const GURL& active_url, 87 const GURL& active_url,
90 gfx::GpuPreference gpu_preference) { 88 gfx::GpuPreference gpu_preference) {
91 #if defined(ENABLE_GPU) 89 #if defined(ENABLE_GPU)
92 scoped_ptr<RendererGLContext> context(new RendererGLContext(channel)); 90 scoped_ptr<ContentGLContext> context(new ContentGLContext(channel));
93 if (!context->Initialize( 91 if (!context->Initialize(
94 true, 92 true,
95 surface_id, 93 surface_id,
96 gfx::Size(), 94 gfx::Size(),
97 share_group, 95 share_group,
98 allowed_extensions, 96 allowed_extensions,
99 attrib_list, 97 attrib_list,
100 active_url, 98 active_url,
101 gpu_preference)) 99 gpu_preference))
102 return NULL; 100 return NULL;
103 101
104 return context.release(); 102 return context.release();
105 #else 103 #else
106 return NULL; 104 return NULL;
107 #endif 105 #endif
108 } 106 }
109 107
110 RendererGLContext* RendererGLContext::CreateOffscreenContext( 108 ContentGLContext* ContentGLContext::CreateOffscreenContext(
111 GpuChannelHost* channel, 109 GpuChannelHost* channel,
112 const gfx::Size& size, 110 const gfx::Size& size,
113 RendererGLContext* share_group, 111 ContentGLContext* share_group,
114 const char* allowed_extensions, 112 const char* allowed_extensions,
115 const int32* attrib_list, 113 const int32* attrib_list,
116 const GURL& active_url, 114 const GURL& active_url,
117 gfx::GpuPreference gpu_preference) { 115 gfx::GpuPreference gpu_preference) {
118 #if defined(ENABLE_GPU) 116 #if defined(ENABLE_GPU)
119 scoped_ptr<RendererGLContext> context(new RendererGLContext(channel)); 117 scoped_ptr<ContentGLContext> context(new ContentGLContext(channel));
120 if (!context->Initialize( 118 if (!context->Initialize(
121 false, 119 false,
122 0, 120 0,
123 size, 121 size,
124 share_group, 122 share_group,
125 allowed_extensions, 123 allowed_extensions,
126 attrib_list, 124 attrib_list,
127 active_url, 125 active_url,
128 gpu_preference)) 126 gpu_preference))
129 return NULL; 127 return NULL;
130 128
131 return context.release(); 129 return context.release();
132 #else 130 #else
133 return NULL; 131 return NULL;
134 #endif 132 #endif
135 } 133 }
136 134
137 bool RendererGLContext::SetParent(RendererGLContext* new_parent) { 135 bool ContentGLContext::SetParent(ContentGLContext* new_parent) {
138 if (parent_.get() == new_parent) 136 if (parent_.get() == new_parent)
139 return true; 137 return true;
140 138
141 // Allocate a texture ID with respect to the parent and change the parent. 139 // Allocate a texture ID with respect to the parent and change the parent.
142 uint32 new_parent_texture_id = 0; 140 uint32 new_parent_texture_id = 0;
143 if (command_buffer_) { 141 if (command_buffer_) {
144 if (new_parent) { 142 if (new_parent) {
145 TRACE_EVENT0("gpu", "RendererGLContext::SetParent::flushParent"); 143 TRACE_EVENT0("gpu", "ContentGLContext::SetParent::flushParent");
146 // Flush any remaining commands in the parent context to make sure the 144 // Flush any remaining commands in the parent context to make sure the
147 // texture id accounting stays consistent. 145 // texture id accounting stays consistent.
148 int32 token = new_parent->gles2_helper_->InsertToken(); 146 int32 token = new_parent->gles2_helper_->InsertToken();
149 new_parent->gles2_helper_->WaitForToken(token); 147 new_parent->gles2_helper_->WaitForToken(token);
150 new_parent_texture_id = 148 new_parent_texture_id =
151 new_parent->gles2_implementation_->MakeTextureId(); 149 new_parent->gles2_implementation_->MakeTextureId();
152 150
153 if (!command_buffer_->SetParent(new_parent->command_buffer_, 151 if (!command_buffer_->SetParent(new_parent->command_buffer_,
154 new_parent_texture_id)) { 152 new_parent_texture_id)) {
155 new_parent->gles2_implementation_->FreeTextureId(parent_texture_id_); 153 new_parent->gles2_implementation_->FreeTextureId(parent_texture_id_);
(...skipping 19 matching lines...) Expand all
175 parent_ = new_parent->AsWeakPtr(); 173 parent_ = new_parent->AsWeakPtr();
176 parent_texture_id_ = new_parent_texture_id; 174 parent_texture_id_ = new_parent_texture_id;
177 } else { 175 } else {
178 parent_.reset(); 176 parent_.reset();
179 parent_texture_id_ = 0; 177 parent_texture_id_ = 0;
180 } 178 }
181 179
182 return true; 180 return true;
183 } 181 }
184 182
185 uint32 RendererGLContext::GetParentTextureId() { 183 uint32 ContentGLContext::GetParentTextureId() {
186 return parent_texture_id_; 184 return parent_texture_id_;
187 } 185 }
188 186
189 uint32 RendererGLContext::CreateParentTexture(const gfx::Size& size) { 187 uint32 ContentGLContext::CreateParentTexture(const gfx::Size& size) {
190 uint32 texture_id = 0; 188 uint32 texture_id = 0;
191 gles2_implementation_->GenTextures(1, &texture_id); 189 gles2_implementation_->GenTextures(1, &texture_id);
192 gles2_implementation_->Flush(); 190 gles2_implementation_->Flush();
193 return texture_id; 191 return texture_id;
194 } 192 }
195 193
196 void RendererGLContext::DeleteParentTexture(uint32 texture) { 194 void ContentGLContext::DeleteParentTexture(uint32 texture) {
197 gles2_implementation_->DeleteTextures(1, &texture); 195 gles2_implementation_->DeleteTextures(1, &texture);
198 } 196 }
199 197
200 void RendererGLContext::SetContextLostCallback( 198 void ContentGLContext::SetContextLostCallback(
201 const base::Callback<void (ContextLostReason)>& callback) { 199 const base::Callback<void (ContextLostReason)>& callback) {
202 context_lost_callback_ = callback; 200 context_lost_callback_ = callback;
203 } 201 }
204 202
205 bool RendererGLContext::MakeCurrent(RendererGLContext* context) { 203 bool ContentGLContext::MakeCurrent(ContentGLContext* context) {
206 if (context) { 204 if (context) {
207 DCHECK(context->CalledOnValidThread()); 205 DCHECK(context->CalledOnValidThread());
208 gles2::SetGLContext(context->gles2_implementation_); 206 gles2::SetGLContext(context->gles2_implementation_);
209 207
210 // Don't request latest error status from service. Just use the locally 208 // Don't request latest error status from service. Just use the locally
211 // cached information from the last flush. 209 // cached information from the last flush.
212 // TODO(apatrick): I'm not sure if this should actually change the 210 // TODO(apatrick): I'm not sure if this should actually change the
213 // current context if it fails. For now it gets changed even if it fails 211 // current context if it fails. For now it gets changed even if it fails
214 // because making GL calls with a NULL context crashes. 212 // because making GL calls with a NULL context crashes.
215 if (context->command_buffer_->GetLastState().error != gpu::error::kNoError) 213 if (context->command_buffer_->GetLastState().error != gpu::error::kNoError)
216 return false; 214 return false;
217 } else { 215 } else {
218 gles2::SetGLContext(NULL); 216 gles2::SetGLContext(NULL);
219 } 217 }
220 218
221 return true; 219 return true;
222 } 220 }
223 221
224 bool RendererGLContext::SwapBuffers() { 222 bool ContentGLContext::SwapBuffers() {
225 TRACE_EVENT1("gpu", "RendererGLContext::SwapBuffers", "frame", frame_number_); 223 TRACE_EVENT1("gpu", "ContentGLContext::SwapBuffers", "frame", frame_number_);
226 frame_number_++; 224 frame_number_++;
227 225
228 // Don't request latest error status from service. Just use the locally cached 226 // Don't request latest error status from service. Just use the locally cached
229 // information from the last flush. 227 // information from the last flush.
230 if (command_buffer_->GetLastState().error != gpu::error::kNoError) 228 if (command_buffer_->GetLastState().error != gpu::error::kNoError)
231 return false; 229 return false;
232 230
233 gles2_implementation_->SwapBuffers(); 231 gles2_implementation_->SwapBuffers();
234 232
235 return true; 233 return true;
236 } 234 }
237 235
238 bool RendererGLContext::Echo(const base::Closure& task) { 236 bool ContentGLContext::Echo(const base::Closure& task) {
239 return command_buffer_->Echo(task); 237 return command_buffer_->Echo(task);
240 } 238 }
241 239
242 RendererGLContext::Error RendererGLContext::GetError() { 240 ContentGLContext::Error ContentGLContext::GetError() {
243 gpu::CommandBuffer::State state = command_buffer_->GetState(); 241 gpu::CommandBuffer::State state = command_buffer_->GetState();
244 if (state.error == gpu::error::kNoError) { 242 if (state.error == gpu::error::kNoError) {
245 Error old_error = last_error_; 243 Error old_error = last_error_;
246 last_error_ = SUCCESS; 244 last_error_ = SUCCESS;
247 return old_error; 245 return old_error;
248 } else { 246 } else {
249 // All command buffer errors are unrecoverable. The error is treated as a 247 // All command buffer errors are unrecoverable. The error is treated as a
250 // lost context: destroy the context and create another one. 248 // lost context: destroy the context and create another one.
251 return CONTEXT_LOST; 249 return CONTEXT_LOST;
252 } 250 }
253 } 251 }
254 252
255 bool RendererGLContext::IsCommandBufferContextLost() { 253 bool ContentGLContext::IsCommandBufferContextLost() {
256 // If the channel shut down unexpectedly, let that supersede the 254 // If the channel shut down unexpectedly, let that supersede the
257 // command buffer's state. 255 // command buffer's state.
258 if (channel_->state() == GpuChannelHost::kLost) 256 if (channel_->state() == GpuChannelHost::kLost)
259 return true; 257 return true;
260 gpu::CommandBuffer::State state = command_buffer_->GetLastState(); 258 gpu::CommandBuffer::State state = command_buffer_->GetLastState();
261 return state.error == gpu::error::kLostContext; 259 return state.error == gpu::error::kLostContext;
262 } 260 }
263 261
264 CommandBufferProxy* RendererGLContext::GetCommandBufferProxy() { 262 CommandBufferProxy* ContentGLContext::GetCommandBufferProxy() {
265 return command_buffer_; 263 return command_buffer_;
266 } 264 }
267 265
268 bool RendererGLContext::SetSurfaceVisible(bool visible) { 266 bool ContentGLContext::SetSurfaceVisible(bool visible) {
269 return GetCommandBufferProxy()->SetSurfaceVisible(visible); 267 return GetCommandBufferProxy()->SetSurfaceVisible(visible);
270 } 268 }
271 269
272 // TODO(gman): Remove This 270 // TODO(gman): Remove This
273 void RendererGLContext::DisableShaderTranslation() { 271 void ContentGLContext::DisableShaderTranslation() {
274 NOTREACHED(); 272 NOTREACHED();
275 } 273 }
276 274
277 gpu::gles2::GLES2Implementation* RendererGLContext::GetImplementation() { 275 gpu::gles2::GLES2Implementation* ContentGLContext::GetImplementation() {
278 return gles2_implementation_; 276 return gles2_implementation_;
279 } 277 }
280 278
281 RendererGLContext::RendererGLContext(GpuChannelHost* channel) 279 ContentGLContext::ContentGLContext(GpuChannelHost* channel)
282 : channel_(channel), 280 : channel_(channel),
283 parent_(base::WeakPtr<RendererGLContext>()), 281 parent_(base::WeakPtr<ContentGLContext>()),
284 parent_texture_id_(0), 282 parent_texture_id_(0),
285 command_buffer_(NULL), 283 command_buffer_(NULL),
286 gles2_helper_(NULL), 284 gles2_helper_(NULL),
287 transfer_buffer_(NULL), 285 transfer_buffer_(NULL),
288 gles2_implementation_(NULL), 286 gles2_implementation_(NULL),
289 last_error_(SUCCESS), 287 last_error_(SUCCESS),
290 frame_number_(0) { 288 frame_number_(0) {
291 DCHECK(channel); 289 DCHECK(channel);
292 } 290 }
293 291
294 bool RendererGLContext::Initialize(bool onscreen, 292 bool ContentGLContext::Initialize(bool onscreen,
295 int32 surface_id, 293 int32 surface_id,
296 const gfx::Size& size, 294 const gfx::Size& size,
297 RendererGLContext* share_group, 295 ContentGLContext* share_group,
298 const char* allowed_extensions, 296 const char* allowed_extensions,
299 const int32* attrib_list, 297 const int32* attrib_list,
300 const GURL& active_url, 298 const GURL& active_url,
301 gfx::GpuPreference gpu_preference) { 299 gfx::GpuPreference gpu_preference) {
302 DCHECK(CalledOnValidThread()); 300 DCHECK(CalledOnValidThread());
303 DCHECK(size.width() >= 0 && size.height() >= 0); 301 DCHECK(size.width() >= 0 && size.height() >= 0);
304 TRACE_EVENT2("gpu", "RendererGLContext::Initialize", 302 TRACE_EVENT2("gpu", "ContentGLContext::Initialize",
305 "on_screen", onscreen, "num_pixels", size.GetArea()); 303 "on_screen", onscreen, "num_pixels", size.GetArea());
306 304
307 if (channel_->state() != GpuChannelHost::kConnected) 305 if (channel_->state() != GpuChannelHost::kConnected)
308 return false; 306 return false;
309 307
310 // Ensure the gles2 library is initialized first in a thread safe way. 308 // Ensure the gles2 library is initialized first in a thread safe way.
311 g_gles2_initializer.Get(); 309 g_gles2_initializer.Get();
312 310
313 bool share_resources = true; 311 bool share_resources = true;
314 bool bind_generates_resources = true; 312 bool bind_generates_resources = true;
(...skipping 27 matching lines...) Expand all
342 last_error_ = BAD_ATTRIBUTE; 340 last_error_ = BAD_ATTRIBUTE;
343 attribs.push_back(NONE); 341 attribs.push_back(NONE);
344 attrib_list = NULL; 342 attrib_list = NULL;
345 break; 343 break;
346 } 344 }
347 } 345 }
348 346
349 // Create a proxy to a command buffer in the GPU process. 347 // Create a proxy to a command buffer in the GPU process.
350 if (onscreen) { 348 if (onscreen) {
351 TRACE_EVENT0("gpu", 349 TRACE_EVENT0("gpu",
352 "RendererGLContext::Initialize::CreateViewCommandBuffer"); 350 "ContentGLContext::Initialize::CreateViewCommandBuffer");
353 command_buffer_ = channel_->CreateViewCommandBuffer( 351 command_buffer_ = channel_->CreateViewCommandBuffer(
354 surface_id, 352 surface_id,
355 share_group ? share_group->command_buffer_ : NULL, 353 share_group ? share_group->command_buffer_ : NULL,
356 allowed_extensions, 354 allowed_extensions,
357 attribs, 355 attribs,
358 active_url, 356 active_url,
359 gpu_preference); 357 gpu_preference);
360 } else { 358 } else {
361 command_buffer_ = channel_->CreateOffscreenCommandBuffer( 359 command_buffer_ = channel_->CreateOffscreenCommandBuffer(
362 size, 360 size,
363 share_group ? share_group->command_buffer_ : NULL, 361 share_group ? share_group->command_buffer_ : NULL,
364 allowed_extensions, 362 allowed_extensions,
365 attribs, 363 attribs,
366 active_url, 364 active_url,
367 gpu_preference); 365 gpu_preference);
368 } 366 }
369 if (!command_buffer_) { 367 if (!command_buffer_) {
370 Destroy(); 368 Destroy();
371 return false; 369 return false;
372 } 370 }
373 371
374 { 372 {
375 TRACE_EVENT0("gpu", 373 TRACE_EVENT0("gpu",
376 "RendererGLContext::Initialize::InitializeCommandBuffer"); 374 "ContentGLContext::Initialize::InitializeCommandBuffer");
377 // Initiaize the command buffer. 375 // Initiaize the command buffer.
378 if (!command_buffer_->Initialize()) { 376 if (!command_buffer_->Initialize()) {
379 Destroy(); 377 Destroy();
380 return false; 378 return false;
381 } 379 }
382 } 380 }
383 381
384 command_buffer_->SetChannelErrorCallback( 382 command_buffer_->SetChannelErrorCallback(
385 base::Bind(&RendererGLContext::OnContextLost, base::Unretained(this))); 383 base::Bind(&ContentGLContext::OnContextLost, base::Unretained(this)));
386 384
387 // Create the GLES2 helper, which writes the command buffer protocol. 385 // Create the GLES2 helper, which writes the command buffer protocol.
388 gles2_helper_ = new gpu::gles2::GLES2CmdHelper(command_buffer_); 386 gles2_helper_ = new gpu::gles2::GLES2CmdHelper(command_buffer_);
389 if (!gles2_helper_->Initialize(kCommandBufferSize)) { 387 if (!gles2_helper_->Initialize(kCommandBufferSize)) {
390 Destroy(); 388 Destroy();
391 return false; 389 return false;
392 } 390 }
393 391
394 { 392 {
395 TRACE_EVENT0("gpu", "RendererGLContext::Initialize::CreateTransferBuffer"); 393 TRACE_EVENT0("gpu", "ContentGLContext::Initialize::CreateTransferBuffer");
396 // Create a transfer buffer used to copy resources between the renderer 394 // Create a transfer buffer used to copy resources between the renderer
397 // process and the GPU process. 395 // process and the GPU process.
398 transfer_buffer_ = new gpu::TransferBuffer(gles2_helper_); 396 transfer_buffer_ = new gpu::TransferBuffer(gles2_helper_);
399 } 397 }
400 398
401 // Create the object exposing the OpenGL API. 399 // Create the object exposing the OpenGL API.
402 gles2_implementation_ = new gpu::gles2::GLES2Implementation( 400 gles2_implementation_ = new gpu::gles2::GLES2Implementation(
403 gles2_helper_, 401 gles2_helper_,
404 transfer_buffer_, 402 transfer_buffer_,
405 share_resources, 403 share_resources,
406 bind_generates_resources); 404 bind_generates_resources);
407 405
408 if (!gles2_implementation_->Initialize( 406 if (!gles2_implementation_->Initialize(
409 kStartTransferBufferSize, 407 kStartTransferBufferSize,
410 kMinTransferBufferSize, 408 kMinTransferBufferSize,
411 kMaxTransferBufferSize)) { 409 kMaxTransferBufferSize)) {
412 Destroy(); 410 Destroy();
413 return false; 411 return false;
414 } 412 }
415 413
416 return true; 414 return true;
417 } 415 }
418 416
419 void RendererGLContext::Destroy() { 417 void ContentGLContext::Destroy() {
420 TRACE_EVENT0("gpu", "RendererGLContext::Destroy"); 418 TRACE_EVENT0("gpu", "ContentGLContext::Destroy");
421 DCHECK(CalledOnValidThread()); 419 DCHECK(CalledOnValidThread());
422 SetParent(NULL); 420 SetParent(NULL);
423 421
424 if (gles2_implementation_) { 422 if (gles2_implementation_) {
425 // First flush the context to ensure that any pending frees of resources 423 // First flush the context to ensure that any pending frees of resources
426 // are completed. Otherwise, if this context is part of a share group, 424 // are completed. Otherwise, if this context is part of a share group,
427 // those resources might leak. Also, any remaining side effects of commands 425 // those resources might leak. Also, any remaining side effects of commands
428 // issued on this context might not be visible to other contexts in the 426 // issued on this context might not be visible to other contexts in the
429 // share group. 427 // share group.
430 gles2_implementation_->Flush(); 428 gles2_implementation_->Flush();
(...skipping 11 matching lines...) Expand all
442 gles2_helper_ = NULL; 440 gles2_helper_ = NULL;
443 441
444 if (channel_ && command_buffer_) { 442 if (channel_ && command_buffer_) {
445 channel_->DestroyCommandBuffer(command_buffer_); 443 channel_->DestroyCommandBuffer(command_buffer_);
446 command_buffer_ = NULL; 444 command_buffer_ = NULL;
447 } 445 }
448 446
449 channel_ = NULL; 447 channel_ = NULL;
450 } 448 }
451 449
452 void RendererGLContext::OnContextLost() { 450 void ContentGLContext::OnContextLost() {
453 if (!context_lost_callback_.is_null()) { 451 if (!context_lost_callback_.is_null()) {
454 RendererGLContext::ContextLostReason reason = kUnknown; 452 ContentGLContext::ContextLostReason reason = kUnknown;
455 if (command_buffer_) { 453 if (command_buffer_) {
456 reason = ConvertReason( 454 reason = ConvertReason(
457 command_buffer_->GetLastState().context_lost_reason); 455 command_buffer_->GetLastState().context_lost_reason);
458 } 456 }
459 context_lost_callback_.Run(reason); 457 context_lost_callback_.Run(reason);
460 } 458 }
461 } 459 }
OLDNEW
« no previous file with comments | « content/common/gpu/client/content_gl_context.h ('k') | content/common/gpu/client/gpu_channel_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698