// 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_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);
  Echo() => ();

  // TODO(piman): sync points
};

interface CommandBufferClient {
  DidDestroy();
  LostContext(int32 lost_reason);  // TODO(piman): enum
};

}
