From b8dfe1348a66689f36329bcba77da1b1c0537e57 Mon Sep 17 00:00:00 2001 From: Hai Nguyen Date: Tue, 30 Nov 2021 04:55:25 -0500 Subject: [PATCH 1/3] Vulkan rules relaxed for glslang C interface - Added vulkan_rules_relaxed flag to glslang_input_t to turn on Vulkan rules relaxed during shader creation. --- glslang/CInterface/glslang_c_interface.cpp | 4 ++++ glslang/Include/glslang_c_interface.h | 1 + 2 files changed, 5 insertions(+) diff --git a/glslang/CInterface/glslang_c_interface.cpp b/glslang/CInterface/glslang_c_interface.cpp index 43bb7896..b7d34dcc 100644 --- a/glslang/CInterface/glslang_c_interface.cpp +++ b/glslang/CInterface/glslang_c_interface.cpp @@ -343,6 +343,10 @@ GLSLANG_EXPORT glslang_shader_t* glslang_shader_create(const glslang_input_t* in shader->shader->setEnvTarget(c_shader_target_language(input->target_language), c_shader_target_language_version(input->target_language_version)); + if (input->vulkan_rules_relaxed) { + shader->shader->setEnvInputVulkanRulesRelaxed(); + } + return shader; } diff --git a/glslang/Include/glslang_c_interface.h b/glslang/Include/glslang_c_interface.h index 14ab6acb..11315969 100644 --- a/glslang/Include/glslang_c_interface.h +++ b/glslang/Include/glslang_c_interface.h @@ -166,6 +166,7 @@ typedef struct glslang_input_s { glslang_profile_t default_profile; int force_default_version_and_profile; int forward_compatible; + int vulkan_rules_relaxed; glslang_messages_t messages; const glslang_resource_t* resource; } glslang_input_t; From f66fb4014955bfe3910eb84e74e2e81f5d49dd3e Mon Sep 17 00:00:00 2001 From: Hai Nguyen Date: Wed, 1 Dec 2021 03:55:59 -0500 Subject: [PATCH 2/3] Changed Vulkan rules relaxed to use shader options - Removed vulkan_rules_relaxed from glslang_input_s - Added GLSLANG_SHADER_VULKAN_RULES_RELAXED to glslang_shader_options_t - Modified glslang_shader_set_options to handle new enum value - Corrected enum value for GLSLANG_SHADER_AUTO_MAP_LOCATIONS --- glslang/CInterface/glslang_c_interface.cpp | 9 +++++---- glslang/Include/glslang_c_interface.h | 1 - glslang/Include/glslang_c_shader_types.h | 3 ++- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/glslang/CInterface/glslang_c_interface.cpp b/glslang/CInterface/glslang_c_interface.cpp index b7d34dcc..39eed04c 100644 --- a/glslang/CInterface/glslang_c_interface.cpp +++ b/glslang/CInterface/glslang_c_interface.cpp @@ -343,10 +343,6 @@ GLSLANG_EXPORT glslang_shader_t* glslang_shader_create(const glslang_input_t* in shader->shader->setEnvTarget(c_shader_target_language(input->target_language), c_shader_target_language_version(input->target_language_version)); - if (input->vulkan_rules_relaxed) { - shader->shader->setEnvInputVulkanRulesRelaxed(); - } - return shader; } @@ -371,6 +367,11 @@ GLSLANG_EXPORT void glslang_shader_set_options(glslang_shader_t* shader, int opt if (options & GLSLANG_SHADER_AUTO_MAP_LOCATIONS) { shader->shader->setAutoMapLocations(true); } + + if (options & GLSLANG_SHADER_AUTO_MAP_LOCATIONS) { + shader->shader->setEnvInputVulkanRulesRelaxed(); + } + } GLSLANG_EXPORT const char* glslang_shader_get_preprocessed_code(glslang_shader_t* shader) diff --git a/glslang/Include/glslang_c_interface.h b/glslang/Include/glslang_c_interface.h index 11315969..14ab6acb 100644 --- a/glslang/Include/glslang_c_interface.h +++ b/glslang/Include/glslang_c_interface.h @@ -166,7 +166,6 @@ typedef struct glslang_input_s { glslang_profile_t default_profile; int force_default_version_and_profile; int forward_compatible; - int vulkan_rules_relaxed; glslang_messages_t messages; const glslang_resource_t* resource; } glslang_input_t; diff --git a/glslang/Include/glslang_c_shader_types.h b/glslang/Include/glslang_c_shader_types.h index 3da3efb6..f5c6b564 100644 --- a/glslang/Include/glslang_c_shader_types.h +++ b/glslang/Include/glslang_c_shader_types.h @@ -185,7 +185,8 @@ typedef enum { typedef enum { GLSLANG_SHADER_DEFAULT_BIT = 0, GLSLANG_SHADER_AUTO_MAP_BINDINGS = (1 << 0), - GLSLANG_SHADER_AUTO_MAP_LOCATIONS = (2 << 0), + GLSLANG_SHADER_AUTO_MAP_LOCATIONS = (1 << 1), + GLSLANG_SHADER_VULKAN_RULES_RELAXED = (1 << 2), LAST_ELEMENT_MARKER(GLSLANG_SHADER_COUNT), } glslang_shader_options_t; From 58fe3a02b84f4ccf496a36d327683cf03a2600e6 Mon Sep 17 00:00:00 2001 From: Hai Nguyen Date: Wed, 1 Dec 2021 12:32:02 -0500 Subject: [PATCH 3/3] Fixed copy/paste error --- glslang/CInterface/glslang_c_interface.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glslang/CInterface/glslang_c_interface.cpp b/glslang/CInterface/glslang_c_interface.cpp index 39eed04c..43e21c9a 100644 --- a/glslang/CInterface/glslang_c_interface.cpp +++ b/glslang/CInterface/glslang_c_interface.cpp @@ -368,7 +368,7 @@ GLSLANG_EXPORT void glslang_shader_set_options(glslang_shader_t* shader, int opt shader->shader->setAutoMapLocations(true); } - if (options & GLSLANG_SHADER_AUTO_MAP_LOCATIONS) { + if (options & GLSLANG_SHADER_VULKAN_RULES_RELAXED) { shader->shader->setEnvInputVulkanRulesRelaxed(); }