|  | // 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. | 
|  |  | 
|  | [DartPackage="mojo_services"] | 
|  | module mojo; | 
|  |  | 
|  | import "gpu/interfaces/gpu_capabilities.mojom"; | 
|  |  | 
|  | 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, GpuCapabilities capabilities); | 
|  | DidMakeProgress(CommandBufferState state); | 
|  | }; | 
|  |  | 
|  | interface CommandBufferSyncPointClient { | 
|  | DidInsertSyncPoint(uint32 sync_point); | 
|  | }; | 
|  |  | 
|  | interface CommandBufferLostContextObserver { | 
|  | DidLoseContext(int32 context_lost_reason); | 
|  | }; | 
|  |  | 
|  | interface CommandBuffer { | 
|  | // Initialize attempts to initialize the command buffer. Success or failure | 
|  | // will be communicated via the CommandBufferSyncClient DidInitialize() call. | 
|  | // If the context is lost after creation the LostContext method on the | 
|  | // CommandBufferLostContextObserver's will be called then this pipe will be | 
|  | // closed. | 
|  | Initialize(CommandBufferSyncClient sync_client, | 
|  | CommandBufferSyncPointClient sync_point_client, | 
|  | CommandBufferLostContextObserver lost_observer, | 
|  | handle<shared_buffer> shared_state); | 
|  | SetGetBuffer(int32 buffer); | 
|  | Flush(int32 put_offset); | 
|  | MakeProgress(int32 last_get_offset); | 
|  | RegisterTransferBuffer( | 
|  | int32 id, handle<shared_buffer> transfer_buffer, uint32 size); | 
|  | DestroyTransferBuffer(int32 id); | 
|  |  | 
|  | // InsertSyncPoint returns the sync point returned via DidInsertSyncPoint. | 
|  | // If |retire| is true, the sync point is retired on insertion. Otherwise, | 
|  | // explicitly call RetireSyncPoint to retire it. | 
|  | InsertSyncPoint(bool retire); | 
|  | RetireSyncPoint(uint32 sync_point); | 
|  | Echo() => (); | 
|  | }; |