4ec57bbd79
Signed-off-by: Robear Selwans <robear.selwans@outlook.com>
68 lines
2.1 KiB
C
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;
|
|
}
|