summaryrefslogtreecommitdiffstats
path: root/tests/language-feature/descriptor-handle
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2025-04-30 16:38:57 -0700
committerGitHub <noreply@github.com>2025-04-30 16:38:57 -0700
commita8d7bb9f781fd77080f07bfaab54fbbcf3a3686d (patch)
tree3bda97cf2a0d9a7800e7201e948354962e13d2a4 /tests/language-feature/descriptor-handle
parent7f1df9d0b31413e59846cc955d2a955d3f361e2a (diff)
Add `IOpaqueDescriptor::descriptorAccess`. (#6967)
* Add `IOpaqueHandle::descriptorAccess`. * Update doc. * fix.
Diffstat (limited to 'tests/language-feature/descriptor-handle')
-rw-r--r--tests/language-feature/descriptor-handle/desc-handle-4.slang34
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/language-feature/descriptor-handle/desc-handle-4.slang b/tests/language-feature/descriptor-handle/desc-handle-4.slang
new file mode 100644
index 000000000..d04db3175
--- /dev/null
+++ b/tests/language-feature/descriptor-handle/desc-handle-4.slang
@@ -0,0 +1,34 @@
+//TEST:INTERPRET(filecheck=CHECK):
+
+#define CHECK(x) if (!(x)) return false
+
+DescriptorAccess getAccess<T : IOpaqueDescriptor>()
+{
+ return T.descriptorAccess;
+}
+
+bool test()
+{
+ CHECK(getAccess<Texture2D>() == DescriptorAccess.Read);
+ CHECK(getAccess<SamplerState>() == DescriptorAccess.Unknown);
+ CHECK(getAccess<RasterizerOrderedStructuredBuffer<int>>() == DescriptorAccess.RasterizerOrdered);
+ CHECK(getAccess<RWStructuredBuffer<int>>() == DescriptorAccess.ReadWrite);
+ CHECK(getAccess<AppendStructuredBuffer<int>>() == DescriptorAccess.ReadWrite);
+ CHECK(getAccess<ConsumeStructuredBuffer<int>>() == DescriptorAccess.ReadWrite);
+ CHECK(getAccess<StructuredBuffer<int>>() == DescriptorAccess.Read);
+ CHECK(getAccess<ConstantBuffer<int>>() == DescriptorAccess.Read);
+ CHECK(getAccess<RWByteAddressBuffer>() == DescriptorAccess.ReadWrite);
+ CHECK(getAccess<ByteAddressBuffer>() == DescriptorAccess.Read);
+ CHECK(getAccess<RaytracingAccelerationStructure>() == DescriptorAccess.Read);
+ CHECK(getAccess<WTexture2DArray>() == DescriptorAccess.Write);
+ return true;
+}
+
+void main()
+{
+ // CHECK: pass
+ if (test())
+ printf("pass\n");
+ else
+ printf("fail\n");
+} \ No newline at end of file