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
parent b323df03
...@@ -95,6 +95,8 @@ class Renderer ...@@ -95,6 +95,8 @@ class Renderer
virtual void clear(GLbitfield mask, const gl::Color &colorClear, float depthClear, int stencilClear, virtual void clear(GLbitfield mask, const gl::Color &colorClear, float depthClear, int stencilClear,
gl::Framebuffer *frameBuffer) = 0; gl::Framebuffer *frameBuffer) = 0;
virtual void markAllStateDirty() = 0;
// lost device // lost device
virtual void markDeviceLost() = 0; virtual void markDeviceLost() = 0;
virtual bool isDeviceLost() = 0; virtual bool isDeviceLost() = 0;
......
...@@ -40,11 +40,6 @@ Renderer11::Renderer11(egl::Display *display, HDC hDc) : Renderer(display), mDc( ...@@ -40,11 +40,6 @@ Renderer11::Renderer11(egl::Display *display, HDC hDc) : Renderer(display), mDc(
mDeviceContext = NULL; mDeviceContext = NULL;
mDxgiAdapter = NULL; mDxgiAdapter = NULL;
mDxgiFactory = NULL; mDxgiFactory = NULL;
mForceSetBlendState = true;
mForceSetRasterState = true;
mForceSetDepthStencilState = true;
mForceSetScissor = true;
} }
Renderer11::~Renderer11() Renderer11::~Renderer11()
...@@ -174,6 +169,8 @@ void Renderer11::initializeDevice() ...@@ -174,6 +169,8 @@ void Renderer11::initializeDevice()
{ {
mStateCache.initialize(mDevice); mStateCache.initialize(mDevice);
markAllStateDirty();
// Permanent non-default states // Permanent non-default states
// TODO // TODO
// UNIMPLEMENTED(); // UNIMPLEMENTED();
...@@ -398,6 +395,14 @@ void Renderer11::clear(GLbitfield mask, const gl::Color &colorClear, float depth ...@@ -398,6 +395,14 @@ void Renderer11::clear(GLbitfield mask, const gl::Color &colorClear, float depth
UNIMPLEMENTED(); UNIMPLEMENTED();
} }
void Renderer11::markAllStateDirty()
{
mForceSetBlendState = true;
mForceSetRasterState = true;
mForceSetDepthStencilState = true;
mForceSetScissor = true;
}
void Renderer11::releaseDeviceResources() void Renderer11::releaseDeviceResources()
{ {
// TODO // TODO
...@@ -468,11 +473,6 @@ bool Renderer11::resetDevice() ...@@ -468,11 +473,6 @@ bool Renderer11::resetDevice()
initializeDevice(); initializeDevice();
mDeviceLost = false; mDeviceLost = false;
mForceSetBlendState = true;
mForceSetRasterState = true;
mForceSetDepthStencilState = true;
mForceSetScissor = true;
return true; return true;
} }
......
...@@ -66,6 +66,8 @@ class Renderer11 : public Renderer ...@@ -66,6 +66,8 @@ class Renderer11 : public Renderer
virtual void clear(GLbitfield mask, const gl::Color &colorClear, float depthClear, int stencilClear, virtual void clear(GLbitfield mask, const gl::Color &colorClear, float depthClear, int stencilClear,
gl::Framebuffer *frameBuffer); gl::Framebuffer *frameBuffer);
virtual void markAllStateDirty();
// lost device // lost device
virtual void markDeviceLost(); virtual void markDeviceLost();
virtual bool isDeviceLost(); virtual bool isDeviceLost();
......
...@@ -83,12 +83,6 @@ Renderer9::Renderer9(egl::Display *display, HDC hDc, bool softwareDevice) : Rend ...@@ -83,12 +83,6 @@ Renderer9::Renderer9(egl::Display *display, HDC hDc, bool softwareDevice) : Rend
mDeviceLost = false; mDeviceLost = false;
mMaxSupportedSamples = 0; mMaxSupportedSamples = 0;
mForceSetDepthStencilState = true;
mForceSetRasterState = true;
mForceSetBlendState = true;
mForceSetScissor = true;
mForceSetViewport = true;
} }
Renderer9::~Renderer9() Renderer9::~Renderer9()
...@@ -359,6 +353,8 @@ void Renderer9::initializeDevice() ...@@ -359,6 +353,8 @@ void Renderer9::initializeDevice()
mDevice->SetRenderState(D3DRS_POINTSIZE_MAX, 0x3F800000); // 1.0f mDevice->SetRenderState(D3DRS_POINTSIZE_MAX, 0x3F800000); // 1.0f
} }
markAllStateDirty();
mSceneStarted = false; mSceneStarted = false;
} }
...@@ -945,6 +941,15 @@ void Renderer9::clear(GLbitfield mask, const gl::Color &colorClear, float depthC ...@@ -945,6 +941,15 @@ void Renderer9::clear(GLbitfield mask, const gl::Color &colorClear, float depthC
// TODO // TODO
} }
void Renderer9::markAllStateDirty()
{
mForceSetDepthStencilState = true;
mForceSetRasterState = true;
mForceSetBlendState = true;
mForceSetScissor = true;
mForceSetViewport = true;
}
void Renderer9::releaseDeviceResources() void Renderer9::releaseDeviceResources()
{ {
while (!mEventQueryPool.empty()) while (!mEventQueryPool.empty())
...@@ -1072,11 +1077,6 @@ bool Renderer9::resetDevice() ...@@ -1072,11 +1077,6 @@ bool Renderer9::resetDevice()
initializeDevice(); initializeDevice();
mDeviceLost = false; mDeviceLost = false;
mForceSetDepthStencilState = true;
mForceSetRasterState = true;
mForceSetBlendState = true;
mForceSetScissor = true;
return true; return true;
} }
......
...@@ -86,6 +86,8 @@ class Renderer9 : public Renderer ...@@ -86,6 +86,8 @@ class Renderer9 : public Renderer
virtual void clear(GLbitfield mask, const gl::Color &colorClear, float depthClear, int stencilClear, virtual void clear(GLbitfield mask, const gl::Color &colorClear, float depthClear, int stencilClear,
gl::Framebuffer *frameBuffer); gl::Framebuffer *frameBuffer);
virtual void markAllStateDirty();
// lost device // lost device
virtual void markDeviceLost(); virtual void markDeviceLost();
virtual bool isDeviceLost(); virtual bool isDeviceLost();
......
...@@ -342,6 +342,7 @@ EGLint SwapChain9::swapRect(EGLint x, EGLint y, EGLint width, EGLint height) ...@@ -342,6 +342,7 @@ EGLint SwapChain9::swapRect(EGLint x, EGLint y, EGLint width, EGLint height)
{ {
context->markAllStateDirty(); context->markAllStateDirty();
} }
mRenderer->markAllStateDirty();
if (isDeviceLostError(result)) if (isDeviceLostError(result))
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment