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))
{