diff --git a/engine/3rdparty/zlib/include/zstd/pool.h b/engine/3rdparty/zlib/include/zstd/pool.h index 0ae8ba9..ee1d836 100644 --- a/engine/3rdparty/zlib/include/zstd/pool.h +++ b/engine/3rdparty/zlib/include/zstd/pool.h @@ -41,7 +41,7 @@ namespace zstd { }; T acquire() { if (m_tail == m_head) { - return std::move(newT()); + return newT(); } int tail = m_tail % m_size; m_tail++; diff --git a/engine/src/engine/vulkanapi/thread/worker.cpp b/engine/src/engine/vulkanapi/thread/worker.cpp index 5f7a7f6..7ee2c49 100644 --- a/engine/src/engine/vulkanapi/thread/worker.cpp +++ b/engine/src/engine/vulkanapi/thread/worker.cpp @@ -6,9 +6,9 @@ namespace vulkanapi { :mName(name) ,mDevice(device) ,mQueue(queue) - ,mCommandPool(CommandPool(device, queueFlags, queue.QueueFamilyIndex())) - ,mWork(CommandThreadWorker(name, 64)) - ,mImmediateExeCmd(CommandBuffer(mCommandPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY)) + ,mCommandPool(device, queueFlags, queue.QueueFamilyIndex()) + ,mWork(name, 64) + ,mImmediateExeCmd(mCommandPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY) { } @@ -22,6 +22,7 @@ namespace vulkanapi { mWork.Invoke([=]() { CommandBuffer cmd = mCommandPool.Pop(); Buffer(cmd, fn, callback); + mCommandPool.Push(cmd); }); } @@ -32,7 +33,6 @@ namespace vulkanapi { cmd.EndRecord(); cmd.Submit(mQueue.Ptr()); cmd.WaitFofFence(mDevice.Ptr()); - mCommandPool.Push(cmd); callback(); } diff --git a/engine/src/engine/vulkanapi/wrapper/commandbuffer.h b/engine/src/engine/vulkanapi/wrapper/commandbuffer.h index 912ce68..3dfa78e 100644 --- a/engine/src/engine/vulkanapi/wrapper/commandbuffer.h +++ b/engine/src/engine/vulkanapi/wrapper/commandbuffer.h @@ -11,6 +11,7 @@ namespace vulkanapi { public: CommandBuffer(CommandPool& commandPool, VkCommandBufferLevel level); ~CommandBuffer(); + CommandBuffer(CommandBuffer* other)noexcept:CommandBuffer(std::forward(*other)) {}; CommandBuffer(CommandBuffer&& other)noexcept; VkCommandBuffer& Ptr() { return mPtr; diff --git a/engine/src/engine/vulkanapi/wrapper/commandpool.h b/engine/src/engine/vulkanapi/wrapper/commandpool.h index 85a1673..7974df0 100644 --- a/engine/src/engine/vulkanapi/wrapper/commandpool.h +++ b/engine/src/engine/vulkanapi/wrapper/commandpool.h @@ -23,11 +23,11 @@ namespace vulkanapi { }; CommandBuffer Pop() { - return std::move(mPool.acquire()); + return mPool.acquire(); } void Push(CommandBuffer& cmd) { - mPool.release(std::forward(cmd)); + mPool.release(&cmd); } }; } \ No newline at end of file