Skip to content

Commit

Permalink
tests: Use VkDisplayKHR objects in thread safety validation
Browse files Browse the repository at this point in the history
Change-Id: I5f32254220d32dc49bea78eefa0a4109fafa392b
  • Loading branch information
mark-lunarg committed Feb 25, 2020
1 parent 9a562c4 commit 3f4d08d
Showing 1 changed file with 36 additions and 0 deletions.
36 changes: 36 additions & 0 deletions tests/vkpositivelayertests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -910,6 +910,42 @@ TEST_F(VkPositiveLayerTest, BasicQuery) {
vk::DestroyQueryPool(m_device->handle(), query_pool, NULL);
}

TEST_F(VkPositiveLayerTest, ThreadSafetyDisplayObjects) {
TEST_DESCRIPTION("Create and use VkDisplayKHR objects with GetPhysicalDeviceDisplayPropertiesKHR in thread-safety.");

bool mp_extensions =
InstanceExtensionSupported(VK_KHR_SURFACE_EXTENSION_NAME) && InstanceExtensionSupported(VK_KHR_DISPLAY_EXTENSION_NAME);
if (mp_extensions) {
m_instance_extension_names.push_back(VK_KHR_SURFACE_EXTENSION_NAME);
m_instance_extension_names.push_back(VK_KHR_DISPLAY_EXTENSION_NAME);
} else {
printf("%s test requires KHR SURFACE and DISPLAY extensions, not available. Skipping.\n", kSkipPrefix);
return;
}
ASSERT_NO_FATAL_FAILURE(InitFramework(myDbgFunc, m_errorMonitor));
ASSERT_NO_FATAL_FAILURE(InitState());

PFN_vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR =
(PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)vk::GetInstanceProcAddr(instance(), "vkGetPhysicalDeviceDisplayPropertiesKHR");
PFN_vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR =
(PFN_vkGetDisplayModePropertiesKHR)vk::GetInstanceProcAddr(instance(), "vkGetDisplayModePropertiesKHR");
ASSERT_TRUE(vkGetPhysicalDeviceDisplayPropertiesKHR != nullptr);
ASSERT_TRUE(vkGetDisplayModePropertiesKHR != nullptr);

m_errorMonitor->ExpectSuccess();
uint32_t prop_count = 0;
vkGetPhysicalDeviceDisplayPropertiesKHR(gpu(), &prop_count, nullptr);
if (prop_count != 0) {
VkDisplayPropertiesKHR display_props = {};
// Create a VkDisplayKHR object
vkGetPhysicalDeviceDisplayPropertiesKHR(gpu(), &prop_count, &display_props);
// Now use this new object in an API call that thread safety will track
prop_count = 0;
vkGetDisplayModePropertiesKHR(gpu(), display_props.display, &prop_count, nullptr);
}
m_errorMonitor->VerifyNotFound();
}

TEST_F(VkPositiveLayerTest, MultiplaneGetImageSubresourceLayout) {
TEST_DESCRIPTION("Positive test, query layout of a single plane of a multiplane image. (repro Github #2530)");

Expand Down

0 comments on commit 3f4d08d

Please sign in to comment.