Skip to content

Commit

Permalink
tests: Test invalid pNext in pipeline barrier 2
Browse files Browse the repository at this point in the history
  • Loading branch information
ziga-lunarg committed Feb 19, 2025
1 parent 9ff27ff commit 1747c4e
Showing 1 changed file with 57 additions and 0 deletions.
57 changes: 57 additions & 0 deletions tests/unit/sync_object.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4860,3 +4860,60 @@ TEST_F(NegativeSyncObject, UnsupportedBufferMemoryBarrier2Stages) {

m_command_buffer.End();
}

TEST_F(NegativeSyncObject, InvalidBarrierPNext) {
SetTargetApiVersion(VK_API_VERSION_1_1);
AddRequiredExtensions(VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME);
AddRequiredFeature(vkt::Feature::synchronization2);
RETURN_IF_SKIP(Init());

vkt::Buffer buffer(*m_device, 32, VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT);

VkImageCreateInfo image_ci =
vkt::Image::ImageCreateInfo2D(32u, 32u, 1u, 1u, VK_FORMAT_B8G8R8A8_UNORM,
VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT, VK_IMAGE_TILING_OPTIMAL);
vkt::Image image(*m_device, image_ci);

VkMemoryBarrier2 memory_barrier = vku::InitStructHelper();

VkBufferMemoryBarrier2 buffer_barrier = vku::InitStructHelper(&memory_barrier);
buffer_barrier.buffer = buffer.handle();
buffer_barrier.size = VK_WHOLE_SIZE;
buffer_barrier.dstStageMask = VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR;

VkImageMemoryBarrier2 image_barrier = vku::InitStructHelper(&memory_barrier);
image_barrier.srcStageMask = VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR;
image_barrier.srcAccessMask = VK_ACCESS_2_TRANSFER_WRITE_BIT;
image_barrier.dstStageMask = VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT;
image_barrier.dstAccessMask = VK_ACCESS_2_SHADER_READ_BIT;
image_barrier.oldLayout = VK_IMAGE_LAYOUT_UNDEFINED;
image_barrier.newLayout = VK_IMAGE_LAYOUT_GENERAL;
image_barrier.image = image.handle();
image_barrier.subresourceRange = {VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1};

VkDependencyInfo dependency_info = vku::InitStructHelper();
dependency_info.bufferMemoryBarrierCount = 1u;
dependency_info.pBufferMemoryBarriers = &buffer_barrier;
dependency_info.pImageMemoryBarriers = &image_barrier;

m_command_buffer.Begin();

m_errorMonitor->SetDesiredError("VUID-VkBufferMemoryBarrier2-pNext-pNext");
vk::CmdPipelineBarrier2KHR(m_command_buffer.handle(), &dependency_info);
m_errorMonitor->VerifyFound();

dependency_info.bufferMemoryBarrierCount = 0u;
dependency_info.imageMemoryBarrierCount = 1u;

m_errorMonitor->SetDesiredError("VUID-VkImageMemoryBarrier2-pNext-pNext");
vk::CmdPipelineBarrier2KHR(m_command_buffer.handle(), &dependency_info);
m_errorMonitor->VerifyFound();

dependency_info.imageMemoryBarrierCount = 0u;
dependency_info.pNext = &memory_barrier;
m_errorMonitor->SetDesiredError("VUID-VkDependencyInfo-pNext-pNext");
vk::CmdPipelineBarrier2KHR(m_command_buffer.handle(), &dependency_info);
m_errorMonitor->VerifyFound();

m_command_buffer.End();
}

0 comments on commit 1747c4e

Please sign in to comment.