summaryrefslogtreecommitdiff
path: root/source/slang/slang-emit.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-emit.cpp')
-rw-r--r--source/slang/slang-emit.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/source/slang/slang-emit.cpp b/source/slang/slang-emit.cpp
index 2478eccc2..cd5f58925 100644
--- a/source/slang/slang-emit.cpp
+++ b/source/slang/slang-emit.cpp
@@ -24,6 +24,7 @@
#include "slang-ir-insts.h"
#include "slang-ir-inline.h"
#include "slang-ir-legalize-array-return-type.h"
+#include "slang-ir-legalize-mesh-outputs.h"
#include "slang-ir-legalize-varying-params.h"
#include "slang-ir-link.h"
#include "slang-ir-com-interface.h"
@@ -680,7 +681,7 @@ Result linkAndOptimizeIR(
session,
irModule,
irEntryPoints,
- codeGenContext->getSink(),
+ codeGenContext,
glslExtensionTracker);
#if 0
@@ -774,6 +775,13 @@ Result linkAndOptimizeIR(
cleanUpVoidType(irModule);
+ // For some small improvement in type safety we represent these as opaque
+ // structs instead of regular arrays.
+ //
+ // If any have survived this far, change them back to regular (decorated)
+ // arrays that the emitters can deal with.
+ legalizeMeshOutputTypes(irModule);
+
// Lower all bit_cast operations on complex types into leaf-level
// bit_cast on basic types.
lowerBitCast(targetRequest, irModule);