gfx-rs / wgpu-rs

Rust bindings to wgpu native library
https://wgpu.rs
Mozilla Public License 2.0
1.69k stars 186 forks source link

Panic in device.create_buffer_init() with 'buffer range size invalid' #901

Closed geckoxx closed 3 years ago

geckoxx commented 3 years ago

This example causes a panic:

use wgpu::util::DeviceExt;

#[tokio::main]
async fn main() {
    let instance = wgpu::Instance::new(wgpu::BackendBit::PRIMARY);
    let adapter = instance
        .request_adapter(&wgpu::RequestAdapterOptions {
            ..Default::default()
        })
        .await
        .unwrap();

    let (device, _) = adapter
        .request_device(
            &wgpu::DeviceDescriptor {
                ..Default::default()
            },
            None,
        )
        .await
        .unwrap();

    let contents = &vec![0, 1, 0, 2, 0, 3];
    let _buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
        contents,
        label: None,
        usage: wgpu::BufferUsage::INDEX,
    });
}

thread 'main' panicked at 'Error in Buffer::get_mapped_range: buffer range size invalid: range_size 6 must be multiple of 4'

Is that expected behavior? Because in create_buffer_init the buffer gets created with padded size but it panics in get_mapped_range_mut().

kvark commented 3 years ago

Fixed by #900, I believe