Skip to content

Commit 20db7b7

Browse files
committed
[Renderer] async buffer for vulkan
1 parent 59fee0a commit 20db7b7

1 file changed

Lines changed: 9 additions & 2 deletions

File tree

src/openminecraft-core/renderer/vk/om_renderer_layer_vk.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
#include <string>
2828
#include <system_error>
2929
#include <thread>
30+
#include <unordered_map>
3031
#include <utility>
3132
#include <vector>
3233

@@ -238,11 +239,17 @@ OMRendererVk::OMRendererVk(AppInfo info, std::function<int(std::vector<std::stri
238239
logicalDevice.waitIdle();
239240

240241
bufferUpdateMutex.lock();
242+
std::unordered_map<OMRendererBufferVk *, bool> updateMap;
241243
for (auto &u : bufferUpdates)
242244
{
243-
if (std::find(removedBuffers.begin(), removedBuffers.end(), std::get<0>(u)) == removedBuffers.end())
245+
auto buf = std::get<0>(u);
246+
if (!updateMap.count(buf))
244247
{
245-
std::get<0>(u)->updateDataPartReal(std::get<3>(u), std::get<1>(u), std::get<2>(u));
248+
if (std::find(removedBuffers.begin(), removedBuffers.end(), buf) == removedBuffers.end())
249+
{
250+
buf->updateDataPartReal(std::get<3>(u), std::get<1>(u), std::get<2>(u));
251+
}
252+
updateMap[buf] = true;
246253
}
247254
free(std::get<3>(u));
248255
}

0 commit comments

Comments
 (0)