Context::applyRenderTargets now uses Renderer::applyRenderTargets.

TRAC #22124 Signed-off-by: Nicolas Capens Signed-off-by: Daniel Koch git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1462 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent 220e79a6
...@@ -347,12 +347,7 @@ void Context::markAllStateDirty() ...@@ -347,12 +347,7 @@ void Context::markAllStateDirty()
} }
mAppliedProgramBinarySerial = 0; mAppliedProgramBinarySerial = 0;
mAppliedRenderTargetSerial = 0;
mAppliedDepthbufferSerial = 0;
mAppliedStencilbufferSerial = 0;
mAppliedIBSerial = 0; mAppliedIBSerial = 0;
mDepthStencilInitialized = false;
mRenderTargetDescInitialized = false;
mVertexDeclarationCache.markStateDirty(); mVertexDeclarationCache.markStateDirty();
...@@ -1752,9 +1747,10 @@ bool Context::applyRenderTarget(bool ignoreViewport) ...@@ -1752,9 +1747,10 @@ bool Context::applyRenderTarget(bool ignoreViewport)
mRenderer->applyRenderTarget(framebufferObject); mRenderer->applyRenderTarget(framebufferObject);
// if there is no color attachment we must synthesize a NULL colorattachment // storing the mRenderTargetDesc in Context will be removed once refactoring
// to keep the D3D runtime happy. This should only be possible if depth texturing. // of clear is complete
Renderbuffer *renderbufferObject = NULL; // D3D9_REPLACE start
gl::Renderbuffer *renderbufferObject = NULL;
if (framebufferObject->getColorbufferType() != GL_NONE) if (framebufferObject->getColorbufferType() != GL_NONE)
{ {
renderbufferObject = framebufferObject->getColorbuffer(); renderbufferObject = framebufferObject->getColorbuffer();
...@@ -1769,61 +1765,10 @@ bool Context::applyRenderTarget(bool ignoreViewport) ...@@ -1769,61 +1765,10 @@ bool Context::applyRenderTarget(bool ignoreViewport)
return false; return false;
} }
bool renderTargetChanged = false; mRenderTargetDesc.width = renderbufferObject->getWidth();
unsigned int renderTargetSerial = renderbufferObject->getSerial(); mRenderTargetDesc.height = renderbufferObject->getHeight();
if (renderTargetSerial != mAppliedRenderTargetSerial) mRenderTargetDesc.format = renderbufferObject->getActualFormat();
{ // D3D9_REPLACE end
if (!mRenderer->setRenderTarget(renderbufferObject))
{
return false; // Context must be lost
}
mAppliedRenderTargetSerial = renderTargetSerial;
renderTargetChanged = true;
}
Renderbuffer *depthStencil = NULL;
unsigned int depthbufferSerial = 0;
unsigned int stencilbufferSerial = 0;
if (framebufferObject->getDepthbufferType() != GL_NONE)
{
depthStencil = framebufferObject->getDepthbuffer();
if (!depthStencil)
{
ERR("Depth stencil pointer unexpectedly null.");
return false;
}
depthbufferSerial = depthStencil->getSerial();
}
else if (framebufferObject->getStencilbufferType() != GL_NONE)
{
depthStencil = framebufferObject->getStencilbuffer();
if (!depthStencil)
{
ERR("Depth stencil pointer unexpectedly null.");
return false;
}
stencilbufferSerial = depthStencil->getSerial();
}
if (depthbufferSerial != mAppliedDepthbufferSerial ||
stencilbufferSerial != mAppliedStencilbufferSerial ||
!mDepthStencilInitialized)
{
mRenderer->setDepthStencil(depthStencil);
mAppliedDepthbufferSerial = depthbufferSerial;
mAppliedStencilbufferSerial = stencilbufferSerial;
mDepthStencilInitialized = true;
}
if (!mRenderTargetDescInitialized || renderTargetChanged)
{
mRenderTargetDesc.width = renderbufferObject->getWidth();
mRenderTargetDesc.height = renderbufferObject->getHeight();
mRenderTargetDesc.format = renderbufferObject->getActualFormat();
mRenderTargetDescInitialized = true;
}
Rectangle viewport = mState.viewport; Rectangle viewport = mState.viewport;
float zNear = clamp01(mState.zNear); float zNear = clamp01(mState.zNear);
......
...@@ -545,13 +545,8 @@ class Context ...@@ -545,13 +545,8 @@ class Context
unsigned int mAppliedTextureSerialPS[MAX_TEXTURE_IMAGE_UNITS]; unsigned int mAppliedTextureSerialPS[MAX_TEXTURE_IMAGE_UNITS];
unsigned int mAppliedTextureSerialVS[MAX_VERTEX_TEXTURE_IMAGE_UNITS_VTF]; unsigned int mAppliedTextureSerialVS[MAX_VERTEX_TEXTURE_IMAGE_UNITS_VTF];
unsigned int mAppliedProgramBinarySerial; unsigned int mAppliedProgramBinarySerial;
unsigned int mAppliedRenderTargetSerial;
unsigned int mAppliedDepthbufferSerial;
unsigned int mAppliedStencilbufferSerial;
unsigned int mAppliedIBSerial; unsigned int mAppliedIBSerial;
bool mDepthStencilInitialized; rx::RenderTarget::Desc mRenderTargetDesc; // D3D9_REPLACE
bool mRenderTargetDescInitialized;
rx::RenderTarget::Desc mRenderTargetDesc;
bool mDxUniformsDirty; bool mDxUniformsDirty;
BindingPointer<ProgramBinary> mCurrentProgramBinary; BindingPointer<ProgramBinary> mCurrentProgramBinary;
Framebuffer *mBoundDrawFramebuffer; Framebuffer *mBoundDrawFramebuffer;
......
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