Pass swapchain to Colorbuffer constructor instead of a d3d9 surface

Trac #21810 Signed-off-by: Nicolas Capens git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1354 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent 114bd460
...@@ -319,20 +319,14 @@ void Context::makeCurrent(egl::Display *display, egl::Surface *surface) ...@@ -319,20 +319,14 @@ void Context::makeCurrent(egl::Display *display, egl::Surface *surface)
// Wrap the existing Direct3D 9 resources into GL objects and assign them to the '0' names // Wrap the existing Direct3D 9 resources into GL objects and assign them to the '0' names
// D3D9_REPLACE // D3D9_REPLACE
renderer::SwapChain *swapchain = surface->getSwapChain(); renderer::SwapChain *swapchain = surface->getSwapChain();
IDirect3DSurface9 *defaultRenderTarget = swapchain->getRenderTarget();
IDirect3DSurface9 *depthStencil = swapchain->getDepthStencil(); IDirect3DSurface9 *depthStencil = swapchain->getDepthStencil();
Colorbuffer *colorbufferZero = new Colorbuffer(defaultRenderTarget); Colorbuffer *colorbufferZero = new Colorbuffer(swapchain);
DepthStencilbuffer *depthStencilbufferZero = new DepthStencilbuffer(depthStencil); DepthStencilbuffer *depthStencilbufferZero = new DepthStencilbuffer(depthStencil);
Framebuffer *framebufferZero = new DefaultFramebuffer(colorbufferZero, depthStencilbufferZero); Framebuffer *framebufferZero = new DefaultFramebuffer(colorbufferZero, depthStencilbufferZero);
setFramebufferZero(framebufferZero); setFramebufferZero(framebufferZero);
if (defaultRenderTarget)
{
defaultRenderTarget->Release();
}
if (depthStencil) if (depthStencil)
{ {
depthStencil->Release(); depthStencil->Release();
......
...@@ -379,14 +379,13 @@ unsigned int RenderbufferStorage::issueCubeSerials() ...@@ -379,14 +379,13 @@ unsigned int RenderbufferStorage::issueCubeSerials()
return firstSerial; return firstSerial;
} }
Colorbuffer::Colorbuffer(IDirect3DSurface9 *renderTarget) : mRenderTarget(renderTarget) Colorbuffer::Colorbuffer(renderer::SwapChain *swapChain)
{ {
if (renderTarget) mRenderTarget = swapChain->getRenderTarget();
if (mRenderTarget)
{ {
renderTarget->AddRef();
D3DSURFACE_DESC description; D3DSURFACE_DESC description;
renderTarget->GetDesc(&description); mRenderTarget->GetDesc(&description);
mWidth = description.Width; mWidth = description.Width;
mHeight = description.Height; mHeight = description.Height;
......
...@@ -19,6 +19,8 @@ ...@@ -19,6 +19,8 @@
#include "common/angleutils.h" #include "common/angleutils.h"
#include "common/RefCountObject.h" #include "common/RefCountObject.h"
#include "renderer/SwapChain.h"
namespace gl namespace gl
{ {
class Texture2D; class Texture2D;
...@@ -199,7 +201,7 @@ class Renderbuffer : public RefCountObject ...@@ -199,7 +201,7 @@ class Renderbuffer : public RefCountObject
class Colorbuffer : public RenderbufferStorage class Colorbuffer : public RenderbufferStorage
{ {
public: public:
explicit Colorbuffer(IDirect3DSurface9 *renderTarget); explicit Colorbuffer(renderer::SwapChain *swapChain);
Colorbuffer(GLsizei width, GLsizei height, GLenum format, GLsizei samples); Colorbuffer(GLsizei width, GLsizei height, GLenum format, GLsizei samples);
virtual ~Colorbuffer(); virtual ~Colorbuffer();
......
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