Make egl::Surface independent of the Renderer 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@1427 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Context.cpp b/src/libGLESv2/Context.cpp
index 646baed..7b61c08 100644
--- a/src/libGLESv2/Context.cpp
+++ b/src/libGLESv2/Context.cpp
@@ -1924,7 +1924,7 @@
     GLint alwaysFront = !isTriangleMode(drawMode);
     programBinary->setUniform1iv(pointsOrLines, 1, &alwaysFront);
 
-    const gl::Renderbuffer *depthbuffer = framebufferObject->getDepthbuffer();

+    const gl::Renderbuffer *depthbuffer = framebufferObject->getDepthbuffer();
     unsigned int depthSize = depthbuffer ? depthbuffer->getDepthSize() : 0;
 
     mRenderer->setRasterizerState(mState.rasterizer, depthSize);
@@ -4076,16 +4076,4 @@
     return gl::getContext();
 }
 
-rx::SwapChain *glCreateSwapChain(rx::Renderer9 *renderer, HWND window, HANDLE shareHandle,
-                                       GLenum backBufferFormat, GLenum depthBufferFormat)
-{
-    return new rx::SwapChain(renderer, window, shareHandle, backBufferFormat, depthBufferFormat);
-}
-
-void glDestroySwapChain(rx::SwapChain *swapChain)
-{
-    delete swapChain;
-}
-
-
 }
diff --git a/src/libGLESv2/libGLESv2.def b/src/libGLESv2/libGLESv2.def
index 03837a8..067225e 100644
--- a/src/libGLESv2/libGLESv2.def
+++ b/src/libGLESv2/libGLESv2.def
@@ -181,6 +181,4 @@
     glGetProcAddress                @148 NONAME
     glBindTexImage                  @158 NONAME
     glCreateRenderer                @177 NONAME
-    glDestroyRenderer               @178 NONAME
-    glCreateSwapChain               @179 NONAME
-    glDestroySwapChain              @180 NONAME
+    glDestroyRenderer               @178 NONAME
\ No newline at end of file
diff --git a/src/libGLESv2/main.h b/src/libGLESv2/main.h
index d56bbb3..92440c8 100644
--- a/src/libGLESv2/main.h
+++ b/src/libGLESv2/main.h
@@ -54,9 +54,6 @@
 gl::Context *glGetCurrentContext();
 rx::Renderer *glCreateRenderer(egl::Display *display, HDC hDc, bool softwareDevice);
 void glDestroyRenderer(rx::Renderer *renderer);
-rx::SwapChain *glCreateSwapChain(rx::Renderer9 *renderer, HWND window, HANDLE shareHandle,
-                                       GLenum backBufferFormat, GLenum depthBufferFormat);  // D3D9_REPLACE
-void glDestroySwapChain(rx::SwapChain *swapChain);
 
 __eglMustCastToProperFunctionPointerType __stdcall glGetProcAddress(const char *procname);
 bool __stdcall glBindTexImage(egl::Surface *surface);
diff --git a/src/libGLESv2/renderer/Renderer.h b/src/libGLESv2/renderer/Renderer.h
index 43e8f0e..99b2ae6 100644
--- a/src/libGLESv2/renderer/Renderer.h
+++ b/src/libGLESv2/renderer/Renderer.h
@@ -68,6 +68,8 @@
 
     virtual void sync(bool block) = 0;
 
+    virtual SwapChain *createSwapChain(HWND window, HANDLE shareHandle, GLenum backBufferFormat, GLenum depthBufferFormat) = 0;
+
     virtual void setSamplerState(gl::SamplerType type, int index, const gl::SamplerState &sampler) = 0;
     virtual void setTexture(gl::SamplerType type, int index, gl::Texture *texture) = 0;
 
diff --git a/src/libGLESv2/renderer/Renderer11.cpp b/src/libGLESv2/renderer/Renderer11.cpp
index b60b2e2..60e12cf 100644
--- a/src/libGLESv2/renderer/Renderer11.cpp
+++ b/src/libGLESv2/renderer/Renderer11.cpp
@@ -31,6 +31,8 @@
     mD3d11Module = NULL;
     mDxgiModule = NULL;
 
+    mDeviceLost = false;
+
     mDevice = NULL;
     mDeviceContext = NULL;
     mDxgiAdapter = NULL;
@@ -224,6 +226,16 @@
     UNIMPLEMENTED();
 }
 
+SwapChain *Renderer11::createSwapChain(HWND window, HANDLE shareHandle, GLenum backBufferFormat, GLenum depthBufferFormat)
+{
+    // TODO
+    UNIMPLEMENTED();
+
+    //return new rx::SwapChain(this, window, shareHandle, backBufferFormat, depthBufferFormat);
+
+    return NULL;
+}
+
 void Renderer11::setSamplerState(gl::SamplerType type, int index, const gl::SamplerState &samplerState)
 {
     // TODO
@@ -298,7 +310,7 @@
     bool isLost = false;
 
     // TODO
-    UNIMPLEMENTED();
+    //UNIMPLEMENTED();
 
     if (isLost)
     {
@@ -484,7 +496,7 @@
 bool Renderer11::getShareHandleSupport() const
 {
     // TODO
-    UNIMPLEMENTED();
+    //UNIMPLEMENTED();
 
     // PIX doesn't seem to support using share handles, so disable them.
     return false && !gl::perfActive();
diff --git a/src/libGLESv2/renderer/Renderer11.h b/src/libGLESv2/renderer/Renderer11.h
index bf068b9..dfc651d 100644
--- a/src/libGLESv2/renderer/Renderer11.h
+++ b/src/libGLESv2/renderer/Renderer11.h
@@ -42,6 +42,8 @@
 
     virtual void sync(bool block);
 
+    virtual SwapChain *createSwapChain(HWND window, HANDLE shareHandle, GLenum backBufferFormat, GLenum depthBufferFormat);
+
     virtual void setSamplerState(gl::SamplerType type, int index, const gl::SamplerState &sampler);
     virtual void setTexture(gl::SamplerType type, int index, gl::Texture *texture);
 
diff --git a/src/libGLESv2/renderer/Renderer9.cpp b/src/libGLESv2/renderer/Renderer9.cpp
index 480ffa9..fa4724d 100644
--- a/src/libGLESv2/renderer/Renderer9.cpp
+++ b/src/libGLESv2/renderer/Renderer9.cpp
@@ -502,6 +502,11 @@
     }
 }
 
+SwapChain *Renderer9::createSwapChain(HWND window, HANDLE shareHandle, GLenum backBufferFormat, GLenum depthBufferFormat)
+{
+    return new rx::SwapChain(this, window, shareHandle, backBufferFormat, depthBufferFormat);
+}
+
 // D3D9_REPLACE
 IDirect3DQuery9* Renderer9::allocateEventQuery()
 {
diff --git a/src/libGLESv2/renderer/Renderer9.h b/src/libGLESv2/renderer/Renderer9.h
index e0b5035..e5c60b8 100644
--- a/src/libGLESv2/renderer/Renderer9.h
+++ b/src/libGLESv2/renderer/Renderer9.h
@@ -44,6 +44,9 @@
     virtual void endScene();
 
     virtual void sync(bool block);
+
+    virtual SwapChain *createSwapChain(HWND window, HANDLE shareHandle, GLenum backBufferFormat, GLenum depthBufferFormat);
+
     IDirect3DQuery9* allocateEventQuery();
     void freeEventQuery(IDirect3DQuery9* query);