Created a Renderer9::markAllStateDirty method and moved state initialization into it.

TRAC #22124

Signed-off-by: Nicolas Capens
Signed-off-by: Daniel Koch

git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1459 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/renderer/Renderer.h b/src/libGLESv2/renderer/Renderer.h
index 4c7b8b7..2b2ad93 100644
--- a/src/libGLESv2/renderer/Renderer.h
+++ b/src/libGLESv2/renderer/Renderer.h
@@ -95,6 +95,8 @@
     virtual void clear(GLbitfield mask, const gl::Color &colorClear, float depthClear, int stencilClear,
                        gl::Framebuffer *frameBuffer) = 0;
 
+    virtual void markAllStateDirty() = 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 7b1ceeb..248bc36 100644
--- a/src/libGLESv2/renderer/Renderer11.cpp
+++ b/src/libGLESv2/renderer/Renderer11.cpp
@@ -40,11 +40,6 @@
     mDeviceContext = NULL;
     mDxgiAdapter = NULL;
     mDxgiFactory = NULL;
-
-    mForceSetBlendState = true;
-    mForceSetRasterState = true;
-    mForceSetDepthStencilState = true;
-    mForceSetScissor = true;
 }
 
 Renderer11::~Renderer11()
@@ -174,6 +169,8 @@
 {
     mStateCache.initialize(mDevice);
 
+    markAllStateDirty();
+
     // Permanent non-default states
     // TODO
     // UNIMPLEMENTED();
@@ -398,6 +395,14 @@
     UNIMPLEMENTED();
 }
 
+void Renderer11::markAllStateDirty()
+{
+    mForceSetBlendState = true;
+    mForceSetRasterState = true;
+    mForceSetDepthStencilState = true;
+    mForceSetScissor = true;
+}
+
 void Renderer11::releaseDeviceResources()
 {
     // TODO
@@ -468,11 +473,6 @@
     initializeDevice();
     mDeviceLost = false;
 
-    mForceSetBlendState = true;
-    mForceSetRasterState = true;
-    mForceSetDepthStencilState = true;
-    mForceSetScissor = true;
-
     return true;
 }
 
diff --git a/src/libGLESv2/renderer/Renderer11.h b/src/libGLESv2/renderer/Renderer11.h
index d978511..539781f 100644
--- a/src/libGLESv2/renderer/Renderer11.h
+++ b/src/libGLESv2/renderer/Renderer11.h
@@ -66,6 +66,8 @@
     virtual void clear(GLbitfield mask, const gl::Color &colorClear, float depthClear, int stencilClear,
                        gl::Framebuffer *frameBuffer);
 
+    virtual void markAllStateDirty();
+
     // lost device
     virtual void markDeviceLost();
     virtual bool isDeviceLost();
diff --git a/src/libGLESv2/renderer/Renderer9.cpp b/src/libGLESv2/renderer/Renderer9.cpp
index 908c3e8..10a858e 100644
--- a/src/libGLESv2/renderer/Renderer9.cpp
+++ b/src/libGLESv2/renderer/Renderer9.cpp
@@ -83,12 +83,6 @@
     mDeviceLost = false;
 
     mMaxSupportedSamples = 0;
-
-    mForceSetDepthStencilState = true;
-    mForceSetRasterState = true;
-    mForceSetBlendState = true;
-    mForceSetScissor = true;
-    mForceSetViewport = true;
 }
 
 Renderer9::~Renderer9()
@@ -359,6 +353,8 @@
         mDevice->SetRenderState(D3DRS_POINTSIZE_MAX, 0x3F800000);   // 1.0f
     }
 
+    markAllStateDirty();
+
     mSceneStarted = false;
 }
 
@@ -945,6 +941,15 @@
     // TODO
 }
 
+void Renderer9::markAllStateDirty()
+{
+    mForceSetDepthStencilState = true;
+    mForceSetRasterState = true;
+    mForceSetBlendState = true;
+    mForceSetScissor = true;
+    mForceSetViewport = true;
+}
+
 void Renderer9::releaseDeviceResources()
 {
     while (!mEventQueryPool.empty())
@@ -1072,11 +1077,6 @@
     initializeDevice();
     mDeviceLost = false;
 
-    mForceSetDepthStencilState = true;
-    mForceSetRasterState = true;
-    mForceSetBlendState = true;
-    mForceSetScissor = true;
-
     return true;
 }
 
diff --git a/src/libGLESv2/renderer/Renderer9.h b/src/libGLESv2/renderer/Renderer9.h
index 520c4a9..dc69296 100644
--- a/src/libGLESv2/renderer/Renderer9.h
+++ b/src/libGLESv2/renderer/Renderer9.h
@@ -86,6 +86,8 @@
     virtual void clear(GLbitfield mask, const gl::Color &colorClear, float depthClear, int stencilClear,
                        gl::Framebuffer *frameBuffer);
 
+    virtual void markAllStateDirty();
+
     // lost device
     virtual void markDeviceLost();
     virtual bool isDeviceLost();
diff --git a/src/libGLESv2/renderer/SwapChain9.cpp b/src/libGLESv2/renderer/SwapChain9.cpp
index 798dad6..4e1fa04 100644
--- a/src/libGLESv2/renderer/SwapChain9.cpp
+++ b/src/libGLESv2/renderer/SwapChain9.cpp
@@ -342,6 +342,7 @@
     {
         context->markAllStateDirty();
     }
+    mRenderer->markAllStateDirty();
 
     if (isDeviceLostError(result))
     {