diff options
| author | Tony Barbour <tony@LunarG.com> | 2016-10-11 11:41:05 -0600 |
|---|---|---|
| committer | Tony Barbour <tony@LunarG.com> | 2016-10-18 10:49:19 -0600 |
| commit | db30e4bf5ce9219d675eac941477b5ae7af9e6d2 (patch) | |
| tree | d9d0cadc91b0a597d44be2b7914728b780d79e0e | |
| parent | 62f44ec31015061f223af1423711a06ab4e672ea (diff) | |
| download | usermoji-db30e4bf5ce9219d675eac941477b5ae7af9e6d2.tar.xz | |
demos: Cube barrier changes from GH #1033
Change-Id: Ic68f9cd722474dc74957625c23c0f801f4b3852c
| -rw-r--r-- | demos/cube.c | 43 |
1 files changed, 11 insertions, 32 deletions
diff --git a/demos/cube.c b/demos/cube.c index 5a23657d..9477adbd 100644 --- a/demos/cube.c +++ b/demos/cube.c @@ -655,25 +655,7 @@ static void demo_draw_build_cmd(struct demo *demo, VkCommandBuffer cmd_buf) { err = vkBeginCommandBuffer(cmd_buf, &cmd_buf_info); assert(!err); - - VkImageMemoryBarrier image_memory_barrier = { - .sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, - .pNext = NULL, - .srcAccessMask = VK_ACCESS_MEMORY_READ_BIT, - .dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, - .oldLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, - .newLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, - .srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, - .dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, - .image = demo->buffers[demo->current_buffer].image, - .subresourceRange = {VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1}}; - - vkCmdPipelineBarrier(cmd_buf, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, - VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, 0, 0, - NULL, 0, NULL, 1, &image_memory_barrier); - vkCmdBeginRenderPass(cmd_buf, &rp_begin, VK_SUBPASS_CONTENTS_INLINE); - vkCmdBindPipeline(cmd_buf, VK_PIPELINE_BIND_POINT_GRAPHICS, demo->pipeline); vkCmdBindDescriptorSets(cmd_buf, VK_PIPELINE_BIND_POINT_GRAPHICS, demo->pipeline_layout, 0, 1, &demo->desc_set, 0, @@ -718,7 +700,7 @@ static void demo_draw_build_cmd(struct demo *demo, VkCommandBuffer cmd_buf) { vkCmdPipelineBarrier(cmd_buf, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, - VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, 0, + VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT, 0, 0, NULL, 0, NULL, 1, &image_ownership_barrier); } err = vkEndCommandBuffer(cmd_buf); @@ -1077,12 +1059,6 @@ static void demo_prepare_buffers(struct demo *demo) { &demo->buffers[i].view); assert(!err); - // The draw loop will be expecting the presentable images to be in - // LAYOUT_PRESENT_SRC_KHR - // since that's how they're left at the end of every frame. - demo_set_image_layout( - demo, demo->buffers[i].image, VK_IMAGE_ASPECT_COLOR_BIT, - VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, 0); } if (NULL != presentModes) { @@ -1153,11 +1129,6 @@ static void demo_prepare_depth(struct demo *demo) { vkBindImageMemory(demo->device, demo->depth.image, demo->depth.mem, 0); assert(!err); - demo_set_image_layout(demo, demo->depth.image, VK_IMAGE_ASPECT_DEPTH_BIT, - VK_IMAGE_LAYOUT_UNDEFINED, - VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, - 0); - /* create image view */ view.image = demo->depth.image; err = vkCreateImageView(demo->device, &view, NULL, &demo->depth.view); @@ -1579,6 +1550,14 @@ static void demo_prepare_descriptor_layout(struct demo *demo) { } static void demo_prepare_render_pass(struct demo *demo) { + // The initial layout for the color and depth attachments will be LAYOUT_UNDEFINED + // because at the start of the renderpass, we don't care about their contents. + // At the start of the subpass, the color attachment's layout will be transitioned + // to LAYOUT_COLOR_ATTACHMENT_OPTIMAL and the depth stencil attachment's layout + // will be transitioned to LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL. At the end of + // the renderpass, the color attachment's layout will be transitioned to + // LAYOUT_PRESENT_SRC_KHR to be ready to present. This is all done as part of + // the renderpass, no barriers are necessary. const VkAttachmentDescription attachments[2] = { [0] = { @@ -1588,7 +1567,7 @@ static void demo_prepare_render_pass(struct demo *demo) { .storeOp = VK_ATTACHMENT_STORE_OP_STORE, .stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE, .stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE, - .initialLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, + .initialLayout = VK_IMAGE_LAYOUT_UNDEFINED, .finalLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, }, [1] = @@ -1600,7 +1579,7 @@ static void demo_prepare_render_pass(struct demo *demo) { .stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE, .stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE, .initialLayout = - VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, + VK_IMAGE_LAYOUT_UNDEFINED, .finalLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, }, |
