1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63
   64
   65
   66
   67
   68
   69
   70
   71
   72
   73
   74
   75
   76
   77
   78
   79
   80
   81
   82
   83
   84
   85
   86
   87
   88
   89
   90
   91
   92
   93
   94
   95
   96
   97
   98
   99
  100
  101
  102
  103
  104
  105
  106
  107
  108
  109
  110
  111
  112
  113
  114
  115
  116
  117
  118
  119
  120
  121

gpu / ipc / common / gpu_preferences.mojom [blame]

// Copyright 2016 The Chromium Authors
// 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::WebGPUAdapterName.
enum WebGPUAdapterName {
  kDefault = 0,
  kD3D11 = 1,
  kOpenGLES = 2,
  kSwiftShader = 3,
};

// Corresponds to gpu::WebGPUPowerPreference.
enum WebGPUPowerPreference {
  kNone = 0,
  kDefaultLowPower = 1,
  kDefaultHighPerformance = 2,
  kForceLowPower = 3,
  kForceHighPerformance = 4,
};

// Corresponds to gpu::GrContextType.
enum GrContextType {
  kNone,
  kGL,  // Ganesh
  kVulkan,  // Ganesh
  kGraphiteDawn,
  kGraphiteMetal,
};

// 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 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 ignore_gpu_blocklist;
  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_gpu_benchmarking_extension;
  bool enable_webgpu;
  bool enable_unsafe_webgpu;
  bool enable_webgpu_developer_features;
  bool enable_webgpu_experimental_features;
  WebGPUAdapterName use_webgpu_adapter;
  WebGPUPowerPreference use_webgpu_power_preference;
  bool force_webgpu_compat;
  DawnBackendValidationLevel enable_dawn_backend_validation;
  array<string> enabled_dawn_features_list;
  array<string> disabled_dawn_features_list;
  bool enable_perf_data_collection;

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

  bool enable_native_gpu_memory_buffers;

  bool force_separate_egl_display_for_webgl_testing;
};