summaryrefslogtreecommitdiff
path: root/source/core
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2021-10-20 10:32:50 -0400
committerGitHub <noreply@github.com>2021-10-20 10:32:50 -0400
commitdeb638f446863ab38248a9568553a1eab47ca086 (patch)
tree5a37ac31dce2b15b5079f8f67b268d7ef652e939 /source/core
parent8406244e27c142ea56c7a934b09e0b1cdace6afd (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.cpp41
-rw-r--r--source/core/slang-type-convert-util.h21
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