diff options
author | David Riley <davidriley@chromium.org> | 2019-03-20 16:32:31 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2019-04-03 18:14:05 -0700 |
commit | ef495df7c1d9fc806f04b0d05c3ae734fe2fa158 (patch) | |
tree | e35f7b19e2f8a0ca86201ddc24017c8cdbb55da7 /devices/src/virtio/gpu/mod.rs | |
parent | 32773f6037a5fd4383cc504b200810712037091c (diff) | |
download | crosvm-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.rs | 26 |
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 } } _ => { |