Files
evk/evk/evkImage.c
T
mo7sen 4ec57bbd79 Starting Out
Signed-off-by: Robear Selwans <robear.selwans@outlook.com>
2025-07-02 12:37:06 +03:00

68 lines
2.1 KiB
C

#include "evkImage.h"
#include "evk/evkMemory.h"
void evkDestroyImage(evkDevice device, evkImage img)
{
evkGPUDestroyImage(img);
}
evkImageView evkCreateImageView(evkDevice device, evkImage img, evkImageViewCreateInfo createInfo)
{
evkImageView imgView;
VkImageViewCreateInfo imageViewCreateInfo = (VkImageViewCreateInfo) {
.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
.image = img.vk,
.viewType = VK_IMAGE_VIEW_TYPE_2D, // TODO Get from evkImage or allow overriding?
.format = img.format,
.components = {0,0,0,0}, // No swizzling use cases yet.
.subresourceRange = {
.aspectMask = createInfo.viewAspect,
.baseMipLevel = createInfo.mipBase,
.levelCount = createInfo.mipCount,
.baseArrayLayer = createInfo.baseLayer,
.layerCount = createInfo.layerCount,
}
};
vkCreateImageView(device.vk, &imageViewCreateInfo, NULL, &imgView.vk);
return imgView;
}
void evkDestroyImageView(evkDevice device, evkImageView imgv)
{
vkDestroyImageView(device.vk, imgv.vk, NULL);
}
evkImage evkCreateImage(evkImageCreateInfo createInfo)
{
VkImageCreateInfo vkImageCreateInfo = {
.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
.flags = createInfo.flags,
.imageType = createInfo.type,
.format = createInfo.format,
.extent = createInfo.extent,
.mipLevels = createInfo.mipCount,
.arrayLayers = createInfo.layerCount,
.samples = createInfo.sampleCount,
.tiling = createInfo.tiling,
.usage = createInfo.usage,
.sharingMode = createInfo.exclusive?VK_SHARING_MODE_EXCLUSIVE:VK_SHARING_MODE_CONCURRENT,
.initialLayout = createInfo.layout,
};
if(!createInfo.exclusive)
{
vkImageCreateInfo.queueFamilyIndexCount = vec_len(&createInfo.queueFamilyIndices);
vkImageCreateInfo.pQueueFamilyIndices = createInfo.queueFamilyIndices;
}
evkImage img = evkGPUCreateImage(createInfo.allocationCreateInfo, &vkImageCreateInfo);
if(img.vk != VK_NULL_HANDLE)
{
img.format = createInfo.format;
img.width = createInfo.extent.width;
img.height = createInfo.extent.height;
}
return img;
}