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

[EnableIf=use_ozone]
import "mojo/public/mojom/base/message_pump_type.mojom";

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

// Corresponds to gpu::VulkanImplementationName.
enum VulkanImplementationName {
  kNone = 0,
  kNative = 1,
  kForcedNative = 2,
  kSwiftshader = 3,
  kLast = kSwiftshader,
};

// Corresponds to gpu::GrContextType.
enum GrContextType {
  kGL = 0,
  kVulkan = 1,
  kMetal = 2,
  kDawn = 3,
  kLast = kDawn,
};

// Corresponds to gpu::DawnBackendValidationLevel
enum DawnBackendValidationLevel {
  kDisabled = 0,
  kPartial = 1,
  kFull = 2,
};

// 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.
  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_bytes;
  uint32 force_gpu_mem_discardable_limit_bytes;
  uint32 force_max_texture_size;
  uint32 gpu_program_cache_size;
  bool disable_gpu_shader_disk_cache;
  bool enable_threaded_texture_mailboxes;
  bool gl_shader_interm_output;
  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 ignore_gpu_blocklist;
  bool enable_oop_rasterization;
  bool disable_oop_rasterization;
  bool enable_oop_rasterization_ddl;
  bool watchdog_starts_backgrounded;
  GrContextType gr_context_type;
  VulkanImplementationName use_vulkan;
  bool enable_vulkan_protected_memory;
  bool disable_vulkan_surface;
  bool disable_vulkan_fallback_to_gl_for_testing;
  uint32 vulkan_heap_memory_limit;
  uint32 vulkan_sync_cpu_memory_limit;
  bool enable_metal;
  bool enable_gpu_benchmarking_extension;
  bool enable_webgpu;
  bool enable_webgpu_spirv;
  bool force_webgpu_compat;
  DawnBackendValidationLevel enable_dawn_backend_validation;
  array<string> enabled_dawn_features_list;
  array<string> disabled_dawn_features_list;
  bool enable_gpu_blocked_time_metric;
  bool enable_perf_data_collection;

  [EnableIf=use_ozone]
  mojo_base.mojom.MessagePumpType message_pump_type;

  bool enable_native_gpu_memory_buffers;

  [EnableIf=is_chromeos]
  bool enable_chromeos_direct_video_decoder;
};
