Skip to content

Commit fcc15df

Browse files
WIP: refactor(core): ArcCommand::WriteBuffer: serialize offset and size instead of start..end
1 parent 6741133 commit fcc15df

5 files changed

Lines changed: 18 additions & 19 deletions

File tree

player/src/lib.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -377,19 +377,19 @@ impl Player {
377377
Action::WriteBuffer {
378378
id,
379379
data,
380-
range,
380+
offset,
381+
size,
381382
queued,
382383
} => {
383384
let buffer = self.resolve_buffer_id(id);
384385
let bin = loader.load(&data);
385-
let size = (range.end - range.start) as usize;
386386
if queued {
387387
queue
388-
.write_buffer(buffer, range.start, &bin)
388+
.write_buffer(buffer, offset, &bin)
389389
.expect("Queue::write_buffer error");
390390
} else {
391391
device
392-
.set_buffer_data(&buffer, range.start, &bin[..size])
392+
.set_buffer_data(&buffer, offset, &bin[..size.try_into().unwrap()])
393393
.expect("Device::set_buffer_data error");
394394
}
395395
}

wgpu-core/src/device/queue.rs

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1615,19 +1615,13 @@ impl Global {
16151615
#[cfg(feature = "trace")]
16161616
if let Some(ref mut trace) = *queue.device.trace.lock() {
16171617
use crate::device::trace::DataKind;
1618-
1619-
// NOTE: This is technically redundant with the checks that are done later, but that's
1620-
// how `WriteBuffer` is currently stored, so…
1621-
let end_offset = buffer_offset
1622-
.checked_add(data.len() as u64)
1623-
.ok_or(TransferError::SizeOverflow)?;
1624-
1625-
let range = buffer_offset..end_offset;
1618+
let size = data.len() as u64;
16261619
let data = trace.make_binary(DataKind::Bin, data);
16271620
trace.add(Action::WriteBuffer {
16281621
id: buffer.to_trace(),
16291622
data,
1630-
range,
1623+
offset: buffer_offset,
1624+
size,
16311625
queued: true,
16321626
});
16331627
}

wgpu-core/src/device/trace.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ mod record;
33
#[cfg(feature = "replay")]
44
mod replay;
55

6-
use core::{convert::Infallible, ops::Range};
6+
use core::convert::Infallible;
77

88
use alloc::{string::String, vec::Vec};
99
use macro_rules_attribute::apply;
@@ -221,7 +221,8 @@ pub enum Action<'a, R: ReferenceType> {
221221
WriteBuffer {
222222
id: R::Buffer,
223223
data: Data,
224-
range: Range<wgt::BufferAddress>,
224+
offset: wgt::BufferAddress,
225+
size: wgt::BufferAddress,
225226
queued: bool,
226227
},
227228
WriteTexture {

wgpu-core/src/device/trace/record.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -893,12 +893,14 @@ fn action_to_owned(action: Action<'_, PointerReferences>) -> Action<'static, Poi
893893
A::WriteBuffer {
894894
id,
895895
data,
896-
range,
896+
offset,
897+
size,
897898
queued,
898899
} => A::WriteBuffer {
899900
id,
900901
data,
901-
range,
902+
offset,
903+
size,
902904
queued,
903905
},
904906
A::WriteTexture {

wgpu-core/src/resource.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -847,8 +847,9 @@ impl Buffer {
847847
trace.add(trace::Action::WriteBuffer {
848848
id: self.to_trace(),
849849
data,
850+
offset: 0,
850851
// NOTE: `self.size` here corresponds to `data`'s actual length.
851-
range: 0..self.size,
852+
size: self.size,
852853
queued: true,
853854
});
854855
}
@@ -914,7 +915,8 @@ impl Buffer {
914915
trace.add(trace::Action::WriteBuffer {
915916
id: self.to_trace(),
916917
data,
917-
range: range.clone(),
918+
offset: range.start,
919+
size,
918920
queued: false,
919921
});
920922
}

0 commit comments

Comments
 (0)