From f62af145320783ff81294345795dcaae202cccbc Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Tue, 5 May 2026 10:29:14 +0100 Subject: [PATCH] Add VK_Parameter_Zoo test case for VkQueueSubmit with zero count vkQueueSubmit(0) and VkQueueSubmit2(0) --- util/test/demos/vk/vk_parameter_zoo.cpp | 4 ++++ util/test/tests/Vulkan/VK_Parameter_Zoo.py | 25 ++++++++++++++-------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/util/test/demos/vk/vk_parameter_zoo.cpp b/util/test/demos/vk/vk_parameter_zoo.cpp index 4ccdc8083..f3229cc6a 100644 --- a/util/test/demos/vk/vk_parameter_zoo.cpp +++ b/util/test/demos/vk/vk_parameter_zoo.cpp @@ -2061,11 +2061,15 @@ void main() std::vector cmds = {}; VkSubmitInfo submit[2] = {vkh::SubmitInfo(cmds), vkh::SubmitInfo(cmds)}; CHECK_VKR(vkQueueSubmit(queue, 2, submit, VK_NULL_HANDLE)); + + CHECK_VKR(vkQueueSubmit(queue, 0, (const VkSubmitInfo *)0x1234, VK_NULL_HANDLE)); } if(hasExt(VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME)) { VkSubmitInfo2KHR submit = {VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR}; CHECK_VKR(vkQueueSubmit2KHR(queue, 1, &submit, VK_NULL_HANDLE)); + + CHECK_VKR(vkQueueSubmit2KHR(queue, 0, (const VkSubmitInfo2 *)0x4567, VK_NULL_HANDLE)); } setMarker(queue, "after_empty"); diff --git a/util/test/tests/Vulkan/VK_Parameter_Zoo.py b/util/test/tests/Vulkan/VK_Parameter_Zoo.py index 4e37d971f..14c7e154d 100644 --- a/util/test/tests/Vulkan/VK_Parameter_Zoo.py +++ b/util/test/tests/Vulkan/VK_Parameter_Zoo.py @@ -6,6 +6,9 @@ class VK_Parameter_Zoo(rdtest.TestCase): demos_test_name = 'VK_Parameter_Zoo' def check_capture(self): + if not self.validate_eventids(self.controller): + raise rdtest.TestFailureException("Event IDs are not valid") + action = self.find_action("Color Draw") self.check(action is not None) @@ -299,24 +302,28 @@ class VK_Parameter_Zoo(rdtest.TestCase): action = self.find_action("before_empty") action = self.get_action(action.eventId + 1) - self.check("vkQueueSubmit" in action.GetName(sdfile)) a = action.GetName(sdfile) - action = self.get_action(action.eventId + 1) - self.check("vkQueueSubmit" in action.GetName(sdfile)) + # vkQueueSubmit with two submits each with zero command buffers + self.check("vkQueueSubmit(" in action.GetName(sdfile)) self.check("No Command Buffers" in action.GetName(sdfile)) action = self.get_action(action.eventId + 1) - self.check("vkQueueSubmit2" in action.GetName(sdfile)) + self.check("vkQueueSubmit(" in action.GetName(sdfile)) self.check("No Command Buffers" in action.GetName(sdfile)) - self.check(a != action.GetName(sdfile)) + # vkQueueSubmit with zero submits + action = self.get_action(action.eventId + 1) + self.check("vkQueueSubmit()" in action.GetName(sdfile)) + self.check("No Submit" in action.GetName(sdfile)) action = self.get_action(action.eventId + 1) if "after_empty" not in action.GetName(sdfile): - self.check("vkQueueSubmit2" in action.GetName(sdfile)) - a = action.GetName(sdfile) - action = self.get_action(action.eventId + 1) - self.check("vkQueueSubmit2" in action.GetName(sdfile)) + # vkQueueSubmit2 with one submit with zero command buffers + self.check("vkQueueSubmit2(" in action.GetName(sdfile)) self.check("No Command Buffers" in action.GetName(sdfile)) self.check(a != action.GetName(sdfile)) + # vkQueueSubmit with zero submits + action = self.get_action(action.eventId + 1) + self.check("vkQueueSubmit2()" in action.GetName(sdfile)) + self.check("No Submit" in action.GetName(sdfile)) rdtest.log.success("Empty queue submits are as expected")