| // 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 "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); |
| }; |
| |
| 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() => (); |
| }; |