diff options
| -rw-r--r-- | source/slang/ast-legalize.cpp | 5 | ||||
| -rw-r--r-- | source/slang/emit.cpp | 9 | ||||
| -rw-r--r-- | tests/compute/rewriter-parameter-block-complex.hlsl | 2 | ||||
| -rw-r--r-- | tests/compute/rewriter-parameter-block-complex.hlsl.2.expected.txt | 4 | ||||
| -rw-r--r-- | tests/compute/rewriter-parameter-block.hlsl | 2 | ||||
| -rw-r--r-- | tests/compute/rewriter-parameter-block.hlsl.2.expected.txt | 4 |
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 |
