summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers
diff options
context:
space:
mode:
authorTim Rowley <[email protected]>2016-03-22 09:27:18 -0600
committerTim Rowley <[email protected]>2016-03-25 14:45:40 -0500
commit51549912d1b1137572a0692972d1059ebb2e3384 (patch)
tree355194f6675fa5d59b29039425921ebfb0bfc8fb /src/gallium/drivers
parented5b9539191ca700887566a82162c06d94f57497 (diff)
swr: [rasterizer core] Reduce Arena blocksize to 128KB (from 1MB).
With global allocator this doesn't seem to affect performance at all. Overall memory consumption drops by up to 85%.
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r--src/gallium/drivers/swr/rasterizer/core/arena.h10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/gallium/drivers/swr/rasterizer/core/arena.h b/src/gallium/drivers/swr/rasterizer/core/arena.h
index 5d08cda6506..d777c20a4ee 100644
--- a/src/gallium/drivers/swr/rasterizer/core/arena.h
+++ b/src/gallium/drivers/swr/rasterizer/core/arena.h
@@ -212,7 +212,7 @@ struct CachingAllocatorT : DefaultAllocator
};
typedef CachingAllocatorT<> CachingAllocator;
-template<typename T = DefaultAllocator>
+template<typename T = DefaultAllocator, size_t BlockSizeT = (128 * 1024)>
class TArena
{
public:
@@ -225,7 +225,11 @@ public:
void* AllocAligned(size_t size, size_t align)
{
- SWR_ASSERT(size);
+ if (0 == size)
+ {
+ return nullptr;
+ }
+
SWR_ASSERT(align <= ARENA_BLOCK_ALIGN);
if (m_pCurBlock)
@@ -244,7 +248,7 @@ public:
// a new block
}
- static const size_t ArenaBlockSize = 1024 * 1024 - ARENA_BLOCK_ALIGN;
+ static const size_t ArenaBlockSize = BlockSizeT - ARENA_BLOCK_ALIGN;
size_t blockSize = std::max(size, ArenaBlockSize);
// Add in one BLOCK_ALIGN unit to store ArenaBlock in.