Changed the Renderer::clear method parameters to use the new ClearParameters structure.

TRAC #22125

Signed-off-by: Shannon Woods
Signed-off-by: Daniel Koch

git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1485 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Context.cpp b/src/libGLESv2/Context.cpp
index c365599..533b79e 100644
--- a/src/libGLESv2/Context.cpp
+++ b/src/libGLESv2/Context.cpp
@@ -1998,6 +1998,7 @@
     }
 
     DWORD flags = 0;
+    GLbitfield finalMask = 0;
 
     if (mask & GL_COLOR_BUFFER_BIT)
     {
@@ -2006,6 +2007,7 @@
         if (framebufferObject->getColorbufferType() != GL_NONE)
         {
             flags |= D3DCLEAR_TARGET;
+            finalMask |= GL_COLOR_BUFFER_BIT;
         }
     }
 
@@ -2015,6 +2017,7 @@
         if (mState.depthStencil.depthMask && framebufferObject->getDepthbufferType() != GL_NONE)
         {
             flags |= D3DCLEAR_ZBUFFER;
+            finalMask |= GL_DEPTH_BUFFER_BIT;
         }
     }
 
@@ -2038,6 +2041,7 @@
             if (stencilUnmasked != 0x0)
             {
                 flags |= D3DCLEAR_STENCIL;
+                finalMask |= GL_STENCIL_BUFFER_BIT;
             }
         }
     }
@@ -2212,9 +2216,18 @@
     {
         mDevice->Clear(0, NULL, flags, color, depth, stencil);
     }
+    ClearParameters clearParams;
+    clearParams.mask = finalMask;
+    clearParams.colorClearValue = mState.colorClearValue;
+    clearParams.colorMaskRed = mState.blend.colorMaskRed;
+    clearParams.colorMaskGreen = mState.blend.colorMaskGreen;
+    clearParams.colorMaskBlue = mState.blend.colorMaskBlue;
+    clearParams.colorMaskAlpha = mState.blend.colorMaskAlpha;
+    clearParams.depthClearValue = mState.depthClearValue;
+    clearParams.stencilClearValue = mState.stencilClearValue;
+    clearParams.stencilWriteMask = mState.depthStencil.stencilWritemask;
 
-    mRenderer->clear(mask, mState.colorClearValue, mState.depthClearValue, mState.stencilClearValue,
-                     framebufferObject);
+    mRenderer->clear(clearParams, framebufferObject);
 }
 
 void Context::drawArrays(GLenum mode, GLint first, GLsizei count, GLsizei instances)
diff --git a/src/libGLESv2/renderer/Renderer.h b/src/libGLESv2/renderer/Renderer.h
index 09b66ca..60d579c 100644
--- a/src/libGLESv2/renderer/Renderer.h
+++ b/src/libGLESv2/renderer/Renderer.h
@@ -96,8 +96,7 @@
 
     virtual GLenum applyVertexBuffer(gl::ProgramBinary *programBinary, gl::VertexAttribute vertexAttributes[], GLint first, GLsizei count, GLsizei instances, GLsizei *repeatDraw) = 0;
 
-    virtual void clear(GLbitfield mask, const gl::Color &colorClear, float depthClear, int stencilClear,
-                       gl::Framebuffer *frameBuffer) = 0;
+    virtual void clear(const gl::ClearParameters &clearParams, gl::Framebuffer *frameBuffer) = 0;
 
     virtual void markAllStateDirty() = 0;
 
diff --git a/src/libGLESv2/renderer/Renderer11.cpp b/src/libGLESv2/renderer/Renderer11.cpp
index 3ab97fc..d005406 100644
--- a/src/libGLESv2/renderer/Renderer11.cpp
+++ b/src/libGLESv2/renderer/Renderer11.cpp
@@ -411,8 +411,7 @@
     UNIMPLEMENTED();
 }
 
-void Renderer11::clear(GLbitfield mask, const gl::Color &colorClear, float depthClear, int stencilClear,
-                       gl::Framebuffer *frameBuffer)
+void Renderer11::clear(const gl::ClearParameters &clearParams, gl::Framebuffer *frameBuffer)
 {
     // TODO
     UNIMPLEMENTED();
diff --git a/src/libGLESv2/renderer/Renderer11.h b/src/libGLESv2/renderer/Renderer11.h
index 1b640bb..beeae52 100644
--- a/src/libGLESv2/renderer/Renderer11.h
+++ b/src/libGLESv2/renderer/Renderer11.h
@@ -68,8 +68,7 @@
 
     virtual GLenum applyVertexBuffer(gl::ProgramBinary *programBinary, gl::VertexAttribute vertexAttributes[], GLint first, GLsizei count, GLsizei instances, GLsizei *repeatDraw);
 
-    virtual void clear(GLbitfield mask, const gl::Color &colorClear, float depthClear, int stencilClear,
-                       gl::Framebuffer *frameBuffer);
+    virtual void clear(const gl::ClearParameters &clearParams, gl::Framebuffer *frameBuffer);
 
     virtual void markAllStateDirty();
 
diff --git a/src/libGLESv2/renderer/Renderer9.cpp b/src/libGLESv2/renderer/Renderer9.cpp
index bdf6af9..108abd6 100644
--- a/src/libGLESv2/renderer/Renderer9.cpp
+++ b/src/libGLESv2/renderer/Renderer9.cpp
@@ -1119,8 +1119,7 @@
     programBinary->dirtyAllUniforms();
 }
 
-void Renderer9::clear(GLbitfield mask, const gl::Color &colorClear, float depthClear, int stencilClear,
-                      gl::Framebuffer *frameBuffer)
+void Renderer9::clear(const gl::ClearParameters &clearParams, gl::Framebuffer *frameBuffer)
 {
     mForceSetDepthStencilState = true;
 
diff --git a/src/libGLESv2/renderer/Renderer9.h b/src/libGLESv2/renderer/Renderer9.h
index dc11b42..7cbe997 100644
--- a/src/libGLESv2/renderer/Renderer9.h
+++ b/src/libGLESv2/renderer/Renderer9.h
@@ -131,8 +131,7 @@
 
     virtual GLenum applyVertexBuffer(gl::ProgramBinary *programBinary, gl::VertexAttribute vertexAttributes[], GLint first, GLsizei count, GLsizei instances, GLsizei *repeatDraw);
 
-    virtual void clear(GLbitfield mask, const gl::Color &colorClear, float depthClear, int stencilClear,
-                       gl::Framebuffer *frameBuffer);
+    virtual void clear(const gl::ClearParameters &clearParams, gl::Framebuffer *frameBuffer);
 
     virtual void markAllStateDirty();