From 3a4d6fa29584228e206ecb1d0eeac6dd565cdb1c Mon Sep 17 00:00:00 2001 From: Igor Shaposhnik Date: Mon, 21 Jun 2021 19:14:03 +0000 Subject: [PATCH] Reduce code duplication between backends --- src/back/glsl/mod.rs | 4 +--- src/back/hlsl/writer.rs | 5 +---- src/back/mod.rs | 7 +++++++ src/back/msl/writer.rs | 6 +----- src/back/wgsl/writer.rs | 9 ++++----- 5 files changed, 14 insertions(+), 17 deletions(-) diff --git a/src/back/glsl/mod.rs b/src/back/glsl/mod.rs index 3a85a6c9ba..462e88031e 100644 --- a/src/back/glsl/mod.rs +++ b/src/back/glsl/mod.rs @@ -44,6 +44,7 @@ pub use features::Features; use crate::{ + back::{COMPONENTS, INDENT}, proc::{EntryPointIndex, NameKey, Namer, TypeResolution}, valid::{FunctionInfo, ModuleInfo}, Arena, ArraySize, BinaryOperator, Binding, BuiltIn, Bytes, ConservativeDepth, Constant, @@ -69,9 +70,6 @@ mod keywords; pub const SUPPORTED_CORE_VERSIONS: &[u16] = &[330, 400, 410, 420, 430, 440, 450]; /// List of supported es glsl versions pub const SUPPORTED_ES_VERSIONS: &[u16] = &[300, 310, 320]; -const INDENT: &str = " "; - -const COMPONENTS: &[char] = &['x', 'y', 'z', 'w']; /// glsl version #[derive(Debug, Copy, Clone, PartialEq)] diff --git a/src/back/hlsl/writer.rs b/src/back/hlsl/writer.rs index 9dc899277f..e2af05f64b 100644 --- a/src/back/hlsl/writer.rs +++ b/src/back/hlsl/writer.rs @@ -2,7 +2,7 @@ #![allow(dead_code)] use super::{Error, Options, ShaderModel}; use crate::{ - back::{hlsl::keywords::RESERVED, vector_size_str}, + back::{hlsl::keywords::RESERVED, vector_size_str, BAKE_PREFIX, COMPONENTS, INDENT}, proc::{EntryPointIndex, NameKey, Namer, TypeResolution}, valid::{FunctionInfo, ModuleInfo}, Arena, ArraySize, BuiltIn, Bytes, Constant, ConstantInner, Expression, FastHashMap, Function, @@ -11,10 +11,7 @@ use crate::{ }; use std::fmt::Write; -const INDENT: &str = " "; -const COMPONENTS: &[char] = &['x', 'y', 'z', 'w']; const LOCATION_SEMANTIC: &str = "LOC"; -const BAKE_PREFIX: &str = "_e"; /// Shorthand result used internally by the backend type BackendResult = Result<(), Error>; diff --git a/src/back/mod.rs b/src/back/mod.rs index 4874cadde2..c312c03172 100644 --- a/src/back/mod.rs +++ b/src/back/mod.rs @@ -13,6 +13,13 @@ pub mod spv; #[cfg(feature = "wgsl-out")] pub mod wgsl; +#[allow(dead_code)] +const COMPONENTS: &[char] = &['x', 'y', 'z', 'w']; +#[allow(dead_code)] +const INDENT: &str = " "; +#[allow(dead_code)] +const BAKE_PREFIX: &str = "_e"; + /// How should code generated by Naga do indexing bounds checks? /// /// When a vector, matrix, or array index is out of bounds—either negative, or diff --git a/src/back/msl/writer.rs b/src/back/msl/writer.rs index 7301c4f06b..ace3af23f8 100644 --- a/src/back/msl/writer.rs +++ b/src/back/msl/writer.rs @@ -4,7 +4,7 @@ use super::{ }; use crate::{ arena::{Arena, Handle}, - back::vector_size_str, + back::{vector_size_str, BAKE_PREFIX, COMPONENTS, INDENT}, proc::{EntryPointIndex, NameKey, Namer, TypeResolution}, valid::{Capabilities, FunctionInfo, GlobalUse, ModuleInfo}, FastHashMap, @@ -15,8 +15,6 @@ use std::{ }; const NAMESPACE: &str = "metal"; -const INDENT: &str = " "; -const BAKE_PREFIX: &str = "_e"; const WRAPPED_ARRAY_FIELD: &str = "inner"; #[derive(Clone)] @@ -305,8 +303,6 @@ fn scalar_kind_string(kind: crate::ScalarKind) -> &'static str { } } -const COMPONENTS: &[char] = &['x', 'y', 'z', 'w']; - fn separate(need_separator: bool) -> &'static str { if need_separator { "," diff --git a/src/back/wgsl/writer.rs b/src/back/wgsl/writer.rs index f37bd202ca..03b9a050e1 100644 --- a/src/back/wgsl/writer.rs +++ b/src/back/wgsl/writer.rs @@ -1,6 +1,9 @@ use super::Error; use crate::{ - back::{binary_operation_str, vector_size_str, wgsl::keywords::RESERVED}, + back::{ + binary_operation_str, vector_size_str, wgsl::keywords::RESERVED, BAKE_PREFIX, COMPONENTS, + INDENT, + }, proc::{EntryPointIndex, NameKey, Namer, TypeResolution}, valid::{FunctionInfo, ModuleInfo}, Arena, ArraySize, Binding, Constant, ConstantInner, Expression, FastHashMap, Function, @@ -10,10 +13,6 @@ use crate::{ }; use std::fmt::Write; -const INDENT: &str = " "; -const COMPONENTS: &[char] = &['x', 'y', 'z', 'w']; -const BAKE_PREFIX: &str = "_e"; - /// Shorthand result used internally by the backend type BackendResult = Result<(), Error>;