diff options
author | nfullagar@google.com <nfullagar@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-08 01:04:32 +0000 |
---|---|---|
committer | nfullagar@google.com <nfullagar@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-08 01:04:32 +0000 |
commit | 4223df5774c08d900fe3fe0acedcd21d23020ba2 (patch) | |
tree | c7a1a7941d5306c5b03105e5cfe17c0fff44ae92 /ppapi/native_client | |
parent | b513f342e7348004cc23c0a341789579b2a63748 (diff) | |
download | chromium_src-4223df5774c08d900fe3fe0acedcd21d23020ba2.zip chromium_src-4223df5774c08d900fe3fe0acedcd21d23020ba2.tar.gz chromium_src-4223df5774c08d900fe3fe0acedcd21d23020ba2.tar.bz2 |
Proxy FlushSyncFast, switch nacl's command buffer to use it.
TEST= try bots, manual
BUG= http://code.google.com/p/chromium/issues/detail?id=93170
Review URL: http://codereview.chromium.org/7845003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@100064 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/native_client')
7 files changed, 83 insertions, 2 deletions
diff --git a/ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_graphics_3d_rpc_server.cc b/ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_graphics_3d_rpc_server.cc index f86c735..62ea1eb 100644 --- a/ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_graphics_3d_rpc_server.cc +++ b/ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_graphics_3d_rpc_server.cc @@ -330,6 +330,26 @@ void PpbGraphics3DRpcServer::PPB_Graphics3DTrusted_FlushSync( rpc->result = NACL_SRPC_RESULT_OK; } +void PpbGraphics3DRpcServer::PPB_Graphics3DTrusted_FlushSyncFast( + NaClSrpcRpc* rpc, + NaClSrpcClosure* done, + PP_Resource resource_id, + int32_t put_offset, + int32_t last_known_get, + nacl_abi_size_t* state_size, char* state) { + DebugPrintf("PPB_Graphics3DTrusted_FlushSyncFast\n"); + NaClSrpcClosureRunner runner(done); + rpc->result = NACL_SRPC_RESULT_APP_ERROR; + if (*state_size != sizeof(PP_Graphics3DTrustedState)) + return; + PP_Graphics3DTrustedState trusted_state = + ppapi_proxy::PPBGraphics3DTrustedInterface()->FlushSyncFast( + resource_id, put_offset, last_known_get); + *reinterpret_cast<PP_Graphics3DTrustedState*>(state) = trusted_state; + *state_size = sizeof(trusted_state); + rpc->result = NACL_SRPC_RESULT_OK; +} + void PpbGraphics3DRpcServer::PPB_Graphics3DTrusted_CreateTransferBuffer( NaClSrpcRpc* rpc, NaClSrpcClosure* done, diff --git a/ppapi/native_client/src/shared/ppapi_proxy/command_buffer_nacl.cc b/ppapi/native_client/src/shared/ppapi_proxy/command_buffer_nacl.cc index c87ba0c..e151312 100644 --- a/ppapi/native_client/src/shared/ppapi_proxy/command_buffer_nacl.cc +++ b/ppapi/native_client/src/shared/ppapi_proxy/command_buffer_nacl.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Native Client Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -94,10 +94,11 @@ gpu::CommandBuffer::State CommandBufferNacl::FlushSync(int32 put_offset, NaClSrpcChannel* channel = ppapi_proxy::GetMainSrpcChannel(); NaClSrpcError retval = - PpbGraphics3DRpcClient::PPB_Graphics3DTrusted_FlushSync( + PpbGraphics3DRpcClient::PPB_Graphics3DTrusted_FlushSyncFast( channel, graphics_3d_, put_offset, + last_known_get, &state_size, reinterpret_cast<char*>(&state)); if (NACL_SRPC_RESULT_OK != retval diff --git a/ppapi/native_client/src/shared/ppapi_proxy/ppb_graphics_3d.srpc b/ppapi/native_client/src/shared/ppapi_proxy/ppb_graphics_3d.srpc index 11ebc83..fe0b499 100644 --- a/ppapi/native_client/src/shared/ppapi_proxy/ppb_graphics_3d.srpc +++ b/ppapi/native_client/src/shared/ppapi_proxy/ppb_graphics_3d.srpc @@ -109,6 +109,15 @@ 'outputs': [['state', 'char[]'], # PP_Graphics3DTrustedState ] }, + # Flush sync fast. + {'name': 'PPB_Graphics3DTrusted_FlushSyncFast', + 'inputs': [['resource_id', 'PP_Resource'], + ['put_offset', 'int32_t'], + ['last_known_offset', 'int32_t'] + ], + 'outputs': [['state', 'char[]'], # PP_Graphics3DTrustedState + ] + }, # Create a shared memory transfer buffer. {'name': 'PPB_Graphics3DTrusted_CreateTransferBuffer', 'inputs': [['resource_id', 'PP_Resource'], diff --git a/ppapi/native_client/src/shared/ppapi_proxy/ppb_rpc_client.cc b/ppapi/native_client/src/shared/ppapi_proxy/ppb_rpc_client.cc index 00fe720..4729260 100644 --- a/ppapi/native_client/src/shared/ppapi_proxy/ppb_rpc_client.cc +++ b/ppapi/native_client/src/shared/ppapi_proxy/ppb_rpc_client.cc @@ -1540,6 +1540,27 @@ NaClSrpcError PpbGraphics3DRpcClient::PPB_Graphics3DTrusted_FlushSync( return retval; } +NaClSrpcError PpbGraphics3DRpcClient::PPB_Graphics3DTrusted_FlushSyncFast( + NaClSrpcChannel* channel, + PP_Resource resource_id, + int32_t put_offset, + int32_t last_known_offset, + nacl_abi_size_t* state_bytes, char* state) { + VCHECK(ppapi_proxy::PPBCoreInterface()->IsMainThread(), + ("%s: PPAPI calls are not supported off the main thread\n", + __FUNCTION__)); + NaClSrpcError retval; + retval = NaClSrpcInvokeBySignature( + channel, + "PPB_Graphics3DTrusted_FlushSyncFast:iii:C", + resource_id, + put_offset, + last_known_offset, + state_bytes, state + ); + return retval; +} + NaClSrpcError PpbGraphics3DRpcClient::PPB_Graphics3DTrusted_CreateTransferBuffer( NaClSrpcChannel* channel, PP_Resource resource_id, diff --git a/ppapi/native_client/src/shared/ppapi_proxy/ppb_rpc_server.cc b/ppapi/native_client/src/shared/ppapi_proxy/ppb_rpc_server.cc index 136fb41..4d05e2d 100644 --- a/ppapi/native_client/src/shared/ppapi_proxy/ppb_rpc_server.cc +++ b/ppapi/native_client/src/shared/ppapi_proxy/ppb_rpc_server.cc @@ -1238,6 +1238,22 @@ static void PPB_Graphics3DTrusted_FlushSyncDispatcher( ); } +static void PPB_Graphics3DTrusted_FlushSyncFastDispatcher( + NaClSrpcRpc* rpc, + NaClSrpcArg** inputs, + NaClSrpcArg** outputs, + NaClSrpcClosure* done +) { + PpbGraphics3DRpcServer::PPB_Graphics3DTrusted_FlushSyncFast( + rpc, + done, + inputs[0]->u.ival, + inputs[1]->u.ival, + inputs[2]->u.ival, + &(outputs[0]->u.count), outputs[0]->arrays.carr + ); +} + static void PPB_Graphics3DTrusted_CreateTransferBufferDispatcher( NaClSrpcRpc* rpc, NaClSrpcArg** inputs, @@ -2330,6 +2346,7 @@ NaClSrpcHandlerDesc PpbRpcs::srpc_methods[] = { { "PPB_Graphics3DTrusted_GetState:i:C", PPB_Graphics3DTrusted_GetStateDispatcher }, { "PPB_Graphics3DTrusted_Flush:ii:", PPB_Graphics3DTrusted_FlushDispatcher }, { "PPB_Graphics3DTrusted_FlushSync:ii:C", PPB_Graphics3DTrusted_FlushSyncDispatcher }, + { "PPB_Graphics3DTrusted_FlushSyncFast:iii:C", PPB_Graphics3DTrusted_FlushSyncFastDispatcher }, { "PPB_Graphics3DTrusted_CreateTransferBuffer:iii:i", PPB_Graphics3DTrusted_CreateTransferBufferDispatcher }, { "PPB_Graphics3DTrusted_DestroyTransferBuffer:ii:", PPB_Graphics3DTrusted_DestroyTransferBufferDispatcher }, { "PPB_Graphics3DTrusted_GetTransferBuffer:ii:hi", PPB_Graphics3DTrusted_GetTransferBufferDispatcher }, diff --git a/ppapi/native_client/src/shared/ppapi_proxy/trusted/srpcgen/ppb_rpc.h b/ppapi/native_client/src/shared/ppapi_proxy/trusted/srpcgen/ppb_rpc.h index 29b86fd..26d37b5 100644 --- a/ppapi/native_client/src/shared/ppapi_proxy/trusted/srpcgen/ppb_rpc.h +++ b/ppapi/native_client/src/shared/ppapi_proxy/trusted/srpcgen/ppb_rpc.h @@ -619,6 +619,13 @@ class PpbGraphics3DRpcServer { PP_Resource resource_id, int32_t put_offset, nacl_abi_size_t* state_bytes, char* state); + static void PPB_Graphics3DTrusted_FlushSyncFast( + NaClSrpcRpc* rpc, + NaClSrpcClosure* done, + PP_Resource resource_id, + int32_t put_offset, + int32_t last_known_offset, + nacl_abi_size_t* state_bytes, char* state); static void PPB_Graphics3DTrusted_CreateTransferBuffer( NaClSrpcRpc* rpc, NaClSrpcClosure* done, diff --git a/ppapi/native_client/src/shared/ppapi_proxy/untrusted/srpcgen/ppb_rpc.h b/ppapi/native_client/src/shared/ppapi_proxy/untrusted/srpcgen/ppb_rpc.h index 5a5001b..7c58187 100644 --- a/ppapi/native_client/src/shared/ppapi_proxy/untrusted/srpcgen/ppb_rpc.h +++ b/ppapi/native_client/src/shared/ppapi_proxy/untrusted/srpcgen/ppb_rpc.h @@ -539,6 +539,12 @@ class PpbGraphics3DRpcClient { PP_Resource resource_id, int32_t put_offset, nacl_abi_size_t* state_bytes, char* state); + static NaClSrpcError PPB_Graphics3DTrusted_FlushSyncFast( + NaClSrpcChannel* channel, + PP_Resource resource_id, + int32_t put_offset, + int32_t last_known_offset, + nacl_abi_size_t* state_bytes, char* state); static NaClSrpcError PPB_Graphics3DTrusted_CreateTransferBuffer( NaClSrpcChannel* channel, PP_Resource resource_id, |