Refactor Framebuffer management into a FramebufferManager class.

BUG=angleproject:1639

Change-Id: I03a0950f26557983c8dc816a27cb4038c60e5755
Reviewed-on: https://chromium-review.googlesource.com/415611
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libANGLE/ContextState.cpp b/src/libANGLE/ContextState.cpp
index d6c8d04..6a24816 100644
--- a/src/libANGLE/ContextState.cpp
+++ b/src/libANGLE/ContextState.cpp
@@ -45,8 +45,7 @@
                            const Caps &capsIn,
                            const TextureCapsMap &textureCapsIn,
                            const Extensions &extensionsIn,
-                           const Limitations &limitationsIn,
-                           const ResourceMap<Framebuffer> &framebufferMap)
+                           const Limitations &limitationsIn)
     : mClientVersion(clientVersion),
       mContext(contextIn),
       mState(stateIn),
@@ -54,7 +53,6 @@
       mTextureCaps(textureCapsIn),
       mExtensions(extensionsIn),
       mLimitations(limitationsIn),
-      mFramebufferMap(framebufferMap),
       mBuffers(AllocateOrGetSharedResourceManager(shareContextState, &ContextState::mBuffers)),
       mShaderPrograms(
           AllocateOrGetSharedResourceManager(shareContextState, &ContextState::mShaderPrograms)),
@@ -64,7 +62,8 @@
       mSamplers(AllocateOrGetSharedResourceManager(shareContextState, &ContextState::mSamplers)),
       mFenceSyncs(
           AllocateOrGetSharedResourceManager(shareContextState, &ContextState::mFenceSyncs)),
-      mPaths(AllocateOrGetSharedResourceManager(shareContextState, &ContextState::mPaths))
+      mPaths(AllocateOrGetSharedResourceManager(shareContextState, &ContextState::mPaths)),
+      mFramebuffers(new FramebufferManager())
 {
 }
 
@@ -77,6 +76,7 @@
     mSamplers->release();
     mFenceSyncs->release();
     mPaths->release();
+    mFramebuffers->release();
 }
 
 const TextureCaps &ContextState::getTextureCap(GLenum internalFormat) const
@@ -91,7 +91,6 @@
                                      const TextureCapsMap &textureCaps,
                                      const Extensions &extensions,
                                      const Limitations &limitations,
-                                     const ResourceMap<Framebuffer> &framebufferMap,
                                      bool skipValidation)
     : mState(reinterpret_cast<uintptr_t>(this),
              shareContext ? &shareContext->mState : nullptr,
@@ -100,8 +99,7 @@
              caps,
              textureCaps,
              extensions,
-             limitations,
-             framebufferMap),
+             limitations),
       mSkipValidation(skipValidation)
 {
 }
@@ -672,8 +670,7 @@
 
 bool ValidationContext::isFramebufferGenerated(GLuint framebuffer) const
 {
-    ASSERT(mState.mFramebufferMap.find(0) != mState.mFramebufferMap.end());
-    return mState.mFramebufferMap.find(framebuffer) != mState.mFramebufferMap.end();
+    return mState.mFramebuffers->isFramebufferGenerated(framebuffer);
 }
 
 }  // namespace gl