About Social Code
aboutsummaryrefslogtreecommitdiff
path: root/src/frygon/vulkan/fgvk_image_view.c
blob: 2a029265c33a1ff1f10ebe29694957640b30f14c (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
/*
 * Copyright © 2025 Lucas Francisco Fryzek
 * SPDX-License-Identifier: MIT
 */
#include "fgvk_image_view.h"

#include "fgvk_device.h"

VKAPI_ATTR VkResult VKAPI_CALL
fgvk_CreateImageView(VkDevice _device,
                     const VkImageViewCreateInfo *pCreateInfo,
                     const VkAllocationCallbacks *pAllocator,
                     VkImageView *pView)
{
   VK_FROM_HANDLE(fgvk_device, dev, _device);
   struct fgvk_image_view *view;

   view = vk_alloc2(&dev->vk.alloc, pAllocator, sizeof(*view), 8,
                    VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
   if (!view)
      return vk_error(dev, VK_ERROR_OUT_OF_HOST_MEMORY);

   vk_image_view_init(&dev->vk, &view->vk, pCreateInfo);

   *pView = fgvk_image_view_to_handle(view);

   return VK_SUCCESS;
}

VKAPI_ATTR void VKAPI_CALL
fgvk_DestroyImageView(VkDevice _device,
                      VkImageView imageView,
                      const VkAllocationCallbacks *pAllocator)
{
   VK_FROM_HANDLE(fgvk_device, dev, _device);
   VK_FROM_HANDLE(fgvk_image_view, view, imageView);

   if (!view)
      return;

   vk_free2(&dev->vk.alloc, pAllocator, view);
}