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

Function TEST_F

tests/unit/image.cpp:26–84  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

24class NegativeImage : public ImageTest {};
25
26TEST_F(NegativeImage, UsageBits) {
27 TEST_DESCRIPTION(
28 "Specify wrong usage for image then create conflicting view of image Initialize buffer with wrong usage then perform copy "
29 "expecting errors from both the image and the buffer (2 calls)");
30
31 AddOptionalExtensions(VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME);
32 RETURN_IF_SKIP(Init());
33 const bool copy_commands2 = IsExtensionsEnabled(VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME);
34
35 auto format = FindSupportedDepthStencilFormat(Gpu());
36 // Initialize image with transfer source usage
37 vkt::Image image(*m_device, 128, 128, format, VK_IMAGE_USAGE_TRANSFER_SRC_BIT);
38
39 VkImageViewCreateInfo dsvci = vku::InitStructHelper();
40 dsvci.image = image;
41 dsvci.viewType = VK_IMAGE_VIEW_TYPE_2D;
42 dsvci.format = format;
43 dsvci.subresourceRange = {VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT, 0, 1, 0, 1};
44
45 // Create a view with depth / stencil aspect for image with different usage
46 CreateImageViewTest(dsvci, "VUID-VkImageViewCreateInfo-image-04441");
47
48 // Initialize buffer with TRANSFER_DST usage
49 vkt::Buffer buffer(*m_device, 128 * 128, VK_BUFFER_USAGE_TRANSFER_DST_BIT);
50 VkBufferImageCopy region = {};
51 region.bufferRowLength = 128;
52 region.bufferImageHeight = 128;
53 region.imageSubresource = {VK_IMAGE_ASPECT_DEPTH_BIT, 0, 0, 1};
54 region.imageExtent = {16, 16, 1};
55
56 // Buffer usage not set to TRANSFER_SRC and image usage not set to TRANSFER_DST
57 m_command_buffer.Begin();
58
59 // two separate errors from this call:
60 m_errorMonitor->SetDesiredError("VUID-vkCmdCopyBufferToImage-dstImage-00177");
61 m_errorMonitor->SetDesiredError("VUID-vkCmdCopyBufferToImage-srcBuffer-00174");
62
63 vk::CmdCopyBufferToImage(m_command_buffer, buffer, image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, &region);
64 m_errorMonitor->VerifyFound();
65
66 // equvalent test using using KHR_copy_commands2
67 if (copy_commands2) {
68 const VkBufferImageCopy2 region2 = {VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2,
69 NULL,
70 region.bufferRowLength,
71 region.bufferImageHeight,
72 region.bufferImageHeight,
73 region.imageSubresource,
74 region.imageOffset,
75 region.imageExtent};
76 VkCopyBufferToImageInfo2 buffer_to_image_info2 = {VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2, NULL, buffer, image,
77 VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, &region2};
78 // two separate errors from this call:
79 m_errorMonitor->SetDesiredError("VUID-VkCopyBufferToImageInfo2-dstImage-00177");
80 m_errorMonitor->SetDesiredError("VUID-VkCopyBufferToImageInfo2-srcBuffer-00174");
81 vk::CmdCopyBufferToImage2KHR(m_command_buffer, &buffer_to_image_info2);
82 m_errorMonitor->VerifyFound();
83 }

Callers

nothing calls this directly

Calls 15

CmdCopyBufferToImageFunction · 0.85
CmdCopyBufferToImage2KHRFunction · 0.85
CmdBlitImageFunction · 0.85
CmdCopyImageToBufferFunction · 0.85
FormatIsSupportedFunction · 0.85
CmdBlitImage2KHRFunction · 0.85
CreateImageFunction · 0.85

Tested by

no test coverage detected