Mesa (master): zink: Factor out zink_create_logical_device
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Dec 15 17:29:58 UTC 2020
Module: Mesa
Branch: master
Commit: 0781808935e161b1731da944ffe8e2a4c681f9d6
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0781808935e161b1731da944ffe8e2a4c681f9d6
Author: Adam Jackson <ajax at redhat.com>
Date: Tue Dec 8 17:11:19 2020 -0500
zink: Factor out zink_create_logical_device
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Reviewed-by: Hoe Hao Cheng <haochengho12907 at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8019>
---
src/gallium/drivers/zink/zink_screen.c | 58 ++++++++++++++++++++--------------
1 file changed, 34 insertions(+), 24 deletions(-)
diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c
index 2d2c0aa0a2e..b39bae6de97 100644
--- a/src/gallium/drivers/zink/zink_screen.c
+++ b/src/gallium/drivers/zink/zink_screen.c
@@ -943,6 +943,38 @@ zink_get_loader_version(void)
return loader_version;
}
+static VkDevice
+zink_create_logical_device(struct zink_screen *screen)
+{
+ VkDevice dev = VK_NULL_HANDLE;
+
+ VkDeviceQueueCreateInfo qci = {};
+ float dummy = 0.0f;
+ qci.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
+ qci.queueFamilyIndex = screen->gfx_queue;
+ qci.queueCount = 1;
+ qci.pQueuePriorities = &dummy;
+
+ VkDeviceCreateInfo dci = {};
+ dci.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
+ dci.queueCreateInfoCount = 1;
+ dci.pQueueCreateInfos = &qci;
+ /* extensions don't have bool members in pEnabledFeatures.
+ * this requires us to pass the whole VkPhysicalDeviceFeatures2 struct
+ */
+ if (screen->info.feats.sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2) {
+ dci.pNext = &screen->info.feats;
+ } else {
+ dci.pEnabledFeatures = &screen->info.feats.features;
+ }
+
+ dci.ppEnabledExtensionNames = screen->info.extensions;
+ dci.enabledExtensionCount = screen->info.num_extensions;
+
+ vkCreateDevice(screen->pdev, &dci, NULL, &dev);
+ return dev;
+}
+
static struct zink_screen *
zink_internal_create_screen(const struct pipe_screen_config *config)
{
@@ -985,30 +1017,8 @@ zink_internal_create_screen(const struct pipe_screen_config *config)
zink_internal_setup_moltenvk(screen);
#endif
- VkDeviceQueueCreateInfo qci = {};
- float dummy = 0.0f;
- qci.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
- qci.queueFamilyIndex = screen->gfx_queue;
- qci.queueCount = 1;
- qci.pQueuePriorities = &dummy;
-
- VkDeviceCreateInfo dci = {};
- dci.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
- dci.queueCreateInfoCount = 1;
- dci.pQueueCreateInfos = &qci;
- /* extensions don't have bool members in pEnabledFeatures.
- * this requires us to pass the whole VkPhysicalDeviceFeatures2 struct
- */
- if (screen->info.feats.sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2) {
- dci.pNext = &screen->info.feats;
- } else {
- dci.pEnabledFeatures = &screen->info.feats.features;
- }
-
- dci.ppEnabledExtensionNames = screen->info.extensions;
- dci.enabledExtensionCount = screen->info.num_extensions;
-
- if (vkCreateDevice(screen->pdev, &dci, NULL, &screen->dev) != VK_SUCCESS)
+ screen->dev = zink_create_logical_device(screen);
+ if (!screen->dev)
goto fail;
if (!load_device_extensions(screen))
More information about the mesa-commit
mailing list