mirror of
https://github.com/scratchfoundation/bgfx.git
synced 2025-02-17 20:31:57 -05:00
Delay VertexDecl release until VertexBuffer is released.
This commit is contained in:
parent
41d5bcfc1b
commit
557c175e61
2 changed files with 19 additions and 9 deletions
|
@ -807,6 +807,8 @@ namespace bgfx
|
|||
destroyTransientIndexBuffer(m_submit->m_transientIb);
|
||||
frame();
|
||||
|
||||
frame(); // If any VertexDecls needs to be destroyed.
|
||||
|
||||
getCommandBuffer(CommandBuffer::RendererShutdownEnd);
|
||||
frame();
|
||||
|
||||
|
|
26
src/bgfx_p.h
26
src/bgfx_p.h
|
@ -1404,12 +1404,15 @@ namespace bgfx
|
|||
VertexDeclHandle release(VertexBufferHandle _handle)
|
||||
{
|
||||
VertexDeclHandle declHandle = m_vertexBufferRef[_handle.idx];
|
||||
m_vertexDeclRef[declHandle.idx]--;
|
||||
|
||||
if (0 != m_vertexDeclRef[declHandle.idx])
|
||||
if (isValid(declHandle) )
|
||||
{
|
||||
VertexDeclHandle invalid = BGFX_INVALID_HANDLE;
|
||||
return invalid;
|
||||
m_vertexDeclRef[declHandle.idx]--;
|
||||
|
||||
if (0 != m_vertexDeclRef[declHandle.idx])
|
||||
{
|
||||
VertexDeclHandle invalid = BGFX_INVALID_HANDLE;
|
||||
return invalid;
|
||||
}
|
||||
}
|
||||
|
||||
return declHandle;
|
||||
|
@ -1665,6 +1668,13 @@ namespace bgfx
|
|||
}
|
||||
|
||||
void destroyVertexBuffer(VertexBufferHandle _handle)
|
||||
{
|
||||
CommandBuffer& cmdbuf = getCommandBuffer(CommandBuffer::DestroyVertexBuffer);
|
||||
cmdbuf.write(_handle);
|
||||
m_submit->free(_handle);
|
||||
}
|
||||
|
||||
void destroyVertexBufferInternal(VertexBufferHandle _handle)
|
||||
{
|
||||
VertexDeclHandle declHandle = m_declRef.release(_handle);
|
||||
if (isValid(declHandle) )
|
||||
|
@ -1673,9 +1683,7 @@ namespace bgfx
|
|||
cmdbuf.write(declHandle);
|
||||
}
|
||||
|
||||
CommandBuffer& cmdbuf = getCommandBuffer(CommandBuffer::DestroyVertexBuffer);
|
||||
cmdbuf.write(_handle);
|
||||
m_submit->free(_handle);
|
||||
m_vertexBufferHandle.free(_handle.idx);
|
||||
}
|
||||
|
||||
DynamicIndexBufferHandle createDynamicIndexBuffer(uint16_t _num)
|
||||
|
@ -2450,7 +2458,7 @@ namespace bgfx
|
|||
|
||||
for (uint16_t ii = 0, num = _frame->m_numFreeVertexBufferHandles; ii < num; ++ii)
|
||||
{
|
||||
m_vertexBufferHandle.free(_frame->m_freeVertexBufferHandle[ii].idx);
|
||||
destroyVertexBufferInternal(_frame->m_freeVertexBufferHandle[ii]);
|
||||
}
|
||||
|
||||
for (uint16_t ii = 0, num = _frame->m_numFreeVertexShaderHandles; ii < num; ++ii)
|
||||
|
|
Loading…
Reference in a new issue