@@ -24,7 +24,7 @@ using namespace nbl;
2424using namespace nbl ::asset;
2525using Microsoft::WRL::ComPtr;
2626
27- static constexpr const wchar_t * SHADER_MODEL_PROFILE = L" XX_6_7 " ;
27+ static constexpr const wchar_t * SHADER_MODEL_PROFILE = L" XX_6_8 " ;
2828static const wchar_t * ShaderStageToString (asset::IShader::E_SHADER_STAGE stage) {
2929 switch (stage)
3030 {
@@ -128,14 +128,15 @@ static void try_upgrade_hlsl_version(std::vector<std::wstring>& arguments, syste
128128
129129static void try_upgrade_shader_stage (std::vector<std::wstring>& arguments, asset::IShader::E_SHADER_STAGE shaderStageOverrideFromPragma, system::logger_opt_ptr& logger) {
130130
131- constexpr int MajorReqVersion = 6 , MinorReqVersion = 7 ;
131+ constexpr int MajorReqVersion = 6 , MinorReqVersion = 8 ;
132132 auto overrideStageStr = ShaderStageToString (shaderStageOverrideFromPragma);
133133 if (shaderStageOverrideFromPragma != IShader::E_SHADER_STAGE::ESS_UNKNOWN && !overrideStageStr)
134134 {
135135 logger.log (" Invalid shader stage with int value '%i'.\n This value does not have a known string representation." ,
136136 system::ILogger::ELL_ERROR, shaderStageOverrideFromPragma);
137137 return ;
138138 }
139+ // still unknown, then we take value from commandline arguments (precedence: pragma > DXC specific command line > compile option)
139140 bool setDefaultValue = true ;
140141 auto foundShaderStageArgument = std::find (arguments.begin (), arguments.end (), L" -T" );
141142 if (foundShaderStageArgument != arguments.end () && foundShaderStageArgument +1 != arguments.end ()) {
@@ -202,6 +203,9 @@ static void try_upgrade_shader_stage(std::vector<std::wstring>& arguments, asset
202203 }
203204 if (setDefaultValue)
204205 {
206+ // if stage is still not known, lets go with library
207+ if (shaderStageOverrideFromPragma==IShader::E_SHADER_STAGE::ESS_UNKNOWN)
208+ overrideStageStr = ShaderStageToString (hlsl::ShaderStage::ESS_ALL_OR_LIBRARY);
205209 // in case of no -T
206210 // push back default values for -T argument
207211 // can be safely pushed to the back of argument list as output files should be evicted from args before passing to this func
@@ -379,6 +383,7 @@ std::string CHLSLCompiler::preprocessShader(std::string&& code, IShader::E_SHADE
379383 if (context.get_hooks ().m_dxc_compile_flags_override .size () != 0 )
380384 dxc_compile_flags_override = context.get_hooks ().m_dxc_compile_flags_override ;
381385
386+ // pragma overrides what we passed in
382387 if (context.get_hooks ().m_pragmaStage != IShader::E_SHADER_STAGE::ESS_UNKNOWN)
383388 stage = context.get_hooks ().m_pragmaStage ;
384389
0 commit comments