Fixed and updated presubmit checks.

Added rasterizer to testing and checking and removed rive-rs from
clippy checks. Also fixed a lot of clippy errors.

Change-Id: I1443a8156382a03acd03f78e56f7623008b4e079
Reviewed-on: https://fuchsia-review.googlesource.com/c/forma/+/740102
Reviewed-by: Pierre Labatut <plabatut@google.com>
diff --git a/Cargo.toml b/Cargo.toml
index 92c8d95..d2a0083 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -11,7 +11,6 @@
     "gpu/conveyor-sort",
     "gpu/painter",
     "gpu/renderer",
-    "rive-rs",
     "surpass",
 ]
 members = [
diff --git a/demo/src/demos/svg.rs b/demo/src/demos/svg.rs
index d6eda9c..df4807e 100644
--- a/demo/src/demos/svg.rs
+++ b/demo/src/demos/svg.rs
@@ -125,7 +125,7 @@
     attrs.get("style").and_then(|style| {
         StyleParser::from(style.as_ref()).find_map(|pair| {
             pair.ok().and_then(|pair| {
-                (pair.0 == "mix-blend-mode").then(|| match pair.1 {
+                (pair.0 == "mix-blend-mode").then_some(match pair.1 {
                     "normal" => BlendMode::Over,
                     "multiply" => BlendMode::Multiply,
                     "screen" => BlendMode::Screen,
diff --git a/e2e_tests/tests/test_env.rs b/e2e_tests/tests/test_env.rs
index 0c03ce1..b31fbfd 100644
--- a/e2e_tests/tests/test_env.rs
+++ b/e2e_tests/tests/test_env.rs
@@ -299,9 +299,9 @@
     let gpu_expected = expected_image_path(test_name, RendererType::Gpu);
     report.add_result(
         test_name,
-        cpu_expected.exists().then(|| cpu_expected),
+        cpu_expected.exists().then_some(cpu_expected),
         cpu_actual,
-        gpu_expected.exists().then(|| gpu_expected),
+        gpu_expected.exists().then_some(gpu_expected),
         gpu_actual,
         tolerance,
         status,
diff --git a/gpu/rasterizer/src/lib.rs b/gpu/rasterizer/src/lib.rs
index 95046ad..ce35ec5 100644
--- a/gpu/rasterizer/src/lib.rs
+++ b/gpu/rasterizer/src/lib.rs
@@ -200,11 +200,18 @@
         let context = crate::init(&device);
 
         let segments_padded_count = lines.segments_count();
+        let size = (segments_padded_count * std::mem::size_of::<u64>()) as wgpu::BufferAddress;
 
         let segments_buffer = device.create_buffer(&wgpu::BufferDescriptor {
             label: None,
-            size: (segments_padded_count * std::mem::size_of::<u64>()) as wgpu::BufferAddress,
-            usage: wgpu::BufferUsages::STORAGE | wgpu::BufferUsages::MAP_READ,
+            size,
+            usage: wgpu::BufferUsages::STORAGE | wgpu::BufferUsages::COPY_SRC,
+            mapped_at_creation: false,
+        });
+        let staging_buffer = device.create_buffer(&wgpu::BufferDescriptor {
+            label: None,
+            size,
+            usage: wgpu::BufferUsages::MAP_READ | wgpu::BufferUsages::COPY_DST,
             mapped_at_creation: false,
         });
 
@@ -218,10 +225,13 @@
             None,
         );
 
+        encoder.copy_buffer_to_buffer(&segments_buffer, 0, &staging_buffer, 0, size);
+
         queue.submit(Some(encoder.finish()));
         device.poll(wgpu::Maintain::Wait);
+
         let mut actual_segments = {
-            let buffer_slice = segments_buffer.slice(..);
+            let buffer_slice = staging_buffer.slice(..);
 
             buffer_slice.map_async(wgpu::MapMode::Read, |_| ());
             device.poll(wgpu::Maintain::Wait);
@@ -233,7 +243,8 @@
             assert!(after.is_empty());
             actual_segments.to_vec()
         };
-        segments_buffer.unmap();
+
+        staging_buffer.unmap();
         actual_segments.sort();
 
         return actual_segments;
diff --git a/presubmit.sh b/presubmit.sh
index e1497f0..8a767a8 100755
--- a/presubmit.sh
+++ b/presubmit.sh
@@ -13,6 +13,8 @@
 echo "Checking pristine..."
 RUSTFLAGS="-D warnings" cargo check -q -p pristine
 echo "Checking renderer..."
+RUSTFLAGS="-D warnings" cargo check -q -p rasterizer
+echo "Checking rasterizer..."
 RUSTFLAGS="-D warnings" cargo check -q -p renderer
 echo "Checking web..."
 (
@@ -23,6 +25,8 @@
 cargo test -q -p conveyor-sort
 echo "Testing painter..."
 cargo test -q -p painter
+echo "Testing rasterizer..."
+cargo test -q -p rasterizer
 echo "Testing renderer..."
 cargo test -q -p renderer
 echo "Checking formatting..."
@@ -32,6 +36,6 @@
 echo "Running forma doc tests..."
 cargo test -q --doc -p forma
 echo "Running clippy..."
-cargo clippy -q --all-targets --all-features -- -D warnings
+cargo clippy -q --all-targets --all-features --no-deps -- -D warnings
 echo
 echo "Pre-submit passed successfully."