Bug: Losing render-commands if commandbuffer is full(gfx)

Problem:
If there is a new draw call, it is checked if there is enough free memory for the vertices in the databuffer but not if we have enough free space in the commandbuffer to add the command
So we lose some commands during a frame cuz the commandbuffer is full

This fixes the 2nd part of issue 1004
This commit is contained in:
BeaR 2012-11-13 15:39:23 +01:00 committed by Shereef Marzouk
parent ba3c1f36db
commit c86ebb34df

View file

@ -81,7 +81,19 @@ void CGraphics_Threaded::FlushVertices()
} }
mem_copy(Cmd.m_pVertices, m_aVertices, sizeof(CCommandBuffer::SVertex)*NumVerts); mem_copy(Cmd.m_pVertices, m_aVertices, sizeof(CCommandBuffer::SVertex)*NumVerts);
m_pCommandBuffer->AddCommand(Cmd);
// check if we have enough free memory in the commandbuffer
if(!m_pCommandBuffer->AddCommand(Cmd))
{
// kick command buffer and try again
KickCommandBuffer();
if(!m_pCommandBuffer->AddCommand(Cmd))
{
dbg_msg("graphics", "failed to allocate memory for render command");
return;
}
}
} }
void CGraphics_Threaded::AddVertices(int Count) void CGraphics_Threaded::AddVertices(int Count)