diff --git a/naga/src/front/glsl/parser_tests.rs b/naga/src/front/glsl/parser_tests.rs index 0f4fbab22f..a111d4d09d 100644 --- a/naga/src/front/glsl/parser_tests.rs +++ b/naga/src/front/glsl/parser_tests.rs @@ -547,7 +547,6 @@ fn constants() { constants.next().unwrap().1, &Constant { name: Some("a".to_owned()), - r#override: crate::Override::None, ty: ty_handle, init: init_handle } @@ -557,7 +556,6 @@ fn constants() { constants.next().unwrap().1, &Constant { name: Some("b".to_owned()), - r#override: crate::Override::None, ty: ty_handle, init: init_handle } diff --git a/naga/src/front/glsl/variables.rs b/naga/src/front/glsl/variables.rs index 5af2b228f0..d1a57b4223 100644 --- a/naga/src/front/glsl/variables.rs +++ b/naga/src/front/glsl/variables.rs @@ -472,7 +472,6 @@ impl Frontend { let constant = Constant { name: name.clone(), - r#override: crate::Override::None, ty, init, }; diff --git a/naga/src/front/spv/mod.rs b/naga/src/front/spv/mod.rs index e7f07ebc58..ec67dc5524 100644 --- a/naga/src/front/spv/mod.rs +++ b/naga/src/front/spv/mod.rs @@ -197,7 +197,6 @@ struct Decoration { location: Option, desc_set: Option, desc_index: Option, - specialization: Option, storage_buffer: bool, offset: Option, array_stride: Option, @@ -217,11 +216,6 @@ impl Decoration { } } - fn specialization(&self) -> crate::Override { - self.specialization - .map_or(crate::Override::None, crate::Override::ByNameOrId) - } - const fn resource_binding(&self) -> Option { match *self { Decoration { @@ -753,9 +747,6 @@ impl> Frontend { spirv::Decoration::RowMajor => { dec.matrix_major = Some(Majority::Row); } - spirv::Decoration::SpecId => { - dec.specialization = Some(self.next()?); - } other => { log::warn!("Unknown decoration {:?}", other); for _ in base_words + 1..inst.wc { @@ -4919,7 +4910,6 @@ impl> Frontend { LookupConstant { handle: module.constants.append( crate::Constant { - r#override: decor.specialization(), name: decor.name, ty, init, @@ -4970,7 +4960,6 @@ impl> Frontend { LookupConstant { handle: module.constants.append( crate::Constant { - r#override: decor.specialization(), name: decor.name, ty, init, @@ -5005,7 +4994,6 @@ impl> Frontend { .append(crate::Expression::ZeroValue(ty), span); let handle = module.constants.append( crate::Constant { - r#override: decor.specialization(), name: decor.name, ty, init, @@ -5044,7 +5032,6 @@ impl> Frontend { LookupConstant { handle: module.constants.append( crate::Constant { - r#override: decor.specialization(), name: decor.name, ty, init, diff --git a/naga/src/front/wgsl/lower/mod.rs b/naga/src/front/wgsl/lower/mod.rs index a727d6379b..b7550d3931 100644 --- a/naga/src/front/wgsl/lower/mod.rs +++ b/naga/src/front/wgsl/lower/mod.rs @@ -924,7 +924,6 @@ impl<'source, 'temp> Lowerer<'source, 'temp> { let handle = ctx.module.constants.append( crate::Constant { name: Some(c.name.name.to_string()), - r#override: crate::Override::None, ty: inferred_type, init, }, diff --git a/naga/src/lib.rs b/naga/src/lib.rs index e140ad6aef..c9c12e8bfa 100644 --- a/naga/src/lib.rs +++ b/naga/src/lib.rs @@ -175,7 +175,7 @@ tree. A Naga *constant expression* is one of the following [`Expression`] variants, whose operands (if any) are also constant expressions: - [`Literal`] -- [`Constant`], for [`Constant`s][const_type] whose [`override`] is [`None`] +- [`Constant`], for [`Constant`s][const_type] whose `override` is `None` - [`ZeroValue`], for fixed-size types - [`Compose`] - [`Access`] @@ -195,7 +195,7 @@ A constant expression can be evaluated at module translation time. A Naga *override expression* is the same as a [constant expression], except that it is also allowed to refer to [`Constant`s][const_type] -whose [`override`] is something other than [`None`]. +whose `override` is something other than `None`. An override expression can be evaluated at pipeline creation time. @@ -239,8 +239,6 @@ An override expression can be evaluated at pipeline creation time. [`As`]: Expression::As [const_type]: Constant -[`override`]: Constant::override -[`None`]: Override::None [constant expression]: index.html#constant-expressions */ @@ -873,17 +871,6 @@ pub enum Literal { Bool(bool), } -#[derive(Debug, PartialEq)] -#[cfg_attr(feature = "clone", derive(Clone))] -#[cfg_attr(feature = "serialize", derive(Serialize))] -#[cfg_attr(feature = "deserialize", derive(Deserialize))] -#[cfg_attr(feature = "arbitrary", derive(Arbitrary))] -pub enum Override { - None, - ByName, - ByNameOrId(u32), -} - /// Constant value. #[derive(Debug, PartialEq)] #[cfg_attr(feature = "clone", derive(Clone))] @@ -892,7 +879,6 @@ pub enum Override { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] pub struct Constant { pub name: Option, - pub r#override: Override, pub ty: Handle, /// The value of the constant. @@ -900,12 +886,10 @@ pub struct Constant { /// This [`Handle`] refers to [`Module::const_expressions`], not /// any [`Function::expressions`] arena. /// - /// If [`override`] is [`None`], then this must be a Naga + /// If `override` is `None`, then this must be a Naga /// [constant expression]. Otherwise, this may be a Naga /// [override expression] or [constant expression]. /// - /// [`override`]: Constant::override - /// [`None`]: Override::None /// [constant expression]: index.html#constant-expressions /// [override expression]: index.html#override-expressions pub init: Handle, diff --git a/naga/src/proc/constant_evaluator.rs b/naga/src/proc/constant_evaluator.rs index e3c07f9e16..2985253057 100644 --- a/naga/src/proc/constant_evaluator.rs +++ b/naga/src/proc/constant_evaluator.rs @@ -1360,7 +1360,6 @@ mod tests { let h = constants.append( Constant { name: None, - r#override: crate::Override::None, ty: scalar_ty, init: const_expressions .append(Expression::Literal(Literal::I32(4)), Default::default()), @@ -1371,7 +1370,6 @@ mod tests { let h1 = constants.append( Constant { name: None, - r#override: crate::Override::None, ty: scalar_ty, init: const_expressions .append(Expression::Literal(Literal::I32(8)), Default::default()), @@ -1382,7 +1380,6 @@ mod tests { let vec_h = constants.append( Constant { name: None, - r#override: crate::Override::None, ty: vec_ty, init: const_expressions.append( Expression::Compose { @@ -1481,7 +1478,6 @@ mod tests { let h = constants.append( Constant { name: None, - r#override: crate::Override::None, ty: scalar_ty, init: const_expressions .append(Expression::Literal(Literal::I32(4)), Default::default()), @@ -1568,7 +1564,6 @@ mod tests { let vec1 = constants.append( Constant { name: None, - r#override: crate::Override::None, ty: vec_ty, init: const_expressions.append( Expression::Compose { @@ -1584,7 +1579,6 @@ mod tests { let vec2 = constants.append( Constant { name: None, - r#override: crate::Override::None, ty: vec_ty, init: const_expressions.append( Expression::Compose { @@ -1600,7 +1594,6 @@ mod tests { let h = constants.append( Constant { name: None, - r#override: crate::Override::None, ty: matrix_ty, init: const_expressions.append( Expression::Compose { @@ -1696,7 +1689,6 @@ mod tests { let h = constants.append( Constant { name: None, - r#override: crate::Override::None, ty: i32_ty, init: const_expressions .append(Expression::Literal(Literal::I32(4)), Default::default()), @@ -1776,7 +1768,6 @@ mod tests { let h = constants.append( Constant { name: None, - r#override: crate::Override::None, ty: i32_ty, init: const_expressions .append(Expression::Literal(Literal::I32(4)), Default::default()), diff --git a/naga/src/proc/mod.rs b/naga/src/proc/mod.rs index 4f2f5c705d..fd99cef6d1 100644 --- a/naga/src/proc/mod.rs +++ b/naga/src/proc/mod.rs @@ -509,13 +509,9 @@ impl crate::Expression { /// /// [`Access`]: crate::Expression::Access /// [`ResolveContext`]: crate::proc::ResolveContext - pub fn is_dynamic_index(&self, module: &crate::Module) -> bool { + pub const fn is_dynamic_index(&self) -> bool { match *self { - Self::Literal(_) | Self::ZeroValue(_) => false, - Self::Constant(handle) => { - let constant = &module.constants[handle]; - !matches!(constant.r#override, crate::Override::None) - } + Self::Literal(_) | Self::ZeroValue(_) | Self::Constant(_) => false, _ => true, } } diff --git a/naga/src/valid/expression.rs b/naga/src/valid/expression.rs index 1f57c55441..733b9bb614 100644 --- a/naga/src/valid/expression.rs +++ b/naga/src/valid/expression.rs @@ -250,9 +250,7 @@ impl super::Validator { return Err(ExpressionError::InvalidIndexType(index)); } } - if dynamic_indexing_restricted - && function.expressions[index].is_dynamic_index(module) - { + if dynamic_indexing_restricted && function.expressions[index].is_dynamic_index() { return Err(ExpressionError::IndexMustBeConstant(base)); } diff --git a/naga/src/valid/handles.rs b/naga/src/valid/handles.rs index e482f293bb..1884c01303 100644 --- a/naga/src/valid/handles.rs +++ b/naga/src/valid/handles.rs @@ -76,12 +76,7 @@ impl super::Validator { |handle| Self::validate_expression_handle(handle, const_expressions); for (_handle, constant) in constants.iter() { - let &crate::Constant { - name: _, - r#override: _, - ty, - init, - } = constant; + let &crate::Constant { name: _, ty, init } = constant; validate_type(ty)?; validate_const_expr(init)?; } @@ -679,7 +674,6 @@ fn constant_deps() { let self_referential_const = constants.append( Constant { name: None, - r#override: crate::Override::None, ty: i32_handle, init: fun_expr, }, diff --git a/naga/tests/out/ir/shadow.compact.ron b/naga/tests/out/ir/shadow.compact.ron index dc7b2eae78..4e65180691 100644 --- a/naga/tests/out/ir/shadow.compact.ron +++ b/naga/tests/out/ir/shadow.compact.ron @@ -159,115 +159,96 @@ constants: [ ( name: None, - override: None, ty: 1, init: 1, ), ( name: None, - override: None, ty: 1, init: 2, ), ( name: None, - override: None, ty: 1, init: 3, ), ( name: None, - override: None, ty: 1, init: 4, ), ( name: None, - override: None, ty: 1, init: 5, ), ( name: None, - override: None, ty: 2, init: 9, ), ( name: None, - override: None, ty: 3, init: 10, ), ( name: None, - override: None, ty: 3, init: 11, ), ( name: None, - override: None, ty: 3, init: 12, ), ( name: None, - override: None, ty: 7, init: 13, ), ( name: None, - override: None, ty: 7, init: 14, ), ( name: None, - override: None, ty: 7, init: 15, ), ( name: None, - override: None, ty: 7, init: 16, ), ( name: None, - override: None, ty: 7, init: 17, ), ( name: None, - override: None, ty: 7, init: 18, ), ( name: None, - override: None, ty: 7, init: 19, ), ( name: None, - override: None, ty: 7, init: 20, ), ( name: None, - override: None, ty: 7, init: 21, ), ( name: None, - override: None, ty: 7, init: 22, ), diff --git a/naga/tests/out/ir/shadow.ron b/naga/tests/out/ir/shadow.ron index 51bd3b264e..0b2310284a 100644 --- a/naga/tests/out/ir/shadow.ron +++ b/naga/tests/out/ir/shadow.ron @@ -282,211 +282,176 @@ constants: [ ( name: None, - override: None, ty: 1, init: 1, ), ( name: None, - override: None, ty: 1, init: 2, ), ( name: None, - override: None, ty: 1, init: 3, ), ( name: None, - override: None, ty: 1, init: 4, ), ( name: None, - override: None, ty: 1, init: 5, ), ( name: None, - override: None, ty: 2, init: 9, ), ( name: None, - override: None, ty: 3, init: 10, ), ( name: None, - override: None, ty: 3, init: 11, ), ( name: None, - override: None, ty: 3, init: 12, ), ( name: None, - override: None, ty: 1, init: 13, ), ( name: None, - override: None, ty: 9, init: 14, ), ( name: None, - override: None, ty: 9, init: 15, ), ( name: None, - override: None, ty: 9, init: 16, ), ( name: None, - override: None, ty: 9, init: 17, ), ( name: None, - override: None, ty: 9, init: 18, ), ( name: None, - override: None, ty: 9, init: 19, ), ( name: None, - override: None, ty: 9, init: 20, ), ( name: None, - override: None, ty: 9, init: 21, ), ( name: None, - override: None, ty: 9, init: 22, ), ( name: None, - override: None, ty: 9, init: 23, ), ( name: None, - override: None, ty: 9, init: 24, ), ( name: None, - override: None, ty: 9, init: 25, ), ( name: None, - override: None, ty: 9, init: 26, ), ( name: None, - override: None, ty: 9, init: 27, ), ( name: None, - override: None, ty: 9, init: 28, ), ( name: None, - override: None, ty: 9, init: 29, ), ( name: None, - override: None, ty: 9, init: 30, ), ( name: None, - override: None, ty: 9, init: 31, ), ( name: None, - override: None, ty: 9, init: 32, ), ( name: None, - override: None, ty: 9, init: 33, ), ( name: None, - override: None, ty: 9, init: 34, ), ( name: None, - override: None, ty: 9, init: 35, ), ( name: None, - override: None, ty: 9, init: 36, ), ( name: None, - override: None, ty: 9, init: 37, ), ( name: None, - override: None, ty: 9, init: 38, ),