summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2023-07-21 14:37:21 -0700
committerGitHub <noreply@github.com>2023-07-21 14:37:21 -0700
commit82508d87e1199a2e299ac21b8b6ac8d192917d1d (patch)
treed9ec65a8b513dfb8d53802494033e0a91fbeaa27
parentb40b711f54748145ed1340f2a3aa626dcb42b699 (diff)
Add sampleCount parameter for read-only textures. (#3011)
Co-authored-by: Yong He <yhe@nvidia.com>
-rw-r--r--source/slang/core.meta.slang2
-rw-r--r--source/slang/slang-syntax.cpp2
-rw-r--r--tests/hlsl-intrinsic/texture/texture-sample-count.slang4
3 files changed, 5 insertions, 3 deletions
diff --git a/source/slang/core.meta.slang b/source/slang/core.meta.slang
index 08cbcd9d5..afb14dc4a 100644
--- a/source/slang/core.meta.slang
+++ b/source/slang/core.meta.slang
@@ -1331,7 +1331,7 @@ struct TextureTypeInfo
// emit a generic signature
sb << "__generic<T = float4";
// Multi-sample rw texture types have an optional sampleCount parameter.
- if (isMultisample && access == SLANG_RESOURCE_ACCESS_READ_WRITE)
+ if (isMultisample)
sb << ", let sampleCount : int = 0";
sb << ">";
diff --git a/source/slang/slang-syntax.cpp b/source/slang/slang-syntax.cpp
index 249969729..227e468d6 100644
--- a/source/slang/slang-syntax.cpp
+++ b/source/slang/slang-syntax.cpp
@@ -575,7 +575,7 @@ Index getFilterCountImpl(const ReflectClassInfo& clsInfo, MemberFilterStyle filt
SLANG_ASSERT(subst && subst->getArgs().getCount() >= 1);
auto textureTag = TextureFlavor(magicMod->tag);
Val* sampleCount = nullptr;
- if (textureTag.isMultisample() && textureTag.getAccess() == SLANG_RESOURCE_ACCESS_READ_WRITE)
+ if (textureTag.isMultisample())
{
if (subst->getArgs().getCount() >= 2)
sampleCount = ExtractGenericArgInteger(subst->getArgs().getLast());
diff --git a/tests/hlsl-intrinsic/texture/texture-sample-count.slang b/tests/hlsl-intrinsic/texture/texture-sample-count.slang
index 8c8068e24..59b82fc0b 100644
--- a/tests/hlsl-intrinsic/texture/texture-sample-count.slang
+++ b/tests/hlsl-intrinsic/texture/texture-sample-count.slang
@@ -5,9 +5,11 @@
// CHECK: RWTexture2DMS<uint > t_0 : register(u0);
// CHECK: RWTexture2DMS<uint, 4 > tExplicit_0 : register(u1);
+// CHECK: TextureCubeMS<float4, 3 > tCube_0 : register(t0);
RWTexture2DMS<uint> t;
RWTexture2DMS<uint, 4> tExplicit;
+TextureCubeMS<float4, 3> tCube;
SamplerState s;
RWBuffer<uint4> b;
@@ -16,6 +18,6 @@ RWBuffer<uint4> b;
[numthreads(32, 1, 1)]
void main(uint3 tid : SV_DispatchThreadID)
{
- let v = t.Load(int2(0, 0), 1) + tExplicit.Load(int2(1,1),2);
+ let v = t.Load(int2(0, 0), 1) + tExplicit.Load(int2(1,1),2) + int(tCube.Load(int3(0,0,0), 3).x);
b[tid.x] = v;
}