Commit 2a419244 by Geoff Lang

Add defines to enable or disable specific renderers.

BUG=angle:559 Change-Id: I88c168205b142701ec843aa394c82c3a5857ed0d Reviewed-on: https://chromium-review.googlesource.com/185569Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarShannon Woods <shannonwoods@chromium.org> Tested-by: 's avatarGeoff Lang <geofflang@chromium.org>
parent 88f6e946
......@@ -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',
]
}
},
},
},
},
......
......@@ -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
......@@ -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 @@ extern "C"
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;
}
bool softwareDevice = (displayId == EGL_SOFTWARE_DISPLAY_ANGLE);
renderer = new rx::Renderer9(display, hDc, softwareDevice);
if (renderer)
{
status = renderer->initialize();
}
#endif
if (status == EGL_SUCCESS)
#if defined(ANGLE_ENABLE_D3D9)
if (displayId != EGL_D3D11_ONLY_DISPLAY_ANGLE)
{
return renderer;
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);
}
}
#endif
return NULL;
}
......@@ -84,4 +84,4 @@ void glDestroyRenderer(rx::Renderer *renderer)
delete renderer;
}
}
\ No newline at end of file
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment