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

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

import "ui/gfx/mojo/buffer_types.mojom";

// gpu::GpuPreferences::VpxDecodeVendors
enum VpxDecodeVendors {
  VPX_VENDOR_NONE = 0,
  VPX_VENDOR_MICROSOFT = 1,
  VPX_VENDOR_AMD = 2,
  VPX_VENDOR_ALL = 3,
};

// gpu::GpuPreferences
struct GpuPreferences {
  bool disable_accelerated_video_decode;
  bool disable_accelerated_video_encode;
  bool gpu_startup_dialog;
  bool disable_gpu_watchdog;
  bool gpu_sandbox_start_early;

  // TODO(http://crbug.com/676224) Support preprocessing of mojoms. Following
  // variables should be used on Windows only.
  VpxDecodeVendors enable_accelerated_vpx_decode;
  bool enable_low_latency_dxva;
  bool enable_zero_copy_dxgi_video;
  bool enable_nv12_dxgi_video;
  bool enable_media_foundation_vea_on_windows7;
  bool disable_software_rasterizer;
  bool log_gpu_control_list_decisions;

  bool compile_shader_always_succeeds;
  bool disable_gl_error_limit;
  bool disable_glsl_translator;
  bool disable_shader_name_hashing;
  bool enable_gpu_command_logging;
  bool enable_gpu_debugging;
  bool enable_gpu_service_logging_gpu;
  bool enable_gpu_driver_debug_logging;
  bool disable_gpu_program_cache;
  bool enforce_gl_minimums;
  uint32 force_gpu_mem_available;
  uint32 gpu_program_cache_size;
  bool disable_gpu_shader_disk_cache;
  bool enable_threaded_texture_mailboxes;
  bool gl_shader_interm_output;
  bool emulate_shader_precision;
  uint32 max_active_webgl_contexts;
  bool enable_android_surface_control;
  bool enable_gpu_service_logging;
  bool enable_gpu_service_tracing;
  bool use_passthrough_cmd_decoder;
  bool disable_biplanar_gpu_memory_buffers_for_video_frames;
  array<gfx.mojom.BufferUsageAndFormat> texture_target_exception_list;

  bool disable_gpu_driver_bug_workarounds;
  bool ignore_gpu_blacklist;
  bool enable_oop_rasterization;
  bool disable_oop_rasterization;
  bool enable_oop_rasterization_ddl;
  bool enable_raster_to_sk_image;
  bool enable_passthrough_raster_decoder;
  bool watchdog_starts_backgrounded;
  bool enable_vulkan;
  bool enable_gpu_benchmarking_extension;
  bool enable_webgpu;
};
