// 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/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_state); SetGetBuffer(int32 buffer); Flush(int32 put_offset); MakeProgress(int32 last_get_offset); RegisterTransferBuffer( int32 id, handle 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() => (); };