mirror of
https://github.com/gfx-rs/wgpu.git
synced 2024-11-25 00:03:29 +00:00
[wgpu-core] fix length of copy in queue_write_texture
(#5973)
The size of the given `data` might be less than the size of the staging buffer.
This issue became apparent with the refactor in 6f16ea460a
(https://github.com/gfx-rs/wgpu/pull/5946) since there is now an assert in `StagingBuffer.write()`.
Ruffle ran into this in https://github.com/gfx-rs/wgpu/issues/3193#issuecomment-2231209711.
This commit is contained in:
parent
241b52f7ea
commit
7e112ca4c0
@ -781,7 +781,14 @@ impl Global {
|
||||
if stage_bytes_per_row == bytes_per_row {
|
||||
profiling::scope!("copy aligned");
|
||||
// Fast path if the data is already being aligned optimally.
|
||||
staging_buffer.write(&data[data_layout.offset as usize..]);
|
||||
unsafe {
|
||||
staging_buffer.write_with_offset(
|
||||
data,
|
||||
data_layout.offset as isize,
|
||||
0,
|
||||
(data.len() as u64 - data_layout.offset) as usize,
|
||||
);
|
||||
}
|
||||
} else {
|
||||
profiling::scope!("copy chunked");
|
||||
// Copy row by row into the optimal alignment.
|
||||
|
Loading…
Reference in New Issue
Block a user