summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/slang/hlsl.meta.slang4
-rw-r--r--source/slang/slang-emit.cpp16
2 files changed, 11 insertions, 9 deletions
diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang
index f82f7b5f4..483c2299f 100644
--- a/source/slang/hlsl.meta.slang
+++ b/source/slang/hlsl.meta.slang
@@ -2659,13 +2659,13 @@ uint WaveActiveCountBits(bool value);
__glsl_extension(GL_KHR_shader_subgroup_basic)
__spirv_version(1.3)
-__target_intrinsic(glsl, "gl_SubgroupSize")
+__target_intrinsic(glsl, "(gl_SubgroupSize)")
__target_intrinsic(cuda, "(warpSize)")
uint WaveGetLaneCount();
__glsl_extension(GL_KHR_shader_subgroup_basic)
__spirv_version(1.3)
-__target_intrinsic(glsl, "gl_SubgroupInvocationID")
+__target_intrinsic(glsl, "(gl_SubgroupInvocationID)")
__target_intrinsic(cuda, "_getLaneId()")
uint WaveGetLaneIndex();
diff --git a/source/slang/slang-emit.cpp b/source/slang/slang-emit.cpp
index e613f5462..3caef0a9f 100644
--- a/source/slang/slang-emit.cpp
+++ b/source/slang/slang-emit.cpp
@@ -641,6 +641,15 @@ SlangResult emitEntryPointSourceFromIR(
// There may be global-scope modifiers that we should emit now
sourceEmitter->emitPreprocessorDirectives();
+ RefObject* extensionTracker = sourceEmitter->getExtensionTracker();
+
+ if (auto glslExtensionTracker = as<GLSLExtensionTracker>(extensionTracker))
+ {
+ StringBuilder builder;
+ glslExtensionTracker->appendExtensionRequireLines(builder);
+ sourceWriter.emit(builder.getUnownedSlice());
+ }
+
sourceEmitter->emitLayoutDirectives(targetRequest);
String prefix = sourceWriter.getContent();
@@ -648,13 +657,6 @@ SlangResult emitEntryPointSourceFromIR(
StringBuilder finalResultBuilder;
finalResultBuilder << prefix;
- RefObject* extensionTracker = sourceEmitter->getExtensionTracker();
-
- if (auto glslExtensionTracker = as<GLSLExtensionTracker>(extensionTracker))
- {
- glslExtensionTracker->appendExtensionRequireLines(finalResultBuilder);
- }
-
finalResultBuilder << code;
// Write out the result