You've already forked flecs_tests
Remove tiling and LRU caching, add circles basic shape to improve overall performances.
This commit is contained in:
36
src/pool.h
Normal file
36
src/pool.h
Normal file
@@ -0,0 +1,36 @@
|
||||
#include "api.h"
|
||||
|
||||
#define MAX_BUFFER_SIZE 1024 * 1024 * 1024 // 1GB
|
||||
|
||||
static void pool_buffer_grow(sg_buffer buffer, uint32_t stripe, uint32_t count, void* data)
|
||||
{
|
||||
size_t size = sg_query_buffer_size(buffer);
|
||||
if(size == MAX_BUFFER_SIZE) return sg_update_buffer(buffer, &(sg_range) { data, MAX_BUFFER_SIZE });
|
||||
if(size < stripe * count)
|
||||
{
|
||||
sg_buffer_desc desc = sg_query_buffer_desc(buffer);
|
||||
while(desc.size < stripe * count) desc.size = fmaxf(MAX_BUFFER_SIZE, size * 2);
|
||||
|
||||
sg_uninit_buffer(buffer);
|
||||
sg_init_buffer(buffer, &desc);
|
||||
}
|
||||
|
||||
sg_update_buffer(buffer, &(sg_range) { data, stripe * count });
|
||||
}
|
||||
static void pool_view_grow(sg_view view, uint32_t stripe, uint32_t count, void* data)
|
||||
{
|
||||
sg_buffer buffer = sg_query_view_buffer(view);
|
||||
|
||||
size_t size = sg_query_buffer_size(buffer);
|
||||
if(size == MAX_BUFFER_SIZE) return sg_update_buffer(buffer, &(sg_range) { data, MAX_BUFFER_SIZE });
|
||||
if(size < stripe * count)
|
||||
{
|
||||
sg_buffer_desc desc = sg_query_buffer_desc(buffer);
|
||||
while(desc.size < stripe * count) desc.size = fmaxf(MAX_BUFFER_SIZE, size * 2);
|
||||
|
||||
sg_uninit_buffer(buffer);
|
||||
sg_init_buffer(buffer, &desc);
|
||||
}
|
||||
|
||||
sg_update_buffer(buffer, &(sg_range) { data, stripe * count });
|
||||
}
|
||||
Reference in New Issue
Block a user