diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2021-10-20 10:32:50 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-10-20 10:32:50 -0400 |
| commit | deb638f446863ab38248a9568553a1eab47ca086 (patch) | |
| tree | 5a37ac31dce2b15b5079f8f67b268d7ef652e939 /source/core | |
| parent | 8406244e27c142ea56c7a934b09e0b1cdace6afd (diff) | |
Selecting downstream compiler on code gen transition (#1980)
* #include an absolute path didn't work - because paths were taken to always be relative.
* Add support for LLVM for host callable.
Added CodeGenTransitionMap.
* Remove hack to enable host callable for LLVM.
* Small improvements around transitions/downstream compiler.
* Fix typo in method name.
* Fix comment.
Diffstat (limited to 'source/core')
| -rw-r--r-- | source/core/slang-type-convert-util.cpp | 41 | ||||
| -rw-r--r-- | source/core/slang-type-convert-util.h | 21 |
2 files changed, 62 insertions, 0 deletions
diff --git a/source/core/slang-type-convert-util.cpp b/source/core/slang-type-convert-util.cpp new file mode 100644 index 000000000..fbf385319 --- /dev/null +++ b/source/core/slang-type-convert-util.cpp @@ -0,0 +1,41 @@ + +#include "slang-type-convert-util.h" + +namespace Slang +{ + +/* static */SlangSourceLanguage TypeConvertUtil::getSourceLanguageFromTarget(SlangCompileTarget target) +{ + switch (target) + { + case SLANG_GLSL: + case SLANG_GLSL_VULKAN: + case SLANG_GLSL_VULKAN_ONE_DESC: + { + return SLANG_SOURCE_LANGUAGE_GLSL; + } + case SLANG_HLSL: return SLANG_SOURCE_LANGUAGE_HLSL; + case SLANG_C_SOURCE: return SLANG_SOURCE_LANGUAGE_C; + case SLANG_CPP_SOURCE: return SLANG_SOURCE_LANGUAGE_CPP; + case SLANG_CUDA_SOURCE: return SLANG_SOURCE_LANGUAGE_CUDA; + default: break; + } + return SLANG_SOURCE_LANGUAGE_UNKNOWN; +} + +/* static */SlangCompileTarget TypeConvertUtil::getCompileTargetFromSourceLanguage(SlangSourceLanguage lang) +{ + switch (lang) + { + case SLANG_SOURCE_LANGUAGE_GLSL: return SLANG_GLSL; + case SLANG_SOURCE_LANGUAGE_HLSL: return SLANG_HLSL; + case SLANG_SOURCE_LANGUAGE_C: return SLANG_C_SOURCE; + case SLANG_SOURCE_LANGUAGE_CPP: return SLANG_CPP_SOURCE; + case SLANG_SOURCE_LANGUAGE_CUDA: return SLANG_CUDA_SOURCE; + } + + return SLANG_TARGET_UNKNOWN; +} + +} + diff --git a/source/core/slang-type-convert-util.h b/source/core/slang-type-convert-util.h new file mode 100644 index 000000000..00b47a154 --- /dev/null +++ b/source/core/slang-type-convert-util.h @@ -0,0 +1,21 @@ +#ifndef SLANG_CORE_TYPE_CONVERT_UTIL_H +#define SLANG_CORE_TYPE_CONVERT_UTIL_H + +#include "../../slang.h" + +namespace Slang +{ + +/// Utility class for simple conversions between types +struct TypeConvertUtil +{ + /// Convert a target into it's equivalent language if ones available. If not returns SOURCE_LANGUAGE_UNKNOWN + static SlangSourceLanguage getSourceLanguageFromTarget(SlangCompileTarget target); + + /// Convert a language into the equivalent target. If not available returns SLANG_TARGET_UNKNOWN + static SlangCompileTarget getCompileTargetFromSourceLanguage(SlangSourceLanguage lang); +}; + +} + +#endif // SLANG_CORE_TYPE_TEXT_UTIL_H |
