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, &copy_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, &copy_region);
 
             demo_set_image_layout(demo, demo->textures[i].image,
+                                   VK_IMAGE_ASPECT_COLOR,
                                    VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL,
                                    demo->textures[i].imageLayout);
 
