summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorTim Foley <tfoleyNV@users.noreply.github.com>2017-08-25 20:13:19 -0700
committerGitHub <noreply@github.com>2017-08-25 20:13:19 -0700
commit227f9f5a9d8ac0d88079b6175b3f31c8f05fabd0 (patch)
tree48f73703ca00c91ab23cd3750ac42ac71feca9a2 /tests
parent7e05e062a0b7c39dbce6e850227d2038aca2f38e (diff)
parentc077a08652377194f9076fc41b1b3793301b25ae (diff)
Merge pull request #173 from tfoleyNV/resources-in-structs-fixes
Fix some resources-in-structs bugs
Diffstat (limited to 'tests')
-rw-r--r--tests/bugs/gh-171.slang30
-rw-r--r--tests/bugs/gh-172.slang41
2 files changed, 71 insertions, 0 deletions
diff --git a/tests/bugs/gh-171.slang b/tests/bugs/gh-171.slang
new file mode 100644
index 000000000..b37f77ce2
--- /dev/null
+++ b/tests/bugs/gh-171.slang
@@ -0,0 +1,30 @@
+//TEST:COMPARE_HLSL: -profile ps_5_0 -entry main -target dxbc-assembly -split-mixed-types
+// Make sure we don't crash when desugaring resources
+// in structs when a `cbuffer` only contains resources.
+
+#ifdef __SLANG__
+
+cbuffer C
+{
+ Texture2D t;
+ SamplerState s;
+};
+
+float4 main(float2 uv: UV) : SV_Target
+{
+ return t.Sample(s, uv);
+}
+
+#else
+
+Texture2D SLANG_parameterBlock_C_t : register(t0);
+SamplerState SLANG_parameterBlock_C_s : register(s0);
+
+float4 main(float2 uv: UV) : SV_Target
+{
+ return SLANG_parameterBlock_C_t.Sample(SLANG_parameterBlock_C_s, uv);
+}
+
+#endif
+
+
diff --git a/tests/bugs/gh-172.slang b/tests/bugs/gh-172.slang
new file mode 100644
index 000000000..f898b5f4b
--- /dev/null
+++ b/tests/bugs/gh-172.slang
@@ -0,0 +1,41 @@
+//TEST:COMPARE_HLSL: -profile ps_5_0 -entry main -target dxbc-assembly -split-mixed-types
+
+// Make sure we don't crash when desugaring resource in structs,
+// when the user also declares multiple variables with a
+// single declaration.
+
+#ifdef __SLANG__
+
+cbuffer C
+{
+ Texture2D t0, t1;
+ SamplerState s;
+ float2 uv;
+};
+
+float4 main() : SV_Target
+{
+ return t0.Sample(s, uv)
+ + t1.Sample(s, uv);
+}
+
+#else
+
+cbuffer C : register(b0)
+{
+ float2 uv;
+};
+
+Texture2D SLANG_parameterBlock_C_t0 : register(t0);
+Texture2D SLANG_parameterBlock_C_t1 : register(t1);
+SamplerState SLANG_parameterBlock_C_s : register(s0);
+
+float4 main() : SV_Target
+{
+ return SLANG_parameterBlock_C_t0.Sample(SLANG_parameterBlock_C_s, uv)
+ + SLANG_parameterBlock_C_t1.Sample(SLANG_parameterBlock_C_s, uv);
+}
+
+#endif
+
+