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
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;
......
......@@ -40,11 +40,6 @@ Renderer11::Renderer11(egl::Display *display, HDC hDc) : Renderer(display), mDc(
mDeviceContext = NULL;
mDxgiAdapter = NULL;
mDxgiFactory = NULL;
mForceSetBlendState = true;
mForceSetRasterState = true;
mForceSetDepthStencilState = true;
mForceSetScissor = true;
}
Renderer11::~Renderer11()
......@@ -174,6 +169,8 @@ void Renderer11::initializeDevice()
{
mStateCache.initialize(mDevice);
markAllStateDirty();
// Permanent non-default states
// TODO
// UNIMPLEMENTED();
......@@ -398,6 +395,14 @@ void Renderer11::clear(GLbitfield mask, const gl::Color &colorClear, float depth
UNIMPLEMENTED();
}
void Renderer11::markAllStateDirty()
{
mForceSetBlendState = true;
mForceSetRasterState = true;
mForceSetDepthStencilState = true;
mForceSetScissor = true;
}
void Renderer11::releaseDeviceResources()
{
// TODO
......@@ -468,11 +473,6 @@ bool Renderer11::resetDevice()
initializeDevice();
mDeviceLost = false;
mForceSetBlendState = true;
mForceSetRasterState = true;
mForceSetDepthStencilState = true;
mForceSetScissor = true;
return true;
}
......
......@@ -66,6 +66,8 @@ class Renderer11 : public Renderer
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();
......
......@@ -83,12 +83,6 @@ Renderer9::Renderer9(egl::Display *display, HDC hDc, bool softwareDevice) : Rend
mDeviceLost = false;
mMaxSupportedSamples = 0;
mForceSetDepthStencilState = true;
mForceSetRasterState = true;
mForceSetBlendState = true;
mForceSetScissor = true;
mForceSetViewport = true;
}
Renderer9::~Renderer9()
......@@ -359,6 +353,8 @@ void Renderer9::initializeDevice()
mDevice->SetRenderState(D3DRS_POINTSIZE_MAX, 0x3F800000); // 1.0f
}
markAllStateDirty();
mSceneStarted = false;
}
......@@ -945,6 +941,15 @@ void Renderer9::clear(GLbitfield mask, const gl::Color &colorClear, float depthC
// TODO
}
void Renderer9::markAllStateDirty()
{
mForceSetDepthStencilState = true;
mForceSetRasterState = true;
mForceSetBlendState = true;
mForceSetScissor = true;
mForceSetViewport = true;
}
void Renderer9::releaseDeviceResources()
{
while (!mEventQueryPool.empty())
......@@ -1072,11 +1077,6 @@ bool Renderer9::resetDevice()
initializeDevice();
mDeviceLost = false;
mForceSetDepthStencilState = true;
mForceSetRasterState = true;
mForceSetBlendState = true;
mForceSetScissor = true;
return true;
}
......
......@@ -86,6 +86,8 @@ class Renderer9 : public Renderer
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();
......
......@@ -342,6 +342,7 @@ EGLint SwapChain9::swapRect(EGLint x, EGLint y, EGLint width, EGLint height)
{
context->markAllStateDirty();
}
mRenderer->markAllStateDirty();
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