Skip to content

Commit 160b60e

Browse files
WIP: refactor(core)!: factor out BufferOverrunError type
1 parent 62162b5 commit 160b60e

2 files changed

Lines changed: 22 additions & 28 deletions

File tree

wgpu-core/src/command/transfer.rs

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -37,34 +37,42 @@ pub enum CopySide {
3737
Destination,
3838
}
3939

40-
/// Error encountered while attempting a data transfer.
40+
/// Error encountered while checking offsets against a buffer.
4141
#[derive(Clone, Debug, Error)]
4242
#[non_exhaustive]
43-
pub enum TransferError {
44-
#[error("Source and destination cannot be the same buffer")]
45-
SameSourceDestinationBuffer,
46-
#[error(transparent)]
47-
MissingBufferUsage(#[from] MissingBufferUsageError),
48-
#[error(transparent)]
49-
MissingTextureUsage(#[from] MissingTextureUsageError),
50-
#[error("Start offset ({offset}) is out-of-bounds for buffer of size {buffer_size}")]
51-
BufferStartOffsetOverrun {
43+
pub enum BufferOverrunError {
44+
#[error("start offset ({offset}) is out-of-bounds for buffer of size {buffer_size}")]
45+
StartOffset {
5246
offset: BufferAddress,
5347
buffer_size: BufferAddress,
5448
side: CopySide,
5549
},
5650
#[error(
57-
"End offset (start at {} + size of {}) is out-of-bounds for buffer of size {}",
51+
"end offset (start at {} + size of {}) is out-of-bounds for buffer of size {}",
5852
offset,
5953
size,
6054
buffer_size
6155
)]
62-
BufferEndOffsetOverrun {
56+
EndOffset {
6357
offset: BufferAddress,
6458
size: BufferAddress,
6559
buffer_size: BufferAddress,
6660
side: CopySide,
6761
},
62+
}
63+
64+
/// Error encountered while attempting a data transfer.
65+
#[derive(Clone, Debug, Error)]
66+
#[non_exhaustive]
67+
pub enum TransferError {
68+
#[error("Source and destination cannot be the same buffer")]
69+
SameSourceDestinationBuffer,
70+
#[error(transparent)]
71+
MissingBufferUsage(#[from] MissingBufferUsageError),
72+
#[error(transparent)]
73+
MissingTextureUsage(#[from] MissingTextureUsageError),
74+
#[error("Transfer {_0}")]
75+
BufferOverrun(BufferOverrunError),
6876
#[error("Copy of {dimension:?} {start_offset}..{end_offset} would end up overrunning the bounds of the {side:?} texture of {dimension:?} size {texture_size}")]
6977
TextureOverrun {
7078
start_offset: u32,

wgpu-core/src/resource.rs

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -301,22 +301,8 @@ pub enum BufferAccessError {
301301
MapAborted,
302302
#[error(transparent)]
303303
InvalidResource(#[from] InvalidResourceError),
304-
#[error("Map start offset ({offset}) is out-of-bounds for buffer of size {buffer_size}")]
305-
MapStartOffsetOverrun {
306-
offset: wgt::BufferAddress,
307-
buffer_size: wgt::BufferAddress,
308-
},
309-
#[error(
310-
"Map end offset (start at {} + size of {}) is out-of-bounds for buffer of size {}",
311-
offset,
312-
size,
313-
buffer_size
314-
)]
315-
MapEndOffsetOverrun {
316-
offset: wgt::BufferAddress,
317-
size: wgt::BufferAddress,
318-
buffer_size: wgt::BufferAddress,
319-
},
304+
#[error("Map {_0}")]
305+
MapOverrun(BufferOverrunError),
320306
}
321307

322308
impl WebGpuError for BufferAccessError {

0 commit comments

Comments
 (0)