Increase command queue memory pool to 16 MB and make it flush if its exhausted

This commit is contained in:
Magnus Norddahl 2016-06-22 00:51:16 +02:00
parent db4cba239a
commit ca9d8e580e

View file

@ -193,7 +193,7 @@ EXTERN_CVAR(Bool, r_mipmap)
// Manages queueing up commands and executing them on worker threads // Manages queueing up commands and executing them on worker threads
class DrawerCommandQueue class DrawerCommandQueue
{ {
enum { memorypool_size = 4 * 1024 * 1024 }; enum { memorypool_size = 16 * 1024 * 1024 };
char memorypool[memorypool_size]; char memorypool[memorypool_size];
size_t memorypool_pos = 0; size_t memorypool_pos = 0;
@ -241,8 +241,13 @@ public:
else else
{ {
void *ptr = AllocMemory(sizeof(T)); void *ptr = AllocMemory(sizeof(T));
if (!ptr) // Out of memory - render what we got
{
queue->Finish();
ptr = AllocMemory(sizeof(T));
if (!ptr) if (!ptr)
return; return;
}
T *command = new (ptr)T(std::forward<Types>(args)...); T *command = new (ptr)T(std::forward<Types>(args)...);
queue->commands.push_back(command); queue->commands.push_back(command);
} }