[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:
Teodor Tanasoaia 2024-07-17 16:33:48 +02:00 committed by GitHub
parent 241b52f7ea
commit 7e112ca4c0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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.