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 /ppapi/proxy | |
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 'ppapi/proxy')
-rw-r--r-- | ppapi/proxy/ppapi_messages.h | 7 | ||||
-rw-r--r-- | ppapi/proxy/ppb_graphics_3d_proxy.cc | 89 | ||||
-rw-r--r-- | ppapi/proxy/ppb_graphics_3d_proxy.h | 10 |
3 files changed, 36 insertions, 70 deletions
diff --git a/ppapi/proxy/ppapi_messages.h b/ppapi/proxy/ppapi_messages.h index 32ac229..67d0166 100644 --- a/ppapi/proxy/ppapi_messages.h +++ b/ppapi/proxy/ppapi_messages.h @@ -834,10 +834,11 @@ IPC_SYNC_MESSAGE_ROUTED2_1(PpapiHostMsg_PPBGraphics3D_Create, PP_Instance /* instance */, std::vector<int32_t> /* attrib_list */, ppapi::HostResource /* result */) -IPC_SYNC_MESSAGE_ROUTED2_1(PpapiHostMsg_PPBGraphics3D_InitCommandBuffer, +IPC_SYNC_MESSAGE_ROUTED1_0(PpapiHostMsg_PPBGraphics3D_InitCommandBuffer, + ppapi::HostResource /* context */) +IPC_SYNC_MESSAGE_ROUTED2_0(PpapiHostMsg_PPBGraphics3D_SetGetBuffer, ppapi::HostResource /* context */, - int32 /* size */, - base::SharedMemoryHandle /* ring_buffer */) + int32 /* transfer_buffer_id */) IPC_SYNC_MESSAGE_ROUTED1_1(PpapiHostMsg_PPBGraphics3D_GetState, ppapi::HostResource /* context */, gpu::CommandBuffer::State /* state */) diff --git a/ppapi/proxy/ppb_graphics_3d_proxy.cc b/ppapi/proxy/ppb_graphics_3d_proxy.cc index 8203e8d..b5a2dee 100644 --- a/ppapi/proxy/ppb_graphics_3d_proxy.cc +++ b/ppapi/proxy/ppb_graphics_3d_proxy.cc @@ -31,13 +31,12 @@ class CommandBuffer : public gpu::CommandBuffer { virtual ~CommandBuffer(); // gpu::CommandBuffer implementation: - virtual bool Initialize(int32 size); - virtual bool Initialize(base::SharedMemory* buffer, int32 size); - virtual gpu::Buffer GetRingBuffer(); + virtual bool Initialize(); virtual State GetState(); virtual State GetLastState(); virtual void Flush(int32 put_offset); virtual State FlushSync(int32 put_offset, int32 last_known_get); + virtual void SetGetBuffer(int32 transfer_buffer_id); virtual void SetGetOffset(int32 get_offset); virtual int32 CreateTransferBuffer(size_t size, int32 id_request); virtual int32 RegisterTransferBuffer(base::SharedMemory* shared_memory, @@ -53,9 +52,6 @@ class CommandBuffer : public gpu::CommandBuffer { bool Send(IPC::Message* msg); void UpdateState(const gpu::CommandBuffer::State& state); - int32 num_entries_; - scoped_ptr<base::SharedMemory> ring_buffer_; - typedef base::hash_map<int32, gpu::Buffer> TransferBufferMap; TransferBufferMap transfer_buffers_; @@ -69,8 +65,7 @@ class CommandBuffer : public gpu::CommandBuffer { CommandBuffer::CommandBuffer(const HostResource& resource, PluginDispatcher* dispatcher) - : num_entries_(0), - resource_(resource), + : resource_(resource), dispatcher_(dispatcher) { } @@ -84,47 +79,9 @@ CommandBuffer::~CommandBuffer() { } } -bool CommandBuffer::Initialize(int32 size) { - DCHECK(!ring_buffer_.get()); - - // Initialize the service. Assuming we are sandboxed, the GPU - // process is responsible for duplicating the handle. This might not be true - // for NaCl. - base::SharedMemoryHandle handle; - if (Send(new PpapiHostMsg_PPBGraphics3D_InitCommandBuffer( - API_ID_PPB_GRAPHICS_3D, resource_, size, &handle)) && - base::SharedMemory::IsHandleValid(handle)) { - ring_buffer_.reset(new base::SharedMemory(handle, false)); - if (ring_buffer_->Map(size)) { - num_entries_ = size / sizeof(gpu::CommandBufferEntry); - return true; - } - - ring_buffer_.reset(); - } - - return false; -} - -bool CommandBuffer::Initialize(base::SharedMemory* buffer, int32 size) { - // Not implemented in proxy. - NOTREACHED(); - return false; -} - -gpu::Buffer CommandBuffer::GetRingBuffer() { - // Return locally cached ring buffer. - gpu::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; +bool CommandBuffer::Initialize() { + return Send(new PpapiHostMsg_PPBGraphics3D_InitCommandBuffer( + API_ID_PPB_GRAPHICS_3D, resource_)); } gpu::CommandBuffer::State CommandBuffer::GetState() { @@ -175,6 +132,13 @@ gpu::CommandBuffer::State CommandBuffer::FlushSync(int32 put_offset, return last_state_; } +void CommandBuffer::SetGetBuffer(int32 transfer_buffer_id) { + if (last_state_.error == gpu::error::kNoError) { + Send(new PpapiHostMsg_PPBGraphics3D_SetGetBuffer( + API_ID_PPB_GRAPHICS_3D, resource_, transfer_buffer_id)); + } +} + void CommandBuffer::SetGetOffset(int32 get_offset) { // Not implemented in proxy. NOTREACHED(); @@ -338,17 +302,17 @@ bool Graphics3D::Init() { return false; command_buffer_.reset(new CommandBuffer(host_resource(), dispatcher)); - if (!command_buffer_->Initialize(kCommandBufferSize)) + if (!command_buffer_->Initialize()) return false; return CreateGLES2Impl(kCommandBufferSize, kTransferBufferSize); } -PP_Bool Graphics3D::InitCommandBuffer(int32_t size) { +PP_Bool Graphics3D::InitCommandBuffer() { return PP_FALSE; } -PP_Bool Graphics3D::GetRingBuffer(int* shm_handle, uint32_t* shm_size) { +PP_Bool Graphics3D::SetGetBuffer(int32_t /* transfer_buffer_id */) { return PP_FALSE; } @@ -449,6 +413,8 @@ bool PPB_Graphics3D_Proxy::OnMessageReceived(const IPC::Message& msg) { OnMsgCreate) IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBGraphics3D_InitCommandBuffer, OnMsgInitCommandBuffer) + IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBGraphics3D_SetGetBuffer, + OnMsgSetGetBuffer) IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBGraphics3D_GetState, OnMsgGetState) IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBGraphics3D_Flush, @@ -488,22 +454,21 @@ void PPB_Graphics3D_Proxy::OnMsgCreate(PP_Instance instance, } void PPB_Graphics3D_Proxy::OnMsgInitCommandBuffer( - const HostResource& context, - int32 size, - base::SharedMemoryHandle* ring_buffer) { - *ring_buffer = base::SharedMemory::NULLHandle(); + const HostResource& context) { EnterHostFromHostResource<PPB_Graphics3D_API> enter(context); if (enter.failed()) return; - if (!enter.object()->InitCommandBuffer(size)) + if (!enter.object()->InitCommandBuffer()) return; +} - int shm_handle; - uint32_t shm_size; - if (!enter.object()->GetRingBuffer(&shm_handle, &shm_size)) - return; - *ring_buffer = TransportSHMHandleFromInt(dispatcher(), shm_handle); +void PPB_Graphics3D_Proxy::OnMsgSetGetBuffer( + const HostResource& context, + int32 transfer_buffer_id) { + EnterHostFromHostResource<PPB_Graphics3D_API> enter(context); + if (enter.succeeded()) + enter.object()->SetGetBuffer(transfer_buffer_id); } void PPB_Graphics3D_Proxy::OnMsgGetState(const HostResource& context, diff --git a/ppapi/proxy/ppb_graphics_3d_proxy.h b/ppapi/proxy/ppb_graphics_3d_proxy.h index 887ae46..5a6c334 100644 --- a/ppapi/proxy/ppb_graphics_3d_proxy.h +++ b/ppapi/proxy/ppb_graphics_3d_proxy.h @@ -36,8 +36,8 @@ class Graphics3D : public Resource, public PPB_Graphics3D_Shared { } // Graphics3DTrusted API. These are not implemented in the proxy. - virtual PP_Bool InitCommandBuffer(int32_t size) OVERRIDE; - virtual PP_Bool GetRingBuffer(int* shm_handle, uint32_t* shm_size) OVERRIDE; + virtual PP_Bool InitCommandBuffer() OVERRIDE; + virtual PP_Bool SetGetBuffer(int32_t shm_id) OVERRIDE; virtual PP_Graphics3DTrustedState GetState() OVERRIDE; virtual PP_Bool Flush(int32_t put_offset) OVERRIDE; virtual PP_Graphics3DTrustedState FlushSync(int32_t put_offset) OVERRIDE; @@ -79,9 +79,9 @@ class PPB_Graphics3D_Proxy : public InterfaceProxy { void OnMsgCreate(PP_Instance instance, const std::vector<int32_t>& attribs, HostResource* result); - void OnMsgInitCommandBuffer(const HostResource& context, - int32 size, - base::SharedMemoryHandle* ring_buffer); + void OnMsgInitCommandBuffer(const HostResource& context); + void OnMsgSetGetBuffer(const HostResource& context, + int32 id); void OnMsgGetState(const HostResource& context, gpu::CommandBuffer::State* state); void OnMsgFlush(const HostResource& context, |