summaryrefslogtreecommitdiffstats
path: root/source/slang/slang.cpp
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2020-12-04 13:03:29 -0500
committerGitHub <noreply@github.com>2020-12-04 10:03:29 -0800
commit47ed0f68602a8ed0c425d2a4666969ad0db04ca6 (patch)
treec104f182dbf1a2b9e12e8d383215749e11ab35dc /source/slang/slang.cpp
parent277780ab7770453ed12e82df10d2a9d79ebf47dd (diff)
Projects in 'build' and Slang API separation (#1624)
* #include an absolute path didn't work - because paths were taken to always be relative. * Move reflection to reflection-api. * Slight reorg to pull out potentially Slang internal functions from the reflection API impls. * Remove visual studio projects * Fix for slang-binaries copy. * Add the visual studio projects in build/visual-studio * Remove miniz project. * Differentiate the linePath from the filePath. * Improve comment in premake5.lua + to kick of CI. * Kick CI.
Diffstat (limited to 'source/slang/slang.cpp')
-rw-r--r--source/slang/slang.cpp692
1 files changed, 1 insertions, 691 deletions
diff --git a/source/slang/slang.cpp b/source/slang/slang.cpp
index d31b0302b..254a37c24 100644
--- a/source/slang/slang.cpp
+++ b/source/slang/slang.cpp
@@ -1,5 +1,4 @@
#include "../../slang.h"
-#include "../../slang-tag-version.h"
#include "../core/slang-io.h"
#include "../core/slang-string-util.h"
@@ -11,7 +10,7 @@
#include "slang-mangle.h"
#include "slang-parser.h"
#include "slang-preprocessor.h"
-#include "slang-reflection.h"
+
#include "slang-type-layout.h"
#include "slang-options.h"
@@ -3259,117 +3258,6 @@ Session::~Session()
}
-// implementation of C interface
-
-SLANG_API SlangSession* spCreateSession(const char*)
-{
- Slang::ComPtr<slang::IGlobalSession> globalSession;
- if (SLANG_FAILED(slang_createGlobalSession(SLANG_API_VERSION, globalSession.writeRef())))
- {
- return nullptr;
- }
- // Will be returned with a refcount of 1
- return globalSession.detach();
-}
-
-SLANG_API SlangResult slang_createGlobalSession(
- SlangInt apiVersion,
- slang::IGlobalSession** outGlobalSession)
-{
- Slang::ComPtr<slang::IGlobalSession> globalSession;
- SLANG_RETURN_ON_FAIL(slang_createGlobalSessionWithoutStdLib(apiVersion, globalSession.writeRef()));
- SLANG_RETURN_ON_FAIL(globalSession->compileStdLib());
- *outGlobalSession = globalSession.detach();
- return SLANG_OK;
-}
-
-SLANG_API SlangResult slang_createGlobalSessionWithoutStdLib(
- SlangInt apiVersion,
- slang::IGlobalSession** outGlobalSession)
-{
- if (apiVersion != 0)
- return SLANG_E_NOT_IMPLEMENTED;
-
- // Create the session
- Slang::Session* globalSession = new Slang::Session();
- // Put an interface ref on it
- Slang::ComPtr<slang::IGlobalSession> result(globalSession);
-
- // Initialize it
- globalSession->init();
-
- *outGlobalSession = result.detach();
- return SLANG_OK;
-}
-
-SLANG_API void spDestroySession(
- SlangSession* inSession)
-{
- if(!inSession) return;
-
- Slang::Session* session = Slang::asInternal(inSession);
- // It is assumed there is only a single reference on the session (the one placed
- // with spCreateSession) if this function is called
- SLANG_ASSERT(session->debugGetReferenceCount() == 1);
- // Release
- session->release();
-}
-
-SLANG_API const char* spGetBuildTagString()
-{
- return SLANG_TAG_VERSION;
-}
-
-SLANG_API void spAddBuiltins(
- SlangSession* session,
- char const* sourcePath,
- char const* sourceString)
-{
- session->addBuiltins(sourcePath, sourceString);
-}
-
-SLANG_API void spSessionSetSharedLibraryLoader(
- SlangSession* session,
- ISlangSharedLibraryLoader* loader)
-{
- session->setSharedLibraryLoader(loader);
-}
-
-SLANG_API ISlangSharedLibraryLoader* spSessionGetSharedLibraryLoader(
- SlangSession* session)
-{
- return session->getSharedLibraryLoader();
-}
-
-SLANG_API SlangResult spSessionCheckCompileTargetSupport(
- SlangSession* session,
- SlangCompileTarget target)
-{
- return session->checkCompileTargetSupport(target);
-}
-
-SLANG_API SlangResult spSessionCheckPassThroughSupport(
- SlangSession* session,
- SlangPassThrough passThrough)
-{
- return session->checkPassThroughSupport(passThrough);
-}
-
-SLANG_API SlangCompileRequest* spCreateCompileRequest(
- SlangSession* session)
-{
- slang::ICompileRequest* request = nullptr;
- // Will return with suitable ref count
- session->createCompileRequest(&request);
- return request;
-}
-
-SLANG_API SlangProfileID spFindProfile(
- SlangSession* session,
- char const* name)
-{
- return session->findProfile(name);
-}
/* !!!!!!!!!!!!!!!!!! EndToEndCompileRequestImpl !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
@@ -4065,582 +3953,4 @@ SlangResult EndToEndCompileRequest::getEntryPoint(SlangInt entryPointIndex, slan
} // namespace Slang
-/* !!!!!!!!!!!!!!!!!!SlangCompileRequest API!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
-
-/*!
-@brief Destroy a compile request.
-*/
-SLANG_API void spDestroyCompileRequest(
- slang::ICompileRequest* request)
-{
- if (request)
- {
- request->release();
- }
-}
-
-/* All other functions just call into the ICompileResult interface. */
-
-SLANG_API void spSetFileSystem(
- slang::ICompileRequest* request,
- ISlangFileSystem* fileSystem)
-{
- SLANG_ASSERT(request);
- request->setFileSystem(fileSystem);
-}
-
-SLANG_API void spSetCompileFlags(
- slang::ICompileRequest* request,
- SlangCompileFlags flags)
-{
- SLANG_ASSERT(request);
- request->setCompileFlags(flags);
-}
-
-SLANG_API void spSetDumpIntermediates(
- slang::ICompileRequest* request,
- int enable)
-{
- SLANG_ASSERT(request);
- request->setDumpIntermediates(enable);
-}
-
-SLANG_API void spSetDumpIntermediatePrefix(
- slang::ICompileRequest* request,
- const char* prefix)
-{
- SLANG_ASSERT(request);
- request->setDumpIntermediatePrefix(prefix);
-}
-
-SLANG_API void spSetLineDirectiveMode(
- slang::ICompileRequest* request,
- SlangLineDirectiveMode mode)
-{
- SLANG_ASSERT(request);
- request->setLineDirectiveMode(mode);
-}
-
-SLANG_API void spSetCommandLineCompilerMode(
- slang::ICompileRequest* request)
-{
- SLANG_ASSERT(request);
- request->setCommandLineCompilerMode();
-}
-
-SLANG_API void spSetCodeGenTarget(
- slang::ICompileRequest* request,
- SlangCompileTarget target)
-{
- SLANG_ASSERT(request);
- request->setCodeGenTarget(target);
-}
-
-SLANG_API int spAddCodeGenTarget(
- slang::ICompileRequest* request,
- SlangCompileTarget target)
-{
- SLANG_ASSERT(request);
- return request->addCodeGenTarget(target);
-}
-
-SLANG_API void spSetTargetProfile(
- slang::ICompileRequest* request,
- int targetIndex,
- SlangProfileID profile)
-{
- SLANG_ASSERT(request);
- request->setTargetProfile(targetIndex, profile);
-}
-
-SLANG_API void spSetTargetFlags(
- slang::ICompileRequest* request,
- int targetIndex,
- SlangTargetFlags flags)
-{
- SLANG_ASSERT(request);
- request->setTargetFlags(targetIndex, flags);
-}
-
-SLANG_API void spSetTargetFloatingPointMode(
- slang::ICompileRequest* request,
- int targetIndex,
- SlangFloatingPointMode mode)
-{
- SLANG_ASSERT(request);
- request->setTargetFloatingPointMode(targetIndex, mode);
-}
-
-SLANG_API void spSetMatrixLayoutMode(
- slang::ICompileRequest* request,
- SlangMatrixLayoutMode mode)
-{
- SLANG_ASSERT(request);
- request->setMatrixLayoutMode(mode);
-}
-
-SLANG_API void spSetTargetMatrixLayoutMode(
- slang::ICompileRequest* request,
- int targetIndex,
- SlangMatrixLayoutMode mode)
-{
- SLANG_ASSERT(request);
- request->setTargetMatrixLayoutMode(targetIndex, mode);
-}
-
-SLANG_API void spSetDebugInfoLevel(
- slang::ICompileRequest* request,
- SlangDebugInfoLevel level)
-{
- SLANG_ASSERT(request);
- request->setDebugInfoLevel(level);
-}
-
-SLANG_API void spSetOptimizationLevel(
- slang::ICompileRequest* request,
- SlangOptimizationLevel level)
-{
- SLANG_ASSERT(request);
- request->setOptimizationLevel(level);
-}
-
-SLANG_API void spSetOutputContainerFormat(
- slang::ICompileRequest* request,
- SlangContainerFormat format)
-{
- SLANG_ASSERT(request);
- request->setOutputContainerFormat(format);
-}
-
-SLANG_API void spSetPassThrough(
- slang::ICompileRequest* request,
- SlangPassThrough passThrough)
-{
- SLANG_ASSERT(request);
- request->setPassThrough(passThrough);
-}
-
-SLANG_API void spSetDiagnosticCallback(
- slang::ICompileRequest* request,
- SlangDiagnosticCallback callback,
- void const* userData)
-{
- SLANG_ASSERT(request);
- request->setDiagnosticCallback(callback, userData);
-}
-
-SLANG_API void spSetWriter(
- slang::ICompileRequest* request,
- SlangWriterChannel chan,
- ISlangWriter* writer)
-{
- SLANG_ASSERT(request);
- request->setWriter(chan, writer);
-}
-
-SLANG_API ISlangWriter* spGetWriter(
- slang::ICompileRequest* request,
- SlangWriterChannel chan)
-{
- SLANG_ASSERT(request);
- return request->getWriter(chan);
-}
-
-SLANG_API void spAddSearchPath(
- slang::ICompileRequest* request,
- const char* path)
-{
- SLANG_ASSERT(request);
- request->addSearchPath(path);
-}
-
-SLANG_API void spAddPreprocessorDefine(
- slang::ICompileRequest* request,
- const char* key,
- const char* value)
-{
- SLANG_ASSERT(request);
- request->addPreprocessorDefine(key, value);
-}
-
-SLANG_API char const* spGetDiagnosticOutput(
- slang::ICompileRequest* request)
-{
- SLANG_ASSERT(request);
- return request->getDiagnosticOutput();
-}
-
-SLANG_API SlangResult spGetDiagnosticOutputBlob(
- slang::ICompileRequest* request,
- ISlangBlob** outBlob)
-{
- SLANG_ASSERT(request);
- return request->getDiagnosticOutputBlob(outBlob);
-}
-
-// New-fangled compilation API
-
-SLANG_API int spAddTranslationUnit(
- slang::ICompileRequest* request,
- SlangSourceLanguage language,
- char const* inName)
-{
- SLANG_ASSERT(request);
- return request->addTranslationUnit(language, inName);
-}
-
-SLANG_API void spSetDefaultModuleName(
- slang::ICompileRequest* request,
- const char* defaultModuleName)
-{
- SLANG_ASSERT(request);
- request->setDefaultModuleName(defaultModuleName);
-}
-
-SLANG_API SlangResult spAddLibraryReference(
- slang::ICompileRequest* request,
- const void* libData,
- size_t libDataSize)
-{
- SLANG_ASSERT(request);
- return request->addLibraryReference(libData, libDataSize);
-}
-
-SLANG_API void spTranslationUnit_addPreprocessorDefine(
- slang::ICompileRequest* request,
- int translationUnitIndex,
- const char* key,
- const char* value)
-{
- SLANG_ASSERT(request);
- request->addTranslationUnitPreprocessorDefine(translationUnitIndex, key, value);
-}
-
-SLANG_API void spAddTranslationUnitSourceFile(
- slang::ICompileRequest* request,
- int translationUnitIndex,
- char const* path)
-{
- SLANG_ASSERT(request);
- request->addTranslationUnitSourceFile(translationUnitIndex, path);
-}
-
-SLANG_API void spAddTranslationUnitSourceString(
- slang::ICompileRequest* request,
- int translationUnitIndex,
- char const* path,
- char const* source)
-{
- SLANG_ASSERT(request);
- request->addTranslationUnitSourceString(translationUnitIndex, path, source);
-}
-
-SLANG_API void spAddTranslationUnitSourceStringSpan(
- slang::ICompileRequest* request,
- int translationUnitIndex,
- char const* path,
- char const* sourceBegin,
- char const* sourceEnd)
-{
- SLANG_ASSERT(request);
- request->addTranslationUnitSourceStringSpan(translationUnitIndex, path, sourceBegin, sourceEnd);
-}
-
-SLANG_API void spAddTranslationUnitSourceBlob(
- slang::ICompileRequest* request,
- int translationUnitIndex,
- char const* path,
- ISlangBlob* sourceBlob)
-{
- SLANG_ASSERT(request);
- request->addTranslationUnitSourceBlob(translationUnitIndex, path, sourceBlob);
-}
-
-SLANG_API int spAddEntryPoint(
- slang::ICompileRequest* request,
- int translationUnitIndex,
- char const* name,
- SlangStage stage)
-{
- SLANG_ASSERT(request);
- return request->addEntryPoint(translationUnitIndex, name, stage);
-}
-
-SLANG_API int spAddEntryPointEx(
- slang::ICompileRequest* request,
- int translationUnitIndex,
- char const* name,
- SlangStage stage,
- int genericParamTypeNameCount,
- char const ** genericParamTypeNames)
-{
- SLANG_ASSERT(request);
- return request->addEntryPointEx(translationUnitIndex, name, stage, genericParamTypeNameCount, genericParamTypeNames);
-}
-
-SLANG_API SlangResult spSetGlobalGenericArgs(
- slang::ICompileRequest* request,
- int genericArgCount,
- char const** genericArgs)
-{
- SLANG_ASSERT(request);
- return request->setGlobalGenericArgs(genericArgCount, genericArgs);
-}
-
-SLANG_API SlangResult spSetTypeNameForGlobalExistentialTypeParam(
- slang::ICompileRequest* request,
- int slotIndex,
- char const* typeName)
-{
- SLANG_ASSERT(request);
- return request->setTypeNameForGlobalExistentialTypeParam(slotIndex, typeName);
-}
-
-SLANG_API SlangResult spSetTypeNameForEntryPointExistentialTypeParam(
- slang::ICompileRequest* request,
- int entryPointIndex,
- int slotIndex,
- char const* typeName)
-{
- SLANG_ASSERT(request);
- return request->setTypeNameForEntryPointExistentialTypeParam(entryPointIndex, slotIndex, typeName);
-}
-
-SLANG_API SlangResult spCompile(
- slang::ICompileRequest* request)
-{
- SLANG_ASSERT(request);
- return request->compile();
-}
-
-SLANG_API int
-spGetDependencyFileCount(
- slang::ICompileRequest* request)
-{
- SLANG_ASSERT(request);
- return request->getDependencyFileCount();
-}
-
-SLANG_API char const*
-spGetDependencyFilePath(
- slang::ICompileRequest* request,
- int index)
-{
- SLANG_ASSERT(request);
- return request->getDependencyFilePath(index);
-}
-
-SLANG_API int
-spGetTranslationUnitCount(
- slang::ICompileRequest* request)
-{
- SLANG_ASSERT(request);
- return request->getTranslationUnitCount();
-}
-
-SLANG_API void const* spGetEntryPointCode(
- slang::ICompileRequest* request,
- int entryPointIndex,
- size_t* outSize)
-{
- SLANG_ASSERT(request);
- return request->getEntryPointCode(entryPointIndex, outSize);
-}
-
-SLANG_API SlangResult spGetEntryPointCodeBlob(
- slang::ICompileRequest* request,
- int entryPointIndex,
- int targetIndex,
- ISlangBlob** outBlob)
-{
- SLANG_ASSERT(request);
- return request->getEntryPointCodeBlob(entryPointIndex, targetIndex, outBlob);
-}
-
-SLANG_API SlangResult spGetEntryPointHostCallable(
- slang::ICompileRequest* request,
- int entryPointIndex,
- int targetIndex,
- ISlangSharedLibrary** outSharedLibrary)
-{
- SLANG_ASSERT(request);
- return request->getEntryPointHostCallable(entryPointIndex, targetIndex, outSharedLibrary);
-}
-
-SLANG_API SlangResult spGetTargetCodeBlob(
- slang::ICompileRequest* request,
- int targetIndex,
- ISlangBlob** outBlob)
-{
- SLANG_ASSERT(request);
- return request->getTargetCodeBlob(targetIndex, outBlob);
-}
-
-SLANG_API SlangResult spGetTargetHostCallable(
- slang::ICompileRequest* request,
- int targetIndex,
- ISlangSharedLibrary** outSharedLibrary)
-{
- SLANG_ASSERT(request);
- return request->getTargetHostCallable(targetIndex, outSharedLibrary);
-}
-
-SLANG_API char const* spGetEntryPointSource(
- slang::ICompileRequest* request,
- int entryPointIndex)
-{
- SLANG_ASSERT(request);
- return request->getEntryPointSource(entryPointIndex);
-}
-
-SLANG_API void const* spGetCompileRequestCode(
- slang::ICompileRequest* request,
- size_t* outSize)
-{
- SLANG_ASSERT(request);
- return request->getCompileRequestCode(outSize);
-}
-
-SLANG_API SlangResult spGetContainerCode(
- slang::ICompileRequest* request,
- ISlangBlob** outBlob)
-{
- SLANG_ASSERT(request);
- return request->getContainerCode(outBlob);
-}
-
-SLANG_API SlangResult spLoadRepro(
- slang::ICompileRequest* request,
- ISlangFileSystem* fileSystem,
- const void* data,
- size_t size)
-{
- SLANG_ASSERT(request);
- return request->loadRepro(fileSystem, data, size);
-}
-
-SLANG_API SlangResult spSaveRepro(
- slang::ICompileRequest* request,
- ISlangBlob** outBlob)
-{
- SLANG_ASSERT(request);
- return request->saveRepro(outBlob);
-}
-
-SLANG_API SlangResult spEnableReproCapture(
- slang::ICompileRequest* request)
-{
- SLANG_ASSERT(request);
- return request->enableReproCapture();
-}
-
-SLANG_API SlangResult spCompileRequest_getProgram(
- slang::ICompileRequest* request,
- slang::IComponentType** outProgram)
-{
- SLANG_ASSERT(request);
- return request->getProgram(outProgram);
-}
-
-SLANG_API SlangResult spCompileRequest_getModule(
- slang::ICompileRequest* request,
- SlangInt translationUnitIndex,
- slang::IModule** outModule)
-{
- SLANG_ASSERT(request);
- return request->getModule(translationUnitIndex, outModule);
-}
-
-SLANG_API SlangResult spCompileRequest_getSession(
- slang::ICompileRequest* request,
- slang::ISession** outSession)
-{
- SLANG_ASSERT(request);
- return request->getSession(outSession);
-}
-
-SLANG_API SlangResult spCompileRequest_getEntryPoint(
- slang::ICompileRequest* request,
- SlangInt entryPointIndex,
- slang::IComponentType** outEntryPoint)
-{
- SLANG_ASSERT(request);
- return request->getEntryPoint(entryPointIndex, outEntryPoint);
-}
-
-// Get the output code associated with a specific translation unit
-SLANG_API char const* spGetTranslationUnitSource(
- slang::ICompileRequest* /*request*/,
- int /*translationUnitIndex*/)
-{
- fprintf(stderr, "DEPRECATED: spGetTranslationUnitSource()\n");
- return nullptr;
-}
-
-SLANG_API SlangResult spProcessCommandLineArguments(
- SlangCompileRequest* request,
- char const* const* args,
- int argCount)
-{
- return request->processCommandLineArguments(args, argCount);
-}
-
-// Reflection API
-
-SLANG_API SlangReflection* spGetReflection(
- slang::ICompileRequest* request)
-{
- SLANG_ASSERT(request);
- return request->getReflection();
-}
-
-// ... rest of reflection API implementation is in `Reflection.cpp`
-
-/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!! Session !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
-
-SLANG_API SlangResult spExtractRepro(SlangSession* session, const void* reproData, size_t reproDataSize, ISlangMutableFileSystem* fileSystem)
-{
- using namespace Slang;
- SLANG_UNUSED(session);
-
- List<uint8_t> buffer;
- {
- MemoryStreamBase memoryStream(FileAccess::Read, reproData, reproDataSize);
- SLANG_RETURN_ON_FAIL(ReproUtil::loadState(&memoryStream, buffer));
- }
-
- MemoryOffsetBase base;
- base.set(buffer.getBuffer(), buffer.getCount());
-
- ReproUtil::RequestState* requestState = ReproUtil::getRequest(buffer);
- return ReproUtil::extractFiles(base, requestState, fileSystem);
-}
-
-SLANG_API SlangResult spLoadReproAsFileSystem(
- SlangSession* session,
- const void* reproData,
- size_t reproDataSize,
- ISlangFileSystem* replaceFileSystem,
- ISlangFileSystemExt** outFileSystem)
-{
- using namespace Slang;
-
- SLANG_UNUSED(session);
-
- MemoryStreamBase stream(FileAccess::Read, reproData, reproDataSize);
-
- List<uint8_t> buffer;
- SLANG_RETURN_ON_FAIL(ReproUtil::loadState(&stream, buffer));
-
- auto requestState = ReproUtil::getRequest(buffer);
- MemoryOffsetBase base;
- base.set(buffer.getBuffer(), buffer.getCount());
-
- RefPtr<CacheFileSystem> cacheFileSystem;
- SLANG_RETURN_ON_FAIL(ReproUtil::loadFileSystem(base, requestState, replaceFileSystem, cacheFileSystem));
-
- *outFileSystem = cacheFileSystem.detach();
- return SLANG_OK;
-}
-