mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2025-02-09 03:57:24 +00:00
devices: set default GPU mode for Windows.
Only gfxstream is being actively used on Windows for now, so we either use it or fall back to 2D rendering by default. This CL also puts ModeVirglRenderer under the "virglrenderer" feature flag, so that the arg parser would reject it when specified by mistake. BUG=b:254284360 TEST=presubmit Change-Id: Ifa39e4a528acf1bd45a85e7327b3edded3a4e7d6 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3971026 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org> Reviewed-by: Kaiyi Li <kaiyili@google.com> Commit-Queue: Pujun Lun <lunpujun@google.com>
This commit is contained in:
parent
b896b869e4
commit
3434b3283e
3 changed files with 28 additions and 11 deletions
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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")]
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue