summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--source/slang/slang-type-layout.cpp10
-rw-r--r--tests/bindings/hlsl-to-cpp-combined.slang17
2 files changed, 25 insertions, 2 deletions
diff --git a/source/slang/slang-type-layout.cpp b/source/slang/slang-type-layout.cpp
index 623483efe..1aeaceb72 100644
--- a/source/slang/slang-type-layout.cpp
+++ b/source/slang/slang-type-layout.cpp
@@ -1057,6 +1057,12 @@ struct CPUObjectLayoutRulesImpl : ObjectLayoutRulesImpl
case ShaderParameterKind::TextureSampler:
case ShaderParameterKind::MutableTextureSampler:
+ {
+ ObjectLayoutInfo info;
+ info.layoutInfos.add(SimpleLayoutInfo(LayoutResourceKind::Uniform, sizeof(void*), SLANG_ALIGN_OF(void*)));
+ info.layoutInfos.add(SimpleLayoutInfo(LayoutResourceKind::Uniform, sizeof(void*), SLANG_ALIGN_OF(void*)));
+ return info;
+ }
case ShaderParameterKind::InputRenderTarget:
// TODO: how to handle these?
default:
@@ -1447,11 +1453,11 @@ LayoutRulesImpl* CPULayoutRulesFamilyImpl::getTextureBufferRules()
LayoutRulesImpl* CPULayoutRulesFamilyImpl::getVaryingInputRules()
{
- return nullptr;
+ return &kCPULayoutRulesImpl_;
}
LayoutRulesImpl* CPULayoutRulesFamilyImpl::getVaryingOutputRules()
{
- return nullptr;
+ return &kCPULayoutRulesImpl_;
}
LayoutRulesImpl* CPULayoutRulesFamilyImpl::getSpecializationConstantRules()
{
diff --git a/tests/bindings/hlsl-to-cpp-combined.slang b/tests/bindings/hlsl-to-cpp-combined.slang
new file mode 100644
index 000000000..965ee0d47
--- /dev/null
+++ b/tests/bindings/hlsl-to-cpp-combined.slang
@@ -0,0 +1,17 @@
+//TEST:SIMPLE(filecheck=CHK):-target cpp -stage compute -entry computeMain
+
+//CHK:struct Sampler2D
+//CHK-NEXT:{
+//CHK-NEXT: Texture2D<{{.*}}> [[TEX:texture_[0-9]*]]
+//CHK-NEXT: SamplerState [[SMP:sampler_[0-9]*]]
+
+Sampler2D<float4> s2D;
+
+RWStructuredBuffer<float4> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(int3 dispatchThreadID: SV_DispatchThreadID)
+{
+ //CHK:[[VAR:[A-Za-z_][A-Za-z_0-9]*]].[[TEX]].Sample([[VAR]].[[SMP]]
+ outputBuffer[0] = s2D.Sample(float2(0.5f, 0.5f));
+}