Pass swapchain to DepthStencil constructor instead of d3d9 surface
Trac #21810
Signed-off-by: Nicolas Capens
Also get rid of unused StencilBuffer and Depthbuffer constructors
git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1355 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Context.cpp b/src/libGLESv2/Context.cpp
index 0b4b647..bf780d8 100644
--- a/src/libGLESv2/Context.cpp
+++ b/src/libGLESv2/Context.cpp
@@ -316,22 +316,15 @@
mHasBeenCurrent = true;
}
- // Wrap the existing Direct3D 9 resources into GL objects and assign them to the '0' names
- // D3D9_REPLACE
+ // Wrap the existing swapchain resources into GL objects and assign them to the '0' names
renderer::SwapChain *swapchain = surface->getSwapChain();
- IDirect3DSurface9 *depthStencil = swapchain->getDepthStencil();
Colorbuffer *colorbufferZero = new Colorbuffer(swapchain);
- DepthStencilbuffer *depthStencilbufferZero = new DepthStencilbuffer(depthStencil);
+ DepthStencilbuffer *depthStencilbufferZero = new DepthStencilbuffer(swapchain);
Framebuffer *framebufferZero = new DefaultFramebuffer(colorbufferZero, depthStencilbufferZero);
setFramebufferZero(framebufferZero);
- if (depthStencil)
- {
- depthStencil->Release();
- }
-
// Reset pixel shader to null to work around a bug that only happens with Intel GPUs.
// http://crbug.com/110343
mDevice->SetPixelShader(NULL);
diff --git a/src/libGLESv2/Renderbuffer.cpp b/src/libGLESv2/Renderbuffer.cpp
index 6065afb..f8840ec 100644
--- a/src/libGLESv2/Renderbuffer.cpp
+++ b/src/libGLESv2/Renderbuffer.cpp
@@ -452,14 +452,13 @@
return mRenderTarget;
}
-DepthStencilbuffer::DepthStencilbuffer(IDirect3DSurface9 *depthStencil) : mDepthStencil(depthStencil)
+DepthStencilbuffer::DepthStencilbuffer(renderer::SwapChain *swapChain)
{
- if (depthStencil)
+ mDepthStencil = swapChain->getDepthStencil();
+ if (mDepthStencil)
{
- depthStencil->AddRef();
-
D3DSURFACE_DESC description;
- depthStencil->GetDesc(&description);
+ mDepthStencil->GetDesc(&description);
mWidth = description.Width;
mHeight = description.Height;
@@ -527,16 +526,6 @@
return mDepthStencil;
}
-Depthbuffer::Depthbuffer(IDirect3DSurface9 *depthStencil) : DepthStencilbuffer(depthStencil)
-{
- if (depthStencil)
- {
- mInternalFormat = GL_DEPTH_COMPONENT16; // If the renderbuffer parameters are queried, the calling function
- // will expect one of the valid renderbuffer formats for use in
- // glRenderbufferStorage
- }
-}
-
Depthbuffer::Depthbuffer(int width, int height, GLsizei samples) : DepthStencilbuffer(width, height, samples)
{
if (mDepthStencil)
@@ -551,16 +540,6 @@
{
}
-Stencilbuffer::Stencilbuffer(IDirect3DSurface9 *depthStencil) : DepthStencilbuffer(depthStencil)
-{
- if (depthStencil)
- {
- mInternalFormat = GL_STENCIL_INDEX8; // If the renderbuffer parameters are queried, the calling function
- // will expect one of the valid renderbuffer formats for use in
- // glRenderbufferStorage
- }
-}
-
Stencilbuffer::Stencilbuffer(int width, int height, GLsizei samples) : DepthStencilbuffer(width, height, samples)
{
if (mDepthStencil)
diff --git a/src/libGLESv2/Renderbuffer.h b/src/libGLESv2/Renderbuffer.h
index 1453284..14ba3db 100644
--- a/src/libGLESv2/Renderbuffer.h
+++ b/src/libGLESv2/Renderbuffer.h
@@ -217,7 +217,7 @@
class DepthStencilbuffer : public RenderbufferStorage
{
public:
- explicit DepthStencilbuffer(IDirect3DSurface9 *depthStencil);
+ explicit DepthStencilbuffer(renderer::SwapChain *swapChain);
DepthStencilbuffer(GLsizei width, GLsizei height, GLsizei samples);
~DepthStencilbuffer();
@@ -234,7 +234,6 @@
class Depthbuffer : public DepthStencilbuffer
{
public:
- explicit Depthbuffer(IDirect3DSurface9 *depthStencil);
Depthbuffer(GLsizei width, GLsizei height, GLsizei samples);
virtual ~Depthbuffer();
@@ -246,7 +245,6 @@
class Stencilbuffer : public DepthStencilbuffer
{
public:
- explicit Stencilbuffer(IDirect3DSurface9 *depthStencil);
Stencilbuffer(GLsizei width, GLsizei height, GLsizei samples);
virtual ~Stencilbuffer();