| // 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; |
| |
| import "mojo/services/gpu/public/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); |
| }; |
| |
| [Client=CommandBufferClient] |
| interface CommandBuffer { |
| Initialize(CommandBufferSyncClient? sync_client, |
| CommandBufferSyncPointClient? sync_point_client, |
| 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() => (); |
| |
| // TODO(piman): sync points |
| }; |
| |
| interface CommandBufferClient { |
| DidDestroy(); |
| LostContext(int32 lost_reason); // TODO(piman): enum |
| }; |