Reland "Implement readonly storage buffer - validation at API side" This is a reland of 34ac535f02fb8157fde501810ae038914d21b122 Original change's description: > Implement readonly storage buffer - validation at API side > > This patch adds validation code for API side for readonly storage > buffer. It also adds unit tests for API validation. > > BUG=dawn:180 > > Change-Id: I9a97c5f3aa23e720619d138ca55d7b17f08d64c9 > Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/12620 > Reviewed-by: Austin Eng <enga@chromium.org> > Commit-Queue: Yunchao He <yunchao.he@intel.com> Bug: dawn:180 Change-Id: I1e107ff6168279940496317b973f2d8c7c3c6114 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/13083 Reviewed-by: Yunchao He <yunchao.he@intel.com> Reviewed-by: Austin Eng <enga@chromium.org> Commit-Queue: Austin Eng <enga@chromium.org>
diff --git a/src/dawn_native/Buffer.cpp b/src/dawn_native/Buffer.cpp index 5712bdf..a44e3c2 100644 --- a/src/dawn_native/Buffer.cpp +++ b/src/dawn_native/Buffer.cpp
@@ -115,6 +115,12 @@ mSize(descriptor->size), mUsage(descriptor->usage), mState(BufferState::Unmapped) { + // Add readonly storage usage if the buffer has a storage usage. The validation rules in + // PassResourceUsageTracker::ValidateUsages will make sure we don't use both at the same + // time. + if (mUsage & wgpu::BufferUsage::Storage) { + mUsage |= kReadOnlyStorage; + } } BufferBase::BufferBase(DeviceBase* device, ObjectBase::ErrorTag tag)