From 7240cf8c57de98bba015fb8b7b0b6e2a2bc631b3 Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Sun, 6 Apr 2025 13:54:19 +0100 Subject: [PATCH] Add VK_Workgroup_Zoo unit tests for Quad Shuffle operations subgroupQuadBroadcast() subgroupQuadSwapDiagonal() subgroupQuadSwapHorizontal() subgroupQuadSwapVertical() --- util/test/demos/vk/vk_subgroup_zoo.cpp | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/util/test/demos/vk/vk_subgroup_zoo.cpp b/util/test/demos/vk/vk_subgroup_zoo.cpp index 382833476..f68b49c80 100644 --- a/util/test/demos/vk/vk_subgroup_zoo.cpp +++ b/util/test/demos/vk/vk_subgroup_zoo.cpp @@ -104,12 +104,34 @@ layout(location = 0, index = 0) out vec4 Color; void main() { + uint subgroupId = gl_SubgroupInvocationID; + vec4 fragdata = vec4(0); if(IsTest(1) || IsTest(2)) - fragdata = vec4(gl_SubgroupInvocationID, 0, 0, 1); + { + fragdata = vec4(subgroupId, 0, 0, 1); + } else if(IsTest(4)) - fragdata = vec4(subgroupAdd(gl_SubgroupInvocationID), 0, 0, 0); + { + fragdata = vec4(subgroupAdd(subgroupId), 0, 0, 0); + } + else if(IsTest(5)) + { + // subgroupQuadBroadcast : unit tests + fragdata.x = float(subgroupQuadBroadcast(subgroupId, 0)); + fragdata.y = float(subgroupQuadBroadcast(subgroupId, 1)); + fragdata.z = float(subgroupQuadBroadcast(subgroupId, 2)); + fragdata.w = float(subgroupQuadBroadcast(subgroupId, 3)); + } + else if(IsTest(6)) + { + // subgroupQuadSwapDiagonal, subgroupQuadSwapHorizontal, subgroupQuadSwapVertical : unit tests + fragdata.x = float(subgroupQuadSwapDiagonal(subgroupId)); + fragdata.y = float(subgroupQuadSwapHorizontal(subgroupId)); + fragdata.z = float(subgroupQuadSwapVertical(subgroupId)); + fragdata.w = subgroupQuadBroadcast(fragdata.x, 2); + } Color = vertdata + fragdata; }