@@ -294,6 +294,22 @@ std::tuple<bool, std::vector<uint32_t>, size_t> Compiler::Compile(
294294 if (hlsl_functionality1_enabled_) {
295295 shader.setEnvTargetHlslFunctionality1 ();
296296 }
297+ if (vulkan_rules_relaxed_) {
298+ glslang::EShSource language;
299+ switch (source_language_) {
300+ case SourceLanguage::GLSL:
301+ language = glslang::EShSourceGlsl;
302+ break ;
303+ case SourceLanguage::HLSL:
304+ language = glslang::EShSourceHlsl;
305+ break ;
306+ }
307+ // This option will only be used if the Vulkan client is used.
308+ // If new versions of GL_KHR_vulkan_glsl come out, it would make sense to
309+ // let callers specify which version to use. For now, just use 100.
310+ shader.setEnvInput (language, used_shader_stage, glslang::EShClientVulkan, 100 );
311+ shader.setEnvInputVulkanRulesRelaxed ();
312+ }
297313 shader.setInvertY (invert_y_enabled_);
298314 shader.setNanMinMaxClamp (nan_clamp_);
299315
@@ -452,6 +468,10 @@ void Compiler::EnableHlslFunctionality1(bool enable) {
452468 hlsl_functionality1_enabled_ = enable;
453469}
454470
471+ void Compiler::SetVulkanRulesRelaxed (bool enable) {
472+ vulkan_rules_relaxed_ = enable;
473+ }
474+
455475void Compiler::EnableHlsl16BitTypes (bool enable) {
456476 hlsl_16bit_types_enabled_ = enable;
457477}
0 commit comments