Skip to content
Permalink
Browse files
Merge pull request #6041 from stenzek/streambuffer-fence
StreamBuffer: Don't wait on fences twice when reserve > commit
  • Loading branch information
degasus committed Sep 10, 2017
2 parents 4a12486 + 9e1c09e commit 88624f6
Showing 1 changed file with 7 additions and 1 deletion.
@@ -97,7 +97,13 @@ void StreamBuffer::AllocMemory(u32 size)
glClientWaitSync(m_fences[i], GL_SYNC_FLUSH_COMMANDS_BIT, GL_TIMEOUT_IGNORED);
glDeleteSync(m_fences[i]);
}
m_free_iterator = m_iterator + size;

// If we allocate a large amount of memory (A), commit a smaller amount, then allocate memory
// smaller than allocation A, we will have already waited for these fences in A, but not used
// the space. In this case, don't set m_free_iterator to a position before that which we know
// is safe to use, which would result in waiting on the same fence(s) next time.
if ((m_iterator + size) > m_free_iterator)
m_free_iterator = m_iterator + size;

// if buffer is full
if (m_iterator + size >= m_size)

0 comments on commit 88624f6

Please sign in to comment.