summaryrefslogtreecommitdiffstats
path: root/source/slang/lower.cpp
diff options
context:
space:
mode:
authorTim Foley <tfoley@nvidia.com>2017-07-10 08:34:52 -0700
committerTim Foley <tfoley@nvidia.com>2017-07-10 08:34:52 -0700
commit0e220da96b819f3a31635689f78ad20bd9a36d0b (patch)
tree7728d25df51cb8488ac681715a82b359730b796d /source/slang/lower.cpp
parent928cc86160644547decc49c72304549d9009a1af (diff)
More cross-compilation fixes
- Add GLSL mappings for more `Texture*` methods - The annoying one here is `Texture*.Load()` because it doesn't take a sampler, but the GLSL equivalent needs one (while the SPIR-V does *not*). I've hacked this pretty seriously for now. - Try to ensure that we add `uniform` to global declarations that need it in GLSL - When outputting an `in` or `out` variable that might have been created from an `inout` shader parameter, filter the layout qualifiers that we output to only cover the appropriate resource kind.
Diffstat (limited to 'source/slang/lower.cpp')
-rw-r--r--source/slang/lower.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/source/slang/lower.cpp b/source/slang/lower.cpp
index 6c54d18b6..023c63591 100644
--- a/source/slang/lower.cpp
+++ b/source/slang/lower.cpp
@@ -194,6 +194,8 @@ public:
struct SharedLoweringContext
{
+ CompileRequest* compileRequest;
+
ProgramLayout* programLayout;
// The target we are going to generate code for.
@@ -1372,6 +1374,23 @@ struct LoweringVisitor
return loweredDecl;
}
+ SourceLanguage getSourceLanguage(ProgramSyntaxNode* moduleDecl)
+ {
+ for (auto translationUnit : shared->compileRequest->translationUnits)
+ {
+ if (moduleDecl == translationUnit->SyntaxNode)
+ return translationUnit->sourceLanguage;
+ }
+
+ for (auto loadedModuleDecl : shared->compileRequest->loadedModulesList)
+ {
+ if (moduleDecl == loadedModuleDecl)
+ return SourceLanguage::Slang;
+ }
+
+ return SourceLanguage::Unknown;
+ }
+
RefPtr<VarDeclBase> visitVariable(
Variable* decl)
{
@@ -2022,6 +2041,7 @@ LoweredEntryPoint lowerEntryPoint(
CodeGenTarget target)
{
SharedLoweringContext sharedContext;
+ sharedContext.compileRequest = entryPoint->compileRequest;
sharedContext.programLayout = programLayout;
sharedContext.target = target;