Add generic Impl casting helper methods.

GetAs and GetImplAs are template helpers that can replace all of our
custom "makeTextureD3D", etc methods. This will help save code across
different back-ends.

Change-Id: Ib3215c005bfac5a819c5d8f7d60a73a725241332
Reviewed-on: https://chromium-review.googlesource.com/245390
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/renderer/d3d/IndexDataManager.cpp b/src/libANGLE/renderer/d3d/IndexDataManager.cpp
index 486dc47..ada3aec 100644
--- a/src/libANGLE/renderer/d3d/IndexDataManager.cpp
+++ b/src/libANGLE/renderer/d3d/IndexDataManager.cpp
@@ -84,7 +84,7 @@
     {
         offset = static_cast<unsigned int>(reinterpret_cast<uintptr_t>(indices));
 
-        storage = BufferD3D::makeBufferD3D(buffer->getImplementation());
+        storage = GetImplAs<BufferD3D>(buffer);
 
         switch (type)
         {