Update bytemuck
and remove zerocopy
in iced_wgpu
This commit is contained in:
parent
b86accfe1c
commit
9d4f664c94
@ -16,13 +16,15 @@ default_system_font = ["iced_graphics/font-source"]
|
||||
wgpu = "0.6"
|
||||
wgpu_glyph = "0.10"
|
||||
glyph_brush = "0.7"
|
||||
zerocopy = "0.3"
|
||||
bytemuck = "1.2"
|
||||
raw-window-handle = "0.3"
|
||||
log = "0.4"
|
||||
guillotiere = "0.6"
|
||||
futures = "0.3"
|
||||
|
||||
[dependencies.bytemuck]
|
||||
version = "1.4"
|
||||
features = ["derive"]
|
||||
|
||||
[dependencies.iced_native]
|
||||
version = "0.2"
|
||||
path = "../native"
|
||||
|
@ -13,7 +13,8 @@ use iced_graphics::layer;
|
||||
use iced_native::Rectangle;
|
||||
use std::cell::RefCell;
|
||||
use std::mem;
|
||||
use zerocopy::AsBytes;
|
||||
|
||||
use bytemuck::{Pod, Zeroable};
|
||||
|
||||
#[cfg(feature = "image")]
|
||||
use iced_native::image;
|
||||
@ -219,14 +220,14 @@ impl Pipeline {
|
||||
let vertices =
|
||||
device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
|
||||
label: Some("iced_wgpu::image vertex buffer"),
|
||||
contents: QUAD_VERTS.as_bytes(),
|
||||
contents: bytemuck::cast_slice(&QUAD_VERTS),
|
||||
usage: wgpu::BufferUsage::VERTEX,
|
||||
});
|
||||
|
||||
let indices =
|
||||
device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
|
||||
label: Some("iced_wgpu::image index buffer"),
|
||||
contents: QUAD_INDICES.as_bytes(),
|
||||
contents: bytemuck::cast_slice(&QUAD_INDICES),
|
||||
usage: wgpu::BufferUsage::INDEX,
|
||||
});
|
||||
|
||||
@ -385,12 +386,9 @@ impl Pipeline {
|
||||
device,
|
||||
);
|
||||
|
||||
uniforms_buffer.copy_from_slice(
|
||||
Uniforms {
|
||||
transform: transformation.into(),
|
||||
}
|
||||
.as_bytes(),
|
||||
);
|
||||
uniforms_buffer.copy_from_slice(bytemuck::bytes_of(&Uniforms {
|
||||
transform: transformation.into(),
|
||||
}));
|
||||
}
|
||||
|
||||
let mut i = 0;
|
||||
@ -411,8 +409,9 @@ impl Pipeline {
|
||||
device,
|
||||
);
|
||||
|
||||
instances_buffer
|
||||
.copy_from_slice(instances[i..i + amount].as_bytes());
|
||||
instances_buffer.copy_from_slice(bytemuck::cast_slice(
|
||||
&instances[i..i + amount],
|
||||
));
|
||||
|
||||
let mut render_pass =
|
||||
encoder.begin_render_pass(&wgpu::RenderPassDescriptor {
|
||||
@ -463,7 +462,7 @@ impl Pipeline {
|
||||
}
|
||||
|
||||
#[repr(C)]
|
||||
#[derive(Clone, Copy, AsBytes)]
|
||||
#[derive(Clone, Copy, Zeroable, Pod)]
|
||||
pub struct Vertex {
|
||||
_position: [f32; 2],
|
||||
}
|
||||
@ -486,7 +485,7 @@ const QUAD_VERTS: [Vertex; 4] = [
|
||||
];
|
||||
|
||||
#[repr(C)]
|
||||
#[derive(Debug, Clone, Copy, AsBytes)]
|
||||
#[derive(Debug, Clone, Copy, Zeroable, Pod)]
|
||||
struct Instance {
|
||||
_position: [f32; 2],
|
||||
_size: [f32; 2],
|
||||
@ -500,7 +499,7 @@ impl Instance {
|
||||
}
|
||||
|
||||
#[repr(C)]
|
||||
#[derive(Debug, Clone, Copy, AsBytes)]
|
||||
#[derive(Debug, Clone, Copy, Zeroable, Pod)]
|
||||
struct Uniforms {
|
||||
transform: [f32; 16],
|
||||
}
|
||||
|
@ -2,8 +2,6 @@ use crate::image::atlas::{self, Atlas};
|
||||
use iced_native::svg;
|
||||
use std::collections::{HashMap, HashSet};
|
||||
|
||||
use zerocopy::AsBytes;
|
||||
|
||||
pub enum Svg {
|
||||
Loaded(resvg::usvg::Tree),
|
||||
NotFound,
|
||||
@ -119,7 +117,7 @@ impl Cache {
|
||||
let allocation = texture_atlas.upload(
|
||||
width,
|
||||
height,
|
||||
canvas.get_data().as_bytes(),
|
||||
bytemuck::cast_slice(canvas.get_data()),
|
||||
device,
|
||||
encoder,
|
||||
)?;
|
||||
|
@ -2,9 +2,9 @@ use crate::Transformation;
|
||||
use iced_graphics::layer;
|
||||
use iced_native::Rectangle;
|
||||
|
||||
use bytemuck::{Pod, Zeroable};
|
||||
use std::mem;
|
||||
use wgpu::util::DeviceExt;
|
||||
use zerocopy::AsBytes;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct Pipeline {
|
||||
@ -156,14 +156,14 @@ impl Pipeline {
|
||||
let vertices =
|
||||
device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
|
||||
label: Some("iced_wgpu::quad vertex buffer"),
|
||||
contents: QUAD_VERTS.as_bytes(),
|
||||
contents: bytemuck::cast_slice(&QUAD_VERTS),
|
||||
usage: wgpu::BufferUsage::VERTEX,
|
||||
});
|
||||
|
||||
let indices =
|
||||
device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
|
||||
label: Some("iced_wgpu::quad index buffer"),
|
||||
contents: QUAD_INDICES.as_bytes(),
|
||||
contents: bytemuck::cast_slice(&QUAD_INDICES),
|
||||
usage: wgpu::BufferUsage::INDEX,
|
||||
});
|
||||
|
||||
@ -207,7 +207,7 @@ impl Pipeline {
|
||||
device,
|
||||
);
|
||||
|
||||
constants_buffer.copy_from_slice(uniforms.as_bytes());
|
||||
constants_buffer.copy_from_slice(bytemuck::bytes_of(&uniforms));
|
||||
}
|
||||
|
||||
let mut i = 0;
|
||||
@ -271,7 +271,7 @@ impl Pipeline {
|
||||
}
|
||||
|
||||
#[repr(C)]
|
||||
#[derive(Clone, Copy, AsBytes)]
|
||||
#[derive(Clone, Copy, Zeroable, Pod)]
|
||||
pub struct Vertex {
|
||||
_position: [f32; 2],
|
||||
}
|
||||
@ -296,7 +296,7 @@ const QUAD_VERTS: [Vertex; 4] = [
|
||||
const MAX_INSTANCES: usize = 100_000;
|
||||
|
||||
#[repr(C)]
|
||||
#[derive(Debug, Clone, Copy, AsBytes)]
|
||||
#[derive(Debug, Clone, Copy, Zeroable, Pod)]
|
||||
struct Uniforms {
|
||||
transform: [f32; 16],
|
||||
scale: f32,
|
||||
|
@ -1,8 +1,9 @@
|
||||
//! Draw meshes of triangles.
|
||||
use crate::{settings, Transformation};
|
||||
use iced_graphics::layer;
|
||||
|
||||
use bytemuck::{Pod, Zeroable};
|
||||
use std::mem;
|
||||
use zerocopy::AsBytes;
|
||||
|
||||
pub use iced_graphics::triangle::{Mesh2D, Vertex2D};
|
||||
|
||||
@ -322,7 +323,7 @@ impl Pipeline {
|
||||
}
|
||||
}
|
||||
|
||||
let uniforms = uniforms.as_bytes();
|
||||
let uniforms = bytemuck::cast_slice(&uniforms);
|
||||
|
||||
if let Some(uniforms_size) =
|
||||
wgpu::BufferSize::new(uniforms.len() as u64)
|
||||
@ -409,7 +410,7 @@ impl Pipeline {
|
||||
}
|
||||
|
||||
#[repr(C)]
|
||||
#[derive(Debug, Clone, Copy, AsBytes)]
|
||||
#[derive(Debug, Clone, Copy, Zeroable, Pod)]
|
||||
struct Uniforms {
|
||||
transform: [f32; 16],
|
||||
// We need to align this to 256 bytes to please `wgpu`...
|
||||
|
Loading…
x
Reference in New Issue
Block a user