1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 module mojo { 6 7 struct CommandBufferState { 8 int32 num_entries; 9 int32 get_offset; 10 int32 put_offset; 11 int32 token; 12 int32 error; // TODO(piman): enum 13 int32 context_lost_reason; // TODO(piman): enum 14 uint32 generation; 15 }; 16 17 interface CommandBufferSyncClient { 18 DidInitialize(bool success); 19 DidMakeProgress(CommandBufferState state); 20 }; 21 22 [Client=CommandBufferClient] 23 interface CommandBuffer { 24 Initialize(CommandBufferSyncClient sync_client, 25 handle<shared_buffer> shared_state); 26 SetGetBuffer(int32 buffer); 27 Flush(int32 put_offset); 28 MakeProgress(int32 last_get_offset); 29 RegisterTransferBuffer( 30 int32 id, handle<shared_buffer> transfer_buffer, uint32 size); 31 DestroyTransferBuffer(int32 id); 32 Echo() => (); 33 34 // TODO(piman): move to somewhere else (native_viewport?). 35 RequestAnimationFrames(); 36 CancelAnimationFrames(); 37 38 // TODO(piman): sync points 39 }; 40 41 interface CommandBufferClient { 42 DidDestroy(); 43 LostContext(int32 lost_reason); // TODO(piman): enum 44 45 // TODO(piman): move to somewhere else (native_viewport?). 46 DrawAnimationFrame(); 47 }; 48 49 } 50