From c53addac8a00e0ef0868266618c90fd02fafb44a Mon Sep 17 00:00:00 2001 From: Dzmitry Malyshau Date: Wed, 16 Jun 2021 14:17:37 -0400 Subject: [PATCH] hal/vk: draws and dispatches. Refactor query set descriptor --- wgpu-core/src/device/mod.rs | 9 +-- wgpu-core/src/device/trace.rs | 2 +- wgpu-core/src/resource.rs | 4 +- wgpu-hal/src/empty.rs | 5 +- wgpu-hal/src/lib.rs | 2 +- wgpu-hal/src/metal/device.rs | 8 ++- wgpu-hal/src/vulkan/adapter.rs | 60 ++++++++++++++++-- wgpu-hal/src/vulkan/command.rs | 112 +++++++++++++++++++++++++++++++-- wgpu-hal/src/vulkan/device.rs | 64 ++++++++++++++++--- wgpu-hal/src/vulkan/mod.rs | 2 - wgpu-types/src/lib.rs | 15 ++++- wgpu/src/backend/direct.rs | 4 +- wgpu/src/backend/web.rs | 2 +- wgpu/src/lib.rs | 6 +- 14 files changed, 257 insertions(+), 38 deletions(-) diff --git a/wgpu-core/src/device/mod.rs b/wgpu-core/src/device/mod.rs index 7d50dc2973..f3eecdd11f 100644 --- a/wgpu-core/src/device/mod.rs +++ b/wgpu-core/src/device/mod.rs @@ -2222,7 +2222,7 @@ impl Device { fn create_query_set( &self, self_id: id::DeviceId, - desc: &wgt::QuerySetDescriptor, + desc: &resource::QuerySetDescriptor, ) -> Result, resource::CreateQuerySetError> { use resource::CreateQuerySetError as Error; @@ -2247,14 +2247,15 @@ impl Device { }); } + let hal_desc = desc.map_label(super::LabelHelpers::borrow_option); Ok(resource::QuerySet { - raw: unsafe { self.raw.create_query_set(desc).unwrap() }, + raw: unsafe { self.raw.create_query_set(&hal_desc).unwrap() }, device_id: Stored { value: id::Valid(self_id), ref_count: self.life_guard.add_ref(), }, life_guard: LifeGuard::new(""), - desc: desc.clone(), + desc: desc.map_label(|_| ()), }) } } @@ -3636,7 +3637,7 @@ impl Global { pub fn device_create_query_set( &self, device_id: id::DeviceId, - desc: &wgt::QuerySetDescriptor, + desc: &resource::QuerySetDescriptor, id_in: Input, ) -> (id::QuerySetId, Option) { profiling::scope!("create_query_set", "Device"); diff --git a/wgpu-core/src/device/trace.rs b/wgpu-core/src/device/trace.rs index 43bc0c4f29..ce4571db88 100644 --- a/wgpu-core/src/device/trace.rs +++ b/wgpu-core/src/device/trace.rs @@ -98,7 +98,7 @@ pub enum Action<'a> { DestroyRenderBundle(id::RenderBundleId), CreateQuerySet { id: id::QuerySetId, - desc: wgt::QuerySetDescriptor, + desc: crate::resource::QuerySetDescriptor<'a>, }, DestroyQuerySet(id::QuerySetId), WriteBuffer { diff --git a/wgpu-core/src/resource.rs b/wgpu-core/src/resource.rs index 4b5b0a4188..9ee45db1f9 100644 --- a/wgpu-core/src/resource.rs +++ b/wgpu-core/src/resource.rs @@ -426,12 +426,14 @@ pub enum CreateQuerySetError { MissingFeatures(#[from] MissingFeatures), } +pub type QuerySetDescriptor<'a> = wgt::QuerySetDescriptor>; + #[derive(Debug)] pub struct QuerySet { pub(crate) raw: A::QuerySet, pub(crate) device_id: Stored, pub(crate) life_guard: LifeGuard, - pub(crate) desc: wgt::QuerySetDescriptor, + pub(crate) desc: wgt::QuerySetDescriptor<()>, } impl Resource for QuerySet { diff --git a/wgpu-hal/src/empty.rs b/wgpu-hal/src/empty.rs index 380a6dd501..4130498da7 100644 --- a/wgpu-hal/src/empty.rs +++ b/wgpu-hal/src/empty.rs @@ -194,7 +194,10 @@ impl crate::Device for Context { } unsafe fn destroy_compute_pipeline(&self, pipeline: Resource) {} - unsafe fn create_query_set(&self, desc: &wgt::QuerySetDescriptor) -> DeviceResult { + unsafe fn create_query_set( + &self, + desc: &wgt::QuerySetDescriptor, + ) -> DeviceResult { Ok(Resource) } unsafe fn destroy_query_set(&self, set: Resource) {} diff --git a/wgpu-hal/src/lib.rs b/wgpu-hal/src/lib.rs index c9a1bd0945..7c97f29585 100644 --- a/wgpu-hal/src/lib.rs +++ b/wgpu-hal/src/lib.rs @@ -268,7 +268,7 @@ pub trait Device: Send + Sync { unsafe fn create_query_set( &self, - desc: &wgt::QuerySetDescriptor, + desc: &wgt::QuerySetDescriptor