mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-21 02:39:11 +00:00
Handle OOM buffer allocations better
This CL checks buffer sizes before creating map read/write handles. It is an error to map a buffer that can't be addressed on the CPU. It also changes client-side synchronous errors on mapAsync to be normal map failures, and not device lost errors. These should be recoverable. The CL adds additional testing for really large, but not UINT64_MAX buffers, and fixes a VVL warning when buffer allocations exceed the size of their memory heap. Bug: dawn:450, dawn:398, chromium:1014740 Change-Id: Ieb34c04c3d01c429b7e3b7810729d5e91ecb6270 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/22626 Commit-Queue: Austin Eng <enga@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
This commit is contained in:
committed by
Commit Bot service account
parent
c3c2c9b6b0
commit
cf1fdf413c
@@ -474,10 +474,9 @@ TEST_F(WireMemoryTransferServiceTests, BufferMapReadHandleCreationFailure) {
|
||||
// Mock a ReadHandle creation failure
|
||||
MockReadHandleCreationFailure();
|
||||
|
||||
// Failed creation of a ReadHandle is a fatal failure and the client synchronously receives a
|
||||
// DEVICE_LOST callback.
|
||||
EXPECT_CALL(*mockBufferMapReadCallback,
|
||||
Call(WGPUBufferMapAsyncStatus_DeviceLost, nullptr, 0, _))
|
||||
// Failed creation of a ReadHandle is a mapping failure and the client synchronously receives
|
||||
// an error callback.
|
||||
EXPECT_CALL(*mockBufferMapReadCallback, Call(WGPUBufferMapAsyncStatus_Error, nullptr, 0, _))
|
||||
.Times(1);
|
||||
|
||||
wgpuBufferMapReadAsync(buffer, ToMockBufferMapReadCallback, nullptr);
|
||||
@@ -716,10 +715,9 @@ TEST_F(WireMemoryTransferServiceTests, BufferMapWriteHandleCreationFailure) {
|
||||
// Mock a WriteHandle creation failure
|
||||
MockWriteHandleCreationFailure();
|
||||
|
||||
// Failed creation of a WriteHandle is a fatal failure and the client synchronously receives a
|
||||
// DEVICE_LOST callback.
|
||||
EXPECT_CALL(*mockBufferMapWriteCallback,
|
||||
Call(WGPUBufferMapAsyncStatus_DeviceLost, nullptr, 0, _))
|
||||
// Failed creation of a WriteHandle is a mapping failure and the client synchronously receives
|
||||
// an error callback.
|
||||
EXPECT_CALL(*mockBufferMapWriteCallback, Call(WGPUBufferMapAsyncStatus_Error, nullptr, 0, _))
|
||||
.Times(1);
|
||||
|
||||
wgpuBufferMapWriteAsync(buffer, ToMockBufferMapWriteCallback, nullptr);
|
||||
|
||||
Reference in New Issue
Block a user