img->pDev = pDev;
img->width = width;
img->height = height;
+ img->layout = layout;
VkImageCreateInfo image_info = { .sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
.imageType = imageType,
.tiling = tiling,
- .initialLayout = layout,
+ .initialLayout = VK_IMAGE_LAYOUT_UNDEFINED,
.sharingMode = VK_SHARING_MODE_EXCLUSIVE,
.usage = usage,
.format = format,
}
void vkh_tex2d_array_create (vkh_device *pDev,
VkFormat format, uint32_t width, uint32_t height, uint32_t layers,
- VkMemoryPropertyFlags memprops, VkImageUsageFlags usage, vkh_image* img){
+ VkMemoryPropertyFlags memprops, VkImageUsageFlags usage, VkImageLayout layout, vkh_image* img){
_vkh_image_create (pDev, VK_IMAGE_TYPE_2D, format, width, height, memprops,usage,
- VK_SAMPLE_COUNT_1_BIT, VK_IMAGE_TILING_OPTIMAL, 1, layers, VK_IMAGE_LAYOUT_PREINITIALIZED, img);
+ VK_SAMPLE_COUNT_1_BIT, VK_IMAGE_TILING_OPTIMAL, 1, layers, layout, img);
}
void vkh_image_create (vkh_device *pDev,
VkFilter minFilter, VkSamplerMipmapMode mipmapMode)
{
img->pDescriptor = (VkDescriptorImageInfo*)malloc(sizeof(VkDescriptorImageInfo));
- img->pDescriptor->imageLayout = img->infos.initialLayout;
+ img->pDescriptor->imageLayout = img->layout;
VkImageViewCreateInfo viewInfo = { .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
.image = img->image,
.viewType = viewType,
#include "vkh_device.h"
typedef struct vkh_image_t {
- vkh_device* pDev;
- VkImageCreateInfo infos;
- uint32_t width, height;
- VkImage image;
- VkDeviceMemory memory;
- VkDescriptorImageInfo* pDescriptor;
+ vkh_device* pDev;
+ VkImageCreateInfo infos;
+ uint32_t width, height;
+ VkImage image;
+ VkDeviceMemory memory;
+ VkDescriptorImageInfo* pDescriptor;
+ VkImageLayout layout;//used for descriptor creation
}vkh_image;
void vkh_image_create (vkh_device* pDev, VkFormat format, uint32_t width, uint32_t height, VkImageTiling tiling,
- VkMemoryPropertyFlags memprops, VkImageUsageFlags usage, VkImageLayout layout, vkh_image *img);
+ VkMemoryPropertyFlags memprops, VkImageUsageFlags usage, VkImageLayout layout, vkh_image *img);
void vkh_image_ms_create (vkh_device *pDev, VkFormat format, VkSampleCountFlagBits num_samples, uint32_t width, uint32_t height,
- VkMemoryPropertyFlags memprops, VkImageUsageFlags usage, VkImageLayout layout, vkh_image *img);
+ VkMemoryPropertyFlags memprops, VkImageUsageFlags usage, VkImageLayout layout, vkh_image *img);
void vkh_tex2d_array_create (vkh_device *pDev, VkFormat format, uint32_t width, uint32_t height, uint32_t layers,
- VkMemoryPropertyFlags memprops, VkImageUsageFlags usage, vkh_image* img);
+ VkMemoryPropertyFlags memprops, VkImageUsageFlags usage, VkImageLayout layout, vkh_image* img);
void vkh_image_create_descriptor(vkh_image* img, VkImageViewType viewType, VkImageAspectFlags aspectFlags, VkFilter magFilter, VkFilter minFilter,
- VkSamplerMipmapMode mipmapMode);
+ VkSamplerMipmapMode mipmapMode);
void vkh_image_destroy(vkh_image* img);
#endif