diff --git a/src/front/glsl/lex.rs b/src/front/glsl/lex.rs index b989972420..fb203dd6cb 100644 --- a/src/front/glsl/lex.rs +++ b/src/front/glsl/lex.rs @@ -62,6 +62,7 @@ impl<'a> Iterator for Lexer<'a> { "in" => TokenValue::In, "out" => TokenValue::Out, "uniform" => TokenValue::Uniform, + "buffer" => TokenValue::Buffer, "flat" => TokenValue::Interpolation(crate::Interpolation::Flat), "noperspective" => TokenValue::Interpolation(crate::Interpolation::Linear), "smooth" => TokenValue::Interpolation(crate::Interpolation::Perspective), diff --git a/src/front/glsl/parser.rs b/src/front/glsl/parser.rs index baaf5e6fb3..c3bd807339 100644 --- a/src/front/glsl/parser.rs +++ b/src/front/glsl/parser.rs @@ -173,6 +173,7 @@ impl<'source, 'program, 'options> Parser<'source, 'program, 'options> { | TokenValue::In | TokenValue::Out | TokenValue::Uniform + | TokenValue::Buffer | TokenValue::Layout => true, _ => false, }) @@ -199,6 +200,9 @@ impl<'source, 'program, 'options> Parser<'source, 'program, 'options> { TokenValue::Uniform => TypeQualifier::StorageQualifier( StorageQualifier::StorageClass(StorageClass::Uniform), ), + TokenValue::Buffer => TypeQualifier::StorageQualifier( + StorageQualifier::StorageClass(StorageClass::Storage), + ), TokenValue::Sampling(s) => TypeQualifier::Sampling(s), _ => unreachable!(), diff --git a/src/front/glsl/token.rs b/src/front/glsl/token.rs index 16a745e35e..7d01ffb77c 100644 --- a/src/front/glsl/token.rs +++ b/src/front/glsl/token.rs @@ -53,6 +53,7 @@ pub enum TokenValue { Out, InOut, Uniform, + Buffer, Const, Interpolation(Interpolation), Sampling(Sampling),