Skip to content

Commit 62162b5

Browse files
WIP: diag(core): unify msgs. b/w buffer overrun error cases
1 parent 7dd4477 commit 62162b5

2 files changed

Lines changed: 20 additions & 19 deletions

File tree

wgpu-core/src/command/transfer.rs

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -47,19 +47,20 @@ pub enum TransferError {
4747
MissingBufferUsage(#[from] MissingBufferUsageError),
4848
#[error(transparent)]
4949
MissingTextureUsage(#[from] MissingTextureUsageError),
50-
#[error(
51-
"Copy at offset {start_offset} bytes would end up overrunning the bounds of the {side:?} buffer of size {buffer_size}"
52-
)]
50+
#[error("Start offset ({offset}) is out-of-bounds for buffer of size {buffer_size}")]
5351
BufferStartOffsetOverrun {
54-
start_offset: BufferAddress,
52+
offset: BufferAddress,
5553
buffer_size: BufferAddress,
5654
side: CopySide,
5755
},
5856
#[error(
59-
"Copy at offset {start_offset} for {size} bytes would end up overrunning the bounds of the {side:?} buffer of size {buffer_size}"
57+
"End offset (start at {} + size of {}) is out-of-bounds for buffer of size {}",
58+
offset,
59+
size,
60+
buffer_size
6061
)]
61-
BufferOverrun {
62-
start_offset: BufferAddress,
62+
BufferEndOffsetOverrun {
63+
offset: BufferAddress,
6364
size: BufferAddress,
6465
buffer_size: BufferAddress,
6566
side: CopySide,
@@ -191,7 +192,7 @@ impl WebGpuError for TransferError {
191192
Self::MissingTextureUsage(e) => e,
192193
Self::MemoryInitFailure(e) => e,
193194

194-
Self::BufferOverrun { .. }
195+
Self::BufferEndOffsetOverrun { .. }
195196
| Self::TextureOverrun { .. }
196197
| Self::BufferStartOffsetOverrun { .. }
197198
| Self::UnsupportedPartialTransfer { .. }
@@ -353,8 +354,8 @@ pub(crate) fn validate_linear_texture_data(
353354

354355
// Avoid underflow in the subtraction by checking bytes_in_copy against buffer_size first.
355356
if bytes_in_copy > buffer_size || offset > buffer_size - bytes_in_copy {
356-
return Err(TransferError::BufferOverrun {
357-
start_offset: offset,
357+
return Err(TransferError::BufferEndOffsetOverrun {
358+
offset,
358359
size: bytes_in_copy,
359360
buffer_size,
360361
side: buffer_side,
@@ -995,7 +996,7 @@ pub(super) fn copy_buffer_to_buffer(
995996
// TODO: This check isn't part of the spec., but it looks like it should be.
996997
if source_offset >= src_buffer.size {
997998
return Err(TransferError::BufferStartOffsetOverrun {
998-
start_offset: destination_offset,
999+
offset: destination_offset,
9991000
buffer_size: dst_buffer.size,
10001001
side: CopySide::Destination,
10011002
}
@@ -1038,8 +1039,8 @@ pub(super) fn copy_buffer_to_buffer(
10381039
}
10391040

10401041
if size > src_buffer.size - source_offset {
1041-
return Err(TransferError::BufferOverrun {
1042-
start_offset: source_offset,
1042+
return Err(TransferError::BufferEndOffsetOverrun {
1043+
offset: source_offset,
10431044
size,
10441045
buffer_size: src_buffer.size,
10451046
side: CopySide::Source,
@@ -1053,16 +1054,16 @@ pub(super) fn copy_buffer_to_buffer(
10531054
// things in this order.
10541055
if destination_offset >= dst_buffer.size {
10551056
return Err(TransferError::BufferStartOffsetOverrun {
1056-
start_offset: destination_offset,
1057+
offset: destination_offset,
10571058
buffer_size: dst_buffer.size,
10581059
side: CopySide::Destination,
10591060
}
10601061
.into());
10611062
}
10621063
// NOTE: Should never underflow because of our earlier check.
10631064
if size > dst_buffer.size - destination_offset {
1064-
return Err(TransferError::BufferOverrun {
1065-
start_offset: destination_offset,
1065+
return Err(TransferError::BufferEndOffsetOverrun {
1066+
offset: destination_offset,
10661067
size,
10671068
buffer_size: dst_buffer.size,
10681069
side: CopySide::Destination,

wgpu-core/src/device/queue.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -663,14 +663,14 @@ impl Queue {
663663

664664
if buffer_offset >= buffer.size {
665665
return Err(TransferError::BufferStartOffsetOverrun {
666-
start_offset: buffer_offset,
666+
offset: buffer_offset,
667667
buffer_size: buffer_size.get(),
668668
side: CopySide::Destination,
669669
});
670670
}
671671
if buffer_size.get() > buffer.size - buffer_offset {
672-
return Err(TransferError::BufferOverrun {
673-
start_offset: buffer_offset,
672+
return Err(TransferError::BufferEndOffsetOverrun {
673+
offset: buffer_offset,
674674
size: buffer_size.get(),
675675
buffer_size: buffer.size,
676676
side: CopySide::Destination,

0 commit comments

Comments
 (0)