Skip to content

Commit 32b39d2

Browse files
refactor(core): replace TransferError::BufferOverrun::end_offset with transfer's size
Transfer operations are expressed in terms of a start offset and a size. Trying to store anything else in errors and traces yields extra complexity and loses clarity. Change `TransferError::BufferOverrun` so that its `end_offset` field is no more. Instead, add a `size` field that should only ever be saving off fields already provided by user operations.
1 parent 4fd2e59 commit 32b39d2

2 files changed

Lines changed: 8 additions & 6 deletions

File tree

wgpu-core/src/command/transfer.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,12 @@ pub enum TransferError {
4747
MissingBufferUsage(#[from] MissingBufferUsageError),
4848
#[error(transparent)]
4949
MissingTextureUsage(#[from] MissingTextureUsageError),
50-
#[error("Copy of {start_offset}..{end_offset} would end up overrunning the bounds of the {side:?} buffer of size {buffer_size}")]
50+
#[error(
51+
"Copy at offset {start_offset} for {size} bytes would end up overrunning the bounds of the {side:?} buffer of size {buffer_size}"
52+
)]
5153
BufferOverrun {
5254
start_offset: BufferAddress,
53-
end_offset: BufferAddress,
55+
size: BufferAddress,
5456
buffer_size: BufferAddress,
5557
side: CopySide,
5658
},
@@ -344,7 +346,7 @@ pub(crate) fn validate_linear_texture_data(
344346
if bytes_in_copy > buffer_size || offset > buffer_size - bytes_in_copy {
345347
return Err(TransferError::BufferOverrun {
346348
start_offset: offset,
347-
end_offset: offset.wrapping_add(bytes_in_copy),
349+
size: bytes_in_copy,
348350
buffer_size,
349351
side: buffer_side,
350352
});
@@ -1021,7 +1023,7 @@ pub(super) fn copy_buffer_to_buffer(
10211023
if source_end_offset > src_buffer.size {
10221024
return Err(TransferError::BufferOverrun {
10231025
start_offset: source_offset,
1024-
end_offset: source_end_offset,
1026+
size,
10251027
buffer_size: src_buffer.size,
10261028
side: CopySide::Source,
10271029
}
@@ -1030,7 +1032,7 @@ pub(super) fn copy_buffer_to_buffer(
10301032
if destination_end_offset > dst_buffer.size {
10311033
return Err(TransferError::BufferOverrun {
10321034
start_offset: destination_offset,
1033-
end_offset: destination_end_offset,
1035+
size,
10341036
buffer_size: dst_buffer.size,
10351037
side: CopySide::Destination,
10361038
}

wgpu-core/src/device/queue.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -663,7 +663,7 @@ impl Queue {
663663
if buffer_offset + buffer_size.get() > buffer.size {
664664
return Err(TransferError::BufferOverrun {
665665
start_offset: buffer_offset,
666-
end_offset: buffer_offset + buffer_size.get(),
666+
size: buffer_size.get(),
667667
buffer_size: buffer.size,
668668
side: CopySide::Destination,
669669
});

0 commit comments

Comments
 (0)