Display: Add a shared state object.

This will allow us to manage the SurfaceSet in the GL layer.

BUG=angleproject:1684

Change-Id: Iab8243157710beab2667ef10275571078ce9ae8e
Reviewed-on: https://chromium-review.googlesource.com/424228
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/renderer/DisplayImpl.cpp b/src/libANGLE/renderer/DisplayImpl.cpp
index fc2f2c5..dccf1cd 100644
--- a/src/libANGLE/renderer/DisplayImpl.cpp
+++ b/src/libANGLE/renderer/DisplayImpl.cpp
@@ -8,26 +8,20 @@
 
 #include "libANGLE/renderer/DisplayImpl.h"
 
+#include "libANGLE/Display.h"
 #include "libANGLE/Surface.h"
 
 namespace rx
 {
 
-DisplayImpl::DisplayImpl()
-    : mExtensionsInitialized(false),
-      mCapsInitialized(false)
+DisplayImpl::DisplayImpl(const egl::DisplayState &state)
+    : mState(state), mExtensionsInitialized(false), mCapsInitialized(false)
 {
 }
 
 DisplayImpl::~DisplayImpl()
 {
-    ASSERT(mSurfaceSet.empty());
-}
-
-void DisplayImpl::destroySurface(egl::Surface *surface)
-{
-    mSurfaceSet.erase(surface);
-    surface->onDestroy();
+    ASSERT(mState.surfaceSet.empty());
 }
 
 const egl::DisplayExtensions &DisplayImpl::getExtensions() const