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:
parent
af00e3b3f3
commit
4d32f051ab
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
Loading…
Reference in New Issue