diff options
| author | Yong He <yonghe@outlook.com> | 2024-03-21 21:10:48 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-21 21:10:48 -0700 |
| commit | 00474731a90add7c0aaffc3a76d713ae2cecdbbe (patch) | |
| tree | a99e6cd38901de6394c973992fc5ef6b600e3f2b /tests/spirv/vk-buffer-pointer-1.slang | |
| parent | 7a8ef896196ad0d7095412d8558dd9a2542874c8 (diff) | |
Partially implement vk_buffer_ref proposal. (#3814)
Diffstat (limited to 'tests/spirv/vk-buffer-pointer-1.slang')
| -rw-r--r-- | tests/spirv/vk-buffer-pointer-1.slang | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/spirv/vk-buffer-pointer-1.slang b/tests/spirv/vk-buffer-pointer-1.slang new file mode 100644 index 000000000..7d4e5dc1c --- /dev/null +++ b/tests/spirv/vk-buffer-pointer-1.slang @@ -0,0 +1,34 @@ +//TEST:SIMPLE(filecheck=CHECK): -target spirv -emit-spirv-directly -O0 + +// Note: spirv-opt will crash on the generated spirv, so use -O0 to disable it. + +// CHECK: OpEntryPoint +// CHECK: OpTypeForwardPointer +typedef vk::BufferPointer<block_s> block_p; + +struct block_s +{ + float4 x; + block_p next; +}; + +struct TestPushConstant_t +{ + block_p root; +}; + +[[vk::push_constant]] TestPushConstant_t g_PushConstants; + +[shader("fragment")] +float4 MainPs(void) : SV_Target0 +{ +#if __has_feature(hlsl_vk_buffer_pointer) + block_p g_p = g_PushConstants.root; + g_p = g_p.Get().next; + if ((uint64_t)g_p == 0) // Null pointer test + return float4(0.0, 0.0, 0.0, 0.0); + return g_p.Get().x; +#else + return float4(0.0); +#endif +}
\ No newline at end of file |
