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

Side by Side Diff: content/renderer/gpu/renderer_gl_context.cc

Issue 7762013: Added GPU process "echo" IPC message. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 3 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/renderer/gpu/renderer_gl_context.h"
6 6
7 #include "base/debug/trace_event.h" 7 #include "base/debug/trace_event.h"
8 #include "base/lazy_instance.h" 8 #include "base/lazy_instance.h"
9 #include "base/memory/ref_counted.h" 9 #include "base/memory/ref_counted.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 uint32 texture_id = 0; 185 uint32 texture_id = 0;
186 gles2_implementation_->GenTextures(1, &texture_id); 186 gles2_implementation_->GenTextures(1, &texture_id);
187 gles2_implementation_->Flush(); 187 gles2_implementation_->Flush();
188 return texture_id; 188 return texture_id;
189 } 189 }
190 190
191 void RendererGLContext::DeleteParentTexture(uint32 texture) { 191 void RendererGLContext::DeleteParentTexture(uint32 texture) {
192 gles2_implementation_->DeleteTextures(1, &texture); 192 gles2_implementation_->DeleteTextures(1, &texture);
193 } 193 }
194 194
195 void RendererGLContext::SetSwapBuffersCallback(Callback0::Type* callback) {
196 swap_buffers_callback_.reset(callback);
197 }
198
199 void RendererGLContext::SetContextLostCallback( 195 void RendererGLContext::SetContextLostCallback(
200 Callback1<ContextLostReason>::Type* callback) { 196 Callback1<ContextLostReason>::Type* callback) {
201 context_lost_callback_.reset(callback); 197 context_lost_callback_.reset(callback);
202 } 198 }
203 199
204 bool RendererGLContext::MakeCurrent(RendererGLContext* context) { 200 bool RendererGLContext::MakeCurrent(RendererGLContext* context) {
205 if (context) { 201 if (context) {
206 gles2::SetGLContext(context->gles2_implementation_); 202 gles2::SetGLContext(context->gles2_implementation_);
207 203
208 // Don't request latest error status from service. Just use the locally 204 // Don't request latest error status from service. Just use the locally
(...skipping 13 matching lines...) Expand all
222 bool RendererGLContext::SwapBuffers() { 218 bool RendererGLContext::SwapBuffers() {
223 TRACE_EVENT1("gpu", "RendererGLContext::SwapBuffers", "frame", frame_number_); 219 TRACE_EVENT1("gpu", "RendererGLContext::SwapBuffers", "frame", frame_number_);
224 frame_number_++; 220 frame_number_++;
225 221
226 // Don't request latest error status from service. Just use the locally cached 222 // Don't request latest error status from service. Just use the locally cached
227 // information from the last flush. 223 // information from the last flush.
228 if (command_buffer_->GetLastState().error != gpu::error::kNoError) 224 if (command_buffer_->GetLastState().error != gpu::error::kNoError)
229 return false; 225 return false;
230 226
231 gles2_implementation_->SwapBuffers(); 227 gles2_implementation_->SwapBuffers();
228
232 return true; 229 return true;
233 } 230 }
234 231
232 bool RendererGLContext::Echo(Task* task) {
233 return command_buffer_->Echo(task);
234 }
235
235 scoped_refptr<TransportTextureHost> 236 scoped_refptr<TransportTextureHost>
236 RendererGLContext::CreateTransportTextureHost() { 237 RendererGLContext::CreateTransportTextureHost() {
237 return channel_->transport_texture_service()->CreateTransportTextureHost( 238 return channel_->transport_texture_service()->CreateTransportTextureHost(
238 this, command_buffer_->route_id()); 239 this, command_buffer_->route_id());
239 } 240 }
240 241
241 RendererGLContext::Error RendererGLContext::GetError() { 242 RendererGLContext::Error RendererGLContext::GetError() {
242 gpu::CommandBuffer::State state = command_buffer_->GetState(); 243 gpu::CommandBuffer::State state = command_buffer_->GetState();
243 if (state.error == gpu::error::kNoError) { 244 if (state.error == gpu::error::kNoError) {
244 Error old_error = last_error_; 245 Error old_error = last_error_;
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 { 362 {
362 TRACE_EVENT0("gpu", 363 TRACE_EVENT0("gpu",
363 "RendererGLContext::Initialize::InitializeCommandBuffer"); 364 "RendererGLContext::Initialize::InitializeCommandBuffer");
364 // Initiaize the command buffer. 365 // Initiaize the command buffer.
365 if (!command_buffer_->Initialize(kCommandBufferSize)) { 366 if (!command_buffer_->Initialize(kCommandBufferSize)) {
366 Destroy(); 367 Destroy();
367 return false; 368 return false;
368 } 369 }
369 } 370 }
370 371
371 command_buffer_->SetSwapBuffersCallback(
372 NewCallback(this, &RendererGLContext::OnSwapBuffers));
373
374 command_buffer_->SetChannelErrorCallback( 372 command_buffer_->SetChannelErrorCallback(
375 NewCallback(this, &RendererGLContext::OnContextLost)); 373 NewCallback(this, &RendererGLContext::OnContextLost));
376 374
377 // Create the GLES2 helper, which writes the command buffer protocol. 375 // Create the GLES2 helper, which writes the command buffer protocol.
378 gles2_helper_ = new gpu::gles2::GLES2CmdHelper(command_buffer_); 376 gles2_helper_ = new gpu::gles2::GLES2CmdHelper(command_buffer_);
379 if (!gles2_helper_->Initialize(kCommandBufferSize)) { 377 if (!gles2_helper_->Initialize(kCommandBufferSize)) {
380 Destroy(); 378 Destroy();
381 return false; 379 return false;
382 } 380 }
383 381
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
438 gles2_helper_ = NULL; 436 gles2_helper_ = NULL;
439 437
440 if (channel_ && command_buffer_) { 438 if (channel_ && command_buffer_) {
441 channel_->DestroyCommandBuffer(command_buffer_); 439 channel_->DestroyCommandBuffer(command_buffer_);
442 command_buffer_ = NULL; 440 command_buffer_ = NULL;
443 } 441 }
444 442
445 channel_ = NULL; 443 channel_ = NULL;
446 } 444 }
447 445
448 void RendererGLContext::OnSwapBuffers() {
449 if (swap_buffers_callback_.get())
450 swap_buffers_callback_->Run();
451 }
452
453 void RendererGLContext::OnContextLost() { 446 void RendererGLContext::OnContextLost() {
454 if (context_lost_callback_.get()) { 447 if (context_lost_callback_.get()) {
455 RendererGLContext::ContextLostReason reason = kUnknown; 448 RendererGLContext::ContextLostReason reason = kUnknown;
456 if (command_buffer_) { 449 if (command_buffer_) {
457 reason = ConvertReason( 450 reason = ConvertReason(
458 command_buffer_->GetLastState().context_lost_reason); 451 command_buffer_->GetLastState().context_lost_reason);
459 } 452 }
460 context_lost_callback_->Run(reason); 453 context_lost_callback_->Run(reason);
461 } 454 }
462 } 455 }
OLDNEW
« no previous file with comments | « content/renderer/gpu/renderer_gl_context.h ('k') | content/renderer/gpu/webgraphicscontext3d_command_buffer_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698