Skip to content

Commit 5764ada

Browse files
sagudevcwfitzgerald
authored andcommitted
Unofy ResolvedBindingResource into BindingResource
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
1 parent a46fb07 commit 5764ada

File tree

1 file changed

+30
-20
lines changed

1 file changed

+30
-20
lines changed

wgpu-core/src/binding_model.rs

Lines changed: 30 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -802,28 +802,38 @@ pub type ResolvedBufferBinding = BufferBinding<Arc<Buffer>>;
802802
// They're different enough that it doesn't make sense to share a common type
803803
#[derive(Debug, Clone)]
804804
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
805-
pub enum BindingResource<'a> {
806-
Buffer(BufferBinding),
807-
BufferArray(Cow<'a, [BufferBinding]>),
808-
Sampler(SamplerId),
809-
SamplerArray(Cow<'a, [SamplerId]>),
810-
TextureView(TextureViewId),
811-
TextureViewArray(Cow<'a, [TextureViewId]>),
812-
AccelerationStructure(TlasId),
805+
pub enum BindingResource<'a, B = BufferId, S = SamplerId, TV = TextureViewId, TLAS = TlasId>
806+
where
807+
[BufferBinding<B>]: ToOwned,
808+
[S]: ToOwned,
809+
[TV]: ToOwned,
810+
<[BufferBinding<B>] as ToOwned>::Owned: std::fmt::Debug,
811+
<[S] as ToOwned>::Owned: std::fmt::Debug,
812+
<[TV] as ToOwned>::Owned: std::fmt::Debug,
813+
{
814+
Buffer(BufferBinding<B>),
815+
#[cfg_attr(
816+
feature = "serde",
817+
serde(bound(deserialize = "<[BufferBinding<B>] as ToOwned>::Owned: Deserialize<'de>"))
818+
)]
819+
BufferArray(Cow<'a, [BufferBinding<B>]>),
820+
Sampler(S),
821+
#[cfg_attr(
822+
feature = "serde",
823+
serde(bound(deserialize = "<[S] as ToOwned>::Owned: Deserialize<'de>"))
824+
)]
825+
SamplerArray(Cow<'a, [S]>),
826+
TextureView(TV),
827+
#[cfg_attr(
828+
feature = "serde",
829+
serde(bound(deserialize = "<[TV] as ToOwned>::Owned: Deserialize<'de>"))
830+
)]
831+
TextureViewArray(Cow<'a, [TV]>),
832+
AccelerationStructure(TLAS),
813833
}
814834

815-
// Note: Duplicated in `wgpu-rs` as `BindingResource`
816-
// They're different enough that it doesn't make sense to share a common type
817-
#[derive(Debug, Clone)]
818-
pub enum ResolvedBindingResource<'a> {
819-
Buffer(ResolvedBufferBinding),
820-
BufferArray(Cow<'a, [ResolvedBufferBinding]>),
821-
Sampler(Arc<Sampler>),
822-
SamplerArray(Cow<'a, [Arc<Sampler>]>),
823-
TextureView(Arc<TextureView>),
824-
TextureViewArray(Cow<'a, [Arc<TextureView>]>),
825-
AccelerationStructure(Arc<Tlas>),
826-
}
835+
pub type ResolvedBindingResource<'a> =
836+
BindingResource<'a, Arc<Buffer>, Arc<Sampler>, Arc<TextureView>, Arc<Tlas>>;
827837

828838
#[derive(Clone, Debug, Error)]
829839
#[non_exhaustive]

0 commit comments

Comments
 (0)