summaryrefslogtreecommitdiffstats
path: root/wgpu/src/backend.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2023-02-07 23:55:16 +0100
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2023-02-24 13:37:31 +0100
commitb8c1809ea101cece6943432fd3597f785c39af09 (patch)
tree662b5e85e67ff33be892811bc29bfe52ae041302 /wgpu/src/backend.rs
parent23ed352e83dcb8a13acdac1cd4c7e2a9df492ebd (diff)
downloadiced-b8c1809ea101cece6943432fd3597f785c39af09.tar.gz
iced-b8c1809ea101cece6943432fd3597f785c39af09.tar.bz2
iced-b8c1809ea101cece6943432fd3597f785c39af09.zip
Refactor `triangle::Pipeline` into `prepare` and `render` architecture
And get rid of the staging belt! :tada:
Diffstat (limited to '')
-rw-r--r--wgpu/src/backend.rs17
1 files changed, 10 insertions, 7 deletions
diff --git a/wgpu/src/backend.rs b/wgpu/src/backend.rs
index 90a511ef..8c4c0daa 100644
--- a/wgpu/src/backend.rs
+++ b/wgpu/src/backend.rs
@@ -70,7 +70,6 @@ impl Backend {
&mut self,
device: &wgpu::Device,
queue: &wgpu::Queue,
- staging_belt: &mut wgpu::util::StagingBelt,
encoder: &mut wgpu::CommandEncoder,
frame: &wgpu::TextureView,
primitives: &[Primitive],
@@ -95,7 +94,6 @@ impl Backend {
scale_factor,
transformation,
&layer,
- staging_belt,
encoder,
frame,
target_size,
@@ -104,6 +102,7 @@ impl Backend {
self.quad_pipeline.end_frame();
self.text_pipeline.end_frame();
+ self.triangle_pipeline.end_frame();
#[cfg(any(feature = "image", feature = "svg"))]
self.image_pipeline.end_frame(device, queue, encoder);
@@ -116,7 +115,6 @@ impl Backend {
scale_factor: f32,
transformation: Transformation,
layer: &Layer<'_>,
- staging_belt: &mut wgpu::util::StagingBelt,
encoder: &mut wgpu::CommandEncoder,
target: &wgpu::TextureView,
target_size: Size<u32>,
@@ -159,15 +157,20 @@ impl Backend {
let scaled = transformation
* Transformation::scale(scale_factor, scale_factor);
- self.triangle_pipeline.draw(
+ self.triangle_pipeline.prepare(
+ device,
+ queue,
+ &layer.meshes,
+ scaled,
+ );
+
+ self.triangle_pipeline.render(
device,
- staging_belt,
encoder,
target,
target_size,
- scaled,
- scale_factor,
&layer.meshes,
+ scale_factor,
);
}