From e67adac44144f0c9235ecc6a08d1fd2a5ffe65c7 Mon Sep 17 00:00:00 2001 From: Zhaoming Jiang Date: Sat, 22 Jan 2022 05:57:25 +0000 Subject: [PATCH] Validate buffer usage is non-zero in createBuffer Validate that buffer usage is not 0 (None) when creating buffer. Bug: dawn:1266 Change-Id: I690582aca91fb505c7b8c7b79c9530e71b958ebc Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/77642 Reviewed-by: Kai Ninomiya Commit-Queue: Zhaoming Jiang --- src/dawn_native/Buffer.cpp | 2 ++ .../unittests/validation/BufferValidationTests.cpp | 12 ++++++++++++ 2 files changed, 14 insertions(+) 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