summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvenkataram-nv <vedavamadath@nvidia.com>2024-08-16 23:08:00 -0700
committerGitHub <noreply@github.com>2024-08-16 23:08:00 -0700
commit25bc5a3ada5a2404f25ecf2de7d035ba60cd9fdf (patch)
tree8cb0092f1bf09756f3e1adca60963413742413fe
parentb411c05bc074f53037e32b23583b85adcfbf81fc (diff)
Avoiding the use of the global AST builder in DeclRefType::create (#4866)
-rw-r--r--source/slang/slang-syntax.cpp3
-rw-r--r--tests/modules/environment.slang29
-rw-r--r--tests/modules/hit.slang24
3 files changed, 53 insertions, 3 deletions
diff --git a/source/slang/slang-syntax.cpp b/source/slang/slang-syntax.cpp
index d6efb47b3..7fa9e8fc0 100644
--- a/source/slang/slang-syntax.cpp
+++ b/source/slang/slang-syntax.cpp
@@ -526,9 +526,6 @@ Index getFilterCountImpl(const ReflectClassInfo& clsInfo, MemberFilterStyle filt
{
SLANG_UNEXPECTED("unhandled type");
}
- // Always create builtin types in global AST builder.
- if (astBuilder->getSharedASTBuilder()->getInnerASTBuilder() != astBuilder)
- return DeclRefType::create(astBuilder->getSharedASTBuilder()->getInnerASTBuilder(), declRef);
declRef = createDefaultSubstitutionsIfNeeded(astBuilder, nullptr, declRef);
ValNodeDesc nodeDesc = {};
diff --git a/tests/modules/environment.slang b/tests/modules/environment.slang
new file mode 100644
index 000000000..915e04c54
--- /dev/null
+++ b/tests/modules/environment.slang
@@ -0,0 +1,29 @@
+module environment;
+
+uint lcg(inout uint prev)
+{
+ const uint LCG_A = 1664525u;
+ const uint LCG_C = 1013904223u;
+ prev = (LCG_A * prev + LCG_C);
+ return prev & 0x00FFFFFF;
+}
+
+public float rnd(inout uint prev)
+{
+ return ((float) lcg(prev) / (float) 0x01000000);
+}
+
+public struct Environment_sample_data
+{
+ uint alias;
+ float q;
+};
+
+public float3 environment_sample(StructuredBuffer <Environment_sample_data> sample_buffer, inout int seed)
+{
+ float3 xi;
+ xi.x = rnd(seed);
+ xi.y = rnd(seed);
+ xi.z = rnd(seed);
+ return xi.z;
+}
diff --git a/tests/modules/hit.slang b/tests/modules/hit.slang
new file mode 100644
index 000000000..d175275b4
--- /dev/null
+++ b/tests/modules/hit.slang
@@ -0,0 +1,24 @@
+//TEST:COMPILE: tests/modules/environment.slang -o tests/modules/environment.slang-module
+//TEST:COMPILE: tests/modules/hit.slang -stage closesthit -entry closesthit -target dxil -o monolithic.dxil
+
+import environment;
+
+StructuredBuffer <Environment_sample_data> environment_sample_buffer;
+
+float3 sample_lights(inout uint seed)
+{
+ return environment_sample(environment_sample_buffer, seed);
+}
+
+struct RadianceHitInfo
+{
+ float3 contribution;
+};
+
+struct Attributes
+{
+ float2 bary;
+};
+
+[shader("closesthit")]
+void closesthit(inout RadianceHitInfo payload, Attributes attrib) {}