diff options
author | gman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-01-27 23:06:19 +0000 |
---|---|---|
committer | gman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-01-27 23:06:19 +0000 |
commit | 06b73aa26473f9ec6bec009d11329a10cad27350 (patch) | |
tree | 953a5ab22e1fd30e918a47a0eebd72860c0bad69 /webkit/gpu | |
parent | d052176a98e0f9803b276dc43daa08b3fd310055 (diff) | |
download | chromium_src-06b73aa26473f9ec6bec009d11329a10cad27350.zip chromium_src-06b73aa26473f9ec6bec009d11329a10cad27350.tar.gz chromium_src-06b73aa26473f9ec6bec009d11329a10cad27350.tar.bz2 |
Revert "Revert 119430 - Make transferbuffer increase in size dynamically"
This reverts commit 2f38c45427c68fe731c1f5c05256b6c141a6a590.
BUG=101431
TEST=
TBR=apatrick@chromium.org
Review URL: http://codereview.chromium.org/9121057
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@119509 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/gpu')
-rw-r--r-- | webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.cc | 43 |
1 files changed, 16 insertions, 27 deletions
diff --git a/webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.cc b/webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.cc index 510f642..c2c0f39 100644 --- a/webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.cc +++ b/webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.cc @@ -28,6 +28,7 @@ #include "base/synchronization/lock.h" #include "gpu/command_buffer/client/gles2_lib.h" #include "gpu/command_buffer/client/gles2_implementation.h" +#include "gpu/command_buffer/client/transfer_buffer.h" #include "gpu/command_buffer/common/constants.h" #include "gpu/command_buffer/service/context_group.h" #include "gpu/command_buffer/service/gpu_scheduler.h" @@ -46,6 +47,7 @@ using gpu::CommandBufferService; using gpu::gles2::GLES2CmdHelper; using gpu::gles2::GLES2Implementation; using gpu::GpuScheduler; +using gpu::TransferBuffer; namespace webkit { namespace gpu { @@ -190,7 +192,7 @@ class GLInProcessContext : public base::SupportsWeakPtr<GLInProcessContext> { scoped_refptr<gfx::GLContext> context_; scoped_refptr<gfx::GLSurface> surface_; scoped_ptr<GLES2CmdHelper> gles2_helper_; - int32 transfer_buffer_id_; + scoped_ptr<TransferBuffer> transfer_buffer_; scoped_ptr<GLES2Implementation> gles2_implementation_; Error last_error_; @@ -202,7 +204,9 @@ namespace { const int32 kCommandBufferSize = 1024 * 1024; // TODO(kbr): make the transfer buffer size configurable via context // creation attributes. -const int32 kTransferBufferSize = 1024 * 1024; +const size_t kStartTransferBufferSize = 4 * 1024 * 1024; +const size_t kMinTransferBufferSize = 1 * 256 * 1024; +const size_t kMaxTransferBufferSize = 16 * 1024 * 1024; static base::LazyInstance< std::set<WebGraphicsContext3DInProcessCommandBufferImpl*> > @@ -392,7 +396,6 @@ GLInProcessContext::GLInProcessContext(GLInProcessContext* parent) : parent_(parent ? parent->AsWeakPtr() : base::WeakPtr<GLInProcessContext>()), parent_texture_id_(0), - transfer_buffer_id_(-1), last_error_(SUCCESS) { } @@ -529,31 +532,22 @@ bool GLInProcessContext::Initialize(bool onscreen, } // Create a transfer buffer. - transfer_buffer_id_ = - command_buffer_->CreateTransferBuffer( - kTransferBufferSize, ::gpu::kCommandBufferSharedMemoryId); - if (transfer_buffer_id_ < 0) { - Destroy(); - return false; - } - - // Map the buffer. - Buffer transfer_buffer = - command_buffer_->GetTransferBuffer(transfer_buffer_id_); - if (!transfer_buffer.ptr) { - Destroy(); - return false; - } + transfer_buffer_.reset(new TransferBuffer(gles2_helper_.get())); // Create the object exposing the OpenGL API. gles2_implementation_.reset(new GLES2Implementation( gles2_helper_.get(), - transfer_buffer.size, - transfer_buffer.ptr, - transfer_buffer_id_, + transfer_buffer_.get(), true, false)); + if (!gles2_implementation_->Initialize( + kStartTransferBufferSize, + kMinTransferBufferSize, + kMaxTransferBufferSize)) { + return false; + } + return true; } @@ -574,13 +568,8 @@ void GLInProcessContext::Destroy() { gles2_implementation_.reset(); } - if (command_buffer_.get() && transfer_buffer_id_ != -1) { - command_buffer_->DestroyTransferBuffer(transfer_buffer_id_); - transfer_buffer_id_ = -1; - } - + transfer_buffer_.reset(); gles2_helper_.reset(); - command_buffer_.reset(); } |