aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTony Barbour <tony@LunarG.com>2016-10-19 15:23:36 -0600
committerTony Barbour <tony@LunarG.com>2016-10-20 09:48:36 -0600
commite4dd74afb4dc6f9701f9bf19c23574adae816ed3 (patch)
tree4e03d10f86705b062a03489bf7b2ba8590c87a4f
parent60fb5bb40559043ef0f00976225194cc56ab716f (diff)
downloadvulkan-validation-layers-e4dd74afb4dc6f9701f9bf19c23574adae816ed3.tar.gz
demos: Fix access masks when cube uses staging buffer
Change-Id: I89655f8224c3543d9c57f2cf7bd55b2c2a21c09f
-rw-r--r--demos/cube.c38
1 files changed, 24 insertions, 14 deletions
diff --git a/demos/cube.c b/demos/cube.c
index c3091d1af..db2d1828a 100644
--- a/demos/cube.c
+++ b/demos/cube.c
@@ -594,31 +594,41 @@ static void demo_set_image_layout(struct demo *demo, VkImage image,
.image = image,
.subresourceRange = {aspectMask, 0, 1, 0, 1}};
- if (new_image_layout == VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL) {
+ switch (new_image_layout) {
+ case VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL:
/* Make sure anything that was copying from this image has completed */
- image_memory_barrier.dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT;
- }
+ image_memory_barrier.dstAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT;
+ break;
- if (new_image_layout == VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL) {
+ case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL:
image_memory_barrier.dstAccessMask =
VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
- }
+ break;
- if (new_image_layout == VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL) {
+ case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL:
image_memory_barrier.dstAccessMask =
VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT;
- }
+ break;
- if (new_image_layout == VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL) {
- /* Make sure any Copy or CPU writes to image are flushed */
+ case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:
image_memory_barrier.dstAccessMask =
VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_INPUT_ATTACHMENT_READ_BIT;
- }
+ break;
- if (new_image_layout == VK_IMAGE_LAYOUT_PRESENT_SRC_KHR) {
+ case VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL:
+ image_memory_barrier.dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT;
+ break;
+
+ case VK_IMAGE_LAYOUT_PRESENT_SRC_KHR:
image_memory_barrier.dstAccessMask = VK_ACCESS_MEMORY_READ_BIT;
+ break;
+
+ default:
+ image_memory_barrier.dstAccessMask = 0;
+ break;
}
+
VkImageMemoryBarrier *pmemory_barrier = &image_memory_barrier;
VkPipelineStageFlags src_stages = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT;
@@ -1354,13 +1364,13 @@ static void demo_prepare_textures(struct demo *demo) {
VK_IMAGE_ASPECT_COLOR_BIT,
staging_texture.imageLayout,
VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
- 0);
+ VK_ACCESS_SHADER_READ_BIT);
demo_set_image_layout(demo, demo->textures[i].image,
VK_IMAGE_ASPECT_COLOR_BIT,
demo->textures[i].imageLayout,
VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
- 0);
+ VK_ACCESS_SHADER_READ_BIT);
VkImageCopy copy_region = {
.srcSubresource = {VK_IMAGE_ASPECT_COLOR_BIT, 0, 0, 1},
@@ -1379,7 +1389,7 @@ static void demo_prepare_textures(struct demo *demo) {
VK_IMAGE_ASPECT_COLOR_BIT,
VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
demo->textures[i].imageLayout,
- 0);
+ VK_ACCESS_TRANSFER_WRITE_BIT);
demo_flush_init_cmd(demo);