summaryrefslogtreecommitdiffstats
path: root/src/angle/patches/0006-Make-DX9-DX11-mutually-exclusive.patch
diff options
context:
space:
mode:
Diffstat (limited to 'src/angle/patches/0006-Make-DX9-DX11-mutually-exclusive.patch')
-rw-r--r--src/angle/patches/0006-Make-DX9-DX11-mutually-exclusive.patch105
1 files changed, 57 insertions, 48 deletions
diff --git a/src/angle/patches/0006-Make-DX9-DX11-mutually-exclusive.patch b/src/angle/patches/0006-Make-DX9-DX11-mutually-exclusive.patch
index 1e7ab82771..1e618d43c7 100644
--- a/src/angle/patches/0006-Make-DX9-DX11-mutually-exclusive.patch
+++ b/src/angle/patches/0006-Make-DX9-DX11-mutually-exclusive.patch
@@ -1,19 +1,22 @@
-From a5c113dda327ad3015312c2836b794929d4771ff Mon Sep 17 00:00:00 2001
+From c2eb5746cdf65091932558ac48ae1e6175d45a3c Mon Sep 17 00:00:00 2001
From: Andrew Knight <andrew.knight@digia.com>
-Date: Thu, 21 Mar 2013 17:12:02 +0200
-Subject: [PATCH 5/6] Make DX9/DX11 mutually exclusive
+Date: Sat, 14 Sep 2013 12:01:19 +0300
+Subject: [PATCH] Make DX9/DX11 mutually exclusive
-ANGLE dx11proto supports DX9 fallback when DX11 is unavailable. This
-patch removes the fallback mechanism and requires that the library be
-chosen at build time (by defining ANGLE_ENABLE_D3D11). This is required
-for WinRT, because d3d9 is not a support library on that platform.
+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 | 9 ++++++---
- src/3rdparty/angle/src/libGLESv2/renderer/Renderer.cpp | 37 +++++++++++--------------------------
- 5 files changed, 26 insertions(+), 31 deletions(-)
+ 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
@@ -25,23 +28,23 @@ index 0364adf..c1ef90c 100644
// 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..438d397 100644
+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"
-+#ifdef ANGLE_ENABLE_D3D11
-+typedef DWORD D3DCOLOR;
-+#else
++#ifndef ANGLE_ENABLE_D3D11
#include <d3d9.h>
++#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..461357a 100644
+index ae83037..72c0a8a 100644
--- a/src/3rdparty/angle/src/libGLESv2/Texture.cpp
+++ b/src/3rdparty/angle/src/libGLESv2/Texture.cpp
@@ -14,7 +14,11 @@
@@ -49,65 +52,66 @@ index ae83037..461357a 100644
#include "libGLESv2/mathutil.h"
#include "libGLESv2/utilities.h"
-#include "libGLESv2/renderer/Blit.h"
-+#if defined(ANGLE_ENABLE_D3D11)
-+# define D3DFMT_UNKNOWN DXGI_FORMAT_UNKNOWN
++#ifndef ANGLE_ENABLE_D3D11
++# include "libGLESv2/renderer/Blit.h"
+#else
-+# include "libGLESv2/renderer/Blit.h"
++# 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..b8b043c 100644
+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 <unordered_map>
#include <vector>
--#include <d3d9.h>
--#include <D3D11.h>
--#include <dxgi.h>
-+#if defined(ANGLE_ENABLE_D3D11)
-+# include <D3D11.h>
-+# include <dxgi.h>
++#ifndef ANGLE_ENABLE_D3D11
+ #include <d3d9.h>
+#else
-+# include <d3d9.h>
+ #include <D3D11.h>
+ #include <dxgi.h>
+#endif
#include <D3Dcompiler.h>
#ifdef _MSC_VER
diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/Renderer.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/Renderer.cpp
-index 8fd3425..64e52c1 100644
+index d1d234b..21ad223 100644
--- a/src/3rdparty/angle/src/libGLESv2/renderer/Renderer.cpp
+++ b/src/3rdparty/angle/src/libGLESv2/renderer/Renderer.cpp
-@@ -10,14 +10,13 @@
+@@ -11,8 +11,11 @@
#include "libGLESv2/main.h"
#include "libGLESv2/Program.h"
#include "libGLESv2/renderer/Renderer.h"
--#include "libGLESv2/renderer/Renderer9.h"
--#include "libGLESv2/renderer/Renderer11.h"
--#include "libGLESv2/utilities.h"
--
--#if !defined(ANGLE_ENABLE_D3D11)
--// Enables use of the Direct3D 11 API, when available
--#define ANGLE_ENABLE_D3D11 0
-+#if defined(ANGLE_ENABLE_D3D11)
-+# include "libGLESv2/renderer/Renderer11.h"
-+# define D3DERR_OUTOFVIDEOMEMORY MAKE_HRESULT( 1, 0x876, 380 )
++#ifndef ANGLE_ENABLE_D3D11
+ #include "libGLESv2/renderer/Renderer9.h"
+#else
-+# include "libGLESv2/renderer/Renderer9.h"
+ #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
-+#include "libGLESv2/utilities.h"
- #if !defined(ANGLE_COMPILE_OPTIMIZATION_LEVEL)
- #define ANGLE_COMPILE_OPTIMIZATION_LEVEL D3DCOMPILE_OPTIMIZATION_LEVEL3
-@@ -174,27 +173,13 @@ rx::Renderer *glCreateRenderer(egl::Display *display, HDC hDc, bool softwareDevi
++#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)
+- if (ANGLE_ENABLE_D3D11 ||
+- displayId == EGL_D3D11_ELSE_D3D9_DISPLAY_ANGLE ||
+- displayId == EGL_D3D11_ONLY_DISPLAY_ANGLE)
- {
- renderer = new rx::Renderer11(display, hDc);
-
@@ -120,14 +124,19 @@ index 8fd3425..64e52c1 100644
- {
- 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 defined(ANGLE_ENABLE_D3D11)
++#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