From 9f84482ec350bea71c588659b9727e95f1a9e4c6 Mon Sep 17 00:00:00 2001 From: Kearwood Gilbert Date: Wed, 27 Aug 2014 02:24:49 -0700 Subject: [PATCH] Fixed mesh streaming bug that would cause the texture streamer to incorrectly estimate how much memory it has to fill, resulting in deadlocks. Symptoms include low mip level textures and / or assets that fail to load due to incorrect balance of texture and VBO memory utilization. --- KREngine/kraken/KRMeshManager.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/KREngine/kraken/KRMeshManager.cpp b/KREngine/kraken/KRMeshManager.cpp index 9fda7cc..42ea761 100644 --- a/KREngine/kraken/KRMeshManager.cpp +++ b/KREngine/kraken/KRMeshManager.cpp @@ -284,16 +284,16 @@ void KRMeshManager::balanceVBOMemory(long &memoryRemaining, long &memoryRemainin std::sort(m_activeVBOs_streamer.begin(), m_activeVBOs_streamer.end(), std::greater>()); - for(auto vbo_itr = m_activeVBOs_streamer.begin(); memoryRemainingThisFrame > 0 && vbo_itr != m_activeVBOs_streamer.end(); vbo_itr++) { + for(auto vbo_itr = m_activeVBOs_streamer.begin(); vbo_itr != m_activeVBOs_streamer.end(); vbo_itr++) { KRVBOData *vbo_data = (*vbo_itr).second; + long vbo_size = vbo_data->getSize(); if(!vbo_data->isVBOLoaded()) { - long vbo_size = vbo_data->getSize(); if(memoryRemainingThisFrame > vbo_size) { vbo_data->load(); memoryRemainingThisFrame -= vbo_size; } - memoryRemaining -= vbo_size; } + memoryRemaining -= vbo_size; } glFinish();