fix: zeroable buffer_get_mapped_range size

According to spec, size can be Some(0).
This commit is contained in:
Luca Casonato 2021-05-06 20:35:26 +02:00 committed by Dzmitry Malyshau
parent 8895e28836
commit 751aa714f4
2 changed files with 4 additions and 6 deletions

View File

@ -128,7 +128,7 @@ impl Test<'_> {
println!("\t\t\tChecking {}", expect.name);
let buffer = wgc::id::TypedId::zip(expect.buffer.index, expect.buffer.epoch, backend);
let (ptr, size) =
wgc::gfx_select!(device => global.buffer_get_mapped_range(buffer, expect.offset, wgt::BufferSize::new(expect.data.len() as wgt::BufferAddress)))
wgc::gfx_select!(device => global.buffer_get_mapped_range(buffer, expect.offset, Some(expect.data.len() as wgt::BufferAddress)))
.unwrap();
let contents = unsafe { slice::from_raw_parts(ptr, size as usize) };
let expected_data = match expect.data {

View File

@ -26,9 +26,7 @@ use hal::{
};
use parking_lot::{Mutex, MutexGuard};
use thiserror::Error;
use wgt::{
BufferAddress, BufferSize, InputStepMode, TextureDimension, TextureFormat, TextureViewDimension,
};
use wgt::{BufferAddress, InputStepMode, TextureDimension, TextureFormat, TextureViewDimension};
use std::{
borrow::Cow,
@ -4685,7 +4683,7 @@ impl<G: GlobalIdentityHandlerFactory> Global<G> {
&self,
buffer_id: id::BufferId,
offset: BufferAddress,
size: Option<BufferSize>,
size: Option<BufferAddress>,
) -> Result<(*mut u8, u64), resource::BufferAccessError> {
profiling::scope!("get_mapped_range", "Buffer");
@ -4697,7 +4695,7 @@ impl<G: GlobalIdentityHandlerFactory> Global<G> {
.map_err(|_| resource::BufferAccessError::Invalid)?;
let range_size = if let Some(size) = size {
size.into()
size
} else if offset > buffer.size {
0
} else {