diff options
| author | Yong He <yonghe@outlook.com> | 2023-08-04 15:55:06 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-08-04 15:55:06 -0700 |
| commit | 856086cf2ac6fb1544b5b08ffa64b2f01931d35c (patch) | |
| tree | 67f521b4750c01263ce8038cfe6d771b7c3b9cfb /source/slang-glslang/slang-glslang.cpp | |
| parent | a2d90fb275962da84611160f8ddd74d934a68dbd (diff) | |
Add option to use original entrypoint in spirv output. (#3047)
* Add option to use original entrypoint in spirv output.
* Fix.
---------
Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source/slang-glslang/slang-glslang.cpp')
| -rw-r--r-- | source/slang-glslang/slang-glslang.cpp | 36 |
1 files changed, 27 insertions, 9 deletions
diff --git a/source/slang-glslang/slang-glslang.cpp b/source/slang-glslang/slang-glslang.cpp index ffe3161ea..b23a34e65 100644 --- a/source/slang-glslang/slang-glslang.cpp +++ b/source/slang-glslang/slang-glslang.cpp @@ -97,7 +97,7 @@ static void dump( } static void dumpDiagnostics( - const glslang_CompileRequest_1_1& request, + const glslang_CompileRequest_1_2& request, std::string const& log) { dump(log.c_str(), log.length(), request.diagnosticFunc, request.diagnosticUserData, stderr); @@ -147,7 +147,7 @@ struct SPIRVOptimizationDiagnostic // Apply the SPIRV-Tools optimizer to generated SPIR-V based on the desired optimization level // TODO: add flag for optimizing SPIR-V size as well -static void glslang_optimizeSPIRV(spv_target_env targetEnv, const glslang_CompileRequest_1_1& request, std::vector<SPIRVOptimizationDiagnostic>& outDiags, std::vector<unsigned int>& ioSpirv) +static void glslang_optimizeSPIRV(spv_target_env targetEnv, const glslang_CompileRequest_1_2& request, std::vector<SPIRVOptimizationDiagnostic>& outDiags, std::vector<unsigned int>& ioSpirv) { const auto optimizationLevel = request.optimizationLevel; @@ -509,7 +509,7 @@ static spv_target_env _getUniversalTargetEnv(glslang::EShTargetLanguageVersion i return SPV_ENV_UNIVERSAL_1_2; } -static int glslang_compileGLSLToSPIRV(const glslang_CompileRequest_1_1& request) +static int glslang_compileGLSLToSPIRV(const glslang_CompileRequest_1_2& request) { // Check that the encoding matches assert(glslang::EShTargetSpv_1_4 == _makeTargetLanguageVersion(1, 4)); @@ -607,6 +607,9 @@ static int glslang_compileGLSLToSPIRV(const glslang_CompileRequest_1_1& request) return 1; } + if (request.entryPointName) + shader->setEntryPoint(request.entryPointName); + program->addShader(shader); if (!program->link(messages)) @@ -691,7 +694,7 @@ static int glslang_compileGLSLToSPIRV(const glslang_CompileRequest_1_1& request) return 0; } -static int glslang_dissassembleSPIRV(const glslang_CompileRequest_1_1& request) +static int glslang_dissassembleSPIRV(const glslang_CompileRequest_1_2& request) { typedef unsigned int SPIRVWord; @@ -744,7 +747,7 @@ public: bool m_isInitialized = false; }; -static int _compile(const glslang_CompileRequest_1_1& request) +static int _compile(const glslang_CompileRequest_1_2& request) { int result = 0; switch (request.action) @@ -771,7 +774,7 @@ _declspec(dllexport) #else __attribute__((__visibility__("default"))) #endif -int glslang_compile_1_1(glslang_CompileRequest_1_1* inRequest) +int glslang_compile_1_2(glslang_CompileRequest_1_2 * inRequest) { static ProcessInitializer g_processInitializer; if (!g_processInitializer.init()) @@ -786,7 +789,7 @@ int glslang_compile_1_1(glslang_CompileRequest_1_1* inRequest) } // If it's the right size just use it - if (inRequest->sizeInBytes == sizeof(glslang_CompileRequest_1_1)) + if (inRequest->sizeInBytes == sizeof(glslang_CompileRequest_1_2)) { return _compile(*inRequest); } @@ -796,8 +799,8 @@ int glslang_compile_1_1(glslang_CompileRequest_1_1* inRequest) // Try to ensure some binary compatibility, by using sizeInBytes member, and copying - glslang_CompileRequest_1_1 request; - + glslang_CompileRequest_1_2 request; + // Copy into request const size_t copySize = (inRequest->sizeInBytes > sizeof(request)) ? sizeof(request) : inRequest->sizeInBytes; ::memcpy(&request, inRequest, copySize); @@ -814,6 +817,21 @@ _declspec(dllexport) #else __attribute__((__visibility__("default"))) #endif +int glslang_compile_1_1(glslang_CompileRequest_1_1* inRequest) +{ + glslang_CompileRequest_1_2 request; + memset(&request, 0, sizeof(request)); + request.sizeInBytes = sizeof(request); + request.set(*inRequest); + return glslang_compile_1_2(&request); +} + +extern "C" +#ifdef _MSC_VER +_declspec(dllexport) +#else +__attribute__((__visibility__("default"))) +#endif int glslang_compile(glslang_CompileRequest_1_0* inRequest) { glslang_CompileRequest_1_1 request; |
