// Copyright 2017 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.

// gpu/config/gpu_feature_info.h
module gpu.mojom;

// gpu::GpuFeatureStatus
enum GpuFeatureStatus {
  Enabled,
  Blacklisted,
  Disabled,
  Software,
  Undefined,
  Max
};

// gpu:GpuFeatureInfo
struct GpuFeatureInfo {
  // The array should have one entry for each GpuFeatureType. The size of the
  // array should be gpu::NUMBER_OF_GPU_FEATURE_TYPES. This is enforced during
  // deserialization.
  array<GpuFeatureStatus> status_values;

  // The array contains a set of workaround IDs that apply in the current
  // platform (OS, GPU, driver, etc). The IDs correspond to the enums defined
  // in gpu/config/gpu_driver_bug_workaround_type.h.
  array<int32> enabled_gpu_driver_bug_workarounds;

  // GL extensions disabled by GpuDriverBugWorkarounds, separated by ' '.
  string disabled_extensions;

  // WebGL extensions disabled by GpuDriverBugWorkarounds, separated by ' '.
  string disabled_webgl_extensions;

  // The array contains a list of gpu blacklist entry indices that apply in the
  // current platform. The entries are defined in
  // gpu/config/software_rendering_list.json.
  array<uint32> applied_gpu_blacklist_entries;

  // The array constains a list of gpu driver bug list entry indices that apply
  // in the current platform. The entries are defined in
  // gpu/config/gpu_driver_bug_list.json.
  array<uint32> applied_gpu_driver_bug_list_entries;
};
