summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--source/slang/ast-legalize.cpp5
-rw-r--r--source/slang/emit.cpp9
-rw-r--r--tests/compute/rewriter-parameter-block-complex.hlsl2
-rw-r--r--tests/compute/rewriter-parameter-block-complex.hlsl.2.expected.txt4
-rw-r--r--tests/compute/rewriter-parameter-block.hlsl2
-rw-r--r--tests/compute/rewriter-parameter-block.hlsl.2.expected.txt4
6 files changed, 21 insertions, 5 deletions
diff --git a/source/slang/ast-legalize.cpp b/source/slang/ast-legalize.cpp
index 2f7814055..98a9c2573 100644
--- a/source/slang/ast-legalize.cpp
+++ b/source/slang/ast-legalize.cpp
@@ -2683,7 +2683,10 @@ struct LoweringVisitor
String mangledName = globalVar->mangledName;
SLANG_ASSERT(mangledName.Length() != 0);
- return LegalExpr(createUncheckedVarRef(mangledName));
+ RefPtr<Expr> varRef = createUncheckedVarRef(mangledName);
+ varRef->type.type = globalVar->getType()->getValueType();
+
+ return LegalExpr(varRef);
}
break;
diff --git a/source/slang/emit.cpp b/source/slang/emit.cpp
index e40350df8..295551639 100644
--- a/source/slang/emit.cpp
+++ b/source/slang/emit.cpp
@@ -1410,8 +1410,13 @@ struct EmitVisitor
return true;
}
- // Is the expression referencing a constant buffer?
- if (auto cbufferType = e->type->As<ConstantBufferType>())
+ // Is the expression referencing a uniform parameter group,
+ // but *not* a `ParameterBlock<T>`?
+ if (auto parameterBlockType = e->type->As<ParameterBlockType>())
+ {
+ return false;
+ }
+ if (auto uniformParameterGroupType = e->type->As<UniformParameterGroupType>())
{
return true;
}
diff --git a/tests/compute/rewriter-parameter-block-complex.hlsl b/tests/compute/rewriter-parameter-block-complex.hlsl
index fe7aae4a6..18a37a6ef 100644
--- a/tests/compute/rewriter-parameter-block-complex.hlsl
+++ b/tests/compute/rewriter-parameter-block-complex.hlsl
@@ -1,6 +1,6 @@
//TEST(compute):HLSL_COMPUTE:-xslang -no-checking
//TEST(compute):COMPARE_COMPUTE:-xslang -use-ir
-//DISABLED_TEST(compute):HLSL_COMPUTE:-xslang -no-checking -xslang -use-ir
+//TEST(compute):HLSL_COMPUTE:-xslang -no-checking -xslang -use-ir
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out
diff --git a/tests/compute/rewriter-parameter-block-complex.hlsl.2.expected.txt b/tests/compute/rewriter-parameter-block-complex.hlsl.2.expected.txt
new file mode 100644
index 000000000..883f72716
--- /dev/null
+++ b/tests/compute/rewriter-parameter-block-complex.hlsl.2.expected.txt
@@ -0,0 +1,4 @@
+1110
+1121
+1132
+1143
diff --git a/tests/compute/rewriter-parameter-block.hlsl b/tests/compute/rewriter-parameter-block.hlsl
index 9d3140475..0a6f5d52e 100644
--- a/tests/compute/rewriter-parameter-block.hlsl
+++ b/tests/compute/rewriter-parameter-block.hlsl
@@ -1,6 +1,6 @@
//TEST(compute):HLSL_COMPUTE:-xslang -no-checking
//TEST(compute):COMPARE_COMPUTE:-xslang -use-ir
-//DISABLED_TEST(compute):HLSL_COMPUTE:-xslang -no-checking -xslang -use-ir
+//TEST(compute):HLSL_COMPUTE:-xslang -no-checking -xslang -use-ir
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out
diff --git a/tests/compute/rewriter-parameter-block.hlsl.2.expected.txt b/tests/compute/rewriter-parameter-block.hlsl.2.expected.txt
new file mode 100644
index 000000000..479b9e0da
--- /dev/null
+++ b/tests/compute/rewriter-parameter-block.hlsl.2.expected.txt
@@ -0,0 +1,4 @@
+11110
+11121
+11132
+11143