From 686d37a82ba3ce5595340c88f38de0441fdd83ac Mon Sep 17 00:00:00 2001 From: Gurchetan Singh Date: Mon, 20 Sep 2021 13:23:25 -0700 Subject: [PATCH] rutabaga_gfx: RutabagaFenceData --> RutabagaFence It's a little bit less wordy. BUG=b:150239451 TEST=none Change-Id: Ia25ac6b3db77ce8e9b074273967294909fb56e87 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3173067 Reviewed-by: Dennis Kempin Reviewed-by: Daniel Verkamp Tested-by: kokoro Commit-Queue: Gurchetan Singh --- devices/src/virtio/gpu/mod.rs | 4 +-- devices/src/virtio/gpu/virtio_gpu.rs | 12 ++++---- rutabaga_gfx/src/cross_domain/cross_domain.rs | 12 ++++---- rutabaga_gfx/src/gfxstream.rs | 8 ++---- rutabaga_gfx/src/renderer_utils.rs | 4 +-- rutabaga_gfx/src/rutabaga_2d.rs | 6 ++-- rutabaga_gfx/src/rutabaga_core.rs | 28 +++++++++---------- rutabaga_gfx/src/rutabaga_utils.rs | 10 +++---- rutabaga_gfx/src/virgl_renderer.rs | 5 ++-- 9 files changed, 43 insertions(+), 46 deletions(-) diff --git a/devices/src/virtio/gpu/mod.rs b/devices/src/virtio/gpu/mod.rs index 003fe8ec3d..1b45371564 100644 --- a/devices/src/virtio/gpu/mod.rs +++ b/devices/src/virtio/gpu/mod.rs @@ -721,13 +721,13 @@ impl Frontend { // The only possible current value for hdr info. info = ctrl_hdr.info.to_native(); - let fence_data = RutabagaFenceData { + let fence = RutabagaFence { flags, fence_id, ctx_id, ring_idx: info, }; - gpu_response = match self.virtio_gpu.create_fence(fence_data) { + gpu_response = match self.virtio_gpu.create_fence(fence) { Ok(_) => gpu_response, Err(fence_resp) => { warn!("create_fence {} -> {:?}", fence_id, fence_resp); diff --git a/devices/src/virtio/gpu/virtio_gpu.rs b/devices/src/virtio/gpu/virtio_gpu.rs index dcf4b49fa9..6a9d442090 100644 --- a/devices/src/virtio/gpu/virtio_gpu.rs +++ b/devices/src/virtio/gpu/virtio_gpu.rs @@ -17,7 +17,7 @@ use data_model::VolatileSlice; use gpu_display::*; use rutabaga_gfx::{ - ResourceCreate3D, ResourceCreateBlob, Rutabaga, RutabagaBuilder, RutabagaFenceData, + ResourceCreate3D, ResourceCreateBlob, Rutabaga, RutabagaBuilder, RutabagaFence, RutabagaFenceHandler, RutabagaIovec, Transfer3D, }; @@ -551,15 +551,15 @@ impl VirtioGpu { self.rutabaga.force_ctx_0() } - /// Creates a fence with the RutabagaFenceData that can be used to determine when the previous + /// Creates a fence with the RutabagaFence that can be used to determine when the previous /// command completed. - pub fn create_fence(&mut self, rutabaga_fence_data: RutabagaFenceData) -> VirtioGpuResult { - self.rutabaga.create_fence(rutabaga_fence_data)?; + pub fn create_fence(&mut self, rutabaga_fence: RutabagaFence) -> VirtioGpuResult { + self.rutabaga.create_fence(rutabaga_fence)?; Ok(OkNoData) } - /// Returns an array of RutabagaFenceData, describing completed fences. - pub fn fence_poll(&mut self) -> Vec { + /// Returns an array of RutabagaFence, describing completed fences. + pub fn fence_poll(&mut self) -> Vec { self.rutabaga.poll() } diff --git a/rutabaga_gfx/src/cross_domain/cross_domain.rs b/rutabaga_gfx/src/cross_domain/cross_domain.rs index 6f9bd27e35..002724a766 100644 --- a/rutabaga_gfx/src/cross_domain/cross_domain.rs +++ b/rutabaga_gfx/src/cross_domain/cross_domain.rs @@ -52,7 +52,7 @@ enum CrossDomainItem { } enum CrossDomainJob { - HandleFence(RutabagaFenceData), + HandleFence(RutabagaFence), AddReadPipe(u32), } @@ -318,7 +318,7 @@ impl CrossDomainWorker { // boolean value indicating whether the worker thread should be stopped is returned. fn handle_fence( &mut self, - fence: RutabagaFenceData, + fence: RutabagaFence, resample_evt: &Event, receive_buf: &mut Vec, ) -> RutabagaResult { @@ -903,12 +903,12 @@ impl RutabagaContext for CrossDomainContext { self.context_resources.lock().remove(&resource.resource_id); } - fn context_create_fence(&mut self, fence_data: RutabagaFenceData) -> RutabagaResult<()> { - match fence_data.ring_idx { - CROSS_DOMAIN_QUERY_RING => self.fence_handler.call(fence_data), + fn context_create_fence(&mut self, fence: RutabagaFence) -> RutabagaResult<()> { + match fence.ring_idx { + CROSS_DOMAIN_QUERY_RING => self.fence_handler.call(fence), CROSS_DOMAIN_CHANNEL_RING => { if let Some(state) = &self.state { - state.add_job(CrossDomainJob::HandleFence(fence_data)); + state.add_job(CrossDomainJob::HandleFence(fence)); } } _ => return Err(RutabagaError::SpecViolation), diff --git a/rutabaga_gfx/src/gfxstream.rs b/rutabaga_gfx/src/gfxstream.rs index 290a23d824..9643a67c9b 100644 --- a/rutabaga_gfx/src/gfxstream.rs +++ b/rutabaga_gfx/src/gfxstream.rs @@ -244,13 +244,11 @@ impl RutabagaComponent for Gfxstream { Vec::new() } - fn create_fence(&mut self, fence_data: RutabagaFenceData) -> RutabagaResult<()> { - let ret = unsafe { - pipe_virgl_renderer_create_fence(fence_data.fence_id as i32, fence_data.ctx_id) - }; + fn create_fence(&mut self, fence: RutabagaFence) -> RutabagaResult<()> { + let ret = unsafe { pipe_virgl_renderer_create_fence(fence.fence_id as i32, fence.ctx_id) }; // This can be moved to the cookie once gfxstream directly calls the // write_fence callback in pipe_virgl_renderer_create_fence - self.fence_handler.call(fence_data); + self.fence_handler.call(fence); ret_to_res(ret) } diff --git a/rutabaga_gfx/src/renderer_utils.rs b/rutabaga_gfx/src/renderer_utils.rs index f8cb7c2068..70210234b0 100644 --- a/rutabaga_gfx/src/renderer_utils.rs +++ b/rutabaga_gfx/src/renderer_utils.rs @@ -10,7 +10,7 @@ use std::rc::Rc; use crate::generated::virgl_renderer_bindings::__va_list_tag; use crate::rutabaga_utils::{ - RutabagaError, RutabagaFenceData, RutabagaFenceHandler, RutabagaResult, RUTABAGA_FLAG_FENCE, + RutabagaError, RutabagaFence, RutabagaFenceHandler, RutabagaResult, RUTABAGA_FLAG_FENCE, }; #[repr(C)] @@ -60,7 +60,7 @@ impl FenceState { if latest_fence > self.latest_fence { self.latest_fence = latest_fence; if let Some(handler) = &self.handler { - handler.call(RutabagaFenceData { + handler.call(RutabagaFence { flags: RUTABAGA_FLAG_FENCE, fence_id: latest_fence as u64, ctx_id: 0, diff --git a/rutabaga_gfx/src/rutabaga_2d.rs b/rutabaga_gfx/src/rutabaga_2d.rs index 041490fbd5..acfbc82e5a 100644 --- a/rutabaga_gfx/src/rutabaga_2d.rs +++ b/rutabaga_gfx/src/rutabaga_2d.rs @@ -143,9 +143,9 @@ impl Rutabaga2D { } impl RutabagaComponent for Rutabaga2D { - fn create_fence(&mut self, fence_data: RutabagaFenceData) -> RutabagaResult<()> { - self.latest_created_fence_id = fence_data.fence_id as u32; - self.fence_handler.call(fence_data); + fn create_fence(&mut self, fence: RutabagaFence) -> RutabagaResult<()> { + self.latest_created_fence_id = fence.fence_id as u32; + self.fence_handler.call(fence); Ok(()) } diff --git a/rutabaga_gfx/src/rutabaga_core.rs b/rutabaga_gfx/src/rutabaga_core.rs index 152735875a..46175f0c70 100644 --- a/rutabaga_gfx/src/rutabaga_core.rs +++ b/rutabaga_gfx/src/rutabaga_core.rs @@ -67,7 +67,7 @@ pub trait RutabagaComponent { /// Implementations must create a fence that represents the completion of prior work. This is /// required for synchronization with the guest kernel. - fn create_fence(&mut self, _fence_data: RutabagaFenceData) -> RutabagaResult<()> { + fn create_fence(&mut self, _fence: RutabagaFence) -> RutabagaResult<()> { Err(RutabagaError::Unsupported) } @@ -181,15 +181,15 @@ pub trait RutabagaContext { /// Implementations must stop using `resource` in this context's command stream. fn detach(&mut self, _resource: &RutabagaResource); - /// Implementations must create a fence on specified `ring_idx` in `fence_data`. This + /// Implementations must create a fence on specified `ring_idx` in `fence`. This /// allows for multiple syncrhonizations timelines per RutabagaContext. - fn context_create_fence(&mut self, _fence_data: RutabagaFenceData) -> RutabagaResult<()> { + fn context_create_fence(&mut self, _fence: RutabagaFence) -> RutabagaResult<()> { Err(RutabagaError::Unsupported) } /// Implementations must return an array of fences that have completed. This will be used by /// the cross-domain context for asynchronous Tx/Rx. - fn context_poll(&mut self) -> Option> { + fn context_poll(&mut self) -> Option> { None } } @@ -275,33 +275,33 @@ impl Rutabaga { } } - /// Creates a fence with the given `fence_data`. + /// Creates a fence with the given `fence`. /// If the flags include RUTABAGA_FLAG_INFO_RING_IDX, then the fence is created on a /// specific timeline on the specific context. - pub fn create_fence(&mut self, fence_data: RutabagaFenceData) -> RutabagaResult<()> { - if fence_data.flags & RUTABAGA_FLAG_INFO_RING_IDX != 0 { + pub fn create_fence(&mut self, fence: RutabagaFence) -> RutabagaResult<()> { + if fence.flags & RUTABAGA_FLAG_INFO_RING_IDX != 0 { let ctx = self .contexts - .get_mut(&fence_data.ctx_id) + .get_mut(&fence.ctx_id) .ok_or(RutabagaError::InvalidContextId)?; - ctx.context_create_fence(fence_data)?; + ctx.context_create_fence(fence)?; } else { let component = self .components .get_mut(&self.default_component) .ok_or(RutabagaError::InvalidComponent)?; - component.create_fence(fence_data)?; + component.create_fence(fence)?; } Ok(()) } - /// Polls all rutabaga components and contexts, and returns a vector of RutabagaFenceData + /// Polls all rutabaga components and contexts, and returns a vector of RutabagaFence /// describing which fences have completed. - pub fn poll(&mut self) -> Vec { - let mut completed_fences: Vec = Vec::new(); + pub fn poll(&mut self) -> Vec { + let mut completed_fences: Vec = Vec::new(); // Poll the default component -- this the global timeline which does not take into account // `ctx_id` or `ring_idx`. This path exists for OpenGL legacy reasons and 2D mode. let component = self @@ -311,7 +311,7 @@ impl Rutabaga { .unwrap(); let global_fence_id = component.poll(); - completed_fences.push(RutabagaFenceData { + completed_fences.push(RutabagaFence { flags: RUTABAGA_FLAG_FENCE, fence_id: global_fence_id as u64, ctx_id: 0, diff --git a/rutabaga_gfx/src/rutabaga_utils.rs b/rutabaga_gfx/src/rutabaga_utils.rs index a204f04e9e..c302aa5b61 100644 --- a/rutabaga_gfx/src/rutabaga_utils.rs +++ b/rutabaga_gfx/src/rutabaga_utils.rs @@ -97,7 +97,7 @@ pub const RUTABAGA_FLAG_INFO_RING_IDX: u32 = 1 << 1; /// Convenience struct for Rutabaga fences #[derive(Copy, Clone)] -pub struct RutabagaFenceData { +pub struct RutabagaFence { pub flags: u32, pub fence_id: u64, pub ctx_id: u32, @@ -521,7 +521,7 @@ impl RutabagaHandle { /// Trait for fence completion handlers pub trait RutabagaFenceCallback: Send { - fn call(&self, data: RutabagaFenceData); + fn call(&self, data: RutabagaFence); fn clone_box(&self) -> RutabagaFenceHandler; } @@ -542,7 +542,7 @@ pub struct RutabagaFenceClosure { impl RutabagaFenceClosure where - T: Fn(RutabagaFenceData) + Clone + Send + 'static, + T: Fn(RutabagaFence) + Clone + Send + 'static, { pub fn new(closure: T) -> RutabagaFenceHandler { Box::new(RutabagaFenceClosure { closure }) @@ -551,9 +551,9 @@ where impl RutabagaFenceCallback for RutabagaFenceClosure where - T: Fn(RutabagaFenceData) + Clone + Send + 'static, + T: Fn(RutabagaFence) + Clone + Send + 'static, { - fn call(&self, data: RutabagaFenceData) { + fn call(&self, data: RutabagaFence) { (self.closure)(data) } diff --git a/rutabaga_gfx/src/virgl_renderer.rs b/rutabaga_gfx/src/virgl_renderer.rs index 474f996fcf..e2dccb7abd 100644 --- a/rutabaga_gfx/src/virgl_renderer.rs +++ b/rutabaga_gfx/src/virgl_renderer.rs @@ -310,9 +310,8 @@ impl RutabagaComponent for VirglRenderer { unsafe { virgl_renderer_force_ctx_0() }; } - fn create_fence(&mut self, fence_data: RutabagaFenceData) -> RutabagaResult<()> { - let ret = - unsafe { virgl_renderer_create_fence(fence_data.fence_id as i32, fence_data.ctx_id) }; + fn create_fence(&mut self, fence: RutabagaFence) -> RutabagaResult<()> { + let ret = unsafe { virgl_renderer_create_fence(fence.fence_id as i32, fence.ctx_id) }; ret_to_res(ret) }