mirror of
https://github.com/gfx-rs/wgpu.git
synced 2025-02-19 18:33:30 +00:00
DynDevice create/destroy bind group layout
This commit is contained in:
parent
05a09338cd
commit
1da319f804
@ -555,6 +555,8 @@ pub struct BindGroupLayout {
|
||||
copy_counts: Vec<u32>, // all 1's
|
||||
}
|
||||
|
||||
impl crate::DynBindGroupLayout for BindGroupLayout {}
|
||||
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
enum BufferViewKind {
|
||||
Constant,
|
||||
|
@ -2,12 +2,14 @@
|
||||
#![allow(trivial_casts)]
|
||||
|
||||
use crate::{
|
||||
Api, BufferDescriptor, BufferMapping, CommandEncoderDescriptor, Device, DeviceError, DynBuffer,
|
||||
DynResource, MemoryRange, SamplerDescriptor, TextureDescriptor, TextureViewDescriptor,
|
||||
Api, BindGroupLayoutDescriptor, BufferDescriptor, BufferMapping, CommandEncoderDescriptor,
|
||||
Device, DeviceError, DynBuffer, DynResource, MemoryRange, SamplerDescriptor, TextureDescriptor,
|
||||
TextureViewDescriptor,
|
||||
};
|
||||
|
||||
use super::{
|
||||
DynCommandEncoder, DynQueue, DynResourceExt as _, DynSampler, DynTexture, DynTextureView,
|
||||
DynBindGroupLayout, DynCommandEncoder, DynQueue, DynResourceExt as _, DynSampler, DynTexture,
|
||||
DynTextureView,
|
||||
};
|
||||
|
||||
pub trait DynDevice: DynResource {
|
||||
@ -51,6 +53,12 @@ pub trait DynDevice: DynResource {
|
||||
desc: &CommandEncoderDescriptor<dyn DynQueue>,
|
||||
) -> Result<Box<dyn DynCommandEncoder>, DeviceError>;
|
||||
unsafe fn destroy_command_encoder(&self, pool: Box<dyn DynCommandEncoder>);
|
||||
|
||||
unsafe fn create_bind_group_layout(
|
||||
&self,
|
||||
desc: &BindGroupLayoutDescriptor,
|
||||
) -> Result<Box<dyn DynBindGroupLayout>, DeviceError>;
|
||||
unsafe fn destroy_bind_group_layout(&self, bg_layout: Box<dyn DynBindGroupLayout>);
|
||||
}
|
||||
|
||||
impl<D: Device + DynResource> DynDevice for D {
|
||||
@ -151,4 +159,16 @@ impl<D: Device + DynResource> DynDevice for D {
|
||||
unsafe fn destroy_command_encoder(&self, encoder: Box<dyn DynCommandEncoder>) {
|
||||
unsafe { D::destroy_command_encoder(self, encoder.unbox()) };
|
||||
}
|
||||
|
||||
unsafe fn create_bind_group_layout(
|
||||
&self,
|
||||
desc: &BindGroupLayoutDescriptor,
|
||||
) -> Result<Box<dyn DynBindGroupLayout>, DeviceError> {
|
||||
unsafe { D::create_bind_group_layout(self, desc) }
|
||||
.map(|b| Box::new(b) as Box<dyn DynBindGroupLayout>)
|
||||
}
|
||||
|
||||
unsafe fn destroy_bind_group_layout(&self, bg_layout: Box<dyn DynBindGroupLayout>) {
|
||||
unsafe { D::destroy_bind_group_layout(self, bg_layout.unbox()) };
|
||||
}
|
||||
}
|
||||
|
@ -43,6 +43,7 @@ impl crate::Api for Api {
|
||||
crate::impl_dyn_resource!(Context, Encoder, Resource);
|
||||
|
||||
impl crate::DynBindGroup for Resource {}
|
||||
impl crate::DynBindGroupLayout for Resource {}
|
||||
impl crate::DynBuffer for Resource {}
|
||||
impl crate::DynCommandBuffer for Resource {}
|
||||
impl crate::DynComputePipeline for Resource {}
|
||||
|
@ -485,6 +485,8 @@ pub struct BindGroupLayout {
|
||||
entries: Arc<[wgt::BindGroupLayoutEntry]>,
|
||||
}
|
||||
|
||||
impl crate::DynBindGroupLayout for BindGroupLayout {}
|
||||
|
||||
#[derive(Debug)]
|
||||
struct BindGroupLayoutInfo {
|
||||
entries: Arc<[wgt::BindGroupLayoutEntry]>,
|
||||
|
@ -435,7 +435,7 @@ pub trait Api: Clone + fmt::Debug + Sized {
|
||||
/// finished.
|
||||
type Fence: DynFence + fmt::Debug;
|
||||
|
||||
type BindGroupLayout: fmt::Debug + WasmNotSendSync;
|
||||
type BindGroupLayout: DynBindGroupLayout + fmt::Debug;
|
||||
type BindGroup: DynBindGroup;
|
||||
type PipelineLayout: DynPipelineLayout;
|
||||
type ShaderModule: DynShaderModule;
|
||||
|
@ -560,6 +560,8 @@ pub struct BindGroupLayout {
|
||||
entries: Arc<[wgt::BindGroupLayoutEntry]>,
|
||||
}
|
||||
|
||||
impl crate::DynBindGroupLayout for BindGroupLayout {}
|
||||
|
||||
#[derive(Clone, Debug, Default)]
|
||||
struct ResourceData<T> {
|
||||
buffers: T,
|
||||
|
@ -727,6 +727,8 @@ pub struct BindGroupLayout {
|
||||
binding_arrays: Vec<(u32, NonZeroU32)>,
|
||||
}
|
||||
|
||||
impl crate::DynBindGroupLayout for BindGroupLayout {}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct PipelineLayout {
|
||||
raw: vk::PipelineLayout,
|
||||
|
Loading…
Reference in New Issue
Block a user