aboutsummaryrefslogtreecommitdiff
path: root/stockton-render/src/builders/renderpass.rs
diff options
context:
space:
mode:
Diffstat (limited to 'stockton-render/src/builders/renderpass.rs')
-rw-r--r--stockton-render/src/builders/renderpass.rs75
1 files changed, 0 insertions, 75 deletions
diff --git a/stockton-render/src/builders/renderpass.rs b/stockton-render/src/builders/renderpass.rs
deleted file mode 100644
index 43f0eb2..0000000
--- a/stockton-render/src/builders/renderpass.rs
+++ /dev/null
@@ -1,75 +0,0 @@
-use crate::types::*;
-
-use std::iter::{empty, once};
-
-use anyhow::Result;
-use hal::pass::{Attachment, AttachmentRef, SubpassDesc};
-
-#[derive(Debug, Clone)]
-pub struct RenderpassSpec {
- pub colors: Vec<Attachment>,
- pub depth: Option<Attachment>,
- pub inputs: Vec<Attachment>,
- pub resolves: Vec<Attachment>,
- pub preserves: Vec<Attachment>,
-}
-
-impl RenderpassSpec {
- pub fn build_renderpass(self, device: &mut DeviceT) -> Result<RenderPassT> {
- let mut next_offset = 0;
-
- let colors: Vec<AttachmentRef> = self
- .colors
- .iter()
- .enumerate()
- .map(|(i, a)| (next_offset + i, a.layouts.end))
- .collect();
- next_offset = colors.len();
-
- let depth_stencil = self.depth.as_ref().map(|x| (next_offset, x.layouts.end));
- if depth_stencil.is_some() {
- next_offset += 1;
- }
-
- let inputs: Vec<AttachmentRef> = self
- .inputs
- .iter()
- .enumerate()
- .map(|(i, a)| (next_offset + i, a.layouts.end))
- .collect();
- next_offset += inputs.len();
-
- let resolves: Vec<AttachmentRef> = self
- .resolves
- .iter()
- .enumerate()
- .map(|(i, a)| (next_offset + i, a.layouts.end))
- .collect();
- next_offset += resolves.len();
-
- let preserves: Vec<usize> = self
- .preserves
- .iter()
- .enumerate()
- .map(|(i, _a)| next_offset + i)
- .collect();
-
- let sp_desc = SubpassDesc {
- colors: colors.as_slice(),
- depth_stencil: depth_stencil.as_ref(),
- inputs: inputs.as_slice(),
- resolves: resolves.as_slice(),
- preserves: preserves.as_slice(),
- };
-
- let all_attachments = self
- .colors
- .into_iter()
- .chain(self.depth.into_iter())
- .chain(self.inputs.into_iter())
- .chain(self.resolves.into_iter())
- .chain(self.preserves.into_iter());
-
- Ok(unsafe { device.create_render_pass(all_attachments, once(sp_desc), empty())? })
- }
-}