Commit f01ac9fb by Austin Kinross Committed by Jamie Madill

Fix D3D static buffer cache cleanup logic

BUG=angleproject:197 Change-Id: Ia71f4063fa13c72a3a8bd41ec8fe01a762543796 Reviewed-on: https://chromium-review.googlesource.com/313468Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Tested-by: 's avatarJamie Madill <jmadill@chromium.org>
parent ab831f04
...@@ -37,10 +37,15 @@ BufferD3D::~BufferD3D() ...@@ -37,10 +37,15 @@ BufferD3D::~BufferD3D()
SafeDelete(mStaticVertexBuffer); SafeDelete(mStaticVertexBuffer);
SafeDelete(mStaticIndexBuffer); SafeDelete(mStaticIndexBuffer);
// Empty the cache of static vertex buffers too emptyStaticBufferCache();
}
void BufferD3D::emptyStaticBufferCache()
{
if (mStaticBufferCache != nullptr) if (mStaticBufferCache != nullptr)
{ {
SafeDeleteContainer(*mStaticBufferCache); SafeDeleteContainer(*mStaticBufferCache);
SafeDelete(mStaticBufferCache);
} }
mStaticBufferCacheTotalSize = 0; mStaticBufferCacheTotalSize = 0;
...@@ -202,13 +207,7 @@ void BufferD3D::invalidateStaticData(D3DBufferInvalidationType invalidationType) ...@@ -202,13 +207,7 @@ void BufferD3D::invalidateStaticData(D3DBufferInvalidationType invalidationType)
{ {
if (invalidationType == D3D_BUFFER_INVALIDATE_WHOLE_CACHE && mStaticBufferCache != nullptr) if (invalidationType == D3D_BUFFER_INVALIDATE_WHOLE_CACHE && mStaticBufferCache != nullptr)
{ {
// Empty the cache of static vertex buffers too emptyStaticBufferCache();
for (StaticVertexBufferInterface *staticBuffer : *mStaticBufferCache)
{
SafeDelete(staticBuffer);
}
mStaticBufferCache->clear();
mStaticBufferCacheTotalSize = 0;
} }
if ((mStaticVertexBuffer && mStaticVertexBuffer->getBufferSize() != 0) || (mStaticIndexBuffer && mStaticIndexBuffer->getBufferSize() != 0)) if ((mStaticVertexBuffer && mStaticVertexBuffer->getBufferSize() != 0) || (mStaticIndexBuffer && mStaticIndexBuffer->getBufferSize() != 0))
......
...@@ -71,6 +71,7 @@ class BufferD3D : public BufferImpl ...@@ -71,6 +71,7 @@ class BufferD3D : public BufferImpl
protected: protected:
void updateSerial(); void updateSerial();
void updateD3DBufferUsage(GLenum usage); void updateD3DBufferUsage(GLenum usage);
void emptyStaticBufferCache();
BufferFactoryD3D *mFactory; BufferFactoryD3D *mFactory;
unsigned int mSerial; unsigned int mSerial;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment