summaryrefslogtreecommitdiffstats
path: root/wgpu
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-11-10 20:06:24 +0100
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-11-10 20:06:24 +0100
commit9d4f664c946e6475eaf2e8719ba56beee84a8fb8 (patch)
treef76ca213383363b60988a9f92078b7dbf14a6fa1 /wgpu
parentb86accfe1cdc0a4404416eb3c68aa3cf9c242f6a (diff)
downloadiced-9d4f664c946e6475eaf2e8719ba56beee84a8fb8.tar.gz
iced-9d4f664c946e6475eaf2e8719ba56beee84a8fb8.tar.bz2
iced-9d4f664c946e6475eaf2e8719ba56beee84a8fb8.zip
Update `bytemuck` and remove `zerocopy` in `iced_wgpu`
Diffstat (limited to 'wgpu')
-rw-r--r--wgpu/Cargo.toml6
-rw-r--r--wgpu/src/image.rs27
-rw-r--r--wgpu/src/image/vector.rs4
-rw-r--r--wgpu/src/quad.rs12
-rw-r--r--wgpu/src/triangle.rs7
5 files changed, 28 insertions, 28 deletions
diff --git a/wgpu/Cargo.toml b/wgpu/Cargo.toml
index c07081fd..01fd720b 100644
--- a/wgpu/Cargo.toml
+++ b/wgpu/Cargo.toml
@@ -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"
diff --git a/wgpu/src/image.rs b/wgpu/src/image.rs
index 891dba1e..c256ca7e 100644
--- a/wgpu/src/image.rs
+++ b/wgpu/src/image.rs
@@ -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],
}
diff --git a/wgpu/src/image/vector.rs b/wgpu/src/image/vector.rs
index 7648aa7e..95df2e99 100644
--- a/wgpu/src/image/vector.rs
+++ b/wgpu/src/image/vector.rs
@@ -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,
)?;
diff --git a/wgpu/src/quad.rs b/wgpu/src/quad.rs
index d54f2577..24d20cfa 100644
--- a/wgpu/src/quad.rs
+++ b/wgpu/src/quad.rs
@@ -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,
diff --git a/wgpu/src/triangle.rs b/wgpu/src/triangle.rs
index 53ce454b..61a771d8 100644
--- a/wgpu/src/triangle.rs
+++ b/wgpu/src/triangle.rs
@@ -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`...