Merge remote-tracking branch 'remotes/origin/vulkan2'

This commit is contained in:
Christoph Oelckers 2019-04-22 11:43:43 +02:00
commit 90cc0cf35b
6 changed files with 13 additions and 11 deletions

View file

@ -191,7 +191,7 @@ void VulkanFrameBuffer::DeleteFrameObjects()
FrameDeleteList.CommandBuffers.clear();
}
void VulkanFrameBuffer::FlushCommands(VulkanCommandBuffer **commands, size_t count, bool finish)
void VulkanFrameBuffer::FlushCommands(VulkanCommandBuffer **commands, size_t count, bool finish, bool lastsubmit)
{
int currentIndex = mNextSubmit % maxConcurrentSubmitCount;
@ -215,12 +215,14 @@ void VulkanFrameBuffer::FlushCommands(VulkanCommandBuffer **commands, size_t cou
submit.addSignal(mRenderFinishedSemaphore.get());
}
submit.addSignal(mSubmitSemaphore[currentIndex].get());
if (!lastsubmit)
submit.addSignal(mSubmitSemaphore[currentIndex].get());
submit.execute(device, device->graphicsQueue, mSubmitFence[currentIndex].get());
mNextSubmit++;
}
void VulkanFrameBuffer::FlushCommands(bool finish)
void VulkanFrameBuffer::FlushCommands(bool finish, bool lastsubmit)
{
if (mDrawCommands || mTransferCommands)
{
@ -241,7 +243,7 @@ void VulkanFrameBuffer::FlushCommands(bool finish)
FrameDeleteList.CommandBuffers.push_back(std::move(mDrawCommands));
}
FlushCommands(commands, count, finish);
FlushCommands(commands, count, finish, lastsubmit);
current_rendered_commandbuffers += (int)count;
}
@ -259,7 +261,7 @@ void VulkanFrameBuffer::WaitForCommands(bool finish)
mPostprocess->DrawPresentTexture(mOutputLetterbox, true, true);
}
FlushCommands(finish);
FlushCommands(finish, true);
if (finish)
{

View file

@ -34,7 +34,7 @@ public:
VkPostprocess *GetPostprocess() { return mPostprocess.get(); }
VkRenderBuffers *GetBuffers() { return mActiveRenderBuffers; }
void FlushCommands(bool finish);
void FlushCommands(bool finish, bool lastsubmit = false);
unsigned int GetLightBufferBlockSize() const;
@ -111,7 +111,7 @@ private:
void CopyScreenToBuffer(int w, int h, void *data);
void UpdateShadowMap();
void DeleteFrameObjects();
void FlushCommands(VulkanCommandBuffer **commands, size_t count, bool finish);
void FlushCommands(VulkanCommandBuffer **commands, size_t count, bool finish, bool lastsubmit);
std::unique_ptr<VkShaderManager> mShaderManager;
std::unique_ptr<VkSamplerManager> mSamplerManager;