Add defines to enable or disable specific renderers.
BUG=angle:559
Change-Id: I88c168205b142701ec843aa394c82c3a5857ed0d
Reviewed-on: https://chromium-review.googlesource.com/185569
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shannon Woods <shannonwoods@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libGLESv2/renderer/Renderer.cpp b/src/libGLESv2/renderer/Renderer.cpp
index 78c4b2d..d24e90d 100644
--- a/src/libGLESv2/renderer/Renderer.cpp
+++ b/src/libGLESv2/renderer/Renderer.cpp
@@ -11,14 +11,20 @@
#include "libGLESv2/main.h"
#include "libGLESv2/Program.h"
#include "libGLESv2/renderer/Renderer.h"
-#include "libGLESv2/renderer/d3d9/Renderer9.h"
-#include "libGLESv2/renderer/d3d11/Renderer11.h"
#include "common/utilities.h"
#include "third_party/trace_event/trace_event.h"
-#if !defined(ANGLE_ENABLE_D3D11)
+#if defined (ANGLE_ENABLE_D3D9)
+#include "libGLESv2/renderer/d3d9/Renderer9.h"
+#endif // ANGLE_ENABLE_D3D9
+
+#if defined (ANGLE_ENABLE_D3D11)
+#include "libGLESv2/renderer/d3d11/Renderer11.h"
+#endif // ANGLE_ENABLE_D3D11
+
+#if !defined(ANGLE_DEFAULT_D3D11)
// Enables use of the Direct3D 11 API for a default display, when available
-#define ANGLE_ENABLE_D3D11 1
+#define ANGLE_DEFAULT_D3D11 1
#endif
namespace rx
@@ -36,45 +42,39 @@
rx::Renderer *glCreateRenderer(egl::Display *display, HDC hDc, EGLNativeDisplayType displayId)
{
- rx::Renderer *renderer = NULL;
- EGLint status = EGL_BAD_ALLOC;
-
- if (ANGLE_ENABLE_D3D11 ||
+#if defined(ANGLE_ENABLE_D3D11)
+ if (ANGLE_DEFAULT_D3D11 ||
displayId == EGL_D3D11_ELSE_D3D9_DISPLAY_ANGLE ||
displayId == EGL_D3D11_ONLY_DISPLAY_ANGLE)
{
- renderer = new rx::Renderer11(display, hDc);
-
- if (renderer)
- {
- status = renderer->initialize();
- }
-
- if (status == EGL_SUCCESS)
+ rx::Renderer11 *renderer = new rx::Renderer11(display, hDc);
+ if (renderer->initialize() == EGL_SUCCESS)
{
return renderer;
}
- else if (displayId == EGL_D3D11_ONLY_DISPLAY_ANGLE)
+ else
{
- return NULL;
+ // Failed to create a D3D11 renderer, try D3D9
+ SafeDelete(renderer);
}
-
- // Failed to create a D3D11 renderer, try creating a D3D9 renderer
- delete renderer;
}
+#endif
- bool softwareDevice = (displayId == EGL_SOFTWARE_DISPLAY_ANGLE);
- renderer = new rx::Renderer9(display, hDc, softwareDevice);
-
- if (renderer)
+#if defined(ANGLE_ENABLE_D3D9)
+ if (displayId != EGL_D3D11_ONLY_DISPLAY_ANGLE)
{
- status = renderer->initialize();
+ bool softwareDevice = (displayId == EGL_SOFTWARE_DISPLAY_ANGLE);
+ rx::Renderer9 *renderer = new rx::Renderer9(display, hDc, softwareDevice);
+ if (renderer->initialize() == EGL_SUCCESS)
+ {
+ return renderer;
+ }
+ else
+ {
+ SafeDelete(renderer);
+ }
}
-
- if (status == EGL_SUCCESS)
- {
- return renderer;
- }
+#endif
return NULL;
}
@@ -84,4 +84,4 @@
delete renderer;
}
-}
\ No newline at end of file
+}