diff options
| author | kaizhangNV <149626564+kaizhangNV@users.noreply.github.com> | 2024-11-01 18:12:33 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-11-01 16:12:33 -0700 |
| commit | 61cddbee405935fa8391a757a08bcbe4ea7ac98f (patch) | |
| tree | 7a76d5657916cb3115866f3c53ef60ad784045f4 /include/slang.h | |
| parent | b8d50b589da8e765ff5b0411e544b8aad562fe64 (diff) | |
Improve on spirv generation compile option (#5479)
CompilerOptionName::EmitSpirvViaGLSL and CompilerOptionName::EmitSpirvDirectly
options are not mutually exclusive, but due to compatible reason, we
cannot delete those options. Instead, this change makes the effort to
create a new option name EmitSpirvMethod, and we will turn those two
options into the new one internally. Also, we put a priority implicitly
on those two options, where EmitSpirvDirectly always win if it's set.
We have another location that can setup the same option, where is
through SlangTargetFlags::SLANG_TARGET_FLAG_GENERATE_SPIRV_DIRECTLY.
We should definitely deprecate this flag to avoid more confusing.
But for the same compatible reason, we cannot do that in this PR.
Again, we will encourage people to not use this flag, but using the
CompilerOptionName instead. In this PR, we will also implicitly give
CompilerOptionName higher priority, it means that as long as user setup
the CompilerOptionName for emit spirv method, it always take higher
priority for the final decision.
Diffstat (limited to 'include/slang.h')
| -rw-r--r-- | include/slang.h | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/include/slang.h b/include/slang.h index c40ef1c7b..2999996e9 100644 --- a/include/slang.h +++ b/include/slang.h @@ -713,6 +713,7 @@ typedef uint32_t SlangSizeT; SLANG_TARGET_FLAG_DUMP_IR = 1 << 9, /* When set, will generate SPIRV directly rather than via glslang. */ + // This flag will be deprecated, use CompilerOption instead. SLANG_TARGET_FLAG_GENERATE_SPIRV_DIRECTLY = 1 << 10, }; constexpr static SlangTargetFlags kDefaultTargetFlags = @@ -845,6 +846,13 @@ typedef uint32_t SlangSizeT; or may involve severe space-vs-speed tradeoffs */ }; + enum SlangEmitSpirvMethod + { + SLANG_EMIT_SPIRV_DEFAULT = 0, + SLANG_EMIT_SPIRV_VIA_GLSL, + SLANG_EMIT_SPIRV_DIRECTLY, + }; + // All compiler option names supported by Slang. namespace slang { @@ -914,8 +922,8 @@ typedef uint32_t SlangSizeT; GLSLForceScalarLayout, // bool EnableEffectAnnotations, // bool - EmitSpirvViaGLSL, // bool - EmitSpirvDirectly, // bool + EmitSpirvViaGLSL, // bool (will be deprecated) + EmitSpirvDirectly, // bool (will be deprecated) SPIRVCoreGrammarJSON, // stringValue0: json path IncompleteLibrary, // bool, when set, will not issue an error when the linked program has // unresolved extern function symbols. @@ -991,6 +999,10 @@ typedef uint32_t SlangSizeT; // precompiled modules if it is up-to-date with its source. EmbedDownstreamIR, // bool ForceDXLayout, // bool + + // Add this new option to the end of the list to avoid breaking ABI as much as possible. + // Setting of EmitSpirvDirectly or EmitSpirvViaGLSL will turn into this option internally. + EmitSpirvMethod, // enum SlangEmitSpirvMethod CountOf, }; |
