summaryrefslogtreecommitdiffstats
path: root/src/angle
diff options
context:
space:
mode:
authorAndrew Knight <andrew.knight@intopalo.com>2015-04-08 17:04:36 +0300
committerAndrew Knight <qt@panimo.net>2015-04-09 10:31:12 +0000
commita218a252c4200cfe7048de81a46f7e48349084d5 (patch)
treec1a82865d97e610cd0abb3a1360408363b38205b /src/angle
parent331ddacfca90c91c5b44484bf3c78e2aa5b85947 (diff)
Upgrade ANGLE to 2.1~99f075dade7c
This aligns with Chromium branch 2356. This version brings more complete OpenGL ES 3 support as well as various bug fixes and performance improvements. The following changes were made to earlier patches: -0000-General-fixes-for-ANGLE-2.1 Removed. All changes are now handled elsewhere. +0001-ANGLE-Improve-Windows-Phone-support Consolidated remaining parts from 0009/0010. +0002-ANGLE-Fix-compilation-with-MinGW Remaining issues from patch 0016. +0003-ANGLE-Fix-compilation-with-MSVC2010 Remaining issues from patch 0015. +0004-ANGLE-Dynamically-load-D3D-compiler-from-list Renamed from patch 0008. +0005-ANGLE-Add-support-for-querying-platform-device Renamed from patch 0013. -0004-Make-it-possible-to-link-ANGLE-statically-for-single Removed. Fixed by adding defines to project files. -0008-ANGLE-Dynamically-load-D3D-compiler-from-a-list-or-t Renamed to patch 0005. -0009-ANGLE-Support-WinRT Removed. Mostly fixed upstream; remaining parts in patch 0001. -0010-ANGLE-Enable-D3D11-for-feature-level-9-cards Removed. Mostly fixed upstream; remaining parts in patch 0001. -0012-ANGLE-fix-semantic-index-lookup Removed. Fixed upstream. -0013-ANGLE-Add-support-for-querying-platform-device Renamed to patch 0005. -0014-Let-ANGLE-use-multithreaded-devices-if-necessary Removed. No longer needed. -0015-ANGLE-Fix-angle-d3d11-on-MSVC2010 Moved remaining parts to patch 0003. -0016-ANGLE-Fix-compilation-with-MinGW-D3D11 Moved remaining parts to patch 0002. -0017-ANGLE-Fix-compilation-with-D3D9 Removed. Fixed upstream. -0018-ANGLE-Fix-releasing-textures-after-we-kill-D3D11 Removed. Fixed upstream. -0019-ANGLE-Fix-handling-of-shader-source-with-fixed-lengt Removed. Fixed upstream. -0020-ANGLE-Do-not-use-std-strlen Removed. Fixed upstream. -0020-ANGLE-Fix-compilation-with-MSVC2013-Update4 Removed. Fixed upstream. [ChangeLog][Third-party libraries] ANGLE was updated to Chromium branch 2356 (2.1~99f075dade7c). Change-Id: I32ccbfe95e10986bd94be7191dfd53445ea09158 Task-number: QTBUG-44815 Task-number: QTBUG-37660 Task-number: QTBUG-44694 Task-number: QTBUG-42443 Reviewed-by: Andrew Knight <qt@panimo.net> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Diffstat (limited to 'src/angle')
-rw-r--r--src/angle/patches/0000-General-fixes-for-ANGLE-2.1.patch477
-rw-r--r--src/angle/patches/0001-ANGLE-Improve-Windows-Phone-Support.patch439
-rw-r--r--src/angle/patches/0002-ANGLE-Fix-compilation-with-MinGW.patch927
-rw-r--r--src/angle/patches/0003-ANGLE-Fix-compilation-on-MSVC2010-2012.patch363
-rw-r--r--src/angle/patches/0004-ANGLE-Dynamically-load-D3D-compiler-from-a-list.patch (renamed from src/angle/patches/0008-ANGLE-Dynamically-load-D3D-compiler-from-a-list-or-t.patch)33
-rw-r--r--src/angle/patches/0004-Make-it-possible-to-link-ANGLE-statically-for-single.patch109
-rw-r--r--src/angle/patches/0005-ANGLE-Add-support-for-querying-platform-device.patch84
-rw-r--r--src/angle/patches/0009-ANGLE-Support-WinRT.patch837
-rw-r--r--src/angle/patches/0010-ANGLE-Enable-D3D11-for-feature-level-9-cards.patch637
-rw-r--r--src/angle/patches/0012-ANGLE-fix-semantic-index-lookup.patch48
-rw-r--r--src/angle/patches/0013-ANGLE-Add-support-for-querying-platform-device.patch100
-rw-r--r--src/angle/patches/0014-Let-ANGLE-use-multithreaded-devices-if-necessary.patch69
-rw-r--r--src/angle/patches/0015-ANGLE-Fix-angle-d3d11-on-MSVC2010.patch536
-rw-r--r--src/angle/patches/0016-ANGLE-Fix-compilation-with-MinGW-D3D11.patch169
-rw-r--r--src/angle/patches/0017-ANGLE-Fix-compilation-with-D3D9.patch62
-rw-r--r--src/angle/patches/0018-ANGLE-Fix-releasing-textures-after-we-kill-D3D11.patch106
-rw-r--r--src/angle/patches/0019-ANGLE-Fix-handling-of-shader-source-with-fixed-lengt.patch37
-rw-r--r--src/angle/patches/0020-ANGLE-Do-not-use-std-strlen.patch30
-rw-r--r--src/angle/patches/0020-ANGLE-Fix-compilation-with-MSVC2013-Update4.patch43
-rw-r--r--src/angle/src/common/common.pri18
-rw-r--r--src/angle/src/compiler/preprocessor/preprocessor.pro2
-rw-r--r--src/angle/src/compiler/translator.pro39
-rw-r--r--src/angle/src/config.pri5
-rw-r--r--src/angle/src/libEGL/libEGL.pro35
-rw-r--r--src/angle/src/libGLESv2/libGLESv2.pro760
25 files changed, 2352 insertions, 3613 deletions
diff --git a/src/angle/patches/0000-General-fixes-for-ANGLE-2.1.patch b/src/angle/patches/0000-General-fixes-for-ANGLE-2.1.patch
deleted file mode 100644
index ad3187ec7c..0000000000
--- a/src/angle/patches/0000-General-fixes-for-ANGLE-2.1.patch
+++ /dev/null
@@ -1,477 +0,0 @@
-From bd27c33a4a7c48bd14b9b6c18c8cdce1c3aae155 Mon Sep 17 00:00:00 2001
-From: Andrew Knight <andrew.knight@theqtcompany.com>
-Date: Fri, 14 Nov 2014 10:53:40 +0200
-Subject: [PATCH] General fixes for ANGLE 2.1
-
-- Fix commit.h include (use hard-coded version)
-- Fix export mismatch in libEGL.cpp and libGLESv2.cpp
-- Normalize all precompiled shader names and includes
-- Remove third-party event tracing; it was hardly used in ANGLE
- and not enabled in Qt builds anyway.
-
-Change-Id: I22254aed62e89a26756ca0784bae95909189c0f9
----
- src/3rdparty/angle/src/commit.h | 6 +-
- src/3rdparty/angle/src/common/version.h | 2 +-
- .../src/common/winrt/CoreWindowNativeWindow.cpp | 2 +-
- src/3rdparty/angle/src/libEGL/libEGL.cpp | 3 +
- src/3rdparty/angle/src/libGLESv2/libGLESv2.cpp | 4 ++
- src/3rdparty/angle/src/libGLESv2/libGLESv2.def | 3 -
- .../src/libGLESv2/renderer/d3d/HLSLCompiler.cpp | 3 -
- .../src/libGLESv2/renderer/d3d/d3d11/Blit11.cpp | 66 +++++++++++-----------
- .../src/libGLESv2/renderer/d3d/d3d11/Clear11.cpp | 12 ++--
- .../renderer/d3d/d3d11/PixelTransfer11.cpp | 10 ++--
- .../libGLESv2/renderer/d3d/d3d11/SwapChain11.cpp | 4 +-
- .../renderer/d3d/d3d11/shaders/Clear11.hlsl | 4 ++
- .../src/libGLESv2/renderer/d3d/d3d9/Blit9.cpp | 20 +++----
- .../src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp | 12 ----
- .../libGLESv2/renderer/d3d/d3d9/shaders/Blit.ps | 6 +-
- .../libGLESv2/renderer/d3d/d3d9/shaders/Blit.vs | 4 +-
- 16 files changed, 76 insertions(+), 85 deletions(-)
-
-diff --git a/src/3rdparty/angle/src/commit.h b/src/3rdparty/angle/src/commit.h
-index 4c89a65..08fc893 100644
---- a/src/3rdparty/angle/src/commit.h
-+++ b/src/3rdparty/angle/src/commit.h
-@@ -7,8 +7,6 @@
- // This is a default commit hash header, when git is not available.
- //
-
--#define ANGLE_COMMIT_HASH "unknown hash"
-+#define ANGLE_COMMIT_HASH "30d6c255d238"
- #define ANGLE_COMMIT_HASH_SIZE 12
--#define ANGLE_COMMIT_DATE "unknown date"
--
--#define ANGLE_DISABLE_PROGRAM_BINARY_LOAD
-+#define ANGLE_COMMIT_DATE "2014-11-13 17:37:03 +0000"
-diff --git a/src/3rdparty/angle/src/common/version.h b/src/3rdparty/angle/src/common/version.h
-index d9148d1..f01e024 100644
---- a/src/3rdparty/angle/src/common/version.h
-+++ b/src/3rdparty/angle/src/common/version.h
-@@ -1,4 +1,4 @@
--#include "id/commit.h"
-+#include "../commit.h"
-
- #define ANGLE_MAJOR_VERSION 2
- #define ANGLE_MINOR_VERSION 1
-diff --git a/src/3rdparty/angle/src/common/winrt/CoreWindowNativeWindow.cpp b/src/3rdparty/angle/src/common/winrt/CoreWindowNativeWindow.cpp
-index 0de16f4..0e63fa5 100644
---- a/src/3rdparty/angle/src/common/winrt/CoreWindowNativeWindow.cpp
-+++ b/src/3rdparty/angle/src/common/winrt/CoreWindowNativeWindow.cpp
-@@ -184,4 +184,4 @@ long ConvertDipsToPixels(float dips)
- static const float dipsPerInch = 96.0f;
- return lround((dips * GetLogicalDpi() / dipsPerInch));
- }
--}
-\ No newline at end of file
-+}
-diff --git a/src/3rdparty/angle/src/libEGL/libEGL.cpp b/src/3rdparty/angle/src/libEGL/libEGL.cpp
-index 851b723..6110698 100644
---- a/src/3rdparty/angle/src/libEGL/libEGL.cpp
-+++ b/src/3rdparty/angle/src/libEGL/libEGL.cpp
-@@ -6,6 +6,9 @@
-
- // libEGL.cpp: Implements the exported EGL functions.
-
-+#undef EGLAPI
-+#define EGLAPI
-+
- #include <exception>
-
- #include "common/debug.h"
-diff --git a/src/3rdparty/angle/src/libGLESv2/libGLESv2.cpp b/src/3rdparty/angle/src/libGLESv2/libGLESv2.cpp
-index 2306168..587950a 100644
---- a/src/3rdparty/angle/src/libGLESv2/libGLESv2.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/libGLESv2.cpp
-@@ -6,6 +6,10 @@
-
- // libGLESv2.cpp: Implements the exported OpenGL ES 2.0 functions.
-
-+#undef GL_APICALL
-+#define GL_APICALL
-+#define GL_GLEXT_PROTOTYPES
-+
- #include "common/version.h"
- #include "common/utilities.h"
-
-diff --git a/src/3rdparty/angle/src/libGLESv2/libGLESv2.def b/src/3rdparty/angle/src/libGLESv2/libGLESv2.def
-index 88dceb3..33557eb 100644
---- a/src/3rdparty/angle/src/libGLESv2/libGLESv2.def
-+++ b/src/3rdparty/angle/src/libGLESv2/libGLESv2.def
-@@ -294,6 +294,3 @@ EXPORTS
- glBindTexImage @158 NONAME
- glCreateRenderer @177 NONAME
- glDestroyRenderer @178 NONAME
--
-- ; Setting up TRACE macro callbacks
-- SetTraceFunctionPointers @284
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/HLSLCompiler.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/HLSLCompiler.cpp
-index 5c44fe0..bfeaf51 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/HLSLCompiler.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/HLSLCompiler.cpp
-@@ -11,8 +11,6 @@
- #include "common/features.h"
- #include "common/utilities.h"
-
--#include "third_party/trace_event/trace_event.h"
--
- // Definitions local to the translation unit
- namespace
- {
-@@ -120,7 +118,6 @@ HLSLCompiler::~HLSLCompiler()
-
- bool HLSLCompiler::initialize()
- {
-- TRACE_EVENT0("gpu", "initializeCompiler");
- #if !defined(ANGLE_ENABLE_WINDOWS_STORE)
- #if defined(ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES)
- // Find a D3DCompiler module that had already been loaded based on a predefined list of versions.
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Blit11.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Blit11.cpp
-index 8ed1650..91e7552 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Blit11.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Blit11.cpp
-@@ -13,39 +13,39 @@
- #include "libGLESv2/main.h"
- #include "libGLESv2/formatutils.h"
-
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthrough2d11vs.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughdepth2d11ps.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrgba2d11ps.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrgba2dui11ps.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrgba2di11ps.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrgb2d11ps.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrgb2dui11ps.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrgb2di11ps.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrg2d11ps.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrg2dui11ps.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrg2di11ps.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughr2d11ps.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughr2dui11ps.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughr2di11ps.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughlum2d11ps.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughlumalpha2d11ps.h"
--
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthrough3d11vs.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthrough3d11gs.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrgba3d11ps.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrgba3dui11ps.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrgba3di11ps.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrgb3d11ps.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrgb3dui11ps.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrgb3di11ps.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrg3d11ps.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrg3dui11ps.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrg3di11ps.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughr3d11ps.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughr3dui11ps.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughr3di11ps.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughlum3d11ps.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughlumalpha3d11ps.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthrough2dvs.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughdepth2dps.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrgba2dps.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrgba2duips.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrgba2dips.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrgb2dps.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrgb2duips.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrgb2dips.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrg2dps.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrg2duips.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrg2dips.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughr2dps.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughr2duips.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughr2dips.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughlum2dps.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughlumalpha2dps.h"
-+
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthrough3dvs.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthrough3dgs.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrgba3dps.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrgba3duips.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrgba3dips.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrgb3dps.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrgb3duips.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrgb3dips.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrg3dps.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrg3duips.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrg3dips.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughr3dps.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughr3duips.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughr3dips.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughlum3dps.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughlumalpha3dps.h"
-
- #include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/swizzlef2dps.h"
- #include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/swizzlei2dps.h"
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Clear11.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Clear11.cpp
-index 12905d0..4630762 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Clear11.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Clear11.cpp
-@@ -15,14 +15,14 @@
- #include "libGLESv2/FramebufferAttachment.h"
-
- // Precompiled shaders
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/clearfloat11vs.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/clearfloat11ps.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/clearfloatvs.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/clearfloatps.h"
-
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/clearuint11vs.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/clearuint11ps.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/clearuintvs.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/clearuintps.h"
-
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/clearsint11vs.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/clearsint11ps.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/clearsintvs.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/clearsintps.h"
-
- namespace rx
- {
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/PixelTransfer11.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/PixelTransfer11.cpp
-index 1bc2bd8..a4072d8 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/PixelTransfer11.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/PixelTransfer11.cpp
-@@ -22,11 +22,11 @@
- #include "libGLESv2/Context.h"
-
- // Precompiled shaders
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/buffertotexture11_vs.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/buffertotexture11_gs.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/buffertotexture11_ps_4f.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/buffertotexture11_ps_4i.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/buffertotexture11_ps_4ui.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/buffertotexturevs.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/buffertotexturegs.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/buffertotexture_4fps.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/buffertotexture_4ips.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/buffertotexture_4uips.h"
-
- namespace rx
- {
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/SwapChain11.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/SwapChain11.cpp
-index 3fcacf6..834b7bd 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/SwapChain11.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/SwapChain11.cpp
-@@ -12,8 +12,8 @@
- #include "libGLESv2/renderer/d3d/d3d11/Renderer11.h"
-
- // Precompiled shaders
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthrough2d11vs.h"
--#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrgba2d11ps.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthrough2dvs.h"
-+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrgba2dps.h"
-
- #include "common/features.h"
- #include "common/NativeWindow.h"
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/shaders/Clear11.hlsl b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/shaders/Clear11.hlsl
-index 6deef2b..b4cf380 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/shaders/Clear11.hlsl
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/shaders/Clear11.hlsl
-@@ -13,10 +13,12 @@ struct PS_OutputFloat
- float4 color1 : SV_TARGET1;
- float4 color2 : SV_TARGET2;
- float4 color3 : SV_TARGET3;
-+#if SM4
- float4 color4 : SV_TARGET4;
- float4 color5 : SV_TARGET5;
- float4 color6 : SV_TARGET6;
- float4 color7 : SV_TARGET7;
-+#endif
- };
-
- PS_OutputFloat PS_ClearFloat(in float4 inPosition : SV_POSITION, in float4 inColor : COLOR)
-@@ -26,10 +28,12 @@ PS_OutputFloat PS_ClearFloat(in float4 inPosition : SV_POSITION, in float4 inCol
- outColor.color1 = inColor;
- outColor.color2 = inColor;
- outColor.color3 = inColor;
-+#if SM4
- outColor.color4 = inColor;
- outColor.color5 = inColor;
- outColor.color6 = inColor;
- outColor.color7 = inColor;
-+#endif
- return outColor;
- }
-
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Blit9.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Blit9.cpp
-index d4fcd17..2ca7a9c 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Blit9.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Blit9.cpp
-@@ -27,20 +27,20 @@ namespace
-
- const BYTE* const g_shaderCode[] =
- {
-- g_vs20_standardvs,
-- g_vs20_flipyvs,
-- g_ps20_passthroughps,
-- g_ps20_luminanceps,
-- g_ps20_componentmaskps
-+ g_vs20_VS_standard,
-+ g_vs20_VS_flipy,
-+ g_ps20_PS_passthrough,
-+ g_ps20_PS_luminance,
-+ g_ps20_PS_componentmask
- };
-
- const size_t g_shaderSize[] =
- {
-- sizeof(g_vs20_standardvs),
-- sizeof(g_vs20_flipyvs),
-- sizeof(g_ps20_passthroughps),
-- sizeof(g_ps20_luminanceps),
-- sizeof(g_ps20_componentmaskps)
-+ sizeof(g_vs20_VS_standard),
-+ sizeof(g_vs20_VS_flipy),
-+ sizeof(g_ps20_PS_passthrough),
-+ sizeof(g_ps20_PS_luminance),
-+ sizeof(g_ps20_PS_componentmask)
- };
- }
-
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp
-index 3bac4ba..82963ec 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp
-@@ -42,8 +42,6 @@
- #include "common/features.h"
- #include "common/utilities.h"
-
--#include "third_party/trace_event/trace_event.h"
--
- #include <sstream>
-
- // Can also be enabled by defining FORCE_REF_RAST in the project's predefined macros
-@@ -185,7 +183,6 @@ EGLint Renderer9::initialize()
- return EGL_NOT_INITIALIZED;
- }
-
-- TRACE_EVENT0("gpu", "GetModuleHandle_d3d9");
- mD3d9Module = GetModuleHandle(TEXT("d3d9.dll"));
-
- if (mD3d9Module == NULL)
-@@ -202,14 +199,12 @@ EGLint Renderer9::initialize()
- // desktop. Direct3D9Ex is available in Windows Vista and later if suitable drivers are available.
- if (ANGLE_D3D9EX == ANGLE_ENABLED && Direct3DCreate9ExPtr && SUCCEEDED(Direct3DCreate9ExPtr(D3D_SDK_VERSION, &mD3d9Ex)))
- {
-- TRACE_EVENT0("gpu", "D3d9Ex_QueryInterface");
- ASSERT(mD3d9Ex);
- mD3d9Ex->QueryInterface(__uuidof(IDirect3D9), reinterpret_cast<void**>(&mD3d9));
- ASSERT(mD3d9);
- }
- else
- {
-- TRACE_EVENT0("gpu", "Direct3DCreate9");
- mD3d9 = Direct3DCreate9(D3D_SDK_VERSION);
- }
-
-@@ -228,7 +223,6 @@ EGLint Renderer9::initialize()
-
- // Give up on getting device caps after about one second.
- {
-- TRACE_EVENT0("gpu", "GetDeviceCaps");
- for (int i = 0; i < 10; ++i)
- {
- result = mD3d9->GetDeviceCaps(mAdapter, mDeviceType, &mDeviceCaps);
-@@ -263,7 +257,6 @@ EGLint Renderer9::initialize()
- }
-
- {
-- TRACE_EVENT0("gpu", "GetAdapterIdentifier");
- mD3d9->GetAdapterIdentifier(mAdapter, 0, &mAdapterIdentifier);
- }
-
-@@ -300,7 +293,6 @@ EGLint Renderer9::initialize()
- static const TCHAR className[] = TEXT("STATIC");
-
- {
-- TRACE_EVENT0("gpu", "CreateWindowEx");
- mDeviceWindow = CreateWindowEx(WS_EX_NOACTIVATE, className, windowName, WS_DISABLED | WS_POPUP, 0, 0, 1, 1, HWND_MESSAGE, NULL, GetModuleHandle(NULL), NULL);
- }
-
-@@ -308,7 +300,6 @@ EGLint Renderer9::initialize()
- DWORD behaviorFlags = D3DCREATE_FPU_PRESERVE | D3DCREATE_NOWINDOWCHANGES;
-
- {
-- TRACE_EVENT0("gpu", "D3d9_CreateDevice");
- result = mD3d9->CreateDevice(mAdapter, mDeviceType, mDeviceWindow, behaviorFlags | D3DCREATE_HARDWARE_VERTEXPROCESSING | D3DCREATE_PUREDEVICE, &presentParameters, &mDevice);
- }
- if (result == D3DERR_OUTOFVIDEOMEMORY || result == E_OUTOFMEMORY || result == D3DERR_DEVICELOST)
-@@ -318,7 +309,6 @@ EGLint Renderer9::initialize()
-
- if (FAILED(result))
- {
-- TRACE_EVENT0("gpu", "D3d9_CreateDevice2");
- result = mD3d9->CreateDevice(mAdapter, mDeviceType, mDeviceWindow, behaviorFlags | D3DCREATE_SOFTWARE_VERTEXPROCESSING, &presentParameters, &mDevice);
-
- if (FAILED(result))
-@@ -330,13 +320,11 @@ EGLint Renderer9::initialize()
-
- if (mD3d9Ex)
- {
-- TRACE_EVENT0("gpu", "mDevice_QueryInterface");
- result = mDevice->QueryInterface(__uuidof(IDirect3DDevice9Ex), (void**)&mDeviceEx);
- ASSERT(SUCCEEDED(result));
- }
-
- {
-- TRACE_EVENT0("gpu", "ShaderCache initialize");
- mVertexShaderCache.initialize(mDevice);
- mPixelShaderCache.initialize(mDevice);
- }
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/shaders/Blit.ps b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/shaders/Blit.ps
-index dc357d0..eb43eb3 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/shaders/Blit.ps
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/shaders/Blit.ps
-@@ -11,7 +11,7 @@ uniform float4 add : c1;
-
- // Passthrough Pixel Shader
- // Outputs texture 0 sampled at texcoord 0.
--float4 passthroughps(float4 texcoord : TEXCOORD0) : COLOR
-+float4 PS_passthrough(float4 texcoord : TEXCOORD0) : COLOR
- {
- return tex2D(tex, texcoord.xy);
- };
-@@ -19,7 +19,7 @@ float4 passthroughps(float4 texcoord : TEXCOORD0) : COLOR
- // Luminance Conversion Pixel Shader
- // Performs a mad operation using the LA data from the texture with mult.xw and add.xw.
- // Returns data in the form of llla
--float4 luminanceps(float4 texcoord : TEXCOORD0) : COLOR
-+float4 PS_luminance(float4 texcoord : TEXCOORD0) : COLOR
- {
- return (tex2D(tex, texcoord.xy).xw * mult.xw + add.xw).xxxy;
- };
-@@ -27,7 +27,7 @@ float4 luminanceps(float4 texcoord : TEXCOORD0) : COLOR
- // RGB/A Component Mask Pixel Shader
- // Performs a mad operation using the texture's RGBA data with mult.xyzw and add.xyzw.
- // Returns data in the form of rgba
--float4 componentmaskps(float4 texcoord : TEXCOORD0) : COLOR
-+float4 PS_componentmask(float4 texcoord : TEXCOORD0) : COLOR
- {
- return tex2D(tex, texcoord.xy) * mult + add;
- };
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/shaders/Blit.vs b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/shaders/Blit.vs
-index 3a36980..3bd611b 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/shaders/Blit.vs
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/shaders/Blit.vs
-@@ -17,7 +17,7 @@ uniform float4 halfPixelSize : c0;
- // Outputs the homogenous position as-is.
- // Outputs a tex coord with (0,0) in the upper-left corner of the screen and (1,1) in the bottom right.
- // C0.X must be negative half-pixel width, C0.Y must be half-pixel height. C0.ZW must be 0.
--VS_OUTPUT standardvs(in float4 position : POSITION)
-+VS_OUTPUT VS_standard(in float4 position : POSITION)
- {
- VS_OUTPUT Out;
-
-@@ -32,7 +32,7 @@ VS_OUTPUT standardvs(in float4 position : POSITION)
- // Outputs the homogenous position as-is.
- // Outputs a tex coord with (0,1) in the upper-left corner of the screen and (1,0) in the bottom right.
- // C0.XY must be the half-pixel width and height. C0.ZW must be 0.
--VS_OUTPUT flipyvs(in float4 position : POSITION)
-+VS_OUTPUT VS_flipy(in float4 position : POSITION)
- {
- VS_OUTPUT Out;
-
---
-1.9.4.msysgit.1
-
diff --git a/src/angle/patches/0001-ANGLE-Improve-Windows-Phone-Support.patch b/src/angle/patches/0001-ANGLE-Improve-Windows-Phone-Support.patch
new file mode 100644
index 0000000000..1361b8b656
--- /dev/null
+++ b/src/angle/patches/0001-ANGLE-Improve-Windows-Phone-Support.patch
@@ -0,0 +1,439 @@
+From ed09eff731b5d286e0bf6a5958b937a50ecc2362 Mon Sep 17 00:00:00 2001
+From: Andrew Knight <andrew.knight@intopalo.com>
+Date: Tue, 7 Apr 2015 13:24:59 +0300
+Subject: [PATCH 1/5] ANGLE: Improve Windows Phone Support
+
+This contains compile fixes for Windows Phone as well as improved
+orientation handling.
+
+Change-Id: Ia312b5318b977838a2953f1f530487cbf24974bc
+---
+ src/3rdparty/angle/src/common/platform.h | 2 ++
+ .../renderer/d3d/d3d11/DebugAnnotator11.cpp | 2 +-
+ .../src/libANGLE/renderer/d3d/d3d11/NativeWindow.h | 4 +++
+ .../src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp | 8 +++--
+ .../libANGLE/renderer/d3d/d3d11/SwapChain11.cpp | 40 ++++++++++++++++++++++
+ .../d3d/d3d11/winrt/CoreWindowNativeWindow.cpp | 31 +++++++++++++++--
+ .../d3d/d3d11/winrt/CoreWindowNativeWindow.h | 34 +++++++++++++++++-
+ .../d3d/d3d11/winrt/InspectableNativeWindow.cpp | 12 +++++++
+ .../d3d/d3d11/winrt/InspectableNativeWindow.h | 14 +++++++-
+ src/3rdparty/angle/src/libANGLE/validationEGL.cpp | 4 ++-
+ 10 files changed, 142 insertions(+), 9 deletions(-)
+
+diff --git a/src/3rdparty/angle/src/common/platform.h b/src/3rdparty/angle/src/common/platform.h
+index 56db297..4e3851c 100644
+--- a/src/3rdparty/angle/src/common/platform.h
++++ b/src/3rdparty/angle/src/common/platform.h
+@@ -68,7 +68,9 @@
+ # if defined(ANGLE_ENABLE_WINDOWS_STORE)
+ # include <dxgi1_3.h>
+ # if defined(_DEBUG)
++# if WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP
+ # include <DXProgrammableCapture.h>
++# endif
+ # include <dxgidebug.h>
+ # endif
+ # endif
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp
+index bc7cdcc..fcca904 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp
+@@ -60,7 +60,7 @@ bool DebugAnnotator11::getStatus()
+ {
+ // ID3DUserDefinedAnnotation::GetStatus doesn't work with the Graphics Diagnostics tools in Visual Studio 2013.
+
+-#if defined(_DEBUG) && defined(ANGLE_ENABLE_WINDOWS_STORE)
++#if defined(_DEBUG) && defined(ANGLE_ENABLE_WINDOWS_STORE) && (WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP)
+ // In the Windows Store, we can use IDXGraphicsAnalysis. The call to GetDebugInterface1 only succeeds if the app is under capture.
+ // This should only be called in DEBUG mode.
+ // If an app links against DXGIGetDebugInterface1 in release mode then it will fail Windows Store ingestion checks.
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/NativeWindow.h b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/NativeWindow.h
+index ce50c32..81b9ea7 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/NativeWindow.h
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/NativeWindow.h
+@@ -49,11 +49,15 @@ namespace rx
+ class NativeWindow
+ {
+ public:
++ enum RotationFlags { RotateNone = 0, RotateLeft = 1, RotateRight = 2 };
+ explicit NativeWindow(EGLNativeWindowType window);
+
+ bool initialize();
+ bool getClientRect(LPRECT rect);
+ bool isIconic();
++#if defined(ANGLE_ENABLE_WINDOWS_STORE) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
++ RotationFlags rotationFlags() const;
++#endif
+ static bool isValidNativeWindow(EGLNativeWindowType window);
+
+ HRESULT createSwapChain(ID3D11Device* device, DXGIFactory* factory,
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
+index eba40a4..dbed23f 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
+@@ -230,7 +230,11 @@ Renderer11::Renderer11(egl::Display *display)
+ }
+ }
+
++#if defined(ANGLE_ENABLE_WINDOWS_STORE)
++ if (requestedMajorVersion == EGL_DONT_CARE || requestedMajorVersion >= 9)
++#else
+ if (requestedMajorVersion == 9 && requestedMinorVersion == 3)
++#endif
+ {
+ mAvailableFeatureLevels.push_back(D3D_FEATURE_LEVEL_9_3);
+ }
+@@ -587,10 +591,10 @@ egl::ConfigSet Renderer11::generateConfigs() const
+ config.bindToTextureRGB = (colorBufferFormatInfo.format == GL_RGB);
+ config.bindToTextureRGBA = (colorBufferFormatInfo.format == GL_RGBA || colorBufferFormatInfo.format == GL_BGRA_EXT);
+ config.colorBufferType = EGL_RGB_BUFFER;
+- config.configCaveat = EGL_NONE;
+ config.configID = static_cast<EGLint>(configs.size() + 1);
+ // Can only support a conformant ES2 with feature level greater than 10.0.
+ config.conformant = (mFeatureLevel >= D3D_FEATURE_LEVEL_10_0) ? (EGL_OPENGL_ES2_BIT | EGL_OPENGL_ES3_BIT_KHR) : EGL_NONE;
++ config.configCaveat = config.conformant == EGL_NONE ? EGL_NON_CONFORMANT_CONFIG : EGL_NONE;
+ config.depthSize = depthStencilBufferFormatInfo.depthBits;
+ config.level = 0;
+ config.matchNativePixmap = EGL_NONE;
+@@ -2290,7 +2294,7 @@ bool Renderer11::getShareHandleSupport() const
+ // chrome needs BGRA. Once chrome fixes this, we should always support them.
+ // PIX doesn't seem to support using share handles, so disable them.
+ // Also disable share handles on Feature Level 9_3, since it doesn't support share handles on RGBA8 textures/swapchains.
+- return getRendererExtensions().textureFormatBGRA8888 && !gl::DebugAnnotationsActive() && !(mFeatureLevel <= D3D_FEATURE_LEVEL_9_3);
++ return getRendererExtensions().textureFormatBGRA8888 && !gl::DebugAnnotationsActive();// && !(mFeatureLevel <= D3D_FEATURE_LEVEL_9_3); Qt: we don't care about the 9_3 limitation
+ }
+
+ bool Renderer11::getPostSubBufferSupport() const
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp
+index 2558528..bcb2505 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp
+@@ -154,8 +154,14 @@ EGLint SwapChain11::resetOffscreenTexture(int backbufferWidth, int backbufferHei
+ const bool useSharedResource = !mNativeWindow.getNativeWindow() && mRenderer->getShareHandleSupport();
+
+ D3D11_TEXTURE2D_DESC offscreenTextureDesc = {0};
++#if defined(ANGLE_ENABLE_WINDOWS_STORE) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
++ const int textureLength = std::max(backbufferWidth, backbufferHeight);
++ offscreenTextureDesc.Width = textureLength;
++ offscreenTextureDesc.Height = textureLength;
++#else
+ offscreenTextureDesc.Width = backbufferWidth;
+ offscreenTextureDesc.Height = backbufferHeight;
++#endif
+ offscreenTextureDesc.Format = backbufferFormatInfo.texFormat;
+ offscreenTextureDesc.MipLevels = 1;
+ offscreenTextureDesc.ArraySize = 1;
+@@ -235,8 +241,14 @@ EGLint SwapChain11::resetOffscreenTexture(int backbufferWidth, int backbufferHei
+ if (mDepthBufferFormat != GL_NONE)
+ {
+ D3D11_TEXTURE2D_DESC depthStencilTextureDesc;
++#if defined(ANGLE_ENABLE_WINDOWS_STORE) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
++ const int textureLength = std::max(backbufferWidth, backbufferHeight);
++ depthStencilTextureDesc.Width = textureLength;
++ depthStencilTextureDesc.Height = textureLength;
++#else
+ depthStencilTextureDesc.Width = backbufferWidth;
+ depthStencilTextureDesc.Height = backbufferHeight;
++#endif
+ depthStencilTextureDesc.Format = depthBufferFormatInfo.texFormat;
+ depthStencilTextureDesc.MipLevels = 1;
+ depthStencilTextureDesc.ArraySize = 1;
+@@ -337,6 +349,7 @@ EGLint SwapChain11::resize(EGLint backbufferWidth, EGLint backbufferHeight)
+ return EGL_SUCCESS;
+ }
+
++#if !defined(ANGLE_ENABLE_WINDOWS_STORE) || (WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP)
+ // Can only call resize if we have already created our swap buffer and resources
+ ASSERT(mSwapChain && mBackBufferTexture && mBackBufferRTView);
+
+@@ -379,6 +392,12 @@ EGLint SwapChain11::resize(EGLint backbufferWidth, EGLint backbufferHeight)
+ }
+
+ return resetOffscreenTexture(backbufferWidth, backbufferHeight);
++#else
++ // Do nothing on Windows Phone apart from updating the internal buffer/width height
++ mWidth = backbufferWidth;
++ mHeight = backbufferHeight;
++ return EGL_SUCCESS;
++#endif
+ }
+
+ EGLint SwapChain11::reset(int backbufferWidth, int backbufferHeight, EGLint swapInterval)
+@@ -539,6 +558,21 @@ EGLint SwapChain11::swapRect(EGLint x, EGLint y, EGLint width, EGLint height)
+ float x2 = ((x + width) / float(mWidth)) * 2.0f - 1.0f;
+ float y2 = ((y + height) / float(mHeight)) * 2.0f - 1.0f;
+
++#if defined(ANGLE_ENABLE_WINDOWS_STORE) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
++ const float dim = std::max(mWidth, mHeight);
++ float u1 = x / dim;
++ float v1 = y / dim;
++ float u2 = (x + width) / dim;
++ float v2 = (y + height) / dim;
++
++ const NativeWindow::RotationFlags flags = mNativeWindow.rotationFlags();
++ const bool rotateL = flags == NativeWindow::RotateLeft;
++ const bool rotateR = flags == NativeWindow::RotateRight;
++ d3d11::SetPositionTexCoordVertex(&vertices[0], x1, y1, rotateL ? u2 : u1, rotateR ? v2 : v1);
++ d3d11::SetPositionTexCoordVertex(&vertices[1], x1, y2, rotateR ? u2 : u1, rotateL ? v1 : v2);
++ d3d11::SetPositionTexCoordVertex(&vertices[2], x2, y1, rotateR ? u1 : u2, rotateL ? v2 : v1);
++ d3d11::SetPositionTexCoordVertex(&vertices[3], x2, y2, rotateL ? u1 : u2, rotateR ? v1 : v2);
++#else
+ float u1 = x / float(mWidth);
+ float v1 = y / float(mHeight);
+ float u2 = (x + width) / float(mWidth);
+@@ -548,6 +582,7 @@ EGLint SwapChain11::swapRect(EGLint x, EGLint y, EGLint width, EGLint height)
+ d3d11::SetPositionTexCoordVertex(&vertices[1], x1, y2, u1, v2);
+ d3d11::SetPositionTexCoordVertex(&vertices[2], x2, y1, u2, v1);
+ d3d11::SetPositionTexCoordVertex(&vertices[3], x2, y2, u2, v2);
++#endif
+
+ deviceContext->Unmap(mQuadVB, 0);
+
+@@ -577,8 +612,13 @@ EGLint SwapChain11::swapRect(EGLint x, EGLint y, EGLint width, EGLint height)
+ D3D11_VIEWPORT viewport;
+ viewport.TopLeftX = 0;
+ viewport.TopLeftY = 0;
++#if defined(ANGLE_ENABLE_WINDOWS_STORE) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
++ viewport.Width = (rotateL || rotateR) ? mHeight : mWidth;
++ viewport.Height = (rotateL || rotateR) ? mWidth : mHeight;
++#else
+ viewport.Width = mWidth;
+ viewport.Height = mHeight;
++#endif
+ viewport.MinDepth = 0.0f;
+ viewport.MaxDepth = 1.0f;
+ deviceContext->RSSetViewports(1, &viewport);
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp
+index 8cfaa84..350526c 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp
+@@ -8,8 +8,6 @@
+
+ #include "libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h"
+
+-#include <windows.graphics.display.h>
+-
+ using namespace ABI::Windows::Foundation::Collections;
+
+ namespace rx
+@@ -21,6 +19,7 @@ CoreWindowNativeWindow::~CoreWindowNativeWindow()
+
+ bool CoreWindowNativeWindow::initialize(EGLNativeWindowType window, IPropertySet *propertySet)
+ {
++ mOrientationChangedEventToken.value = 0;
+ ComPtr<IPropertySet> props = propertySet;
+ ComPtr<IInspectable> win = window;
+ SIZE swapChainSize = {};
+@@ -68,6 +67,16 @@ bool CoreWindowNativeWindow::initialize(EGLNativeWindowType window, IPropertySet
+
+ if (SUCCEEDED(result))
+ {
++ ComPtr<ABI::Windows::Graphics::Display::IDisplayInformationStatics> displayInformation;
++ result = GetActivationFactory(HStringReference(RuntimeClass_Windows_Graphics_Display_DisplayInformation).Get(), &displayInformation);
++ if (SUCCEEDED(result))
++ {
++ result = displayInformation->GetForCurrentView(&mDisplayInformation);
++ }
++ }
++
++ if (SUCCEEDED(result))
++ {
+ mNewClientRect = mClientRect;
+ mClientRectChanged = false;
+ return registerForSizeChangeEvents();
+@@ -85,6 +94,15 @@ bool CoreWindowNativeWindow::registerForSizeChangeEvents()
+ result = mCoreWindow->add_SizeChanged(sizeChangedHandler.Get(), &mSizeChangedEventToken);
+ }
+
++#if defined(ANGLE_ENABLE_WINDOWS_STORE) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
++ ComPtr<IDisplayOrientationEventHandler> orientationChangedHandler;
++ result = sizeChangedHandler.As(&orientationChangedHandler);
++ if (SUCCEEDED(result))
++ {
++ result = mDisplayInformation->add_OrientationChanged(orientationChangedHandler.Get(), &mOrientationChangedEventToken);
++ }
++#endif
++
+ if (SUCCEEDED(result))
+ {
+ return true;
+@@ -99,7 +117,14 @@ void CoreWindowNativeWindow::unregisterForSizeChangeEvents()
+ {
+ (void)mCoreWindow->remove_SizeChanged(mSizeChangedEventToken);
+ }
++#if defined(ANGLE_ENABLE_WINDOWS_STORE) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
++ if (mDisplayInformation)
++ {
++ (void)mDisplayInformation->remove_OrientationChanged(mOrientationChangedEventToken);
++ }
++#endif
+ mSizeChangedEventToken.value = 0;
++ mOrientationChangedEventToken.value = 0;
+ }
+
+ HRESULT CoreWindowNativeWindow::createSwapChain(ID3D11Device *device, DXGIFactory *factory, DXGI_FORMAT format, unsigned int width, unsigned int height, DXGISwapChain **swapChain)
+@@ -128,7 +153,7 @@ HRESULT CoreWindowNativeWindow::createSwapChain(ID3D11Device *device, DXGIFactor
+ if (SUCCEEDED(result))
+ {
+
+-#if (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
++#if 0 //(WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) // Qt: allow Windows Phone to resize, but don't modify the backing texture in the swap chain.
+ // Test if swapchain supports resize. On Windows Phone devices, this will return DXGI_ERROR_UNSUPPORTED. On
+ // other devices DXGI_ERROR_INVALID_CALL should be returned because the combination of flags passed
+ // (DXGI_SWAP_CHAIN_FLAG_NONPREROTATED | DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE) are invalid flag combinations.
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h
+index c230c84..59df9d5 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h
+@@ -12,8 +12,10 @@
+ #include "libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h"
+
+ #include <memory>
++#include <windows.graphics.display.h>
+
+ typedef ABI::Windows::Foundation::__FITypedEventHandler_2_Windows__CUI__CCore__CCoreWindow_Windows__CUI__CCore__CWindowSizeChangedEventArgs_t IWindowSizeChangedEventHandler;
++typedef ABI::Windows::Foundation::__FITypedEventHandler_2_Windows__CGraphics__CDisplay__CDisplayInformation_IInspectable_t IDisplayOrientationEventHandler;
+
+ namespace rx
+ {
+@@ -32,11 +34,13 @@ class CoreWindowNativeWindow : public InspectableNativeWindow, public std::enabl
+ private:
+ ComPtr<ABI::Windows::UI::Core::ICoreWindow> mCoreWindow;
+ ComPtr<IMap<HSTRING, IInspectable*>> mPropertyMap;
++ ComPtr<ABI::Windows::Graphics::Display::IDisplayInformation> mDisplayInformation;
++ EventRegistrationToken mOrientationChangedEventToken;
+ };
+
+ [uuid(7F924F66-EBAE-40E5-A10B-B8F35E245190)]
+ class CoreWindowSizeChangedHandler :
+- public Microsoft::WRL::RuntimeClass<Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::ClassicCom>, IWindowSizeChangedEventHandler>
++ public Microsoft::WRL::RuntimeClass<Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::ClassicCom>, IWindowSizeChangedEventHandler, IDisplayOrientationEventHandler>
+ {
+ public:
+ CoreWindowSizeChangedHandler() { }
+@@ -68,6 +72,34 @@ class CoreWindowSizeChangedHandler :
+ return S_OK;
+ }
+
++ IFACEMETHOD(Invoke)(ABI::Windows::Graphics::Display::IDisplayInformation *displayInformation, IInspectable *)
++ {
++#if defined(ANGLE_ENABLE_WINDOWS_STORE) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
++ NativeWindow::RotationFlags flags = NativeWindow::RotateNone;
++ ABI::Windows::Graphics::Display::DisplayOrientations orientation;
++ if (SUCCEEDED(displayInformation->get_CurrentOrientation(&orientation)))
++ {
++ switch (orientation)
++ {
++ case ABI::Windows::Graphics::Display::DisplayOrientations_Landscape:
++ flags = NativeWindow::RotateLeft;
++ break;
++ case ABI::Windows::Graphics::Display::DisplayOrientations_LandscapeFlipped:
++ flags = NativeWindow::RotateRight;
++ break;
++ default:
++ break;
++ }
++ }
++ std::shared_ptr<InspectableNativeWindow> host = mHost.lock();
++ if (host)
++ {
++ host->setRotationFlags(flags);
++ }
++#endif
++ return S_OK;
++ }
++
+ private:
+ std::weak_ptr<InspectableNativeWindow> mHost;
+ };
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.cpp
+index 7ac53c7..2bf48c5 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.cpp
+@@ -69,6 +69,18 @@ bool NativeWindow::getClientRect(RECT *rect)
+ return false;
+ }
+
++#if defined(ANGLE_ENABLE_WINDOWS_STORE) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
++NativeWindow::RotationFlags NativeWindow::rotationFlags() const
++{
++ if (mImpl)
++ {
++ return mImpl->rotationFlags();
++ }
++
++ return NativeWindow::RotateNone;
++}
++#endif
++
+ bool NativeWindow::isIconic()
+ {
+ return false;
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h
+index e89c900..575bdf8 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h
+@@ -34,7 +34,8 @@ class InspectableNativeWindow
+ mRequiresSwapChainScaling(false),
+ mClientRectChanged(false),
+ mClientRect({0,0,0,0}),
+- mNewClientRect({0,0,0,0})
++ mNewClientRect({0,0,0,0}),
++ mRotationFlags(NativeWindow::RotateNone)
+ {
+ mSizeChangedEventToken.value = 0;
+ }
+@@ -72,12 +73,23 @@ class InspectableNativeWindow
+ }
+ }
+
++ NativeWindow::RotationFlags rotationFlags() const
++ {
++ return mRotationFlags;
++ }
++
++ void setRotationFlags(NativeWindow::RotationFlags flags)
++ {
++ mRotationFlags = flags;
++ }
++
+ protected:
+ bool mSupportsSwapChainResize;
+ bool mRequiresSwapChainScaling;
+ RECT mClientRect;
+ RECT mNewClientRect;
+ bool mClientRectChanged;
++ NativeWindow::RotationFlags mRotationFlags;
+
+ EventRegistrationToken mSizeChangedEventToken;
+ };
+diff --git a/src/3rdparty/angle/src/libANGLE/validationEGL.cpp b/src/3rdparty/angle/src/libANGLE/validationEGL.cpp
+index 4e3b44b..12ee6a2 100644
+--- a/src/3rdparty/angle/src/libANGLE/validationEGL.cpp
++++ b/src/3rdparty/angle/src/libANGLE/validationEGL.cpp
+@@ -160,7 +160,7 @@ Error ValidateCreateContext(Display *display, Config *configuration, gl::Context
+ return Error(EGL_BAD_CONFIG);
+ }
+
+- if (clientMajorVersion == 3 && !(configuration->conformant & EGL_OPENGL_ES3_BIT_KHR))
++ if (clientMajorVersion == 3 && !(configuration->conformant & EGL_OPENGL_ES3_BIT_KHR) && !(configuration->configCaveat & EGL_NON_CONFORMANT_CONFIG))
+ {
+ return Error(EGL_BAD_CONFIG);
+ }
+@@ -488,11 +488,13 @@ Error ValidateCreatePbufferFromClientBuffer(Display *display, EGLenum buftype, E
+ return Error(EGL_BAD_ATTRIBUTE);
+ }
+
++#if !defined(ANGLE_ENABLE_WINDOWS_STORE) // On Windows Store, we know the originating texture came from D3D11, so bypass this check
+ const Caps &caps = display->getCaps();
+ if (textureFormat != EGL_NO_TEXTURE && !caps.textureNPOT && (!gl::isPow2(width) || !gl::isPow2(height)))
+ {
+ return Error(EGL_BAD_MATCH);
+ }
++#endif
+ }
+
+ return Error(EGL_SUCCESS);
+--
+2.1.4
+
diff --git a/src/angle/patches/0002-ANGLE-Fix-compilation-with-MinGW.patch b/src/angle/patches/0002-ANGLE-Fix-compilation-with-MinGW.patch
new file mode 100644
index 0000000000..e28bc797e3
--- /dev/null
+++ b/src/angle/patches/0002-ANGLE-Fix-compilation-with-MinGW.patch
@@ -0,0 +1,927 @@
+From 6f98a957829fd37106fb1f1c9f43a5bad626cdfc Mon Sep 17 00:00:00 2001
+From: Andrew Knight <andrew.knight@intopalo.com>
+Date: Wed, 25 Mar 2015 20:21:33 +0200
+Subject: [PATCH 2/5] ANGLE: Fix compilation with MinGW
+
+This adds definition guards for Direct3D 11 and DirectX SDK layers, which
+are only available in very recent versions (4.9.2 rev 4) of MinGW builds.
+It additionally adds a few missing includes needed for compilation.
+
+Change-Id: I254c208209c0071fae5efb6727f2b3cfd5542da6
+---
+ src/3rdparty/angle/src/common/mathutil.h | 4 +
+ src/3rdparty/angle/src/common/platform.h | 10 +-
+ src/3rdparty/angle/src/libANGLE/angletypes.h | 1 +
+ .../src/libANGLE/renderer/d3d/HLSLCompiler.cpp | 9 ++
+ .../src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp | 6 +
+ .../src/libANGLE/renderer/d3d/d3d11/Clear11.cpp | 4 +
+ .../renderer/d3d/d3d11/DebugAnnotator11.cpp | 10 ++
+ .../libANGLE/renderer/d3d/d3d11/DebugAnnotator11.h | 2 +
+ .../src/libANGLE/renderer/d3d/d3d11/Query11.cpp | 7 +
+ .../src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp | 83 +++++++++--
+ .../src/libANGLE/renderer/d3d/d3d11/Renderer11.h | 3 +-
+ .../renderer/d3d/d3d11/renderer11_utils.cpp | 152 +++++++++++++++++++++
+ .../src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp | 4 +-
+ 13 files changed, 283 insertions(+), 12 deletions(-)
+
+diff --git a/src/3rdparty/angle/src/common/mathutil.h b/src/3rdparty/angle/src/common/mathutil.h
+index e096b1a..1015bd2 100644
+--- a/src/3rdparty/angle/src/common/mathutil.h
++++ b/src/3rdparty/angle/src/common/mathutil.h
+@@ -119,6 +119,9 @@ inline bool supportsSSE2()
+ return supports;
+ }
+
++#if defined(__GNUC__)
++ supports = __builtin_cpu_supports("sse2");
++#else
+ int info[4];
+ __cpuid(info, 0);
+
+@@ -128,6 +131,7 @@ inline bool supportsSSE2()
+
+ supports = (info[3] >> 26) & 1;
+ }
++#endif
+
+ checked = true;
+
+diff --git a/src/3rdparty/angle/src/common/platform.h b/src/3rdparty/angle/src/common/platform.h
+index 4e3851c..be4cb94 100644
+--- a/src/3rdparty/angle/src/common/platform.h
++++ b/src/3rdparty/angle/src/common/platform.h
+@@ -59,9 +59,17 @@
+ # if defined(ANGLE_ENABLE_D3D11)
+ # include <d3d10_1.h>
+ # include <d3d11.h>
+-# include <d3d11_1.h>
+ # include <dxgi.h>
++# if defined(__MINGW32__) && !defined(__d3d11sdklayers_h__)
++# define ANGLE_MINGW32_COMPAT
++# endif
++# if defined(_MSC_VER) && _MSC_VER >= 1800
++# define ANGLE_ENABLE_D3D11_1
++# endif
++# if defined(ANGLE_ENABLE_D3D11_1)
++# include <d3d11_1.h>
+ # include <dxgi1_2.h>
++# endif
+ # include <d3dcompiler.h>
+ # endif
+
+diff --git a/src/3rdparty/angle/src/libANGLE/angletypes.h b/src/3rdparty/angle/src/libANGLE/angletypes.h
+index a5f471d..e4e08b5 100644
+--- a/src/3rdparty/angle/src/libANGLE/angletypes.h
++++ b/src/3rdparty/angle/src/libANGLE/angletypes.h
+@@ -13,6 +13,7 @@
+ #include "libANGLE/RefCountObject.h"
+
+ #include <stdint.h>
++#include <float.h>
+
+ namespace gl
+ {
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/HLSLCompiler.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/HLSLCompiler.cpp
+index d709dca..9c72d6f 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/HLSLCompiler.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/HLSLCompiler.cpp
+@@ -22,6 +22,15 @@ namespace
+
+ #define CREATE_COMPILER_FLAG_INFO(flag) { flag, #flag }
+
++#if defined(ANGLE_MINGW32_COMPAT)
++#ifndef D3DCOMPILE_RESERVED16
++#define D3DCOMPILE_RESERVED16 0x10000
++#endif
++#ifndef D3DCOMPILE_RESERVED17
++#define D3DCOMPILE_RESERVED17 0x20000
++#endif
++#endif
++
+ struct CompilerFlagInfo
+ {
+ UINT mFlag;
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp
+index 3b36c64..d56b0ea 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp
+@@ -12,6 +12,12 @@
+ #include "libANGLE/renderer/d3d/d3d11/Renderer11.h"
+ #include "libANGLE/renderer/d3d/d3d11/formatutils11.h"
+
++#if defined(ANGLE_MINGW32_COMPAT)
++typedef enum D3D11_MAP_FLAG {
++ D3D11_MAP_FLAG_DO_NOT_WAIT = 0x100000
++} D3D11_MAP_FLAG;
++#endif
++
+ namespace rx
+ {
+
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Clear11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Clear11.cpp
+index ae373f5..057c3be 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Clear11.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Clear11.cpp
+@@ -133,12 +133,14 @@ Clear11::Clear11(Renderer11 *renderer)
+ mIntClearShader = CreateClearShader(device, DXGI_FORMAT_R32G32B32A32_SINT, g_VS_ClearSint, g_PS_ClearSint );
+ }
+
++#if defined(ANGLE_ENABLE_D3D11_1)
+ if (renderer->getDeviceContext1IfSupported())
+ {
+ D3D11_FEATURE_DATA_D3D11_OPTIONS d3d11Options;
+ device->CheckFeatureSupport(D3D11_FEATURE_D3D11_OPTIONS, &d3d11Options, sizeof(D3D11_FEATURE_DATA_D3D11_OPTIONS));
+ mSupportsClearView = (d3d11Options.ClearView != FALSE);
+ }
++#endif
+ }
+
+ Clear11::~Clear11()
+@@ -321,6 +323,7 @@ gl::Error Clear11::clearFramebuffer(const ClearParameters &clearParams, const gl
+
+ if (needScissoredClear)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ // We shouldn't reach here if deviceContext1 is unavailable.
+ ASSERT(deviceContext1);
+
+@@ -331,6 +334,7 @@ gl::Error Clear11::clearFramebuffer(const ClearParameters &clearParams, const gl
+ rect.bottom = clearParams.scissor.y + clearParams.scissor.height;
+
+ deviceContext1->ClearView(framebufferRTV, clearValues, &rect, 1);
++#endif
+ }
+ else
+ {
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp
+index fcca904..f1fe2bb 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp
+@@ -27,7 +27,9 @@ DebugAnnotator11::~DebugAnnotator11()
+ {
+ if (mInitialized)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ SafeRelease(mUserDefinedAnnotation);
++#endif
+
+ #if !defined(ANGLE_ENABLE_WINDOWS_STORE)
+ FreeLibrary(mD3d11Module);
+@@ -39,21 +41,27 @@ void DebugAnnotator11::beginEvent(const std::wstring &eventName)
+ {
+ initializeDevice();
+
++#if defined(ANGLE_ENABLE_D3D11_1)
+ mUserDefinedAnnotation->BeginEvent(eventName.c_str());
++#endif
+ }
+
+ void DebugAnnotator11::endEvent()
+ {
+ initializeDevice();
+
++#if defined(ANGLE_ENABLE_D3D11_1)
+ mUserDefinedAnnotation->EndEvent();
++#endif
+ }
+
+ void DebugAnnotator11::setMarker(const std::wstring &markerName)
+ {
+ initializeDevice();
+
++#if defined(ANGLE_ENABLE_D3D11_1)
+ mUserDefinedAnnotation->SetMarker(markerName.c_str());
++#endif
+ }
+
+ bool DebugAnnotator11::getStatus()
+@@ -96,8 +104,10 @@ void DebugAnnotator11::initializeDevice()
+ hr = D3D11CreateDevice(NULL, D3D_DRIVER_TYPE_NULL, nullptr, 0, nullptr, 0, D3D11_SDK_VERSION, &device, nullptr, &context);
+ ASSERT(SUCCEEDED(hr));
+
++#if defined(ANGLE_ENABLE_D3D11_1)
+ mUserDefinedAnnotation = d3d11::DynamicCastComObject<ID3DUserDefinedAnnotation>(context);
+ ASSERT(mUserDefinedAnnotation != nullptr);
++#endif
+
+ SafeRelease(device);
+ SafeRelease(context);
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.h b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.h
+index 0638364..3df62b0 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.h
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.h
+@@ -11,6 +11,8 @@
+
+ #include "common/debug.h"
+
++struct ID3DUserDefinedAnnotation;
++
+ namespace rx
+ {
+
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Query11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Query11.cpp
+index e010190..4979ff5 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Query11.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Query11.cpp
+@@ -13,6 +13,13 @@
+
+ #include <GLES2/gl2ext.h>
+
++#if defined(ANGLE_MINGW32_COMPAT)
++typedef struct D3D11_QUERY_DATA_SO_STATISTICS {
++ UINT64 NumPrimitivesWritten;
++ UINT64 PrimitivesStorageNeeded;
++} D3D11_QUERY_DATA_SO_STATISTICS;
++#endif
++
+ namespace rx
+ {
+
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
+index dbed23f..5291a3a 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
+@@ -62,6 +62,67 @@
+ #define ANGLE_SUPPRESS_D3D11_HAZARD_WARNINGS 1
+ #endif
+
++#ifndef __d3d11sdklayers_h__
++#define D3D11_MESSAGE_CATEGORY UINT
++#define D3D11_MESSAGE_SEVERITY UINT
++#define D3D11_MESSAGE_ID UINT
++struct D3D11_MESSAGE;
++typedef struct D3D11_INFO_QUEUE_FILTER_DESC
++{
++ UINT NumCategories;
++ D3D11_MESSAGE_CATEGORY *pCategoryList;
++ UINT NumSeverities;
++ D3D11_MESSAGE_SEVERITY *pSeverityList;
++ UINT NumIDs;
++ D3D11_MESSAGE_ID *pIDList;
++} D3D11_INFO_QUEUE_FILTER_DESC;
++typedef struct D3D11_INFO_QUEUE_FILTER
++{
++ D3D11_INFO_QUEUE_FILTER_DESC AllowList;
++ D3D11_INFO_QUEUE_FILTER_DESC DenyList;
++} D3D11_INFO_QUEUE_FILTER;
++static const IID IID_ID3D11InfoQueue = { 0x6543dbb6, 0x1b48, 0x42f5, 0xab, 0x82, 0xe9, 0x7e, 0xc7, 0x43, 0x26, 0xf6 };
++MIDL_INTERFACE("6543dbb6-1b48-42f5-ab82-e97ec74326f6") ID3D11InfoQueue : public IUnknown
++{
++public:
++ virtual HRESULT __stdcall SetMessageCountLimit(UINT64) = 0;
++ virtual void __stdcall ClearStoredMessages() = 0;
++ virtual HRESULT __stdcall GetMessage(UINT64, D3D11_MESSAGE *, SIZE_T *) = 0;
++ virtual UINT64 __stdcall GetNumMessagesAllowedByStorageFilter() = 0;
++ virtual UINT64 __stdcall GetNumMessagesDeniedByStorageFilter() = 0;
++ virtual UINT64 __stdcall GetNumStoredMessages() = 0;
++ virtual UINT64 __stdcall GetNumStoredMessagesAllowedByRetrievalFilter() = 0;
++ virtual UINT64 __stdcall GetNumMessagesDiscardedByMessageCountLimit() = 0;
++ virtual UINT64 __stdcall GetMessageCountLimit() = 0;
++ virtual HRESULT __stdcall AddStorageFilterEntries(D3D11_INFO_QUEUE_FILTER *) = 0;
++ virtual HRESULT __stdcall GetStorageFilter(D3D11_INFO_QUEUE_FILTER *, SIZE_T *) = 0;
++ virtual void __stdcall ClearStorageFilter() = 0;
++ virtual HRESULT __stdcall PushEmptyStorageFilter() = 0;
++ virtual HRESULT __stdcall PushCopyOfStorageFilter() = 0;
++ virtual HRESULT __stdcall PushStorageFilter(D3D11_INFO_QUEUE_FILTER *) = 0;
++ virtual void __stdcall PopStorageFilter() = 0;
++ virtual UINT __stdcall GetStorageFilterStackSize() = 0;
++ virtual HRESULT __stdcall AddRetrievalFilterEntries(D3D11_INFO_QUEUE_FILTER *) = 0;
++ virtual HRESULT __stdcall GetRetrievalFilter(D3D11_INFO_QUEUE_FILTER *, SIZE_T *) = 0;
++ virtual void __stdcall ClearRetrievalFilter() = 0;
++ virtual HRESULT __stdcall PushEmptyRetrievalFilter() = 0;
++ virtual HRESULT __stdcall PushCopyOfRetrievalFilter() = 0;
++ virtual HRESULT __stdcall PushRetrievalFilter(D3D11_INFO_QUEUE_FILTER *) = 0;
++ virtual void __stdcall PopRetrievalFilter() = 0;
++ virtual UINT __stdcall GetRetrievalFilterStackSize() = 0;
++ virtual HRESULT __stdcall AddMessage(D3D11_MESSAGE_CATEGORY, D3D11_MESSAGE_SEVERITY, D3D11_MESSAGE_ID, LPCSTR) = 0;
++ virtual HRESULT __stdcall AddApplicationMessage(D3D11_MESSAGE_SEVERITY, LPCSTR) = 0;
++ virtual HRESULT __stdcall SetBreakOnCategory(D3D11_MESSAGE_CATEGORY, BOOL) = 0;
++ virtual HRESULT __stdcall SetBreakOnSeverity(D3D11_MESSAGE_SEVERITY, BOOL) = 0;
++ virtual HRESULT __stdcall SetBreakOnID(D3D11_MESSAGE_ID, BOOL) = 0;
++ virtual BOOL __stdcall GetBreakOnCategory(D3D11_MESSAGE_CATEGORY) = 0;
++ virtual BOOL __stdcall GetBreakOnSeverity(D3D11_MESSAGE_SEVERITY) = 0;
++ virtual BOOL __stdcall GetBreakOnID(D3D11_MESSAGE_ID) = 0;
++ virtual void __stdcall SetMuteDebugOutput(BOOL) = 0;
++ virtual BOOL __stdcall GetMuteDebugOutput() = 0;
++};
++#endif
++
+ namespace rx
+ {
+
+@@ -164,8 +225,7 @@ void CalculateConstantBufferParams(GLintptr offset, GLsizeiptr size, UINT *outFi
+
+ Renderer11::Renderer11(egl::Display *display)
+ : RendererD3D(display),
+- mStateCache(this),
+- mDebug(nullptr)
++ mStateCache(this)
+ {
+ // Initialize global annotator
+ gl::InitializeDebugAnnotations(&mAnnotator);
+@@ -398,7 +458,9 @@ egl::Error Renderer11::initialize()
+ // Cast the DeviceContext to a DeviceContext1.
+ // This could fail on Windows 7 without the Platform Update.
+ // Don't error in this case- just don't use mDeviceContext1.
++#if defined(ANGLE_ENABLE_D3D11_1)
+ mDeviceContext1 = d3d11::DynamicCastComObject<ID3D11DeviceContext1>(mDeviceContext);
++#endif
+
+ IDXGIDevice *dxgiDevice = NULL;
+ result = mDevice->QueryInterface(__uuidof(IDXGIDevice), (void**)&dxgiDevice);
+@@ -421,6 +483,7 @@ egl::Error Renderer11::initialize()
+
+ SafeRelease(dxgiDevice);
+
++#if defined(ANGLE_ENABLE_D3D11_1)
+ IDXGIAdapter2 *dxgiAdapter2 = d3d11::DynamicCastComObject<IDXGIAdapter2>(mDxgiAdapter);
+
+ // On D3D_FEATURE_LEVEL_9_*, IDXGIAdapter::GetDesc returns "Software Adapter" for the description string.
+@@ -447,6 +510,7 @@ egl::Error Renderer11::initialize()
+ }
+
+ SafeRelease(dxgiAdapter2);
++#endif
+
+ memset(mDescription, 0, sizeof(mDescription));
+ wcstombs(mDescription, mAdapterDescription.Description, sizeof(mDescription) - 1);
+@@ -463,7 +527,7 @@ egl::Error Renderer11::initialize()
+ // Disable some spurious D3D11 debug warnings to prevent them from flooding the output log
+ #if defined(ANGLE_SUPPRESS_D3D11_HAZARD_WARNINGS) && defined(_DEBUG)
+ ID3D11InfoQueue *infoQueue;
+- result = mDevice->QueryInterface(__uuidof(ID3D11InfoQueue), (void **)&infoQueue);
++ result = mDevice->QueryInterface(IID_ID3D11InfoQueue, (void **)&infoQueue);
+
+ if (SUCCEEDED(result))
+ {
+@@ -481,10 +545,6 @@ egl::Error Renderer11::initialize()
+ }
+ #endif
+
+-#if !defined(NDEBUG)
+- mDebug = d3d11::DynamicCastComObject<ID3D11Debug>(mDevice);
+-#endif
+-
+ initializeDevice();
+
+ return egl::Error(EGL_SUCCESS);
+@@ -525,12 +585,14 @@ void Renderer11::initializeDevice()
+
+ const gl::Caps &rendererCaps = getRendererCaps();
+
++#if defined(ANGLE_ENABLE_D3D11_1)
+ if (getDeviceContext1IfSupported())
+ {
+ D3D11_FEATURE_DATA_D3D11_OPTIONS d3d11Options;
+ mDevice->CheckFeatureSupport(D3D11_FEATURE_D3D11_OPTIONS, &d3d11Options, sizeof(D3D11_FEATURE_DATA_D3D11_OPTIONS));
+ mSupportsConstantBufferOffsets = (d3d11Options.ConstantBufferOffsetting != FALSE);
+ }
++#endif
+
+ mForceSetVertexSamplerStates.resize(rendererCaps.maxVertexTextureImageUnits);
+ mCurVertexSamplerStates.resize(rendererCaps.maxVertexTextureImageUnits);
+@@ -853,6 +915,7 @@ gl::Error Renderer11::setUniformBuffers(const gl::Data &data,
+ mCurrentConstantBufferVSOffset[uniformBufferIndex] != uniformBufferOffset ||
+ mCurrentConstantBufferVSSize[uniformBufferIndex] != uniformBufferSize)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ if (mSupportsConstantBufferOffsets && uniformBufferSize != 0)
+ {
+ UINT firstConstant = 0, numConstants = 0;
+@@ -861,6 +924,7 @@ gl::Error Renderer11::setUniformBuffers(const gl::Data &data,
+ 1, &constantBuffer, &firstConstant, &numConstants);
+ }
+ else
++#endif
+ {
+ ASSERT(uniformBufferOffset == 0);
+ mDeviceContext->VSSetConstantBuffers(getReservedVertexUniformBuffers() + uniformBufferIndex,
+@@ -901,6 +965,7 @@ gl::Error Renderer11::setUniformBuffers(const gl::Data &data,
+ mCurrentConstantBufferPSOffset[uniformBufferIndex] != uniformBufferOffset ||
+ mCurrentConstantBufferPSSize[uniformBufferIndex] != uniformBufferSize)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ if (mSupportsConstantBufferOffsets && uniformBufferSize != 0)
+ {
+ UINT firstConstant = 0, numConstants = 0;
+@@ -909,6 +974,7 @@ gl::Error Renderer11::setUniformBuffers(const gl::Data &data,
+ 1, &constantBuffer, &firstConstant, &numConstants);
+ }
+ else
++#endif
+ {
+ ASSERT(uniformBufferOffset == 0);
+ mDeviceContext->PSSetConstantBuffers(getReservedFragmentUniformBuffers() + uniformBufferIndex,
+@@ -2194,7 +2260,9 @@ void Renderer11::release()
+ SafeRelease(mDxgiFactory);
+ SafeRelease(mDxgiAdapter);
+
++#if defined(ANGLE_ENABLE_D3D11_1)
+ SafeRelease(mDeviceContext1);
++#endif
+
+ if (mDeviceContext)
+ {
+@@ -2204,7 +2272,6 @@ void Renderer11::release()
+ }
+
+ SafeRelease(mDevice);
+- SafeRelease(mDebug);
+
+ if (mD3d11Module)
+ {
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h
+index d1fec55..cc7d6c2 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h
+@@ -20,6 +20,8 @@
+ #include "libANGLE/renderer/d3d/d3d11/InputLayoutCache.h"
+ #include "libANGLE/renderer/d3d/d3d11/RenderStateCache.h"
+
++struct ID3D11DeviceContext1;
++
+ namespace gl
+ {
+ class FramebufferAttachment;
+@@ -390,7 +392,6 @@ class Renderer11 : public RendererD3D
+ DXGI_ADAPTER_DESC mAdapterDescription;
+ char mDescription[128];
+ DXGIFactory *mDxgiFactory;
+- ID3D11Debug *mDebug;
+
+ DebugAnnotator11 mAnnotator;
+ };
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp
+index 70b2b79..63085f4 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp
+@@ -20,6 +20,88 @@
+
+ #include <algorithm>
+
++#ifndef D3D_FL9_1_DEFAULT_MAX_ANISOTROPY
++# define D3D_FL9_1_DEFAULT_MAX_ANISOTROPY 2
++#endif
++#ifndef D3D_FL9_1_SIMULTANEOUS_RENDER_TARGET_COUNT
++# define D3D_FL9_1_SIMULTANEOUS_RENDER_TARGET_COUNT 1
++#endif
++#ifndef D3D_FL9_3_SIMULTANEOUS_RENDER_TARGET_COUNT
++# define D3D_FL9_3_SIMULTANEOUS_RENDER_TARGET_COUNT 4
++#endif
++#ifndef D3D_FL9_1_IA_PRIMITIVE_MAX_COUNT
++# define D3D_FL9_1_IA_PRIMITIVE_MAX_COUNT 65535
++#endif
++#ifndef D3D_FL9_2_IA_PRIMITIVE_MAX_COUNT
++# define D3D_FL9_2_IA_PRIMITIVE_MAX_COUNT 1048575
++#endif
++#ifndef D3D_FL9_1_REQ_TEXTURECUBE_DIMENSION
++# define D3D_FL9_1_REQ_TEXTURECUBE_DIMENSION 512
++#endif
++#ifndef D3D_FL9_3_REQ_TEXTURECUBE_DIMENSION
++# define D3D_FL9_3_REQ_TEXTURECUBE_DIMENSION 4096
++#endif
++#ifndef D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION
++# define D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION 2048
++#endif
++#ifndef D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION
++# define D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION 256
++#endif
++#ifndef D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION
++# define D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION 4096
++#endif
++#ifndef D3D11_REQ_TEXTURECUBE_DIMENSION
++# define D3D11_REQ_TEXTURECUBE_DIMENSION 16384
++#endif
++#ifndef D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION
++# define D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION 2048
++#endif
++#ifndef D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION
++# define D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION 2048
++#endif
++#ifndef D3D11_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP
++# define D3D11_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP 32
++#endif
++#ifndef D3D11_REQ_DRAW_VERTEX_COUNT_2_TO_EXP
++# define D3D11_REQ_DRAW_VERTEX_COUNT_2_TO_EXP 32
++#endif
++#ifndef D3D10_1_STANDARD_VERTEX_ELEMENT_COUNT
++# define D3D10_1_STANDARD_VERTEX_ELEMENT_COUNT 32
++#endif
++#ifndef D3D11_STANDARD_VERTEX_ELEMENT_COUNT
++# define D3D11_STANDARD_VERTEX_ELEMENT_COUNT 32
++#endif
++#ifndef D3D10_1_SO_BUFFER_SLOT_COUNT
++# define D3D10_1_SO_BUFFER_SLOT_COUNT 4
++#endif
++#ifndef D3D11_SO_BUFFER_SLOT_COUNT
++# define D3D11_SO_BUFFER_SLOT_COUNT 4
++#endif
++#ifndef D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT
++# define D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT 14
++#endif
++#ifndef D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT
++# define D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT 16
++#endif
++#ifndef D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE
++# define D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE -8
++#endif
++#ifndef D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE
++# define D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE 7
++#endif
++#ifndef D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT
++# define D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT 4096
++#endif
++#ifndef D3D11_PS_INPUT_REGISTER_COUNT
++# define D3D11_PS_INPUT_REGISTER_COUNT 32
++#endif
++#ifndef D3D10_1_VS_OUTPUT_REGISTER_COUNT
++# define D3D10_1_VS_OUTPUT_REGISTER_COUNT 32
++#endif
++#if defined(ANGLE_MINGW32_COMPAT)
++static const IID WKPDID_D3DDebugObjectName = { 0x429b8c22, 0x9188, 0x4b0c, 0x87, 0x42, 0xac, 0xb0, 0xbf, 0x85, 0xc2, 0x00 };
++#endif
++
+ namespace rx
+ {
+
+@@ -232,7 +314,9 @@ GLint GetMaximumClientVersion(D3D_FEATURE_LEVEL featureLevel)
+ {
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0:
+ case D3D_FEATURE_LEVEL_10_1:
+ case D3D_FEATURE_LEVEL_10_0: return 3;
+@@ -298,7 +382,9 @@ static bool GetNPOTTextureSupport(D3D_FEATURE_LEVEL featureLevel)
+ {
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0:
+ case D3D_FEATURE_LEVEL_10_1:
+ case D3D_FEATURE_LEVEL_10_0: return true;
+@@ -316,7 +402,9 @@ static float GetMaximumAnisotropy(D3D_FEATURE_LEVEL featureLevel)
+ {
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0: return D3D11_MAX_MAXANISOTROPY;
+
+ case D3D_FEATURE_LEVEL_10_1:
+@@ -336,7 +424,9 @@ static bool GetOcclusionQuerySupport(D3D_FEATURE_LEVEL featureLevel)
+ {
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0:
+ case D3D_FEATURE_LEVEL_10_1:
+ case D3D_FEATURE_LEVEL_10_0: return true;
+@@ -356,7 +446,9 @@ static bool GetEventQuerySupport(D3D_FEATURE_LEVEL featureLevel)
+
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0:
+ case D3D_FEATURE_LEVEL_10_1:
+ case D3D_FEATURE_LEVEL_10_0:
+@@ -374,7 +466,9 @@ static bool GetInstancingSupport(D3D_FEATURE_LEVEL featureLevel)
+
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0:
+ case D3D_FEATURE_LEVEL_10_1:
+ case D3D_FEATURE_LEVEL_10_0: return true;
+@@ -397,7 +491,9 @@ static bool GetFramebufferMultisampleSupport(D3D_FEATURE_LEVEL featureLevel)
+ {
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0:
+ case D3D_FEATURE_LEVEL_10_1:
+ case D3D_FEATURE_LEVEL_10_0: return true;
+@@ -414,7 +510,9 @@ static bool GetFramebufferBlitSupport(D3D_FEATURE_LEVEL featureLevel)
+ {
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0:
+ case D3D_FEATURE_LEVEL_10_1:
+ case D3D_FEATURE_LEVEL_10_0: return true;
+@@ -437,7 +535,9 @@ static bool GetDerivativeInstructionSupport(D3D_FEATURE_LEVEL featureLevel)
+
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0:
+ case D3D_FEATURE_LEVEL_10_1:
+ case D3D_FEATURE_LEVEL_10_0:
+@@ -453,7 +553,9 @@ static bool GetShaderTextureLODSupport(D3D_FEATURE_LEVEL featureLevel)
+ {
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0:
+ case D3D_FEATURE_LEVEL_10_1:
+ case D3D_FEATURE_LEVEL_10_0: return true;
+@@ -472,7 +574,9 @@ static size_t GetMaximumSimultaneousRenderTargets(D3D_FEATURE_LEVEL featureLevel
+
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0: return D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT;
+
+ case D3D_FEATURE_LEVEL_10_1:
+@@ -490,7 +594,9 @@ static size_t GetMaximum2DTextureSize(D3D_FEATURE_LEVEL featureLevel)
+ {
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0: return D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION;
+
+ case D3D_FEATURE_LEVEL_10_1:
+@@ -508,7 +614,9 @@ static size_t GetMaximumCubeMapTextureSize(D3D_FEATURE_LEVEL featureLevel)
+ {
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0: return D3D11_REQ_TEXTURECUBE_DIMENSION;
+
+ case D3D_FEATURE_LEVEL_10_1:
+@@ -526,7 +634,9 @@ static size_t GetMaximum2DTextureArraySize(D3D_FEATURE_LEVEL featureLevel)
+ {
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0: return D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION;
+
+ case D3D_FEATURE_LEVEL_10_1:
+@@ -544,7 +654,9 @@ static size_t GetMaximum3DTextureSize(D3D_FEATURE_LEVEL featureLevel)
+ {
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0: return D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION;
+
+ case D3D_FEATURE_LEVEL_10_1:
+@@ -562,7 +674,9 @@ static size_t GetMaximumViewportSize(D3D_FEATURE_LEVEL featureLevel)
+ {
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0: return D3D11_VIEWPORT_BOUNDS_MAX;
+
+ case D3D_FEATURE_LEVEL_10_1:
+@@ -586,7 +700,9 @@ static size_t GetMaximumDrawIndexedIndexCount(D3D_FEATURE_LEVEL featureLevel)
+
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0:
+ case D3D_FEATURE_LEVEL_10_1:
+ case D3D_FEATURE_LEVEL_10_0: return std::numeric_limits<GLint>::max();
+@@ -608,7 +724,9 @@ static size_t GetMaximumDrawVertexCount(D3D_FEATURE_LEVEL featureLevel)
+
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0:
+ case D3D_FEATURE_LEVEL_10_1:
+ case D3D_FEATURE_LEVEL_10_0: return std::numeric_limits<GLint>::max();
+@@ -625,7 +743,9 @@ static size_t GetMaximumVertexInputSlots(D3D_FEATURE_LEVEL featureLevel)
+ {
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0: return D3D11_STANDARD_VERTEX_ELEMENT_COUNT;
+
+ case D3D_FEATURE_LEVEL_10_1: return D3D10_1_STANDARD_VERTEX_ELEMENT_COUNT;
+@@ -645,7 +765,9 @@ static size_t GetMaximumVertexUniformVectors(D3D_FEATURE_LEVEL featureLevel)
+ // TODO(geofflang): Remove hard-coded limit once the gl-uniform-arrays test can pass
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0: return 1024; // D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT;
+
+ case D3D_FEATURE_LEVEL_10_1:
+@@ -670,7 +792,9 @@ static size_t GetMaximumVertexUniformBlocks(D3D_FEATURE_LEVEL featureLevel)
+ {
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0: return D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - GetReservedVertexUniformBuffers();
+
+ case D3D_FEATURE_LEVEL_10_1:
+@@ -698,7 +822,9 @@ static size_t GetReservedVertexOutputVectors(D3D_FEATURE_LEVEL featureLevel)
+ // We must reserve one output vector for dx_Position.
+ // We also reserve one for gl_Position, which we unconditionally output on Feature Levels 10_0+,
+ // even if it's unused in the shader (e.g. for transform feedback). TODO: This could be improved.
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0:
+ case D3D_FEATURE_LEVEL_10_1:
+ case D3D_FEATURE_LEVEL_10_0: return 2;
+@@ -720,7 +846,9 @@ static size_t GetMaximumVertexOutputVectors(D3D_FEATURE_LEVEL featureLevel)
+
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0: return D3D11_VS_OUTPUT_REGISTER_COUNT - GetReservedVertexOutputVectors(featureLevel);
+
+ case D3D_FEATURE_LEVEL_10_1: return D3D10_1_VS_OUTPUT_REGISTER_COUNT - GetReservedVertexOutputVectors(featureLevel);
+@@ -739,7 +867,9 @@ static size_t GetMaximumVertexTextureUnits(D3D_FEATURE_LEVEL featureLevel)
+ {
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0: return D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT;
+
+ case D3D_FEATURE_LEVEL_10_1:
+@@ -761,7 +891,9 @@ static size_t GetMaximumPixelUniformVectors(D3D_FEATURE_LEVEL featureLevel)
+ // TODO(geofflang): Remove hard-coded limit once the gl-uniform-arrays test can pass
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0: return 1024; // D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT;
+
+ case D3D_FEATURE_LEVEL_10_1:
+@@ -786,7 +918,9 @@ static size_t GetMaximumPixelUniformBlocks(D3D_FEATURE_LEVEL featureLevel)
+ {
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0: return D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - GetReservedPixelUniformBuffers();
+
+ case D3D_FEATURE_LEVEL_10_1:
+@@ -805,7 +939,9 @@ static size_t GetMaximumPixelInputVectors(D3D_FEATURE_LEVEL featureLevel)
+ {
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0: return D3D11_PS_INPUT_REGISTER_COUNT - GetReservedVertexOutputVectors(featureLevel);
+
+ case D3D_FEATURE_LEVEL_10_1:
+@@ -824,7 +960,9 @@ static size_t GetMaximumPixelTextureUnits(D3D_FEATURE_LEVEL featureLevel)
+ {
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0: return D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT;
+
+ case D3D_FEATURE_LEVEL_10_1:
+@@ -843,7 +981,9 @@ static int GetMinimumTexelOffset(D3D_FEATURE_LEVEL featureLevel)
+ {
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0: return D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE;
+
+ case D3D_FEATURE_LEVEL_10_1:
+@@ -862,7 +1002,9 @@ static int GetMaximumTexelOffset(D3D_FEATURE_LEVEL featureLevel)
+ {
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0: return D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE;
+ case D3D_FEATURE_LEVEL_10_1:
+ case D3D_FEATURE_LEVEL_10_0: return D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE;
+@@ -885,7 +1027,9 @@ static size_t GetMaximumConstantBufferSize(D3D_FEATURE_LEVEL featureLevel)
+
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0: return D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT * bytesPerComponent;
+
+ case D3D_FEATURE_LEVEL_10_1:
+@@ -904,7 +1048,9 @@ static size_t GetMaximumStreamOutputBuffers(D3D_FEATURE_LEVEL featureLevel)
+ {
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0: return D3D11_SO_BUFFER_SLOT_COUNT;
+
+ case D3D_FEATURE_LEVEL_10_1: return D3D10_1_SO_BUFFER_SLOT_COUNT;
+@@ -922,7 +1068,9 @@ static size_t GetMaximumStreamOutputInterleavedComponents(D3D_FEATURE_LEVEL feat
+ {
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0:
+
+ case D3D_FEATURE_LEVEL_10_1:
+@@ -940,7 +1088,9 @@ static size_t GetMaximumStreamOutputSeparateComponents(D3D_FEATURE_LEVEL feature
+ {
+ switch (featureLevel)
+ {
++#if defined(ANGLE_ENABLE_D3D11_1)
+ case D3D_FEATURE_LEVEL_11_1:
++#endif
+ case D3D_FEATURE_LEVEL_11_0: return GetMaximumStreamOutputInterleavedComponents(featureLevel) /
+ GetMaximumStreamOutputBuffers(featureLevel);
+
+@@ -1054,6 +1204,7 @@ void GenerateCaps(ID3D11Device *device, ID3D11DeviceContext *deviceContext, gl::
+
+ // Setting a large alignment forces uniform buffers to bind with zero offset
+ caps->uniformBufferOffsetAlignment = static_cast<GLuint>(std::numeric_limits<GLint>::max());
++#if defined(ANGLE_ENABLE_D3D11_1)
+ ID3D11DeviceContext1 *deviceContext1 = d3d11::DynamicCastComObject<ID3D11DeviceContext1>(deviceContext);
+
+ if (deviceContext1)
+@@ -1070,6 +1221,7 @@ void GenerateCaps(ID3D11Device *device, ID3D11DeviceContext *deviceContext, gl::
+
+ SafeRelease(deviceContext1);
+ }
++#endif
+
+ caps->maxCombinedUniformBlocks = caps->maxVertexUniformBlocks + caps->maxFragmentUniformBlocks;
+ caps->maxCombinedVertexUniformComponents = (static_cast<GLint64>(caps->maxVertexUniformBlocks) * static_cast<GLint64>(caps->maxUniformBlockSize / 4)) +
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp
+index c59808d..bf1c367 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp
+@@ -206,7 +206,7 @@ egl::Error Renderer9::initialize()
+ {
+ TRACE_EVENT0("gpu", "D3d9Ex_QueryInterface");
+ ASSERT(mD3d9Ex);
+- mD3d9Ex->QueryInterface(__uuidof(IDirect3D9), reinterpret_cast<void**>(&mD3d9));
++ mD3d9Ex->QueryInterface(IID_IDirect3D9, reinterpret_cast<void**>(&mD3d9));
+ ASSERT(mD3d9);
+ }
+ else
+@@ -314,7 +314,7 @@ egl::Error Renderer9::initialize()
+ if (mD3d9Ex)
+ {
+ TRACE_EVENT0("gpu", "mDevice_QueryInterface");
+- result = mDevice->QueryInterface(__uuidof(IDirect3DDevice9Ex), (void**)&mDeviceEx);
++ result = mDevice->QueryInterface(IID_IDirect3DDevice9Ex, (void**)&mDeviceEx);
+ ASSERT(SUCCEEDED(result));
+ }
+
+--
+2.1.4
+
diff --git a/src/angle/patches/0003-ANGLE-Fix-compilation-on-MSVC2010-2012.patch b/src/angle/patches/0003-ANGLE-Fix-compilation-on-MSVC2010-2012.patch
new file mode 100644
index 0000000000..62300e1e9b
--- /dev/null
+++ b/src/angle/patches/0003-ANGLE-Fix-compilation-on-MSVC2010-2012.patch
@@ -0,0 +1,363 @@
+From 11304df7f66d0d8bc5dfdc960b86b5cac0f18313 Mon Sep 17 00:00:00 2001
+From: Andrew Knight <andrew.knight@intopalo.com>
+Date: Wed, 8 Apr 2015 17:09:47 +0300
+Subject: [PATCH 3/5] ANGLE: Fix compilation on MSVC2010/2012
+
+Allow the D3D11 renderer to build with the June 2010 DirectX SDK.
+This mainly addresses C++11 language incompatibilities, such as replacing
+range-based for loops with iterators.
+
+Change-Id: I2343acedab16845d6a0d4a53cf3145f583efc4a7
+---
+ src/3rdparty/angle/src/common/angleutils.h | 2 ++
+ src/3rdparty/angle/src/common/platform.h | 9 +++++++
+ .../angle/src/compiler/translator/OutputHLSL.cpp | 31 +++++++++++++---------
+ src/3rdparty/angle/src/libANGLE/Context.cpp | 4 +--
+ src/3rdparty/angle/src/libANGLE/Error.h | 1 +
+ src/3rdparty/angle/src/libANGLE/Framebuffer.cpp | 23 ++++++++--------
+ src/3rdparty/angle/src/libANGLE/State.cpp | 3 ++-
+ src/3rdparty/angle/src/libANGLE/Texture.cpp | 2 +-
+ .../angle/src/libANGLE/renderer/d3d/DisplayD3D.cpp | 6 +++--
+ .../src/libANGLE/renderer/d3d/RendererD3D.cpp | 4 +--
+ .../libANGLE/renderer/d3d/d3d11/Framebuffer11.cpp | 3 ++-
+ 11 files changed, 55 insertions(+), 33 deletions(-)
+
+diff --git a/src/3rdparty/angle/src/common/angleutils.h b/src/3rdparty/angle/src/common/angleutils.h
+index f3d2019..4cf84a3 100644
+--- a/src/3rdparty/angle/src/common/angleutils.h
++++ b/src/3rdparty/angle/src/common/angleutils.h
+@@ -25,12 +25,14 @@ namespace angle
+
+ class NonCopyable
+ {
++#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
+ public:
+ NonCopyable() = default;
+ ~NonCopyable() = default;
+ protected:
+ NonCopyable(const NonCopyable&) = delete;
+ void operator=(const NonCopyable&) = delete;
++#endif
+ };
+
+ }
+diff --git a/src/3rdparty/angle/src/common/platform.h b/src/3rdparty/angle/src/common/platform.h
+index be4cb94..3a2aa91 100644
+--- a/src/3rdparty/angle/src/common/platform.h
++++ b/src/3rdparty/angle/src/common/platform.h
+@@ -53,7 +53,9 @@
+
+ # if defined(ANGLE_ENABLE_D3D9)
+ # include <d3d9.h>
++# if !defined(ANGLE_TRANSLATOR_IMPLEMENTATION)
+ # include <d3dcompiler.h>
++# endif
+ # endif
+
+ # if defined(ANGLE_ENABLE_D3D11)
+@@ -70,7 +72,9 @@
+ # include <d3d11_1.h>
+ # include <dxgi1_2.h>
+ # endif
++# if !defined(ANGLE_TRANSLATOR_IMPLEMENTATION)
+ # include <d3dcompiler.h>
++# endif
+ # endif
+
+ # if defined(ANGLE_ENABLE_WINDOWS_STORE)
+@@ -83,6 +87,11 @@
+ # endif
+ # endif
+
++# if defined(_MSC_VER) && (_MSC_VER <= 1600)
++# define final
++# define override
++# endif
++
+ # undef near
+ # undef far
+ #endif
+diff --git a/src/3rdparty/angle/src/compiler/translator/OutputHLSL.cpp b/src/3rdparty/angle/src/compiler/translator/OutputHLSL.cpp
+index c3240f5..94225b8 100644
+--- a/src/3rdparty/angle/src/compiler/translator/OutputHLSL.cpp
++++ b/src/3rdparty/angle/src/compiler/translator/OutputHLSL.cpp
+@@ -158,13 +158,13 @@ OutputHLSL::~OutputHLSL()
+ SafeDelete(mUnfoldShortCircuit);
+ SafeDelete(mStructureHLSL);
+ SafeDelete(mUniformHLSL);
+- for (auto &eqFunction : mStructEqualityFunctions)
++ for (auto it = mStructEqualityFunctions.begin(); it != mStructEqualityFunctions.end(); ++it)
+ {
+- SafeDelete(eqFunction);
++ SafeDelete(*it);
+ }
+- for (auto &eqFunction : mArrayEqualityFunctions)
++ for (auto it = mArrayEqualityFunctions.begin(); it != mArrayEqualityFunctions.end(); ++it)
+ {
+- SafeDelete(eqFunction);
++ SafeDelete(*it);
+ }
+ }
+
+@@ -340,17 +340,17 @@ void OutputHLSL::header(const BuiltInFunctionEmulator *builtInFunctionEmulator)
+ if (!mEqualityFunctions.empty())
+ {
+ out << "\n// Equality functions\n\n";
+- for (const auto &eqFunction : mEqualityFunctions)
++ for (auto it = mEqualityFunctions.cbegin(); it != mEqualityFunctions.cend(); ++it)
+ {
+- out << eqFunction->functionDefinition << "\n";
++ out << (*it)->functionDefinition << "\n";
+ }
+ }
+ if (!mArrayAssignmentFunctions.empty())
+ {
+ out << "\n// Assignment functions\n\n";
+- for (const auto &assignmentFunction : mArrayAssignmentFunctions)
++ for (auto it = mArrayAssignmentFunctions.cbegin(); it != mArrayAssignmentFunctions.cend(); ++it)
+ {
+- out << assignmentFunction.functionDefinition << "\n";
++ out << it->functionDefinition << "\n";
+ }
+ }
+
+@@ -1858,8 +1858,9 @@ bool OutputHLSL::visitAggregate(Visit visit, TIntermAggregate *node)
+
+ if (!variable->getAsSymbolNode() || variable->getAsSymbolNode()->getSymbol() != "") // Variable declaration
+ {
+- for (const auto &seqElement : *sequence)
++ for (auto it = sequence->cbegin(); it != sequence->cend(); ++it)
+ {
++ const auto &seqElement = *it;
+ if (isSingleStatement(seqElement))
+ {
+ mUnfoldShortCircuit->traverse(seqElement);
+@@ -2941,8 +2942,9 @@ void OutputHLSL::writeDeferredGlobalInitializers(TInfoSinkBase &out)
+ << "void initializeDeferredGlobals()\n"
+ << "{\n";
+
+- for (const auto &deferredGlobal : mDeferredGlobalInitializers)
++ for (auto it = mDeferredGlobalInitializers.cbegin(); it != mDeferredGlobalInitializers.cend(); ++it)
+ {
++ const auto &deferredGlobal = *it;
+ TIntermSymbol *symbol = deferredGlobal.first;
+ TIntermTyped *expression = deferredGlobal.second;
+ ASSERT(symbol);
+@@ -2967,8 +2969,9 @@ TString OutputHLSL::addStructEqualityFunction(const TStructure &structure)
+ {
+ const TFieldList &fields = structure.fields();
+
+- for (const auto &eqFunction : mStructEqualityFunctions)
++ for (auto it = mStructEqualityFunctions.cbegin(); it != mStructEqualityFunctions.cend(); ++it)
+ {
++ auto *eqFunction = *it;
+ if (eqFunction->structure == &structure)
+ {
+ return eqFunction->functionName;
+@@ -3021,8 +3024,9 @@ TString OutputHLSL::addStructEqualityFunction(const TStructure &structure)
+
+ TString OutputHLSL::addArrayEqualityFunction(const TType& type)
+ {
+- for (const auto &eqFunction : mArrayEqualityFunctions)
++ for (auto it = mArrayEqualityFunctions.cbegin(); it != mArrayEqualityFunctions.cend(); ++it)
+ {
++ const auto &eqFunction = *it;
+ if (eqFunction->type == type)
+ {
+ return eqFunction->functionName;
+@@ -3072,8 +3076,9 @@ TString OutputHLSL::addArrayEqualityFunction(const TType& type)
+
+ TString OutputHLSL::addArrayAssignmentFunction(const TType& type)
+ {
+- for (const auto &assignFunction : mArrayAssignmentFunctions)
++ for (auto it = mArrayAssignmentFunctions.cbegin(); it != mArrayAssignmentFunctions.cend(); ++it)
+ {
++ const auto &assignFunction = *it;
+ if (assignFunction.type == type)
+ {
+ return assignFunction.functionName;
+diff --git a/src/3rdparty/angle/src/libANGLE/Context.cpp b/src/3rdparty/angle/src/libANGLE/Context.cpp
+index 5ea039f..1da5fda 100644
+--- a/src/3rdparty/angle/src/libANGLE/Context.cpp
++++ b/src/3rdparty/angle/src/libANGLE/Context.cpp
+@@ -158,9 +158,9 @@ Context::~Context()
+ deleteTransformFeedback(mTransformFeedbackMap.begin()->first);
+ }
+
+- for (auto &zeroTexture : mZeroTextures)
++ for (auto it = mZeroTextures.begin(); it != mZeroTextures.end(); ++it)
+ {
+- zeroTexture.second.set(NULL);
++ it->second.set(NULL);
+ }
+ mZeroTextures.clear();
+
+diff --git a/src/3rdparty/angle/src/libANGLE/Error.h b/src/3rdparty/angle/src/libANGLE/Error.h
+index 5812943..896b777 100644
+--- a/src/3rdparty/angle/src/libANGLE/Error.h
++++ b/src/3rdparty/angle/src/libANGLE/Error.h
+@@ -10,6 +10,7 @@
+ #define LIBANGLE_ERROR_H_
+
+ #include "angle_gl.h"
++#include "common/platform.h"
+ #include <EGL/egl.h>
+
+ #include <string>
+diff --git a/src/3rdparty/angle/src/libANGLE/Framebuffer.cpp b/src/3rdparty/angle/src/libANGLE/Framebuffer.cpp
+index 5fa7513..b1dd4a1 100644
+--- a/src/3rdparty/angle/src/libANGLE/Framebuffer.cpp
++++ b/src/3rdparty/angle/src/libANGLE/Framebuffer.cpp
+@@ -48,9 +48,9 @@ Framebuffer::Data::Data(const Caps &caps)
+
+ Framebuffer::Data::~Data()
+ {
+- for (auto &colorAttachment : mColorAttachments)
++ for (auto it = mColorAttachments.begin(); it != mColorAttachments.end(); ++it)
+ {
+- SafeDelete(colorAttachment);
++ SafeDelete(*it);
+ }
+ SafeDelete(mDepthAttachment);
+ SafeDelete(mStencilAttachment);
+@@ -66,11 +66,11 @@ FramebufferAttachment *Framebuffer::Data::getReadAttachment() const
+
+ FramebufferAttachment *Framebuffer::Data::getFirstColorAttachment() const
+ {
+- for (FramebufferAttachment *colorAttachment : mColorAttachments)
++ for (auto it = mColorAttachments.cbegin(); it != mColorAttachments.cend(); ++it)
+ {
+- if (colorAttachment != nullptr)
++ if (*it != nullptr)
+ {
+- return colorAttachment;
++ return *it;
+ }
+ }
+
+@@ -115,9 +115,9 @@ void Framebuffer::detachRenderbuffer(GLuint renderbufferId)
+
+ void Framebuffer::detachResourceById(GLenum resourceType, GLuint resourceId)
+ {
+- for (auto &colorAttachment : mData.mColorAttachments)
++ for (auto it = mData.mColorAttachments.begin(); it != mData.mColorAttachments.end(); ++it)
+ {
+- DeleteMatchingAttachment(colorAttachment, resourceType, resourceId);
++ DeleteMatchingAttachment(*it, resourceType, resourceId);
+ }
+
+ DeleteMatchingAttachment(mData.mDepthAttachment, resourceType, resourceId);
+@@ -278,8 +278,9 @@ GLenum Framebuffer::checkStatus(const gl::Data &data) const
+ int samples = -1;
+ bool missingAttachment = true;
+
+- for (const FramebufferAttachment *colorAttachment : mData.mColorAttachments)
++ for (auto it = mData.mColorAttachments.cbegin(); it != mData.mColorAttachments.cend(); ++it)
+ {
++ const auto &colorAttachment = *it;
+ if (colorAttachment != nullptr)
+ {
+ if (colorAttachment->getWidth() == 0 || colorAttachment->getHeight() == 0)
+@@ -533,11 +534,11 @@ int Framebuffer::getSamples(const gl::Data &data) const
+ {
+ // for a complete framebuffer, all attachments must have the same sample count
+ // in this case return the first nonzero sample size
+- for (const FramebufferAttachment *colorAttachment : mData.mColorAttachments)
++ for (auto it = mData.mColorAttachments.cbegin(); it != mData.mColorAttachments.cend(); ++it)
+ {
+- if (colorAttachment != nullptr)
++ if (*it != nullptr)
+ {
+- return colorAttachment->getSamples();
++ return (*it)->getSamples();
+ }
+ }
+ }
+diff --git a/src/3rdparty/angle/src/libANGLE/State.cpp b/src/3rdparty/angle/src/libANGLE/State.cpp
+index 15274c6..4c044d2 100644
+--- a/src/3rdparty/angle/src/libANGLE/State.cpp
++++ b/src/3rdparty/angle/src/libANGLE/State.cpp
+@@ -633,8 +633,9 @@ void State::detachTexture(const TextureMap &zeroTextures, GLuint texture)
+
+ void State::initializeZeroTextures(const TextureMap &zeroTextures)
+ {
+- for (const auto &zeroTexture : zeroTextures)
++ for (auto it = zeroTextures.cbegin(); it != zeroTextures.cend(); ++it)
+ {
++ const auto &zeroTexture = *it;
+ auto &samplerTextureArray = mSamplerTextures[zeroTexture.first];
+
+ for (size_t textureUnit = 0; textureUnit < samplerTextureArray.size(); ++textureUnit)
+diff --git a/src/3rdparty/angle/src/libANGLE/Texture.cpp b/src/3rdparty/angle/src/libANGLE/Texture.cpp
+index 2d68bec..cd4584f 100644
+--- a/src/3rdparty/angle/src/libANGLE/Texture.cpp
++++ b/src/3rdparty/angle/src/libANGLE/Texture.cpp
+@@ -316,7 +316,7 @@ void Texture::setImageDescChain(size_t levels, Extents baseSize, GLenum sizedInt
+ }
+
+ Texture::ImageDesc::ImageDesc()
+- : ImageDesc(Extents(0, 0, 0), GL_NONE)
++ : size(0, 0, 0), internalFormat(GL_NONE)
+ {
+ }
+
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/DisplayD3D.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/DisplayD3D.cpp
+index db5f445..add5d62 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/DisplayD3D.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/DisplayD3D.cpp
+@@ -276,8 +276,9 @@ bool DisplayD3D::testDeviceLost()
+ egl::Error DisplayD3D::restoreLostDevice()
+ {
+ // Release surface resources to make the Reset() succeed
+- for (auto &surface : mSurfaceSet)
++ for (auto it = mSurfaceSet.cbegin(); it != mSurfaceSet.cend(); ++it)
+ {
++ const auto &surface = *it;
+ if (surface->getBoundTexture())
+ {
+ surface->releaseTexImage(EGL_BACK_BUFFER);
+@@ -292,8 +293,9 @@ egl::Error DisplayD3D::restoreLostDevice()
+ }
+
+ // Restore any surfaces that may have been lost
+- for (const auto &surface : mSurfaceSet)
++ for (auto it = mSurfaceSet.cbegin(); it != mSurfaceSet.cend(); ++it)
+ {
++ const auto &surface = *it;
+ SurfaceD3D *surfaceD3D = GetImplAs<SurfaceD3D>(surface);
+
+ egl::Error error = surfaceD3D->resetSwapChain();
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/RendererD3D.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/RendererD3D.cpp
+index ff9600e..2ce0ce5 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/RendererD3D.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/RendererD3D.cpp
+@@ -47,9 +47,9 @@ RendererD3D::~RendererD3D()
+ void RendererD3D::cleanup()
+ {
+ mScratchMemoryBuffer.resize(0);
+- for (auto &incompleteTexture : mIncompleteTextures)
++ for (auto it = mIncompleteTextures.begin(); it != mIncompleteTextures.end(); ++it)
+ {
+- incompleteTexture.second.set(NULL);
++ it->second.set(NULL);
+ }
+ mIncompleteTextures.clear();
+ }
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Framebuffer11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Framebuffer11.cpp
+index ab2a902..da01f32 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Framebuffer11.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Framebuffer11.cpp
+@@ -64,8 +64,9 @@ static gl::Error InvalidateAttachmentSwizzles(const gl::FramebufferAttachment *a
+
+ gl::Error Framebuffer11::invalidateSwizzles() const
+ {
+- for (gl::FramebufferAttachment *colorAttachment : mData.mColorAttachments)
++ for (auto it = mData.mColorAttachments.cbegin(); it != mData.mColorAttachments.cend(); ++it)
+ {
++ gl::FramebufferAttachment *colorAttachment = *it;
+ gl::Error error = InvalidateAttachmentSwizzles(colorAttachment);
+ if (error.isError())
+ {
+--
+2.1.4
+
diff --git a/src/angle/patches/0008-ANGLE-Dynamically-load-D3D-compiler-from-a-list-or-t.patch b/src/angle/patches/0004-ANGLE-Dynamically-load-D3D-compiler-from-a-list.patch
index 801db67682..ff93920317 100644
--- a/src/angle/patches/0008-ANGLE-Dynamically-load-D3D-compiler-from-a-list-or-t.patch
+++ b/src/angle/patches/0004-ANGLE-Dynamically-load-D3D-compiler-from-a-list.patch
@@ -1,8 +1,7 @@
-From 4a5960465d1632ab089320fcbba4af294d58fd9a Mon Sep 17 00:00:00 2001
-From: Andrew Knight <andrew.knight@theqtcompany.com>
-Date: Fri, 7 Nov 2014 14:05:36 +0200
-Subject: [PATCH 08/16] ANGLE: Dynamically load D3D compiler from a list or the
- environment
+From bbb62a69dd2b49d7cc4214937077c22b6997ffac Mon Sep 17 00:00:00 2001
+From: Andrew Knight <andrew.knight@intopalo.com>
+Date: Fri, 27 Mar 2015 17:27:38 +0200
+Subject: [PATCH 4/5] ANGLE: Dynamically load D3D compiler from a list
If the default compiler cannot be found, load it from a list of DLL names,
including a non-versioned proxy DLL provided by Qt. On Desktop Windows,
@@ -11,16 +10,16 @@ QT_D3DCOMPILER_DLL.
Change-Id: I0d7a8a8a36cc571836f8fa59ea14513b9b19c19b
---
- .../src/libGLESv2/renderer/d3d/HLSLCompiler.cpp | 27 ++++++++++++++++++++++
- 1 file changed, 27 insertions(+)
+ .../src/libANGLE/renderer/d3d/HLSLCompiler.cpp | 25 ++++++++++++++++++++++
+ 1 file changed, 25 insertions(+)
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/HLSLCompiler.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/HLSLCompiler.cpp
-index bfeaf51..9d003b4 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/HLSLCompiler.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/HLSLCompiler.cpp
-@@ -11,6 +11,10 @@
- #include "common/features.h"
- #include "common/utilities.h"
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/HLSLCompiler.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/HLSLCompiler.cpp
+index 9c72d6f..8961a36 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/HLSLCompiler.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/HLSLCompiler.cpp
+@@ -12,6 +12,10 @@
+
+ #include "third_party/trace_event/trace_event.h"
+#ifndef QT_D3DCOMPILER_DLL
+#define QT_D3DCOMPILER_DLL D3DCOMPILER_DLL
@@ -29,7 +28,7 @@ index bfeaf51..9d003b4 100644
// Definitions local to the translation unit
namespace
{
-@@ -132,6 +136,29 @@ bool HLSLCompiler::initialize()
+@@ -143,6 +147,27 @@ bool HLSLCompiler::initialize()
}
#endif // ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES
@@ -42,8 +41,6 @@ index bfeaf51..9d003b4 100644
+ defaultCompiler,
+ L"d3dcompiler_47.dll",
+ L"d3dcompiler_46.dll",
-+ L"d3dcompiler_45.dll",
-+ L"d3dcompiler_44.dll",
+ L"d3dcompiler_43.dll",
+ 0
+ };
@@ -60,5 +57,5 @@ index bfeaf51..9d003b4 100644
{
// Load the version of the D3DCompiler DLL associated with the Direct3D version ANGLE was built with.
--
-1.9.4.msysgit.1
+2.1.4
diff --git a/src/angle/patches/0004-Make-it-possible-to-link-ANGLE-statically-for-single.patch b/src/angle/patches/0004-Make-it-possible-to-link-ANGLE-statically-for-single.patch
deleted file mode 100644
index 45a3f17cca..0000000000
--- a/src/angle/patches/0004-Make-it-possible-to-link-ANGLE-statically-for-single.patch
+++ /dev/null
@@ -1,109 +0,0 @@
-From 3a39939b5eba9f788789961c4800ba62618f758c Mon Sep 17 00:00:00 2001
-From: Friedemann Kleint <Friedemann.Kleint@digia.com>
-Date: Tue, 11 Nov 2014 10:26:32 +0200
-Subject: [PATCH 04/16] Make it possible to link ANGLE statically for
- single-thread use.
-
-Fix exports and provide static instances of thread-local
-data depending on QT_OPENGL_ES_2_ANGLE_STATIC.
-
-Change-Id: Ifab25a820adf5953bb3b09036de53dbf7f1a7fd5
----
- src/3rdparty/angle/include/KHR/khrplatform.h | 2 +-
- src/3rdparty/angle/src/libEGL/main.cpp | 10 ++++++++++
- src/3rdparty/angle/src/libGLESv2/main.cpp | 10 ++++++++--
- 3 files changed, 19 insertions(+), 3 deletions(-)
-
-diff --git a/src/3rdparty/angle/include/KHR/khrplatform.h b/src/3rdparty/angle/include/KHR/khrplatform.h
-index c9e6f17..1ac2d3f 100644
---- a/src/3rdparty/angle/include/KHR/khrplatform.h
-+++ b/src/3rdparty/angle/include/KHR/khrplatform.h
-@@ -97,7 +97,7 @@
- *-------------------------------------------------------------------------
- * This precedes the return type of the function in the function prototype.
- */
--#if defined(_WIN32) && !defined(__SCITECH_SNAP__)
-+#if defined(_WIN32) && !defined(__SCITECH_SNAP__) && !defined(QT_OPENGL_ES_2_ANGLE_STATIC)
- # define KHRONOS_APICALL __declspec(dllimport)
- #elif defined (__SYMBIAN32__)
- # define KHRONOS_APICALL IMPORT_C
-diff --git a/src/3rdparty/angle/src/libEGL/main.cpp b/src/3rdparty/angle/src/libEGL/main.cpp
-index d1489f2..e88cad7 100644
---- a/src/3rdparty/angle/src/libEGL/main.cpp
-+++ b/src/3rdparty/angle/src/libEGL/main.cpp
-@@ -49,6 +49,8 @@ void DeallocateCurrent()
-
- }
-
-+#ifndef QT_OPENGL_ES_2_ANGLE_STATIC
-+
- extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved)
- {
- switch (reason)
-@@ -108,16 +110,24 @@ extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved
- return TRUE;
- }
-
-+#endif // !QT_OPENGL_ES_2_ANGLE_STATIC
-+
- namespace egl
- {
-
- Current *GetCurrentData()
- {
-+#ifndef QT_OPENGL_ES_2_ANGLE_STATIC
- Current *current = reinterpret_cast<Current*>(GetTLSValue(currentTLS));
-
- // ANGLE issue 488: when the dll is loaded after thread initialization,
- // thread local storage (current) might not exist yet.
- return (current ? current : AllocateCurrent());
-+#else
-+ // No precautions for thread safety taken as ANGLE is used single-threaded in Qt.
-+ static Current current = { EGL_SUCCESS, EGL_OPENGL_ES_API, EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_SURFACE };
-+ return &current;
-+#endif
- }
-
- void recordError(const Error &error)
-diff --git a/src/3rdparty/angle/src/libGLESv2/main.cpp b/src/3rdparty/angle/src/libGLESv2/main.cpp
-index 3ac00d5..00f63ae 100644
---- a/src/3rdparty/angle/src/libGLESv2/main.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/main.cpp
-@@ -74,7 +74,7 @@ void DeallocateCurrent()
-
- }
-
--#ifdef ANGLE_PLATFORM_WINDOWS
-+#if defined(ANGLE_PLATFORM_WINDOWS) && !defined(QT_OPENGL_ES_2_ANGLE_STATIC)
- extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved)
- {
- switch (reason)
-@@ -117,18 +117,24 @@ extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved
-
- return TRUE;
- }
--#endif
-+#endif // ANGLE_PLATFORM_WINDOWS && !QT_OPENGL_ES_2_ANGLE_STATIC
-
- namespace gl
- {
-
- Current *GetCurrentData()
- {
-+#ifndef QT_OPENGL_ES_2_ANGLE_STATIC
- Current *current = reinterpret_cast<Current*>(GetTLSValue(currentTLS));
-
- // ANGLE issue 488: when the dll is loaded after thread initialization,
- // thread local storage (current) might not exist yet.
- return (current ? current : AllocateCurrent());
-+#else
-+ // No precautions for thread safety taken as ANGLE is used single-threaded in Qt.
-+ static Current current = { 0, 0 };
-+ return &current;
-+#endif
- }
-
- void makeCurrent(Context *context, egl::Display *display, egl::Surface *surface)
---
-1.9.4.msysgit.1
-
diff --git a/src/angle/patches/0005-ANGLE-Add-support-for-querying-platform-device.patch b/src/angle/patches/0005-ANGLE-Add-support-for-querying-platform-device.patch
new file mode 100644
index 0000000000..8a5bffebe4
--- /dev/null
+++ b/src/angle/patches/0005-ANGLE-Add-support-for-querying-platform-device.patch
@@ -0,0 +1,84 @@
+From f6bfeecf2c7d14e9fd2b637e6ce9555489e3a256 Mon Sep 17 00:00:00 2001
+From: Andrew Knight <andrew.knight@intopalo.com>
+Date: Fri, 27 Mar 2015 17:58:41 +0200
+Subject: [PATCH 5/5] ANGLE: Add support for querying platform device
+
+The EGL_EXT_device_base extension allows for querying the platform
+device of the graphics hardware via eglQueryDisplayAttribEXT().
+As that extension is not supported by ANGLE, this patch adds similar
+functionality to the existing eglQuerySurfacePointerANGLE API. When
+EGL_DEVICE_EXT is passed as the queried attribute, the underlying
+D3D/DXGI device pointer is passed back to the caller via the value
+argument.
+
+The D3D device is needed for video support in QtMultimedia as well as
+the IDXGIDevice3::Trim() calls required by the Windows Store.
+
+Change-Id: Ibdf228d81d6604e56db9dd8597d7cd2983ebc428
+---
+ src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp | 7 +++++--
+ src/3rdparty/angle/src/libANGLE/renderer/d3d/SwapChainD3D.h | 1 +
+ src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp | 5 +++++
+ src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h | 2 ++
+ 4 files changed, 13 insertions(+), 2 deletions(-)
+
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp
+index a3c457d..4fde295 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/SurfaceD3D.cpp
+@@ -385,8 +385,11 @@ EGLint SurfaceD3D::isPostSubBufferSupported() const
+
+ egl::Error SurfaceD3D::querySurfacePointerANGLE(EGLint attribute, void **value)
+ {
+- ASSERT(attribute == EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE);
+- *value = mSwapChain->getShareHandle();
++ ASSERT(attribute == EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE || attribute == EGL_DEVICE_EXT);
++ if (attribute == EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE)
++ *value = mSwapChain->getShareHandle();
++ else if (attribute == EGL_DEVICE_EXT)
++ *value = mSwapChain->getDevice();
+ return egl::Error(EGL_SUCCESS);
+ }
+
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/SwapChainD3D.h b/src/3rdparty/angle/src/libANGLE/renderer/d3d/SwapChainD3D.h
+index 3bde92e..da36e52 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/SwapChainD3D.h
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/SwapChainD3D.h
+@@ -41,6 +41,7 @@ class SwapChainD3D : angle::NonCopyable
+ virtual EGLint reset(EGLint backbufferWidth, EGLint backbufferHeight, EGLint swapInterval) = 0;
+ virtual EGLint swapRect(EGLint x, EGLint y, EGLint width, EGLint height) = 0;
+ virtual void recreate() = 0;
++ virtual void *getDevice() { return NULL; }
+
+ virtual RenderTargetD3D *getColorRenderTarget() = 0;
+ virtual RenderTargetD3D *getDepthStencilRenderTarget() = 0;
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp
+index bcb2505..298f3cc 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp
+@@ -703,4 +703,9 @@ void SwapChain11::recreate()
+ // possibly should use this method instead of reset
+ }
+
++void *rx::SwapChain11::getDevice()
++{
++ return mRenderer->getDevice();
++}
++
+ }
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h
+index 4ea6778..48c808a 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h
+@@ -43,6 +43,8 @@ class SwapChain11 : public SwapChainD3D
+ EGLint getWidth() const { return mWidth; }
+ EGLint getHeight() const { return mHeight; }
+
++ virtual void *getDevice();
++
+ static SwapChain11 *makeSwapChain11(SwapChainD3D *swapChain);
+
+ private:
+--
+2.1.4
+
diff --git a/src/angle/patches/0009-ANGLE-Support-WinRT.patch b/src/angle/patches/0009-ANGLE-Support-WinRT.patch
deleted file mode 100644
index a38fb4ea13..0000000000
--- a/src/angle/patches/0009-ANGLE-Support-WinRT.patch
+++ /dev/null
@@ -1,837 +0,0 @@
-From 4d150ba3814f824f1cadaedbdb83d0ac79d0e1a2 Mon Sep 17 00:00:00 2001
-From: Andrew Knight <andrew.knight@theqtcompany.com>
-Date: Fri, 14 Nov 2014 09:28:11 +0200
-Subject: [PATCH 09/16] ANGLE: Support WinRT
-
-Tweak ANGLE's existing support for WinRT to allow for changing the
-window size on Windows Phone.
-
-Change-Id: Ia312b5318b977838a2953f1f530487cbf24974bc
----
- src/3rdparty/angle/include/EGL/eglplatform.h | 5 +-
- src/3rdparty/angle/src/common/NativeWindow.h | 7 +-
- src/3rdparty/angle/src/common/platform.h | 4 +-
- .../angle/src/common/win32/NativeWindow.cpp | 2 +-
- .../src/common/winrt/CoreWindowNativeWindow.cpp | 87 +++++++++++++---------
- .../src/common/winrt/CoreWindowNativeWindow.h | 48 ++----------
- .../src/common/winrt/InspectableNativeWindow.cpp | 8 +-
- .../src/common/winrt/InspectableNativeWindow.h | 7 +-
- .../common/winrt/SwapChainPanelNativeWindow.cpp | 2 +-
- .../src/common/winrt/SwapChainPanelNativeWindow.h | 2 +-
- src/3rdparty/angle/src/libEGL/Display.h | 1 +
- src/3rdparty/angle/src/libEGL/Surface.cpp | 45 ++++++++---
- src/3rdparty/angle/src/libEGL/Surface.h | 4 +
- src/3rdparty/angle/src/libEGL/libEGL.cpp | 20 +++++
- .../src/libGLESv2/renderer/d3d/d3d11/Renderer11.h | 2 +-
- .../libGLESv2/renderer/d3d/d3d11/SwapChain11.cpp | 74 +++++++++++-------
- .../src/libGLESv2/renderer/d3d/d3d11/SwapChain11.h | 2 +
- 17 files changed, 189 insertions(+), 131 deletions(-)
-
-diff --git a/src/3rdparty/angle/include/EGL/eglplatform.h b/src/3rdparty/angle/include/EGL/eglplatform.h
-index 3793e57..2eb3674 100644
---- a/src/3rdparty/angle/include/EGL/eglplatform.h
-+++ b/src/3rdparty/angle/include/EGL/eglplatform.h
-@@ -73,13 +73,14 @@
- #endif
- #include <windows.h>
-
--typedef HDC EGLNativeDisplayType;
- typedef HBITMAP EGLNativePixmapType;
-
--#if defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_PC_APP /* Windows Store */
-+#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_PC_APP || WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) /* Windows Store */
- #include <inspectable.h>
-+typedef IInspectable* EGLNativeDisplayType;
- typedef IInspectable* EGLNativeWindowType;
- #else
-+typedef HDC EGLNativeDisplayType;
- typedef HWND EGLNativeWindowType;
- #endif
-
-diff --git a/src/3rdparty/angle/src/common/NativeWindow.h b/src/3rdparty/angle/src/common/NativeWindow.h
-index dc5fc8f..9e93aea 100644
---- a/src/3rdparty/angle/src/common/NativeWindow.h
-+++ b/src/3rdparty/angle/src/common/NativeWindow.h
-@@ -44,10 +44,11 @@ typedef IDXGIFactory DXGIFactory;
-
- namespace rx
- {
-+
- class NativeWindow
- {
-- public:
-- explicit NativeWindow(EGLNativeWindowType window);
-+public:
-+ explicit NativeWindow(EGLNativeWindowType window, EGLNativeDisplayType display);
-
- bool initialize();
- bool getClientRect(LPRECT rect);
-@@ -58,9 +59,11 @@ class NativeWindow
- DXGISwapChain** swapChain);
-
- inline EGLNativeWindowType getNativeWindow() const { return mWindow; }
-+ inline EGLNativeDisplayType getNativeDisplay() const { return mDisplay; }
-
- private:
- EGLNativeWindowType mWindow;
-+ EGLNativeDisplayType mDisplay;
-
- #if defined(ANGLE_ENABLE_WINDOWS_STORE)
- std::shared_ptr<InspectableNativeWindow> mImpl;
-diff --git a/src/3rdparty/angle/src/common/platform.h b/src/3rdparty/angle/src/common/platform.h
-index cd12dba..0065ec7 100644
---- a/src/3rdparty/angle/src/common/platform.h
-+++ b/src/3rdparty/angle/src/common/platform.h
-@@ -34,7 +34,7 @@
- #endif
-
- #ifdef ANGLE_PLATFORM_WINDOWS
--# if defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_PC_APP
-+# if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_PC_APP || WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
- # define ANGLE_ENABLE_WINDOWS_STORE 1
- # endif
- # ifndef STRICT
-@@ -67,7 +67,9 @@
- # if defined(ANGLE_ENABLE_WINDOWS_STORE)
- # include <dxgi1_3.h>
- # if defined(_DEBUG)
-+# if (WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP)
- # include <DXProgrammableCapture.h>
-+# endif
- # include <dxgidebug.h>
- # endif
- # endif
-diff --git a/src/3rdparty/angle/src/common/win32/NativeWindow.cpp b/src/3rdparty/angle/src/common/win32/NativeWindow.cpp
-index aa2bfa4..2440747 100644
---- a/src/3rdparty/angle/src/common/win32/NativeWindow.cpp
-+++ b/src/3rdparty/angle/src/common/win32/NativeWindow.cpp
-@@ -16,7 +16,7 @@ bool IsValidEGLNativeWindowType(EGLNativeWindowType window)
- return (IsWindow(window) == TRUE);
- }
-
--NativeWindow::NativeWindow(EGLNativeWindowType window) : mWindow(window)
-+NativeWindow::NativeWindow(EGLNativeWindowType window, EGLNativeDisplayType display) : mWindow(window), mDisplay(display)
- {
- }
-
-diff --git a/src/3rdparty/angle/src/common/winrt/CoreWindowNativeWindow.cpp b/src/3rdparty/angle/src/common/winrt/CoreWindowNativeWindow.cpp
-index 0e63fa5..9b65c15 100644
---- a/src/3rdparty/angle/src/common/winrt/CoreWindowNativeWindow.cpp
-+++ b/src/3rdparty/angle/src/common/winrt/CoreWindowNativeWindow.cpp
-@@ -6,21 +6,25 @@
-
- // CoreWindowNativeWindow.cpp: NativeWindow for managing ICoreWindow native window types.
-
--#include <windows.graphics.display.h>
-+#include <algorithm>
- #include "common/winrt/CoreWindowNativeWindow.h"
- using namespace ABI::Windows::Foundation::Collections;
-
- namespace rx
- {
-+
-+typedef ITypedEventHandler<ABI::Windows::UI::Core::CoreWindow *, ABI::Windows::UI::Core::WindowSizeChangedEventArgs *> SizeChangedHandler;
-+
- CoreWindowNativeWindow::~CoreWindowNativeWindow()
- {
- unregisterForSizeChangeEvents();
- }
-
--bool CoreWindowNativeWindow::initialize(EGLNativeWindowType window, IPropertySet *propertySet)
-+bool CoreWindowNativeWindow::initialize(EGLNativeWindowType window, EGLNativeDisplayType display, IPropertySet *propertySet)
- {
- ComPtr<IPropertySet> props = propertySet;
- ComPtr<IInspectable> win = window;
-+ ComPtr<IInspectable> displayInformation = display;
- SIZE swapChainSize = {};
- bool swapChainSizeSpecified = false;
- HRESULT result = S_OK;
-@@ -47,6 +51,29 @@ bool CoreWindowNativeWindow::initialize(EGLNativeWindowType window, IPropertySet
-
- if (SUCCEEDED(result))
- {
-+ result = displayInformation.As(&mDisplayInformation);
-+ }
-+
-+ if (SUCCEEDED(result))
-+ {
-+#if WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP
-+ ComPtr<ABI::Windows::Graphics::Display::IDisplayInformation2> displayInformation2;
-+ result = mDisplayInformation.As(&displayInformation2);
-+ ASSERT(SUCCEEDED(result));
-+
-+ result = displayInformation2->get_RawPixelsPerViewPixel(&mScaleFactor);
-+ ASSERT(SUCCEEDED(result));
-+#else
-+ ABI::Windows::Graphics::Display::ResolutionScale resolutionScale;
-+ result = mDisplayInformation->get_ResolutionScale(&resolutionScale);
-+ ASSERT(SUCCEEDED(result));
-+
-+ mScaleFactor = DOUBLE(resolutionScale) / 100.0;
-+#endif
-+ }
-+
-+ if (SUCCEEDED(result))
-+ {
- // If a swapchain size is specfied, then the automatic resize
- // behaviors implemented by the host should be disabled. The swapchain
- // will be still be scaled when being rendered to fit the bounds
-@@ -60,7 +87,14 @@ bool CoreWindowNativeWindow::initialize(EGLNativeWindowType window, IPropertySet
- }
- else
- {
-- result = GetCoreWindowSizeInPixels(mCoreWindow, &mClientRect);
-+ ABI::Windows::Foundation::Rect rect;
-+ HRESULT result = mCoreWindow->get_Bounds(&rect);
-+ if (SUCCEEDED(result))
-+ {
-+ LONG width = std::floor(rect.Width * mScaleFactor + 0.5);
-+ LONG height = std::floor(rect.Height * mScaleFactor + 0.5);
-+ mClientRect = { 0, 0, width, height };
-+ }
- }
- }
-
-@@ -76,12 +110,8 @@ bool CoreWindowNativeWindow::initialize(EGLNativeWindowType window, IPropertySet
-
- bool CoreWindowNativeWindow::registerForSizeChangeEvents()
- {
-- ComPtr<IWindowSizeChangedEventHandler> sizeChangedHandler;
-- HRESULT result = Microsoft::WRL::MakeAndInitialize<CoreWindowSizeChangedHandler>(sizeChangedHandler.ReleaseAndGetAddressOf(), this->shared_from_this());
-- if (SUCCEEDED(result))
-- {
-- result = mCoreWindow->add_SizeChanged(sizeChangedHandler.Get(), &mSizeChangedEventToken);
-- }
-+ HRESULT result = mCoreWindow->add_SizeChanged(Callback<SizeChangedHandler>(this, &CoreWindowNativeWindow::onSizeChanged).Get(),
-+ &mSizeChangedEventToken);
-
- if (SUCCEEDED(result))
- {
-@@ -126,7 +156,7 @@ HRESULT CoreWindowNativeWindow::createSwapChain(ID3D11Device *device, DXGIFactor
- if (SUCCEEDED(result))
- {
-
--#if (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
-+#if (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) // This block is disabled for Qt applications, as the resize events are expected
- // Test if swapchain supports resize. On Windows Phone devices, this will return DXGI_ERROR_UNSUPPORTED. On
- // other devices DXGI_ERROR_INVALID_CALL should be returned because the combination of flags passed
- // (DXGI_SWAP_CHAIN_FLAG_NONPREROTATED | DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE) are invalid flag combinations.
-@@ -152,36 +182,19 @@ HRESULT CoreWindowNativeWindow::createSwapChain(ID3D11Device *device, DXGIFactor
- return result;
- }
-
--HRESULT GetCoreWindowSizeInPixels(const ComPtr<ABI::Windows::UI::Core::ICoreWindow>& coreWindow, RECT *windowSize)
-+// Basically, this shouldn't be used on Phone
-+HRESULT CoreWindowNativeWindow::onSizeChanged(ABI::Windows::UI::Core::ICoreWindow *, ABI::Windows::UI::Core::IWindowSizeChangedEventArgs *e)
- {
-- ABI::Windows::Foundation::Rect bounds;
-- HRESULT result = coreWindow->get_Bounds(&bounds);
-- if (SUCCEEDED(result))
-+ ABI::Windows::Foundation::Size size;
-+ if (SUCCEEDED(e->get_Size(&size)))
- {
-- *windowSize = { 0, 0, ConvertDipsToPixels(bounds.Width), ConvertDipsToPixels(bounds.Height) };
-+ SIZE windowSizeInPixels = {
-+ std::floor(size.Width * mScaleFactor + 0.5),
-+ std::floor(size.Height * mScaleFactor + 0.5)
-+ };
-+ setNewClientSize(windowSizeInPixels);
- }
-
-- return result;
--}
--
--static float GetLogicalDpi()
--{
-- ComPtr<ABI::Windows::Graphics::Display::IDisplayPropertiesStatics> displayProperties;
-- float dpi = 96.0f;
--
-- if (SUCCEEDED(GetActivationFactory(HStringReference(RuntimeClass_Windows_Graphics_Display_DisplayProperties).Get(), displayProperties.GetAddressOf())))
-- {
-- if (SUCCEEDED(displayProperties->get_LogicalDpi(&dpi)))
-- {
-- return dpi;
-- }
-- }
-- return dpi;
--}
--
--long ConvertDipsToPixels(float dips)
--{
-- static const float dipsPerInch = 96.0f;
-- return lround((dips * GetLogicalDpi() / dipsPerInch));
-+ return S_OK;
- }
- }
-diff --git a/src/3rdparty/angle/src/common/winrt/CoreWindowNativeWindow.h b/src/3rdparty/angle/src/common/winrt/CoreWindowNativeWindow.h
-index 0c6222d..1c55124 100644
---- a/src/3rdparty/angle/src/common/winrt/CoreWindowNativeWindow.h
-+++ b/src/3rdparty/angle/src/common/winrt/CoreWindowNativeWindow.h
-@@ -11,67 +11,29 @@
-
- #include "common/winrt/InspectableNativeWindow.h"
- #include <memory>
--
--typedef ABI::Windows::Foundation::__FITypedEventHandler_2_Windows__CUI__CCore__CCoreWindow_Windows__CUI__CCore__CWindowSizeChangedEventArgs_t IWindowSizeChangedEventHandler;
-+#include <windows.graphics.display.h>
-
- namespace rx
- {
--long ConvertDipsToPixels(float dips);
-
- class CoreWindowNativeWindow : public InspectableNativeWindow, public std::enable_shared_from_this<CoreWindowNativeWindow>
- {
- public:
- ~CoreWindowNativeWindow();
-
-- bool initialize(EGLNativeWindowType window, IPropertySet *propertySet);
-+ bool initialize(EGLNativeWindowType window, EGLNativeDisplayType display, IPropertySet *propertySet);
- bool registerForSizeChangeEvents();
- void unregisterForSizeChangeEvents();
- HRESULT createSwapChain(ID3D11Device *device, DXGIFactory *factory, DXGI_FORMAT format, unsigned int width, unsigned int height, DXGISwapChain **swapChain);
-
- private:
-+ HRESULT onSizeChanged(ABI::Windows::UI::Core::ICoreWindow *, ABI::Windows::UI::Core::IWindowSizeChangedEventArgs *);
-+
- ComPtr<ABI::Windows::UI::Core::ICoreWindow> mCoreWindow;
-+ ComPtr<ABI::Windows::Graphics::Display::IDisplayInformation> mDisplayInformation;
- ComPtr<IMap<HSTRING, IInspectable*>> mPropertyMap;
- };
-
--[uuid(7F924F66-EBAE-40E5-A10B-B8F35E245190)]
--class CoreWindowSizeChangedHandler :
-- public Microsoft::WRL::RuntimeClass<Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::ClassicCom>, IWindowSizeChangedEventHandler>
--{
-- public:
-- CoreWindowSizeChangedHandler() { }
-- HRESULT RuntimeClassInitialize(std::shared_ptr<InspectableNativeWindow> host)
-- {
-- if (!host)
-- {
-- return E_INVALIDARG;
-- }
--
-- mHost = host;
-- return S_OK;
-- }
--
-- // IWindowSizeChangedEventHandler
-- IFACEMETHOD(Invoke)(ABI::Windows::UI::Core::ICoreWindow *sender, ABI::Windows::UI::Core::IWindowSizeChangedEventArgs *sizeChangedEventArgs)
-- {
-- std::shared_ptr<InspectableNativeWindow> host = mHost.lock();
-- if (host)
-- {
-- ABI::Windows::Foundation::Size windowSize;
-- if (SUCCEEDED(sizeChangedEventArgs->get_Size(&windowSize)))
-- {
-- SIZE windowSizeInPixels = { ConvertDipsToPixels(windowSize.Width), ConvertDipsToPixels(windowSize.Height) };
-- host->setNewClientSize(windowSizeInPixels);
-- }
-- }
--
-- return S_OK;
-- }
--
-- private:
-- std::weak_ptr<InspectableNativeWindow> mHost;
--};
--
--HRESULT GetCoreWindowSizeInPixels(const ComPtr<ABI::Windows::UI::Core::ICoreWindow>& coreWindow, RECT *windowSize);
- }
-
- #endif // COMMON_WINRT_COREWINDOWNATIVEWINDOW_H_
-diff --git a/src/3rdparty/angle/src/common/winrt/InspectableNativeWindow.cpp b/src/3rdparty/angle/src/common/winrt/InspectableNativeWindow.cpp
-index c062a48..0589f6d 100644
---- a/src/3rdparty/angle/src/common/winrt/InspectableNativeWindow.cpp
-+++ b/src/3rdparty/angle/src/common/winrt/InspectableNativeWindow.cpp
-@@ -11,9 +11,9 @@
-
- namespace rx
- {
--NativeWindow::NativeWindow(EGLNativeWindowType window)
-+NativeWindow::NativeWindow(EGLNativeWindowType window, EGLNativeDisplayType display)
-+ : mWindow(window), mDisplay(display)
- {
-- mWindow = window;
- }
-
- bool NativeWindow::initialize()
-@@ -40,7 +40,7 @@ bool NativeWindow::initialize()
- mImpl = std::make_shared<CoreWindowNativeWindow>();
- if (mImpl)
- {
-- return mImpl->initialize(mWindow, propertySet.Get());
-+ return mImpl->initialize(mWindow, mDisplay, propertySet.Get());
- }
- }
- else if (IsSwapChainPanel(mWindow, &swapChainPanel))
-@@ -48,7 +48,7 @@ bool NativeWindow::initialize()
- mImpl = std::make_shared<SwapChainPanelNativeWindow>();
- if (mImpl)
- {
-- return mImpl->initialize(mWindow, propertySet.Get());
-+ return mImpl->initialize(mWindow, mDisplay, propertySet.Get());
- }
- }
- else
-diff --git a/src/3rdparty/angle/src/common/winrt/InspectableNativeWindow.h b/src/3rdparty/angle/src/common/winrt/InspectableNativeWindow.h
-index c625348..402941a 100644
---- a/src/3rdparty/angle/src/common/winrt/InspectableNativeWindow.h
-+++ b/src/3rdparty/angle/src/common/winrt/InspectableNativeWindow.h
-@@ -32,13 +32,14 @@ class InspectableNativeWindow
- mRequiresSwapChainScaling(false),
- mClientRectChanged(false),
- mClientRect({0,0,0,0}),
-- mNewClientRect({0,0,0,0})
-+ mNewClientRect({0,0,0,0}),
-+ mScaleFactor(1.0)
- {
- mSizeChangedEventToken.value = 0;
- }
- virtual ~InspectableNativeWindow(){}
-
-- virtual bool initialize(EGLNativeWindowType window, IPropertySet *propertySet) = 0;
-+ virtual bool initialize(EGLNativeWindowType window, EGLNativeDisplayType display, IPropertySet *propertySet) = 0;
- virtual HRESULT createSwapChain(ID3D11Device *device, DXGIFactory *factory, DXGI_FORMAT format, unsigned int width, unsigned int height, DXGISwapChain **swapChain) = 0;
- virtual bool registerForSizeChangeEvents() = 0;
- virtual void unregisterForSizeChangeEvents() = 0;
-@@ -49,6 +50,7 @@ class InspectableNativeWindow
- if (mClientRectChanged && mSupportsSwapChainResize)
- {
- mClientRect = mNewClientRect;
-+ mClientRectChanged = false;
- }
-
- *rect = mClientRect;
-@@ -76,6 +78,7 @@ protected:
- RECT mClientRect;
- RECT mNewClientRect;
- bool mClientRectChanged;
-+ DOUBLE mScaleFactor;
-
- EventRegistrationToken mSizeChangedEventToken;
- };
-diff --git a/src/3rdparty/angle/src/common/winrt/SwapChainPanelNativeWindow.cpp b/src/3rdparty/angle/src/common/winrt/SwapChainPanelNativeWindow.cpp
-index 4e4fb6d..268dfbd 100644
---- a/src/3rdparty/angle/src/common/winrt/SwapChainPanelNativeWindow.cpp
-+++ b/src/3rdparty/angle/src/common/winrt/SwapChainPanelNativeWindow.cpp
-@@ -18,7 +18,7 @@ SwapChainPanelNativeWindow::~SwapChainPanelNativeWindow()
- unregisterForSizeChangeEvents();
- }
-
--bool SwapChainPanelNativeWindow::initialize(EGLNativeWindowType window, IPropertySet *propertySet)
-+bool SwapChainPanelNativeWindow::initialize(EGLNativeWindowType window, EGLNativeDisplayType display, IPropertySet *propertySet)
- {
- ComPtr<IPropertySet> props = propertySet;
- ComPtr<IInspectable> win = window;
-diff --git a/src/3rdparty/angle/src/common/winrt/SwapChainPanelNativeWindow.h b/src/3rdparty/angle/src/common/winrt/SwapChainPanelNativeWindow.h
-index e88f554..5bbf274 100644
---- a/src/3rdparty/angle/src/common/winrt/SwapChainPanelNativeWindow.h
-+++ b/src/3rdparty/angle/src/common/winrt/SwapChainPanelNativeWindow.h
-@@ -18,7 +18,7 @@ class SwapChainPanelNativeWindow : public InspectableNativeWindow, public std::e
- public:
- ~SwapChainPanelNativeWindow();
-
-- bool initialize(EGLNativeWindowType window, IPropertySet *propertySet);
-+ bool initialize(EGLNativeWindowType window, EGLNativeDisplayType display, IPropertySet *propertySet);
- bool registerForSizeChangeEvents();
- void unregisterForSizeChangeEvents();
- HRESULT createSwapChain(ID3D11Device *device, DXGIFactory *factory, DXGI_FORMAT format, unsigned int width, unsigned int height, DXGISwapChain **swapChain);
-diff --git a/src/3rdparty/angle/src/libEGL/Display.h b/src/3rdparty/angle/src/libEGL/Display.h
-index 378323a..b3ffcc8 100644
---- a/src/3rdparty/angle/src/libEGL/Display.h
-+++ b/src/3rdparty/angle/src/libEGL/Display.h
-@@ -67,6 +67,7 @@ class Display
-
- const char *getExtensionString() const;
- const char *getVendorString() const;
-+ EGLNativeDisplayType getDisplayId() const { return mDisplayId; }
-
- private:
- DISALLOW_COPY_AND_ASSIGN(Display);
-diff --git a/src/3rdparty/angle/src/libEGL/Surface.cpp b/src/3rdparty/angle/src/libEGL/Surface.cpp
-index 3414656..b664a85 100644
---- a/src/3rdparty/angle/src/libEGL/Surface.cpp
-+++ b/src/3rdparty/angle/src/libEGL/Surface.cpp
-@@ -31,7 +31,7 @@ namespace egl
- {
-
- Surface::Surface(Display *display, const Config *config, EGLNativeWindowType window, EGLint fixedSize, EGLint width, EGLint height, EGLint postSubBufferSupported)
-- : mDisplay(display), mConfig(config), mNativeWindow(window), mPostSubBufferSupported(postSubBufferSupported)
-+ : mDisplay(display), mConfig(config), mNativeWindow(window, display->getDisplayId()), mPostSubBufferSupported(postSubBufferSupported)
- {
- //TODO(jmadill): MANGLE refactor. (note, can't call makeRendererD3D because of dll export issues)
- mRenderer = static_cast<rx::RendererD3D*>(mDisplay->getRenderer());
-@@ -47,6 +47,8 @@ Surface::Surface(Display *display, const Config *config, EGLNativeWindowType win
- mSwapInterval = -1;
- mWidth = width;
- mHeight = height;
-+ mFixedWidth = mWidth;
-+ mFixedHeight = mHeight;
- setSwapInterval(1);
- mFixedSize = fixedSize;
-
-@@ -54,7 +56,7 @@ Surface::Surface(Display *display, const Config *config, EGLNativeWindowType win
- }
-
- Surface::Surface(Display *display, const Config *config, HANDLE shareHandle, EGLint width, EGLint height, EGLenum textureFormat, EGLenum textureType)
-- : mDisplay(display), mNativeWindow(NULL), mConfig(config), mShareHandle(shareHandle), mWidth(width), mHeight(height), mPostSubBufferSupported(EGL_FALSE)
-+ : mDisplay(display), mNativeWindow(NULL, NULL), mConfig(config), mShareHandle(shareHandle), mWidth(width), mHeight(height), mPostSubBufferSupported(EGL_FALSE)
- {
- //TODO(jmadill): MANGLE refactor. (note, can't call makeRendererD3D because of dll export issues)
- mRenderer = static_cast<rx::RendererD3D*>(mDisplay->getRenderer());
-@@ -71,6 +73,8 @@ Surface::Surface(Display *display, const Config *config, HANDLE shareHandle, EGL
- setSwapInterval(1);
- // This constructor is for offscreen surfaces, which are always fixed-size.
- mFixedSize = EGL_TRUE;
-+ mFixedWidth = mWidth;
-+ mFixedHeight = mHeight;
- }
-
- Surface::~Surface()
-@@ -157,10 +161,13 @@ Error Surface::resetSwapChain()
-
- Error Surface::resizeSwapChain(int backbufferWidth, int backbufferHeight)
- {
-- ASSERT(backbufferWidth >= 0 && backbufferHeight >= 0);
- ASSERT(mSwapChain);
-
-- EGLint status = mSwapChain->resize(std::max(1, backbufferWidth), std::max(1, backbufferHeight));
-+#if !defined(ANGLE_ENABLE_WINDOWS_STORE)
-+ backbufferWidth = std::max(1, backbufferWidth);
-+ backbufferHeight = std::max(1, backbufferHeight);
-+#endif
-+ EGLint status = mSwapChain->resize(backbufferWidth, backbufferHeight);
-
- if (status == EGL_CONTEXT_LOST)
- {
-@@ -209,14 +216,14 @@ Error Surface::swapRect(EGLint x, EGLint y, EGLint width, EGLint height)
- return Error(EGL_SUCCESS);
- }
-
-- if (x + width > mWidth)
-+ if (x + width > abs(mWidth))
- {
-- width = mWidth - x;
-+ width = abs(mWidth) - x;
- }
-
-- if (y + height > mHeight)
-+ if (y + height > abs(mHeight))
- {
-- height = mHeight - y;
-+ height = abs(mHeight) - y;
- }
-
- if (width == 0 || height == 0)
-@@ -224,6 +231,9 @@ Error Surface::swapRect(EGLint x, EGLint y, EGLint width, EGLint height)
- return Error(EGL_SUCCESS);
- }
-
-+ ASSERT(width > 0);
-+ ASSERT(height > 0);
-+
- EGLint status = mSwapChain->swapRect(x, y, width, height);
-
- if (status == EGL_CONTEXT_LOST)
-@@ -352,6 +362,13 @@ bool Surface::checkForOutOfDateSwapChain()
- sizeDirty = clientWidth != getWidth() || clientHeight != getHeight();
- }
-
-+ if (mFixedSize && (mWidth != mFixedWidth || mHeight != mFixedHeight))
-+ {
-+ clientWidth = mFixedWidth;
-+ clientHeight = mFixedHeight;
-+ sizeDirty = true;
-+ }
-+
- bool wasDirty = (mSwapIntervalDirty || sizeDirty);
-
- if (mSwapIntervalDirty)
-@@ -378,7 +395,7 @@ bool Surface::checkForOutOfDateSwapChain()
-
- Error Surface::swap()
- {
-- return swapRect(0, 0, mWidth, mHeight);
-+ return swapRect(0, 0, abs(mWidth), abs(mHeight));
- }
-
- Error Surface::postSubBuffer(EGLint x, EGLint y, EGLint width, EGLint height)
-@@ -471,6 +488,16 @@ EGLint Surface::isFixedSize() const
- return mFixedSize;
- }
-
-+void Surface::setFixedWidth(EGLint width)
-+{
-+ mFixedWidth = width;
-+}
-+
-+void Surface::setFixedHeight(EGLint height)
-+{
-+ mFixedHeight = height;
-+}
-+
- EGLenum Surface::getFormat() const
- {
- return mConfig->mRenderTargetFormat;
-diff --git a/src/3rdparty/angle/src/libEGL/Surface.h b/src/3rdparty/angle/src/libEGL/Surface.h
-index 662fe21..46382d0 100644
---- a/src/3rdparty/angle/src/libEGL/Surface.h
-+++ b/src/3rdparty/angle/src/libEGL/Surface.h
-@@ -70,6 +70,8 @@ class Surface
- virtual gl::Texture2D *getBoundTexture() const;
-
- EGLint isFixedSize() const;
-+ void setFixedWidth(EGLint width);
-+ void setFixedHeight(EGLint height);
-
- private:
- DISALLOW_COPY_AND_ASSIGN(Surface);
-@@ -91,6 +93,8 @@ class Surface
- const egl::Config *mConfig; // EGL config surface was created with
- EGLint mHeight; // Height of surface
- EGLint mWidth; // Width of surface
-+ EGLint mFixedHeight; // Pending height of the surface
-+ EGLint mFixedWidth; // Pending width of the surface
- // EGLint horizontalResolution; // Horizontal dot pitch
- // EGLint verticalResolution; // Vertical dot pitch
- // EGLBoolean largestPBuffer; // If true, create largest pbuffer possible
-diff --git a/src/3rdparty/angle/src/libEGL/libEGL.cpp b/src/3rdparty/angle/src/libEGL/libEGL.cpp
-index 6110698..dc20d85 100644
---- a/src/3rdparty/angle/src/libEGL/libEGL.cpp
-+++ b/src/3rdparty/angle/src/libEGL/libEGL.cpp
-@@ -706,6 +706,26 @@ EGLBoolean __stdcall eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint
- return EGL_FALSE;
- }
-
-+ switch (attribute)
-+ {
-+ case EGL_WIDTH:
-+ if (!eglSurface->isFixedSize() || !value) {
-+ recordError(egl::Error(EGL_BAD_PARAMETER));
-+ return EGL_FALSE;
-+ }
-+ eglSurface->setFixedWidth(value);
-+ return EGL_TRUE;
-+ case EGL_HEIGHT:
-+ if (!eglSurface->isFixedSize() || !value) {
-+ recordError(egl::Error(EGL_BAD_PARAMETER));
-+ return EGL_FALSE;
-+ }
-+ eglSurface->setFixedHeight(value);
-+ return EGL_TRUE;
-+ default:
-+ break;
-+ }
-+
- UNIMPLEMENTED(); // FIXME
-
- recordError(egl::Error(EGL_SUCCESS));
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.h b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.h
-index 1655f1d..c789cae 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.h
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.h
-@@ -231,7 +231,7 @@ class Renderer11 : public RendererD3D
-
- HMODULE mD3d11Module;
- HMODULE mDxgiModule;
-- HDC mDc;
-+ EGLNativeDisplayType mDc;
- std::vector<D3D_FEATURE_LEVEL> mAvailableFeatureLevels;
- D3D_DRIVER_TYPE mDriverType;
-
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/SwapChain11.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/SwapChain11.cpp
-index 834b7bd..52c8a81 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/SwapChain11.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/SwapChain11.cpp
-@@ -42,6 +42,8 @@ SwapChain11::SwapChain11(Renderer11 *renderer, NativeWindow nativeWindow, HANDLE
- mPassThroughPS = NULL;
- mWidth = -1;
- mHeight = -1;
-+ mRotateL = false;
-+ mRotateR = false;
- mSwapInterval = 0;
- mAppCreatedShareHandle = mShareHandle != NULL;
- mPassThroughResourcesInit = false;
-@@ -92,10 +94,11 @@ EGLint SwapChain11::resetOffscreenTexture(int backbufferWidth, int backbufferHei
- ASSERT(device != NULL);
-
- // D3D11 does not allow zero size textures
-- ASSERT(backbufferWidth >= 1);
-- ASSERT(backbufferHeight >= 1);
-+ ASSERT(backbufferWidth != 0);
-+ ASSERT(backbufferHeight != 0);
-
- // Preserve the render target content
-+#if !defined(ANGLE_ENABLE_WINDOWS_STORE)
- ID3D11Texture2D *previousOffscreenTexture = mOffscreenTexture;
- if (previousOffscreenTexture)
- {
-@@ -103,6 +106,7 @@ EGLint SwapChain11::resetOffscreenTexture(int backbufferWidth, int backbufferHei
- }
- const int previousWidth = mWidth;
- const int previousHeight = mHeight;
-+#endif
-
- releaseOffscreenTexture();
-
-@@ -136,8 +140,8 @@ EGLint SwapChain11::resetOffscreenTexture(int backbufferWidth, int backbufferHei
- D3D11_TEXTURE2D_DESC offscreenTextureDesc = {0};
- mOffscreenTexture->GetDesc(&offscreenTextureDesc);
-
-- if (offscreenTextureDesc.Width != (UINT)backbufferWidth ||
-- offscreenTextureDesc.Height != (UINT)backbufferHeight ||
-+ if (offscreenTextureDesc.Width != UINT(abs(backbufferWidth)) ||
-+ offscreenTextureDesc.Height != UINT(abs(backbufferHeight)) ||
- offscreenTextureDesc.Format != backbufferFormatInfo.texFormat ||
- offscreenTextureDesc.MipLevels != 1 ||
- offscreenTextureDesc.ArraySize != 1)
-@@ -152,8 +156,8 @@ EGLint SwapChain11::resetOffscreenTexture(int backbufferWidth, int backbufferHei
- const bool useSharedResource = !mNativeWindow.getNativeWindow() && mRenderer->getShareHandleSupport();
-
- D3D11_TEXTURE2D_DESC offscreenTextureDesc = {0};
-- offscreenTextureDesc.Width = backbufferWidth;
-- offscreenTextureDesc.Height = backbufferHeight;
-+ offscreenTextureDesc.Width = abs(backbufferWidth);
-+ offscreenTextureDesc.Height = abs(backbufferHeight);
- offscreenTextureDesc.Format = backbufferFormatInfo.texFormat;
- offscreenTextureDesc.MipLevels = 1;
- offscreenTextureDesc.ArraySize = 1;
-@@ -233,8 +237,8 @@ EGLint SwapChain11::resetOffscreenTexture(int backbufferWidth, int backbufferHei
- if (mDepthBufferFormat != GL_NONE)
- {
- D3D11_TEXTURE2D_DESC depthStencilTextureDesc;
-- depthStencilTextureDesc.Width = backbufferWidth;
-- depthStencilTextureDesc.Height = backbufferHeight;
-+ depthStencilTextureDesc.Width = abs(backbufferWidth);
-+ depthStencilTextureDesc.Height = abs(backbufferHeight);
- depthStencilTextureDesc.Format = depthBufferFormatInfo.texFormat;
- depthStencilTextureDesc.MipLevels = 1;
- depthStencilTextureDesc.ArraySize = 1;
-@@ -286,6 +290,7 @@ EGLint SwapChain11::resetOffscreenTexture(int backbufferWidth, int backbufferHei
- mWidth = backbufferWidth;
- mHeight = backbufferHeight;
-
-+#if !defined(ANGLE_ENABLE_WINDOWS_STORE)
- if (previousOffscreenTexture != NULL)
- {
- D3D11_BOX sourceBox = {0};
-@@ -307,6 +312,7 @@ EGLint SwapChain11::resetOffscreenTexture(int backbufferWidth, int backbufferHei
- swapRect(0, 0, mWidth, mHeight);
- }
- }
-+#endif
-
- return EGL_SUCCESS;
- }
-@@ -320,8 +326,16 @@ EGLint SwapChain11::resize(EGLint backbufferWidth, EGLint backbufferHeight)
- return EGL_BAD_ACCESS;
- }
-
-+ // Windows Phone works around the rotation limitation by using negative values for the swap chain size
-+#if defined(ANGLE_ENABLE_WINDOWS_STORE) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
-+ mRotateL = backbufferWidth < 0; // Landscape/InvertedLandscape
-+ mRotateR = backbufferHeight < 0; // InvertedPortrait/InvertedLandscape
-+ backbufferWidth = abs(backbufferWidth);
-+ backbufferHeight = abs(backbufferHeight);
-+#endif
-+
- // EGL allows creating a surface with 0x0 dimension, however, DXGI does not like 0x0 swapchains
-- if (backbufferWidth < 1 || backbufferHeight < 1)
-+ if (backbufferWidth == 0 || backbufferHeight == 0)
- {
- return EGL_SUCCESS;
- }
-@@ -329,6 +343,7 @@ EGLint SwapChain11::resize(EGLint backbufferWidth, EGLint backbufferHeight)
- // Can only call resize if we have already created our swap buffer and resources
- ASSERT(mSwapChain && mBackBufferTexture && mBackBufferRTView);
-
-+#if !defined(ANGLE_ENABLE_WINDOWS_STORE) || (WINAPI_FAMILY == WINAPI_FAMILY_PC_APP) // The swap chain is not directly resized on Windows Phone
- SafeRelease(mBackBufferTexture);
- SafeRelease(mBackBufferRTView);
-
-@@ -366,6 +381,7 @@ EGLint SwapChain11::resize(EGLint backbufferWidth, EGLint backbufferHeight)
- {
- d3d11::SetDebugName(mBackBufferRTView, "Back buffer render target");
- }
-+#endif
-
- return resetOffscreenTexture(backbufferWidth, backbufferHeight);
- }
-@@ -512,16 +528,6 @@ EGLint SwapChain11::swapRect(EGLint x, EGLint y, EGLint width, EGLint height)
- ID3D11Device *device = mRenderer->getDevice();
- ID3D11DeviceContext *deviceContext = mRenderer->getDeviceContext();
-
-- // Set vertices
-- D3D11_MAPPED_SUBRESOURCE mappedResource;
-- HRESULT result = deviceContext->Map(mQuadVB, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);
-- if (FAILED(result))
-- {
-- return EGL_BAD_ACCESS;
-- }
--
-- d3d11::PositionTexCoordVertex *vertices = static_cast<d3d11::PositionTexCoordVertex*>(mappedResource.pData);
--
- // Create a quad in homogeneous coordinates
- float x1 = (x / float(mWidth)) * 2.0f - 1.0f;
- float y1 = (y / float(mHeight)) * 2.0f - 1.0f;
-@@ -533,10 +539,23 @@ EGLint SwapChain11::swapRect(EGLint x, EGLint y, EGLint width, EGLint height)
- float u2 = (x + width) / float(mWidth);
- float v2 = (y + height) / float(mHeight);
-
-- d3d11::SetPositionTexCoordVertex(&vertices[0], x1, y1, u1, v1);
-- d3d11::SetPositionTexCoordVertex(&vertices[1], x1, y2, u1, v2);
-- d3d11::SetPositionTexCoordVertex(&vertices[2], x2, y1, u2, v1);
-- d3d11::SetPositionTexCoordVertex(&vertices[3], x2, y2, u2, v2);
-+ const bool rotateL = mRotateL;
-+ const bool rotateR = mRotateR;
-+
-+ // Set vertices
-+ D3D11_MAPPED_SUBRESOURCE mappedResource;
-+ HRESULT result = deviceContext->Map(mQuadVB, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);
-+ if (FAILED(result))
-+ {
-+ return EGL_BAD_ACCESS;
-+ }
-+
-+ d3d11::PositionTexCoordVertex *vertices = static_cast<d3d11::PositionTexCoordVertex*>(mappedResource.pData);
-+
-+ d3d11::SetPositionTexCoordVertex(&vertices[0], x1, y1, rotateL ? u2 : u1, rotateR ? v2 : v1);
-+ d3d11::SetPositionTexCoordVertex(&vertices[1], x1, y2, rotateR ? u2 : u1, rotateL ? v1 : v2);
-+ d3d11::SetPositionTexCoordVertex(&vertices[2], x2, y1, rotateR ? u1 : u2, rotateL ? v2 : v1);
-+ d3d11::SetPositionTexCoordVertex(&vertices[3], x2, y2, rotateL ? u1 : u2, rotateR ? v1 : v2);
-
- deviceContext->Unmap(mQuadVB, 0);
-
-@@ -564,10 +583,11 @@ EGLint SwapChain11::swapRect(EGLint x, EGLint y, EGLint width, EGLint height)
-
- // Set the viewport
- D3D11_VIEWPORT viewport;
-- viewport.TopLeftX = 0;
-- viewport.TopLeftY = 0;
-- viewport.Width = mWidth;
-- viewport.Height = mHeight;
-+ viewport.TopLeftX = 0.0f;
-+ viewport.TopLeftY = 0.0f;
-+ const bool invertViewport = (mRotateL || mRotateR) && !(mRotateL && mRotateR);
-+ viewport.Width = FLOAT(invertViewport ? mHeight : mWidth);
-+ viewport.Height = FLOAT(invertViewport ? mWidth : mHeight);
- viewport.MinDepth = 0.0f;
- viewport.MaxDepth = 1.0f;
- deviceContext->RSSetViewports(1, &viewport);
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/SwapChain11.h b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/SwapChain11.h
-index 22401d8..77509ed 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/SwapChain11.h
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/SwapChain11.h
-@@ -52,6 +52,8 @@ class SwapChain11 : public SwapChain
- Renderer11 *mRenderer;
- EGLint mHeight;
- EGLint mWidth;
-+ bool mRotateL;
-+ bool mRotateR;
- bool mAppCreatedShareHandle;
- unsigned int mSwapInterval;
- bool mPassThroughResourcesInit;
---
-1.9.4.msysgit.1
-
diff --git a/src/angle/patches/0010-ANGLE-Enable-D3D11-for-feature-level-9-cards.patch b/src/angle/patches/0010-ANGLE-Enable-D3D11-for-feature-level-9-cards.patch
deleted file mode 100644
index dd2768cf3e..0000000000
--- a/src/angle/patches/0010-ANGLE-Enable-D3D11-for-feature-level-9-cards.patch
+++ /dev/null
@@ -1,637 +0,0 @@
-From 829bf86c57357d3c8ec598b92fcfdb1849e84075 Mon Sep 17 00:00:00 2001
-From: Andrew Knight <andrew.knight@theqtcompany.com>
-Date: Tue, 11 Nov 2014 17:11:54 +0200
-Subject: [PATCH 10/16] ANGLE: Enable D3D11 for feature level 9 cards
-
-Enable use of ANGLE on lower-end hardware, such as Surface RT and
-Windows Phone 8.
-
-Change-Id: Ice536802e4eedc1d264abd0dd65960638fce59e4
----
- src/3rdparty/angle/src/libGLESv2/angletypes.cpp | 6 +-
- .../src/libGLESv2/renderer/d3d/d3d11/Blit11.cpp | 69 ++++---
- .../src/libGLESv2/renderer/d3d/d3d11/Buffer11.cpp | 4 +-
- .../src/libGLESv2/renderer/d3d/d3d11/Clear11.cpp | 7 +-
- .../renderer/d3d/d3d11/PixelTransfer11.cpp | 9 +-
- .../libGLESv2/renderer/d3d/d3d11/Renderer11.cpp | 226 +++++++++++++--------
- .../src/libGLESv2/renderer/d3d/d3d11/Renderer11.h | 1 +
- .../renderer/d3d/d3d11/TextureStorage11.cpp | 4 +-
- .../libGLESv2/renderer/d3d/d3d11/formatutils11.cpp | 4 +-
- .../renderer/d3d/d3d11/renderer11_utils.cpp | 2 +-
- 10 files changed, 208 insertions(+), 124 deletions(-)
-
-diff --git a/src/3rdparty/angle/src/libGLESv2/angletypes.cpp b/src/3rdparty/angle/src/libGLESv2/angletypes.cpp
-index 6fd02e0..5a0cfc5 100644
---- a/src/3rdparty/angle/src/libGLESv2/angletypes.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/angletypes.cpp
-@@ -12,6 +12,8 @@
- #include "libGLESv2/State.h"
- #include "libGLESv2/VertexArray.h"
-
-+#include <float.h>
-+
- namespace gl
- {
-
-@@ -24,8 +26,8 @@ SamplerState::SamplerState()
- maxAnisotropy(1.0f),
- baseLevel(0),
- maxLevel(1000),
-- minLod(-1000.0f),
-- maxLod(1000.0f),
-+ minLod(-FLT_MAX),
-+ maxLod(FLT_MAX),
- compareMode(GL_NONE),
- compareFunc(GL_LEQUAL),
- swizzleRed(GL_RED),
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Blit11.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Blit11.cpp
-index 91e7552..06aea9b 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Blit11.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Blit11.cpp
-@@ -209,7 +209,7 @@ Blit11::Blit11(Renderer11 *renderer)
- pointSamplerDesc.BorderColor[2] = 0.0f;
- pointSamplerDesc.BorderColor[3] = 0.0f;
- pointSamplerDesc.MinLOD = 0.0f;
-- pointSamplerDesc.MaxLOD = 0.0f;
-+ pointSamplerDesc.MaxLOD = mRenderer->isLevel9() ? D3D11_FLOAT32_MAX : 0.0f;
-
- result = device->CreateSamplerState(&pointSamplerDesc, &mPointSampler);
- ASSERT(SUCCEEDED(result));
-@@ -228,7 +228,7 @@ Blit11::Blit11(Renderer11 *renderer)
- linearSamplerDesc.BorderColor[2] = 0.0f;
- linearSamplerDesc.BorderColor[3] = 0.0f;
- linearSamplerDesc.MinLOD = 0.0f;
-- linearSamplerDesc.MaxLOD = 0.0f;
-+ linearSamplerDesc.MaxLOD = mRenderer->isLevel9() ? D3D11_FLOAT32_MAX : 0.0f;
-
- result = device->CreateSamplerState(&linearSamplerDesc, &mLinearSampler);
- ASSERT(SUCCEEDED(result));
-@@ -290,28 +290,31 @@ Blit11::Blit11(Renderer11 *renderer)
- ASSERT(SUCCEEDED(result));
- d3d11::SetDebugName(mQuad2DVS, "Blit11 2D vertex shader");
-
-- result = device->CreatePixelShader(g_PS_PassthroughDepth2D, ArraySize(g_PS_PassthroughDepth2D), NULL, &mDepthPS);
-- ASSERT(SUCCEEDED(result));
-- d3d11::SetDebugName(mDepthPS, "Blit11 2D depth pixel shader");
--
-- D3D11_INPUT_ELEMENT_DESC quad3DLayout[] =
-+ if (!renderer->isLevel9())
- {
-- { "POSITION", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
-- { "LAYER", 0, DXGI_FORMAT_R32_UINT, 0, 8, D3D11_INPUT_PER_VERTEX_DATA, 0 },
-- { "TEXCOORD", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 },
-- };
--
-- result = device->CreateInputLayout(quad3DLayout, ArraySize(quad3DLayout), g_VS_Passthrough3D, ArraySize(g_VS_Passthrough3D), &mQuad3DIL);
-- ASSERT(SUCCEEDED(result));
-- d3d11::SetDebugName(mQuad3DIL, "Blit11 3D input layout");
--
-- result = device->CreateVertexShader(g_VS_Passthrough3D, ArraySize(g_VS_Passthrough3D), NULL, &mQuad3DVS);
-- ASSERT(SUCCEEDED(result));
-- d3d11::SetDebugName(mQuad3DVS, "Blit11 3D vertex shader");
-+ result = device->CreatePixelShader(g_PS_PassthroughDepth2D, ArraySize(g_PS_PassthroughDepth2D), NULL, &mDepthPS);
-+ ASSERT(SUCCEEDED(result));
-+ d3d11::SetDebugName(mDepthPS, "Blit11 2D depth pixel shader");
-
-- result = device->CreateGeometryShader(g_GS_Passthrough3D, ArraySize(g_GS_Passthrough3D), NULL, &mQuad3DGS);
-- ASSERT(SUCCEEDED(result));
-- d3d11::SetDebugName(mQuad3DGS, "Renderer11 copy 3D texture geometry shader");
-+ D3D11_INPUT_ELEMENT_DESC quad3DLayout[] =
-+ {
-+ { "POSITION", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
-+ { "LAYER", 0, DXGI_FORMAT_R32_UINT, 0, 8, D3D11_INPUT_PER_VERTEX_DATA, 0 },
-+ { "TEXCOORD", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 },
-+ };
-+
-+ result = device->CreateInputLayout(quad3DLayout, ArraySize(quad3DLayout), g_VS_Passthrough3D, ArraySize(g_VS_Passthrough3D), &mQuad3DIL);
-+ ASSERT(SUCCEEDED(result));
-+ d3d11::SetDebugName(mQuad3DIL, "Blit11 3D input layout");
-+
-+ result = device->CreateVertexShader(g_VS_Passthrough3D, ArraySize(g_VS_Passthrough3D), NULL, &mQuad3DVS);
-+ ASSERT(SUCCEEDED(result));
-+ d3d11::SetDebugName(mQuad3DVS, "Blit11 3D vertex shader");
-+
-+ result = device->CreateGeometryShader(g_GS_Passthrough3D, ArraySize(g_GS_Passthrough3D), NULL, &mQuad3DGS);
-+ ASSERT(SUCCEEDED(result));
-+ d3d11::SetDebugName(mQuad3DGS, "Renderer11 copy 3D texture geometry shader");
-+ }
-
- buildShaderMap();
-
-@@ -970,22 +973,27 @@ void Blit11::buildShaderMap()
- ID3D11Device *device = mRenderer->getDevice();
-
- add2DBlitShaderToMap(GL_RGBA, false, d3d11::CompilePS(device, g_PS_PassthroughRGBA2D, "Blit11 2D RGBA pixel shader" ));
-- add2DBlitShaderToMap(GL_RGBA_INTEGER, false, d3d11::CompilePS(device, g_PS_PassthroughRGBA2DUI, "Blit11 2D RGBA UI pixel shader" ));
-- add2DBlitShaderToMap(GL_RGBA_INTEGER, true, d3d11::CompilePS(device, g_PS_PassthroughRGBA2DI, "Blit11 2D RGBA I pixel shader" ));
- add2DBlitShaderToMap(GL_BGRA_EXT, false, d3d11::CompilePS(device, g_PS_PassthroughRGBA2D, "Blit11 2D BGRA pixel shader" ));
- add2DBlitShaderToMap(GL_RGB, false, d3d11::CompilePS(device, g_PS_PassthroughRGB2D, "Blit11 2D RGB pixel shader" ));
-- add2DBlitShaderToMap(GL_RGB_INTEGER, false, d3d11::CompilePS(device, g_PS_PassthroughRGB2DUI, "Blit11 2D RGB UI pixel shader" ));
-- add2DBlitShaderToMap(GL_RGB_INTEGER, true, d3d11::CompilePS(device, g_PS_PassthroughRGB2DI, "Blit11 2D RGB I pixel shader" ));
- add2DBlitShaderToMap(GL_RG, false, d3d11::CompilePS(device, g_PS_PassthroughRG2D, "Blit11 2D RG pixel shader" ));
-- add2DBlitShaderToMap(GL_RG_INTEGER, false, d3d11::CompilePS(device, g_PS_PassthroughRG2DUI, "Blit11 2D RG UI pixel shader" ));
-- add2DBlitShaderToMap(GL_RG_INTEGER, true, d3d11::CompilePS(device, g_PS_PassthroughRG2DI, "Blit11 2D RG I pixel shader" ));
- add2DBlitShaderToMap(GL_RED, false, d3d11::CompilePS(device, g_PS_PassthroughR2D, "Blit11 2D R pixel shader" ));
-- add2DBlitShaderToMap(GL_RED_INTEGER, false, d3d11::CompilePS(device, g_PS_PassthroughR2DUI, "Blit11 2D R UI pixel shader" ));
-- add2DBlitShaderToMap(GL_RED_INTEGER, true, d3d11::CompilePS(device, g_PS_PassthroughR2DI, "Blit11 2D R I pixel shader" ));
- add2DBlitShaderToMap(GL_ALPHA, false, d3d11::CompilePS(device, g_PS_PassthroughRGBA2D, "Blit11 2D alpha pixel shader" ));
- add2DBlitShaderToMap(GL_LUMINANCE, false, d3d11::CompilePS(device, g_PS_PassthroughLum2D, "Blit11 2D lum pixel shader" ));
- add2DBlitShaderToMap(GL_LUMINANCE_ALPHA, false, d3d11::CompilePS(device, g_PS_PassthroughLumAlpha2D, "Blit11 2D luminance alpha pixel shader"));
-
-+ addSwizzleShaderToMap(GL_FLOAT, D3D_SRV_DIMENSION_TEXTURE2D, d3d11::CompilePS(device, g_PS_SwizzleF2D, "Blit11 2D F swizzle pixel shader" ));
-+
-+ if (mRenderer->isLevel9())
-+ return;
-+
-+ add2DBlitShaderToMap(GL_RGBA_INTEGER, false, d3d11::CompilePS(device, g_PS_PassthroughRGBA2DUI, "Blit11 2D RGBA UI pixel shader" ));
-+ add2DBlitShaderToMap(GL_RGBA_INTEGER, true, d3d11::CompilePS(device, g_PS_PassthroughRGBA2DI, "Blit11 2D RGBA I pixel shader" ));
-+ add2DBlitShaderToMap(GL_RGB_INTEGER, false, d3d11::CompilePS(device, g_PS_PassthroughRGB2DUI, "Blit11 2D RGB UI pixel shader" ));
-+ add2DBlitShaderToMap(GL_RGB_INTEGER, true, d3d11::CompilePS(device, g_PS_PassthroughRGB2DI, "Blit11 2D RGB I pixel shader" ));
-+ add2DBlitShaderToMap(GL_RG_INTEGER, false, d3d11::CompilePS(device, g_PS_PassthroughRG2DUI, "Blit11 2D RG UI pixel shader" ));
-+ add2DBlitShaderToMap(GL_RG_INTEGER, true, d3d11::CompilePS(device, g_PS_PassthroughRG2DI, "Blit11 2D RG I pixel shader" ));
-+ add2DBlitShaderToMap(GL_RED_INTEGER, false, d3d11::CompilePS(device, g_PS_PassthroughR2DUI, "Blit11 2D R UI pixel shader" ));
-+ add2DBlitShaderToMap(GL_RED_INTEGER, true, d3d11::CompilePS(device, g_PS_PassthroughR2DI, "Blit11 2D R I pixel shader" ));
- add3DBlitShaderToMap(GL_RGBA, false, d3d11::CompilePS(device, g_PS_PassthroughRGBA3D, "Blit11 3D RGBA pixel shader" ));
- add3DBlitShaderToMap(GL_RGBA_INTEGER, false, d3d11::CompilePS(device, g_PS_PassthroughRGBA3DUI, "Blit11 3D UI RGBA pixel shader" ));
- add3DBlitShaderToMap(GL_RGBA_INTEGER, true, d3d11::CompilePS(device, g_PS_PassthroughRGBA3DI, "Blit11 3D I RGBA pixel shader" ));
-@@ -1003,7 +1011,6 @@ void Blit11::buildShaderMap()
- add3DBlitShaderToMap(GL_LUMINANCE, false, d3d11::CompilePS(device, g_PS_PassthroughLum3D, "Blit11 3D luminance pixel shader" ));
- add3DBlitShaderToMap(GL_LUMINANCE_ALPHA, false, d3d11::CompilePS(device, g_PS_PassthroughLumAlpha3D, "Blit11 3D luminance alpha pixel shader"));
-
-- addSwizzleShaderToMap(GL_FLOAT, D3D_SRV_DIMENSION_TEXTURE2D, d3d11::CompilePS(device, g_PS_SwizzleF2D, "Blit11 2D F swizzle pixel shader" ));
- addSwizzleShaderToMap(GL_UNSIGNED_INT, D3D_SRV_DIMENSION_TEXTURE2D, d3d11::CompilePS(device, g_PS_SwizzleUI2D, "Blit11 2D UI swizzle pixel shader"));
- addSwizzleShaderToMap(GL_INT, D3D_SRV_DIMENSION_TEXTURE2D, d3d11::CompilePS(device, g_PS_SwizzleI2D, "Blit11 2D I swizzle pixel shader" ));
-
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Buffer11.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Buffer11.cpp
-index 2d5fa3c..5aab379 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Buffer11.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Buffer11.cpp
-@@ -753,7 +753,9 @@ void Buffer11::NativeBuffer11::fillBufferDesc(D3D11_BUFFER_DESC* bufferDesc, Ren
-
- case BUFFER_USAGE_VERTEX_OR_TRANSFORM_FEEDBACK:
- bufferDesc->Usage = D3D11_USAGE_DEFAULT;
-- bufferDesc->BindFlags = D3D11_BIND_VERTEX_BUFFER | D3D11_BIND_STREAM_OUTPUT;
-+ bufferDesc->BindFlags = D3D11_BIND_VERTEX_BUFFER;
-+ if (!renderer->isLevel9())
-+ bufferDesc->BindFlags |= D3D11_BIND_STREAM_OUTPUT;
- bufferDesc->CPUAccessFlags = 0;
- break;
-
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Clear11.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Clear11.cpp
-index 4630762..7185a05 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Clear11.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Clear11.cpp
-@@ -104,7 +104,7 @@ Clear11::Clear11(Renderer11 *renderer)
- rsDesc.DepthBias = 0;
- rsDesc.DepthBiasClamp = 0.0f;
- rsDesc.SlopeScaledDepthBias = 0.0f;
-- rsDesc.DepthClipEnable = FALSE;
-+ rsDesc.DepthClipEnable = renderer->isLevel9();
- rsDesc.ScissorEnable = FALSE;
- rsDesc.MultisampleEnable = FALSE;
- rsDesc.AntialiasedLineEnable = FALSE;
-@@ -114,6 +114,11 @@ Clear11::Clear11(Renderer11 *renderer)
- d3d11::SetDebugName(mRasterizerState, "Clear11 masked clear rasterizer state");
-
- mFloatClearShader = CreateClearShader(device, DXGI_FORMAT_R32G32B32A32_FLOAT, g_VS_ClearFloat, g_PS_ClearFloat);
-+ if (mRenderer->isLevel9()) {
-+ memset(&mUintClearShader, 0, sizeof(ClearShader));
-+ memset(&mIntClearShader, 0, sizeof(ClearShader));
-+ return;
-+ }
- mUintClearShader = CreateClearShader(device, DXGI_FORMAT_R32G32B32A32_UINT, g_VS_ClearUint, g_PS_ClearUint );
- mIntClearShader = CreateClearShader(device, DXGI_FORMAT_R32G32B32A32_SINT, g_VS_ClearSint, g_PS_ClearSint );
- }
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/PixelTransfer11.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/PixelTransfer11.cpp
-index a4072d8..6a3d347 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/PixelTransfer11.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/PixelTransfer11.cpp
-@@ -133,10 +133,13 @@ gl::Error PixelTransfer11::loadResources()
- return gl::Error(GL_OUT_OF_MEMORY, "Failed to create internal buffer to texture vertex shader.");
- }
-
-- mBufferToTextureGS = d3d11::CompileGS(device, g_GS_BufferToTexture, "BufferToTexture GS");
-- if (!mBufferToTextureGS)
-+ if (!mRenderer->isLevel9())
- {
-- return gl::Error(GL_OUT_OF_MEMORY, "Failed to create internal buffer to texture geometry shader.");
-+ mBufferToTextureGS = d3d11::CompileGS(device, g_GS_BufferToTexture, "BufferToTexture GS");
-+ if (!mBufferToTextureGS)
-+ {
-+ return gl::Error(GL_OUT_OF_MEMORY, "Failed to create internal buffer to texture geometry shader.");
-+ }
- }
-
- gl::Error error = buildShaderMap();
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp
-index ffc6cc9..f6ba930 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp
-@@ -153,6 +153,24 @@ Renderer11::Renderer11(egl::Display *display, EGLNativeDisplayType hDc, const eg
- }
- }
-
-+#if !defined(ANGLE_ENABLE_D3D9)
-+ if (requestedMajorVersion == EGL_DONT_CARE || requestedMajorVersion >= 9)
-+ {
-+ if (requestedMinorVersion == EGL_DONT_CARE || requestedMinorVersion >= 3)
-+ {
-+ mAvailableFeatureLevels.push_back(D3D_FEATURE_LEVEL_9_3);
-+ }
-+ if (requestedMinorVersion == EGL_DONT_CARE || requestedMinorVersion >= 2)
-+ {
-+ mAvailableFeatureLevels.push_back(D3D_FEATURE_LEVEL_9_2);
-+ }
-+ if (requestedMinorVersion == EGL_DONT_CARE || requestedMinorVersion >= 1)
-+ {
-+ mAvailableFeatureLevels.push_back(D3D_FEATURE_LEVEL_9_1);
-+ }
-+ }
-+#endif
-+
- mDriverType = (attributes.get(EGL_PLATFORM_ANGLE_USE_WARP_ANGLE, EGL_FALSE) == EGL_TRUE) ? D3D_DRIVER_TYPE_WARP
- : D3D_DRIVER_TYPE_HARDWARE;
- }
-@@ -1170,6 +1188,83 @@ gl::Error Renderer11::drawElements(GLenum mode, GLsizei count, GLenum type, cons
- return gl::Error(GL_NO_ERROR);
- }
- }
-+template<typename T>
-+static void fillLineLoopIndices(GLenum type, GLsizei count, const GLvoid *indices, T *data)
-+{
-+ switch (type)
-+ {
-+ case GL_NONE: // Non-indexed draw
-+ for (int i = 0; i < count; i++)
-+ {
-+ data[i] = i;
-+ }
-+ data[count] = 0;
-+ break;
-+ case GL_UNSIGNED_BYTE:
-+ for (int i = 0; i < count; i++)
-+ {
-+ data[i] = static_cast<const GLubyte*>(indices)[i];
-+ }
-+ data[count] = static_cast<const GLubyte*>(indices)[0];
-+ break;
-+ case GL_UNSIGNED_SHORT:
-+ for (int i = 0; i < count; i++)
-+ {
-+ data[i] = static_cast<const GLushort*>(indices)[i];
-+ }
-+ data[count] = static_cast<const GLushort*>(indices)[0];
-+ break;
-+ case GL_UNSIGNED_INT:
-+ for (int i = 0; i < count; i++)
-+ {
-+ data[i] = static_cast<const GLuint*>(indices)[i];
-+ }
-+ data[count] = static_cast<const GLuint*>(indices)[0];
-+ break;
-+ default: UNREACHABLE();
-+ }
-+}
-+
-+template<typename T>
-+static void fillTriangleFanIndices(GLenum type, unsigned int numTris, const GLvoid *indices, T *data)
-+{
-+ switch (type)
-+ {
-+ case GL_NONE: // Non-indexed draw
-+ for (unsigned int i = 0; i < numTris; i++)
-+ {
-+ data[i*3 + 0] = 0;
-+ data[i*3 + 1] = i + 1;
-+ data[i*3 + 2] = i + 2;
-+ }
-+ break;
-+ case GL_UNSIGNED_BYTE:
-+ for (unsigned int i = 0; i < numTris; i++)
-+ {
-+ data[i*3 + 0] = static_cast<const GLubyte*>(indices)[0];
-+ data[i*3 + 1] = static_cast<const GLubyte*>(indices)[i + 1];
-+ data[i*3 + 2] = static_cast<const GLubyte*>(indices)[i + 2];
-+ }
-+ break;
-+ case GL_UNSIGNED_SHORT:
-+ for (unsigned int i = 0; i < numTris; i++)
-+ {
-+ data[i*3 + 0] = static_cast<const GLushort*>(indices)[0];
-+ data[i*3 + 1] = static_cast<const GLushort*>(indices)[i + 1];
-+ data[i*3 + 2] = static_cast<const GLushort*>(indices)[i + 2];
-+ }
-+ break;
-+ case GL_UNSIGNED_INT:
-+ for (unsigned int i = 0; i < numTris; i++)
-+ {
-+ data[i*3 + 0] = static_cast<const GLuint*>(indices)[0];
-+ data[i*3 + 1] = static_cast<const GLuint*>(indices)[i + 1];
-+ data[i*3 + 2] = static_cast<const GLuint*>(indices)[i + 2];
-+ }
-+ break;
-+ default: UNREACHABLE();
-+ }
-+}
-
- gl::Error Renderer11::drawLineLoop(GLsizei count, GLenum type, const GLvoid *indices, int minIndex, gl::Buffer *elementArrayBuffer)
- {
-@@ -1189,10 +1284,13 @@ gl::Error Renderer11::drawLineLoop(GLsizei count, GLenum type, const GLvoid *ind
- indices = bufferData + offset;
- }
-
-+ // TODO: some level 9 hardware supports 32-bit indices; test and store support instead
-+ const int indexType = isLevel9() ? GL_UNSIGNED_SHORT : GL_UNSIGNED_INT;
-+
- if (!mLineLoopIB)
- {
- mLineLoopIB = new StreamingIndexBufferInterface(this);
-- gl::Error error = mLineLoopIB->reserveBufferSpace(INITIAL_INDEX_BUFFER_SIZE, GL_UNSIGNED_INT);
-+ gl::Error error = mLineLoopIB->reserveBufferSpace(INITIAL_INDEX_BUFFER_SIZE, indexType);
- if (error.isError())
- {
- SafeDelete(mLineLoopIB);
-@@ -1203,7 +1301,8 @@ gl::Error Renderer11::drawLineLoop(GLsizei count, GLenum type, const GLvoid *ind
- // Checked by Renderer11::applyPrimitiveType
- ASSERT(count >= 0);
-
-- if (static_cast<unsigned int>(count) + 1 > (std::numeric_limits<unsigned int>::max() / sizeof(unsigned int)))
-+ int indexTypeSize = indexType == GL_UNSIGNED_SHORT ? sizeof(unsigned short) : sizeof(unsigned int);
-+ if (static_cast<unsigned int>(count) + 1 > (std::numeric_limits<unsigned int>::max() / indexTypeSize))
- {
- return gl::Error(GL_OUT_OF_MEMORY, "Failed to create a 32-bit looping index buffer for GL_LINE_LOOP, too many indices required.");
- }
-@@ -1223,42 +1322,12 @@ gl::Error Renderer11::drawLineLoop(GLsizei count, GLenum type, const GLvoid *ind
- return error;
- }
-
-- unsigned int *data = reinterpret_cast<unsigned int*>(mappedMemory);
-+ if (indexType == GL_UNSIGNED_SHORT)
-+ fillLineLoopIndices(type, count, indices, reinterpret_cast<unsigned short*>(mappedMemory));
-+ else
-+ fillLineLoopIndices(type, count, indices, reinterpret_cast<unsigned int*>(mappedMemory));
- unsigned int indexBufferOffset = offset;
-
-- switch (type)
-- {
-- case GL_NONE: // Non-indexed draw
-- for (int i = 0; i < count; i++)
-- {
-- data[i] = i;
-- }
-- data[count] = 0;
-- break;
-- case GL_UNSIGNED_BYTE:
-- for (int i = 0; i < count; i++)
-- {
-- data[i] = static_cast<const GLubyte*>(indices)[i];
-- }
-- data[count] = static_cast<const GLubyte*>(indices)[0];
-- break;
-- case GL_UNSIGNED_SHORT:
-- for (int i = 0; i < count; i++)
-- {
-- data[i] = static_cast<const GLushort*>(indices)[i];
-- }
-- data[count] = static_cast<const GLushort*>(indices)[0];
-- break;
-- case GL_UNSIGNED_INT:
-- for (int i = 0; i < count; i++)
-- {
-- data[i] = static_cast<const GLuint*>(indices)[i];
-- }
-- data[count] = static_cast<const GLuint*>(indices)[0];
-- break;
-- default: UNREACHABLE();
-- }
--
- error = mLineLoopIB->unmapBuffer();
- if (error.isError())
- {
-@@ -1300,10 +1369,12 @@ gl::Error Renderer11::drawTriangleFan(GLsizei count, GLenum type, const GLvoid *
- indices = bufferData + offset;
- }
-
-+ const int indexType = isLevel9() ? GL_UNSIGNED_SHORT : GL_UNSIGNED_INT;
-+
- if (!mTriangleFanIB)
- {
- mTriangleFanIB = new StreamingIndexBufferInterface(this);
-- gl::Error error = mTriangleFanIB->reserveBufferSpace(INITIAL_INDEX_BUFFER_SIZE, GL_UNSIGNED_INT);
-+ gl::Error error = mTriangleFanIB->reserveBufferSpace(INITIAL_INDEX_BUFFER_SIZE, indexType);
- if (error.isError())
- {
- SafeDelete(mTriangleFanIB);
-@@ -1316,13 +1387,14 @@ gl::Error Renderer11::drawTriangleFan(GLsizei count, GLenum type, const GLvoid *
-
- const unsigned int numTris = count - 2;
-
-- if (numTris > (std::numeric_limits<unsigned int>::max() / (sizeof(unsigned int) * 3)))
-+ int indexTypeSize = indexType == GL_UNSIGNED_SHORT ? sizeof(unsigned short) : sizeof(unsigned int);
-+ if (numTris > (std::numeric_limits<unsigned int>::max() / (indexTypeSize * 3)))
- {
- return gl::Error(GL_OUT_OF_MEMORY, "Failed to create a scratch index buffer for GL_TRIANGLE_FAN, too many indices required.");
- }
-
-- const unsigned int spaceNeeded = (numTris * 3) * sizeof(unsigned int);
-- gl::Error error = mTriangleFanIB->reserveBufferSpace(spaceNeeded, GL_UNSIGNED_INT);
-+ const unsigned int spaceNeeded = (numTris * 3) * indexTypeSize;
-+ gl::Error error = mTriangleFanIB->reserveBufferSpace(spaceNeeded, indexType);
- if (error.isError())
- {
- return error;
-@@ -1336,45 +1408,12 @@ gl::Error Renderer11::drawTriangleFan(GLsizei count, GLenum type, const GLvoid *
- return error;
- }
-
-- unsigned int *data = reinterpret_cast<unsigned int*>(mappedMemory);
-- unsigned int indexBufferOffset = offset;
-+ if (indexType == GL_UNSIGNED_SHORT)
-+ fillTriangleFanIndices(type, numTris, indices, reinterpret_cast<unsigned short*>(mappedMemory));
-+ else
-+ fillTriangleFanIndices(type, numTris, indices, reinterpret_cast<unsigned int*>(mappedMemory));
-
-- switch (type)
-- {
-- case GL_NONE: // Non-indexed draw
-- for (unsigned int i = 0; i < numTris; i++)
-- {
-- data[i*3 + 0] = 0;
-- data[i*3 + 1] = i + 1;
-- data[i*3 + 2] = i + 2;
-- }
-- break;
-- case GL_UNSIGNED_BYTE:
-- for (unsigned int i = 0; i < numTris; i++)
-- {
-- data[i*3 + 0] = static_cast<const GLubyte*>(indices)[0];
-- data[i*3 + 1] = static_cast<const GLubyte*>(indices)[i + 1];
-- data[i*3 + 2] = static_cast<const GLubyte*>(indices)[i + 2];
-- }
-- break;
-- case GL_UNSIGNED_SHORT:
-- for (unsigned int i = 0; i < numTris; i++)
-- {
-- data[i*3 + 0] = static_cast<const GLushort*>(indices)[0];
-- data[i*3 + 1] = static_cast<const GLushort*>(indices)[i + 1];
-- data[i*3 + 2] = static_cast<const GLushort*>(indices)[i + 2];
-- }
-- break;
-- case GL_UNSIGNED_INT:
-- for (unsigned int i = 0; i < numTris; i++)
-- {
-- data[i*3 + 0] = static_cast<const GLuint*>(indices)[0];
-- data[i*3 + 1] = static_cast<const GLuint*>(indices)[i + 1];
-- data[i*3 + 2] = static_cast<const GLuint*>(indices)[i + 2];
-- }
-- break;
-- default: UNREACHABLE();
-- }
-+ unsigned int indexBufferOffset = offset;
-
- error = mTriangleFanIB->unmapBuffer();
- if (error.isError())
-@@ -1634,7 +1673,7 @@ gl::Error Renderer11::applyUniforms(const ProgramImpl &program, const std::vecto
- }
-
- // needed for the point sprite geometry shader
-- if (mCurrentGeometryConstantBuffer != mDriverConstantBufferPS)
-+ if (mFeatureLevel >= D3D_FEATURE_LEVEL_10_0 && mCurrentGeometryConstantBuffer != mDriverConstantBufferPS)
- {
- mDeviceContext->GSSetConstantBuffers(0, 1, &mDriverConstantBufferPS);
- mCurrentGeometryConstantBuffer = mDriverConstantBufferPS;
-@@ -1938,7 +1977,10 @@ int Renderer11::getMajorShaderModel() const
- {
- case D3D_FEATURE_LEVEL_11_0: return D3D11_SHADER_MAJOR_VERSION; // 5
- case D3D_FEATURE_LEVEL_10_1: return D3D10_1_SHADER_MAJOR_VERSION; // 4
-- case D3D_FEATURE_LEVEL_10_0: return D3D10_SHADER_MAJOR_VERSION; // 4
-+ case D3D_FEATURE_LEVEL_10_0:
-+ case D3D_FEATURE_LEVEL_9_3:
-+ case D3D_FEATURE_LEVEL_9_2:
-+ case D3D_FEATURE_LEVEL_9_1: return D3D10_SHADER_MAJOR_VERSION; // 4
- default: UNREACHABLE(); return 0;
- }
- }
-@@ -1949,7 +1991,10 @@ int Renderer11::getMinorShaderModel() const
- {
- case D3D_FEATURE_LEVEL_11_0: return D3D11_SHADER_MINOR_VERSION; // 0
- case D3D_FEATURE_LEVEL_10_1: return D3D10_1_SHADER_MINOR_VERSION; // 1
-- case D3D_FEATURE_LEVEL_10_0: return D3D10_SHADER_MINOR_VERSION; // 0
-+ case D3D_FEATURE_LEVEL_10_0:
-+ case D3D_FEATURE_LEVEL_9_3:
-+ case D3D_FEATURE_LEVEL_9_2:
-+ case D3D_FEATURE_LEVEL_9_1: return D3D10_SHADER_MINOR_VERSION; // 0
- default: UNREACHABLE(); return 0;
- }
- }
-@@ -2455,6 +2500,7 @@ gl::Error Renderer11::compileToExecutable(gl::InfoLog &infoLog, const std::strin
-
- unsigned int profileMajorVersion = 0;
- unsigned int profileMinorVersion = 0;
-+ const char *profileSuffix = NULL;
- switch (mFeatureLevel)
- {
- case D3D_FEATURE_LEVEL_11_0:
-@@ -2469,12 +2515,30 @@ gl::Error Renderer11::compileToExecutable(gl::InfoLog &infoLog, const std::strin
- profileMajorVersion = 4;
- profileMinorVersion = 0;
- break;
-+ case D3D_FEATURE_LEVEL_9_3:
-+ profileMajorVersion = 4;
-+ profileMinorVersion = 0;
-+ profileSuffix = "_level_9_3";
-+ break;
-+ case D3D_FEATURE_LEVEL_9_2:
-+ profileMajorVersion = 4;
-+ profileMinorVersion = 0;
-+ profileSuffix = "_level_9_2";
-+ break;
-+ case D3D_FEATURE_LEVEL_9_1:
-+ profileMajorVersion = 4;
-+ profileMinorVersion = 0;
-+ profileSuffix = "_level_9_1";
-+ break;
-+ break;
- default:
- UNREACHABLE();
- return gl::Error(GL_INVALID_OPERATION);
- }
-
- std::string profile = FormatString("%s_%u_%u", profileType, profileMajorVersion, profileMinorVersion);
-+ if (profileSuffix)
-+ profile += profileSuffix;
-
- UINT flags = D3DCOMPILE_OPTIMIZATION_LEVEL2;
-
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.h b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.h
-index c789cae..d44bd2f 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.h
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.h
-@@ -188,6 +188,7 @@ class Renderer11 : public RendererD3D
- ID3D11Device *getDevice() { return mDevice; }
- ID3D11DeviceContext *getDeviceContext() { return mDeviceContext; };
- DXGIFactory *getDxgiFactory() { return mDxgiFactory; };
-+ bool isLevel9() { return mFeatureLevel <= D3D_FEATURE_LEVEL_9_3; }
-
- Blit11 *getBlitter() { return mBlit; }
-
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/TextureStorage11.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/TextureStorage11.cpp
-index 4287918..74af27e 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/TextureStorage11.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/TextureStorage11.cpp
-@@ -744,7 +744,7 @@ gl::Error TextureStorage11_2D::getResource(ID3D11Resource **outResource)
- D3D11_TEXTURE2D_DESC desc;
- desc.Width = mTextureWidth; // Compressed texture size constraints?
- desc.Height = mTextureHeight;
-- desc.MipLevels = mMipLevels;
-+ desc.MipLevels = mRenderer->isLevel9() ? 1 : mMipLevels;
- desc.ArraySize = 1;
- desc.Format = mTextureFormat;
- desc.SampleDesc.Count = 1;
-@@ -863,7 +863,7 @@ gl::Error TextureStorage11_2D::createSRV(int baseLevel, int mipLevels, DXGI_FORM
- srvDesc.Format = format;
- srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
- srvDesc.Texture2D.MostDetailedMip = mTopLevel + baseLevel;
-- srvDesc.Texture2D.MipLevels = mipLevels;
-+ srvDesc.Texture2D.MipLevels = mRenderer->isLevel9() ? -1 : mipLevels;
-
- ID3D11Device *device = mRenderer->getDevice();
- HRESULT result = device->CreateShaderResourceView(texture, &srvDesc, outSRV);
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/formatutils11.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/formatutils11.cpp
-index 1ea916d..90a879e 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/formatutils11.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/formatutils11.cpp
-@@ -557,7 +557,7 @@ D3D11LoadFunctionMap BuildD3D11LoadFunctionMap()
- InsertLoadFunction(&map, GL_ALPHA, GL_HALF_FLOAT_OES, LoadA16FToRGBA16F );
-
- // From GL_EXT_texture_storage
-- InsertLoadFunction(&map, GL_ALPHA8_EXT, GL_UNSIGNED_BYTE, LoadToNative<GLubyte, 1> );
-+ InsertLoadFunction(&map, GL_ALPHA8_EXT, GL_UNSIGNED_BYTE, LoadA8ToRGBA8 );
- InsertLoadFunction(&map, GL_LUMINANCE8_EXT, GL_UNSIGNED_BYTE, LoadL8ToRGBA8 );
- InsertLoadFunction(&map, GL_LUMINANCE8_ALPHA8_EXT, GL_UNSIGNED_BYTE, LoadLA8ToRGBA8 );
- InsertLoadFunction(&map, GL_ALPHA32F_EXT, GL_FLOAT, LoadA32FToRGBA32F );
-@@ -795,7 +795,7 @@ static D3D11ES3FormatMap BuildD3D11FormatMap()
-
- // From GL_EXT_texture_storage
- // | GL internal format | D3D11 texture format | D3D11 SRV format | D3D11 RTV format | D3D11 DSV format |
-- InsertD3D11FormatInfo(&map, GL_ALPHA8_EXT, DXGI_FORMAT_A8_UNORM, DXGI_FORMAT_A8_UNORM, DXGI_FORMAT_A8_UNORM, DXGI_FORMAT_UNKNOWN );
-+ InsertD3D11FormatInfo(&map, GL_ALPHA8_EXT, DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_UNKNOWN );
- InsertD3D11FormatInfo(&map, GL_LUMINANCE8_EXT, DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_FORMAT_UNKNOWN );
- InsertD3D11FormatInfo(&map, GL_ALPHA32F_EXT, DXGI_FORMAT_R32G32B32A32_FLOAT, DXGI_FORMAT_R32G32B32A32_FLOAT, DXGI_FORMAT_R32G32B32A32_FLOAT, DXGI_FORMAT_UNKNOWN );
- InsertD3D11FormatInfo(&map, GL_LUMINANCE32F_EXT, DXGI_FORMAT_R32G32B32A32_FLOAT, DXGI_FORMAT_R32G32B32A32_FLOAT, DXGI_FORMAT_R32G32B32A32_FLOAT, DXGI_FORMAT_UNKNOWN );
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/renderer11_utils.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/renderer11_utils.cpp
-index 9ffc32e..cbfe557 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/renderer11_utils.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/renderer11_utils.cpp
-@@ -284,7 +284,7 @@ static bool GetNPOTTextureSupport(D3D_FEATURE_LEVEL featureLevel)
- // From http://msdn.microsoft.com/en-us/library/windows/desktop/ff476876.aspx
- case D3D_FEATURE_LEVEL_9_3:
- case D3D_FEATURE_LEVEL_9_2:
-- case D3D_FEATURE_LEVEL_9_1: return false;
-+ case D3D_FEATURE_LEVEL_9_1: return true; // Provided that mipmaps & wrap modes are not used
-
- default: UNREACHABLE(); return false;
- }
---
-1.9.4.msysgit.1
-
diff --git a/src/angle/patches/0012-ANGLE-fix-semantic-index-lookup.patch b/src/angle/patches/0012-ANGLE-fix-semantic-index-lookup.patch
deleted file mode 100644
index afc9f256a1..0000000000
--- a/src/angle/patches/0012-ANGLE-fix-semantic-index-lookup.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From bbfd3cfcf6e1195d86368b61ce39504ce6acda50 Mon Sep 17 00:00:00 2001
-From: Andrew Knight <andrew.knight@theqtcompany.com>
-Date: Wed, 12 Nov 2014 17:09:23 +0200
-Subject: [PATCH 12/16] ANGLE: fix semantic index lookup
-
-The sorted semantic index table was returning a direct mapping to the
-new indices, instead of the old indices. This caused a mismatch in the
-GL type lookup for the translated attribute.
-
-Change-Id: I75d05ed707f56c45210e3dcbc277f894e3dc5a48
----
- src/3rdparty/angle/src/libGLESv2/ProgramBinary.cpp | 2 +-
- .../angle/src/libGLESv2/renderer/d3d/d3d11/InputLayoutCache.cpp | 4 ++--
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/3rdparty/angle/src/libGLESv2/ProgramBinary.cpp b/src/3rdparty/angle/src/libGLESv2/ProgramBinary.cpp
-index 0619023..6d64b38 100644
---- a/src/3rdparty/angle/src/libGLESv2/ProgramBinary.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/ProgramBinary.cpp
-@@ -1216,7 +1216,7 @@ void ProgramBinary::sortAttributesByLayout(rx::TranslatedAttribute attributes[MA
- for (int i = 0; i < MAX_VERTEX_ATTRIBS; i++)
- {
- int oldIndex = mAttributesByLayout[i];
-- sortedSemanticIndices[i] = mSemanticIndex[oldIndex];
-+ sortedSemanticIndices[i] = oldIndex;
- attributes[i] = oldTranslatedAttributes[oldIndex];
- }
- }
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/InputLayoutCache.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/InputLayoutCache.cpp
-index e41f238..ff90a6a 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/InputLayoutCache.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/InputLayoutCache.cpp
-@@ -113,10 +113,10 @@ gl::Error InputLayoutCache::applyVertexBuffers(TranslatedAttribute attributes[gl
- // Record the type of the associated vertex shader vector in our key
- // This will prevent mismatched vertex shaders from using the same input layout
- GLint attributeSize;
-- programBinary->getActiveAttribute(ilKey.elementCount, 0, NULL, &attributeSize, &ilKey.elements[ilKey.elementCount].glslElementType, NULL);
-+ programBinary->getActiveAttribute(sortedSemanticIndices[i], 0, NULL, &attributeSize, &ilKey.elements[ilKey.elementCount].glslElementType, NULL);
-
- ilKey.elements[ilKey.elementCount].desc.SemanticName = semanticName;
-- ilKey.elements[ilKey.elementCount].desc.SemanticIndex = sortedSemanticIndices[i];
-+ ilKey.elements[ilKey.elementCount].desc.SemanticIndex = i;
- ilKey.elements[ilKey.elementCount].desc.Format = vertexFormatInfo.nativeFormat;
- ilKey.elements[ilKey.elementCount].desc.InputSlot = i;
- ilKey.elements[ilKey.elementCount].desc.AlignedByteOffset = 0;
---
-1.9.4.msysgit.1
-
diff --git a/src/angle/patches/0013-ANGLE-Add-support-for-querying-platform-device.patch b/src/angle/patches/0013-ANGLE-Add-support-for-querying-platform-device.patch
deleted file mode 100644
index b43dcc368b..0000000000
--- a/src/angle/patches/0013-ANGLE-Add-support-for-querying-platform-device.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From 5ef9348de2624c21be1c9fddd265fec5a0851d25 Mon Sep 17 00:00:00 2001
-From: Andrew Knight <andrew.knight@theqtcompany.com>
-Date: Thu, 13 Nov 2014 15:34:26 +0200
-Subject: [PATCH 13/16] ANGLE: Add support for querying platform device
-
-The EGL_EXT_device_base extension allows for querying the platform
-device of the graphics hardware via eglQueryDisplayAttribEXT().
-As that extension is not supported by ANGLE, this patch adds similar
-functionality to the existing eglQuerySurfacePointerANGLE API. When
-EGL_DEVICE_EXT is passed as the queried attribute, the underlying
-D3D/DXGI device pointer is passed back to the caller via the value
-argument.
-
-The D3D device is needed for video support in QtMultimedia as well as
-the IDXGIDevice3::Trim() calls required by the Windows Store.
-
-Change-Id: Ibdf228d81d6604e56db9dd8597d7cd2983ebc428
----
- src/3rdparty/angle/src/libEGL/libEGL.cpp | 50 +++++++++++++++++++++++++-------
- 1 file changed, 39 insertions(+), 11 deletions(-)
-
-diff --git a/src/3rdparty/angle/src/libEGL/libEGL.cpp b/src/3rdparty/angle/src/libEGL/libEGL.cpp
-index dc20d85..68399d6 100644
---- a/src/3rdparty/angle/src/libEGL/libEGL.cpp
-+++ b/src/3rdparty/angle/src/libEGL/libEGL.cpp
-@@ -17,6 +17,9 @@
- #include "libGLESv2/Texture.h"
- #include "libGLESv2/main.h"
- #include "libGLESv2/renderer/SwapChain.h"
-+#if defined(ANGLE_ENABLE_D3D11)
-+# include "libGLESv2/renderer/d3d/d3d11/Renderer11.h"
-+#endif
-
- #include "libEGL/main.h"
- #include "libEGL/Display.h"
-@@ -582,25 +585,50 @@ EGLBoolean __stdcall eglQuerySurfacePointerANGLE(EGLDisplay dpy, EGLSurface surf
- egl::Display *display = static_cast<egl::Display*>(dpy);
- egl::Surface *eglSurface = (egl::Surface*)surface;
-
-- if (!validateSurface(display, eglSurface))
-- {
-- return EGL_FALSE;
-- }
--
-- if (surface == EGL_NO_SURFACE)
-- {
-- recordError(egl::Error(EGL_BAD_SURFACE));
-- return EGL_FALSE;
-- }
--
- switch (attribute)
- {
- case EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE:
- {
-+ if (!validateSurface(display, eglSurface))
-+ {
-+ return EGL_FALSE;
-+ }
-+
-+ if (surface == EGL_NO_SURFACE)
-+ {
-+ recordError(egl::Error(EGL_BAD_SURFACE));
-+ return EGL_FALSE;
-+ }
-+
- rx::SwapChain *swapchain = eglSurface->getSwapChain();
- *value = (void*) (swapchain ? swapchain->getShareHandle() : NULL);
- }
- break;
-+#if defined(ANGLE_ENABLE_D3D11)
-+ case EGL_DEVICE_EXT:
-+ {
-+ if (!validateDisplay(display))
-+ {
-+ return EGL_FALSE;
-+ }
-+
-+ rx::Renderer *renderer = display->getRenderer();
-+ if (!renderer)
-+ {
-+ *value = NULL;
-+ break;
-+ }
-+
-+ if (renderer->getMajorShaderModel() < 4)
-+ {
-+ recordError(egl::Error(EGL_BAD_CONTEXT));
-+ return EGL_FALSE;
-+ }
-+
-+ *value = static_cast<rx::Renderer11*>(renderer)->getDevice();
-+ }
-+ break;
-+#endif
- default:
- recordError(egl::Error(EGL_BAD_ATTRIBUTE));
- return EGL_FALSE;
---
-1.9.4.msysgit.1
-
diff --git a/src/angle/patches/0014-Let-ANGLE-use-multithreaded-devices-if-necessary.patch b/src/angle/patches/0014-Let-ANGLE-use-multithreaded-devices-if-necessary.patch
deleted file mode 100644
index 9ceb34d964..0000000000
--- a/src/angle/patches/0014-Let-ANGLE-use-multithreaded-devices-if-necessary.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From 5b3bc73210ed1847d9bd7a94f06cc0d5de8e0b89 Mon Sep 17 00:00:00 2001
-From: Michael Bruning <michael.bruning@digia.com>
-Date: Thu, 13 Nov 2014 15:40:10 +0200
-Subject: [PATCH 14/16] Let ANGLE use multithreaded devices if necessary.
-
-This is needed to prevent lock-ups in application that use ANGLE from
-multiple threads, as e.g. QtWebEngine based applications do.
-
-The environment variable QT_D3DCREATE_MULTITHREADED is used to
-communicate this from the QtWebEngine module.
-
-Change-Id: Ibd5a5c75eb68af567d420d9a35efb3490c93b27c
----
- src/3rdparty/angle/src/common/platform.h | 1 +
- .../angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp | 10 ++++++++++
- .../angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp | 4 ++++
- 3 files changed, 15 insertions(+)
-
-diff --git a/src/3rdparty/angle/src/common/platform.h b/src/3rdparty/angle/src/common/platform.h
-index 0065ec7..8b2190d 100644
---- a/src/3rdparty/angle/src/common/platform.h
-+++ b/src/3rdparty/angle/src/common/platform.h
-@@ -57,6 +57,7 @@
-
- # if defined(ANGLE_ENABLE_D3D11)
- # include <d3d10_1.h>
-+# include <d3d10.h>
- # include <d3d11.h>
- # include <d3d11_1.h>
- # include <dxgi.h>
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp
-index f6ba930..46b9984 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp
-@@ -258,6 +258,16 @@ EGLint Renderer11::initialize()
- }
-
- #if !defined(ANGLE_ENABLE_WINDOWS_STORE)
-+ static wchar_t *qt_d3dcreate_multihreaded_var = _wgetenv(L"QT_D3DCREATE_MULTITHREADED");
-+ if (qt_d3dcreate_multihreaded_var && wcsstr(qt_d3dcreate_multihreaded_var, L"1"))
-+ {
-+ ID3D10Multithread *multithread;
-+ result = mDevice->QueryInterface(IID_PPV_ARGS(&multithread));
-+ ASSERT(SUCCEEDED(result));
-+ result = multithread->SetMultithreadProtected(true);
-+ ASSERT(SUCCEEDED(result));
-+ multithread->Release();
-+ }
- #if !ANGLE_SKIP_DXGI_1_2_CHECK
- // In order to create a swap chain for an HWND owned by another process, DXGI 1.2 is required.
- // The easiest way to check is to query for a IDXGIDevice2.
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp
-index 82963ec..4c552b2 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp
-@@ -299,6 +299,10 @@ EGLint Renderer9::initialize()
- D3DPRESENT_PARAMETERS presentParameters = getDefaultPresentParameters();
- DWORD behaviorFlags = D3DCREATE_FPU_PRESERVE | D3DCREATE_NOWINDOWCHANGES;
-
-+ static wchar_t *qt_d3dcreate_multihreaded_var = _wgetenv(L"QT_D3DCREATE_MULTITHREADED");
-+ if (qt_d3dcreate_multihreaded_var && wcsstr(qt_d3dcreate_multihreaded_var, L"1"))
-+ behaviorFlags |= D3DCREATE_MULTITHREADED;
-+
- {
- result = mD3d9->CreateDevice(mAdapter, mDeviceType, mDeviceWindow, behaviorFlags | D3DCREATE_HARDWARE_VERTEXPROCESSING | D3DCREATE_PUREDEVICE, &presentParameters, &mDevice);
- }
---
-1.9.4.msysgit.1
-
diff --git a/src/angle/patches/0015-ANGLE-Fix-angle-d3d11-on-MSVC2010.patch b/src/angle/patches/0015-ANGLE-Fix-angle-d3d11-on-MSVC2010.patch
deleted file mode 100644
index f78474f11a..0000000000
--- a/src/angle/patches/0015-ANGLE-Fix-angle-d3d11-on-MSVC2010.patch
+++ /dev/null
@@ -1,536 +0,0 @@
-From d9a9219ea2181dd4c1939d05747a21b67f16a906 Mon Sep 17 00:00:00 2001
-From: Andrew Knight <andrew.knight@theqtcompany.com>
-Date: Thu, 13 Nov 2014 16:33:53 +0200
-Subject: [PATCH 15/16] ANGLE: Fix -angle-d3d11 on MSVC2010
-
-Allow the D3D11 renderer to build with the June 2010 DirectX SDK.
-
-Change-Id: I2343acedab16845d6a0d4a53cf3145f583efc4a7
----
- src/3rdparty/angle/src/common/platform.h | 8 +-
- src/3rdparty/angle/src/libGLESv2/Context.cpp | 8 +-
- src/3rdparty/angle/src/libGLESv2/Data.h | 2 +-
- src/3rdparty/angle/src/libGLESv2/State.cpp | 6 +-
- .../src/libGLESv2/renderer/d3d/RendererD3D.cpp | 4 +-
- .../libGLESv2/renderer/d3d/d3d11/Renderer11.cpp | 4 +-
- .../renderer/d3d/d3d11/renderer11_utils.cpp | 137 +++++++++++++++++++++
- 7 files changed, 156 insertions(+), 13 deletions(-)
-
-diff --git a/src/3rdparty/angle/src/common/platform.h b/src/3rdparty/angle/src/common/platform.h
-index 8b2190d..972eee2 100644
---- a/src/3rdparty/angle/src/common/platform.h
-+++ b/src/3rdparty/angle/src/common/platform.h
-@@ -52,17 +52,23 @@
-
- # if defined(ANGLE_ENABLE_D3D9)
- # include <d3d9.h>
-+# if !defined(COMPILER_IMPLEMENTATION)
- # include <d3dcompiler.h>
-+# endif
- # endif
-
- # if defined(ANGLE_ENABLE_D3D11)
- # include <d3d10_1.h>
- # include <d3d10.h>
- # include <d3d11.h>
--# include <d3d11_1.h>
- # include <dxgi.h>
-+# if defined(_MSC_VER) && (_MSC_VER >= 1700)
-+# include <d3d11_1.h>
- # include <dxgi1_2.h>
-+# endif
-+# if !defined(COMPILER_IMPLEMENTATION)
- # include <d3dcompiler.h>
-+# endif
- # endif
-
- # if defined(ANGLE_ENABLE_WINDOWS_STORE)
-diff --git a/src/3rdparty/angle/src/libGLESv2/Context.cpp b/src/3rdparty/angle/src/libGLESv2/Context.cpp
-index fe9b1a2..b87689c 100644
---- a/src/3rdparty/angle/src/libGLESv2/Context.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/Context.cpp
-@@ -168,9 +168,9 @@ Context::~Context()
- }
- mIncompleteTextures.clear();
-
-- for (auto &zeroTexture : mZeroTextures)
-+ for (TextureMap::iterator i = mZeroTextures.begin(); i != mZeroTextures.end(); i++)
- {
-- zeroTexture.second.set(NULL);
-+ i->second.set(NULL);
- }
- mZeroTextures.clear();
-
-@@ -354,7 +354,7 @@ void Context::deleteFenceSync(GLsync fenceSync)
-
- void Context::deleteVertexArray(GLuint vertexArray)
- {
-- auto vertexArrayObject = mVertexArrayMap.find(vertexArray);
-+ VertexArrayMap::iterator vertexArrayObject = mVertexArrayMap.find(vertexArray);
-
- if (vertexArrayObject != mVertexArrayMap.end())
- {
-@@ -460,7 +460,7 @@ FenceSync *Context::getFenceSync(GLsync handle) const
-
- VertexArray *Context::getVertexArray(GLuint handle) const
- {
-- auto vertexArray = mVertexArrayMap.find(handle);
-+ VertexArrayMap::const_iterator vertexArray = mVertexArrayMap.find(handle);
-
- if (vertexArray == mVertexArrayMap.end())
- {
-diff --git a/src/3rdparty/angle/src/libGLESv2/Data.h b/src/3rdparty/angle/src/libGLESv2/Data.h
-index cff872a..9234403 100644
---- a/src/3rdparty/angle/src/libGLESv2/Data.h
-+++ b/src/3rdparty/angle/src/libGLESv2/Data.h
-@@ -14,7 +14,7 @@
- namespace gl
- {
-
--struct Data final
-+struct Data
- {
- public:
- Data(GLint clientVersion, const State &state, const Caps &caps,
-diff --git a/src/3rdparty/angle/src/libGLESv2/State.cpp b/src/3rdparty/angle/src/libGLESv2/State.cpp
-index e7acda2..b5b62f5 100644
---- a/src/3rdparty/angle/src/libGLESv2/State.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/State.cpp
-@@ -665,13 +665,13 @@ void State::detachTexture(const TextureMap &zeroTextures, GLuint texture)
-
- void State::initializeZeroTextures(const TextureMap &zeroTextures)
- {
-- for (const auto &zeroTexture : zeroTextures)
-+ for (TextureMap::const_iterator i = zeroTextures.begin(); i != zeroTextures.end(); i++)
- {
-- auto &samplerTextureArray = mSamplerTextures[zeroTexture.first];
-+ TextureBindingVector &samplerTextureArray = mSamplerTextures[i->first];
-
- for (size_t textureUnit = 0; textureUnit < samplerTextureArray.size(); ++textureUnit)
- {
-- samplerTextureArray[textureUnit].set(zeroTexture.second.get());
-+ samplerTextureArray[textureUnit].set(i->second.get());
- }
- }
- }
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.cpp
-index 6f58243..97da6da 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.cpp
-@@ -27,9 +27,9 @@ RendererD3D::RendererD3D(egl::Display *display)
-
- RendererD3D::~RendererD3D()
- {
-- for (auto &incompleteTexture : mIncompleteTextures)
-+ for (gl::TextureMap::iterator i = mIncompleteTextures.begin(); i != mIncompleteTextures.end(); ++i)
- {
-- incompleteTexture.second.set(NULL);
-+ i->second.set(NULL);
- }
- mIncompleteTextures.clear();
- }
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp
-index 46b9984..a28fd78 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp
-@@ -873,7 +873,7 @@ bool Renderer11::applyPrimitiveType(GLenum mode, GLsizei count)
-
- void Renderer11::unsetSRVsWithResource(gl::SamplerType samplerType, const ID3D11Resource *resource)
- {
-- auto &currentSRVs = (samplerType == gl::SAMPLER_VERTEX ? mCurVertexSRVs : mCurPixelSRVs);
-+ std::vector<ID3D11ShaderResourceView *> &currentSRVs = (samplerType == gl::SAMPLER_VERTEX ? mCurVertexSRVs : mCurPixelSRVs);
-
- for (size_t resourceIndex = 0; resourceIndex < currentSRVs.size(); ++resourceIndex)
- {
-@@ -3398,7 +3398,7 @@ Workarounds Renderer11::generateWorkarounds() const
-
- void Renderer11::setShaderResource(gl::SamplerType shaderType, UINT resourceSlot, ID3D11ShaderResourceView *srv)
- {
-- auto &currentSRVs = (shaderType == gl::SAMPLER_VERTEX ? mCurVertexSRVs : mCurPixelSRVs);
-+ std::vector<ID3D11ShaderResourceView *> &currentSRVs = (shaderType == gl::SAMPLER_VERTEX ? mCurVertexSRVs : mCurPixelSRVs);
-
- ASSERT(static_cast<size_t>(resourceSlot) < currentSRVs.size());
-
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/renderer11_utils.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/renderer11_utils.cpp
-index cbfe557..5831c57 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/renderer11_utils.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/renderer11_utils.cpp
-@@ -18,6 +18,85 @@
-
- #include <algorithm>
-
-+#ifndef D3D_FL9_1_DEFAULT_MAX_ANISOTROPY
-+# define D3D_FL9_1_DEFAULT_MAX_ANISOTROPY 2
-+#endif
-+#ifndef D3D_FL9_1_SIMULTANEOUS_RENDER_TARGET_COUNT
-+# define D3D_FL9_1_SIMULTANEOUS_RENDER_TARGET_COUNT 1
-+#endif
-+#ifndef D3D_FL9_3_SIMULTANEOUS_RENDER_TARGET_COUNT
-+# define D3D_FL9_3_SIMULTANEOUS_RENDER_TARGET_COUNT 4
-+#endif
-+#ifndef D3D_FL9_1_IA_PRIMITIVE_MAX_COUNT
-+# define D3D_FL9_1_IA_PRIMITIVE_MAX_COUNT 65535
-+#endif
-+#ifndef D3D_FL9_2_IA_PRIMITIVE_MAX_COUNT
-+# define D3D_FL9_2_IA_PRIMITIVE_MAX_COUNT 1048575
-+#endif
-+#ifndef D3D_FL9_1_REQ_TEXTURECUBE_DIMENSION
-+# define D3D_FL9_1_REQ_TEXTURECUBE_DIMENSION 512
-+#endif
-+#ifndef D3D_FL9_3_REQ_TEXTURECUBE_DIMENSION
-+# define D3D_FL9_3_REQ_TEXTURECUBE_DIMENSION 4096
-+#endif
-+#ifndef D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION
-+# define D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION 2048
-+#endif
-+#ifndef D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION
-+# define D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION 256
-+#endif
-+#ifndef D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION
-+# define D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION 4096
-+#endif
-+#ifndef D3D11_REQ_TEXTURECUBE_DIMENSION
-+# define D3D11_REQ_TEXTURECUBE_DIMENSION 16384
-+#endif
-+#ifndef D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION
-+# define D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION 2048
-+#endif
-+#ifndef D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION
-+# define D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION 2048
-+#endif
-+#ifndef D3D11_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP
-+# define D3D11_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP 32
-+#endif
-+#ifndef D3D11_REQ_DRAW_VERTEX_COUNT_2_TO_EXP
-+# define D3D11_REQ_DRAW_VERTEX_COUNT_2_TO_EXP 32
-+#endif
-+#ifndef D3D10_1_STANDARD_VERTEX_ELEMENT_COUNT
-+# define D3D10_1_STANDARD_VERTEX_ELEMENT_COUNT 32
-+#endif
-+#ifndef D3D11_STANDARD_VERTEX_ELEMENT_COUNT
-+# define D3D11_STANDARD_VERTEX_ELEMENT_COUNT 32
-+#endif
-+#ifndef D3D10_1_SO_BUFFER_SLOT_COUNT
-+# define D3D10_1_SO_BUFFER_SLOT_COUNT 4
-+#endif
-+#ifndef D3D11_SO_BUFFER_SLOT_COUNT
-+# define D3D11_SO_BUFFER_SLOT_COUNT 4
-+#endif
-+#ifndef D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT
-+# define D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT 14
-+#endif
-+#ifndef D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT
-+# define D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT 16
-+#endif
-+#ifndef D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE
-+# define D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE -8
-+#endif
-+#ifndef D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE
-+# define D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE 7
-+#endif
-+#ifndef D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT
-+# define D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT 4096
-+#endif
-+#ifndef D3D11_PS_INPUT_REGISTER_COUNT
-+# define D3D11_PS_INPUT_REGISTER_COUNT 32
-+#endif
-+#ifndef D3D10_1_VS_OUTPUT_REGISTER_COUNT
-+# define D3D10_1_VS_OUTPUT_REGISTER_COUNT 32
-+#endif
-+
- namespace rx
- {
-
-@@ -276,7 +355,9 @@ static bool GetNPOTTextureSupport(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0:
- case D3D_FEATURE_LEVEL_10_1:
- case D3D_FEATURE_LEVEL_10_0: return true;
-@@ -294,7 +375,9 @@ static float GetMaximumAnisotropy(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_MAX_MAXANISOTROPY;
-
- case D3D_FEATURE_LEVEL_10_1:
-@@ -314,7 +397,9 @@ static bool GetOcclusionQuerySupport(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0:
- case D3D_FEATURE_LEVEL_10_1:
- case D3D_FEATURE_LEVEL_10_0: return true;
-@@ -334,7 +419,9 @@ static bool GetEventQuerySupport(D3D_FEATURE_LEVEL featureLevel)
-
- switch (featureLevel)
- {
-+#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0:
- case D3D_FEATURE_LEVEL_10_1:
- case D3D_FEATURE_LEVEL_10_0:
-@@ -352,7 +439,9 @@ static bool GetInstancingSupport(D3D_FEATURE_LEVEL featureLevel)
-
- switch (featureLevel)
- {
-+#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0:
- case D3D_FEATURE_LEVEL_10_1:
- case D3D_FEATURE_LEVEL_10_0:
-@@ -375,7 +464,9 @@ static bool GetDerivativeInstructionSupport(D3D_FEATURE_LEVEL featureLevel)
-
- switch (featureLevel)
- {
-+#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0:
- case D3D_FEATURE_LEVEL_10_1:
- case D3D_FEATURE_LEVEL_10_0:
-@@ -393,7 +484,9 @@ static size_t GetMaximumSimultaneousRenderTargets(D3D_FEATURE_LEVEL featureLevel
-
- switch (featureLevel)
- {
-+#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT;
-
- case D3D_FEATURE_LEVEL_10_1:
-@@ -411,7 +504,9 @@ static size_t GetMaximum2DTextureSize(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION;
-
- case D3D_FEATURE_LEVEL_10_1:
-@@ -429,7 +524,9 @@ static size_t GetMaximumCubeMapTextureSize(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_REQ_TEXTURECUBE_DIMENSION;
-
- case D3D_FEATURE_LEVEL_10_1:
-@@ -447,7 +544,9 @@ static size_t GetMaximum2DTextureArraySize(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION;
-
- case D3D_FEATURE_LEVEL_10_1:
-@@ -465,7 +564,9 @@ static size_t GetMaximum3DTextureSize(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION;
-
- case D3D_FEATURE_LEVEL_10_1:
-@@ -483,7 +584,9 @@ static size_t GetMaximumViewportSize(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_VIEWPORT_BOUNDS_MAX;
-
- case D3D_FEATURE_LEVEL_10_1:
-@@ -507,7 +610,9 @@ static size_t GetMaximumDrawIndexedIndexCount(D3D_FEATURE_LEVEL featureLevel)
-
- switch (featureLevel)
- {
-+#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0:
- case D3D_FEATURE_LEVEL_10_1:
- case D3D_FEATURE_LEVEL_10_0: return std::numeric_limits<GLint>::max();
-@@ -529,7 +634,9 @@ static size_t GetMaximumDrawVertexCount(D3D_FEATURE_LEVEL featureLevel)
-
- switch (featureLevel)
- {
-+#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0:
- case D3D_FEATURE_LEVEL_10_1:
- case D3D_FEATURE_LEVEL_10_0: return std::numeric_limits<GLint>::max();
-@@ -546,7 +653,9 @@ static size_t GetMaximumVertexInputSlots(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_STANDARD_VERTEX_ELEMENT_COUNT;
-
- case D3D_FEATURE_LEVEL_10_1: return D3D10_1_STANDARD_VERTEX_ELEMENT_COUNT;
-@@ -566,7 +675,9 @@ static size_t GetMaximumVertexUniformVectors(D3D_FEATURE_LEVEL featureLevel)
- // TODO(geofflang): Remove hard-coded limit once the gl-uniform-arrays test can pass
- switch (featureLevel)
- {
-+#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return 1024; // D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT;
-
- case D3D_FEATURE_LEVEL_10_1:
-@@ -591,7 +702,9 @@ static size_t GetMaximumVertexUniformBlocks(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - GetReservedVertexUniformBuffers();
-
- case D3D_FEATURE_LEVEL_10_1:
-@@ -618,7 +731,9 @@ static size_t GetMaximumVertexOutputVectors(D3D_FEATURE_LEVEL featureLevel)
-
- switch (featureLevel)
- {
-+#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_VS_OUTPUT_REGISTER_COUNT - GetReservedVertexOutputVectors();
-
- case D3D_FEATURE_LEVEL_10_1: return D3D10_1_VS_OUTPUT_REGISTER_COUNT - GetReservedVertexOutputVectors();
-@@ -637,7 +752,9 @@ static size_t GetMaximumVertexTextureUnits(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT;
-
- case D3D_FEATURE_LEVEL_10_1:
-@@ -659,7 +776,9 @@ static size_t GetMaximumPixelUniformVectors(D3D_FEATURE_LEVEL featureLevel)
- // TODO(geofflang): Remove hard-coded limit once the gl-uniform-arrays test can pass
- switch (featureLevel)
- {
-+#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return 1024; // D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT;
-
- case D3D_FEATURE_LEVEL_10_1:
-@@ -684,7 +803,9 @@ static size_t GetMaximumPixelUniformBlocks(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - GetReservedPixelUniformBuffers();
-
- case D3D_FEATURE_LEVEL_10_1:
-@@ -703,7 +824,9 @@ static size_t GetMaximumPixelInputVectors(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_PS_INPUT_REGISTER_COUNT - GetReservedVertexOutputVectors();
-
- case D3D_FEATURE_LEVEL_10_1:
-@@ -722,7 +845,9 @@ static size_t GetMaximumPixelTextureUnits(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT;
-
- case D3D_FEATURE_LEVEL_10_1:
-@@ -741,7 +866,9 @@ static int GetMinimumTexelOffset(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE;
-
- case D3D_FEATURE_LEVEL_10_1:
-@@ -760,7 +887,9 @@ static int GetMaximumTexelOffset(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE;
- case D3D_FEATURE_LEVEL_10_1:
- case D3D_FEATURE_LEVEL_10_0: return D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE;
-@@ -783,7 +912,9 @@ static size_t GetMaximumConstantBufferSize(D3D_FEATURE_LEVEL featureLevel)
-
- switch (featureLevel)
- {
-+#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT * bytesPerComponent;
-
- case D3D_FEATURE_LEVEL_10_1:
-@@ -802,7 +933,9 @@ static size_t GetMaximumStreamOutputBuffers(D3D_FEATURE_LEVEL featureLevel)
- {
- switch (featureLevel)
- {
-+#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return D3D11_SO_BUFFER_SLOT_COUNT;
-
- case D3D_FEATURE_LEVEL_10_1: return D3D10_1_SO_BUFFER_SLOT_COUNT;
-@@ -820,7 +953,9 @@ static size_t GetMaximumStreamOutputInterleavedComponents(D3D_FEATURE_LEVEL feat
- {
- switch (featureLevel)
- {
-+#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0:
-
- case D3D_FEATURE_LEVEL_10_1:
-@@ -838,7 +973,9 @@ static size_t GetMaximumStreamOutputSeparateComponents(D3D_FEATURE_LEVEL feature
- {
- switch (featureLevel)
- {
-+#if !defined(_MSC_VER) || (_MSC_VER >= 1800)
- case D3D_FEATURE_LEVEL_11_1:
-+#endif
- case D3D_FEATURE_LEVEL_11_0: return GetMaximumStreamOutputInterleavedComponents(featureLevel) /
- GetMaximumStreamOutputBuffers(featureLevel);
-
---
-1.9.4.msysgit.1
-
diff --git a/src/angle/patches/0016-ANGLE-Fix-compilation-with-MinGW-D3D11.patch b/src/angle/patches/0016-ANGLE-Fix-compilation-with-MinGW-D3D11.patch
deleted file mode 100644
index e3df95d8bf..0000000000
--- a/src/angle/patches/0016-ANGLE-Fix-compilation-with-MinGW-D3D11.patch
+++ /dev/null
@@ -1,169 +0,0 @@
-From 43c8ceb17ccd6d5ae13a07c6d01b45eb40983917 Mon Sep 17 00:00:00 2001
-From: Andrew Knight <andrew.knight@theqtcompany.com>
-Date: Tue, 11 Nov 2014 14:36:43 +0200
-Subject: [PATCH 16/16] ANGLE: Fix compilation with MinGW + D3D11
-
-Provide workarounds for things GCC doesn't like, and define a few
-missing definitions not found in the MinGW headers.
-
-Change-Id: I254c208209c0071fae5efb6727f2b3cfd5542da6
----
- src/3rdparty/angle/src/common/platform.h | 73 ++++++++++++++++++++++
- .../src/libGLESv2/renderer/d3d/HLSLCompiler.cpp | 6 ++
- .../libGLESv2/renderer/d3d/d3d11/Renderer11.cpp | 2 +-
- .../renderer/d3d/d3d11/renderer11_utils.cpp | 2 +-
- .../src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp | 4 +-
- 5 files changed, 83 insertions(+), 4 deletions(-)
-
-diff --git a/src/3rdparty/angle/src/common/platform.h b/src/3rdparty/angle/src/common/platform.h
-index 972eee2..0001e71 100644
---- a/src/3rdparty/angle/src/common/platform.h
-+++ b/src/3rdparty/angle/src/common/platform.h
-@@ -81,6 +81,79 @@
- # endif
- # endif
-
-+# if defined(__MINGW32__) // Missing defines on MinGW
-+typedef enum D3D11_MAP_FLAG
-+{
-+ D3D11_MAP_FLAG_DO_NOT_WAIT = 0x100000L
-+} D3D11_MAP_FLAG;
-+typedef struct D3D11_QUERY_DATA_SO_STATISTICS
-+{
-+ UINT64 NumPrimitivesWritten;
-+ UINT64 PrimitivesStorageNeeded;
-+} D3D11_QUERY_DATA_SO_STATISTICS;
-+typedef HRESULT (WINAPI *PFN_D3D11_CREATE_DEVICE)(
-+ IDXGIAdapter *, D3D_DRIVER_TYPE, HMODULE, UINT, CONST D3D_FEATURE_LEVEL *,
-+ UINT FeatureLevels, UINT, ID3D11Device **, D3D_FEATURE_LEVEL *, ID3D11DeviceContext **);
-+#define D3D11_MESSAGE_CATEGORY UINT
-+#define D3D11_MESSAGE_SEVERITY UINT
-+#define D3D11_MESSAGE_ID UINT
-+struct D3D11_MESSAGE;
-+typedef struct D3D11_INFO_QUEUE_FILTER_DESC
-+{
-+ UINT NumCategories;
-+ D3D11_MESSAGE_CATEGORY *pCategoryList;
-+ UINT NumSeverities;
-+ D3D11_MESSAGE_SEVERITY *pSeverityList;
-+ UINT NumIDs;
-+ D3D11_MESSAGE_ID *pIDList;
-+} D3D11_INFO_QUEUE_FILTER_DESC;
-+typedef struct D3D11_INFO_QUEUE_FILTER
-+{
-+ D3D11_INFO_QUEUE_FILTER_DESC AllowList;
-+ D3D11_INFO_QUEUE_FILTER_DESC DenyList;
-+} D3D11_INFO_QUEUE_FILTER;
-+static const IID IID_ID3D11InfoQueue = { 0x6543dbb6, 0x1b48, 0x42f5, 0xab, 0x82, 0xe9, 0x7e, 0xc7, 0x43, 0x26, 0xf6 };
-+MIDL_INTERFACE("6543dbb6-1b48-42f5-ab82-e97ec74326f6") ID3D11InfoQueue : public IUnknown
-+{
-+public:
-+ virtual HRESULT __stdcall SetMessageCountLimit(UINT64) = 0;
-+ virtual void __stdcall ClearStoredMessages() = 0;
-+ virtual HRESULT __stdcall GetMessage(UINT64, D3D11_MESSAGE *, SIZE_T *) = 0;
-+ virtual UINT64 __stdcall GetNumMessagesAllowedByStorageFilter() = 0;
-+ virtual UINT64 __stdcall GetNumMessagesDeniedByStorageFilter() = 0;
-+ virtual UINT64 __stdcall GetNumStoredMessages() = 0;
-+ virtual UINT64 __stdcall GetNumStoredMessagesAllowedByRetrievalFilter() = 0;
-+ virtual UINT64 __stdcall GetNumMessagesDiscardedByMessageCountLimit() = 0;
-+ virtual UINT64 __stdcall GetMessageCountLimit() = 0;
-+ virtual HRESULT __stdcall AddStorageFilterEntries(D3D11_INFO_QUEUE_FILTER *) = 0;
-+ virtual HRESULT __stdcall GetStorageFilter(D3D11_INFO_QUEUE_FILTER *, SIZE_T *) = 0;
-+ virtual void __stdcall ClearStorageFilter() = 0;
-+ virtual HRESULT __stdcall PushEmptyStorageFilter() = 0;
-+ virtual HRESULT __stdcall PushCopyOfStorageFilter() = 0;
-+ virtual HRESULT __stdcall PushStorageFilter(D3D11_INFO_QUEUE_FILTER *) = 0;
-+ virtual void __stdcall PopStorageFilter() = 0;
-+ virtual UINT __stdcall GetStorageFilterStackSize() = 0;
-+ virtual HRESULT __stdcall AddRetrievalFilterEntries(D3D11_INFO_QUEUE_FILTER *) = 0;
-+ virtual HRESULT __stdcall GetRetrievalFilter(D3D11_INFO_QUEUE_FILTER *, SIZE_T *) = 0;
-+ virtual void __stdcall ClearRetrievalFilter() = 0;
-+ virtual HRESULT __stdcall PushEmptyRetrievalFilter() = 0;
-+ virtual HRESULT __stdcall PushCopyOfRetrievalFilter() = 0;
-+ virtual HRESULT __stdcall PushRetrievalFilter(D3D11_INFO_QUEUE_FILTER *) = 0;
-+ virtual void __stdcall PopRetrievalFilter() = 0;
-+ virtual UINT __stdcall GetRetrievalFilterStackSize() = 0;
-+ virtual HRESULT __stdcall AddMessage(D3D11_MESSAGE_CATEGORY, D3D11_MESSAGE_SEVERITY, D3D11_MESSAGE_ID, LPCSTR) = 0;
-+ virtual HRESULT __stdcall AddApplicationMessage(D3D11_MESSAGE_SEVERITY, LPCSTR) = 0;
-+ virtual HRESULT __stdcall SetBreakOnCategory(D3D11_MESSAGE_CATEGORY, BOOL) = 0;
-+ virtual HRESULT __stdcall SetBreakOnSeverity(D3D11_MESSAGE_SEVERITY, BOOL) = 0;
-+ virtual HRESULT __stdcall SetBreakOnID(D3D11_MESSAGE_ID, BOOL) = 0;
-+ virtual BOOL __stdcall GetBreakOnCategory(D3D11_MESSAGE_CATEGORY) = 0;
-+ virtual BOOL __stdcall GetBreakOnSeverity(D3D11_MESSAGE_SEVERITY) = 0;
-+ virtual BOOL __stdcall GetBreakOnID(D3D11_MESSAGE_ID) = 0;
-+ virtual void __stdcall SetMuteDebugOutput(BOOL) = 0;
-+ virtual BOOL __stdcall GetMuteDebugOutput() = 0;
-+};
-+#endif // __MINGW32__
-+
- # undef near
- # undef far
- #endif
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/HLSLCompiler.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/HLSLCompiler.cpp
-index 9d003b4..776d92b 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/HLSLCompiler.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/HLSLCompiler.cpp
-@@ -14,6 +14,12 @@
- #ifndef QT_D3DCOMPILER_DLL
- #define QT_D3DCOMPILER_DLL D3DCOMPILER_DLL
- #endif
-+#ifndef D3DCOMPILE_RESERVED16
-+#define D3DCOMPILE_RESERVED16 (1 << 16)
-+#endif
-+#ifndef D3DCOMPILE_RESERVED17
-+#define D3DCOMPILE_RESERVED17 (1 << 17)
-+#endif
-
- // Definitions local to the translation unit
- namespace
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp
-index a28fd78..e6d7f30 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp
-@@ -333,7 +333,7 @@ EGLint Renderer11::initialize()
- // Disable some spurious D3D11 debug warnings to prevent them from flooding the output log
- #if defined(ANGLE_SUPPRESS_D3D11_HAZARD_WARNINGS) && defined(_DEBUG)
- ID3D11InfoQueue *infoQueue;
-- result = mDevice->QueryInterface(__uuidof(ID3D11InfoQueue), (void **)&infoQueue);
-+ result = mDevice->QueryInterface(IID_ID3D11InfoQueue, (void **)&infoQueue);
-
- if (SUCCEEDED(result))
- {
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/renderer11_utils.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/renderer11_utils.cpp
-index 5831c57..121aa3b 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/renderer11_utils.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/renderer11_utils.cpp
-@@ -1196,7 +1196,7 @@ void SetPositionLayerTexCoord3DVertex(PositionLayerTexCoord3DVertex* vertex, flo
-
- HRESULT SetDebugName(ID3D11DeviceChild *resource, const char *name)
- {
--#if defined(_DEBUG)
-+#if defined(_DEBUG) && !defined(__MINGW32__)
- return resource->SetPrivateData(WKPDID_D3DDebugObjectName, strlen(name), name);
- #else
- return S_OK;
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp
-index 4c552b2..601cd24 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp
-@@ -200,7 +200,7 @@ EGLint Renderer9::initialize()
- if (ANGLE_D3D9EX == ANGLE_ENABLED && Direct3DCreate9ExPtr && SUCCEEDED(Direct3DCreate9ExPtr(D3D_SDK_VERSION, &mD3d9Ex)))
- {
- ASSERT(mD3d9Ex);
-- mD3d9Ex->QueryInterface(__uuidof(IDirect3D9), reinterpret_cast<void**>(&mD3d9));
-+ mD3d9Ex->QueryInterface(IID_IDirect3D9, reinterpret_cast<void**>(&mD3d9));
- ASSERT(mD3d9);
- }
- else
-@@ -324,7 +324,7 @@ EGLint Renderer9::initialize()
-
- if (mD3d9Ex)
- {
-- result = mDevice->QueryInterface(__uuidof(IDirect3DDevice9Ex), (void**)&mDeviceEx);
-+ result = mDevice->QueryInterface(IID_IDirect3DDevice9Ex, (void**)&mDeviceEx);
- ASSERT(SUCCEEDED(result));
- }
-
---
-1.9.4.msysgit.1
-
diff --git a/src/angle/patches/0017-ANGLE-Fix-compilation-with-D3D9.patch b/src/angle/patches/0017-ANGLE-Fix-compilation-with-D3D9.patch
deleted file mode 100644
index 4ada6d41d2..0000000000
--- a/src/angle/patches/0017-ANGLE-Fix-compilation-with-D3D9.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From d7839cc052de126cc3b457fe41963fd9c7e91846 Mon Sep 17 00:00:00 2001
-From: Kai Koehne <kai.koehne@theqtcompany.com>
-Date: Mon, 17 Nov 2014 15:10:10 +0100
-Subject: [PATCH] ANGLE: Fix compilation with D3D9
-
-Fixes a regression introduced in c6df5fe3ed0f2a722 that
-broke compilation with d3d9 (namely, -target xp).
-
-Task-number: QTBUG-42714
-Change-Id: I1a5e9682d5463bfa082a5d0c062399a131a7cf52
----
- src/3rdparty/angle/src/common/NativeWindow.h | 7 ++++++-
- src/3rdparty/angle/src/common/platform.h | 1 +
- src/3rdparty/angle/src/common/win32/NativeWindow.cpp | 2 +-
- 3 files changed, 8 insertions(+), 2 deletions(-)
-
-diff --git a/src/3rdparty/angle/src/common/NativeWindow.h b/src/3rdparty/angle/src/common/NativeWindow.h
-index 9e93aea..c4a0e42 100644
---- a/src/3rdparty/angle/src/common/NativeWindow.h
-+++ b/src/3rdparty/angle/src/common/NativeWindow.h
-@@ -54,7 +54,12 @@ public:
- bool getClientRect(LPRECT rect);
- bool isIconic();
-
-- HRESULT createSwapChain(ID3D11Device* device, DXGIFactory* factory,
-+# if defined(ANGLE_ENABLE_D3D11)
-+ typedef ID3D11Device Device;
-+#else
-+ typedef IDirect3DDevice9 Device;
-+#endif
-+ HRESULT createSwapChain(Device* device, DXGIFactory* factory,
- DXGI_FORMAT format, UINT width, UINT height,
- DXGISwapChain** swapChain);
-
-diff --git a/src/3rdparty/angle/src/common/platform.h b/src/3rdparty/angle/src/common/platform.h
-index 0001e71..5bf97f9 100644
---- a/src/3rdparty/angle/src/common/platform.h
-+++ b/src/3rdparty/angle/src/common/platform.h
-@@ -52,6 +52,7 @@
-
- # if defined(ANGLE_ENABLE_D3D9)
- # include <d3d9.h>
-+# include <dxgi.h>
- # if !defined(COMPILER_IMPLEMENTATION)
- # include <d3dcompiler.h>
- # endif
-diff --git a/src/3rdparty/angle/src/common/win32/NativeWindow.cpp b/src/3rdparty/angle/src/common/win32/NativeWindow.cpp
-index 2440747..46082a2 100644
---- a/src/3rdparty/angle/src/common/win32/NativeWindow.cpp
-+++ b/src/3rdparty/angle/src/common/win32/NativeWindow.cpp
-@@ -35,7 +35,7 @@ bool NativeWindow::isIconic()
- return IsIconic(mWindow) == TRUE;
- }
-
--HRESULT NativeWindow::createSwapChain(ID3D11Device* device, DXGIFactory* factory,
-+HRESULT NativeWindow::createSwapChain(NativeWindow::Device* device, DXGIFactory* factory,
- DXGI_FORMAT format, unsigned int width, unsigned int height,
- DXGISwapChain** swapChain)
- {
---
-1.9.4.msysgit.0
-
diff --git a/src/angle/patches/0018-ANGLE-Fix-releasing-textures-after-we-kill-D3D11.patch b/src/angle/patches/0018-ANGLE-Fix-releasing-textures-after-we-kill-D3D11.patch
deleted file mode 100644
index 97847ad684..0000000000
--- a/src/angle/patches/0018-ANGLE-Fix-releasing-textures-after-we-kill-D3D11.patch
+++ /dev/null
@@ -1,106 +0,0 @@
-From 014d3fcf6011109491b0489da9c1abb1fdc6dbdc Mon Sep 17 00:00:00 2001
-From: Kai Koehne <kai.koehne@theqtcompany.com>
-Date: Mon, 24 Nov 2014 10:52:03 +0100
-Subject: [PATCH] ANGLE: Fix releasing textures after we kill D3D11
-
-Cherry-pick upstream commit cc4cd2925b9a4f1142a86df131345a861c9d7cd9
-to fix crashes on exit.
-
-Task-number: QTBUG-42772
-Change-Id: Ib74be17f2b5fdd58f9e0568e1da74ba19e943019
----
- src/3rdparty/angle/src/libGLESv2/Context.cpp | 6 ------
- src/3rdparty/angle/src/libGLESv2/Context.h | 1 -
- src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.cpp | 5 +++++
- src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.h | 2 ++
- src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp | 2 ++
- src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp | 2 ++
- 6 files changed, 11 insertions(+), 7 deletions(-)
-
-diff --git a/src/3rdparty/angle/src/libGLESv2/Context.cpp b/src/3rdparty/angle/src/libGLESv2/Context.cpp
-index b87689c..3772da6 100644
---- a/src/3rdparty/angle/src/libGLESv2/Context.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/Context.cpp
-@@ -162,12 +162,6 @@ Context::~Context()
- deleteTransformFeedback(mTransformFeedbackMap.begin()->first);
- }
-
-- for (TextureMap::iterator i = mIncompleteTextures.begin(); i != mIncompleteTextures.end(); i++)
-- {
-- i->second.set(NULL);
-- }
-- mIncompleteTextures.clear();
--
- for (TextureMap::iterator i = mZeroTextures.begin(); i != mZeroTextures.end(); i++)
- {
- i->second.set(NULL);
-diff --git a/src/3rdparty/angle/src/libGLESv2/Context.h b/src/3rdparty/angle/src/libGLESv2/Context.h
-index 1e890de..0699592 100644
---- a/src/3rdparty/angle/src/libGLESv2/Context.h
-+++ b/src/3rdparty/angle/src/libGLESv2/Context.h
-@@ -247,7 +247,6 @@ class Context
- int mClientVersion;
-
- TextureMap mZeroTextures;
-- TextureMap mIncompleteTextures;
-
- typedef std::unordered_map<GLuint, Framebuffer*> FramebufferMap;
- FramebufferMap mFramebufferMap;
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.cpp
-index 97da6da..5cddd8a 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.cpp
-@@ -27,6 +27,11 @@ RendererD3D::RendererD3D(egl::Display *display)
-
- RendererD3D::~RendererD3D()
- {
-+ cleanup();
-+}
-+
-+void RendererD3D::cleanup()
-+{
- for (gl::TextureMap::iterator i = mIncompleteTextures.begin(); i != mIncompleteTextures.end(); ++i)
- {
- i->second.set(NULL);
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.h b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.h
-index 9919207..a2f7787 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.h
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.h
-@@ -160,6 +160,8 @@ class RendererD3D : public Renderer
- const gl::Rectangle *scissor, bool blitRenderTarget,
- bool blitDepth, bool blitStencil, GLenum filter) = 0;
-
-+ void cleanup();
-+
- egl::Display *mDisplay;
-
- private:
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp
-index e6d7f30..777308e 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp
-@@ -1870,6 +1870,8 @@ bool Renderer11::testDeviceResettable()
-
- void Renderer11::release()
- {
-+ RendererD3D::cleanup();
-+
- releaseShaderCompiler();
- releaseDeviceResources();
-
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp
-index 601cd24..18e6e2d 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp
-@@ -151,6 +151,8 @@ Renderer9::~Renderer9()
-
- void Renderer9::release()
- {
-+ RendererD3D::cleanup();
-+
- releaseShaderCompiler();
- releaseDeviceResources();
-
---
-1.9.4.msysgit.0
-
diff --git a/src/angle/patches/0019-ANGLE-Fix-handling-of-shader-source-with-fixed-lengt.patch b/src/angle/patches/0019-ANGLE-Fix-handling-of-shader-source-with-fixed-lengt.patch
deleted file mode 100644
index 5fa244c1b5..0000000000
--- a/src/angle/patches/0019-ANGLE-Fix-handling-of-shader-source-with-fixed-lengt.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 5e277b05a16e7be24d36c600f158f8119ee583d8 Mon Sep 17 00:00:00 2001
-From: Andrew Knight <andrew.knight@theqtcompany.com>
-Date: Mon, 1 Dec 2014 11:58:08 +0200
-Subject: [PATCH] ANGLE: Fix handling of shader source with fixed length
-
-This is a cherry-pick of upstream f60fab6d154f4c9bf599e92976cd8cee7f8633e0
-(See https://chromium-review.googlesource.com/231612)
-
-Task-number: QTBUG-42882
-Change-Id: I7b4bdc4b68a1b93ff514f09ce35dbf4e9360af9b
----
- src/3rdparty/angle/src/libGLESv2/Shader.cpp | 9 ++++++++-
- 1 file changed, 8 insertions(+), 1 deletion(-)
-
-diff --git a/src/3rdparty/angle/src/libGLESv2/Shader.cpp b/src/3rdparty/angle/src/libGLESv2/Shader.cpp
-index 1cc17a0..5bca746 100644
---- a/src/3rdparty/angle/src/libGLESv2/Shader.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/Shader.cpp
-@@ -51,7 +51,14 @@ void Shader::setSource(GLsizei count, const char *const *string, const GLint *le
-
- for (int i = 0; i < count; i++)
- {
-- stream << string[i];
-+ if (length == nullptr || length[i] < 0)
-+ {
-+ stream.write(string[i], std::strlen(string[i]));
-+ }
-+ else
-+ {
-+ stream.write(string[i], length[i]);
-+ }
- }
-
- mSource = stream.str();
---
-1.9.4.msysgit.1
-
diff --git a/src/angle/patches/0020-ANGLE-Do-not-use-std-strlen.patch b/src/angle/patches/0020-ANGLE-Do-not-use-std-strlen.patch
deleted file mode 100644
index 324244f6eb..0000000000
--- a/src/angle/patches/0020-ANGLE-Do-not-use-std-strlen.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 071b8936386b0b44475c91511d85479e5c633bc5 Mon Sep 17 00:00:00 2001
-From: Kai Koehne <kai.koehne@theqtcompany.com>
-Date: Thu, 11 Dec 2014 13:54:23 +0100
-Subject: [PATCH] ANGLE: Do not use std::strlen
-
-This is a cherry-pick from upstream change
-
-e7cfb3dd2029c1bfe5c175ad994c03cac221ad4d
-
-Change-Id: Iefe01545319f9ad268c0c6bf8e8b2181e09d8a84
----
- src/3rdparty/angle/src/libGLESv2/Shader.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/3rdparty/angle/src/libGLESv2/Shader.cpp b/src/3rdparty/angle/src/libGLESv2/Shader.cpp
-index 5bca746..024ef8f 100644
---- a/src/3rdparty/angle/src/libGLESv2/Shader.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/Shader.cpp
-@@ -53,7 +53,7 @@ void Shader::setSource(GLsizei count, const char *const *string, const GLint *le
- {
- if (length == nullptr || length[i] < 0)
- {
-- stream.write(string[i], std::strlen(string[i]));
-+ stream.write(string[i], strlen(string[i]));
- }
- else
- {
---
-1.9.4.msysgit.0
-
diff --git a/src/angle/patches/0020-ANGLE-Fix-compilation-with-MSVC2013-Update4.patch b/src/angle/patches/0020-ANGLE-Fix-compilation-with-MSVC2013-Update4.patch
deleted file mode 100644
index 49b229d905..0000000000
--- a/src/angle/patches/0020-ANGLE-Fix-compilation-with-MSVC2013-Update4.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From a48dfb3f1ecb57a59084c0e87155506586b73188 Mon Sep 17 00:00:00 2001
-From: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
-Date: Thu, 11 Dec 2014 13:11:55 +0100
-Subject: [PATCH] [ANGLE] Fix compilation with MSVC2013 Update4
-
-Update4 provides a native Sleep implementation. Hence the wrapper
-needs to be disabled.
-
-Change-Id: I162da45934b02c262ac09b557c66c3363c276e54
----
- src/3rdparty/angle/src/common/utilities.cpp | 2 +-
- src/3rdparty/angle/src/common/utilities.h | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/3rdparty/angle/src/common/utilities.cpp b/src/3rdparty/angle/src/common/utilities.cpp
-index 9d797a6..924573e 100644
---- a/src/3rdparty/angle/src/common/utilities.cpp
-+++ b/src/3rdparty/angle/src/common/utilities.cpp
-@@ -486,7 +486,7 @@ void writeFile(const char* path, const void* content, size_t size)
- }
- #endif // !ANGLE_ENABLE_WINDOWS_STORE
-
--#if defined(ANGLE_ENABLE_WINDOWS_STORE)
-+#if defined(ANGLE_ENABLE_WINDOWS_STORE) && _MSC_FULL_VER < 180031101
-
- void Sleep(unsigned long dwMilliseconds)
- {
-diff --git a/src/3rdparty/angle/src/common/utilities.h b/src/3rdparty/angle/src/common/utilities.h
-index 2cf6bed..7583d3e 100644
---- a/src/3rdparty/angle/src/common/utilities.h
-+++ b/src/3rdparty/angle/src/common/utilities.h
-@@ -51,7 +51,7 @@ std::string getTempPath();
- void writeFile(const char* path, const void* data, size_t size);
- #endif
-
--#if defined(ANGLE_ENABLE_WINDOWS_STORE)
-+#if defined(ANGLE_ENABLE_WINDOWS_STORE) && _MSC_FULL_VER < 180031101
- void Sleep(_In_ unsigned long dwMilliseconds);
- #endif
-
---
-1.9.4.msysgit.2
-
diff --git a/src/angle/src/common/common.pri b/src/angle/src/common/common.pri
index 7d3f46d65f..63b80347d1 100644
--- a/src/angle/src/common/common.pri
+++ b/src/angle/src/common/common.pri
@@ -46,20 +46,4 @@ win32-msvc2012|win32-msvc2013|winrt {
}
}
-static: DEFINES *= QT_OPENGL_ES_2_ANGLE_STATIC
-
-HEADERS += \
- $$ANGLE_DIR/src/common/angleutils.h \
- $$ANGLE_DIR/src/common/debug.h \
- $$ANGLE_DIR/src/common/mathutil.h \
- $$ANGLE_DIR/src/common/platform.h \
- $$ANGLE_DIR/src/common/RefCountObject.h \
- $$ANGLE_DIR/src/common/tls.h \
- $$ANGLE_DIR/src/common/version.h
-
-SOURCES += \
- $$ANGLE_DIR/src/common/angleutils.cpp \
- $$ANGLE_DIR/src/common/debug.cpp \
- $$ANGLE_DIR/src/common/RefCountObject.cpp \
- $$ANGLE_DIR/src/common/tls.cpp
-
+static: DEFINES *= LIBGLESV2_EXPORT_H_ ANGLE_EXPORT=
diff --git a/src/angle/src/compiler/preprocessor/preprocessor.pro b/src/angle/src/compiler/preprocessor/preprocessor.pro
index 420cb90b36..8c5b1555dc 100644
--- a/src/angle/src/compiler/preprocessor/preprocessor.pro
+++ b/src/angle/src/compiler/preprocessor/preprocessor.pro
@@ -48,7 +48,7 @@ flex.dependency_type = TYPE_C
flex.variable_out = GENERATED_SOURCES
QMAKE_EXTRA_COMPILERS += flex
-bison.commands = $$addGnuPath(bison) --no-lines --skeleton=yacc.c --output=${QMAKE_FILE_BASE}.cpp ${QMAKE_FILE_NAME}
+bison.commands = $$addGnuPath(win_bison) --no-lines --skeleton=yacc.c --output=${QMAKE_FILE_BASE}.cpp ${QMAKE_FILE_NAME}
bison.output = ${QMAKE_FILE_BASE}.cpp
bison.input = BISON_SOURCES
bison.dependency_type = TYPE_C
diff --git a/src/angle/src/compiler/translator.pro b/src/angle/src/compiler/translator.pro
index 6f0128d6de..e9d16ca5af 100644
--- a/src/angle/src/compiler/translator.pro
+++ b/src/angle/src/compiler/translator.pro
@@ -1,14 +1,11 @@
CONFIG += static
include(../config.pri)
-# Mingw 4.7 chokes on implicit move semantics, so disable C++11 here
-mingw: CONFIG -= c++11
-
INCLUDEPATH += \
$$ANGLE_DIR/src \
$$ANGLE_DIR/include
-DEFINES += _SECURE_SCL=0 _LIB COMPILER_IMPLEMENTATION
+DEFINES += _SECURE_SCL=0 _LIB ANGLE_TRANSLATOR_IMPLEMENTATION ANGLE_TRANSLATOR_STATIC ANGLE_ENABLE_HLSL
FLEX_SOURCES = $$ANGLE_DIR/src/compiler/translator/glslang.l
BISON_SOURCES = $$ANGLE_DIR/src/compiler/translator/glslang.y
@@ -23,26 +20,31 @@ HEADERS += \
$$ANGLE_DIR/src/common/platform.h \
$$ANGLE_DIR/src/common/tls.h \
$$ANGLE_DIR/src/common/utilities.h \
+ $$ANGLE_DIR/src/compiler/translator/blocklayout.h \
+ $$ANGLE_DIR/src/compiler/translator/blocklayoutHLSL.h \
$$ANGLE_DIR/src/compiler/translator/BaseTypes.h \
$$ANGLE_DIR/src/compiler/translator/BuiltInFunctionEmulator.h \
+ $$ANGLE_DIR/src/compiler/translator/BuiltInFunctionEmulatorGLSL.h \
+ $$ANGLE_DIR/src/compiler/translator/BuiltInFunctionEmulatorHLSL.h \
$$ANGLE_DIR/src/compiler/translator/Common.h \
- $$ANGLE_DIR/src/compiler/translator/Compiler.h \
$$ANGLE_DIR/src/compiler/translator/compilerdebug.h \
+ $$ANGLE_DIR/src/compiler/translator/Compiler.h \
$$ANGLE_DIR/src/compiler/translator/ConstantUnion.h \
- $$ANGLE_DIR/src/compiler/translator/depgraph/DependencyGraph.h \
$$ANGLE_DIR/src/compiler/translator/depgraph/DependencyGraphBuilder.h \
+ $$ANGLE_DIR/src/compiler/translator/depgraph/DependencyGraph.h \
$$ANGLE_DIR/src/compiler/translator/depgraph/DependencyGraphOutput.h \
$$ANGLE_DIR/src/compiler/translator/DetectCallDepth.h \
$$ANGLE_DIR/src/compiler/translator/DetectDiscontinuity.h \
$$ANGLE_DIR/src/compiler/translator/Diagnostics.h \
$$ANGLE_DIR/src/compiler/translator/DirectiveHandler.h \
$$ANGLE_DIR/src/compiler/translator/ExtensionBehavior.h \
+ $$ANGLE_DIR/src/compiler/translator/EmulatePrecision.h \
$$ANGLE_DIR/src/compiler/translator/FlagStd140Structs.h \
$$ANGLE_DIR/src/compiler/translator/ForLoopUnroll.h \
$$ANGLE_DIR/src/compiler/translator/HashNames.h \
$$ANGLE_DIR/src/compiler/translator/InfoSink.h \
- $$ANGLE_DIR/src/compiler/translator/Initialize.h \
$$ANGLE_DIR/src/compiler/translator/InitializeDll.h \
+ $$ANGLE_DIR/src/compiler/translator/Initialize.h \
$$ANGLE_DIR/src/compiler/translator/InitializeParseContext.h \
$$ANGLE_DIR/src/compiler/translator/InitializeVariables.h \
$$ANGLE_DIR/src/compiler/translator/intermediate.h \
@@ -51,21 +53,23 @@ HEADERS += \
$$ANGLE_DIR/src/compiler/translator/MMap.h \
$$ANGLE_DIR/src/compiler/translator/NodeSearch.h \
$$ANGLE_DIR/src/compiler/translator/osinclude.h \
+ $$ANGLE_DIR/src/compiler/translator/Operator.h \
$$ANGLE_DIR/src/compiler/translator/OutputESSL.h \
- $$ANGLE_DIR/src/compiler/translator/OutputGLSL.h \
$$ANGLE_DIR/src/compiler/translator/OutputGLSLBase.h \
+ $$ANGLE_DIR/src/compiler/translator/OutputGLSL.h \
$$ANGLE_DIR/src/compiler/translator/OutputHLSL.h \
$$ANGLE_DIR/src/compiler/translator/ParseContext.h \
$$ANGLE_DIR/src/compiler/translator/PoolAlloc.h \
$$ANGLE_DIR/src/compiler/translator/Pragma.h \
$$ANGLE_DIR/src/compiler/translator/QualifierAlive.h \
$$ANGLE_DIR/src/compiler/translator/RegenerateStructNames.h \
- $$ANGLE_DIR/src/compiler/translator/RemoveTree.h \
+ $$ANGLE_DIR/src/compiler/translator/RemoveSwitchFallThrough.h \
$$ANGLE_DIR/src/compiler/translator/RenameFunction.h \
$$ANGLE_DIR/src/compiler/translator/RewriteElseBlocks.h \
$$ANGLE_DIR/src/compiler/translator/ScalarizeVecAndMatConstructorArgs.h \
$$ANGLE_DIR/src/compiler/translator/SearchSymbol.h \
$$ANGLE_DIR/src/compiler/translator/ShHandle.h \
+ $$ANGLE_DIR/src/compiler/translator/SimplifyArrayAssignment.h \
$$ANGLE_DIR/src/compiler/translator/StructureHLSL.h \
$$ANGLE_DIR/src/compiler/translator/SymbolTable.h \
$$ANGLE_DIR/src/compiler/translator/timing/RestrictFragmentShaderTiming.h \
@@ -74,13 +78,14 @@ HEADERS += \
$$ANGLE_DIR/src/compiler/translator/TranslatorGLSL.h \
$$ANGLE_DIR/src/compiler/translator/TranslatorHLSL.h \
$$ANGLE_DIR/src/compiler/translator/Types.h \
- $$ANGLE_DIR/src/compiler/translator/UnfoldShortCircuit.h \
$$ANGLE_DIR/src/compiler/translator/UnfoldShortCircuitAST.h \
+ $$ANGLE_DIR/src/compiler/translator/UnfoldShortCircuit.h \
$$ANGLE_DIR/src/compiler/translator/UniformHLSL.h \
- $$ANGLE_DIR/src/compiler/translator/UtilsHLSL.h \
$$ANGLE_DIR/src/compiler/translator/util.h \
+ $$ANGLE_DIR/src/compiler/translator/UtilsHLSL.h \
$$ANGLE_DIR/src/compiler/translator/ValidateLimitations.h \
$$ANGLE_DIR/src/compiler/translator/ValidateOutputs.h \
+ $$ANGLE_DIR/src/compiler/translator/ValidateSwitch.h \
$$ANGLE_DIR/src/compiler/translator/VariableInfo.h \
$$ANGLE_DIR/src/compiler/translator/VariablePacker.h \
$$ANGLE_DIR/src/compiler/translator/VersionGLSL.h \
@@ -89,7 +94,11 @@ HEADERS += \
SOURCES += \
$$ANGLE_DIR/src/common/tls.cpp \
+ $$ANGLE_DIR/src/compiler/translator/blocklayout.cpp \
+ $$ANGLE_DIR/src/compiler/translator/blocklayoutHLSL.cpp \
$$ANGLE_DIR/src/compiler/translator/BuiltInFunctionEmulator.cpp \
+ $$ANGLE_DIR/src/compiler/translator/BuiltInFunctionEmulatorGLSL.cpp \
+ $$ANGLE_DIR/src/compiler/translator/BuiltInFunctionEmulatorHLSL.cpp \
$$ANGLE_DIR/src/compiler/translator/CodeGen.cpp \
$$ANGLE_DIR/src/compiler/translator/Compiler.cpp \
$$ANGLE_DIR/src/compiler/translator/compilerdebug.cpp \
@@ -101,6 +110,7 @@ SOURCES += \
$$ANGLE_DIR/src/compiler/translator/DetectDiscontinuity.cpp \
$$ANGLE_DIR/src/compiler/translator/Diagnostics.cpp \
$$ANGLE_DIR/src/compiler/translator/DirectiveHandler.cpp \
+ $$ANGLE_DIR/src/compiler/translator/EmulatePrecision.cpp \
$$ANGLE_DIR/src/compiler/translator/FlagStd140Structs.cpp \
$$ANGLE_DIR/src/compiler/translator/ForLoopUnroll.cpp \
$$ANGLE_DIR/src/compiler/translator/InfoSink.cpp \
@@ -113,6 +123,7 @@ SOURCES += \
$$ANGLE_DIR/src/compiler/translator/intermOut.cpp \
$$ANGLE_DIR/src/compiler/translator/IntermTraverse.cpp \
$$ANGLE_DIR/src/compiler/translator/LoopInfo.cpp \
+ $$ANGLE_DIR/src/compiler/translator/Operator.cpp \
$$ANGLE_DIR/src/compiler/translator/OutputESSL.cpp \
$$ANGLE_DIR/src/compiler/translator/OutputGLSL.cpp \
$$ANGLE_DIR/src/compiler/translator/OutputGLSLBase.cpp \
@@ -122,12 +133,13 @@ SOURCES += \
$$ANGLE_DIR/src/compiler/translator/PoolAlloc.cpp \
$$ANGLE_DIR/src/compiler/translator/QualifierAlive.cpp \
$$ANGLE_DIR/src/compiler/translator/RegenerateStructNames.cpp \
- $$ANGLE_DIR/src/compiler/translator/RemoveTree.cpp \
+ $$ANGLE_DIR/src/compiler/translator/RemoveSwitchFallThrough.cpp \
$$ANGLE_DIR/src/compiler/translator/RewriteElseBlocks.cpp \
$$ANGLE_DIR/src/compiler/translator/ScalarizeVecAndMatConstructorArgs.cpp \
$$ANGLE_DIR/src/compiler/translator/SearchSymbol.cpp \
$$ANGLE_DIR/src/compiler/translator/ShaderLang.cpp \
$$ANGLE_DIR/src/compiler/translator/ShaderVars.cpp \
+ $$ANGLE_DIR/src/compiler/translator/SimplifyArrayAssignment.cpp \
$$ANGLE_DIR/src/compiler/translator/StructureHLSL.cpp \
$$ANGLE_DIR/src/compiler/translator/SymbolTable.cpp \
$$ANGLE_DIR/src/compiler/translator/timing/RestrictFragmentShaderTiming.cpp \
@@ -143,6 +155,7 @@ SOURCES += \
$$ANGLE_DIR/src/compiler/translator/util.cpp \
$$ANGLE_DIR/src/compiler/translator/ValidateLimitations.cpp \
$$ANGLE_DIR/src/compiler/translator/ValidateOutputs.cpp \
+ $$ANGLE_DIR/src/compiler/translator/ValidateSwitch.cpp \
$$ANGLE_DIR/src/compiler/translator/VariableInfo.cpp \
$$ANGLE_DIR/src/compiler/translator/VariablePacker.cpp \
$$ANGLE_DIR/src/compiler/translator/VersionGLSL.cpp \
@@ -157,7 +170,7 @@ flex.dependency_type = TYPE_C
flex.variable_out = GENERATED_SOURCES
QMAKE_EXTRA_COMPILERS += flex
-bison.commands = $$addGnuPath(bison) --no-lines --skeleton=yacc.c --defines=${QMAKE_FILE_BASE}_tab.h \
+bison.commands = $$addGnuPath(win_bison) --no-lines --skeleton=yacc.c --defines=${QMAKE_FILE_BASE}_tab.h \
--output=${QMAKE_FILE_BASE}_tab.cpp ${QMAKE_FILE_NAME}
bison.output = ${QMAKE_FILE_BASE}_tab.h
bison.input = BISON_SOURCES
diff --git a/src/angle/src/config.pri b/src/angle/src/config.pri
index 9a7bc8a68c..0d75245ec5 100644
--- a/src/angle/src/config.pri
+++ b/src/angle/src/config.pri
@@ -37,8 +37,6 @@ DEFINES += _WINDOWS \
NOMINMAX \
WIN32_LEAN_AND_MEAN=1
-!winrt: DEFINES += ANGLE_ENABLE_D3D9 ANGLE_SKIP_DXGI_1_2_CHECK
-
CONFIG += angle_d3d11 # Remove to disable D3D11 renderer
equals(QMAKE_TARGET_OS, xp): CONFIG -= angle_d3d11
@@ -70,11 +68,12 @@ msvc {
# 4245: 'conversion' : conversion from 'type1' to 'type2', signed/unsigned mismatch
# 4267: coversion from 'size_t' to 'int', possible loss of data
# 4275: non - DLL-interface classkey 'identifier' used as base for DLL-interface classkey 'identifier'
+ # 4480: nonstandard extension used: specifying underlying type for enum
# 4512: 'class' : assignment operator could not be generated
# 4702: unreachable code
# 4996: Function call with parameters that may be unsafe
QMAKE_CFLAGS_WARN_ON -= -W3
- QMAKE_CFLAGS_WARN_ON += -W4 -wd"4100" -wd"4127" -wd"4189" -wd"4239" -wd"4244" -wd"4245" -wd"4267" -wd"4275" -wd"4512" -wd"4702" -wd"4996"
+ QMAKE_CFLAGS_WARN_ON += -W4 -wd"4100" -wd"4127" -wd"4189" -wd"4239" -wd"4244" -wd"4245" -wd"4267" -wd"4275" -wd"4512" -wd"4702" -wd"4996" -wd"4480"
# Optimizations
# /Oy: Omits frame pointer (x86 only).
# /Gy: Enables function-level linking.
diff --git a/src/angle/src/libEGL/libEGL.pro b/src/angle/src/libEGL/libEGL.pro
index a16249309f..94fcebda6b 100644
--- a/src/angle/src/libEGL/libEGL.pro
+++ b/src/angle/src/libEGL/libEGL.pro
@@ -5,40 +5,13 @@ winrt: LIBS_PRIVATE += -ld3d11
LIBS_PRIVATE += -ldxguid -L$$QT_BUILD_TREE/lib -l$$qtLibraryTarget(libGLESv2)
+DEFINES += GL_APICALL= GL_GLEXT_PROTOTYPES= EGLAPI= LIBEGL_IMPLEMENTATION
+
HEADERS += \
- $$ANGLE_DIR/src/common/NativeWindow.h \
- $$ANGLE_DIR/src/libEGL/AttributeMap.h \
- $$ANGLE_DIR/src/libEGL/Config.h \
- $$ANGLE_DIR/src/libEGL/Display.h \
- $$ANGLE_DIR/src/libEGL/Error.h \
- $$ANGLE_DIR/src/libEGL/main.h \
- $$ANGLE_DIR/src/libEGL/resource.h \
- $$ANGLE_DIR/src/libEGL/ShaderCache.h \
- $$ANGLE_DIR/src/libEGL/Surface.h
+ $$ANGLE_DIR/src/libEGL/resource.h
SOURCES += \
- $$ANGLE_DIR/src/libEGL/AttributeMap.cpp \
- $$ANGLE_DIR/src/libEGL/Config.cpp \
- $$ANGLE_DIR/src/libEGL/Display.cpp \
- $$ANGLE_DIR/src/libEGL/Error.cpp \
- $$ANGLE_DIR/src/libEGL/libEGL.cpp \
- $$ANGLE_DIR/src/libEGL/main.cpp \
- $$ANGLE_DIR/src/libEGL/Surface.cpp
-
-!winrt {
- SOURCES += \
- $$ANGLE_DIR/src/common/win32/NativeWindow.cpp
-} else {
- HEADERS += \
- $$ANGLE_DIR/src/common/winrt/CoreWindowNativeWindow.h \
- $$ANGLE_DIR/src/common/winrt/InspectableNativeWindow.h \
- $$ANGLE_DIR/src/common/winrt/SwapChainPanelNativeWindow.h
-
- SOURCES += \
- $$ANGLE_DIR/src/common/winrt/CoreWindowNativeWindow.cpp \
- $$ANGLE_DIR/src/common/winrt/InspectableNativeWindow.cpp \
- $$ANGLE_DIR/src/common/winrt/SwapChainPanelNativeWindow.cpp
-}
+ $$ANGLE_DIR/src/libEGL/libEGL.cpp
!static {
DEF_FILE = $$ANGLE_DIR/src/libEGL/$${TARGET}.def
diff --git a/src/angle/src/libGLESv2/libGLESv2.pro b/src/angle/src/libGLESv2/libGLESv2.pro
index 705768d17d..a783318bb1 100644
--- a/src/angle/src/libGLESv2/libGLESv2.pro
+++ b/src/angle/src/libGLESv2/libGLESv2.pro
@@ -1,7 +1,7 @@
CONFIG += simd installed
include(../common/common.pri)
-INCLUDEPATH += $$OUT_PWD/.. $$ANGLE_DIR/src/libGLESv2
+INCLUDEPATH += $$OUT_PWD/.. $$ANGLE_DIR/src/libANGLE
# Remember to adapt tools/configure/configureapp.cpp if the Direct X version changes.
!winrt: \
@@ -20,237 +20,310 @@ for(libname, STATICLIBS) {
PRE_TARGETDEPS += $$staticlib
}
+DEFINES += LIBANGLE_IMPLEMENTATION LIBGLESV2_IMPLEMENTATION GL_APICALL= GL_GLEXT_PROTOTYPES= EGLAPI= ANGLE_ENABLE_D3D11
+!winrt: DEFINES += ANGLE_ENABLE_D3D9 ANGLE_SKIP_DXGI_1_2_CHECK
+
HEADERS += \
$$ANGLE_DIR/src/common/blocklayout.h \
+ $$ANGLE_DIR/src/common/NativeWindow.h \
$$ANGLE_DIR/src/common/shadervars.h \
$$ANGLE_DIR/src/common/utilities.h \
- $$ANGLE_DIR/src/common/NativeWindow.h \
- $$ANGLE_DIR/src/libGLESv2/angletypes.h \
- $$ANGLE_DIR/src/libGLESv2/BinaryStream.h \
- $$ANGLE_DIR/src/libGLESv2/Buffer.h \
- $$ANGLE_DIR/src/libGLESv2/Caps.h \
- $$ANGLE_DIR/src/libGLESv2/Context.h \
- $$ANGLE_DIR/src/libGLESv2/Data.h \
- $$ANGLE_DIR/src/libGLESv2/Error.h \
- $$ANGLE_DIR/src/libGLESv2/Fence.h \
- $$ANGLE_DIR/src/libGLESv2/formatutils.h \
- $$ANGLE_DIR/src/libGLESv2/Framebuffer.h \
- $$ANGLE_DIR/src/libGLESv2/FramebufferAttachment.h \
- $$ANGLE_DIR/src/libGLESv2/HandleAllocator.h \
- $$ANGLE_DIR/src/libGLESv2/ImageIndex.h \
- $$ANGLE_DIR/src/libGLESv2/main.h \
- $$ANGLE_DIR/src/libGLESv2/Program.h \
- $$ANGLE_DIR/src/libGLESv2/ProgramBinary.h \
- $$ANGLE_DIR/src/libGLESv2/Query.h \
- $$ANGLE_DIR/src/libGLESv2/queryconversions.h \
- $$ANGLE_DIR/src/libGLESv2/Renderbuffer.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/BufferImpl.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/copyimage.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/copyvertex.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/BufferD3D.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/DynamicHLSL.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/HLSLCompiler.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/ImageD3D.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/IndexBuffer.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/IndexDataManager.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/MemoryBuffer.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/ProgramD3D.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/RenderbufferD3D.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/RendererD3D.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/ShaderD3D.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/TextureD3D.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/TextureStorage.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/TransformFeedbackD3D.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/VertexArrayImpl.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/VertexBuffer.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/vertexconversion.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/VertexDataManager.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/FenceImpl.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/generatemip.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/Image.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/imageformats.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/IndexCacheRange.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/loadimage.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/ProgramImpl.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/QueryImpl.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/RenderbufferImpl.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/Renderer.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/RenderTarget.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/ShaderExecutable.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/ShaderImpl.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/SwapChain.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/TextureImpl.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/TextureFeedbackImpl.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/VertexDeclarationCache.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/Workarounds.h \
+ $$ANGLE_DIR/src/common/MemoryBuffer.h \
+ $$ANGLE_DIR/src/common/angleutils.h \
+ $$ANGLE_DIR/src/common/debug.h \
+ $$ANGLE_DIR/src/common/event_tracer.h \
+ $$ANGLE_DIR/src/libANGLE/angletypes.h \
+ $$ANGLE_DIR/src/libANGLE/AttributeMap.h \
+ $$ANGLE_DIR/src/libANGLE/BinaryStream.h \
+ $$ANGLE_DIR/src/libANGLE/Buffer.h \
+ $$ANGLE_DIR/src/libANGLE/Caps.h \
+ $$ANGLE_DIR/src/libANGLE/Compiler.h \
+ $$ANGLE_DIR/src/libANGLE/Config.h \
+ $$ANGLE_DIR/src/libANGLE/Constants.h \
+ $$ANGLE_DIR/src/libANGLE/Context.h \
+ $$ANGLE_DIR/src/libANGLE/Data.h \
+ $$ANGLE_DIR/src/libANGLE/Display.h \
+ $$ANGLE_DIR/src/libANGLE/Error.h \
+ $$ANGLE_DIR/src/libANGLE/features.h \
+ $$ANGLE_DIR/src/libANGLE/Fence.h \
+ $$ANGLE_DIR/src/libANGLE/formatutils.h \
+ $$ANGLE_DIR/src/libANGLE/Framebuffer.h \
+ $$ANGLE_DIR/src/libANGLE/FramebufferAttachment.h \
+ $$ANGLE_DIR/src/libANGLE/HandleAllocator.h \
+ $$ANGLE_DIR/src/libANGLE/ImageIndex.h \
+ $$ANGLE_DIR/src/libANGLE/Program.h \
+ $$ANGLE_DIR/src/libANGLE/Query.h \
+ $$ANGLE_DIR/src/libANGLE/queryconversions.h \
+ $$ANGLE_DIR/src/libANGLE/RefCountObject.h \
+ $$ANGLE_DIR/src/libANGLE/Renderbuffer.h \
+ $$ANGLE_DIR/src/libANGLE/ResourceManager.h \
+ $$ANGLE_DIR/src/libANGLE/Sampler.h \
+ $$ANGLE_DIR/src/libANGLE/Shader.h \
+ $$ANGLE_DIR/src/libANGLE/State.h \
+ $$ANGLE_DIR/src/libANGLE/Surface.h \
+ $$ANGLE_DIR/src/libANGLE/Texture.h \
+ $$ANGLE_DIR/src/libANGLE/TransformFeedback.h \
+ $$ANGLE_DIR/src/libANGLE/Uniform.h \
+ $$ANGLE_DIR/src/libANGLE/validationEGL.h \
+ $$ANGLE_DIR/src/libANGLE/validationES.h \
+ $$ANGLE_DIR/src/libANGLE/validationES2.h \
+ $$ANGLE_DIR/src/libANGLE/validationES3.h \
+ $$ANGLE_DIR/src/libANGLE/VertexArray.h \
+ $$ANGLE_DIR/src/libANGLE/VertexAttribute.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/BufferD3D.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/CompilerD3D.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/copyimage.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/DisplayD3D.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/DynamicHLSL.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/formatutilsD3D.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/FramebufferD3D.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/generatemip.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/HLSLCompiler.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/ImageD3D.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/imageformats.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/IndexBuffer.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/IndexDataManager.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/loadimage.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/ProgramD3D.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/RenderbufferD3D.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/RendererD3D.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/RenderTargetD3D.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/ShaderD3D.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/ShaderExecutableD3D.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/SurfaceD3D.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/SwapChainD3D.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/TextureD3D.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/TextureStorage.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/TransformFeedbackD3D.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/VertexBuffer.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/VertexDataManager.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/BufferImpl.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/CompilerImpl.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/DisplayImpl.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/FenceNVImpl.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/FenceSyncImpl.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/FramebufferImpl.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/Image.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/ImplFactory.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/IndexRangeCache.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/ProgramImpl.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/QueryImpl.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/RenderbufferImpl.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/Renderer.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/ShaderImpl.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/SurfaceImpl.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/TextureImpl.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/TransformFeedbackImpl.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/VertexArrayImpl.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/Workarounds.h \
+ $$ANGLE_DIR/src/libANGLE/resource.h \
+ $$ANGLE_DIR/src/libANGLE/ResourceManager.h \
+ $$ANGLE_DIR/src/libANGLE/Sampler.h \
+ $$ANGLE_DIR/src/libANGLE/Shader.h \
+ $$ANGLE_DIR/src/libANGLE/State.h \
+ $$ANGLE_DIR/src/libANGLE/Texture.h \
+ $$ANGLE_DIR/src/libANGLE/TransformFeedback.h \
+ $$ANGLE_DIR/src/libANGLE/Uniform.h \
+ $$ANGLE_DIR/src/libANGLE/validationES2.h \
+ $$ANGLE_DIR/src/libANGLE/validationES3.h \
+ $$ANGLE_DIR/src/libANGLE/validationES.h \
+ $$ANGLE_DIR/src/libANGLE/VertexArray.h \
+ $$ANGLE_DIR/src/libANGLE/VertexAttribute.h \
+ $$ANGLE_DIR/src/libANGLE/vertexconversion.h \
+ $$ANGLE_DIR/src/libGLESv2/entry_points_egl.h \
+ $$ANGLE_DIR/src/libGLESv2/entry_points_egl_ext.h \
+ $$ANGLE_DIR/src/libGLESv2/entry_points_gles_2_0.h \
+ $$ANGLE_DIR/src/libGLESv2/entry_points_gles_2_0_ext.h \
+ $$ANGLE_DIR/src/libGLESv2/entry_points_gles_3_0.h \
+ $$ANGLE_DIR/src/libGLESv2/entry_points_gles_3_0_ext.h \
+ $$ANGLE_DIR/src/libGLESv2/global_state.h \
$$ANGLE_DIR/src/libGLESv2/resource.h \
- $$ANGLE_DIR/src/libGLESv2/ResourceManager.h \
- $$ANGLE_DIR/src/libGLESv2/Sampler.h \
- $$ANGLE_DIR/src/libGLESv2/Shader.h \
- $$ANGLE_DIR/src/libGLESv2/State.h \
- $$ANGLE_DIR/src/libGLESv2/Texture.h \
- $$ANGLE_DIR/src/libGLESv2/TransformFeedback.h \
- $$ANGLE_DIR/src/libGLESv2/Uniform.h \
- $$ANGLE_DIR/src/libGLESv2/validationES.h \
- $$ANGLE_DIR/src/libGLESv2/validationES2.h \
- $$ANGLE_DIR/src/libGLESv2/validationES3.h \
- $$ANGLE_DIR/src/libGLESv2/VertexArray.h \
- $$ANGLE_DIR/src/libGLESv2/VertexAttribute.h \
- $$ANGLE_DIR/src/libGLESv2/vertexconversion.h \
- $$ANGLE_DIR/src/third_party/murmurhash/MurmurHash3.h \
+ $$ANGLE_DIR/src/third_party/murmurhash/MurmurHash3.h
SOURCES += \
- $$ANGLE_DIR/src/common/blocklayout.cpp \
$$ANGLE_DIR/src/common/mathutil.cpp \
$$ANGLE_DIR/src/common/utilities.cpp \
+ $$ANGLE_DIR/src/common/MemoryBuffer.cpp \
+ $$ANGLE_DIR/src/common/angleutils.cpp \
+ $$ANGLE_DIR/src/common/debug.cpp \
+ $$ANGLE_DIR/src/common/event_tracer.cpp \
$$ANGLE_DIR/src/third_party/murmurhash/MurmurHash3.cpp \
- $$ANGLE_DIR/src/libGLESv2/angletypes.cpp \
- $$ANGLE_DIR/src/libGLESv2/Buffer.cpp \
- $$ANGLE_DIR/src/libGLESv2/Caps.cpp \
- $$ANGLE_DIR/src/libGLESv2/Context.cpp \
- $$ANGLE_DIR/src/libGLESv2/Data.cpp \
- $$ANGLE_DIR/src/libGLESv2/Error.cpp \
- $$ANGLE_DIR/src/libGLESv2/Fence.cpp \
- $$ANGLE_DIR/src/libGLESv2/Float16ToFloat32.cpp \
- $$ANGLE_DIR/src/libGLESv2/Framebuffer.cpp \
- $$ANGLE_DIR/src/libGLESv2/FramebufferAttachment.cpp \
- $$ANGLE_DIR/src/libGLESv2/formatutils.cpp \
- $$ANGLE_DIR/src/libGLESv2/HandleAllocator.cpp \
- $$ANGLE_DIR/src/libGLESv2/ImageIndex.cpp \
- $$ANGLE_DIR/src/libGLESv2/libGLESv2.cpp \
- $$ANGLE_DIR/src/libGLESv2/main.cpp \
- $$ANGLE_DIR/src/libGLESv2/Program.cpp \
- $$ANGLE_DIR/src/libGLESv2/ProgramBinary.cpp \
- $$ANGLE_DIR/src/libGLESv2/Query.cpp \
- $$ANGLE_DIR/src/libGLESv2/queryconversions.cpp \
- $$ANGLE_DIR/src/libGLESv2/Renderbuffer.cpp \
- $$ANGLE_DIR/src/libGLESv2/ResourceManager.cpp \
- $$ANGLE_DIR/src/libGLESv2/Sampler.cpp \
- $$ANGLE_DIR/src/libGLESv2/Shader.cpp \
- $$ANGLE_DIR/src/libGLESv2/State.cpp \
- $$ANGLE_DIR/src/libGLESv2/Texture.cpp \
- $$ANGLE_DIR/src/libGLESv2/TransformFeedback.cpp \
- $$ANGLE_DIR/src/libGLESv2/Uniform.cpp \
- $$ANGLE_DIR/src/libGLESv2/validationES.cpp \
- $$ANGLE_DIR/src/libGLESv2/validationES2.cpp \
- $$ANGLE_DIR/src/libGLESv2/validationES3.cpp \
- $$ANGLE_DIR/src/libGLESv2/VertexArray.cpp \
- $$ANGLE_DIR/src/libGLESv2/VertexAttribute.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/copyimage.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/loadimage.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/Image.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/IndexRangeCache.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/ProgramImpl.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/RenderbufferImpl.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/Renderer.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/RenderTarget.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/BufferD3D.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/DynamicHLSL.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/HLSLCompiler.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/ImageD3D.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/IndexBuffer.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/IndexDataManager.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/MemoryBuffer.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/ProgramD3D.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/RenderbufferD3D.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/RendererD3D.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/ShaderD3D.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/TextureD3D.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/TextureStorage.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/TransformFeedbackD3D.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/VertexBuffer.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/VertexDataManager.cpp
+ $$ANGLE_DIR/src/libANGLE/angletypes.cpp \
+ $$ANGLE_DIR/src/libANGLE/AttributeMap.cpp \
+ $$ANGLE_DIR/src/libANGLE/Buffer.cpp \
+ $$ANGLE_DIR/src/libANGLE/Caps.cpp \
+ $$ANGLE_DIR/src/libANGLE/Compiler.cpp \
+ $$ANGLE_DIR/src/libANGLE/Config.cpp \
+ $$ANGLE_DIR/src/libANGLE/Context.cpp \
+ $$ANGLE_DIR/src/libANGLE/Data.cpp \
+ $$ANGLE_DIR/src/libANGLE/Display.cpp \
+ $$ANGLE_DIR/src/libANGLE/Error.cpp \
+ $$ANGLE_DIR/src/libANGLE/Fence.cpp \
+ $$ANGLE_DIR/src/libANGLE/Float16ToFloat32.cpp \
+ $$ANGLE_DIR/src/libANGLE/formatutils.cpp \
+ $$ANGLE_DIR/src/libANGLE/Framebuffer.cpp \
+ $$ANGLE_DIR/src/libANGLE/FramebufferAttachment.cpp \
+ $$ANGLE_DIR/src/libANGLE/HandleAllocator.cpp \
+ $$ANGLE_DIR/src/libANGLE/ImageIndex.cpp \
+ $$ANGLE_DIR/src/libANGLE/Platform.cpp \
+ $$ANGLE_DIR/src/libANGLE/Program.cpp \
+ $$ANGLE_DIR/src/libANGLE/Query.cpp \
+ $$ANGLE_DIR/src/libANGLE/queryconversions.cpp \
+ $$ANGLE_DIR/src/libANGLE/RefCountObject.cpp \
+ $$ANGLE_DIR/src/libANGLE/Renderbuffer.cpp \
+ $$ANGLE_DIR/src/libANGLE/ResourceManager.cpp \
+ $$ANGLE_DIR/src/libANGLE/Sampler.cpp \
+ $$ANGLE_DIR/src/libANGLE/Shader.cpp \
+ $$ANGLE_DIR/src/libANGLE/State.cpp \
+ $$ANGLE_DIR/src/libANGLE/Surface.cpp \
+ $$ANGLE_DIR/src/libANGLE/Texture.cpp \
+ $$ANGLE_DIR/src/libANGLE/TransformFeedback.cpp \
+ $$ANGLE_DIR/src/libANGLE/Uniform.cpp \
+ $$ANGLE_DIR/src/libANGLE/validationEGL.cpp \
+ $$ANGLE_DIR/src/libANGLE/validationES.cpp \
+ $$ANGLE_DIR/src/libANGLE/validationES2.cpp \
+ $$ANGLE_DIR/src/libANGLE/validationES3.cpp \
+ $$ANGLE_DIR/src/libANGLE/VertexArray.cpp \
+ $$ANGLE_DIR/src/libANGLE/VertexAttribute.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/DisplayImpl.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/IndexRangeCache.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/ProgramImpl.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/RenderbufferImpl.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/Renderer.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/SurfaceImpl.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/BufferD3D.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/CompilerD3D.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/copyimage.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/DisplayD3D.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/DynamicHLSL.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/formatutilsD3D.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/FramebufferD3D.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/HLSLCompiler.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/ImageD3D.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/IndexBuffer.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/IndexDataManager.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/loadimage.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/loadimageSSE2.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/ProgramD3D.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/RenderbufferD3D.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/RendererD3D.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/RenderTargetD3D.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/ShaderD3D.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/ShaderExecutableD3D.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/SurfaceD3D.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/TextureD3D.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/TextureStorage.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/TransformFeedbackD3D.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/VertexBuffer.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/VertexDataManager.cpp \
+ $$ANGLE_DIR/src/libGLESv2/entry_points_egl.cpp \
+ $$ANGLE_DIR/src/libGLESv2/entry_points_egl_ext.cpp \
+ $$ANGLE_DIR/src/libGLESv2/entry_points_gles_2_0.cpp \
+ $$ANGLE_DIR/src/libGLESv2/entry_points_gles_2_0_ext.cpp \
+ $$ANGLE_DIR/src/libGLESv2/entry_points_gles_3_0.cpp \
+ $$ANGLE_DIR/src/libGLESv2/entry_points_gles_3_0_ext.cpp \
+ $$ANGLE_DIR/src/libGLESv2/global_state.cpp \
+ $$ANGLE_DIR/src/libGLESv2/libGLESv2.cpp
+
angle_d3d11 {
HEADERS += \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/Blit11.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/Buffer11.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/Clear11.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/Fence11.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/formatutils11.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/Image11.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/IndexBuffer11.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/InputLayoutCache.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/PixelTransfer11.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/Query11.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/Renderer11.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/renderer11_utils.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/RenderTarget11.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/RenderStateCache.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/ShaderExecutable11.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/SwapChain11.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/TextureStorage11.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/VertexBuffer11.h
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Blit11.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Buffer11.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Clear11.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Fence11.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Framebuffer11.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/formatutils11.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Image11.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/IndexBuffer11.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/InputLayoutCache.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/PixelTransfer11.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Query11.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Renderer11.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/RenderTarget11.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/RenderStateCache.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/ShaderExecutable11.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/SwapChain11.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/TextureStorage11.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Trim11.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/VertexBuffer11.h
SOURCES += \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/Blit11.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/Buffer11.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/Clear11.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/Fence11.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/formatutils11.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/Image11.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/IndexBuffer11.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/InputLayoutCache.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/PixelTransfer11.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/Query11.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/renderer11_utils.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/RenderTarget11.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/RenderStateCache.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/ShaderExecutable11.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/SwapChain11.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/TextureStorage11.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/VertexBuffer11.cpp
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Blit11.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Clear11.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Fence11.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Framebuffer11.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/formatutils11.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Image11.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/IndexBuffer11.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/InputLayoutCache.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/PixelTransfer11.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Query11.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/RenderTarget11.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/RenderStateCache.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/ShaderExecutable11.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/SwapChain11.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/TextureStorage11.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/Trim11.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/VertexBuffer11.cpp
}
-SSE2_SOURCES += $$ANGLE_DIR/src/libGLESv2/renderer/loadimageSSE2.cpp
-
!winrt {
HEADERS += \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/Blit9.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/Buffer9.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/Fence9.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/formatutils9.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/Image9.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/IndexBuffer9.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/Query9.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/Renderer9.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/renderer9_utils.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/RenderTarget9.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/ShaderExecutable9.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/SwapChain9.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/TextureStorage9.h \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/VertexBuffer9.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/Blit9.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/Buffer9.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/DebugAnnotator9.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/Fence9.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/Framebuffer9.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/formatutils9.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/Image9.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/IndexBuffer9.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/Query9.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/Renderer9.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/renderer9_utils.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/RenderTarget9.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/ShaderExecutable9.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/SwapChain9.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/TextureStorage9.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/VertexBuffer9.h \
$$ANGLE_DIR/src/third_party/systeminfo/SystemInfo.h
SOURCES += \
- $$ANGLE_DIR/src/common/win32/NativeWindow.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/Blit9.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/Buffer9.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/Fence9.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/formatutils9.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/Image9.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/IndexBuffer9.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/Query9.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/renderer9_utils.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/RenderTarget9.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/ShaderExecutable9.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/SwapChain9.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/TextureStorage9.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/VertexBuffer9.cpp \
- $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/VertexDeclarationCache.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/Blit9.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/Buffer9.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/DebugAnnotator9.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/Fence9.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/Framebuffer9.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/formatutils9.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/Image9.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/IndexBuffer9.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/Query9.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/renderer9_utils.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/RenderTarget9.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/ShaderExecutable9.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/SwapChain9.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/TextureStorage9.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/VertexBuffer9.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/VertexDeclarationCache.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow.cpp \
$$ANGLE_DIR/src/third_party/systeminfo/SystemInfo.cpp
} else {
HEADERS += \
- $$ANGLE_DIR/src/common/winrt/CoreWindowNativeWindow.h \
- $$ANGLE_DIR/src/common/winrt/InspectableNativeWindow.h \
- $$ANGLE_DIR/src/common/winrt/SwapChainPanelNativeWindow.h
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.h \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.h
SOURCES += \
- $$ANGLE_DIR/src/common/winrt/CoreWindowNativeWindow.cpp \
- $$ANGLE_DIR/src/common/winrt/InspectableNativeWindow.cpp \
- $$ANGLE_DIR/src/common/winrt/SwapChainPanelNativeWindow.cpp
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.cpp \
+ $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.cpp
}
!static {
@@ -259,87 +332,234 @@ SSE2_SOURCES += $$ANGLE_DIR/src/libGLESv2/renderer/loadimageSSE2.cpp
}
float_converter.target = float_converter
-float_converter.commands = python $$ANGLE_DIR/src/libGLESv2/Float16ToFloat32.py \
- > $$ANGLE_DIR/src/libGLESv2/Float16ToFloat32.cpp
+float_converter.commands = python $$ANGLE_DIR/src/libANGLE/Float16ToFloat32.py \
+ > $$ANGLE_DIR/src/libANGLE/Float16ToFloat32.cpp
QMAKE_EXTRA_TARGETS += float_converter
-# Generate the shader header files.
-SHADER9_INPUT_DIR = $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d9/shaders
-SHADER11_INPUT_DIR = $$ANGLE_DIR/src/libGLESv2/renderer/d3d/d3d11/shaders
+# HLSL shaders
+BLITVS = $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/shaders/Blit.vs
+standardvs.input = BLITVS
+standardvs.type = vs_2_0
+standardvs.output = standardvs.h
+flipyvs.input = BLITVS
+flipyvs.type = vs_2_0
+flipyvs.output = flipyvs.h
+
+BLITPS = $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d9/shaders/Blit.ps
+passthroughps.input = BLITPS
+passthroughps.type = ps_2_0
+passthroughps.output = passthroughps.h
+luminanceps.input = BLITPS
+luminanceps.type = ps_2_0
+luminanceps.output = luminanceps.h
+componentmaskps.input = BLITPS
+componentmaskps.type = ps_2_0
+componentmaskps.output = componentmaskps.h
-BLITPS_INPUT = $$SHADER9_INPUT_DIR/Blit.ps
-BLITPS.shaders = PS_passthrough PS_luminance PS_componentmask
-BLITPS.profile = 2_0
+PASSTHROUGH2D = $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/shaders/Passthrough2D11.hlsl
+VS_Passthrough2D.input = PASSTHROUGH2D
+VS_Passthrough2D.type = vs_4_0_level_9_3
+VS_Passthrough2D.output = passthrough2d11vs.h
+PS_PassthroughRGBA2D.input = PASSTHROUGH2D
+PS_PassthroughRGBA2D.type = ps_4_0_level_9_3
+PS_PassthroughRGBA2D.output = passthroughrgba2d11ps.h
+PS_PassthroughRGB2D.input = PASSTHROUGH2D
+PS_PassthroughRGB2D.type = ps_4_0_level_9_3
+PS_PassthroughRGB2D.output = passthroughrgb2d11ps.h
+PS_PassthroughRG2D.input = PASSTHROUGH2D
+PS_PassthroughRG2D.type = ps_4_0_level_9_3
+PS_PassthroughRG2D.output = passthroughrg2d11ps.h
+PS_PassthroughR2D.input = PASSTHROUGH2D
+PS_PassthroughR2D.type = ps_4_0_level_9_3
+PS_PassthroughR2D.output = passthroughr2d11ps.h
+PS_PassthroughLum2D.input = PASSTHROUGH2D
+PS_PassthroughLum2D.type = ps_4_0_level_9_3
+PS_PassthroughLum2D.output = passthroughlum2d11ps.h
+PS_PassthroughLumAlpha2D.input = PASSTHROUGH2D
+PS_PassthroughLumAlpha2D.type = ps_4_0_level_9_3
+PS_PassthroughLumAlpha2D.output = passthroughlumalpha2d11ps.h
+PS_PassthroughDepth2D.input = PASSTHROUGH2D
+PS_PassthroughDepth2D.type = ps_4_0
+PS_PassthroughDepth2D.output = passthroughdepth2d11ps.h
+PS_PassthroughRGBA2DUI.input = PASSTHROUGH2D
+PS_PassthroughRGBA2DUI.type = ps_4_0
+PS_PassthroughRGBA2DUI.output = passthroughrgba2dui11ps.h
+PS_PassthroughRGBA2DI.input = PASSTHROUGH2D
+PS_PassthroughRGBA2DI.type = ps_4_0
+PS_PassthroughRGBA2DI.output = passthroughrgba2di11ps.h
+PS_PassthroughRGB2DUI.input = PASSTHROUGH2D
+PS_PassthroughRGB2DUI.type = ps_4_0
+PS_PassthroughRGB2DUI.output = passthroughrgb2dui11ps.h
+PS_PassthroughRGB2DI.input = PASSTHROUGH2D
+PS_PassthroughRGB2DI.type = ps_4_0
+PS_PassthroughRGB2DI.output = passthroughrgb2di11ps.h
+PS_PassthroughRG2DUI.input = PASSTHROUGH2D
+PS_PassthroughRG2DUI.type = ps_4_0
+PS_PassthroughRG2DUI.output = passthroughrg2dui11ps.h
+PS_PassthroughRG2DI.input = PASSTHROUGH2D
+PS_PassthroughRG2DI.type = ps_4_0
+PS_PassthroughRG2DI.output = passthroughrg2di11ps.h
+PS_PassthroughR2DUI.input = PASSTHROUGH2D
+PS_PassthroughR2DUI.type = ps_4_0
+PS_PassthroughR2DUI.output = passthroughr2dui11ps.h
+PS_PassthroughR2DI.input = PASSTHROUGH2D
+PS_PassthroughR2DI.type = ps_4_0
+PS_PassthroughR2DI.output = passthroughr2di11ps.h
-BLITVS_INPUT = $$SHADER9_INPUT_DIR/Blit.vs
-BLITVS.shaders = VS_standard VS_flipy
-BLITVS.profile = 2_0
+CLEAR = $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/shaders/Clear11.hlsl
+VS_ClearFloat.input = CLEAR
+VS_ClearFloat.type = vs_4_0_level_9_3
+VS_ClearFloat.output = clearfloat11vs.h
+PS_ClearFloat_FL9.input = CLEAR
+PS_ClearFloat_FL9.type = ps_4_0_level_9_3
+PS_ClearFloat_FL9.output = clearfloat11_fl9ps.h
+PS_ClearFloat.input = CLEAR
+PS_ClearFloat.type = ps_4_0
+PS_ClearFloat.output = clearfloat11ps.h
+VS_ClearUint.input = CLEAR
+VS_ClearUint.type = vs_4_0
+VS_ClearUint.output = clearuint11vs.h
+PS_ClearUint.input = CLEAR
+PS_ClearUint.type = ps_4_0
+PS_ClearUint.output = clearuint11ps.h
+VS_ClearSint.input = CLEAR
+VS_ClearSint.type = vs_4_0
+VS_ClearSint.output = clearsint11vs.h
+PS_ClearSint.input = CLEAR
+PS_ClearSint.type = ps_4_0
+PS_ClearSint.output = clearsint11ps.h
-BUFFERTOTEXTURE_INPUT = $$SHADER11_INPUT_DIR/BufferToTexture11.hlsl
-BUFFERTOTEXTURE.shaders = \
- PS_BufferToTexture_4F PS_BufferToTexture_4I PS_BufferToTexture_4UI \
- VS_BufferToTexture GS_BufferToTexture
-BUFFERTOTEXTURE.profile = 4_0
+PASSTHROUGH3D = $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/shaders/Passthrough3D11.hlsl
+VS_Passthrough3D.input = PASSTHROUGH3D
+VS_Passthrough3D.type = vs_4_0
+VS_Passthrough3D.output = passthrough3d11vs.h
+GS_Passthrough3D.input = PASSTHROUGH3D
+GS_Passthrough3D.type = gs_4_0
+GS_Passthrough3D.output = passthrough3d11gs.h
+PS_PassthroughRGBA3D.input = PASSTHROUGH3D
+PS_PassthroughRGBA3D.type = ps_4_0
+PS_PassthroughRGBA3D.output = passthroughrgba3d11ps.h
+PS_PassthroughRGBA3DUI.input = PASSTHROUGH3D
+PS_PassthroughRGBA3DUI.type = ps_4_0
+PS_PassthroughRGBA3DUI.output = passthroughrgba3dui11ps.h
+PS_PassthroughRGBA3DI.input = PASSTHROUGH3D
+PS_PassthroughRGBA3DI.type = ps_4_0
+PS_PassthroughRGBA3DI.output = passthroughrgba3di11ps.h
+PS_PassthroughRGB3D.input = PASSTHROUGH3D
+PS_PassthroughRGB3D.type = ps_4_0
+PS_PassthroughRGB3D.output = passthroughrgb3d11ps.h
+PS_PassthroughRGB3DUI.input = PASSTHROUGH3D
+PS_PassthroughRGB3DUI.type = ps_4_0
+PS_PassthroughRGB3DUI.output = passthroughrgb3dui11ps.h
+PS_PassthroughRGB3DI.input = PASSTHROUGH3D
+PS_PassthroughRGB3DI.type = ps_4_0
+PS_PassthroughRGB3DI.output = passthroughrgb3di11ps.h
+PS_PassthroughRG3D.input = PASSTHROUGH3D
+PS_PassthroughRG3D.type = ps_4_0
+PS_PassthroughRG3D.output = passthroughrg3d11ps.h
+PS_PassthroughRG3DUI.input = PASSTHROUGH3D
+PS_PassthroughRG3DUI.type = ps_4_0
+PS_PassthroughRG3DUI.output = passthroughrg3dui11ps.h
+PS_PassthroughRG3DI.input = PASSTHROUGH3D
+PS_PassthroughRG3DI.type = ps_4_0
+PS_PassthroughRG3DI.output = passthroughrg3di11ps.h
+PS_PassthroughR3D.input = PASSTHROUGH3D
+PS_PassthroughR3D.type = ps_4_0
+PS_PassthroughR3D.output = passthroughr3d11ps.h
+PS_PassthroughR3DUI.input = PASSTHROUGH3D
+PS_PassthroughR3DUI.type = ps_4_0
+PS_PassthroughR3DUI.output = passthroughr3dui11ps.h
+PS_PassthroughR3DI.input = PASSTHROUGH3D
+PS_PassthroughR3DI.type = ps_4_0
+PS_PassthroughR3DI.output = passthroughr3di11ps.h
+PS_PassthroughLum3D.input = PASSTHROUGH3D
+PS_PassthroughLum3D.type = ps_4_0
+PS_PassthroughLum3D.output = passthroughlum3d11ps.h
+PS_PassthroughLumAlpha3D.input = PASSTHROUGH3D
+PS_PassthroughLumAlpha3D.type = ps_4_0
+PS_PassthroughLumAlpha3D.output = passthroughlumalpha3d11ps.h
-CLEAR_INPUT = $$SHADER11_INPUT_DIR/Clear11.hlsl
-CLEAR.shaders = \
- PS_ClearUint PS_ClearSint \
- VS_ClearUint VS_ClearSint
-CLEAR.shaders_compat = PS_ClearFloat VS_ClearFloat
-CLEAR.profile = 4_0
+SWIZZLE = $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/shaders/Swizzle11.hlsl
+PS_SwizzleF2D.input = SWIZZLE
+PS_SwizzleF2D.type = ps_4_0
+PS_SwizzleF2D.output = swizzlef2dps.h
+PS_SwizzleI2D.input = SWIZZLE
+PS_SwizzleI2D.type = ps_4_0
+PS_SwizzleI2D.output = swizzlei2dps.h
+PS_SwizzleUI2D.input = SWIZZLE
+PS_SwizzleUI2D.type = ps_4_0
+PS_SwizzleUI2D.output = swizzleui2dps.h
+PS_SwizzleF3D.input = SWIZZLE
+PS_SwizzleF3D.type = ps_4_0
+PS_SwizzleF3D.output = swizzlef3dps.h
+PS_SwizzleI3D.input = SWIZZLE
+PS_SwizzleI3D.type = ps_4_0
+PS_SwizzleI3D.output = swizzlei3dps.h
+PS_SwizzleUI3D.input = SWIZZLE
+PS_SwizzleUI3D.type = ps_4_0
+PS_SwizzleUI3D.output = swizzleui3dps.h
+PS_SwizzleF2DArray.input = SWIZZLE
+PS_SwizzleF2DArray.type = ps_4_0
+PS_SwizzleF2DArray.output = swizzlef2darrayps.h
+PS_SwizzleI2DArray.input = SWIZZLE
+PS_SwizzleI2DArray.type = ps_4_0
+PS_SwizzleI2DArray.output = swizzlei2darrayps.h
+PS_SwizzleUI2DArray.input = SWIZZLE
+PS_SwizzleUI2DArray.type = ps_4_0
+PS_SwizzleUI2DArray.output = swizzleui2darrayps.h
-PASSTHROUGH2D_INPUT = $$SHADER11_INPUT_DIR/Passthrough2D11.hlsl
-PASSTHROUGH2D.shaders = \
- PS_PassthroughRGBA2DUI PS_PassthroughRGBA2DI \
- PS_PassthroughRGB2DUI PS_PassthroughRGB2DI \
- PS_PassthroughRG2DUI PS_PassthroughRG2DI \
- PS_PassthroughR2DUI PS_PassthroughR2DI \
- PS_PassthroughDepth2D
-PASSTHROUGH2D.shaders_compat = \
- PS_PassthroughRGBA2D PS_PassthroughRGB2D \
- PS_PassthroughRG2D PS_PassthroughR2D \
- PS_PassthroughLum2D PS_PassthroughLumAlpha2D \
- VS_Passthrough2D
-PASSTHROUGH2D.profile = 4_0
+BUFFERTOTEXTURE = $$ANGLE_DIR/src/libANGLE/renderer/d3d/d3d11/shaders/BufferToTexture11.hlsl
+VS_BufferToTexture.input = BUFFERTOTEXTURE
+VS_BufferToTexture.type = vs_4_0
+VS_BufferToTexture.output = buffertotexture11_vs.h
+GS_BufferToTexture.input = BUFFERTOTEXTURE
+GS_BufferToTexture.type = gs_4_0
+GS_BufferToTexture.output = buffertotexture11_gs.h
+PS_BufferToTexture_4F.input = BUFFERTOTEXTURE
+PS_BufferToTexture_4F.type = ps_4_0
+PS_BufferToTexture_4F.output = buffertotexture11_ps_4f.h
+PS_BufferToTexture_4I.input = BUFFERTOTEXTURE
+PS_BufferToTexture_4I.type = ps_4_0
+PS_BufferToTexture_4I.output = buffertotexture11_ps_4i.h
+PS_BufferToTexture_4UI.input = BUFFERTOTEXTURE
+PS_BufferToTexture_4UI.type = ps_4_0
+PS_BufferToTexture_4UI.output = buffertotexture11_ps_4ui.h
-PASSTHROUGH3D_INPUT = $$SHADER11_INPUT_DIR/Passthrough3D11.hlsl
-PASSTHROUGH3D.shaders = \
+# D3D11
+angle_d3d11: SHADERS = VS_Passthrough2D \
+ PS_PassthroughRGB2D PS_PassthroughRGB2DUI PS_PassthroughRGB2DI \
+ PS_PassthroughRGBA2D PS_PassthroughRGBA2DUI PS_PassthroughRGBA2DI \
+ PS_PassthroughRG2D PS_PassthroughRG2DUI PS_PassthroughRG2DI \
+ PS_PassthroughR2D PS_PassthroughR2DUI PS_PassthroughR2DI \
+ PS_PassthroughLum2D PS_PassthroughLumAlpha2D PS_PassthroughDepth2D \
+ VS_ClearFloat VS_ClearUint VS_ClearSint \
+ PS_ClearFloat PS_ClearFloat_FL9 PS_ClearUint PS_ClearSint \
+ VS_Passthrough3D GS_Passthrough3D \
PS_PassthroughRGBA3D PS_PassthroughRGBA3DUI PS_PassthroughRGBA3DI \
PS_PassthroughRGB3D PS_PassthroughRGB3DUI PS_PassthroughRGB3DI \
PS_PassthroughRG3D PS_PassthroughRG3DUI PS_PassthroughRG3DI \
PS_PassthroughR3D PS_PassthroughR3DUI PS_PassthroughR3DI \
PS_PassthroughLum3D PS_PassthroughLumAlpha3D \
- VS_Passthrough3D GS_Passthrough3D
-PASSTHROUGH3D.profile = 4_0
-
-SWIZZLE_INPUT = $$SHADER11_INPUT_DIR/Swizzle11.hlsl
-SWIZZLE.shaders = \
- PS_SwizzleI2D PS_SwizzleUI2D \
+ PS_SwizzleF2D PS_SwizzleI2D PS_SwizzleUI2D \
PS_SwizzleF3D PS_SwizzleI3D PS_SwizzleUI3D \
- PS_SwizzleF2DArray PS_SwizzleI2DArray PS_SwizzleUI2DArray
-SWIZZLE.shaders_compat = PS_SwizzleF2D
-SWIZZLE.profile = 4_0
+ PS_SwizzleF2DArray PS_SwizzleI2DArray PS_SwizzleUI2DArray \
+ VS_BufferToTexture GS_BufferToTexture \
+ PS_BufferToTexture_4F PS_BufferToTexture_4I PS_BufferToTexture_4UI
-angle_d3d11: FXC_JOBS = BUFFERTOTEXTURE CLEAR PASSTHROUGH2D PASSTHROUGH3D SWIZZLE
-!winrt: FXC_JOBS += BLITPS BLITVS
+# D3D9
+!winrt: SHADERS += standardvs flipyvs passthroughps luminanceps componentmaskps
-for (JOB, FXC_JOBS) {
- INPUT = $${JOB}_INPUT
- OUT_DIR = $$OUT_PWD/$$relative_path($$dirname($$INPUT), $$ANGLE_DIR/src/libGLESv2)/compiled
- SHADERS_COMPAT = $$eval($${JOB}.shaders_compat)
- SHADERS = $$eval($${JOB}.shaders) $$SHADERS_COMPAT
- for(SHADER, SHADERS) {
- TYPE = $$lower($$section(SHADER, _, 0, 0))
- PROFILE = $${TYPE}_$$eval($${JOB}.profile)
- contains(SHADERS_COMPAT, $$SHADER): PROFILE = $${PROFILE}_level_9_1
- fxc_$${SHADER}_$${PROFILE}.commands = $$FXC /nologo /E $${SHADER} /T $${PROFILE} /Fh ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME}
- fxc_$${SHADER}_$${PROFILE}.output = $$OUT_DIR/$$section(SHADER, _, 1)$${TYPE}.h
- fxc_$${SHADER}_$${PROFILE}.input = $$INPUT
- fxc_$${SHADER}_$${PROFILE}.dependency_type = TYPE_C
- fxc_$${SHADER}_$${PROFILE}.variable_out = HEADERS
- fxc_$${SHADER}_$${PROFILE}.CONFIG += target_predeps
- QMAKE_EXTRA_COMPILERS += fxc_$${SHADER}_$${PROFILE}
- }
+# Generate headers
+for (SHADER, SHADERS) {
+ INPUT = $$eval($${SHADER}.input)
+ OUT_DIR = $$OUT_PWD/libANGLE/$$relative_path($$dirname($$INPUT), $$ANGLE_DIR/src/libANGLE)/compiled
+ fxc_$${SHADER}.commands = $$FXC /nologo /E $${SHADER} /T $$eval($${SHADER}.type) /Fh ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME}
+ fxc_$${SHADER}.output = $$OUT_DIR/$$eval($${SHADER}.output)
+ fxc_$${SHADER}.input = $$INPUT
+ fxc_$${SHADER}.dependency_type = TYPE_C
+ fxc_$${SHADER}.variable_out = HEADERS
+ fxc_$${SHADER}.CONFIG += target_predeps
+ QMAKE_EXTRA_COMPILERS += fxc_$${SHADER}
}
khr_headers.files = $$ANGLE_DIR/include/KHR/khrplatform.h