aboutsummaryrefslogtreecommitdiff
path: root/src/command_buffer/validity/push_constants.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/command_buffer/validity/push_constants.rs')
-rw-r--r--src/command_buffer/validity/push_constants.rs52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/command_buffer/validity/push_constants.rs b/src/command_buffer/validity/push_constants.rs
new file mode 100644
index 0000000..65b749e
--- /dev/null
+++ b/src/command_buffer/validity/push_constants.rs
@@ -0,0 +1,52 @@
+// Copyright (c) 2017 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.
+
+use crate::pipeline::layout::PipelineLayout;
+use std::error;
+use std::fmt;
+
+/// Checks whether push constants are compatible with the pipeline.
+pub fn check_push_constants_validity<Pc>(
+ pipeline_layout: &PipelineLayout,
+ push_constants: &Pc,
+) -> Result<(), CheckPushConstantsValidityError>
+where
+ Pc: ?Sized,
+{
+ // TODO
+ if !true {
+ return Err(CheckPushConstantsValidityError::IncompatiblePushConstants);
+ }
+
+ Ok(())
+}
+
+/// Error that can happen when checking push constants validity.
+#[derive(Debug, Copy, Clone)]
+pub enum CheckPushConstantsValidityError {
+ /// The push constants are incompatible with the pipeline layout.
+ IncompatiblePushConstants,
+}
+
+impl error::Error for CheckPushConstantsValidityError {}
+
+impl fmt::Display for CheckPushConstantsValidityError {
+ #[inline]
+ fn fmt(&self, fmt: &mut fmt::Formatter) -> Result<(), fmt::Error> {
+ write!(
+ fmt,
+ "{}",
+ match *self {
+ CheckPushConstantsValidityError::IncompatiblePushConstants => {
+ "the push constants are incompatible with the pipeline layout"
+ }
+ }
+ )
+ }
+}