2017-10-06 22:26:46 +00:00
|
|
|
[package]
|
|
|
|
name = "devices"
|
|
|
|
version = "0.1.0"
|
|
|
|
authors = ["The Chromium OS Authors"]
|
2019-03-13 03:49:35 +00:00
|
|
|
edition = "2018"
|
2017-10-06 22:26:46 +00:00
|
|
|
|
2018-04-23 01:42:09 +00:00
|
|
|
[features]
|
2020-03-18 18:00:47 +00:00
|
|
|
audio = []
|
rutabaga_gfx: an electrifying possibility
rutabaga_gfx is a cross platform, Rust-based, Wayland and
Vulkan-centric Virtual Graphics Interface (VGI).
Apologies for the mega-change, but it was hard to do this piece
by piece.
The rationale for this change is:
1) Android graphics virtualization experts have been proposing
for a VGI for many months (years?). Their goal is to boot
Android anywhere, everywhere.
2) For the {wayland, cross-domain} context type prototype,
it's desirable to create a {wayland, camera} connection at the
appropriate time. Details can be found in the code, though the
RutabagaChannels have yet to be hooked up.
There's a high chance neither effort will work. As such,
rutabaga is just a prototype.
However, even (1) and (2) don't end up working, this
refactor/cleanup by itself makes a ton of sense.
Here's a summary of revelant changes:
* Removed auto-generated {p_defines, p_format, virgl_protocol}.
These files were added for tests when bringing up crosvm-gpu,
and AFAICT these tests are not run. There's actually now a
commit queue for virglrenderer changes and container boot tests
that provides excellent coverage.
* Removed command_buffer.rs. Used only for the previously
mentioned tests. It's quite nice, but couldn't determine the right
place to put it. Maybe data_model? But removed it in the interim.
* Removed {write_from_guest_memory, read_to_volatile}. The same
basic functionality has been moved into {transfer_write,
transfer_read} in Rutabaga.
* Removed VirtioResource, Virtio3DResource, Virtio2DResource,
and VirtioGfxStreamResource in favor of VirtioGpuResource and
RutabagaResource. This leads to less duplication and clearer
separation between external library functions and VMM functions.
* Moved display and hypervisor memory management functions to
virtio_gpu.rs. This is because external components do not interface
with this functionality, and there was a lot of duplication (for example
map/unmap blob).
* Added context management between gfxstream and virglrenderer.
* Added separate gfxstream and virglrenderer flags.
* Clearer naming.
* Added simple implementations for context init and multiple timelines.
These changes have no effect since all Google kernels don't pass the
revelant flags, but are useful for theoretical {wayland, cross-domain}
prototype.
* Unify RESOURCE_CREATE_3D and RESOURCE_CREATE_2D handling.
* Better error handling.
BUG=b:146066070, b:173630595, b:150239451
TEST=launch virtual machine with 2D mode
TEST=launch virtual machine with 3D mode
TEST=boot ARCVM
Change-Id: I240b0c134a3b562cbc65981837a41f6db7767c92
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2522452
Tested-by: Gurchetan Singh <gurchetansingh@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Commit-Queue: Gurchetan Singh <gurchetansingh@chromium.org>
Reviewed-by: Lingfeng Yang <lfy@google.com>
Reviewed-by: Zach Reizner <zachr@chromium.org>
2020-10-20 01:31:13 +00:00
|
|
|
gpu = ["gpu_buffer", "gpu_display", "rutabaga_gfx/virgl_renderer"]
|
2019-04-06 03:34:50 +00:00
|
|
|
tpm = ["protos/trunks", "tpm2"]
|
2019-12-06 13:24:40 +00:00
|
|
|
video-decoder = ["libvda"]
|
|
|
|
video-encoder = ["libvda"]
|
2019-04-06 21:30:04 +00:00
|
|
|
wl-dmabuf = []
|
2019-04-16 22:09:20 +00:00
|
|
|
x = ["gpu_display/x"]
|
rutabaga_gfx: an electrifying possibility
rutabaga_gfx is a cross platform, Rust-based, Wayland and
Vulkan-centric Virtual Graphics Interface (VGI).
Apologies for the mega-change, but it was hard to do this piece
by piece.
The rationale for this change is:
1) Android graphics virtualization experts have been proposing
for a VGI for many months (years?). Their goal is to boot
Android anywhere, everywhere.
2) For the {wayland, cross-domain} context type prototype,
it's desirable to create a {wayland, camera} connection at the
appropriate time. Details can be found in the code, though the
RutabagaChannels have yet to be hooked up.
There's a high chance neither effort will work. As such,
rutabaga is just a prototype.
However, even (1) and (2) don't end up working, this
refactor/cleanup by itself makes a ton of sense.
Here's a summary of revelant changes:
* Removed auto-generated {p_defines, p_format, virgl_protocol}.
These files were added for tests when bringing up crosvm-gpu,
and AFAICT these tests are not run. There's actually now a
commit queue for virglrenderer changes and container boot tests
that provides excellent coverage.
* Removed command_buffer.rs. Used only for the previously
mentioned tests. It's quite nice, but couldn't determine the right
place to put it. Maybe data_model? But removed it in the interim.
* Removed {write_from_guest_memory, read_to_volatile}. The same
basic functionality has been moved into {transfer_write,
transfer_read} in Rutabaga.
* Removed VirtioResource, Virtio3DResource, Virtio2DResource,
and VirtioGfxStreamResource in favor of VirtioGpuResource and
RutabagaResource. This leads to less duplication and clearer
separation between external library functions and VMM functions.
* Moved display and hypervisor memory management functions to
virtio_gpu.rs. This is because external components do not interface
with this functionality, and there was a lot of duplication (for example
map/unmap blob).
* Added context management between gfxstream and virglrenderer.
* Added separate gfxstream and virglrenderer flags.
* Clearer naming.
* Added simple implementations for context init and multiple timelines.
These changes have no effect since all Google kernels don't pass the
revelant flags, but are useful for theoretical {wayland, cross-domain}
prototype.
* Unify RESOURCE_CREATE_3D and RESOURCE_CREATE_2D handling.
* Better error handling.
BUG=b:146066070, b:173630595, b:150239451
TEST=launch virtual machine with 2D mode
TEST=launch virtual machine with 3D mode
TEST=boot ARCVM
Change-Id: I240b0c134a3b562cbc65981837a41f6db7767c92
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2522452
Tested-by: Gurchetan Singh <gurchetansingh@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Commit-Queue: Gurchetan Singh <gurchetansingh@chromium.org>
Reviewed-by: Lingfeng Yang <lfy@google.com>
Reviewed-by: Zach Reizner <zachr@chromium.org>
2020-10-20 01:31:13 +00:00
|
|
|
gfxstream = ["gpu", "rutabaga_gfx/gfxstream"]
|
2018-04-23 01:42:09 +00:00
|
|
|
|
2017-10-06 22:26:46 +00:00
|
|
|
[dependencies]
|
2020-04-27 08:32:13 +00:00
|
|
|
acpi_tables = {path = "../acpi_tables" }
|
2018-12-06 19:47:18 +00:00
|
|
|
audio_streams = "*"
|
2018-07-18 20:26:44 +00:00
|
|
|
bit_field = { path = "../bit_field" }
|
2020-04-26 06:33:46 +00:00
|
|
|
cros_async = { path = "../cros_async" }
|
2017-10-06 22:26:46 +00:00
|
|
|
data_model = { path = "../data_model" }
|
2019-07-02 23:54:05 +00:00
|
|
|
disk = { path = "../disk" }
|
2019-04-06 21:30:04 +00:00
|
|
|
enumn = { path = "../enumn" }
|
2020-10-08 20:13:32 +00:00
|
|
|
fuse = {path = "../fuse" }
|
2017-09-14 02:15:43 +00:00
|
|
|
gpu_buffer = { path = "../gpu_buffer", optional = true }
|
|
|
|
gpu_display = { path = "../gpu_display", optional = true }
|
rutabaga_gfx: an electrifying possibility
rutabaga_gfx is a cross platform, Rust-based, Wayland and
Vulkan-centric Virtual Graphics Interface (VGI).
Apologies for the mega-change, but it was hard to do this piece
by piece.
The rationale for this change is:
1) Android graphics virtualization experts have been proposing
for a VGI for many months (years?). Their goal is to boot
Android anywhere, everywhere.
2) For the {wayland, cross-domain} context type prototype,
it's desirable to create a {wayland, camera} connection at the
appropriate time. Details can be found in the code, though the
RutabagaChannels have yet to be hooked up.
There's a high chance neither effort will work. As such,
rutabaga is just a prototype.
However, even (1) and (2) don't end up working, this
refactor/cleanup by itself makes a ton of sense.
Here's a summary of revelant changes:
* Removed auto-generated {p_defines, p_format, virgl_protocol}.
These files were added for tests when bringing up crosvm-gpu,
and AFAICT these tests are not run. There's actually now a
commit queue for virglrenderer changes and container boot tests
that provides excellent coverage.
* Removed command_buffer.rs. Used only for the previously
mentioned tests. It's quite nice, but couldn't determine the right
place to put it. Maybe data_model? But removed it in the interim.
* Removed {write_from_guest_memory, read_to_volatile}. The same
basic functionality has been moved into {transfer_write,
transfer_read} in Rutabaga.
* Removed VirtioResource, Virtio3DResource, Virtio2DResource,
and VirtioGfxStreamResource in favor of VirtioGpuResource and
RutabagaResource. This leads to less duplication and clearer
separation between external library functions and VMM functions.
* Moved display and hypervisor memory management functions to
virtio_gpu.rs. This is because external components do not interface
with this functionality, and there was a lot of duplication (for example
map/unmap blob).
* Added context management between gfxstream and virglrenderer.
* Added separate gfxstream and virglrenderer flags.
* Clearer naming.
* Added simple implementations for context init and multiple timelines.
These changes have no effect since all Google kernels don't pass the
revelant flags, but are useful for theoretical {wayland, cross-domain}
prototype.
* Unify RESOURCE_CREATE_3D and RESOURCE_CREATE_2D handling.
* Better error handling.
BUG=b:146066070, b:173630595, b:150239451
TEST=launch virtual machine with 2D mode
TEST=launch virtual machine with 3D mode
TEST=boot ARCVM
Change-Id: I240b0c134a3b562cbc65981837a41f6db7767c92
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2522452
Tested-by: Gurchetan Singh <gurchetansingh@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Commit-Queue: Gurchetan Singh <gurchetansingh@chromium.org>
Reviewed-by: Lingfeng Yang <lfy@google.com>
Reviewed-by: Zach Reizner <zachr@chromium.org>
2020-10-20 01:31:13 +00:00
|
|
|
rutabaga_gfx = { path = "../rutabaga_gfx", optional = true }
|
2020-04-30 22:48:47 +00:00
|
|
|
hypervisor = { path = "../hypervisor" }
|
2019-04-23 09:14:43 +00:00
|
|
|
kvm_sys = { path = "../kvm_sys" }
|
2017-10-06 22:26:46 +00:00
|
|
|
libc = "*"
|
2020-02-04 04:30:01 +00:00
|
|
|
libcras = "*"
|
2019-12-06 13:24:40 +00:00
|
|
|
libvda = { version = "*", optional = true }
|
2019-12-17 18:07:11 +00:00
|
|
|
linux_input_sys = { path = "../linux_input_sys" }
|
2020-06-19 14:19:48 +00:00
|
|
|
minijail = "*"
|
2018-08-15 17:46:32 +00:00
|
|
|
msg_on_socket_derive = { path = "../msg_socket/msg_on_socket_derive" }
|
|
|
|
msg_socket = { path = "../msg_socket" }
|
2017-10-06 22:26:46 +00:00
|
|
|
net_sys = { path = "../net_sys" }
|
|
|
|
net_util = { path = "../net_util" }
|
2020-09-11 08:33:25 +00:00
|
|
|
p9 = "*"
|
2020-11-10 09:24:04 +00:00
|
|
|
power_monitor = { path = "../power_monitor" }
|
2019-04-05 18:56:44 +00:00
|
|
|
protos = { path = "../protos", optional = true }
|
2020-06-23 08:12:03 +00:00
|
|
|
rand_ish = { path = "../rand_ish" }
|
2019-03-11 19:36:30 +00:00
|
|
|
remain = "*"
|
2018-06-07 22:42:41 +00:00
|
|
|
resources = { path = "../resources" }
|
2018-12-04 07:37:46 +00:00
|
|
|
sync = { path = "../sync" }
|
2020-08-03 03:09:41 +00:00
|
|
|
base = { path = "../base" }
|
2019-08-16 07:15:13 +00:00
|
|
|
syscall_defines = { path = "../syscall_defines" }
|
2018-12-20 19:49:46 +00:00
|
|
|
tpm2 = { path = "../tpm2", optional = true }
|
2019-03-08 08:17:58 +00:00
|
|
|
usb_util = { path = "../usb_util" }
|
2019-04-23 09:14:43 +00:00
|
|
|
vfio_sys = { path = "../vfio_sys" }
|
2017-10-06 22:26:46 +00:00
|
|
|
vhost = { path = "../vhost" }
|
|
|
|
virtio_sys = { path = "../virtio_sys" }
|
|
|
|
vm_control = { path = "../vm_control" }
|
2020-07-21 03:21:11 +00:00
|
|
|
vm_memory = { path = "../vm_memory" }
|
2019-04-18 04:09:41 +00:00
|
|
|
|
|
|
|
[dev-dependencies]
|
|
|
|
tempfile = { path = "../tempfile" }
|