From abf165d8a78f962ad05da05f10adf0380bce286d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Branimir=20Karad=C5=BEi=C4=87?= Date: Fri, 2 Oct 2026 18:11:49 -0700 Subject: [PATCH] Fixed render bind hash collision reusing another draw's bindings. (#4015) --- src/bgfx_p.h | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/bgfx_p.h b/src/bgfx_p.h index 4fd410600..ac730346c 100644 --- a/src/bgfx_p.h +++ b/src/bgfx_p.h @@ -4397,21 +4397,19 @@ namespace bgfx const uint32_t hash = hashBindings(m_bind.m_bind, m_bindOccupied); BindHashMap::const_iterator it = m_bindHashMap.find(hash); - if (it != m_bindHashMap.end() ) + if (it != m_bindHashMap.end() + && bindingsEqual(m_frame->m_renderBind[it->second].m_bind, m_bind.m_bind) ) { - const uint32_t idx = it->second; - - BX_ASSERT(bindingsEqual(m_frame->m_renderBind[idx].m_bind, m_bind.m_bind) - , "RenderBind hash collision (hash 0x%08x)." - , hash - ); - - return idx; + return it->second; } const uint32_t idx = bx::atomicFetchAndAddsat(&m_frame->m_numRenderBinds, 1, m_frame->m_maxDrawCalls); m_frame->m_renderBind[idx] = m_bind; - m_bindHashMap.insert(stl::make_pair(hash, idx) ); + + if (it == m_bindHashMap.end() ) + { + m_bindHashMap.insert(stl::make_pair(hash, idx) ); + } return idx; }