]> O.S.I.I.S - jp/vkhelpers.git/commitdiff
layout for descriptors
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Fri, 8 Dec 2017 15:19:23 +0000 (16:19 +0100)
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Fri, 8 Dec 2017 15:19:23 +0000 (16:19 +0100)
vkh_image.c
vkh_image.h

index a0a14e8d31838ee57692002c941f39e22171c6c4..1c1a8829486e329a6bd3fd3799c306d8f6287942 100644 (file)
@@ -9,11 +9,12 @@ void _vkh_image_create (vkh_device *pDev, VkImageType imageType,
     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,
@@ -36,9 +37,9 @@ void _vkh_image_create (vkh_device *pDev, VkImageType imageType,
 }
 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,
@@ -60,7 +61,7 @@ void vkh_image_create_descriptor(vkh_image* img, VkImageViewType viewType, VkIma
                                  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,
index df872946f8a4033801253659b1f7060d8d19ac34..42bd299afc69a6c831a7b23cff2c58c8e79e5da0 100644 (file)
@@ -5,23 +5,24 @@
 #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