From ccc110c57e316432723649d7738ec67350a283d0 Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 24 Jul 2026 15:10:02 +0100 Subject: [PATCH] Fix some validation errors in tests --- util/test/demos/vk/vk_helpers.h | 23 +++++++++++++---------- util/test/demos/vk/vk_test.cpp | 13 +++++++++++-- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/util/test/demos/vk/vk_helpers.h b/util/test/demos/vk/vk_helpers.h index 9000ba634..1538adeba 100644 --- a/util/test/demos/vk/vk_helpers.h +++ b/util/test/demos/vk/vk_helpers.h @@ -147,15 +147,19 @@ void updateDescriptorSets(VkDevice device, const std::vector img, std::initializer_list buf = {}, std::initializer_list mem = {}, - VkPipelineStageFlags srcStageMask = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, - VkPipelineStageFlags dstStageMask = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, + VkPipelineStageFlags srcStageMask = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT | + VK_PIPELINE_STAGE_HOST_BIT, + VkPipelineStageFlags dstStageMask = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT | + VK_PIPELINE_STAGE_HOST_BIT, VkDependencyFlags dependencyFlags = 0); void cmdPipelineBarrier(VkCommandBuffer cmd, const std::vector &img, const std::vector &buf = {}, const std::vector &mem = {}, - VkPipelineStageFlags srcStageMask = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, - VkPipelineStageFlags dstStageMask = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, + VkPipelineStageFlags srcStageMask = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT | + VK_PIPELINE_STAGE_HOST_BIT, + VkPipelineStageFlags dstStageMask = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT | + VK_PIPELINE_STAGE_HOST_BIT, VkDependencyFlags dependencyFlags = 0); struct ClearColorValue; @@ -309,7 +313,7 @@ struct DeviceQueueCreateInfo : public VkDeviceQueueCreateInfo struct DeviceCreateInfo : public VkDeviceCreateInfo { DeviceCreateInfo(const std::vector &queues, - const std::vector &layers, const std::vector &exts, + const std::vector &exts, const VkPhysicalDeviceFeatures *features = NULL) { sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO; @@ -317,17 +321,16 @@ struct DeviceCreateInfo : public VkDeviceCreateInfo flags = 0; queueCreateInfoCount = uint32_t(queues.size()); pQueueCreateInfos = queues.data(); - enabledLayerCount = uint32_t(layers.size()); - ppEnabledLayerNames = layers.data(); + enabledLayerCount = 0; + ppEnabledLayerNames = NULL; enabledExtensionCount = uint32_t(exts.size()); ppEnabledExtensionNames = exts.data(); pEnabledFeatures = features; } DeviceCreateInfo(const std::vector &queues, - const std::vector &layers, const std::vector &exts, - const VkPhysicalDeviceFeatures &features) - : DeviceCreateInfo(queues, layers, exts, &features) + const std::vector &exts, const VkPhysicalDeviceFeatures &features) + : DeviceCreateInfo(queues, exts, &features) { } diff --git a/util/test/demos/vk/vk_test.cpp b/util/test/demos/vk/vk_test.cpp index 4c63307d9..7f3b25449 100644 --- a/util/test/demos/vk/vk_test.cpp +++ b/util/test/demos/vk/vk_test.cpp @@ -736,8 +736,7 @@ bool VulkanGraphicsTest::Init() queueCreates.push_back(vkh::DeviceQueueCreateInfo(transferQueueFamilyIndex, 1, priorities)); CHECK_VKR(vkCreateDevice( - phys, vkh::DeviceCreateInfo(queueCreates, enabledLayers, devExts, features).next(devInfoNext), - NULL, &device)); + phys, vkh::DeviceCreateInfo(queueCreates, devExts, features).next(devInfoNext), NULL, &device)); volkLoadDevice(device); @@ -1693,6 +1692,16 @@ bool VulkanWindow::CreateSwapchain() renderPassCreateInfo.addSubpass({VkAttachmentReference({0, VK_IMAGE_LAYOUT_GENERAL})}); + // add deps to allow clear/copy on the main target before or after + renderPassCreateInfo.dependencies.push_back(vkh::SubpassDependency( + ~0U, 0, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, + VK_ACCESS_TRANSFER_READ_BIT | VK_ACCESS_TRANSFER_WRITE_BIT, + VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT)); + renderPassCreateInfo.dependencies.push_back(vkh::SubpassDependency( + 0, ~0U, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, + VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, + VK_ACCESS_TRANSFER_READ_BIT | VK_ACCESS_TRANSFER_WRITE_BIT)); + rp = m_Test->createRenderPass(renderPassCreateInfo); }