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
}