diff options
| author | Yong He <yonghe@outlook.com> | 2023-07-21 14:37:21 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-07-21 14:37:21 -0700 |
| commit | 82508d87e1199a2e299ac21b8b6ac8d192917d1d (patch) | |
| tree | d9ec65a8b513dfb8d53802494033e0a91fbeaa27 | |
| parent | b40b711f54748145ed1340f2a3aa626dcb42b699 (diff) | |
Add sampleCount parameter for read-only textures. (#3011)
Co-authored-by: Yong He <yhe@nvidia.com>
| -rw-r--r-- | source/slang/core.meta.slang | 2 | ||||
| -rw-r--r-- | source/slang/slang-syntax.cpp | 2 | ||||
| -rw-r--r-- | tests/hlsl-intrinsic/texture/texture-sample-count.slang | 4 |
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; } |
