From c2eb5746cdf65091932558ac48ae1e6175d45a3c Mon Sep 17 00:00:00 2001 From: Andrew Knight Date: Sat, 14 Sep 2013 12:01:19 +0300 Subject: [PATCH] Make DX9/DX11 mutually exclusive ANGLE supports selecting the renderer on creation, choosing between D3D11 and D3D9 backends. This patch removes that feature, and makes the D3D version a compile-time decision. This makes the binary size smaller (no extra render is built) and ensures compatibility with Windows Runtime, which supports only Direct3D 11. Change-Id: Id9473e0e631721083fe4026d475e37603a144c37 --- src/3rdparty/angle/src/common/RefCountObject.cpp | 1 - src/3rdparty/angle/src/common/debug.cpp | 4 +++ src/3rdparty/angle/src/libGLESv2/Texture.cpp | 6 +++- src/3rdparty/angle/src/libGLESv2/precompiled.h | 3 ++ .../angle/src/libGLESv2/renderer/Renderer.cpp | 37 +++++++--------------- 5 files changed, 24 insertions(+), 27 deletions(-) diff --git a/src/3rdparty/angle/src/common/RefCountObject.cpp b/src/3rdparty/angle/src/common/RefCountObject.cpp index 0364adf..c1ef90c 100644 --- a/src/3rdparty/angle/src/common/RefCountObject.cpp +++ b/src/3rdparty/angle/src/common/RefCountObject.cpp @@ -1,4 +1,3 @@ -#include "precompiled.h" // // Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be diff --git a/src/3rdparty/angle/src/common/debug.cpp b/src/3rdparty/angle/src/common/debug.cpp index 2333740..9b93256 100644 --- a/src/3rdparty/angle/src/common/debug.cpp +++ b/src/3rdparty/angle/src/common/debug.cpp @@ -8,7 +8,11 @@ #include "common/debug.h" #include "common/system.h" +#ifndef ANGLE_ENABLE_D3D11 #include +#else +typedef DWORD D3DCOLOR; +#endif namespace gl { diff --git a/src/3rdparty/angle/src/libGLESv2/Texture.cpp b/src/3rdparty/angle/src/libGLESv2/Texture.cpp index ae83037..72c0a8a 100644 --- a/src/3rdparty/angle/src/libGLESv2/Texture.cpp +++ b/src/3rdparty/angle/src/libGLESv2/Texture.cpp @@ -14,7 +14,11 @@ #include "libGLESv2/main.h" #include "libGLESv2/mathutil.h" #include "libGLESv2/utilities.h" -#include "libGLESv2/renderer/Blit.h" +#ifndef ANGLE_ENABLE_D3D11 +# include "libGLESv2/renderer/Blit.h" +#else +# define D3DFMT_UNKNOWN DXGI_FORMAT_UNKNOWN +#endif #include "libGLESv2/Renderbuffer.h" #include "libGLESv2/renderer/Image.h" #include "libGLESv2/renderer/Renderer.h" diff --git a/src/3rdparty/angle/src/libGLESv2/precompiled.h b/src/3rdparty/angle/src/libGLESv2/precompiled.h index a850d57..50dec6b 100644 --- a/src/3rdparty/angle/src/libGLESv2/precompiled.h +++ b/src/3rdparty/angle/src/libGLESv2/precompiled.h @@ -32,9 +32,12 @@ #include #include +#ifndef ANGLE_ENABLE_D3D11 #include +#else #include #include +#endif #include #ifdef _MSC_VER diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/Renderer.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/Renderer.cpp index d1d234b..21ad223 100644 --- a/src/3rdparty/angle/src/libGLESv2/renderer/Renderer.cpp +++ b/src/3rdparty/angle/src/libGLESv2/renderer/Renderer.cpp @@ -11,8 +11,11 @@ #include "libGLESv2/main.h" #include "libGLESv2/Program.h" #include "libGLESv2/renderer/Renderer.h" +#ifndef ANGLE_ENABLE_D3D11 #include "libGLESv2/renderer/Renderer9.h" +#else #include "libGLESv2/renderer/Renderer11.h" +#endif #include "libGLESv2/utilities.h" #include "third_party/trace_event/trace_event.h" @@ -21,6 +24,10 @@ #define ANGLE_ENABLE_D3D11 0 #endif +#ifndef D3DERR_OUTOFVIDEOMEMORY +#define D3DERR_OUTOFVIDEOMEMORY MAKE_HRESULT(1, 0x876, 380) +#endif + #ifdef __MINGW32__ #ifndef D3DCOMPILER_DLL @@ -192,34 +199,14 @@ rx::Renderer *glCreateRenderer(egl::Display *display, HDC hDc, EGLNativeDisplayT { rx::Renderer *renderer = NULL; EGLint status = EGL_BAD_ALLOC; - - if (ANGLE_ENABLE_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) - { - return renderer; - } - else if (displayId == EGL_D3D11_ONLY_DISPLAY_ANGLE) - { - return NULL; - } - - // Failed to create a D3D11 renderer, try creating a D3D9 renderer - delete renderer; - } +#if ANGLE_ENABLE_D3D11 + renderer = new rx::Renderer11(display, hDc); +#else bool softwareDevice = (displayId == EGL_SOFTWARE_DISPLAY_ANGLE); renderer = new rx::Renderer9(display, hDc, softwareDevice); - +#endif + if (renderer) { status = renderer->initialize(); -- 1.8.1.msysgit.1