Move getData from the D3D to the Impl.

We will need this functionality for index validation, so we likely
can assume an implemenation will need to support such a call. We
might redesign this requirement, but for now we can't call though
to BufferD3D on OSX.

BUG=angle:773

Change-Id: I16187c78ff62471fdf7221a11b9956560e617a14
Reviewed-on: https://chromium-review.googlesource.com/238450
Tested-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libANGLE/validationES.cpp b/src/libANGLE/validationES.cpp
index b613ee9..372642d 100644
--- a/src/libANGLE/validationES.cpp
+++ b/src/libANGLE/validationES.cpp
@@ -24,9 +24,6 @@
 #include "common/mathutil.h"
 #include "common/utilities.h"
 
-// FIXME(jmadill): remove this when we support buffer data caching
-#include "libANGLE/renderer/d3d/BufferD3D.h"
-
 namespace gl
 {
 
@@ -1653,10 +1650,9 @@
         uintptr_t offset = reinterpret_cast<uintptr_t>(indices);
         if (!elementArrayBuffer->getIndexRangeCache()->findRange(type, offset, count, indexRangeOut, NULL))
         {
-            // FIXME(jmadill): Use buffer data caching instead of the D3D back-end
-            rx::BufferD3D *bufferD3D = rx::BufferD3D::makeBufferD3D(elementArrayBuffer->getImplementation());
+            rx::BufferImpl *bufferImpl = elementArrayBuffer->getImplementation();
             const uint8_t *dataPointer = NULL;
-            Error error = bufferD3D->getData(&dataPointer);
+            Error error = bufferImpl->getData(&dataPointer);
             if (error.isError())
             {
                 context->recordError(error);