diff --git a/devices/src/virtio/gpu/mod.rs b/devices/src/virtio/gpu/mod.rs index 25e6c6028e..989c76c1db 100644 --- a/devices/src/virtio/gpu/mod.rs +++ b/devices/src/virtio/gpu/mod.rs @@ -81,6 +81,7 @@ use super::Writer; pub enum GpuMode { #[serde(rename = "2d", alias = "2D")] Mode2D, + #[cfg(feature = "virgl_renderer")] #[serde(rename = "virglrenderer", alias = "3d", alias = "3D")] ModeVirglRenderer, #[cfg(feature = "gfxstream")] @@ -88,6 +89,22 @@ pub enum GpuMode { ModeGfxstream, } +impl Default for GpuMode { + fn default() -> Self { + #[cfg(all(windows, feature = "gfxstream"))] + return GpuMode::ModeGfxstream; + + #[cfg(all(unix, feature = "virgl_renderer"))] + return GpuMode::ModeVirglRenderer; + + #[cfg(not(any( + all(windows, feature = "gfxstream"), + all(unix, feature = "virgl_renderer"), + )))] + return GpuMode::Mode2D; + } +} + #[derive(Copy, Clone, Debug)] pub struct VirtioScanoutBlobData { pub width: u32, @@ -1108,6 +1125,7 @@ impl Gpu { let rutabaga_channels_opt = Some(rutabaga_channels); let component = match gpu_parameters.mode { GpuMode::Mode2D => RutabagaComponentType::Rutabaga2D, + #[cfg(feature = "virgl_renderer")] GpuMode::ModeVirglRenderer => RutabagaComponentType::VirglRenderer, #[cfg(feature = "gfxstream")] GpuMode::ModeGfxstream => RutabagaComponentType::Gfxstream, diff --git a/devices/src/virtio/gpu/parameters.rs b/devices/src/virtio/gpu/parameters.rs index 227cfeeb49..f4bc562c4f 100644 --- a/devices/src/virtio/gpu/parameters.rs +++ b/devices/src/virtio/gpu/parameters.rs @@ -87,11 +87,7 @@ impl Default for GpuParameters { #[cfg(feature = "gfxstream")] gfxstream_use_guest_angle: None, use_vulkan: None, - mode: if cfg!(feature = "virgl_renderer") { - GpuMode::ModeVirglRenderer - } else { - GpuMode::Mode2D - }, + mode: Default::default(), #[cfg(feature = "gfxstream")] gfxstream_support_gles31: true, wsi: None, diff --git a/src/crosvm/sys/unix/config.rs b/src/crosvm/sys/unix/config.rs index 9d40a50678..9077c1338a 100644 --- a/src/crosvm/sys/unix/config.rs +++ b/src/crosvm/sys/unix/config.rs @@ -437,14 +437,17 @@ mod tests { let gpu_params: GpuParameters = from_key_values("backend=2D").unwrap(); assert_eq!(gpu_params.mode, GpuMode::Mode2D); - let gpu_params: GpuParameters = from_key_values("backend=3d").unwrap(); - assert_eq!(gpu_params.mode, GpuMode::ModeVirglRenderer); + #[cfg(feature = "virgl_renderer")] + { + let gpu_params: GpuParameters = from_key_values("backend=3d").unwrap(); + assert_eq!(gpu_params.mode, GpuMode::ModeVirglRenderer); - let gpu_params: GpuParameters = from_key_values("backend=3D").unwrap(); - assert_eq!(gpu_params.mode, GpuMode::ModeVirglRenderer); + let gpu_params: GpuParameters = from_key_values("backend=3D").unwrap(); + assert_eq!(gpu_params.mode, GpuMode::ModeVirglRenderer); - let gpu_params: GpuParameters = from_key_values("backend=virglrenderer").unwrap(); - assert_eq!(gpu_params.mode, GpuMode::ModeVirglRenderer); + let gpu_params: GpuParameters = from_key_values("backend=virglrenderer").unwrap(); + assert_eq!(gpu_params.mode, GpuMode::ModeVirglRenderer); + } #[cfg(feature = "gfxstream")] {