mirror of
https://github.com/gfx-rs/wgpu.git
synced 2025-12-08 21:26:17 +00:00
[rs] Adopt the updated bind group entry API
This commit is contained in:
parent
1eaed5e448
commit
c9a718d689
@ -26,14 +26,14 @@ vulkan-portability = ["wgc/gfx-backend-vulkan", "gfx-backend-vulkan"]
|
||||
package = "wgpu-core"
|
||||
#version = "0.6"
|
||||
git = "https://github.com/gfx-rs/wgpu"
|
||||
rev = "3efba7712abdd75a6b3b35c03969a59e9ac92032"
|
||||
rev = "67e652f471d5b138a34231666c953f26ec25aa18"
|
||||
features = ["raw-window-handle"]
|
||||
|
||||
[dependencies.wgt]
|
||||
package = "wgpu-types"
|
||||
#version = "0.6"
|
||||
git = "https://github.com/gfx-rs/wgpu"
|
||||
rev = "3efba7712abdd75a6b3b35c03969a59e9ac92032"
|
||||
rev = "67e652f471d5b138a34231666c953f26ec25aa18"
|
||||
|
||||
[dependencies]
|
||||
arrayvec = "0.5"
|
||||
|
||||
@ -64,8 +64,9 @@ impl framework::Example for Example {
|
||||
wgpu::BindGroupLayoutEntry {
|
||||
binding: 0,
|
||||
visibility: wgpu::ShaderStage::COMPUTE,
|
||||
ty: wgpu::BindingType::UniformBuffer {
|
||||
dynamic: false,
|
||||
ty: wgpu::BindingType::Buffer {
|
||||
ty: wgpu::BufferBindingType::Uniform,
|
||||
has_dynamic_offset: false,
|
||||
min_binding_size: wgpu::BufferSize::new(
|
||||
(sim_param_data.len() * std::mem::size_of::<f32>()) as _,
|
||||
),
|
||||
@ -75,20 +76,20 @@ impl framework::Example for Example {
|
||||
wgpu::BindGroupLayoutEntry {
|
||||
binding: 1,
|
||||
visibility: wgpu::ShaderStage::COMPUTE,
|
||||
ty: wgpu::BindingType::StorageBuffer {
|
||||
dynamic: false,
|
||||
ty: wgpu::BindingType::Buffer {
|
||||
ty: wgpu::BufferBindingType::Storage { read_only: false },
|
||||
has_dynamic_offset: false,
|
||||
min_binding_size: wgpu::BufferSize::new((NUM_PARTICLES * 16) as _),
|
||||
readonly: false,
|
||||
},
|
||||
count: None,
|
||||
},
|
||||
wgpu::BindGroupLayoutEntry {
|
||||
binding: 2,
|
||||
visibility: wgpu::ShaderStage::COMPUTE,
|
||||
ty: wgpu::BindingType::StorageBuffer {
|
||||
dynamic: false,
|
||||
ty: wgpu::BindingType::Buffer {
|
||||
ty: wgpu::BufferBindingType::Storage { read_only: false },
|
||||
has_dynamic_offset: false,
|
||||
min_binding_size: wgpu::BufferSize::new((NUM_PARTICLES * 16) as _),
|
||||
readonly: false,
|
||||
},
|
||||
count: None,
|
||||
},
|
||||
|
||||
@ -145,8 +145,9 @@ impl framework::Example for Example {
|
||||
wgpu::BindGroupLayoutEntry {
|
||||
binding: 0,
|
||||
visibility: wgpu::ShaderStage::VERTEX,
|
||||
ty: wgpu::BindingType::UniformBuffer {
|
||||
dynamic: false,
|
||||
ty: wgpu::BindingType::Buffer {
|
||||
ty: wgpu::BufferBindingType::Uniform,
|
||||
has_dynamic_offset: false,
|
||||
min_binding_size: wgpu::BufferSize::new(64),
|
||||
},
|
||||
count: None,
|
||||
@ -154,17 +155,20 @@ impl framework::Example for Example {
|
||||
wgpu::BindGroupLayoutEntry {
|
||||
binding: 1,
|
||||
visibility: wgpu::ShaderStage::FRAGMENT,
|
||||
ty: wgpu::BindingType::SampledTexture {
|
||||
ty: wgpu::BindingType::Texture {
|
||||
multisampled: false,
|
||||
component_type: wgpu::TextureComponentType::Float,
|
||||
dimension: wgpu::TextureViewDimension::D2,
|
||||
sample_type: wgpu::TextureSampleType::Float { filterable: true },
|
||||
view_dimension: wgpu::TextureViewDimension::D2,
|
||||
},
|
||||
count: None,
|
||||
},
|
||||
wgpu::BindGroupLayoutEntry {
|
||||
binding: 2,
|
||||
visibility: wgpu::ShaderStage::FRAGMENT,
|
||||
ty: wgpu::BindingType::Sampler { comparison: false },
|
||||
ty: wgpu::BindingType::Sampler {
|
||||
comparison: false,
|
||||
filtering: true,
|
||||
},
|
||||
count: None,
|
||||
},
|
||||
],
|
||||
|
||||
@ -85,9 +85,12 @@ async fn execute_gpu(numbers: Vec<u32>) -> Vec<u32> {
|
||||
entries: &[wgpu::BindGroupLayoutEntry {
|
||||
binding: 0, // The location
|
||||
visibility: wgpu::ShaderStage::COMPUTE, // Which shader type in the pipeline this buffer is available to.
|
||||
ty: wgpu::BindingType::StorageBuffer {
|
||||
dynamic: false,
|
||||
readonly: false, // Specifies if the buffer can only be read within the shader
|
||||
ty: wgpu::BindingType::Buffer {
|
||||
ty: wgpu::BufferBindingType::Storage {
|
||||
// Specifies if the buffer can only be read within the shader
|
||||
read_only: false,
|
||||
},
|
||||
has_dynamic_offset: false,
|
||||
min_binding_size: wgpu::BufferSize::new(4),
|
||||
},
|
||||
count: None,
|
||||
|
||||
@ -314,8 +314,9 @@ impl framework::Example for Example {
|
||||
entries: &[wgpu::BindGroupLayoutEntry {
|
||||
binding: 0,
|
||||
visibility: wgpu::ShaderStage::VERTEX | wgpu::ShaderStage::FRAGMENT,
|
||||
ty: wgpu::BindingType::UniformBuffer {
|
||||
dynamic: true,
|
||||
ty: wgpu::BindingType::Buffer {
|
||||
ty: wgpu::BufferBindingType::Uniform,
|
||||
has_dynamic_offset: true,
|
||||
min_binding_size: wgpu::BufferSize::new(entity_uniform_size),
|
||||
},
|
||||
count: None,
|
||||
@ -426,8 +427,9 @@ impl framework::Example for Example {
|
||||
entries: &[wgpu::BindGroupLayoutEntry {
|
||||
binding: 0, // global
|
||||
visibility: wgpu::ShaderStage::VERTEX,
|
||||
ty: wgpu::BindingType::UniformBuffer {
|
||||
dynamic: false,
|
||||
ty: wgpu::BindingType::Buffer {
|
||||
ty: wgpu::BufferBindingType::Uniform,
|
||||
has_dynamic_offset: false,
|
||||
min_binding_size: wgpu::BufferSize::new(uniform_size),
|
||||
},
|
||||
count: None,
|
||||
@ -508,8 +510,9 @@ impl framework::Example for Example {
|
||||
wgpu::BindGroupLayoutEntry {
|
||||
binding: 0, // global
|
||||
visibility: wgpu::ShaderStage::VERTEX | wgpu::ShaderStage::FRAGMENT,
|
||||
ty: wgpu::BindingType::UniformBuffer {
|
||||
dynamic: false,
|
||||
ty: wgpu::BindingType::Buffer {
|
||||
ty: wgpu::BufferBindingType::Uniform,
|
||||
has_dynamic_offset: false,
|
||||
min_binding_size: wgpu::BufferSize::new(mem::size_of::<
|
||||
ForwardUniforms,
|
||||
>(
|
||||
@ -521,8 +524,9 @@ impl framework::Example for Example {
|
||||
wgpu::BindGroupLayoutEntry {
|
||||
binding: 1, // lights
|
||||
visibility: wgpu::ShaderStage::VERTEX | wgpu::ShaderStage::FRAGMENT,
|
||||
ty: wgpu::BindingType::UniformBuffer {
|
||||
dynamic: false,
|
||||
ty: wgpu::BindingType::Buffer {
|
||||
ty: wgpu::BufferBindingType::Uniform,
|
||||
has_dynamic_offset: false,
|
||||
min_binding_size: wgpu::BufferSize::new(light_uniform_size),
|
||||
},
|
||||
count: None,
|
||||
@ -530,17 +534,20 @@ impl framework::Example for Example {
|
||||
wgpu::BindGroupLayoutEntry {
|
||||
binding: 2,
|
||||
visibility: wgpu::ShaderStage::FRAGMENT,
|
||||
ty: wgpu::BindingType::SampledTexture {
|
||||
ty: wgpu::BindingType::Texture {
|
||||
multisampled: false,
|
||||
component_type: wgpu::TextureComponentType::DepthComparison,
|
||||
dimension: wgpu::TextureViewDimension::D2Array,
|
||||
sample_type: wgpu::TextureSampleType::Depth,
|
||||
view_dimension: wgpu::TextureViewDimension::D2Array,
|
||||
},
|
||||
count: None,
|
||||
},
|
||||
wgpu::BindGroupLayoutEntry {
|
||||
binding: 3,
|
||||
visibility: wgpu::ShaderStage::FRAGMENT,
|
||||
ty: wgpu::BindingType::Sampler { comparison: true },
|
||||
ty: wgpu::BindingType::Sampler {
|
||||
comparison: true,
|
||||
filtering: false,
|
||||
},
|
||||
count: None,
|
||||
},
|
||||
],
|
||||
|
||||
@ -54,8 +54,9 @@ impl framework::Example for Skybox {
|
||||
wgpu::BindGroupLayoutEntry {
|
||||
binding: 0,
|
||||
visibility: wgpu::ShaderStage::VERTEX | wgpu::ShaderStage::FRAGMENT,
|
||||
ty: wgpu::BindingType::UniformBuffer {
|
||||
dynamic: false,
|
||||
ty: wgpu::BindingType::Buffer {
|
||||
ty: wgpu::BufferBindingType::Uniform,
|
||||
has_dynamic_offset: false,
|
||||
min_binding_size: None,
|
||||
},
|
||||
count: None,
|
||||
@ -63,17 +64,20 @@ impl framework::Example for Skybox {
|
||||
wgpu::BindGroupLayoutEntry {
|
||||
binding: 1,
|
||||
visibility: wgpu::ShaderStage::FRAGMENT,
|
||||
ty: wgpu::BindingType::SampledTexture {
|
||||
component_type: wgpu::TextureComponentType::Float,
|
||||
ty: wgpu::BindingType::Texture {
|
||||
sample_type: wgpu::TextureSampleType::Float { filterable: true },
|
||||
multisampled: false,
|
||||
dimension: wgpu::TextureViewDimension::Cube,
|
||||
view_dimension: wgpu::TextureViewDimension::Cube,
|
||||
},
|
||||
count: None,
|
||||
},
|
||||
wgpu::BindGroupLayoutEntry {
|
||||
binding: 2,
|
||||
visibility: wgpu::ShaderStage::FRAGMENT,
|
||||
ty: wgpu::BindingType::Sampler { comparison: false },
|
||||
ty: wgpu::BindingType::Sampler {
|
||||
comparison: false,
|
||||
filtering: true,
|
||||
},
|
||||
count: None,
|
||||
},
|
||||
],
|
||||
@ -86,7 +90,7 @@ impl framework::Example for Skybox {
|
||||
let aspect = sc_desc.width as f32 / sc_desc.height as f32;
|
||||
let uniforms = Self::generate_uniforms(aspect);
|
||||
let uniform_buf = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
|
||||
label: Some("Uniform Buffer"),
|
||||
label: Some(" Buffer"),
|
||||
contents: bytemuck::cast_slice(&raw_uniforms(&uniforms)),
|
||||
usage: wgpu::BufferUsage::UNIFORM | wgpu::BufferUsage::COPY_DST,
|
||||
});
|
||||
|
||||
@ -197,9 +197,9 @@ impl framework::Example for Example {
|
||||
wgpu::BindGroupLayoutEntry {
|
||||
binding: 0,
|
||||
visibility: wgpu::ShaderStage::FRAGMENT,
|
||||
ty: wgpu::BindingType::SampledTexture {
|
||||
component_type: wgpu::TextureComponentType::Float,
|
||||
dimension: wgpu::TextureViewDimension::D2,
|
||||
ty: wgpu::BindingType::Texture {
|
||||
sample_type: wgpu::TextureSampleType::Float { filterable: true },
|
||||
view_dimension: wgpu::TextureViewDimension::D2,
|
||||
multisampled: false,
|
||||
},
|
||||
count: std::num::NonZeroU32::new(2),
|
||||
@ -207,7 +207,10 @@ impl framework::Example for Example {
|
||||
wgpu::BindGroupLayoutEntry {
|
||||
binding: 1,
|
||||
visibility: wgpu::ShaderStage::FRAGMENT,
|
||||
ty: wgpu::BindingType::Sampler { comparison: false },
|
||||
ty: wgpu::BindingType::Sampler {
|
||||
comparison: false,
|
||||
filtering: true,
|
||||
},
|
||||
count: None,
|
||||
},
|
||||
],
|
||||
|
||||
@ -354,8 +354,9 @@ impl framework::Example for Example {
|
||||
wgpu::BindGroupLayoutEntry {
|
||||
binding: 0,
|
||||
visibility: wgpu::ShaderStage::VERTEX | wgpu::ShaderStage::FRAGMENT,
|
||||
ty: wgpu::BindingType::UniformBuffer {
|
||||
dynamic: false,
|
||||
ty: wgpu::BindingType::Buffer {
|
||||
ty: wgpu::BufferBindingType::Uniform,
|
||||
has_dynamic_offset: false,
|
||||
min_binding_size: wgpu::BufferSize::new(
|
||||
mem::size_of::<WaterUniforms>() as _,
|
||||
),
|
||||
@ -366,10 +367,10 @@ impl framework::Example for Example {
|
||||
wgpu::BindGroupLayoutEntry {
|
||||
binding: 1,
|
||||
visibility: wgpu::ShaderStage::FRAGMENT,
|
||||
ty: wgpu::BindingType::SampledTexture {
|
||||
ty: wgpu::BindingType::Texture {
|
||||
multisampled: false,
|
||||
component_type: wgpu::TextureComponentType::Float,
|
||||
dimension: wgpu::TextureViewDimension::D2,
|
||||
sample_type: wgpu::TextureSampleType::Float { filterable: true },
|
||||
view_dimension: wgpu::TextureViewDimension::D2,
|
||||
},
|
||||
count: None,
|
||||
},
|
||||
@ -377,10 +378,10 @@ impl framework::Example for Example {
|
||||
wgpu::BindGroupLayoutEntry {
|
||||
binding: 2,
|
||||
visibility: wgpu::ShaderStage::FRAGMENT,
|
||||
ty: wgpu::BindingType::SampledTexture {
|
||||
ty: wgpu::BindingType::Texture {
|
||||
multisampled: false,
|
||||
component_type: wgpu::TextureComponentType::Float,
|
||||
dimension: wgpu::TextureViewDimension::D2,
|
||||
sample_type: wgpu::TextureSampleType::Float { filterable: true },
|
||||
view_dimension: wgpu::TextureViewDimension::D2,
|
||||
},
|
||||
count: None,
|
||||
},
|
||||
@ -388,7 +389,10 @@ impl framework::Example for Example {
|
||||
wgpu::BindGroupLayoutEntry {
|
||||
binding: 3,
|
||||
visibility: wgpu::ShaderStage::FRAGMENT,
|
||||
ty: wgpu::BindingType::Sampler { comparison: false },
|
||||
ty: wgpu::BindingType::Sampler {
|
||||
comparison: false,
|
||||
filtering: true,
|
||||
},
|
||||
count: None,
|
||||
},
|
||||
],
|
||||
@ -402,8 +406,9 @@ impl framework::Example for Example {
|
||||
wgpu::BindGroupLayoutEntry {
|
||||
binding: 0,
|
||||
visibility: wgpu::ShaderStage::VERTEX,
|
||||
ty: wgpu::BindingType::UniformBuffer {
|
||||
dynamic: false,
|
||||
ty: wgpu::BindingType::Buffer {
|
||||
ty: wgpu::BufferBindingType::Uniform,
|
||||
has_dynamic_offset: false,
|
||||
min_binding_size: wgpu::BufferSize::new(
|
||||
mem::size_of::<TerrainUniforms>() as _,
|
||||
),
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
use crate::{
|
||||
BindGroupDescriptor, BindGroupLayoutDescriptor, BindingResource, BindingType, BufferDescriptor,
|
||||
CommandEncoderDescriptor, ComputePipelineDescriptor, LoadOp, PipelineLayoutDescriptor,
|
||||
ProgrammableStageDescriptor, RenderBundleEncoderDescriptor, RenderPipelineDescriptor,
|
||||
SamplerDescriptor, ShaderModuleSource, SwapChainStatus, TextureDescriptor,
|
||||
TextureViewDescriptor, TextureViewDimension,
|
||||
BindGroupDescriptor, BindGroupLayoutDescriptor, BindingResource, BindingType,
|
||||
BufferBindingType, BufferDescriptor, CommandEncoderDescriptor, ComputePipelineDescriptor,
|
||||
LoadOp, PipelineLayoutDescriptor, ProgrammableStageDescriptor, RenderBundleEncoderDescriptor,
|
||||
RenderPipelineDescriptor, SamplerDescriptor, ShaderModuleSource, StorageTextureAccess,
|
||||
SwapChainStatus, TextureDescriptor, TextureViewDescriptor, TextureViewDimension,
|
||||
};
|
||||
|
||||
use futures::FutureExt;
|
||||
@ -459,15 +459,13 @@ fn map_texture_format(texture_format: wgt::TextureFormat) -> web_sys::GpuTexture
|
||||
}
|
||||
|
||||
fn map_texture_component_type(
|
||||
texture_component_type: wgt::TextureComponentType,
|
||||
sample_type: wgt::TextureSampleType,
|
||||
) -> web_sys::GpuTextureComponentType {
|
||||
match texture_component_type {
|
||||
wgt::TextureComponentType::Float => web_sys::GpuTextureComponentType::Float,
|
||||
wgt::TextureComponentType::Sint => web_sys::GpuTextureComponentType::Sint,
|
||||
wgt::TextureComponentType::Uint => web_sys::GpuTextureComponentType::Uint,
|
||||
wgt::TextureComponentType::DepthComparison => {
|
||||
web_sys::GpuTextureComponentType::DepthComparison
|
||||
}
|
||||
match sample_type {
|
||||
wgt::TextureSampleType::Float { .. } => web_sys::GpuTextureComponentType::Float,
|
||||
wgt::TextureSampleType::Sint => web_sys::GpuTextureComponentType::Sint,
|
||||
wgt::TextureSampleType::Uint => web_sys::GpuTextureComponentType::Uint,
|
||||
wgt::TextureSampleType::Depth => web_sys::GpuTextureComponentType::DepthComparison,
|
||||
}
|
||||
}
|
||||
|
||||
@ -981,20 +979,30 @@ impl crate::Context for Context {
|
||||
.iter()
|
||||
.map(|bind| {
|
||||
let mapped_type = match bind.ty {
|
||||
BindingType::UniformBuffer { .. } => bt::UniformBuffer,
|
||||
BindingType::StorageBuffer {
|
||||
readonly: false, ..
|
||||
BindingType::Buffer {
|
||||
ty: BufferBindingType::Uniform,
|
||||
..
|
||||
} => bt::UniformBuffer,
|
||||
BindingType::Buffer {
|
||||
ty: BufferBindingType::Storage { read_only: false },
|
||||
..
|
||||
} => bt::StorageBuffer,
|
||||
BindingType::StorageBuffer { readonly: true, .. } => bt::ReadonlyStorageBuffer,
|
||||
BindingType::Sampler { comparison: false } => bt::Sampler,
|
||||
BindingType::Buffer {
|
||||
ty: BufferBindingType::Storage { read_only: true },
|
||||
..
|
||||
} => bt::ReadonlyStorageBuffer,
|
||||
BindingType::Sampler {
|
||||
comparison: false, ..
|
||||
} => bt::Sampler,
|
||||
BindingType::Sampler { .. } => bt::ComparisonSampler,
|
||||
BindingType::SampledTexture {
|
||||
BindingType::Texture {
|
||||
multisampled: true, ..
|
||||
} => bt::MultisampledTexture,
|
||||
BindingType::SampledTexture { .. } => bt::SampledTexture,
|
||||
BindingType::StorageTexture { readonly: true, .. } => {
|
||||
bt::ReadonlyStorageTexture
|
||||
}
|
||||
BindingType::Texture { .. } => bt::SampledTexture,
|
||||
BindingType::StorageTexture {
|
||||
access: StorageTextureAccess::ReadOnly,
|
||||
..
|
||||
} => bt::ReadonlyStorageTexture,
|
||||
BindingType::StorageTexture { .. } => bt::WriteonlyStorageTexture,
|
||||
};
|
||||
|
||||
@ -1009,22 +1017,21 @@ impl crate::Context for Context {
|
||||
bind.visibility.bits(),
|
||||
);
|
||||
|
||||
match bind.ty {
|
||||
BindingType::UniformBuffer { dynamic, .. }
|
||||
| BindingType::StorageBuffer { dynamic, .. } => {
|
||||
mapped_entry.has_dynamic_offset(dynamic);
|
||||
}
|
||||
_ => {}
|
||||
if let BindingType::Buffer {
|
||||
has_dynamic_offset, ..
|
||||
} = bind.ty
|
||||
{
|
||||
mapped_entry.has_dynamic_offset(has_dynamic_offset);
|
||||
}
|
||||
|
||||
if let BindingType::SampledTexture { component_type, .. } = bind.ty {
|
||||
mapped_entry.texture_component_type(map_texture_component_type(component_type));
|
||||
if let BindingType::Texture { sample_type, .. } = bind.ty {
|
||||
mapped_entry.texture_component_type(map_texture_component_type(sample_type));
|
||||
}
|
||||
|
||||
match bind.ty {
|
||||
BindingType::SampledTexture { dimension, .. }
|
||||
| BindingType::StorageTexture { dimension, .. } => {
|
||||
mapped_entry.view_dimension(map_texture_view_dimension(dimension));
|
||||
BindingType::Texture { view_dimension, .. }
|
||||
| BindingType::StorageTexture { view_dimension, .. } => {
|
||||
mapped_entry.view_dimension(map_texture_view_dimension(view_dimension));
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
|
||||
@ -33,16 +33,17 @@ use serde::Serialize;
|
||||
pub use wgc::instance::{AdapterInfo, DeviceType};
|
||||
pub use wgt::{
|
||||
AddressMode, Backend, BackendBit, BindGroupLayoutEntry, BindingType, BlendDescriptor,
|
||||
BlendFactor, BlendOperation, BufferAddress, BufferSize, BufferUsage, Color,
|
||||
BlendFactor, BlendOperation, BufferAddress, BufferBindingType, BufferSize, BufferUsage, Color,
|
||||
ColorStateDescriptor, ColorWrite, CommandBufferDescriptor, CompareFunction, CullMode,
|
||||
DepthStencilStateDescriptor, DynamicOffset, Extent3d, Features, FilterMode, FrontFace,
|
||||
IndexFormat, InputStepMode, Limits, Origin3d, PolygonMode, PowerPreference, PresentMode,
|
||||
PrimitiveTopology, PushConstantRange, RasterizationStateDescriptor, SamplerBorderColor,
|
||||
ShaderLocation, ShaderStage, StencilOperation, StencilStateDescriptor,
|
||||
StencilStateFaceDescriptor, SwapChainDescriptor, SwapChainStatus, TextureAspect,
|
||||
TextureComponentType, TextureDataLayout, TextureDimension, TextureFormat, TextureUsage,
|
||||
TextureViewDimension, VertexAttributeDescriptor, VertexFormat, BIND_BUFFER_ALIGNMENT,
|
||||
COPY_BUFFER_ALIGNMENT, COPY_BYTES_PER_ROW_ALIGNMENT, PUSH_CONSTANT_ALIGNMENT,
|
||||
StencilStateFaceDescriptor, StorageTextureAccess, SwapChainDescriptor, SwapChainStatus,
|
||||
TextureAspect, TextureDataLayout, TextureDimension, TextureFormat, TextureSampleType,
|
||||
TextureUsage, TextureViewDimension, VertexAttributeDescriptor, VertexFormat,
|
||||
BIND_BUFFER_ALIGNMENT, COPY_BUFFER_ALIGNMENT, COPY_BYTES_PER_ROW_ALIGNMENT,
|
||||
PUSH_CONSTANT_ALIGNMENT,
|
||||
};
|
||||
|
||||
use backend::{BufferMappedRange, Context as C};
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user