// Copyright 2016 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 gpu.mojom;

import "gpu/ipc/common/dx_diag_node.mojom";
import "gpu/ipc/common/gpu_info.mojom";
import "gpu/ipc/common/gpu_preferences.mojom";
import "gpu/ipc/common/mailbox.mojom";
import "gpu/ipc/common/mailbox_holder.mojom";
import "gpu/ipc/common/sync_token.mojom";

// All functions on this interface echo their arguments to test StructTraits
// serialization and deserialization.
interface TraitsTestService {

  [Sync]
  EchoDxDiagNode(DxDiagNode d) => (DxDiagNode pass);

  [Sync]
  EchoGpuDevice(GpuDevice g) => (GpuDevice pass);

  [Sync]
  EchoGpuInfo(GpuInfo g) => (GpuInfo pass);

  [Sync]
  EchoMailbox(Mailbox m) => (Mailbox pass);

  [Sync]
  EchoMailboxHolder(MailboxHolder m) => (MailboxHolder pass);

  [Sync]
  EchoSyncToken(SyncToken s) => (SyncToken pass);

  [Sync]
  EchoVideoDecodeAcceleratorSupportedProfile(
    VideoDecodeAcceleratorSupportedProfile v) =>
      (VideoDecodeAcceleratorSupportedProfile pass);

  [Sync]
  EchoVideoDecodeAcceleratorCapabilities(
    VideoDecodeAcceleratorCapabilities v) =>
      (VideoDecodeAcceleratorCapabilities pass);

  [Sync]
  EchoVideoEncodeAcceleratorSupportedProfile(
    VideoEncodeAcceleratorSupportedProfile v) =>
      (VideoEncodeAcceleratorSupportedProfile pass);

  [Sync]
  EchoGpuPreferences(GpuPreferences prefs) => (GpuPreferences pass);
};
