Squash the attachment types.

We can store all relevant information in the base class, which
lets us avoid using any virtual methods. This will finally let
us avoid using reallocations on FBO attachment sets.

BUG=angleproject:963

Change-Id: Ib4b61da14efaf843478b059499c01e34f9c65e4f
Reviewed-on: https://chromium-review.googlesource.com/263488
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Brandon Jones <bajones@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/renderer/d3d/FramebufferD3D.cpp b/src/libANGLE/renderer/d3d/FramebufferD3D.cpp
index 8e6aa90..e53ab8c 100644
--- a/src/libANGLE/renderer/d3d/FramebufferD3D.cpp
+++ b/src/libANGLE/renderer/d3d/FramebufferD3D.cpp
@@ -393,13 +393,12 @@
     }
     else if (attachment->type() == GL_FRAMEBUFFER_DEFAULT)
     {
-        const gl::DefaultAttachment *defaultAttachment = static_cast<const gl::DefaultAttachment *>(attachment);
-        const egl::Surface *surface = defaultAttachment->getSurface();
+        const egl::Surface *surface = attachment->getSurface();
         ASSERT(surface);
         const SurfaceD3D *surfaceD3D = GetImplAs<SurfaceD3D>(surface);
         ASSERT(surfaceD3D);
 
-        if (defaultAttachment->getBinding() == GL_BACK)
+        if (attachment->getBinding() == GL_BACK)
         {
             *outRT = surfaceD3D->getSwapChain()->getColorRenderTarget();
         }
@@ -436,13 +435,12 @@
     }
     else if (attachment->type() == GL_FRAMEBUFFER_DEFAULT)
     {
-        const gl::DefaultAttachment *defaultAttachment = static_cast<const gl::DefaultAttachment *>(attachment);
-        const egl::Surface *surface = defaultAttachment->getSurface();
+        const egl::Surface *surface = attachment->getSurface();
         ASSERT(surface);
         const SurfaceD3D *surfaceD3D = GetImplAs<SurfaceD3D>(surface);
         ASSERT(surfaceD3D);
 
-        if (defaultAttachment->getBinding() == GL_BACK)
+        if (attachment->getBinding() == GL_BACK)
         {
             return surfaceD3D->getSwapChain()->getColorRenderTarget()->getSerial();
         }