• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 vmm_vhost::message::VhostUserProtocolFeatures;
6 
7 use crate::virtio::device_constants::video::all_backend_virtio_features;
8 use crate::virtio::device_constants::video::VideoDeviceType;
9 use crate::virtio::device_constants::video::QUEUE_SIZES;
10 use crate::virtio::vhost::user::vmm::Connection;
11 use crate::virtio::vhost::user::vmm::QueueSizes;
12 use crate::virtio::vhost::user::vmm::Result;
13 use crate::virtio::vhost::user::vmm::VhostUserVirtioDevice;
14 use crate::virtio::DeviceType;
15 
16 impl VhostUserVirtioDevice {
new_video( base_features: u64, connection: Connection, device_type: VideoDeviceType, ) -> Result<VhostUserVirtioDevice>17     pub fn new_video(
18         base_features: u64,
19         connection: Connection,
20         device_type: VideoDeviceType,
21     ) -> Result<VhostUserVirtioDevice> {
22         let queue_sizes = QueueSizes::Fixed(QUEUE_SIZES.to_vec());
23         let max_queues = QUEUE_SIZES.len();
24 
25         let allow_features = all_backend_virtio_features();
26 
27         let allow_protocol_features = VhostUserProtocolFeatures::CONFIG;
28 
29         VhostUserVirtioDevice::new(
30             connection,
31             match device_type {
32                 VideoDeviceType::Decoder => DeviceType::VideoDec,
33                 VideoDeviceType::Encoder => DeviceType::VideoEnc,
34             },
35             queue_sizes,
36             max_queues,
37             allow_features,
38             allow_protocol_features,
39             base_features,
40             None,
41             false,
42         )
43     }
44 }
45