Georg Lehmann : vulkan-1: Add test for VK_EXT_private_data.

Alexandre Julliard julliard at winehq.org
Wed Jul 8 15:34:36 CDT 2020


Module: wine
Branch: master
Commit: 262e4ab9e0eeb126dde5cb4cba13fbf7f1d1cef0
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=262e4ab9e0eeb126dde5cb4cba13fbf7f1d1cef0

Author: Georg Lehmann <dadschoorse at gmail.com>
Date:   Wed Jul  8 15:43:23 2020 +0200

vulkan-1: Add test for VK_EXT_private_data.

Signed-off-by: Georg Lehmann <dadschoorse at gmail.com>
Signed-off-by: Liam Middlebrook <lmiddlebrook at nvidia.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/vulkan-1/tests/vulkan.c | 51 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 51 insertions(+)

diff --git a/dlls/vulkan-1/tests/vulkan.c b/dlls/vulkan-1/tests/vulkan.c
index 6f9e9f115c..9061b2b6db 100644
--- a/dlls/vulkan-1/tests/vulkan.c
+++ b/dlls/vulkan-1/tests/vulkan.c
@@ -387,6 +387,56 @@ static void test_unsupported_device_extensions(VkPhysicalDevice vk_physical_devi
     }
 }
 
+static void test_private_data(VkPhysicalDevice vk_physical_device)
+{
+    PFN_vkDestroyPrivateDataSlotEXT pfn_vkDestroyPrivateDataSlotEXT;
+    PFN_vkCreatePrivateDataSlotEXT pfn_vkCreatePrivateDataSlotEXT;
+    VkPrivateDataSlotCreateInfoEXT data_create_info;
+    PFN_vkGetPrivateDataEXT pfn_vkGetPrivateDataEXT;
+    PFN_vkSetPrivateDataEXT pfn_vkSetPrivateDataEXT;
+    VkPrivateDataSlotEXT data_slot;
+    VkDevice vk_device;
+    uint64_t data;
+    VkResult vr;
+
+    static const uint64_t data_value = 0x70AD;
+
+    static const char *ext_name = "VK_EXT_private_data";
+
+    if ((vr = create_device(vk_physical_device, 1, &ext_name, NULL, &vk_device)) < 0)
+    {
+        skip("Failed to create device with VK_EXT_private_data, VkResult %d.\n", vr);
+        return;
+    }
+
+    pfn_vkDestroyPrivateDataSlotEXT =
+            (void*) vkGetDeviceProcAddr(vk_device, "vkDestroyPrivateDataSlotEXT");
+    pfn_vkCreatePrivateDataSlotEXT =
+            (void*) vkGetDeviceProcAddr(vk_device, "vkCreatePrivateDataSlotEXT");
+    pfn_vkGetPrivateDataEXT =
+            (void*) vkGetDeviceProcAddr(vk_device, "vkGetPrivateDataEXT");
+    pfn_vkSetPrivateDataEXT =
+            (void*) vkGetDeviceProcAddr(vk_device, "vkSetPrivateDataEXT");
+
+    data_create_info.sType = VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT;
+    data_create_info.pNext = NULL;
+    data_create_info.flags = 0;
+    vr = pfn_vkCreatePrivateDataSlotEXT(vk_device, &data_create_info, NULL, &data_slot);
+    ok(vr == VK_SUCCESS, "Failed to create private data slot, VkResult %d.\n", vr);
+
+    vr = pfn_vkSetPrivateDataEXT(vk_device, VK_OBJECT_TYPE_DEVICE,
+            (uint64_t) (uintptr_t) vk_device, data_slot, data_value);
+    ok(vr == VK_SUCCESS, "Failed to set private data, VkResult %d.\n", vr);
+
+    pfn_vkGetPrivateDataEXT(vk_device, VK_OBJECT_TYPE_DEVICE,
+            (uint64_t) (uintptr_t) vk_device, data_slot, &data);
+    ok(data == data_value, "Got unexpected private data, %s.\n",
+            wine_dbgstr_longlong(data));
+
+    pfn_vkDestroyPrivateDataSlotEXT(vk_device, data_slot, NULL);
+    vkDestroyDevice(vk_device, NULL);
+}
+
 static void for_each_device(void (*test_func)(VkPhysicalDevice))
 {
     VkPhysicalDevice *vk_physical_devices;
@@ -430,4 +480,5 @@ START_TEST(vulkan)
     for_each_device(test_destroy_command_pool);
     test_unsupported_instance_extensions();
     for_each_device(test_unsupported_device_extensions);
+    for_each_device(test_private_data);
 }




More information about the wine-cvs mailing list