From 36b218de91206987cd22622c114aa2a9005a271d Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Wed, 15 Mar 2017 09:05:14 -0600 Subject: [PATCH] HLSL: Fix #771: add inline keyword. --- Test/hlsl.inoutquals.frag | 2 +- glslang/Include/revision.h | 4 ++-- hlsl/hlslGrammar.cpp | 3 +++ hlsl/hlslScanContext.cpp | 2 ++ hlsl/hlslTokens.h | 1 + 5 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Test/hlsl.inoutquals.frag b/Test/hlsl.inoutquals.frag index 32346882..9328dfbe 100644 --- a/Test/hlsl.inoutquals.frag +++ b/Test/hlsl.inoutquals.frag @@ -4,7 +4,7 @@ struct PS_OUTPUT float Depth : SV_Depth; }; -void MyFunc(in float x, out float y, inout float z) +inline void MyFunc(in float x, out float y, inout float z) { y = x; z = y; diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 162e400b..00dc2f43 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1914" -#define GLSLANG_DATE "14-Mar-2017" +#define GLSLANG_REVISION "Overload400-PrecQual.1916" +#define GLSLANG_DATE "15-Mar-2017" diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp index 7a0172c8..1dc500bb 100755 --- a/hlsl/hlslGrammar.cpp +++ b/hlsl/hlslGrammar.cpp @@ -627,6 +627,9 @@ bool HlslGrammar::acceptQualifier(TQualifier& qualifier) case EHTokGloballyCoherent: qualifier.coherent = true; break; + case EHTokInline: + // TODO: map this to SPIR-V function control + break; // GS geometries: these are specified on stage input variables, and are an error (not verified here) // for output variables. diff --git a/hlsl/hlslScanContext.cpp b/hlsl/hlslScanContext.cpp index d08a2c36..30b2b2c3 100755 --- a/hlsl/hlslScanContext.cpp +++ b/hlsl/hlslScanContext.cpp @@ -119,6 +119,7 @@ void HlslScanContext::fillInKeywordMap() (*KeywordMap)["inout"] = EHTokInOut; (*KeywordMap)["layout"] = EHTokLayout; (*KeywordMap)["globallycoherent"] = EHTokGloballyCoherent; + (*KeywordMap)["inline"] = EHTokInline; (*KeywordMap)["point"] = EHTokPoint; (*KeywordMap)["line"] = EHTokLine; @@ -616,6 +617,7 @@ EHlslTokenClass HlslScanContext::tokenizeIdentifier() case EHTokPrecise: case EHTokLayout: case EHTokGloballyCoherent: + case EHTokInline: return keyword; // primitive types diff --git a/hlsl/hlslTokens.h b/hlsl/hlslTokens.h index 52496190..54f9b21a 100755 --- a/hlsl/hlslTokens.h +++ b/hlsl/hlslTokens.h @@ -66,6 +66,7 @@ enum EHlslTokenClass { EHTokInOut, EHTokLayout, EHTokGloballyCoherent, + EHTokInline, // primitive types EHTokPoint,