summaryrefslogtreecommitdiff
path: root/source/slang/slang-type-layout.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-type-layout.cpp')
-rw-r--r--source/slang/slang-type-layout.cpp51
1 files changed, 23 insertions, 28 deletions
diff --git a/source/slang/slang-type-layout.cpp b/source/slang/slang-type-layout.cpp
index 8c1108870..691e5864c 100644
--- a/source/slang/slang-type-layout.cpp
+++ b/source/slang/slang-type-layout.cpp
@@ -3813,15 +3813,31 @@ static TypeLayoutResult _createTypeLayout(
// TODO: the logic here should really be defined by the rules,
// and not at this top level...
ShaderParameterKind kind;
- switch( textureType->getAccess() )
+ if (textureType->isCombined())
{
- default:
- kind = ShaderParameterKind::MutableTexture;
- break;
+ switch (textureType->getAccess())
+ {
+ default:
+ kind = ShaderParameterKind::MutableTextureSampler;
+ break;
- case SLANG_RESOURCE_ACCESS_READ:
- kind = ShaderParameterKind::Texture;
- break;
+ case SLANG_RESOURCE_ACCESS_READ:
+ kind = ShaderParameterKind::TextureSampler;
+ break;
+ }
+ }
+ else
+ {
+ switch( textureType->getAccess() )
+ {
+ default:
+ kind = ShaderParameterKind::MutableTexture;
+ break;
+
+ case SLANG_RESOURCE_ACCESS_READ:
+ kind = ShaderParameterKind::Texture;
+ break;
+ }
}
return createSimpleTypeLayout(
@@ -3850,27 +3866,6 @@ static TypeLayoutResult _createTypeLayout(
type,
rules);
}
- else if (auto textureSamplerType = as<TextureSamplerType>(type))
- {
- // TODO: the logic here should really be defined by the rules,
- // and not at this top level...
- ShaderParameterKind kind;
- switch( textureSamplerType->getAccess() )
- {
- default:
- kind = ShaderParameterKind::MutableTextureSampler;
- break;
-
- case SLANG_RESOURCE_ACCESS_READ:
- kind = ShaderParameterKind::TextureSampler;
- break;
- }
-
- return createSimpleTypeLayout(
- rules->GetObjectLayout(kind, context.objectLayoutOptions),
- type,
- rules);
- }
// TODO: need a better way to handle this stuff...
#define CASE(TYPE, KIND) \