diff options
Diffstat (limited to 'src/pipeline/input_assembly.rs')
-rw-r--r-- | src/pipeline/input_assembly.rs | 136 |
1 files changed, 0 insertions, 136 deletions
diff --git a/src/pipeline/input_assembly.rs b/src/pipeline/input_assembly.rs deleted file mode 100644 index d797d0d..0000000 --- a/src/pipeline/input_assembly.rs +++ /dev/null @@ -1,136 +0,0 @@ -// Copyright (c) 2016 The vulkano developers -// Licensed under the Apache License, Version 2.0 -// <LICENSE-APACHE or -// https://www.apache.org/licenses/LICENSE-2.0> or the MIT -// license <LICENSE-MIT or https://opensource.org/licenses/MIT>, -// at your option. All files in the project carrying such -// notice may not be copied, modified, or distributed except -// according to those terms. - -//! Assembling vertices into primitives. -//! -//! The input assembly is the stage where lists of vertices are turned into primitives. -//! - -/// How the input assembly stage should behave. -#[derive(Copy, Clone, Debug)] -#[deprecated] -pub struct InputAssembly { - /// The type of primitives. - /// - /// Note that some topologies don't support primitive restart. - pub topology: PrimitiveTopology, - - /// If true, then the special index value `0xffff` or `0xffffffff` will tell the GPU that it is - /// the end of the current primitive. A new primitive will restart at the next index. - /// - /// Note that some topologies don't support primitive restart. - pub primitive_restart_enable: bool, -} - -impl InputAssembly { - /// Builds an `InputAssembly` struct with the `TriangleList` topology. - #[inline] - pub fn triangle_list() -> InputAssembly { - InputAssembly { - topology: PrimitiveTopology::TriangleList, - primitive_restart_enable: false, - } - } -} - -/// Describes how vertices must be grouped together to form primitives. -/// -/// Note that some topologies don't support primitive restart. -#[derive(Copy, Clone, Debug, PartialEq, Eq)] -pub enum PrimitiveTopology { - PointList, - LineList, - LineStrip, - TriangleList, - TriangleStrip, - TriangleFan, - LineListWithAdjacency, - LineStripWithAdjacency, - TriangleListWithAdjacency, - TriangleStripWithAdjacency, - PatchList { vertices_per_patch: u32 }, -} - -impl From<PrimitiveTopology> for ash::vk::PrimitiveTopology { - #[inline] - fn from(val: PrimitiveTopology) -> ash::vk::PrimitiveTopology { - match val { - PrimitiveTopology::PointList => ash::vk::PrimitiveTopology::POINT_LIST, - PrimitiveTopology::LineList => ash::vk::PrimitiveTopology::LINE_LIST, - PrimitiveTopology::LineStrip => ash::vk::PrimitiveTopology::LINE_STRIP, - PrimitiveTopology::TriangleList => ash::vk::PrimitiveTopology::TRIANGLE_LIST, - PrimitiveTopology::TriangleStrip => ash::vk::PrimitiveTopology::TRIANGLE_STRIP, - PrimitiveTopology::TriangleFan => ash::vk::PrimitiveTopology::TRIANGLE_FAN, - PrimitiveTopology::LineListWithAdjacency => { - ash::vk::PrimitiveTopology::LINE_LIST_WITH_ADJACENCY - } - PrimitiveTopology::LineStripWithAdjacency => { - ash::vk::PrimitiveTopology::LINE_STRIP_WITH_ADJACENCY - } - PrimitiveTopology::TriangleListWithAdjacency => { - ash::vk::PrimitiveTopology::TRIANGLE_LIST_WITH_ADJACENCY - } - PrimitiveTopology::TriangleStripWithAdjacency => { - ash::vk::PrimitiveTopology::TRIANGLE_STRIP_WITH_ADJACENCY - } - PrimitiveTopology::PatchList { .. } => ash::vk::PrimitiveTopology::PATCH_LIST, - } - } -} - -impl PrimitiveTopology { - /// Returns true if this primitive topology supports using primitives restart. - #[inline] - pub fn supports_primitive_restart(&self) -> bool { - match *self { - PrimitiveTopology::LineStrip => true, - PrimitiveTopology::TriangleStrip => true, - PrimitiveTopology::TriangleFan => true, - PrimitiveTopology::LineStripWithAdjacency => true, - PrimitiveTopology::TriangleStripWithAdjacency => true, - _ => false, - } - } -} - -/// Trait for types that can be used as indices by the GPU. -pub unsafe trait Index { - /// Returns the type of data. - fn ty() -> IndexType; -} - -unsafe impl Index for u16 { - #[inline(always)] - fn ty() -> IndexType { - IndexType::U16 - } -} - -unsafe impl Index for u32 { - #[inline(always)] - fn ty() -> IndexType { - IndexType::U32 - } -} - -/// An enumeration of all valid index types. -#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)] -#[allow(missing_docs)] -#[repr(i32)] -pub enum IndexType { - U16 = ash::vk::IndexType::UINT16.as_raw(), - U32 = ash::vk::IndexType::UINT32.as_raw(), -} - -impl From<IndexType> for ash::vk::IndexType { - #[inline] - fn from(val: IndexType) -> Self { - Self::from_raw(val as i32) - } -} |