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

Side by Side Diff: webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.cc

Issue 8919014: Revert "Revert 113479 - Revert "Revert 113250 - Add CommandBuffer::SetGetBuffer"" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years 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 #if defined(ENABLE_GPU) 5 #if defined(ENABLE_GPU)
6 6
7 #include "webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.h" 7 #include "webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.h"
8 8
9 #include <GLES2/gl2.h> 9 #include <GLES2/gl2.h>
10 #ifndef GL_GLEXT_PROTOTYPES 10 #ifndef GL_GLEXT_PROTOTYPES
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 // functions are invoked. 79 // functions are invoked.
80 static bool Initialize(); 80 static bool Initialize();
81 81
82 // Terminate the library. This must be called after any other functions 82 // Terminate the library. This must be called after any other functions
83 // have completed. 83 // have completed.
84 static bool Terminate(); 84 static bool Terminate();
85 85
86 ~GLInProcessContext(); 86 ~GLInProcessContext();
87 87
88 void PumpCommands(); 88 void PumpCommands();
89 bool GetBufferChanged(int32 transfer_buffer_id);
89 90
90 // Create a GLInProcessContext that renders directly to a view. The view and 91 // Create a GLInProcessContext that renders directly to a view. The view and
91 // the associated window must not be destroyed until the returned 92 // the associated window must not be destroyed until the returned
92 // GLInProcessContext has been destroyed, otherwise the GPU process might 93 // GLInProcessContext has been destroyed, otherwise the GPU process might
93 // attempt to render to an invalid window handle. 94 // attempt to render to an invalid window handle.
94 // 95 //
95 // NOTE: on Mac OS X, this entry point is only used to set up the 96 // NOTE: on Mac OS X, this entry point is only used to set up the
96 // accelerated compositor's output. On this platform, we actually pass 97 // accelerated compositor's output. On this platform, we actually pass
97 // a gfx::PluginWindowHandle in place of the gfx::NativeViewId, 98 // a gfx::PluginWindowHandle in place of the gfx::NativeViewId,
98 // because the facility to allocate a fake PluginWindowHandle is 99 // because the facility to allocate a fake PluginWindowHandle is
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 LAZY_INSTANCE_INITIALIZER; 305 LAZY_INSTANCE_INITIALIZER;
305 306
306 void GLInProcessContext::PumpCommands() { 307 void GLInProcessContext::PumpCommands() {
307 base::AutoLock lock(g_decoder_lock.Get()); 308 base::AutoLock lock(g_decoder_lock.Get());
308 decoder_->MakeCurrent(); 309 decoder_->MakeCurrent();
309 gpu_scheduler_->PutChanged(); 310 gpu_scheduler_->PutChanged();
310 ::gpu::CommandBuffer::State state = command_buffer_->GetState(); 311 ::gpu::CommandBuffer::State state = command_buffer_->GetState();
311 CHECK(state.error == ::gpu::error::kNoError); 312 CHECK(state.error == ::gpu::error::kNoError);
312 } 313 }
313 314
315 bool GLInProcessContext::GetBufferChanged(int32 transfer_buffer_id) {
316 return gpu_scheduler_->SetGetBuffer(transfer_buffer_id);
317 }
318
314 uint32 GLInProcessContext::GetParentTextureId() { 319 uint32 GLInProcessContext::GetParentTextureId() {
315 return parent_texture_id_; 320 return parent_texture_id_;
316 } 321 }
317 322
318 uint32 GLInProcessContext::CreateParentTexture(const gfx::Size& size) { 323 uint32 GLInProcessContext::CreateParentTexture(const gfx::Size& size) {
319 uint32 texture = 0; 324 uint32 texture = 0;
320 gles2_implementation_->GenTextures(1, &texture); 325 gles2_implementation_->GenTextures(1, &texture);
321 gles2_implementation_->Flush(); 326 gles2_implementation_->Flush();
322 return texture; 327 return texture;
323 } 328 }
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
450 break; 455 break;
451 default: 456 default:
452 last_error_ = BAD_ATTRIBUTE; 457 last_error_ = BAD_ATTRIBUTE;
453 attribs.push_back(NONE); 458 attribs.push_back(NONE);
454 attrib_list = NULL; 459 attrib_list = NULL;
455 break; 460 break;
456 } 461 }
457 } 462 }
458 463
459 command_buffer_.reset(new CommandBufferService); 464 command_buffer_.reset(new CommandBufferService);
460 if (!command_buffer_->Initialize(kCommandBufferSize)) { 465 if (!command_buffer_->Initialize()) {
461 LOG(ERROR) << "Could not initialize command buffer."; 466 LOG(ERROR) << "Could not initialize command buffer.";
462 Destroy(); 467 Destroy();
463 return false; 468 return false;
464 } 469 }
465 470
466 // TODO(gman): This needs to be true if this is Pepper. 471 // TODO(gman): This needs to be true if this is Pepper.
467 bool bind_generates_resource = false; 472 bool bind_generates_resource = false;
468 decoder_.reset(::gpu::gles2::GLES2Decoder::Create(context_group ? 473 decoder_.reset(::gpu::gles2::GLES2Decoder::Create(context_group ?
469 context_group->decoder_->GetContextGroup() : 474 context_group->decoder_->GetContextGroup() :
470 new ::gpu::gles2::ContextGroup(bind_generates_resource))); 475 new ::gpu::gles2::ContextGroup(bind_generates_resource)));
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
516 if (!decoder_->SetParent( 521 if (!decoder_->SetParent(
517 parent_.get() ? parent_->decoder_.get() : NULL, 522 parent_.get() ? parent_->decoder_.get() : NULL,
518 parent_texture_id_)) { 523 parent_texture_id_)) {
519 LOG(ERROR) << "Could not set parent."; 524 LOG(ERROR) << "Could not set parent.";
520 Destroy(); 525 Destroy();
521 return false; 526 return false;
522 } 527 }
523 528
524 command_buffer_->SetPutOffsetChangeCallback( 529 command_buffer_->SetPutOffsetChangeCallback(
525 base::Bind(&GLInProcessContext::PumpCommands, base::Unretained(this))); 530 base::Bind(&GLInProcessContext::PumpCommands, base::Unretained(this)));
531 command_buffer_->SetGetBufferChangeCallback(
532 base::Bind(
533 &GLInProcessContext::GetBufferChanged, base::Unretained(this)));
526 534
527 // Create the GLES2 helper, which writes the command buffer protocol. 535 // Create the GLES2 helper, which writes the command buffer protocol.
528 gles2_helper_.reset(new GLES2CmdHelper(command_buffer_.get())); 536 gles2_helper_.reset(new GLES2CmdHelper(command_buffer_.get()));
529 if (!gles2_helper_->Initialize(kCommandBufferSize)) { 537 if (!gles2_helper_->Initialize(kCommandBufferSize)) {
530 Destroy(); 538 Destroy();
531 return false; 539 return false;
532 } 540 }
533 541
534 // Create a transfer buffer. 542 // Create a transfer buffer.
535 transfer_buffer_id_ = 543 transfer_buffer_id_ =
(...skipping 1145 matching lines...) Expand 10 before | Expand all | Expand 10 after
1681 context_lost_reason_ = GL_UNKNOWN_CONTEXT_RESET_ARB; 1689 context_lost_reason_ = GL_UNKNOWN_CONTEXT_RESET_ARB;
1682 if (context_lost_callback_) { 1690 if (context_lost_callback_) {
1683 context_lost_callback_->onContextLost(); 1691 context_lost_callback_->onContextLost();
1684 } 1692 }
1685 } 1693 }
1686 1694
1687 } // namespace gpu 1695 } // namespace gpu
1688 } // namespace webkit 1696 } // namespace webkit
1689 1697
1690 #endif // defined(ENABLE_GPU) 1698 #endif // defined(ENABLE_GPU)
OLDNEW
« no previous file with comments | « ppapi/thunk/ppb_graphics_3d_trusted_thunk.cc ('k') | webkit/plugins/ppapi/ppb_graphics_3d_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698