// Copyright 2014 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. module mojo { struct CommandBufferState { int32 num_entries; int32 get_offset; int32 put_offset; int32 token; int32 error; // TODO(piman): enum int32 context_lost_reason; // TODO(piman): enum uint32 generation; }; interface CommandBufferSyncClient { DidInitialize(bool success); DidMakeProgress(CommandBufferState? state); }; [Client=CommandBufferClient] interface CommandBuffer { Initialize(CommandBufferSyncClient? sync_client, handle? shared_state); SetGetBuffer(int32 buffer); Flush(int32 put_offset); MakeProgress(int32 last_get_offset); RegisterTransferBuffer( int32 id, handle? transfer_buffer, uint32 size); DestroyTransferBuffer(int32 id); Echo() => (); // TODO(piman): sync points }; interface CommandBufferClient { DidDestroy(); LostContext(int32 lost_reason); // TODO(piman): enum }; }