diff options
author | gman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-12 23:29:40 +0000 |
---|---|---|
committer | gman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-12 23:29:40 +0000 |
commit | 503b3a2ed9be72b3697f1c02cdc7efd29fec987a (patch) | |
tree | f715ec00989bded6c3bdb3919cace05a7d33fc05 /content/renderer/gpu | |
parent | 6e6f8836c975eebd3620974c3de6d564967821e9 (diff) | |
download | chromium_src-503b3a2ed9be72b3697f1c02cdc7efd29fec987a.zip chromium_src-503b3a2ed9be72b3697f1c02cdc7efd29fec987a.tar.gz chromium_src-503b3a2ed9be72b3697f1c02cdc7efd29fec987a.tar.bz2 |
Revert "Revert 113479 - Revert "Revert 113250 - Add CommandBuffer::SetGetBuffer""
This reverts commit 84677847c10d0319d8d996aea9b310add85c0bd3.
TEST=ran browser tests on OSX
BUG=103989
TBR=apatrick@chromiu.org
Review URL: http://codereview.chromium.org/8919014
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@114114 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/renderer/gpu')
-rw-r--r-- | content/renderer/gpu/command_buffer_proxy.cc | 72 | ||||
-rw-r--r-- | content/renderer/gpu/command_buffer_proxy.h | 9 | ||||
-rw-r--r-- | content/renderer/gpu/renderer_gl_context.cc | 2 |
3 files changed, 13 insertions, 70 deletions
diff --git a/content/renderer/gpu/command_buffer_proxy.cc b/content/renderer/gpu/command_buffer_proxy.cc index 86420ae..d51f840 100644 --- a/content/renderer/gpu/command_buffer_proxy.cc +++ b/content/renderer/gpu/command_buffer_proxy.cc @@ -25,8 +25,7 @@ using gpu::Buffer; CommandBufferProxy::CommandBufferProxy( GpuChannelHost* channel, int route_id) - : num_entries_(0), - channel_(channel), + : channel_(channel), route_id_(route_id), flush_count_(0) { } @@ -93,41 +92,13 @@ void CommandBufferProxy::SetChannelErrorCallback( channel_error_callback_ = callback; } -bool CommandBufferProxy::Initialize(int32 size) { - DCHECK(!ring_buffer_.get()); - +bool CommandBufferProxy::Initialize() { ChildThread* child_thread = ChildThread::current(); if (!child_thread) return false; - base::SharedMemoryHandle handle; - if (!child_thread->Send(new ChildProcessHostMsg_SyncAllocateSharedMemory( - size, - &handle))) { - return false; - } - - if (!base::SharedMemory::IsHandleValid(handle)) - return false; - -#if defined(OS_POSIX) - handle.auto_close = false; -#endif - - // Take ownership of shared memory. This will close the handle if Send below - // fails. Otherwise, callee takes ownership before this variable - // goes out of scope. - base::SharedMemory shared_memory(handle, false); - - return Initialize(&shared_memory, size); -} - -bool CommandBufferProxy::Initialize(base::SharedMemory* buffer, int32 size) { bool result; - if (!Send(new GpuCommandBufferMsg_Initialize(route_id_, - buffer->handle(), - size, - &result))) { + if (!Send(new GpuCommandBufferMsg_Initialize(route_id_, &result))) { LOG(ERROR) << "Could not send GpuCommandBufferMsg_Initialize."; return false; } @@ -137,39 +108,9 @@ bool CommandBufferProxy::Initialize(base::SharedMemory* buffer, int32 size) { return false; } - base::SharedMemoryHandle handle; - if (!buffer->GiveToProcess(base::GetCurrentProcessHandle(), &handle)) { - LOG(ERROR) << "Failed to duplicate command buffer handle."; - return false; - } - - ring_buffer_.reset(new base::SharedMemory(handle, false)); - if (!ring_buffer_->Map(size)) { - LOG(ERROR) << "Failed to map shared memory for command buffer."; - ring_buffer_.reset(); - return false; - } - - num_entries_ = size / sizeof(gpu::CommandBufferEntry); return true; } -Buffer CommandBufferProxy::GetRingBuffer() { - DCHECK(ring_buffer_.get()); - // Return locally cached ring buffer. - Buffer buffer; - if (ring_buffer_.get()) { - buffer.ptr = ring_buffer_->memory(); - buffer.size = num_entries_ * sizeof(gpu::CommandBufferEntry); - buffer.shared_memory = ring_buffer_.get(); - } else { - buffer.ptr = NULL; - buffer.size = 0; - buffer.shared_memory = NULL; - } - return buffer; -} - gpu::CommandBuffer::State CommandBufferProxy::GetState() { // Send will flag state with lost context if IPC fails. if (last_state_.error == gpu::error::kNoError) { @@ -214,6 +155,13 @@ gpu::CommandBuffer::State CommandBufferProxy::FlushSync(int32 put_offset, return last_state_; } +void CommandBufferProxy::SetGetBuffer(int32 shm_id) { + if (last_state_.error != gpu::error::kNoError) + return; + + Send(new GpuCommandBufferMsg_SetGetBuffer(route_id_, shm_id)); +} + void CommandBufferProxy::SetGetOffset(int32 get_offset) { // Not implemented in proxy. NOTREACHED(); diff --git a/content/renderer/gpu/command_buffer_proxy.h b/content/renderer/gpu/command_buffer_proxy.h index 551e1ca..6591621 100644 --- a/content/renderer/gpu/command_buffer_proxy.h +++ b/content/renderer/gpu/command_buffer_proxy.h @@ -43,13 +43,12 @@ class CommandBufferProxy : public gpu::CommandBuffer, int route_id() const { return route_id_; } // CommandBuffer implementation: - virtual bool Initialize(int32 size) OVERRIDE; - virtual bool Initialize(base::SharedMemory* buffer, int32 size) OVERRIDE; - virtual gpu::Buffer GetRingBuffer() OVERRIDE; + virtual bool Initialize() OVERRIDE; virtual State GetState() OVERRIDE; virtual State GetLastState() OVERRIDE; virtual void Flush(int32 put_offset) OVERRIDE; virtual State FlushSync(int32 put_offset, int32 last_known_get) OVERRIDE; + virtual void SetGetBuffer(int32 shm_id) OVERRIDE; virtual void SetGetOffset(int32 get_offset) OVERRIDE; virtual int32 CreateTransferBuffer(size_t size, int32 id_request) OVERRIDE; virtual int32 RegisterTransferBuffer(base::SharedMemory* shared_memory, @@ -104,10 +103,6 @@ class CommandBufferProxy : public gpu::CommandBuffer, void OnDestroyed(gpu::error::ContextLostReason reason); void OnEchoAck(); - // As with the service, the client takes ownership of the ring buffer. - int32 num_entries_; - scoped_ptr<base::SharedMemory> ring_buffer_; - // Local cache of id to transfer buffer mapping. typedef std::map<int32, gpu::Buffer> TransferBufferMap; TransferBufferMap transfer_buffers_; diff --git a/content/renderer/gpu/renderer_gl_context.cc b/content/renderer/gpu/renderer_gl_context.cc index 03f6715..8fa9262 100644 --- a/content/renderer/gpu/renderer_gl_context.cc +++ b/content/renderer/gpu/renderer_gl_context.cc @@ -380,7 +380,7 @@ bool RendererGLContext::Initialize(bool onscreen, TRACE_EVENT0("gpu", "RendererGLContext::Initialize::InitializeCommandBuffer"); // Initiaize the command buffer. - if (!command_buffer_->Initialize(kCommandBufferSize)) { + if (!command_buffer_->Initialize()) { Destroy(); return false; } |