| // 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_info.h |
| module gpu.mojom; |
| |
| import "mojo/public/mojom/base/time.mojom"; |
| import "ui/gfx/geometry/mojom/geometry.mojom"; |
| import "ui/gl/mojom/gl_implementation.mojom"; |
| import "ui/gl/mojom/gpu_preference.mojom"; |
| |
| [EnableIf=is_win] |
| import "gpu/ipc/common/luid.mojom"; |
| |
| [EnableIf=supports_vulkan] |
| import "gpu/ipc/common/vulkan_info.mojom"; |
| |
| // gpu::GPUInfo::GPUDevice |
| struct GpuDevice { |
| uint32 vendor_id; |
| uint32 device_id; |
| |
| [EnableIf=is_win] |
| uint32 sub_sys_id; |
| |
| [EnableIf=is_chromeos|is_win] |
| uint32 revision; |
| bool active; |
| string vendor_string; |
| string device_string; |
| string driver_vendor; |
| string driver_version; |
| |
| [EnableIf=is_win] |
| Luid luid; |
| gl.mojom.GpuPreference gpu_preference; |
| }; |
| |
| // gpu::SkiaBackendType |
| enum SkiaBackendType { |
| kUnknown, |
| kNone, |
| kGaneshGL, |
| kGaneshVulkan, |
| kGraphiteDawnVulkan, |
| kGraphiteDawnMetal, |
| kGraphiteDawnD3D11, |
| kGraphiteDawnD3D12, |
| }; |
| |
| // gpu::VideoCodecProfile |
| enum VideoCodecProfile { |
| VIDEO_CODEC_PROFILE_UNKNOWN = -1, |
| H264PROFILE_BASELINE = 0, |
| H264PROFILE_MAIN, |
| H264PROFILE_EXTENDED, |
| H264PROFILE_HIGH, |
| H264PROFILE_HIGH10PROFILE, |
| H264PROFILE_HIGH422PROFILE, |
| H264PROFILE_HIGH444PREDICTIVEPROFILE, |
| H264PROFILE_SCALABLEBASELINE, |
| H264PROFILE_SCALABLEHIGH, |
| H264PROFILE_STEREOHIGH, |
| H264PROFILE_MULTIVIEWHIGH, |
| VP8PROFILE_ANY, |
| VP9PROFILE_PROFILE0, |
| VP9PROFILE_PROFILE1, |
| VP9PROFILE_PROFILE2, |
| VP9PROFILE_PROFILE3, |
| HEVCPROFILE_MAIN, |
| HEVCPROFILE_MAIN10, |
| HEVCPROFILE_MAIN_STILL_PICTURE, |
| DOLBYVISION_PROFILE0, |
| // Deprecated: DOLBYVISION_PROFILE4 = 20, |
| DOLBYVISION_PROFILE5 = 21, |
| DOLBYVISION_PROFILE7, |
| THEORAPROFILE_ANY, |
| AV1PROFILE_PROFILE_MAIN, |
| AV1PROFILE_PROFILE_HIGH, |
| AV1PROFILE_PROFILE_PRO, |
| DOLBYVISION_PROFILE8, |
| DOLBYVISION_PROFILE9, |
| HEVCPROFILE_REXT, |
| HEVCPROFILE_HIGH_THROUGHPUT, |
| HEVCPROFILE_MULTIVIEW_MAIN, |
| HEVCPROFILE_SCALABLE_MAIN, |
| HEVCPROFILE_3D_MAIN, |
| HEVCPROFILE_SCREEN_EXTENDED, |
| HEVCPROFILE_SCALABLE_REXT, |
| HEVCPROFILE_HIGH_THROUGHPUT_SCREEN_EXTENDED, |
| VVCPROFILE_MAIN10, |
| VVCPROFILE_MAIN12, |
| VVCPROFILE_MAIN12_INTRA, |
| VVCPROIFLE_MULTILAYER_MAIN10, |
| VVCPROFILE_MAIN10_444, |
| VVCPROFILE_MAIN12_444, |
| VVCPROFILE_MAIN16_444, |
| VVCPROFILE_MAIN12_444_INTRA, |
| VVCPROFILE_MAIN16_444_INTRA, |
| VVCPROFILE_MULTILAYER_MAIN10_444, |
| VVCPROFILE_MAIN10_STILL_PICTURE, |
| VVCPROFILE_MAIN12_STILL_PICTURE, |
| VVCPROFILE_MAIN10_444_STILL_PICTURE, |
| VVCPROFILE_MAIN12_444_STILL_PICTURE, |
| VVCPROFILE_MAIN16_444_STILL_PICTURE, |
| }; |
| |
| // gpu::VideoDecodeAcceleratorSupportedProfile |
| struct VideoDecodeAcceleratorSupportedProfile { |
| VideoCodecProfile profile; |
| gfx.mojom.Size max_resolution; |
| gfx.mojom.Size min_resolution; |
| bool encrypted_only; |
| }; |
| |
| // gpu::VideoDecodeAcceleratorCapabilities |
| struct VideoDecodeAcceleratorCapabilities { |
| array<VideoDecodeAcceleratorSupportedProfile> supported_profiles; |
| uint32 flags; |
| }; |
| |
| // gpu::VideoEncodeAcceleratorSupportedProfile |
| struct VideoEncodeAcceleratorSupportedProfile { |
| VideoCodecProfile profile; |
| gfx.mojom.Size min_resolution; |
| gfx.mojom.Size max_resolution; |
| uint32 max_framerate_numerator; |
| uint32 max_framerate_denominator; |
| }; |
| |
| // gpu::ImageDecodeAcceleratorType |
| enum ImageDecodeAcceleratorType { |
| kJpeg, |
| kWebP, |
| kUnknown, |
| }; |
| |
| // gpu::ImageDecodeAcceleratorSubsampling |
| enum ImageDecodeAcceleratorSubsampling { |
| k420, |
| k422, |
| k444, |
| }; |
| |
| // gpu::ImageDecodeAcceleratorSupportedProfile |
| struct ImageDecodeAcceleratorSupportedProfile { |
| ImageDecodeAcceleratorType image_type; |
| gfx.mojom.Size min_encoded_dimensions; |
| gfx.mojom.Size max_encoded_dimensions; |
| array<ImageDecodeAcceleratorSubsampling> subsamplings; |
| }; |
| |
| // gpu::OverlaySupport |
| [EnableIf=is_win] |
| enum OverlaySupport { |
| NONE, |
| DIRECT, |
| SCALING, |
| SOFTWARE, |
| }; |
| |
| // gpu::OverlayInfo |
| [EnableIf=is_win] |
| struct OverlayInfo { |
| bool direct_composition; |
| bool supports_overlays; |
| OverlaySupport yuy2_overlay_support; |
| OverlaySupport nv12_overlay_support; |
| OverlaySupport bgra8_overlay_support; |
| OverlaySupport rgb10a2_overlay_support; |
| OverlaySupport p010_overlay_support; |
| }; |
| |
| // Corresponds to |gpu::GPUInfo| in gpu/config/gpu_info.h |
| struct GpuInfo { |
| mojo_base.mojom.TimeDelta initialization_time; |
| bool optimus; |
| bool amd_switchable; |
| GpuDevice gpu; |
| array<GpuDevice> secondary_gpus; |
| array<GpuDevice> npus; |
| string pixel_shader_version; |
| string vertex_shader_version; |
| string max_msaa_samples; |
| string machine_model_name; |
| string machine_model_version; |
| string display_type; |
| SkiaBackendType skia_backend_type; |
| string gl_version; |
| string gl_vendor; |
| string gl_renderer; |
| string gl_extensions; |
| string gl_ws_vendor; |
| string gl_ws_version; |
| string gl_ws_extensions; |
| uint32 gl_reset_notification_strategy; |
| gl.mojom.GLImplementationParts gl_implementation_parts; |
| string direct_rendering_version; |
| bool sandboxed; |
| bool in_process_gpu; |
| bool passthrough_cmd_decoder; |
| bool can_support_threaded_texture_mailbox; |
| |
| [EnableIf=is_win] |
| uint32 directml_feature_level; |
| |
| [EnableIf=is_win] |
| uint32 d3d12_feature_level; |
| |
| [EnableIf=is_win] |
| uint32 vulkan_version; |
| |
| [EnableIf=is_win] |
| OverlayInfo overlay_info; |
| |
| [EnableIf=is_win] |
| bool shared_image_d3d; |
| |
| array<VideoDecodeAcceleratorSupportedProfile> |
| video_decode_accelerator_supported_profiles; |
| array<VideoEncodeAcceleratorSupportedProfile> |
| video_encode_accelerator_supported_profiles; |
| bool jpeg_decode_accelerator_supported; |
| |
| array<ImageDecodeAcceleratorSupportedProfile> |
| image_decode_accelerator_supported_profiles; |
| |
| bool subpixel_font_rendering; |
| uint32 visibility_callback_call_count; |
| |
| [EnableIf=supports_vulkan] |
| bool hardware_supports_vulkan; |
| |
| [EnableIf=supports_vulkan] |
| VulkanInfo? vulkan_info; |
| }; |