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.gypi b/src/libGLESv2.gypi
index b8c856d..6cb9a1a 100644
--- a/src/libGLESv2.gypi
+++ b/src/libGLESv2.gypi
@@ -3,6 +3,11 @@
# found in the LICENSE file.
{
+ 'variables':
+ {
+ 'angle_enable_d3d9%': 1,
+ 'angle_enable_d3d11%': 1,
+ },
'target_defaults':
{
'defines':
@@ -33,21 +38,63 @@
[
'<!@(python <(angle_build_scripts_path)/enumerate_files.py \
-dirs common libGLESv2 third_party/murmurhash ../include \
- -types *.cpp *.h *.hlsl *.vs *.ps *.bat *.def *.rc)',
+ -types *.cpp *.h *.hlsl *.vs *.ps *.bat *.def *.rc \
+ -excludes */d3d/* */d3d9/* */d3d11/*)',
],
# TODO(jschuh): http://crbug.com/167187 size_t -> int
'msvs_disabled_warnings': [ 4267 ],
- 'msvs_settings':
- {
- 'VCLinkerTool':
+
+ 'conditions':
+ [
+ ['angle_enable_d3d9==1',
{
- 'AdditionalDependencies':
+ 'sources':
[
- 'd3d9.lib',
- 'dxguid.lib',
- ]
- }
- },
+ '<!@(python <(angle_build_scripts_path)/enumerate_files.py \
+ -dirs libGLESv2/renderer/d3d libGLESv2/renderer/d3d9 \
+ -types *.cpp *.h *.vs *.ps *.bat)',
+ ],
+ 'defines':
+ [
+ 'ANGLE_ENABLE_D3D9',
+ ],
+ 'msvs_settings':
+ {
+ 'VCLinkerTool':
+ {
+ 'AdditionalDependencies':
+ [
+ 'dxguid.lib',
+ 'd3d9.lib',
+ ]
+ }
+ },
+ }],
+ ['angle_enable_d3d11==1',
+ {
+ 'sources':
+ [
+ '<!@(python <(angle_build_scripts_path)/enumerate_files.py \
+ -dirs libGLESv2/renderer/d3d libGLESv2/renderer/d3d11 \
+ -types *.cpp *.h *.hlsl *.bat)',
+ ],
+ 'defines':
+ [
+ 'ANGLE_ENABLE_D3D11',
+ ],
+ 'msvs_settings':
+ {
+ 'VCLinkerTool':
+ {
+ 'AdditionalDependencies':
+ [
+ 'dxguid.lib',
+ ]
+ }
+ },
+ }],
+ ],
+
'configurations':
{
'Debug':
@@ -56,6 +103,16 @@
[
'ANGLE_ENABLE_PERF',
],
+ 'msvs_settings':
+ {
+ 'VCLinkerTool':
+ {
+ 'AdditionalDependencies':
+ [
+ 'd3d9.lib',
+ ]
+ }
+ },
},
},
},
diff --git a/src/libGLESv2/precompiled.h b/src/libGLESv2/precompiled.h
index e380bfb..fed6bc8 100644
--- a/src/libGLESv2/precompiled.h
+++ b/src/libGLESv2/precompiled.h
@@ -37,7 +37,13 @@
#include <unordered_map>
#include <vector>
+#if defined(ANGLE_ENABLE_D3D9)
#include <d3d9.h>
+#include <D3Dcompiler.h>
+#endif // ANGLE_ENABLE_D3D9
+
+#if defined(ANGLE_ENABLE_D3D11)
#include <D3D11.h>
#include <dxgi.h>
#include <D3Dcompiler.h>
+#endif // ANGLE_ENABLE_D3D11
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
+}