diff options
author | Geoff Lang <geofflang@chromium.org> | 2014-07-25 13:48:02 -0400 |
---|---|---|
committer | Geoff Lang <geofflang@chromium.org> | 2014-09-08 19:08:47 +0000 |
commit | cc79b8c6b3c713904fa6d0613018b3e2f7fd8eac (patch) | |
tree | 96ef78a1d5a16853eeff0627b5e314ad0df8c2d0 /src/libGLESv2/renderer/d3d | |
parent | 2a1c15a1ab1852ab11fb8d12822c98aac11619ae (diff) | |
download | angle-cc79b8c6b3c713904fa6d0613018b3e2f7fd8eac.tar.gz |
Update clear calls to return Error objects instead of calling gl::error.
BUG=angle:520
Change-Id: I474a6ed29b882963f7f3425515e7d65f8f69b3e4
Reviewed-on: https://chromium-review.googlesource.com/211440
Reviewed-by: Shannon Woods <shannonwoods@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
Diffstat (limited to 'src/libGLESv2/renderer/d3d')
-rw-r--r-- | src/libGLESv2/renderer/d3d/d3d11/Clear11.cpp | 26 | ||||
-rw-r--r-- | src/libGLESv2/renderer/d3d/d3d11/Clear11.h | 3 | ||||
-rw-r--r-- | src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp | 11 | ||||
-rw-r--r-- | src/libGLESv2/renderer/d3d/d3d11/Renderer11.h | 2 | ||||
-rw-r--r-- | src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp | 8 | ||||
-rw-r--r-- | src/libGLESv2/renderer/d3d/d3d9/Renderer9.h | 2 |
6 files changed, 29 insertions, 23 deletions
diff --git a/src/libGLESv2/renderer/d3d/d3d11/Clear11.cpp b/src/libGLESv2/renderer/d3d/d3d11/Clear11.cpp index ba9970bf..8aac2f1d 100644 --- a/src/libGLESv2/renderer/d3d/d3d11/Clear11.cpp +++ b/src/libGLESv2/renderer/d3d/d3d11/Clear11.cpp @@ -148,7 +148,7 @@ Clear11::~Clear11() SafeRelease(mRasterizerState); } -void Clear11::clearFramebuffer(const gl::ClearParameters &clearParams, gl::Framebuffer *frameBuffer) +gl::Error Clear11::clearFramebuffer(const gl::ClearParameters &clearParams, gl::Framebuffer *frameBuffer) { // First determine if a scissored clear is needed, this will always require drawing a quad. // @@ -183,7 +183,7 @@ void Clear11::clearFramebuffer(const gl::ClearParameters &clearParams, gl::Frame else { UNREACHABLE(); - return; + return gl::Error(GL_INVALID_OPERATION); } if (clearParams.scissorEnabled && (clearParams.scissor.x >= framebufferSize.width || @@ -192,7 +192,7 @@ void Clear11::clearFramebuffer(const gl::ClearParameters &clearParams, gl::Frame clearParams.scissor.y + clearParams.scissor.height <= 0)) { // Scissor is enabled and the scissor rectangle is outside the renderbuffer - return; + return gl::Error(GL_NO_ERROR); } bool needScissoredClear = clearParams.scissorEnabled && (clearParams.scissor.x > 0 || clearParams.scissor.y > 0 || @@ -214,8 +214,7 @@ void Clear11::clearFramebuffer(const gl::ClearParameters &clearParams, gl::Frame RenderTarget11 *renderTarget = RenderTarget11::makeRenderTarget11(attachment->getRenderTarget()); if (!renderTarget) { - ERR("Render target pointer unexpectedly null."); - return; + return gl::Error(GL_OUT_OF_MEMORY, "Internal render target view pointer unexpectedly null."); } const gl::InternalFormat &formatInfo = gl::GetInternalFormatInfo(attachment->getInternalFormat()); @@ -259,8 +258,7 @@ void Clear11::clearFramebuffer(const gl::ClearParameters &clearParams, gl::Frame ID3D11RenderTargetView *framebufferRTV = renderTarget->getRenderTargetView(); if (!framebufferRTV) { - ERR("Render target view pointer unexpectedly null."); - return; + return gl::Error(GL_OUT_OF_MEMORY, "Internal render target view pointer unexpectedly null."); } const gl::InternalFormat &actualFormatInfo = gl::GetInternalFormatInfo(attachment->getActualFormat()); @@ -289,8 +287,7 @@ void Clear11::clearFramebuffer(const gl::ClearParameters &clearParams, gl::Frame RenderTarget11 *renderTarget = RenderTarget11::makeRenderTarget11(attachment->getRenderTarget()); if (!renderTarget) { - ERR("Depth stencil render target pointer unexpectedly null."); - return; + return gl::Error(GL_OUT_OF_MEMORY, "Internal depth stencil view pointer unexpectedly null."); } const gl::InternalFormat &actualFormatInfo = gl::GetInternalFormatInfo(attachment->getActualFormat()); @@ -307,8 +304,7 @@ void Clear11::clearFramebuffer(const gl::ClearParameters &clearParams, gl::Frame ID3D11DepthStencilView *framebufferDSV = renderTarget->getDepthStencilView(); if (!framebufferDSV) { - ERR("Depth stencil view pointer unexpectedly null."); - return; + return gl::Error(GL_OUT_OF_MEMORY, "Internal depth stencil view pointer unexpectedly null."); } UINT clearFlags = (clearParams.clearDepth ? D3D11_CLEAR_DEPTH : 0) | @@ -355,8 +351,7 @@ void Clear11::clearFramebuffer(const gl::ClearParameters &clearParams, gl::Frame ID3D11RenderTargetView *rtv = renderTarget->getRenderTargetView(); if (!rtv) { - ERR("Render target view unexpectedly null."); - return; + return gl::Error(GL_OUT_OF_MEMORY, "Internal render target view pointer unexpectedly null."); } rtvs[i] = rtv; @@ -378,8 +373,7 @@ void Clear11::clearFramebuffer(const gl::ClearParameters &clearParams, gl::Frame HRESULT result = deviceContext->Map(mVertexBuffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource); if (FAILED(result)) { - ERR("Failed to map masked clear vertex buffer, HRESULT: 0x%X.", result); - return; + return gl::Error(GL_OUT_OF_MEMORY, "Failed to map internal masked clear vertex buffer, HRESULT: 0x%X.", result); } const gl::Rectangle *scissorPtr = clearParams.scissorEnabled ? &clearParams.scissor : NULL; @@ -444,6 +438,8 @@ void Clear11::clearFramebuffer(const gl::ClearParameters &clearParams, gl::Frame // Clean up mRenderer->markAllStateDirty(); } + + return gl::Error(GL_NO_ERROR); } ID3D11BlendState *Clear11::getBlendState(const std::vector<MaskedRenderTarget>& rts) diff --git a/src/libGLESv2/renderer/d3d/d3d11/Clear11.h b/src/libGLESv2/renderer/d3d/d3d11/Clear11.h index be1a9c72..be8e187c 100644 --- a/src/libGLESv2/renderer/d3d/d3d11/Clear11.h +++ b/src/libGLESv2/renderer/d3d/d3d11/Clear11.h @@ -10,6 +10,7 @@ #define LIBGLESV2_RENDERER_CLEAR11_H_ #include "libGLESv2/angletypes.h" +#include "libGLESv2/Error.h" #include <map> #include <vector> @@ -31,7 +32,7 @@ class Clear11 ~Clear11(); // Clears the framebuffer with the supplied clear parameters, assumes that the framebuffer is currently applied. - void clearFramebuffer(const gl::ClearParameters &clearParams, gl::Framebuffer *frameBuffer); + gl::Error clearFramebuffer(const gl::ClearParameters &clearParams, gl::Framebuffer *frameBuffer); private: Renderer11 *mRenderer; diff --git a/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp b/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp index 46d5e7d0..7c45105b 100644 --- a/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp +++ b/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp @@ -1521,10 +1521,17 @@ void Renderer11::applyUniforms(const gl::ProgramBinary &programBinary) } } -void Renderer11::clear(const gl::ClearParameters &clearParams, gl::Framebuffer *frameBuffer) +gl::Error Renderer11::clear(const gl::ClearParameters &clearParams, gl::Framebuffer *frameBuffer) { - mClear->clearFramebuffer(clearParams, frameBuffer); + gl::Error error = mClear->clearFramebuffer(clearParams, frameBuffer); + if (error.isError()) + { + return error; + } + invalidateFramebufferSwizzles(frameBuffer); + + return gl::Error(GL_NO_ERROR); } void Renderer11::markAllStateDirty() diff --git a/src/libGLESv2/renderer/d3d/d3d11/Renderer11.h b/src/libGLESv2/renderer/d3d/d3d11/Renderer11.h index 47fcf290..a3d52a71 100644 --- a/src/libGLESv2/renderer/d3d/d3d11/Renderer11.h +++ b/src/libGLESv2/renderer/d3d/d3d11/Renderer11.h @@ -89,7 +89,7 @@ class Renderer11 : public Renderer virtual void drawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, gl::Buffer *elementArrayBuffer, const TranslatedIndexData &indexInfo, GLsizei instances); - virtual void clear(const gl::ClearParameters &clearParams, gl::Framebuffer *frameBuffer); + virtual gl::Error clear(const gl::ClearParameters &clearParams, gl::Framebuffer *frameBuffer); virtual void markAllStateDirty(); diff --git a/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp b/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp index 7450fc03..5583dfe1 100644 --- a/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp +++ b/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp @@ -1713,13 +1713,13 @@ void Renderer9::applyUniformnbv(gl::LinkedUniform *targetUniform, const GLint *v applyUniformnfv(targetUniform, (GLfloat*)vector); } -void Renderer9::clear(const gl::ClearParameters &clearParams, gl::Framebuffer *frameBuffer) +gl::Error Renderer9::clear(const gl::ClearParameters &clearParams, gl::Framebuffer *frameBuffer) { if (clearParams.colorClearType != GL_FLOAT) { // Clearing buffers with non-float values is not supported by Renderer9 and ES 2.0 UNREACHABLE(); - return; + return gl::Error(GL_INVALID_OPERATION); } bool clearColor = clearParams.clearColor[0]; @@ -1729,7 +1729,7 @@ void Renderer9::clear(const gl::ClearParameters &clearParams, gl::Framebuffer *f { // Clearing individual buffers other than buffer zero is not supported by Renderer9 and ES 2.0 UNREACHABLE(); - return; + return gl::Error(GL_INVALID_OPERATION); } } @@ -1926,6 +1926,8 @@ void Renderer9::clear(const gl::ClearParameters &clearParams, gl::Framebuffer *f mDevice->Clear(0, NULL, dxClearFlags, color, depth, stencil); } + + return gl::Error(GL_NO_ERROR); } void Renderer9::markAllStateDirty() diff --git a/src/libGLESv2/renderer/d3d/d3d9/Renderer9.h b/src/libGLESv2/renderer/d3d/d3d9/Renderer9.h index 5858d2d2..e1398f2f 100644 --- a/src/libGLESv2/renderer/d3d/d3d9/Renderer9.h +++ b/src/libGLESv2/renderer/d3d/d3d9/Renderer9.h @@ -90,7 +90,7 @@ class Renderer9 : public Renderer virtual void drawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, gl::Buffer *elementArrayBuffer, const TranslatedIndexData &indexInfo, GLsizei instances); - virtual void clear(const gl::ClearParameters &clearParams, gl::Framebuffer *frameBuffer); + virtual gl::Error clear(const gl::ClearParameters &clearParams, gl::Framebuffer *frameBuffer); virtual void markAllStateDirty(); |