summaryrefslogtreecommitdiffstats
path: root/source/slang/ir.cpp
diff options
context:
space:
mode:
authorTim Foley <tfoleyNV@users.noreply.github.com>2018-10-19 13:53:18 -0700
committerGitHub <noreply@github.com>2018-10-19 13:53:18 -0700
commit53731f674601a2eb81c5715957d2e0e65637aee3 (patch)
treedafd74a4e926676c55b93e06e8275a4844a862e8 /source/slang/ir.cpp
parent3a5214b65b2a5efdbcf9bf6fb4d7603e9ee63234 (diff)
Vulkan implicit sampler fixups (#686)
* Fix sampler-less texture functions (#685) * Fix sampler-less texeture functions I'm honestly not sure how the original work on this feature in #648 worked at all (probably insufficient testing). We have these front-end modifiers to indicate that a particular function definition requires a certain GLSL version, or a GLSL extension in order to be used, and they are supposed to be automatically employed by the logic in `emit.cpp` to output `#extension` lines in the output GLSL. However, it turns out that nothing is actually wired up right now, so that adding the modifiers to a declaration is a placebo. This change propagates the modifiers through as decorations, and then uses them during GLSL code emit, which allows the functions that require `EXT_samplerless_texture_functions` to work. * fixup: 32-bit warning * Add serialization support for GLSL extension/version decorations
Diffstat (limited to 'source/slang/ir.cpp')
-rw-r--r--source/slang/ir.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/source/slang/ir.cpp b/source/slang/ir.cpp
index 3ba2aa0dd..f05aeabf6 100644
--- a/source/slang/ir.cpp
+++ b/source/slang/ir.cpp
@@ -5344,6 +5344,22 @@ namespace Slang
}
break;
+ case kIRDecorationOp_RequireGLSLExtension:
+ {
+ auto originalDecoration = (IRRequireGLSLExtensionDecoration*)dd;
+ auto newDecoration = context->builder->addDecoration<IRRequireGLSLExtensionDecoration>(clonedValue);
+ newDecoration->extensionName = originalDecoration->extensionName;
+ }
+ break;
+
+ case kIRDecorationOp_RequireGLSLVersion:
+ {
+ auto originalDecoration = (IRRequireGLSLVersionDecoration*)dd;
+ auto newDecoration = context->builder->addDecoration<IRRequireGLSLVersionDecoration>(clonedValue);
+ newDecoration->languageVersion = originalDecoration->languageVersion;
+ }
+ break;
+
default:
// Don't clone any decorations we don't understand.
break;