Commit 416eb8a3 by Rafael Cintron Committed by Commit Bot

Check return value of allocateResource instead of asserting

allocateResource can fail if the device has been removed or there is no more video memory. Hence, the return value needs to checked for errors instead of simply asserting that the result doesn't equal angle::Result::Stop. Bug: chromium:1192771 Change-Id: I794f288f16917ef50e45f6f3ab60ee3ebc5941d9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2787249Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
parent e3b9dbef
...@@ -312,8 +312,14 @@ EGLint SwapChain11::resetOffscreenColorBuffer(DisplayD3D *displayD3D, ...@@ -312,8 +312,14 @@ EGLint SwapChain11::resetOffscreenColorBuffer(DisplayD3D *displayD3D,
angle::Result result = mRenderer->allocateResource(displayD3D, offscreenRTVDesc, angle::Result result = mRenderer->allocateResource(displayD3D, offscreenRTVDesc,
mOffscreenTexture.get(), &mOffscreenRTView); mOffscreenTexture.get(), &mOffscreenRTView);
ASSERT(result != angle::Result::Stop); if (result == angle::Result::Stop)
mOffscreenRTView.setDebugName("Offscreen back buffer render target"); {
ERR() << "Could not create offscreen back buffer render target, "
<< displayD3D->getStoredErrorString();
release();
return EGL_BAD_ALLOC;
}
mOffscreenRTView.setDebugName("OffscreenBackBufferRenderTarget");
D3D11_SHADER_RESOURCE_VIEW_DESC offscreenSRVDesc; D3D11_SHADER_RESOURCE_VIEW_DESC offscreenSRVDesc;
offscreenSRVDesc.Format = backbufferFormatInfo.srvFormat; offscreenSRVDesc.Format = backbufferFormatInfo.srvFormat;
...@@ -326,8 +332,14 @@ EGLint SwapChain11::resetOffscreenColorBuffer(DisplayD3D *displayD3D, ...@@ -326,8 +332,14 @@ EGLint SwapChain11::resetOffscreenColorBuffer(DisplayD3D *displayD3D,
{ {
result = mRenderer->allocateResource(displayD3D, offscreenSRVDesc, mOffscreenTexture.get(), result = mRenderer->allocateResource(displayD3D, offscreenSRVDesc, mOffscreenTexture.get(),
&mOffscreenSRView); &mOffscreenSRView);
ASSERT(result != angle::Result::Stop); if (result == angle::Result::Stop)
mOffscreenSRView.setDebugName("Offscreen back buffer shader resource"); {
ERR() << "Could not create offscreen back buffer shader resource, "
<< displayD3D->getStoredErrorString();
release();
return EGL_BAD_ALLOC;
}
mOffscreenSRView.setDebugName("OffscreenBackBufferShaderResource");
} }
else else
{ {
......
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