Render3D:

- Explicitly make the Render3D class allocate itself with a cache-aligned base pointer. Fixes SSE2-related alignment crashes with OS/compiler combinations that don’t 16-byte align the base pointer for you.
This commit is contained in:
rogerman 2015-11-09 03:46:14 +00:00
parent af00e3b3f3
commit 4d32f051ab
2 changed files with 18 additions and 0 deletions

View File

@ -190,6 +190,22 @@ void FragmentAttributesBuffer::SetAll(const FragmentAttributes &attr)
}
}
void* Render3D::operator new(size_t size)
{
void *newPtr = malloc_alignedCacheLine(size);
if (newPtr == NULL)
{
throw std::bad_alloc();
}
return newPtr;
}
void Render3D::operator delete(void *ptr)
{
free_aligned(ptr);
}
Render3D::Render3D()
{
_renderID = RENDERID_NULL;

View File

@ -129,6 +129,8 @@ protected:
virtual Render3DError SetupViewport(const u32 viewportValue);
public:
static void* operator new(size_t size);
static void operator delete(void *p);
Render3D();
~Render3D();