summaryrefslogtreecommitdiffstats
path: root/third_party/rust/wgpu-core/src/present.rs
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/wgpu-core/src/present.rs')
-rw-r--r--third_party/rust/wgpu-core/src/present.rs30
1 files changed, 18 insertions, 12 deletions
diff --git a/third_party/rust/wgpu-core/src/present.rs b/third_party/rust/wgpu-core/src/present.rs
index cb4e17798f..053f7fdb24 100644
--- a/third_party/rust/wgpu-core/src/present.rs
+++ b/third_party/rust/wgpu-core/src/present.rs
@@ -9,7 +9,7 @@ When this texture is presented, we remove it from the device tracker as well as
extract it from the hub.
!*/
-use std::borrow::Borrow;
+use std::{borrow::Borrow, sync::Arc};
#[cfg(feature = "trace")]
use crate::device::trace::Action;
@@ -21,13 +21,13 @@ use crate::{
hal_api::HalApi,
hal_label, id,
init_tracker::TextureInitTracker,
+ lock::{rank, Mutex, RwLock},
resource::{self, ResourceInfo},
snatch::Snatchable,
track,
};
use hal::{Queue as _, Surface as _};
-use parking_lot::{Mutex, RwLock};
use thiserror::Error;
use wgt::SurfaceStatus as Status;
@@ -157,7 +157,7 @@ impl Global {
#[cfg(not(feature = "trace"))]
let _ = device;
- let suf = A::get_surface(surface.as_ref());
+ let suf = A::surface_as_hal(surface.as_ref());
let (texture_id, status) = match unsafe {
suf.unwrap()
.acquire_texture(Some(std::time::Duration::from_millis(
@@ -215,7 +215,10 @@ impl Global {
desc: texture_desc,
hal_usage,
format_features,
- initialization_status: RwLock::new(TextureInitTracker::new(1, 1)),
+ initialization_status: RwLock::new(
+ rank::TEXTURE_INITIALIZATION_STATUS,
+ TextureInitTracker::new(1, 1),
+ ),
full_range: track::TextureSelector {
layers: 0..1,
mips: 0..1,
@@ -224,14 +227,17 @@ impl Global {
"<Surface Texture>",
Some(device.tracker_indices.textures.clone()),
),
- clear_mode: RwLock::new(resource::TextureClearMode::Surface {
- clear_view: Some(clear_view),
- }),
- views: Mutex::new(Vec::new()),
- bind_groups: Mutex::new(Vec::new()),
+ clear_mode: RwLock::new(
+ rank::TEXTURE_CLEAR_MODE,
+ resource::TextureClearMode::Surface {
+ clear_view: Some(clear_view),
+ },
+ ),
+ views: Mutex::new(rank::TEXTURE_VIEWS, Vec::new()),
+ bind_groups: Mutex::new(rank::TEXTURE_BIND_GROUPS, Vec::new()),
};
- let (id, resource) = fid.assign(texture);
+ let (id, resource) = fid.assign(Arc::new(texture));
log::debug!("Created CURRENT Surface Texture {:?}", id);
{
@@ -324,7 +330,7 @@ impl Global {
.textures
.remove(texture.info.tracker_index());
let mut exclusive_snatch_guard = device.snatchable_lock.write();
- let suf = A::get_surface(&surface);
+ let suf = A::surface_as_hal(&surface);
let mut inner = texture.inner_mut(&mut exclusive_snatch_guard);
let inner = inner.as_mut().unwrap();
@@ -418,7 +424,7 @@ impl Global {
.lock()
.textures
.remove(texture.info.tracker_index());
- let suf = A::get_surface(&surface);
+ let suf = A::surface_as_hal(&surface);
let exclusive_snatch_guard = device.snatchable_lock.write();
match texture.inner.snatch(exclusive_snatch_guard).unwrap() {
resource::TextureInner::Surface { mut raw, parent_id } => {