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()
|
Render3D::Render3D()
|
||||||
{
|
{
|
||||||
_renderID = RENDERID_NULL;
|
_renderID = RENDERID_NULL;
|
||||||
|
|
|
@ -129,6 +129,8 @@ protected:
|
||||||
virtual Render3DError SetupViewport(const u32 viewportValue);
|
virtual Render3DError SetupViewport(const u32 viewportValue);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
static void* operator new(size_t size);
|
||||||
|
static void operator delete(void *p);
|
||||||
Render3D();
|
Render3D();
|
||||||
~Render3D();
|
~Render3D();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue