MCPcopy Create free account
hub / github.com/KhronosGroup/Vulkan-ValidationLayers / TEST_F

Function TEST_F

tests/unit/image_layout.cpp:20–110  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

18class NegativeImageLayout : public ImageTest {};
19
20TEST_F(NegativeImageLayout, Blit) {
21 TEST_DESCRIPTION("Incorrect vkCmdBlitImage layouts");
22 RETURN_IF_SKIP(Init());
23
24 VkFormat fmt = VK_FORMAT_R8G8B8A8_UNORM;
25
26 vkt::Image img_src_transfer(*m_device, 64, 64, fmt, VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT);
27 vkt::Image img_dst_transfer(*m_device, 64, 64, fmt, VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT);
28 vkt::Image img_general(*m_device, 64, 64, fmt, VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT);
29 vkt::Image img_color(*m_device, 64, 64, fmt,
30 VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT);
31
32 img_src_transfer.SetLayout(VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL);
33 img_dst_transfer.SetLayout(VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL);
34 img_general.SetLayout(VK_IMAGE_LAYOUT_GENERAL);
35 img_color.SetLayout(VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL);
36
37 VkImageBlit blit_region = {};
38 blit_region.srcSubresource = {VK_IMAGE_ASPECT_COLOR_BIT, 0, 0, 1};
39 blit_region.dstSubresource = {VK_IMAGE_ASPECT_COLOR_BIT, 0, 0, 1};
40 blit_region.srcOffsets[0] = {0, 0, 0};
41 blit_region.srcOffsets[1] = {32, 32, 1};
42 blit_region.dstOffsets[0] = {32, 32, 0};
43 blit_region.dstOffsets[1] = {64, 64, 1};
44
45 // Illegal srcImageLayout/dstImageLayout
46 m_command_buffer.Begin();
47 vk::CmdBlitImage(m_command_buffer, img_general, VK_IMAGE_LAYOUT_GENERAL, img_general, VK_IMAGE_LAYOUT_GENERAL, 1, &blit_region,
48 VK_FILTER_LINEAR);
49
50 m_errorMonitor->SetDesiredError("VUID-vkCmdBlitImage-srcImageLayout-01398");
51 vk::CmdBlitImage(m_command_buffer, img_src_transfer, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, img_dst_transfer,
52 VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, &blit_region, VK_FILTER_LINEAR);
53 m_errorMonitor->VerifyFound();
54
55 m_errorMonitor->SetDesiredError("VUID-vkCmdBlitImage-dstImageLayout-01399");
56 vk::CmdBlitImage(m_command_buffer, img_src_transfer, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, img_dst_transfer,
57 VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, 1, &blit_region, VK_FILTER_LINEAR);
58 m_errorMonitor->VerifyFound();
59 m_command_buffer.End();
60
61 // Destination image in invalid layout at start of the CB
62 m_command_buffer.Begin();
63 vk::CmdBlitImage(m_command_buffer, img_src_transfer, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, img_color, VK_IMAGE_LAYOUT_GENERAL,
64 1, &blit_region, VK_FILTER_LINEAR);
65 m_command_buffer.End();
66 m_errorMonitor->SetDesiredError("VUID-vkCmdDraw-None-09600");
67 m_default_queue->SubmitAndWait(m_command_buffer);
68 m_errorMonitor->VerifyFound();
69
70 // Source image in invalid layout at start of the CB
71 m_command_buffer.Begin();
72 vk::CmdBlitImage(m_command_buffer, img_color, VK_IMAGE_LAYOUT_GENERAL, img_dst_transfer, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
73 1, &blit_region, VK_FILTER_LINEAR);
74 m_command_buffer.End();
75 m_errorMonitor->SetDesiredError("VUID-vkCmdDraw-None-09600");
76 m_default_queue->SubmitAndWait(m_command_buffer);
77 m_errorMonitor->VerifyFound();

Callers

nothing calls this directly

Calls 15

CmdBlitImageFunction · 0.85
CmdPipelineBarrierFunction · 0.85
VkShaderObjClass · 0.85
CmdBindDescriptorSetsFunction · 0.85
CmdBindPipelineFunction · 0.85
CmdDispatchFunction · 0.85
CmdDispatchBaseKHRFunction · 0.85
CmdDispatchBaseFunction · 0.85
CmdPushDescriptorSetKHRFunction · 0.85
CmdDrawFunction · 0.85

Tested by

no test coverage detected