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

Function TEST_F

tests/unit/android_hardware_buffer.cpp:22–123  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

20class NegativeAndroidHardwareBuffer : public VkLayerTest {};
21
22TEST_F(NegativeAndroidHardwareBuffer, ImageCreate) {
23 TEST_DESCRIPTION("Verify AndroidHardwareBuffer image create info.");
24
25 SetTargetApiVersion(VK_API_VERSION_1_1);
26 AddRequiredExtensions(VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME);
27 RETURN_IF_SKIP(Init());
28 VkImage img = VK_NULL_HANDLE;
29
30 VkImageCreateInfo ici = vku::InitStructHelper();
31 ici.imageType = VK_IMAGE_TYPE_2D;
32 ici.arrayLayers = 1;
33 ici.extent = {64, 64, 1};
34 ici.format = VK_FORMAT_UNDEFINED;
35 ici.mipLevels = 1;
36 ici.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
37 ici.samples = VK_SAMPLE_COUNT_1_BIT;
38 ici.tiling = VK_IMAGE_TILING_OPTIMAL;
39 ici.usage = VK_IMAGE_USAGE_SAMPLED_BIT;
40
41 // undefined format
42 m_errorMonitor->SetDesiredError("VUID-VkImageCreateInfo-pNext-01975");
43 // Various extra errors for having VK_FORMAT_UNDEFINED without VkExternalFormatANDROID
44 m_errorMonitor->SetUnexpectedError("VUID_Undefined");
45 m_errorMonitor->SetUnexpectedError("VUID-VkImageCreateInfo-imageCreateMaxMipLevels-02251");
46 vk::CreateImage(device(), &ici, NULL, &img);
47 m_errorMonitor->VerifyFound();
48
49 // also undefined format
50 VkExternalFormatANDROID efa = vku::InitStructHelper();
51 efa.externalFormat = 0;
52 ici.pNext = &efa;
53 m_errorMonitor->SetDesiredError("VUID-VkImageCreateInfo-pNext-01975");
54 vk::CreateImage(device(), &ici, NULL, &img);
55 m_errorMonitor->VerifyFound();
56
57 // undefined format with an unknown external format
58 efa.externalFormat = 0xBADC0DE;
59 m_errorMonitor->SetDesiredError("VUID-VkExternalFormatANDROID-externalFormat-01894");
60 vk::CreateImage(device(), &ici, NULL, &img);
61 m_errorMonitor->VerifyFound();
62
63 vkt::AHB ahb(AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM, AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE, 64, 64);
64
65 // Retrieve it's properties to make it's external format 'known' (AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM)
66 VkAndroidHardwareBufferFormatPropertiesANDROID ahb_fmt_props = vku::InitStructHelper();
67 VkAndroidHardwareBufferPropertiesANDROID ahb_props = vku::InitStructHelper(&ahb_fmt_props);
68 vk::GetAndroidHardwareBufferPropertiesANDROID(device(), ahb.handle(), &ahb_props);
69
70 // a defined image format with a non-zero external format
71 ici.format = VK_FORMAT_R8G8B8A8_UNORM;
72 efa.externalFormat = ahb_fmt_props.externalFormat;
73 m_errorMonitor->SetDesiredError("VUID-VkImageCreateInfo-pNext-01974");
74 vk::CreateImage(device(), &ici, NULL, &img);
75 m_errorMonitor->VerifyFound();
76 ici.format = VK_FORMAT_UNDEFINED;
77
78 // external format while MUTABLE
79 ici.flags = VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT;

Callers

nothing calls this directly

Tested by

no test coverage detected