diff --git a/wgpu-core/src/device/global.rs b/wgpu-core/src/device/global.rs index 09bbef413a..5046c00ad6 100644 --- a/wgpu-core/src/device/global.rs +++ b/wgpu-core/src/device/global.rs @@ -180,11 +180,6 @@ impl Global { trace.add(trace::Action::CreateBuffer(fid.id(), desc)); } - if desc.usage.is_empty() { - // Per spec, `usage` must not be zero. - break 'error CreateBufferError::InvalidUsage(desc.usage); - } - let buffer = match device.create_buffer(desc, false) { Ok(buffer) => buffer, Err(e) => { diff --git a/wgpu-core/src/device/resource.rs b/wgpu-core/src/device/resource.rs index 086ad86c2f..c0739e60c4 100644 --- a/wgpu-core/src/device/resource.rs +++ b/wgpu-core/src/device/resource.rs @@ -580,8 +580,6 @@ impl Device { self.require_downlevel_flags(wgt::DownlevelFlags::UNRESTRICTED_INDEX_BUFFER)?; } - let mut usage = conv::map_buffer_usage(desc.usage); - if desc.usage.is_empty() || desc.usage.contains_invalid_bits() { return Err(resource::CreateBufferError::InvalidUsage(desc.usage)); } @@ -600,6 +598,8 @@ impl Device { } } + let mut usage = conv::map_buffer_usage(desc.usage); + if desc.mapped_at_creation { if desc.size % wgt::COPY_BUFFER_ALIGNMENT != 0 { return Err(resource::CreateBufferError::UnalignedSize);