About Social Code
aboutsummaryrefslogtreecommitdiff
path: root/src/frygon/vulkan/fgvk_queue.c
blob: 739de7f5bb4cf6c0344f845c686ff13b7c2b7b32 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/*
 * Copyright © 2025 Lucas Francisco Fryzek
 * SPDX-License-Identifier: MIT
 */
#include "fgvk_queue.h"

static VkResult
fgvk_queue_submit(struct vk_queue *vk_queue,
                  struct vk_queue_submit *submit)
{
   return VK_SUCCESS;
}

VkResult
fgvk_queue_create(struct fgvk_device *dev,
                  const VkDeviceQueueCreateInfo *pCreateInfo,
                  uint32_t index_in_family)
{
   VkResult result;
   struct fgvk_queue *queue = vk_zalloc(&dev->vk.alloc, sizeof(struct fgvk_queue),
                                        8, VK_SYSTEM_ALLOCATION_SCOPE_DEVICE);
   if (!queue)
      return VK_ERROR_OUT_OF_HOST_MEMORY;

   result = vk_queue_init(&queue->vk, &dev->vk, pCreateInfo, index_in_family);
   if (result != VK_SUCCESS)
      goto fail_alloc;

   queue->vk.driver_submit = fgvk_queue_submit;

   return VK_SUCCESS;

fail_alloc:
   vk_free(&dev->vk.alloc, queue);

   return result;
}

void
fgvk_queue_destroy(struct fgvk_device *dev, struct fgvk_queue *queue)
{
   vk_queue_finish(&queue->vk);
   vk_free(&dev->vk.alloc, queue);
}