Split the swap chain into an abstract interface and a D3D9 implementation.

TRAC #21926
Signed-off-by: Daniel Koch
Signed-off-by: Geoff Lang
Author: Nicolas Capens

git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1445 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Renderbuffer.cpp b/src/libGLESv2/Renderbuffer.cpp
index 0a1a5ee..3fa4d63 100644
--- a/src/libGLESv2/Renderbuffer.cpp
+++ b/src/libGLESv2/Renderbuffer.cpp
@@ -15,6 +15,7 @@
 #include "libGLESv2/utilities.h"
 
 #include "libGLESv2/renderer/RenderTarget9.h" // D3D9_REPLACE
+#include "libGLESv2/renderer/SwapChain9.h" // D3D9_REPLACE
 #include "libGLESv2/renderer/renderer9_utils.h" // D3D9_REPLACE
 
 namespace gl
@@ -384,7 +385,8 @@
 
 Colorbuffer::Colorbuffer(rx::Renderer *renderer, rx::SwapChain *swapChain)
 {
-    mRenderTarget = new rx::RenderTarget9(renderer, swapChain->getRenderTarget());
+    rx::SwapChain9 *swapChain9 = static_cast<rx::SwapChain9*>(swapChain);
+    mRenderTarget = new rx::RenderTarget9(renderer, swapChain9->getRenderTarget());
     if (mRenderTarget)
     {
         mWidth = mRenderTarget->getWidth();
@@ -432,7 +434,8 @@
 
 DepthStencilbuffer::DepthStencilbuffer(rx::Renderer *renderer, rx::SwapChain *swapChain)
 {
-    mDepthStencil = new rx::RenderTarget9(renderer, swapChain->getDepthStencil());
+    rx::SwapChain9 *swapChain9 = static_cast<rx::SwapChain9*>(swapChain);
+    mDepthStencil = new rx::RenderTarget9(renderer, swapChain9->getDepthStencil());
     if (mDepthStencil)
     {
         mWidth = mDepthStencil->getWidth();