xref: /aosp_15_r20/external/crosvm/vm_control/src/sys/linux/gpu.rs (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
1 // Copyright 2022 The ChromiumOS Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 use serde::Deserialize;
6 use serde::Serialize;
7 use serde_keyvalue::FromKeyValues;
8 
9 use crate::gpu::DisplayModeTrait;
10 
11 #[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize, FromKeyValues)]
12 #[serde(rename_all = "snake_case")]
13 pub enum UnixMouseMode {
14     /// Sends multi-touch events to the guest.
15     Touchscreen,
16 }
17 
18 #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
19 #[serde(rename_all = "snake_case")]
20 pub enum UnixDisplayMode {
21     Windowed(u32, u32),
22 }
23 
24 impl DisplayModeTrait for UnixDisplayMode {
get_window_size(&self) -> (u32, u32)25     fn get_window_size(&self) -> (u32, u32) {
26         match self {
27             Self::Windowed(width, height) => (*width, *height),
28         }
29     }
30 
get_virtual_display_size(&self) -> (u32, u32)31     fn get_virtual_display_size(&self) -> (u32, u32) {
32         self.get_window_size()
33     }
34 
get_virtual_display_size_4k_uhd(&self, _is_4k_uhd_enabled: bool) -> (u32, u32)35     fn get_virtual_display_size_4k_uhd(&self, _is_4k_uhd_enabled: bool) -> (u32, u32) {
36         self.get_virtual_display_size()
37     }
38 }
39