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

Function TEST_F

tests/unit/protected_memory_positive.cpp:19–97  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

17class PositiveProtectedMemory : public VkLayerTest {};
18
19TEST_F(PositiveProtectedMemory, MixProtectedQueue) {
20 TEST_DESCRIPTION("Test creating 2 queues, 1 protected, and getting both with vkGetDeviceQueue2");
21 all_queue_count_ = true;
22 SetTargetApiVersion(VK_API_VERSION_1_1);
23 AddRequiredExtensions(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
24 RETURN_IF_SKIP(InitFramework());
25
26 // Needed for both protected memory and vkGetDeviceQueue2
27
28 VkPhysicalDeviceProtectedMemoryFeatures protected_features = vku::InitStructHelper();
29 GetPhysicalDeviceFeatures2(protected_features);
30 if (protected_features.protectedMemory == VK_FALSE) {
31 GTEST_SKIP() << "test requires protectedMemory";
32 }
33
34 // Try to find a protected queue family type
35 bool protected_queue = false;
36 VkQueueFamilyProperties queue_properties; // selected queue family used
37 uint32_t queue_family_index = 0;
38 uint32_t queue_family_count = 0;
39 vk::GetPhysicalDeviceQueueFamilyProperties(Gpu(), &queue_family_count, nullptr);
40 std::vector<VkQueueFamilyProperties> queue_families(queue_family_count);
41 vk::GetPhysicalDeviceQueueFamilyProperties(Gpu(), &queue_family_count, queue_families.data());
42
43 for (size_t i = 0; i < queue_families.size(); i++) {
44 // need to have at least 2 queues to use
45 if (((queue_families[i].queueFlags & VK_QUEUE_PROTECTED_BIT) != 0) && (queue_families[i].queueCount > 1)) {
46 protected_queue = true;
47 queue_family_index = i;
48 queue_properties = queue_families[i];
49 break;
50 }
51 }
52
53 if (protected_queue == false) {
54 GTEST_SKIP() << "test requires queue family with VK_QUEUE_PROTECTED_BIT and 2 queues, not available.";
55 }
56
57 float queue_priority = 1.0;
58
59 VkDeviceQueueCreateInfo queue_create_info[2];
60 queue_create_info[0] = vku::InitStructHelper();
61 queue_create_info[0].flags = VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT;
62 queue_create_info[0].queueFamilyIndex = queue_family_index;
63 queue_create_info[0].queueCount = 1;
64 queue_create_info[0].pQueuePriorities = &queue_priority;
65
66 queue_create_info[1] = vku::InitStructHelper();
67 queue_create_info[1].flags = 0; // unprotected because the protected flag is not set
68 queue_create_info[1].queueFamilyIndex = queue_family_index;
69 queue_create_info[1].queueCount = 1;
70 queue_create_info[1].pQueuePriorities = &queue_priority;
71
72 VkDevice test_device = VK_NULL_HANDLE;
73 VkDeviceCreateInfo device_create_info = vku::InitStructHelper(&protected_features);
74 device_create_info.flags = 0;
75 device_create_info.pQueueCreateInfos = queue_create_info;
76 device_create_info.queueCreateInfoCount = 2;

Callers

nothing calls this directly

Calls 7

GetDeviceQueue2Function · 0.85
CreateDeviceFunction · 0.50
DestroyDeviceFunction · 0.50
dataMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected