From 521537503c78136214b7b5a653b3d1cd1cde1946 Mon Sep 17 00:00:00 2001 From: Mel Henning Date: Mon, 4 Aug 2025 17:07:54 -0400 Subject: [PATCH] nvk: Factor out nvk_queue_engines_from_queue_flags Reviewed-by: Faith Ekstrand Part-of: --- src/nouveau/vulkan/nvk_queue.c | 15 ++------------- src/nouveau/vulkan/nvk_queue.h | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/nouveau/vulkan/nvk_queue.c b/src/nouveau/vulkan/nvk_queue.c index ded1b5eeb92..73ba9b164e2 100644 --- a/src/nouveau/vulkan/nvk_queue.c +++ b/src/nouveau/vulkan/nvk_queue.c @@ -441,19 +441,8 @@ nvk_queue_create(struct nvk_device *dev, nvk_queue_state_init(&queue->state); - queue->engines = 0; - if (queue_family->queue_flags & VK_QUEUE_GRAPHICS_BIT) { - queue->engines |= NVKMD_ENGINE_3D; - /* We rely on compute shaders for queries */ - queue->engines |= NVKMD_ENGINE_COMPUTE; - } - if (queue_family->queue_flags & VK_QUEUE_COMPUTE_BIT) { - queue->engines |= NVKMD_ENGINE_COMPUTE; - /* We currently rely on 3D engine MMEs for indirect dispatch */ - queue->engines |= NVKMD_ENGINE_3D; - } - if (queue_family->queue_flags & VK_QUEUE_TRANSFER_BIT) - queue->engines |= NVKMD_ENGINE_COPY; + queue->engines = + nvk_queue_engines_from_queue_flags(queue_family->queue_flags); if (queue->engines) { result = nvkmd_dev_create_ctx(dev->nvkmd, &dev->vk.base, diff --git a/src/nouveau/vulkan/nvk_queue.h b/src/nouveau/vulkan/nvk_queue.h index 01122ab41dc..c58131fcf67 100644 --- a/src/nouveau/vulkan/nvk_queue.h +++ b/src/nouveau/vulkan/nvk_queue.h @@ -59,6 +59,26 @@ nvk_queue_device(struct nvk_queue *queue) return (struct nvk_device *)queue->vk.base.device; } +static inline enum nvkmd_engines +nvk_queue_engines_from_queue_flags(VkQueueFlags queue_flags) +{ + enum nvkmd_engines engines = 0; + if (queue_flags & VK_QUEUE_GRAPHICS_BIT) { + engines |= NVKMD_ENGINE_3D; + /* We rely on compute shaders for queries */ + engines |= NVKMD_ENGINE_COMPUTE; + } + if (queue_flags & VK_QUEUE_COMPUTE_BIT) { + engines |= NVKMD_ENGINE_COMPUTE; + /* We currently rely on 3D engine MMEs for indirect dispatch */ + engines |= NVKMD_ENGINE_3D; + } + if (queue_flags & VK_QUEUE_TRANSFER_BIT) + engines |= NVKMD_ENGINE_COPY; + + return engines; +} + VkResult nvk_queue_create(struct nvk_device *dev, const VkDeviceQueueCreateInfo *pCreateInfo, uint32_t index_in_family);