summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorCopilot <198982749+Copilot@users.noreply.github.com>2025-10-01 14:14:05 -0700
committerGitHub <noreply@github.com>2025-10-01 14:14:05 -0700
commitcd7da79f50f2b8fb9bca797131585ff1b85698f6 (patch)
treea3d5baecee6aa207b7b950aedc464eaa8585b60e /tests
parenta43ac0053eb49fde3329cc7fdc7f60f45e502704 (diff)
Fix incorrect binding index assignment for StructuredBuffer and ByteAddressBuffer with DescriptorHandle (#8252)
- [x] Fix segmentation fault in wrapConstantBufferElement for DescriptorHandle types - [x] Split DescriptorKind.Buffer into ConstantBuffer and StorageBuffer - [x] Update binding enums with descriptive names (ConstantBuffer_Read, StorageBuffer_Read, etc.) - [x] Update resource type mappings for correct binding assignments - [x] Update template logic to handle ConstantBuffer and StorageBuffer kinds separately - [x] Update tests to reflect correct binding assignments - [x] Split DescriptorKind.TexelBuffer into UniformTexelBuffer and StorageTexelBuffer - [x] Update TextureBuffer<T> to use UniformTexelBuffer kind - [x] Update _Texture extension to determine texel buffer kind based on access mode - [x] Update test desc-handle-1.slang to handle new DescriptorKind enum cases <!-- START COPILOT CODING AGENT TIPS --> --- ✨ Let Copilot coding agent [set things up for you](https://github.com/shader-slang/slang/issues/new?title=✨+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot) — coding agent works faster and does higher quality work when set up for your repo. --------- Co-authored-by: Yong He <yonghe@outlook.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/language-feature/descriptor-handle/desc-handle-1.slang2
-rw-r--r--tests/language-feature/descriptor-handle/desc-handle-default.slang4
-rw-r--r--tests/language-feature/enums/enum-use-prev-value.slang18
3 files changed, 22 insertions, 2 deletions
diff --git a/tests/language-feature/descriptor-handle/desc-handle-1.slang b/tests/language-feature/descriptor-handle/desc-handle-1.slang
index 0621f4a84..407aee684 100644
--- a/tests/language-feature/descriptor-handle/desc-handle-1.slang
+++ b/tests/language-feature/descriptor-handle/desc-handle-1.slang
@@ -16,7 +16,7 @@ export T getDescriptorFromHandle<T:IOpaqueDescriptor>(DescriptorHandle<T> handle
__target_switch
{
case spirv:
- if (T.kind != DescriptorKind.Buffer)
+ if (T.kind != DescriptorKind.ConstantBuffer && T.kind != DescriptorKind.StorageBuffer)
return resourceHeap[((uint2)handleValue).x].asOpaqueDescriptor<T>();
else
return defaultGetDescriptorFromHandle(handleValue);
diff --git a/tests/language-feature/descriptor-handle/desc-handle-default.slang b/tests/language-feature/descriptor-handle/desc-handle-default.slang
index 9a4d444d7..674662f4b 100644
--- a/tests/language-feature/descriptor-handle/desc-handle-default.slang
+++ b/tests/language-feature/descriptor-handle/desc-handle-default.slang
@@ -32,12 +32,12 @@ Texture1D<float> t4;
//MIX-DAG: OpDecorate %__slang_resource_heap{{.*}} Binding 0
//MIX-DAG: OpDecorate %__slang_resource_heap{{.*}} Binding 5
//MIX-DAG: OpDecorate %__slang_resource_heap{{.*}} Binding 6
+//MIX-DAG: OpDecorate %__slang_resource_heap{{.*}} Binding 7
//MIX-NOT: OpDecorate %__slang_resource_heap{{.*}} Binding 1
//MIX-NOT: OpDecorate %__slang_resource_heap{{.*}} Binding 2
//MIX-NOT: OpDecorate %__slang_resource_heap{{.*}} Binding 3
//MIX-NOT: OpDecorate %__slang_resource_heap{{.*}} Binding 4
-//MIX-NOT: OpDecorate %__slang_resource_heap{{.*}} Binding 7
//MIX-NOT: OpDecorate %__slang_resource_heap{{.*}} Binding 8
#ifdef SAMPLER
@@ -89,6 +89,8 @@ uniform RWBuffer<float>.Handle rwTexelBuffer;
#ifdef UNIFORM_BUFFER
//UNIFORM_BUFFER: OpDecorate %__slang_resource_heap{{.*}} Binding 6
//UNIFORM_BUFFER-NEXT: OpDecorate %__slang_resource_heap{{.*}} DescriptorSet 3
+//UNIFORM_BUFFER: OpDecorate %__slang_resource_heap{{.*}} Binding 7
+//UNIFORM_BUFFER-NEXT: OpDecorate %__slang_resource_heap{{.*}} DescriptorSet 3
struct Data
{
float v;
diff --git a/tests/language-feature/enums/enum-use-prev-value.slang b/tests/language-feature/enums/enum-use-prev-value.slang
new file mode 100644
index 000000000..b3a9ed2eb
--- /dev/null
+++ b/tests/language-feature/enums/enum-use-prev-value.slang
@@ -0,0 +1,18 @@
+//TEST:INTERPRET(filecheck=CHECK):
+
+enum MyEnum
+{
+ A,
+ B = A,
+ C
+}
+
+void main()
+{
+ // CHECK: A = 0
+ printf("A = %d\n", MyEnum.A);
+ // CHECK: B = 0
+ printf("B = %d\n", MyEnum.B);
+ // CHECK: C = 1
+ printf("C = %d\n", MyEnum.C);
+} \ No newline at end of file