yum-mirror/slang

Making it easier to work with shaders

git clone https://git.yummers.dev/yum-mirror/slang

Ellie Hermaszewskaformatf65d756bf

master
1.2 KiB47 linesraw
1// slang-llvm-compiler.cpp
2#include "slang-llvm-compiler.h"
3
4#include "../core/slang-common.h"
5
6namespace Slang
7{
8
9/* static */ SlangResult LLVMDownstreamCompilerUtil::locateCompilers(
10    const String& path,
11    ISlangSharedLibraryLoader* loader,
12    DownstreamCompilerSet* set)
13{
14    ComPtr<ISlangSharedLibrary> library;
15
16    SLANG_RETURN_ON_FAIL(
17        DownstreamCompilerUtil::loadSharedLibrary(path, loader, nullptr, "slang-llvm", library));
18
19    SLANG_ASSERT(library);
20    if (!library)
21    {
22        return SLANG_FAIL;
23    }
24
25    typedef SlangResult (
26        *CreateDownstreamCompilerFunc)(const Guid& intf, IDownstreamCompiler** outCompiler);
27
28    ComPtr<IDownstreamCompiler> downstreamCompiler;
29
30    // Only accept V4, so we can update IArtifact without breaking anything
31    if (auto fnV4 = (CreateDownstreamCompilerFunc)library->findFuncByName(
32            "createLLVMDownstreamCompiler_V4"))
33    {
34        SLANG_RETURN_ON_FAIL(
35            fnV4(IDownstreamCompiler::getTypeGuid(), downstreamCompiler.writeRef()));
36    }
37    else
38    {
39        return SLANG_FAIL;
40    }
41
42    set->addSharedLibrary(library);
43    set->addCompiler(downstreamCompiler);
44    return SLANG_OK;
45}
46
47} // namespace Slang