Fix render memory alignment issues to prevent crashes on Android

This commit is contained in:
Wojtek Figat
2025-09-06 23:36:54 +02:00
parent 857b0c5ac3
commit 44e70692a2
6 changed files with 32 additions and 21 deletions

View File

@@ -24,6 +24,11 @@ void ArenaAllocator::Free()
void* ArenaAllocator::Allocate(uint64 size, uint64 alignment)
{
if (size == 0)
return nullptr;
if (alignment < PLATFORM_MEMORY_ALIGNMENT)
alignment = PLATFORM_MEMORY_ALIGNMENT;
// Find the first page that has some space left
Page* page = _first;
while (page && page->Offset + size + alignment > page->Size)
@@ -79,6 +84,10 @@ void ConcurrentArenaAllocator::Free()
void* ConcurrentArenaAllocator::Allocate(uint64 size, uint64 alignment)
{
if (size == 0)
return nullptr;
if (alignment < PLATFORM_MEMORY_ALIGNMENT)
alignment = PLATFORM_MEMORY_ALIGNMENT;
RETRY:
// Check if the current page has some space left
@@ -120,6 +129,6 @@ RETRY:
_locker.Unlock();
// Use a single cde for allocation
// Use a single code for allocation
goto RETRY;
}