summaryrefslogtreecommitdiff
path: root/source/compiler-core/slang-artifact-helper.cpp
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2022-08-22 17:39:56 -0400
committerGitHub <noreply@github.com>2022-08-22 14:39:56 -0700
commit6ab0baf910dea838dca2d29557c3361297180a34 (patch)
tree4f2a3418f0662c8a61fd1ba9bf1c1d24b77c276b /source/compiler-core/slang-artifact-helper.cpp
parent4bd3e6e02324f913e8927fe69d32c0aafe9fc831 (diff)
Improve binary compatibility for DownstreamCompiler types (#2371)
* #include an absolute path didn't work - because paths were taken to always be relative. * WIP replacing DownstreamCompileResult. * First attempt at replacing DownstreamCompileResult with IArtifact and associated types. * Small renaming around CharSlice. * ICastable -> ISlangCastable Added IClonable Fix issue with cloning in ArtifactDiagnostics. * Only add the blob if one is defined in DXC. * Guard adding blob representation. * Make cloneInterface available across code base. Set enums backing type for ArtifactDiagnostic. * Added ::create for ArtifactDiagnostics. * Use SemanticVersion for DownstreamCompilerDesc. Set sizes for enum types. * Depreciate old incompatible CompileOptions. Change SemanticVersion use 32 bits for the patch. * Split out CastableUtil. * Change IDownstreamCompiler to use canConvert and convert to use artifact types. * Fix typos. * Fix typo bug. Allow trafficing in PTX assembly/binaries * struct DownstreamCompilerBaseUtil -> struct DownstreamCompilerUtilBase Co-authored-by: Yong He <yonghe@outlook.com>
Diffstat (limited to 'source/compiler-core/slang-artifact-helper.cpp')
-rw-r--r--source/compiler-core/slang-artifact-helper.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/source/compiler-core/slang-artifact-helper.cpp b/source/compiler-core/slang-artifact-helper.cpp
index 39e81b668..49b9e547e 100644
--- a/source/compiler-core/slang-artifact-helper.cpp
+++ b/source/compiler-core/slang-artifact-helper.cpp
@@ -8,6 +8,7 @@
#include "slang-artifact-util.h"
#include "../core/slang-castable-list-impl.h"
+#include "../core/slang-castable-util.h"
#include "../core/slang-file-system.h"
#include "../core/slang-io.h"
@@ -126,4 +127,17 @@ void DefaultArtifactHelper::getCastable(ISlangUnknown* unk, ICastable** outCasta
*outCastable = CastableUtil::getCastable(unk).detach();
}
+SlangResult DefaultArtifactHelper::createCastableList(const Guid& guid, ICastableList** outList)
+{
+ auto list = new CastableList;
+ if (auto ptr = list->getInterface(guid))
+ {
+ list->addRef();
+ *outList = (ICastableList*)ptr;
+ return SLANG_OK;
+ }
+ delete list;
+ return SLANG_E_NO_INTERFACE;
+}
+
} // namespace Slang