X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbackends%2Fvulkan%2Fcommands_backend.cpp;h=2698d43173a819bcf153ee2488e1502f1979707a;hb=d05d9963e185566f03ea348999655037617e4ba9;hp=13acd8a38495baa6091afe43beb1a07ae0af7216;hpb=857c2db0fb3112b750b618625649d12e13d9ae1a;p=libs%2Fgl.git diff --git a/source/backends/vulkan/commands_backend.cpp b/source/backends/vulkan/commands_backend.cpp index 13acd8a3..2698d431 100644 --- a/source/backends/vulkan/commands_backend.cpp +++ b/source/backends/vulkan/commands_backend.cpp @@ -149,21 +149,22 @@ void VulkanCommands::begin_render_pass(bool clear, const ClearValue *clear_value void VulkanCommands::end_render_pass() { const VulkanFunctions &vk = device.get_functions(); + VulkanCommandRecorder vkCmd(vk, pass_buffer); vk.EndCommandBuffer(pass_buffer); - device.get_transfer_queue().dispatch_transfers(primary_buffer); + device.get_transfer_queue().dispatch_transfers(vkCmd); Synchronizer &sync = device.get_synchronizer(); sync.reset(); if(!fb_is_swapchain) framebuffer->prepare_image_layouts(discard_fb_contents); - sync.barrier(primary_buffer); + sync.barrier(vkCmd); const VkRenderPassBeginInfo &begin_info = *reinterpret_cast(pass_begin_info.data()); - vk.CmdBeginRenderPass(primary_buffer, begin_info, VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS); - vk.CmdExecuteCommands(primary_buffer, 1, &pass_buffer); - vk.CmdEndRenderPass(primary_buffer); + vkCmd.BeginRenderPass(begin_info, VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS); + vkCmd.ExecuteCommands(1, &pass_buffer); + vkCmd.EndRenderPass(); framebuffer = 0; viewport = Rect::max(); @@ -253,15 +254,16 @@ void VulkanCommands::draw_instanced(const Batch &batch, unsigned count) throw invalid_operation("VulkanCommands::draw_instanced"); const VulkanFunctions &vk = device.get_functions(); + VulkanCommandRecorder vkCmd(vk, pass_buffer); if(!framebuffer) begin_render_pass(false, 0); pipeline_state->refresh(); - pipeline_state->apply(pass_buffer, last_pipeline, frame_index, fb_is_swapchain); + pipeline_state->apply(vkCmd, last_pipeline, frame_index, fb_is_swapchain); last_pipeline = pipeline_state; unsigned first_index = batch.get_offset()/batch.get_index_size(); - vk.CmdDrawIndexed(pass_buffer, batch.size(), count, first_index, 0, 0); + vkCmd.DrawIndexed(batch.size(), count, first_index, 0, 0); } void VulkanCommands::resolve_multisample(Framebuffer &)