summary refs log tree commit diff
path: root/devices/src/virtio/gpu/mod.rs
diff options
context:
space:
mode:
authorDavid Riley <davidriley@chromium.org>2019-03-20 16:32:31 -0700
committerchrome-bot <chrome-bot@chromium.org>2019-04-03 18:14:05 -0700
commitef495df7c1d9fc806f04b0d05c3ae734fe2fa158 (patch)
treee35f7b19e2f8a0ca86201ddc24017c8cdbb55da7 /devices/src/virtio/gpu/mod.rs
parent32773f6037a5fd4383cc504b200810712037091c (diff)
downloadcrosvm-ef495df7c1d9fc806f04b0d05c3ae734fe2fa158.tar
crosvm-ef495df7c1d9fc806f04b0d05c3ae734fe2fa158.tar.gz
crosvm-ef495df7c1d9fc806f04b0d05c3ae734fe2fa158.tar.bz2
crosvm-ef495df7c1d9fc806f04b0d05c3ae734fe2fa158.tar.lz
crosvm-ef495df7c1d9fc806f04b0d05c3ae734fe2fa158.tar.xz
crosvm-ef495df7c1d9fc806f04b0d05c3ae734fe2fa158.tar.zst
crosvm-ef495df7c1d9fc806f04b0d05c3ae734fe2fa158.zip
devices: gpu: Silently accept empty command buffers.
Prior to this change empty command buffers would generate errors and syslogs.

BUG=None
TEST=glbench nop_virtgpu_execbuffer test

Change-Id: I456fb342c945beebe121e22543bd93fe41cc5cbe
Reviewed-on: https://chromium-review.googlesource.com/1532796
Commit-Ready: David Riley <davidriley@chromium.org>
Tested-by: David Riley <davidriley@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Zach Reizner <zachr@chromium.org>
Diffstat (limited to 'devices/src/virtio/gpu/mod.rs')
-rw-r--r--devices/src/virtio/gpu/mod.rs26
1 files changed, 16 insertions, 10 deletions
diff --git a/devices/src/virtio/gpu/mod.rs b/devices/src/virtio/gpu/mod.rs
index c39515b..c56b360 100644
--- a/devices/src/virtio/gpu/mod.rs
+++ b/devices/src/virtio/gpu/mod.rs
@@ -266,17 +266,23 @@ impl Frontend {
                     offset,
                 )
             }
-            GpuCommand::CmdSubmit3d(info) if data.is_some() => {
-                let data = data.unwrap(); // guarded by this match arm
-                let cmd_size = info.size.to_native() as usize;
-                match data.get_slice(0, cmd_size as u64) {
-                    Ok(cmd_slice) => {
-                        let mut cmd_buf = vec![0; cmd_size];
-                        cmd_slice.copy_to(&mut cmd_buf[..]);
-                        self.backend
-                            .submit_command(info.hdr.ctx_id.to_native(), &mut cmd_buf[..])
+            GpuCommand::CmdSubmit3d(info) => {
+                if data.is_some() {
+                    let data = data.unwrap(); // guarded by this match arm
+                    let cmd_size = info.size.to_native() as usize;
+                    match data.get_slice(0, cmd_size as u64) {
+                        Ok(cmd_slice) => {
+                            let mut cmd_buf = vec![0; cmd_size];
+                            cmd_slice.copy_to(&mut cmd_buf[..]);
+                            self.backend
+                                .submit_command(info.hdr.ctx_id.to_native(), &mut cmd_buf[..])
+                        }
+                        Err(_) => GpuResponse::ErrInvalidParameter,
                     }
-                    Err(_) => GpuResponse::ErrInvalidParameter,
+                } else {
+                    // Silently accept empty command buffers to allow for
+                    // benchmarking.
+                    GpuResponse::OkNoData
                 }
             }
             _ => {