Explicitly retrieve a Renderer9 or Renderer interface from Display.

TRAC #21963
Signed-off-by: Daniel Koch
Author: Nicolas Capens

git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1377 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Context.cpp b/src/libGLESv2/Context.cpp
index f1140aa..178d238 100644
--- a/src/libGLESv2/Context.cpp
+++ b/src/libGLESv2/Context.cpp
@@ -249,7 +249,7 @@
 void Context::makeCurrent(egl::Display *display, egl::Surface *surface)
 {
     mDisplay = display;
-    mRenderer = mDisplay->getRenderer();
+    mRenderer = mDisplay->getRenderer9();
     mDevice = mRenderer->getDevice(); // D3D9_REMOVE
 
     if (!mHasBeenCurrent)
@@ -4398,8 +4398,24 @@
     return gl::getContext();
 }
 
-renderer::Renderer9 *glCreateRenderer(egl::Display *display, HMODULE hModule, HDC hDc)
+renderer::Renderer *glCreateRenderer(egl::Display *display, HDC hDc, bool softwareDevice)
 {
+    HMODULE hModule = NULL;
+    
+    if (softwareDevice)
+    {
+        hModule = GetModuleHandle(TEXT("swiftshader_d3d9.dll"));
+    }
+    else
+    {
+        hModule = GetModuleHandle(TEXT("d3d9.dll"));
+    }
+
+    if (hModule == NULL)
+    {
+        return NULL;
+    }
+
     return new renderer::Renderer9(display, hModule, hDc);  // D3D9_REPLACE
 }