diff options
| author | Yong He <yonghe@outlook.com> | 2024-10-21 08:49:15 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-21 08:49:15 -0700 |
| commit | 3e84726f45c66b477569be9e62da71956ab78e94 (patch) | |
| tree | 8c69306133ee04b6acd14dd07d12a0ed47bf0079 /tests | |
| parent | 20fa42e82dfa8398c9c818773fa40817883fb7ec (diff) | |
Fix spirv codegen for pointer to empty structs. (#5355)
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/spirv/ptr-empty-struct.slang | 15 | ||||
| -rw-r--r-- | tests/spirv/ptr-unsized-array-2.slang | 25 |
2 files changed, 40 insertions, 0 deletions
diff --git a/tests/spirv/ptr-empty-struct.slang b/tests/spirv/ptr-empty-struct.slang new file mode 100644 index 000000000..56148592b --- /dev/null +++ b/tests/spirv/ptr-empty-struct.slang @@ -0,0 +1,15 @@ +//TEST:SIMPLE(filecheck=CHECK): -target spirv + +// CHECK: OpPtrAccessChain + +struct EmptyStruct { +}; + +[vk::push_constant] EmptyStruct* pc; + +RWStructuredBuffer<int> outputBuffer; + +[numthreads(64)] +void ComputeMain(uint tid: SV_DispatchThreadID) { + outputBuffer[tid] = ((int*)(pc))[0]; +}
\ No newline at end of file diff --git a/tests/spirv/ptr-unsized-array-2.slang b/tests/spirv/ptr-unsized-array-2.slang new file mode 100644 index 000000000..ac0911d76 --- /dev/null +++ b/tests/spirv/ptr-unsized-array-2.slang @@ -0,0 +1,25 @@ +//TEST:SIMPLE(filecheck=CHECK): -target spirv + +// CHECK-DAG: %[[cbuffer__t:[A-Za-z0-9_]+]] = OpTypeStruct %_ptr_PhysicalStorageBuffer_uint +// CHECK-DAG: %light_buffer = OpVariable %_ptr_PushConstant_[[cbuffer__t]] PushConstant + +// CHECK: OpAccessChain %_ptr_PushConstant +// CHECK-NEXT: OpLoad +// CHECK-NEXT: OpBitcast %_ptr_PhysicalStorageBuffer + +struct LightBuffer { + uint8_t lights[]; +} + +[vk::push_constant] +LightBuffer* light_buffer; + +[shader("vertex")] +float4 vertMain() : SV_Position { + return float4(light_buffer.lights[0]); +} + +[shader("fragment")] +float4 fragMain() : COLOR0 { + return float4(1.0); +}
\ No newline at end of file |
