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/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);