Use correct depth aspect for depth image.
diff --git a/demos/cube.c b/demos/cube.c
index 71f1d4c..36917e1 100644
--- a/demos/cube.c
+++ b/demos/cube.c
@@ -372,6 +372,7 @@
static void demo_set_image_layout(
struct demo *demo,
VkImage image,
+ VkImageAspect aspect,
VkImageLayout old_image_layout,
VkImageLayout new_image_layout)
{
@@ -405,7 +406,7 @@
.oldLayout = old_image_layout,
.newLayout = new_image_layout,
.image = image,
- .subresourceRange = { VK_IMAGE_ASPECT_COLOR, 0, 1, 0, 0 }
+ .subresourceRange = { aspect, 0, 1, 0, 0 }
};
if (new_image_layout == VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL) {
@@ -619,6 +620,7 @@
demo->buffers[i].mem = images[i].memory;
demo_set_image_layout(demo, demo->buffers[i].image,
+ VK_IMAGE_ASPECT_COLOR,
VK_IMAGE_LAYOUT_UNDEFINED,
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL);
@@ -691,6 +693,7 @@
assert(!err);
demo_set_image_layout(demo, demo->depth.image,
+ VK_IMAGE_ASPECT_DEPTH,
VK_IMAGE_LAYOUT_UNDEFINED,
VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL);
@@ -951,6 +954,7 @@
tex_obj->imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
demo_set_image_layout(demo, tex_obj->image,
+ VK_IMAGE_ASPECT_COLOR,
VK_IMAGE_LAYOUT_UNDEFINED,
tex_obj->imageLayout);
/* setting the image layout does not reference the actual memory so no need to add a mem ref */
@@ -999,10 +1003,12 @@
VK_MEMORY_PROPERTY_DEVICE_ONLY);
demo_set_image_layout(demo, staging_texture.image,
+ VK_IMAGE_ASPECT_COLOR,
staging_texture.imageLayout,
VK_IMAGE_LAYOUT_TRANSFER_SOURCE_OPTIMAL);
demo_set_image_layout(demo, demo->textures[i].image,
+ VK_IMAGE_ASPECT_COLOR,
demo->textures[i].imageLayout,
VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL);
@@ -1019,6 +1025,7 @@
1, ©_region);
demo_set_image_layout(demo, demo->textures[i].image,
+ VK_IMAGE_ASPECT_COLOR,
VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL,
demo->textures[i].imageLayout);
diff --git a/demos/tri.c b/demos/tri.c
index 26f7598..d59d9e6 100644
--- a/demos/tri.c
+++ b/demos/tri.c
@@ -189,6 +189,7 @@
static void demo_set_image_layout(
struct demo *demo,
VkImage image,
+ VkImageAspect aspect,
VkImageLayout old_image_layout,
VkImageLayout new_image_layout)
{
@@ -222,7 +223,7 @@
.oldLayout = old_image_layout,
.newLayout = new_image_layout,
.image = image,
- .subresourceRange = { VK_IMAGE_ASPECT_COLOR, 0, 1, 0, 0 }
+ .subresourceRange = { aspect, 0, 1, 0, 0 }
};
if (new_image_layout == VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL) {
@@ -416,6 +417,7 @@
demo->buffers[i].mem = images[i].memory;
demo_set_image_layout(demo, demo->buffers[i].image,
+ VK_IMAGE_ASPECT_COLOR,
VK_IMAGE_LAYOUT_UNDEFINED,
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL);
@@ -490,6 +492,7 @@
assert(!err);
demo_set_image_layout(demo, demo->depth.image,
+ VK_IMAGE_ASPECT_DEPTH,
VK_IMAGE_LAYOUT_UNDEFINED,
VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL);
@@ -590,6 +593,7 @@
tex_obj->imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
demo_set_image_layout(demo, tex_obj->image,
+ VK_IMAGE_ASPECT_COLOR,
VK_IMAGE_LAYOUT_UNDEFINED,
tex_obj->imageLayout);
/* setting the image layout does not reference the actual memory so no need to add a mem ref */
@@ -640,10 +644,12 @@
VK_MEMORY_PROPERTY_DEVICE_ONLY);
demo_set_image_layout(demo, staging_texture.image,
+ VK_IMAGE_ASPECT_COLOR,
staging_texture.imageLayout,
VK_IMAGE_LAYOUT_TRANSFER_SOURCE_OPTIMAL);
demo_set_image_layout(demo, demo->textures[i].image,
+ VK_IMAGE_ASPECT_COLOR,
demo->textures[i].imageLayout,
VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL);
@@ -660,6 +666,7 @@
1, ©_region);
demo_set_image_layout(demo, demo->textures[i].image,
+ VK_IMAGE_ASPECT_COLOR,
VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL,
demo->textures[i].imageLayout);