Added an abstract Renderer::clear method.

TRAC #22041

Unimplemented in Renderer11 and Renderer9 only forces the depth stencil state
to reset.

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

Author:    Geoff Lang

git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1423 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Context.cpp b/src/libGLESv2/Context.cpp
index 658c721..b7fa89d 100644
--- a/src/libGLESv2/Context.cpp
+++ b/src/libGLESv2/Context.cpp
@@ -2824,6 +2824,9 @@
     {
         mDevice->Clear(0, NULL, flags, color, depth, stencil);
     }
+
+    mRenderer->clear(mask, mState.colorClearValue, mState.depthClearValue, mState.stencilClearValue,
+                     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 bd51922..169cb33 100644
--- a/src/libGLESv2/renderer/Renderer.h
+++ b/src/libGLESv2/renderer/Renderer.h
@@ -82,6 +82,9 @@
 
     virtual void applyRenderTarget(gl::Framebuffer *frameBuffer) = 0;
 
+    virtual void clear(GLbitfield mask, const gl::Color &colorClear, float depthClear, int stencilClear,
+                       gl::Framebuffer *frameBuffer) = 0;
+
     // lost device
     virtual void markDeviceLost() = 0;
     virtual bool isDeviceLost() = 0;
diff --git a/src/libGLESv2/renderer/Renderer11.cpp b/src/libGLESv2/renderer/Renderer11.cpp
index c31ef56..5a86217 100644
--- a/src/libGLESv2/renderer/Renderer11.cpp
+++ b/src/libGLESv2/renderer/Renderer11.cpp
@@ -269,6 +269,13 @@
     UNIMPLEMENTED();
 }
 
+void Renderer11::clear(GLbitfield mask, const gl::Color &colorClear, float depthClear, int stencilClear,
+                       gl::Framebuffer *frameBuffer)
+{
+    // TODO
+    UNIMPLEMENTED();
+}
+
 void Renderer11::releaseDeviceResources()
 {
     // TODO
diff --git a/src/libGLESv2/renderer/Renderer11.h b/src/libGLESv2/renderer/Renderer11.h
index 0e47be2..3b5b95d 100644
--- a/src/libGLESv2/renderer/Renderer11.h
+++ b/src/libGLESv2/renderer/Renderer11.h
@@ -56,6 +56,9 @@
 
     virtual void applyRenderTarget(gl::Framebuffer *frameBuffer);
 
+    virtual void clear(GLbitfield mask, const gl::Color &colorClear, float depthClear, int stencilClear,
+                       gl::Framebuffer *frameBuffer);
+
     // lost device
     virtual void markDeviceLost();
     virtual bool isDeviceLost();
diff --git a/src/libGLESv2/renderer/Renderer9.cpp b/src/libGLESv2/renderer/Renderer9.cpp
index d183750..d45cd8f 100644
--- a/src/libGLESv2/renderer/Renderer9.cpp
+++ b/src/libGLESv2/renderer/Renderer9.cpp
@@ -865,6 +865,14 @@
     // TODO
 }
 
+void Renderer9::clear(GLbitfield mask, const gl::Color &colorClear, float depthClear, int stencilClear,
+                      gl::Framebuffer *frameBuffer)
+{
+    mForceSetDepthStencilState = true;
+
+    // TODO
+}
+
 void Renderer9::releaseDeviceResources()
 {
     while (!mEventQueryPool.empty())
diff --git a/src/libGLESv2/renderer/Renderer9.h b/src/libGLESv2/renderer/Renderer9.h
index cbc0a01..e08d6e2 100644
--- a/src/libGLESv2/renderer/Renderer9.h
+++ b/src/libGLESv2/renderer/Renderer9.h
@@ -79,6 +79,9 @@
 
     virtual void applyRenderTarget(gl::Framebuffer *frameBuffer);
 
+    virtual void clear(GLbitfield mask, const gl::Color &colorClear, float depthClear, int stencilClear,
+                       gl::Framebuffer *frameBuffer);
+
     // lost device
     virtual void markDeviceLost();
     virtual bool isDeviceLost();