diff --git a/src/dawn_native/Buffer.cpp b/src/dawn_native/Buffer.cpp index 0aa54dbee9..2e0252931e 100644 --- a/src/dawn_native/Buffer.cpp +++ b/src/dawn_native/Buffer.cpp @@ -102,6 +102,8 @@ namespace dawn::native { wgpu::BufferUsage usage = descriptor->usage; + DAWN_INVALID_IF(usage == wgpu::BufferUsage::None, "Buffer usages must not be 0."); + const wgpu::BufferUsage kMapWriteAllowedUsages = wgpu::BufferUsage::MapWrite | wgpu::BufferUsage::CopySrc; DAWN_INVALID_IF( diff --git a/src/tests/unittests/validation/BufferValidationTests.cpp b/src/tests/unittests/validation/BufferValidationTests.cpp index 7651b90978..71d28684a9 100644 --- a/src/tests/unittests/validation/BufferValidationTests.cpp +++ b/src/tests/unittests/validation/BufferValidationTests.cpp @@ -94,6 +94,18 @@ TEST_F(BufferValidationTest, CreationSuccess) { } } +// Test restriction on usages must not be None (0) +TEST_F(BufferValidationTest, CreationMapUsageNotZero) { + // Zero (None) usage is an error + { + wgpu::BufferDescriptor descriptor; + descriptor.size = 4; + descriptor.usage = wgpu::BufferUsage::None; + + ASSERT_DEVICE_ERROR(device.CreateBuffer(&descriptor)); + } +} + // Test restriction on usages allowed with MapRead and MapWrite TEST_F(BufferValidationTest, CreationMapUsageRestrictions) { // MapRead with CopyDst is ok