diff options
author | Tony Barbour <tony@LunarG.com> | 2016-10-19 15:23:36 -0600 |
---|---|---|
committer | Tony Barbour <tony@LunarG.com> | 2016-10-20 09:48:36 -0600 |
commit | e4dd74afb4dc6f9701f9bf19c23574adae816ed3 (patch) | |
tree | 4e03d10f86705b062a03489bf7b2ba8590c87a4f | |
parent | 60fb5bb40559043ef0f00976225194cc56ab716f (diff) | |
download | vulkan-validation-layers-e4dd74afb4dc6f9701f9bf19c23574adae816ed3.tar.gz |
demos: Fix access masks when cube uses staging buffer
Change-Id: I89655f8224c3543d9c57f2cf7bd55b2c2a21c09f
-rw-r--r-- | demos/cube.c | 38 |
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); |