Added support for vertex texure fetch in DX11 mode.

Trac #22354

Signed-off-by: Geoff Lang
Signed-off-by: Shannon Woods
Author: Jamie Madill

git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1757 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/renderer/Renderer11.cpp b/src/libGLESv2/renderer/Renderer11.cpp
index e478ff3..dc36c67 100644
--- a/src/libGLESv2/renderer/Renderer11.cpp
+++ b/src/libGLESv2/renderer/Renderer11.cpp
@@ -46,6 +46,11 @@
         DXGI_FORMAT_D24_UNORM_S8_UINT
     };
 
+enum
+{
+    MAX_TEXTURE_IMAGE_UNITS_VTF_SM4 = 16
+};
+
 Renderer11::Renderer11(egl::Display *display, HDC hDc) : Renderer(display), mDc(hDc)
 {
     mVertexDataManager = NULL;
@@ -312,7 +317,7 @@
     }
     else if (type == gl::SAMPLER_VERTEX)
     {
-        if (index < 0 || index >= gl::MAX_VERTEX_TEXTURE_IMAGE_UNITS_VTF)
+        if (index < 0 || index >= (int)getMaxVertexTextureImageUnits())
         {
             ERR("Vertex shader sampler index %i is not valid.", index);
             return;
@@ -378,7 +383,7 @@
     }
     else if (type == gl::SAMPLER_VERTEX)
     {
-        if (index < 0 || index >= gl::MAX_VERTEX_TEXTURE_IMAGE_UNITS_VTF)
+        if (index < 0 || index >= (int)getMaxVertexTextureImageUnits())
         {
             ERR("Vertex shader sampler index %i is not valid.", index);
             return;
@@ -1317,7 +1322,7 @@
     mDepthStencilInitialized = false;
     mRenderTargetDescInitialized = false;
 
-    for (int i = 0; i < gl::MAX_VERTEX_TEXTURE_IMAGE_UNITS_VTF; i++)
+    for (int i = 0; i < gl::IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS; i++)
     {
         mForceSetVertexSamplerStates[i] = true;
         mCurVertexTextureSerials[i] = 0;
@@ -1584,11 +1589,18 @@
     return false;
 }
 
-bool Renderer11::getVertexTextureSupport() const
+unsigned int Renderer11::getMaxVertexTextureImageUnits() const
 {
-    // TODO
-    // UNIMPLEMENTED();
-    return false;
+    META_ASSERT(MAX_TEXTURE_IMAGE_UNITS_VTF_SM4 <= gl::IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS);
+    switch (mFeatureLevel)
+    {
+      case D3D_FEATURE_LEVEL_11_0:
+      case D3D_FEATURE_LEVEL_10_1:
+      case D3D_FEATURE_LEVEL_10_0:
+        return MAX_TEXTURE_IMAGE_UNITS_VTF_SM4;
+      default: UNREACHABLE();
+        return 0;
+    }
 }
 
 bool Renderer11::getNonPower2TextureSupport() const