Commit 9b6a3f92 by Jamie Madill Committed by Commit Bot

D3D: Speculative fix for VertexBuffer crash.

It's possible we were triggering a null pointer dereference in some cases of lost device recovery. I was unable to reproduce this in a test so this fix is speculative. Bug: chromium:871178 Change-Id: I55b7790eabb81c25489bdfd105b5f2cbeedcc8db Reviewed-on: https://chromium-review.googlesource.com/1169955Reviewed-by: 's avatarYuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
parent 6c43a01a
...@@ -72,16 +72,19 @@ VertexBufferInterface::~VertexBufferInterface() ...@@ -72,16 +72,19 @@ VertexBufferInterface::~VertexBufferInterface()
unsigned int VertexBufferInterface::getSerial() const unsigned int VertexBufferInterface::getSerial() const
{ {
ASSERT(mVertexBuffer);
return mVertexBuffer->getSerial(); return mVertexBuffer->getSerial();
} }
unsigned int VertexBufferInterface::getBufferSize() const unsigned int VertexBufferInterface::getBufferSize() const
{ {
ASSERT(mVertexBuffer);
return mVertexBuffer->getBufferSize(); return mVertexBuffer->getBufferSize();
} }
gl::Error VertexBufferInterface::setBufferSize(const gl::Context *context, unsigned int size) gl::Error VertexBufferInterface::setBufferSize(const gl::Context *context, unsigned int size)
{ {
ASSERT(mVertexBuffer);
if (mVertexBuffer->getBufferSize() == 0) if (mVertexBuffer->getBufferSize() == 0)
{ {
return mVertexBuffer->initialize(context, size, mDynamic); return mVertexBuffer->initialize(context, size, mDynamic);
...@@ -116,11 +119,13 @@ gl::Error VertexBufferInterface::getSpaceRequired(const gl::Context *context, ...@@ -116,11 +119,13 @@ gl::Error VertexBufferInterface::getSpaceRequired(const gl::Context *context,
gl::Error VertexBufferInterface::discard(const gl::Context *context) gl::Error VertexBufferInterface::discard(const gl::Context *context)
{ {
ASSERT(mVertexBuffer);
return mVertexBuffer->discard(context); return mVertexBuffer->discard(context);
} }
VertexBuffer *VertexBufferInterface::getVertexBuffer() const VertexBuffer *VertexBufferInterface::getVertexBuffer() const
{ {
ASSERT(mVertexBuffer);
return mVertexBuffer; return mVertexBuffer;
} }
...@@ -141,7 +146,7 @@ void StreamingVertexBufferInterface::reset() ...@@ -141,7 +146,7 @@ void StreamingVertexBufferInterface::reset()
if (mVertexBuffer) if (mVertexBuffer)
{ {
mVertexBuffer->release(); mVertexBuffer->release();
mVertexBuffer = nullptr; mVertexBuffer = mFactory->createVertexBuffer();
} }
} }
......
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