From deb638f446863ab38248a9568553a1eab47ca086 Mon Sep 17 00:00:00 2001 From: jsmall-nvidia Date: Wed, 20 Oct 2021 10:32:50 -0400 Subject: 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. --- source/core/slang-type-convert-util.cpp | 41 +++++++++++++++++++++++++++++++++ source/core/slang-type-convert-util.h | 21 +++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 source/core/slang-type-convert-util.cpp create mode 100644 source/core/slang-type-convert-util.h (limited to 'source/core') 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 -- cgit v1.2.3