From: Karl Schultz Date: Thu, 21 Apr 2016 22:45:12 +0000 (-0600) Subject: demos/smoke: Fix validation errors in push-constants mode. X-Git-Tag: upstream/1.1.92~3264 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a424c5e57bd63ae506d9b1ea66ddcc3d808e2265;p=platform%2Fupstream%2FVulkan-Tools.git demos/smoke: Fix validation errors in push-constants mode. Change-Id: I48e736ef1c777af831d7e888c8ac6e1647d1f6b2 --- diff --git a/demos/smoke/Smoke.cpp b/demos/smoke/Smoke.cpp index af81f5c..76a9a90 100644 --- a/demos/smoke/Smoke.cpp +++ b/demos/smoke/Smoke.cpp @@ -383,11 +383,6 @@ void Smoke::destroy_frame_data() if (!use_push_constants_) { vk::DestroyDescriptorPool(dev_, desc_pool_, nullptr); - for (auto cmd_pool : worker_cmd_pools_) - vk::DestroyCommandPool(dev_, cmd_pool, nullptr); - worker_cmd_pools_.clear(); - vk::DestroyCommandPool(dev_, primary_cmd_pool_, nullptr); - vk::UnmapMemory(dev_, frame_data_mem_); vk::FreeMemory(dev_, frame_data_mem_, nullptr); @@ -395,6 +390,11 @@ void Smoke::destroy_frame_data() vk::DestroyBuffer(dev_, data.buf, nullptr); } + for (auto cmd_pool : worker_cmd_pools_) + vk::DestroyCommandPool(dev_, cmd_pool, nullptr); + worker_cmd_pools_.clear(); + vk::DestroyCommandPool(dev_, primary_cmd_pool_, nullptr); + for (auto &data : frame_data_) vk::DestroyFence(dev_, data.fence, nullptr); @@ -777,18 +777,21 @@ void Smoke::on_frame(float frame_pred) VkResult res = vk::BeginCommandBuffer(data.primary_cmd, &primary_cmd_begin_info_); - VkBufferMemoryBarrier buf_barrier = {}; - buf_barrier.sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER; - buf_barrier.srcAccessMask = VK_ACCESS_HOST_WRITE_BIT; - buf_barrier.dstAccessMask = VK_ACCESS_SHADER_READ_BIT; - buf_barrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; - buf_barrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; - buf_barrier.buffer = data.buf; - buf_barrier.offset = 0; - buf_barrier.size = VK_WHOLE_SIZE; - vk::CmdPipelineBarrier(data.primary_cmd, - VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_VERTEX_SHADER_BIT, - 0, 0, nullptr, 1, &buf_barrier, 0, nullptr); + if (!use_push_constants_) { + VkBufferMemoryBarrier buf_barrier = {}; + buf_barrier.sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER; + buf_barrier.srcAccessMask = VK_ACCESS_HOST_WRITE_BIT; + buf_barrier.dstAccessMask = VK_ACCESS_SHADER_READ_BIT; + buf_barrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; + buf_barrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; + buf_barrier.buffer = data.buf; + buf_barrier.offset = 0; + buf_barrier.size = VK_WHOLE_SIZE; + vk::CmdPipelineBarrier(data.primary_cmd, + VK_PIPELINE_STAGE_HOST_BIT, + VK_PIPELINE_STAGE_VERTEX_SHADER_BIT, + 0, 0, nullptr, 1, &buf_barrier, 0, nullptr); + } render_pass_begin_info_.framebuffer = framebuffers_[back.image_index]; render_pass_begin_info_.renderArea.extent = extent_;