diff options
| author | Karl Schultz <karl@lunarg.com> | 2016-04-21 16:45:12 -0600 |
|---|---|---|
| committer | Karl Schultz <karl@lunarg.com> | 2016-04-21 16:45:12 -0600 |
| commit | a424c5e57bd63ae506d9b1ea66ddcc3d808e2265 (patch) | |
| tree | e1afd7555669fc6dbdd89bcc7cd1dc515d890b7a | |
| parent | b7a3213de50f36fe1a3b7c32861932f79eb4b154 (diff) | |
| download | usermoji-a424c5e57bd63ae506d9b1ea66ddcc3d808e2265.tar.xz | |
demos/smoke: Fix validation errors in push-constants mode.
Change-Id: I48e736ef1c777af831d7e888c8ac6e1647d1f6b2
| -rw-r--r-- | demos/smoke/Smoke.cpp | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/demos/smoke/Smoke.cpp b/demos/smoke/Smoke.cpp index af81f5c6..76a9a90c 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_; |
