From 40bcea32df033a6ea453b6225b64697ac25c315b Mon Sep 17 00:00:00 2001 From: Egor Yusov Date: Wed, 20 Feb 2019 19:17:56 -0800 Subject: Use in/out layout qualifiers when separate shader objects extension is available --- Graphics/GLSLTools/src/GLSLSourceBuilder.cpp | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'Graphics/GLSLTools') diff --git a/Graphics/GLSLTools/src/GLSLSourceBuilder.cpp b/Graphics/GLSLTools/src/GLSLSourceBuilder.cpp index 3ac24f83..e8a2ba94 100644 --- a/Graphics/GLSLTools/src/GLSLSourceBuilder.cpp +++ b/Graphics/GLSLTools/src/GLSLSourceBuilder.cpp @@ -248,15 +248,20 @@ String BuildGLSLSourceString(const ShaderCreationAttribs& CreationAttribs, // Convert HLSL to GLSL const auto &Converter = HLSL2GLSLConverterImpl::GetInstance(); HLSL2GLSLConverterImpl::ConversionAttribs Attribs; - Attribs.pSourceStreamFactory = CreationAttribs.pShaderSourceStreamFactory; - Attribs.ppConversionStream = CreationAttribs.ppConversionStream; - Attribs.HLSLSource = ShaderSource; - Attribs.NumSymbols = SourceLen; - Attribs.EntryPoint = CreationAttribs.EntryPoint; - Attribs.ShaderType = CreationAttribs.Desc.ShaderType; - Attribs.IncludeDefinitions = true; - Attribs.InputFileName = CreationAttribs.FilePath; - Attribs.SamplerSuffix = CreationAttribs.CombinedSamplerSuffix; + Attribs.pSourceStreamFactory = CreationAttribs.pShaderSourceStreamFactory; + Attribs.ppConversionStream = CreationAttribs.ppConversionStream; + Attribs.HLSLSource = ShaderSource; + Attribs.NumSymbols = SourceLen; + Attribs.EntryPoint = CreationAttribs.EntryPoint; + Attribs.ShaderType = CreationAttribs.Desc.ShaderType; + Attribs.IncludeDefinitions = true; + Attribs.InputFileName = CreationAttribs.FilePath; + Attribs.SamplerSuffix = CreationAttribs.CombinedSamplerSuffix; + // Separate shader objects extension also allows input/output layout qualifiers for + // all shader stages. + // https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_separate_shader_objects.txt + // (search for "Input Layout Qualifiers" and "Output Layout Qualifiers"). + Attribs.UseInOutLocationQualifiers = deviceCaps.bSeparableProgramSupported; auto ConvertedSource = Converter.Convert(Attribs); GLSLSource.append(ConvertedSource); -- cgit v1.2.3