diff options
author | Martchus | 2016-02-22 18:47:58 +0100 |
---|---|---|
committer | Martchus | 2016-02-22 18:47:58 +0100 |
commit | 6db90508f39d56b6cf1ff0add5129f77048daba2 (patch) | |
tree | fc7edc40cef179134d8d26354205e8ef97a12d8c | |
parent | e55465c5d475b9f7eb94445276fe44129f6f7d0c (diff) | |
download | aur-6db90508f39d56b6cf1ff0add5129f77048daba2.tar.gz |
updated to 2.1.r5571.7a533f7
- removed most of the patches since these can't be applied anymore
- provide some header files which seem to be missing in mingw-w64-headers.
- disabled concurrent builds because building concurrently is broken
- use "-D angle_gl_library_type=static_library" build flag to make static libs
25 files changed, 79 insertions, 5179 deletions
@@ -1,66 +1,26 @@ +# Generated by mksrcinfo v8 +# Mon Feb 22 17:41:19 UTC 2016 pkgbase = mingw-w64-angleproject pkgdesc = Angle project (mingw-w64) - pkgver = 2.1.r3427.30d6c25 - pkgrel = 2 - url = http://code.google.com/p/angleproject/ + pkgver = 2.1.r5571.7a533f7 + pkgrel = 1 + url = https://chromium.googlesource.com/angle/angle/+/master/README.md arch = any license = BSD makedepends = mingw-w64-gcc - makedepends = gyp-svn makedepends = git + makedepends = gyp-git makedepends = python depends = mingw-w64-crt options = !strip options = !buildflags options = staticlibs - source = angleproject::git+https://chromium.googlesource.com/angle/angle#commit=30d6c25 - source = libGLESv2_mingw32.def - source = libEGL_mingw32.def - source = 0000-General-fixes-for-ANGLE-2.1.patch - source = 0004-Make-it-possible-to-link-ANGLE-statically-for-single.patch - source = 0008-ANGLE-Dynamically-load-D3D-compiler-from-a-list-or-t.patch - source = 0009-ANGLE-Support-WinRT.patch - source = 0010-ANGLE-Enable-D3D11-for-feature-level-9-cards.patch - source = 0012-ANGLE-fix-semantic-index-lookup.patch - source = 0013-ANGLE-Add-support-for-querying-platform-device.patch - source = 0014-Let-ANGLE-use-multithreaded-devices-if-necessary.patch - source = 0015-ANGLE-Fix-angle-d3d11-on-MSVC2010.patch - source = 0016-ANGLE-Fix-compilation-with-MinGW-D3D11.patch - source = 0017-ANGLE-Fix-compilation-with-D3D9.patch - source = 0018-ANGLE-Fix-releasing-textures-after-we-kill-D3D11.patch - source = angleproject-undo-mingw-org-compatibility.patch - source = angleproject-undo-mingw-org-compatibility2.patch - source = angleproject-disable-debug-annotations.patch - source = angleproject-undo-shader-renames.patch - source = angleproject-prevent-multiple-definition-errors.patch - source = commit-4de44cb - source = commit-409078f + source = angleproject::git+https://chromium.googlesource.com/angle/angle#commit=7a533f7 + source = additional-mingw-header::git+https://github.com/Martchus/additional-mingw-header.git#commit=7a8f394 source = angleproject-include-import-library-and-use-def-file.patch - source = angleproject-export-shader-symbols.patch md5sums = SKIP - md5sums = ebee3837c9f9ad9e9b49061a2274b963 - md5sums = 7d563b2218692a5ea232c1a7aa77e2a1 - md5sums = b14a834c2d51c7af99f8aaf089851d23 - md5sums = fa43f37117af18de3badfc4481ee3639 - md5sums = fe69049b10928166ef62e1786a13e61b - md5sums = e573a80dec8b594bf6244ea4a28ce438 - md5sums = b64f5fc4838d7157753f8255613ca511 - md5sums = baf253bebf28653468e18b92d84f4431 - md5sums = 25b88bcf7132e62c6717c145177ea157 - md5sums = 8fdd8266b8b2c276dbf4e66d2947e5e3 - md5sums = fbd26095e88c8e6930edc50c1c7dc0a8 - md5sums = 5f80ebeebded4a4bb80cd03e3075dae5 - md5sums = 780bc9ce3c0008910707b2df20c3430c - md5sums = 2787c0a067665b02c161c7392b7175e4 - md5sums = b8f289095e5a64514f3a7adb680fc3d3 - md5sums = d5c2ca6cb655070ac75a035376e8b052 - md5sums = f2289e55621764d05e16a71ba09dd779 - md5sums = f44242b0abb63290bd571a953bae34b9 - md5sums = 8f54b19db99483c9ee37054d302bf806 - md5sums = cce58c740f92bf1b2f7ca4a58999a5fc - md5sums = a94c3e8bfe9e62198b8b51311f28c9a5 - md5sums = 8374ba08ca0cc5620ac2c94209122134 - md5sums = 19a72088f614a5f22004b2687a73f3ad + md5sums = SKIP + md5sums = 966e40c3ffc2070ce413a7fda9b6aedc pkgname = mingw-w64-angleproject diff --git a/0000-General-fixes-for-ANGLE-2.1.patch b/0000-General-fixes-for-ANGLE-2.1.patch deleted file mode 100644 index ad3187ec7c01..000000000000 --- a/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/0004-Make-it-possible-to-link-ANGLE-statically-for-single.patch b/0004-Make-it-possible-to-link-ANGLE-statically-for-single.patch deleted file mode 100644 index 45a3f17ccabb..000000000000 --- a/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 ¤t; -+#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 ¤t; -+#endif - } - - void makeCurrent(Context *context, egl::Display *display, egl::Surface *surface) --- -1.9.4.msysgit.1 - diff --git a/0008-ANGLE-Dynamically-load-D3D-compiler-from-a-list-or-t.patch b/0008-ANGLE-Dynamically-load-D3D-compiler-from-a-list-or-t.patch deleted file mode 100644 index 801db67682a2..000000000000 --- a/0008-ANGLE-Dynamically-load-D3D-compiler-from-a-list-or-t.patch +++ /dev/null @@ -1,64 +0,0 @@ -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 - -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, -the default compiler can also be specified by an environment variable, -QT_D3DCOMPILER_DLL. - -Change-Id: I0d7a8a8a36cc571836f8fa59ea14513b9b19c19b ---- - .../src/libGLESv2/renderer/d3d/HLSLCompiler.cpp | 27 ++++++++++++++++++++++ - 1 file changed, 27 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" - -+#ifndef QT_D3DCOMPILER_DLL -+#define QT_D3DCOMPILER_DLL D3DCOMPILER_DLL -+#endif -+ - // Definitions local to the translation unit - namespace - { -@@ -132,6 +136,29 @@ bool HLSLCompiler::initialize() - } - #endif // ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES - -+ // Load the compiler DLL specified by the environment, or default to QT_D3DCOMPILER_DLL -+ const wchar_t *defaultCompiler = _wgetenv(L"QT_D3DCOMPILER_DLL"); -+ if (!defaultCompiler) -+ defaultCompiler = QT_D3DCOMPILER_DLL; -+ -+ const wchar_t *compilerDlls[] = { -+ defaultCompiler, -+ L"d3dcompiler_47.dll", -+ L"d3dcompiler_46.dll", -+ L"d3dcompiler_45.dll", -+ L"d3dcompiler_44.dll", -+ L"d3dcompiler_43.dll", -+ 0 -+ }; -+ -+ // Load the first available known compiler DLL -+ for (int i = 0; compilerDlls[i]; ++i) -+ { -+ mD3DCompilerModule = LoadLibrary(compilerDlls[i]); -+ if (mD3DCompilerModule) -+ break; -+ } -+ - if (!mD3DCompilerModule) - { - // Load the version of the D3DCompiler DLL associated with the Direct3D version ANGLE was built with. --- -1.9.4.msysgit.1 - diff --git a/0009-ANGLE-Support-WinRT.patch b/0009-ANGLE-Support-WinRT.patch deleted file mode 100644 index a38fb4ea13cd..000000000000 --- a/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/0010-ANGLE-Enable-D3D11-for-feature-level-9-cards.patch b/0010-ANGLE-Enable-D3D11-for-feature-level-9-cards.patch deleted file mode 100644 index dd2768cf3ed7..000000000000 --- a/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/0012-ANGLE-fix-semantic-index-lookup.patch b/0012-ANGLE-fix-semantic-index-lookup.patch deleted file mode 100644 index afc9f256a1ec..000000000000 --- a/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/0013-ANGLE-Add-support-for-querying-platform-device.patch b/0013-ANGLE-Add-support-for-querying-platform-device.patch deleted file mode 100644 index b43dcc368b0f..000000000000 --- a/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/0014-Let-ANGLE-use-multithreaded-devices-if-necessary.patch b/0014-Let-ANGLE-use-multithreaded-devices-if-necessary.patch deleted file mode 100644 index 9ceb34d964a3..000000000000 --- a/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/0015-ANGLE-Fix-angle-d3d11-on-MSVC2010.patch b/0015-ANGLE-Fix-angle-d3d11-on-MSVC2010.patch deleted file mode 100644 index f78474f11a5b..000000000000 --- a/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 ¤tSRVs = (samplerType == gl::SAMPLER_VERTEX ? mCurVertexSRVs : mCurPixelSRVs); -+ std::vector<ID3D11ShaderResourceView *> ¤tSRVs = (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 ¤tSRVs = (shaderType == gl::SAMPLER_VERTEX ? mCurVertexSRVs : mCurPixelSRVs); -+ std::vector<ID3D11ShaderResourceView *> ¤tSRVs = (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/0016-ANGLE-Fix-compilation-with-MinGW-D3D11.patch b/0016-ANGLE-Fix-compilation-with-MinGW-D3D11.patch deleted file mode 100644 index e3df95d8bf73..000000000000 --- a/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/0017-ANGLE-Fix-compilation-with-D3D9.patch b/0017-ANGLE-Fix-compilation-with-D3D9.patch deleted file mode 100644 index 4ada6d41d262..000000000000 --- a/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/0018-ANGLE-Fix-releasing-textures-after-we-kill-D3D11.patch b/0018-ANGLE-Fix-releasing-textures-after-we-kill-D3D11.patch deleted file mode 100644 index 97847ad68479..000000000000 --- a/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 - @@ -1,66 +1,25 @@ -# Maintainer: ant32 <antreimer@gmail.com> +# Maintainer: Martchus <martchus@gmx.net> +# Contributor: ant32 <antreimer@gmail.com> # Contributor: Filip Brcic <brcha@gna.org> # Contributor: xantares # Contributor: jellysheep <max DOT mail AT dameweb DOT de> pkgname=mingw-w64-angleproject -pkgver=2.1.r3427.30d6c25 -pkgrel=2 +pkgver=2.1.r5571.7a533f7 +pkgrel=1 pkgdesc='Angle project (mingw-w64)' arch=('any') -url='http://code.google.com/p/angleproject/' +url='https://chromium.googlesource.com/angle/angle/+/master/README.md' license=('BSD') depends=('mingw-w64-crt') -makedepends=('mingw-w64-gcc' 'gyp-svn' 'git' 'python') +makedepends=('mingw-w64-gcc' 'git' 'gyp-git' 'python') options=('!strip' '!buildflags' 'staticlibs') -source=('angleproject::git+https://chromium.googlesource.com/angle/angle#commit=30d6c25' - 'libGLESv2_mingw32.def' - 'libEGL_mingw32.def' - '0000-General-fixes-for-ANGLE-2.1.patch' - '0004-Make-it-possible-to-link-ANGLE-statically-for-single.patch' - '0008-ANGLE-Dynamically-load-D3D-compiler-from-a-list-or-t.patch' - '0009-ANGLE-Support-WinRT.patch' - '0010-ANGLE-Enable-D3D11-for-feature-level-9-cards.patch' - '0012-ANGLE-fix-semantic-index-lookup.patch' - '0013-ANGLE-Add-support-for-querying-platform-device.patch' - '0014-Let-ANGLE-use-multithreaded-devices-if-necessary.patch' - '0015-ANGLE-Fix-angle-d3d11-on-MSVC2010.patch' - '0016-ANGLE-Fix-compilation-with-MinGW-D3D11.patch' - '0017-ANGLE-Fix-compilation-with-D3D9.patch' - '0018-ANGLE-Fix-releasing-textures-after-we-kill-D3D11.patch' - 'angleproject-undo-mingw-org-compatibility.patch' - 'angleproject-undo-mingw-org-compatibility2.patch' - 'angleproject-disable-debug-annotations.patch' - 'angleproject-undo-shader-renames.patch' - 'angleproject-prevent-multiple-definition-errors.patch' - 'commit-4de44cb' - 'commit-409078f' - 'angleproject-include-import-library-and-use-def-file.patch' - 'angleproject-export-shader-symbols.patch') +source=('angleproject::git+https://chromium.googlesource.com/angle/angle#commit=7a533f7' + 'additional-mingw-header::git+https://github.com/Martchus/additional-mingw-header.git#commit=7a8f394' + 'angleproject-include-import-library-and-use-def-file.patch') md5sums=('SKIP' - 'ebee3837c9f9ad9e9b49061a2274b963' - '7d563b2218692a5ea232c1a7aa77e2a1' - 'b14a834c2d51c7af99f8aaf089851d23' - 'fa43f37117af18de3badfc4481ee3639' - 'fe69049b10928166ef62e1786a13e61b' - 'e573a80dec8b594bf6244ea4a28ce438' - 'b64f5fc4838d7157753f8255613ca511' - 'baf253bebf28653468e18b92d84f4431' - '25b88bcf7132e62c6717c145177ea157' - '8fdd8266b8b2c276dbf4e66d2947e5e3' - 'fbd26095e88c8e6930edc50c1c7dc0a8' - '5f80ebeebded4a4bb80cd03e3075dae5' - '780bc9ce3c0008910707b2df20c3430c' - '2787c0a067665b02c161c7392b7175e4' - 'b8f289095e5a64514f3a7adb680fc3d3' - 'd5c2ca6cb655070ac75a035376e8b052' - 'f2289e55621764d05e16a71ba09dd779' - 'f44242b0abb63290bd571a953bae34b9' - '8f54b19db99483c9ee37054d302bf806' - 'cce58c740f92bf1b2f7ca4a58999a5fc' - 'a94c3e8bfe9e62198b8b51311f28c9a5' - '8374ba08ca0cc5620ac2c94209122134' - '19a72088f614a5f22004b2687a73f3ad') + 'SKIP' + '966e40c3ffc2070ce413a7fda9b6aedc') _architectures="i686-w64-mingw32 x86_64-w64-mingw32" #pkgver() { @@ -72,58 +31,18 @@ _architectures="i686-w64-mingw32 x86_64-w64-mingw32" prepare() { cd "${srcdir}/angleproject" - # Install additional .def files - cp ../libGLESv2_mingw32.def src/libGLESv2/ - cp ../libEGL_mingw32.def src/libEGL/ - - # Patches taken from Qt5 - # https://qt.gitorious.org/qt/qtbase/source/2302d386c7a1aa1a96658f79c236d6b8a59db7ac:src/angle/patches - patch -p4 -i ../0000-General-fixes-for-ANGLE-2.1.patch - patch -p4 -i ../0004-Make-it-possible-to-link-ANGLE-statically-for-single.patch - patch -p4 -i ../0008-ANGLE-Dynamically-load-D3D-compiler-from-a-list-or-t.patch - patch -p4 -i ../0009-ANGLE-Support-WinRT.patch - patch -p4 -i ../0010-ANGLE-Enable-D3D11-for-feature-level-9-cards.patch - patch -p4 -i ../0012-ANGLE-fix-semantic-index-lookup.patch - patch -p4 -i ../0013-ANGLE-Add-support-for-querying-platform-device.patch - patch -p4 -i ../0014-Let-ANGLE-use-multithreaded-devices-if-necessary.patch - patch -p4 -i ../0015-ANGLE-Fix-angle-d3d11-on-MSVC2010.patch - patch -p4 -i ../0016-ANGLE-Fix-compilation-with-MinGW-D3D11.patch - patch -p4 -i ../0017-ANGLE-Fix-compilation-with-D3D9.patch - patch -p4 -i ../0018-ANGLE-Fix-releasing-textures-after-we-kill-D3D11.patch - - # Undo a change from 0016-ANGLE-Fix-compilation-with-MinGW-D3D11.patch which - # implements some missing stuff from the mingw.org toolchain, but which already - # exists in the mingw-w64 toolchain (and causes breakage) - patch -p1 -i ../angleproject-undo-mingw-org-compatibility.patch - - # Same as above but introduced by a change from 0015-ANGLE-Fix-angle-d3d11-on-MSVC2010.patch - patch -p1 -i ../angleproject-undo-mingw-org-compatibility2.patch - - # Disable some debug code as it depends on the ID3DUserDefinedAnnotation - # interface which isn't available in mingw-w64 yet - # Patch for this is currently pending at http://source.winehq.org/patches/data/108405 - patch -p1 -i ../angleproject-disable-debug-annotations.patch - - # Undo a change from 0000-General-fixes-for-ANGLE-2.1.patch which renames - # some shader references, but which doesn't rename the precompiled shaders - patch -p1 -i ../angleproject-undo-shader-renames.patch - - # Prevent multiple definition errors during the final link of libGLESv2 - patch -p1 -i ../angleproject-prevent-multiple-definition-errors.patch - - # Revert commit 4de44cb and commit 409078f as qt5-qtwebkit still depends on it - patch -p1 -R -i ../commit-4de44cb - patch -p1 -R -i ../commit-409078f - - # Make sure an import library is created and the correct .def file is used during the build - patch -p1 -i ../angleproject-include-import-library-and-use-def-file.patch - - # WebKit depends on symbols which are used in the static library called translator_hlsl - # This static library is linked into the libGLESv2 shared library - # To allow building WebKit export the required symbols in the libGLESv2 shared library - patch -p1 -i ../angleproject-export-shader-symbols.patch - - # Executing .bat scripts on Linux is a no-go so make this a no-op + # provide recent versions of some mingw-w64 header files + mkdir sysinclude + cp ../additional-mingw-header/{d3d11sdklayers,dxgi1_2,versionhelpers,d3d10_1,sdkddkver,d3d11,dcomp,dcomptypes,dcompanimation}.h sysinclude/ + cp sysinclude/{versionhelpers,VersionHelpers}.h + + # remove .git directory to prevent: No rule to make target '../build-i686-w64-mingw32/.git/index', needed by 'out/Debug/obj/gen/angle/id/commit.h'. + rm -r .git + + # make sure an import library is created and the correct .def file is used during the build + patch -p1 -i "${srcdir}/angleproject-include-import-library-and-use-def-file.patch" + + # executing .bat scripts on Linux is a no-go so make this a no-op echo "" > src/copy_compiler_dll.bat chmod +x src/copy_compiler_dll.bat } @@ -131,8 +50,8 @@ prepare() { build() { cd "${srcdir}/angleproject" - export CFLAGS="-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions --param=ssp-buffer-size=4" - export CXXFLAGS="-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions --param=ssp-buffer-size=4" + # set build flags, make sure all header files are found + export CXXFLAGS="-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions --param=ssp-buffer-size=4 -std=c++11 -msse2 -DUNICODE -D_UNICODE -g -I${srcdir}/angleproject/sysinclude -I${srcdir}/angleproject/src -I${srcdir}/angleproject/include" unset LDFLAGS for _arch in ${_architectures}; do @@ -141,53 +60,23 @@ build() { export CXX="${_arch}-g++" export AR="${_arch}-ar" - if [ "${_arch}" = "i686-w64-mingw32" ]; then + if [[ ${_arch} == i686-w64-mingw32 ]]; then target="win32" else target="win64" fi - gyp -D OS=win -D TARGET=$target -D MSVS_VERSION="" --depth . -I ../build/common.gypi ../src/angle.gyp - - # Make sure the correct libraries are linked in - sed -i s@'^LIBS :='@'LIBS := -ld3d9 -ldxguid'@ ../src/libGLESv2.target.mk - sed -i s@'^LIBS :='@'LIBS := -ld3d9 -ldxguid -L. -lGLESv2'@ ../src/libEGL.target.mk - - make V=1 CXXFLAGS="-std=c++11 -msse2 -DUNICODE -D_UNICODE -g" - - # Also build static libraries (which are needed by the static Qt build) - ${AR} rcs libGLESv2.a \ - out/Debug/obj.target/src/common/*.o \ - out/Debug/obj.target/src/common/win32/*.o \ - out/Debug/obj.target/src/compiler/translator/*.o \ - out/Debug/obj.target/src/compiler/translator/depgraph/*.o \ - out/Debug/obj.target/src/compiler/translator/timing/*.o \ - out/Debug/obj.target/src/compiler/preprocessor/*.o \ - out/Debug/obj.target/src/third_party/compiler/*.o \ - out/Debug/obj.target/src/third_party/murmurhash/*.o \ - out/Debug/obj.target/src/third_party/systeminfo/*.o \ - out/Debug/obj.target/src/libGLESv2/*.o \ - out/Debug/obj.target/src/libGLESv2/renderer/*.o \ - out/Debug/obj.target/src/libGLESv2/renderer/d3d/*.o \ - out/Debug/obj.target/src/libGLESv2/renderer/d3d/d3d9/*.o \ - out/Debug/obj.target/src/libGLESv2/renderer/d3d/d3d11/*.o - - ${AR} rcs libEGL.a \ - out/Debug/obj.target/libEGL/../src/common/RefCountObject.o \ - out/Debug/obj.target/libEGL/../src/common/angleutils.o \ - out/Debug/obj.target/libEGL/../src/common/debug.o \ - out/Debug/obj.target/libEGL/../src/common/event_tracer.o \ - out/Debug/obj.target/libEGL/../src/common/mathutil.o \ - out/Debug/obj.target/libEGL/../src/common/tls.o \ - out/Debug/obj.target/libEGL/../src/common/utilities.o \ - out/Debug/obj.target/libEGL/../src/libEGL/AttributeMap.o \ - out/Debug/obj.target/libEGL/../src/libEGL/Config.o \ - out/Debug/obj.target/libEGL/../src/libEGL/Display.o \ - out/Debug/obj.target/libEGL/../src/libEGL/Error.o \ - out/Debug/obj.target/libEGL/../src/libEGL/Surface.o \ - out/Debug/obj.target/libEGL/../src/libEGL/libEGL.o \ - out/Debug/obj.target/libEGL/../src/libEGL/main.o \ - out/Debug/obj.target/libEGL/../src/common/win32/NativeWindow.o + gyp -D OS=win -D TARGET=$target --format make -D MSVS_VERSION="" --depth . -I ../build/common.gypi ../src/angle.gyp + + # forcing non-concurrent build to prevent: + # i686-w64-mingw32-g++ -shared -Wl,-soname=libGLESv2.so -o out/Debug/obj.target/../src/libGLESv2.so -Wl,--whole-archive out/Debug/obj.target/libGLESv2/../src/libGLESv2/entry_points_egl.o out/Debug/obj.target/libGLESv2/../src/libGLESv2/entry_points_egl_ext.o out/Debug/obj.target/libGLESv2/../src/libGLESv2/entry_points_gles_2_0.o out/Debug/obj.target/libGLESv2/../src/libGLESv2/entry_points_gles_2_0_ext.o out/Debug/obj.target/libGLESv2/../src/libGLESv2/entry_points_gles_3_0.o out/Debug/obj.target/libGLESv2/../src/libGLESv2/global_state.o out/Debug/obj.target/libGLESv2/../src/libGLESv2/libGLESv2.o out/Debug/obj.target/../src/libANGLE.a out/Debug/obj.target/../src/libangle_common.a out/Debug/obj.target/../src/libtranslator_static.a out/Debug/obj.target/../src/libtranslator_lib.a out/Debug/obj.target/../src/libpreprocessor.a -Wl,--no-whole-archive + # out/Debug/obj.target/../src/libtranslator_static.a: member out/Debug/obj.target/../src/../obj.target/src/compiler/translator/ShaderLang.o in archive is not an object + # collect2: error: ld returned 1 exit status + make -j1 V=1 + + # static libs must be built separately + gyp -D OS=win -D TARGET=$target --format make -D MSVS_VERSION="" --depth . -I ../build/common.gypi ../src/angle.gyp -D angle_gl_library_type=static_library + make -j1 V=1 popd done @@ -199,13 +88,11 @@ package() { mkdir -p "${pkgdir}/usr/${_arch}/"{bin,lib,include} install out/Debug/src/libGLESv2.so "${pkgdir}/usr/${_arch}/bin/libGLESv2.dll" install out/Debug/src/libEGL.so "${pkgdir}/usr/${_arch}/bin/libEGL.dll" - install libGLESv2.a "${pkgdir}/usr/${_arch}/lib/" - install libEGL.a "${pkgdir}/usr/${_arch}/lib/" - install libGLESv2.dll.a "${pkgdir}/usr/${_arch}/lib/" - install libEGL.dll.a "${pkgdir}/usr/${_arch}/lib/" + install libGLESv2.dll.a libEGL.dll.a out/Debug/src/lib*.a "${pkgdir}/usr/${_arch}/lib/" cp -Rv ../include/* "${pkgdir}/usr/${_arch}/include/" ${_arch}-strip --strip-unneeded "${pkgdir}/usr/${_arch}/bin/"*.dll - ${_arch}-strip -g "${pkgdir}/usr/${_arch}/lib/"*.a + ${_arch}-strip -g "${pkgdir}/usr/${_arch}/lib/"*.dll.a + # static libs seem to be thin archives which mustn't be stripped done } diff --git a/angleproject-disable-debug-annotations.patch b/angleproject-disable-debug-annotations.patch deleted file mode 100644 index 1df4e5ca8323..000000000000 --- a/angleproject-disable-debug-annotations.patch +++ /dev/null @@ -1,33 +0,0 @@ ---- angle/src/libGLESv2.gypi.orig 2014-12-29 14:50:37.625335694 +0100 -+++ angle/src/libGLESv2.gypi 2014-12-29 14:51:18.659761527 +0100 -@@ -483,11 +483,6 @@ - { - 'Debug_Base': - { -- 'defines': -- [ -- 'ANGLE_ENABLE_DEBUG_ANNOTATIONS', -- 'ANGLE_GENERATE_SHADER_DEBUG_INFO' -- ], - 'msvs_settings': - { - 'VCLinkerTool': ---- angle/src/libEGL.gypi.orig 2014-12-29 16:05:56.119799976 +0100 -+++ angle/src/libEGL.gypi 2014-12-29 16:06:17.452019110 +0100 -@@ -171,16 +171,6 @@ - ], - }, - }, -- 'configurations': -- { -- 'Debug_Base': -- { -- 'defines': -- [ -- 'ANGLE_ENABLE_DEBUG_ANNOTATIONS', -- ], -- }, -- }, - }, - ], - }, diff --git a/angleproject-export-shader-symbols.patch b/angleproject-export-shader-symbols.patch deleted file mode 100644 index 91bc3376383a..000000000000 --- a/angleproject-export-shader-symbols.patch +++ /dev/null @@ -1,36 +0,0 @@ ---- angle/src/libGLESv2/libGLESv2.def.orig 2014-12-30 12:59:07.560620988 +0100 -+++ angle/src/libGLESv2/libGLESv2.def 2014-12-30 13:00:22.381399755 +0100 -@@ -294,3 +294,15 @@ - glBindTexImage @158 NONAME - glCreateRenderer @177 NONAME - glDestroyRenderer @178 NONAME -+ -+ ; WebKit dependencies -+ ShInitBuiltInResources @300 NONAME -+ ShInitialize @301 NONAME -+ ShDestruct @302 NONAME -+ ShGetInfo @303 NONAME -+ ShGetInfoLog @304 NONAME -+ ShGetVariableInfo @305 NONAME -+ ShGetObjectCode @306 NONAME -+ ShCompile @307 NONAME -+ ShConstructCompiler @308 NONAME -+ ---- angle/src/libGLESv2/libGLESv2_mingw32.def.orig 2014-12-30 12:59:07.561620998 +0100 -+++ angle/src/libGLESv2/libGLESv2_mingw32.def 2014-12-30 13:01:37.782182097 +0100 -@@ -294,3 +294,15 @@ - glBindTexImage@4 @158 NONAME - glCreateRenderer @177 NONAME - glDestroyRenderer @178 NONAME -+ -+ ; WebKit dependencies -+ ShInitBuiltInResources @300 NONAME -+ ShInitialize @301 NONAME -+ ShDestruct @302 NONAME -+ ShGetInfo @303 NONAME -+ ShGetInfoLog @304 NONAME -+ ShGetVariableInfo @305 NONAME -+ ShGetObjectCode @306 NONAME -+ ShCompile @307 NONAME -+ ShConstructCompiler @308 NONAME -+ diff --git a/angleproject-include-import-library-and-use-def-file.patch b/angleproject-include-import-library-and-use-def-file.patch index 034a2e0d9d48..af852bd5f69b 100644 --- a/angleproject-include-import-library-and-use-def-file.patch +++ b/angleproject-include-import-library-and-use-def-file.patch @@ -1,30 +1,38 @@ ---- angle/src/libGLESv2.gypi.orig 2014-12-29 16:26:05.272220904 +0100 -+++ angle/src/libGLESv2.gypi 2014-12-29 16:27:33.694129236 +0100 -@@ -531,6 +531,12 @@ +--- angleproject/src/libEGL.gypi.orig 2015-07-10 11:42:08.230786800 +0300 ++++ angleproject/src/libEGL.gypi 2015-07-10 11:44:01.168491900 +0300 +@@ -48,7 +48,16 @@ { 'msvs_enable_winphone' : '1', }], + ['TARGET=="win32"', { -+ 'ldflags': [ '-Wl,--out-implib,libGLESv2.dll.a ../src/libGLESv2/libGLESv2_mingw32.def' ], ++ 'ldflags': [ '-Wl,--out-implib,libEGL.dll.a ../src/libEGL/libEGL.def' ], ++ }], ++ ['TARGET=="win64"', { ++ 'ldflags': [ '-Wl,--out-implib,libEGL.dll.a ../src/libEGL/libEGL.def' ], ++ }], + ], ++ 'libraries': [ ++ '-ldxguid -ld3d9 -lgdi32' ++ ] + }, + ], + } +--- angleproject/src/libGLESv2.gypi.orig 2015-07-10 11:41:58.223787600 +0300 ++++ angleproject/src/libGLESv2.gypi 2015-07-10 11:44:36.585949800 +0300 +@@ -826,7 +826,16 @@ + { + 'msvs_enable_winphone' : '1', + }], ++ ['TARGET=="win32"', { ++ 'ldflags': [ '-Wl,--out-implib,libGLESv2.dll.a ../src/libGLESv2/libGLESv2.def' ], + }], + ['TARGET=="win64"', { + 'ldflags': [ '-Wl,--out-implib,libGLESv2.dll.a ../src/libGLESv2/libGLESv2.def' ], + }], ], - 'configurations': - { ---- angle/src/libEGL.gypi.orig 2014-12-29 16:27:51.546312626 +0100 -+++ angle/src/libEGL.gypi 2014-12-29 16:28:53.332947338 +0100 -@@ -146,6 +146,12 @@ - { - 'msvs_enable_winphone' : '1', - }], -+ ['TARGET=="win32"', { -+ 'ldflags': [ '-Wl,--out-implib,libEGL.dll.a ../src/libEGL/libEGL_mingw32.def' ], -+ }], -+ ['TARGET=="win64"', { -+ 'ldflags': [ '-Wl,--out-implib,libEGL.dll.a ../src/libEGL/libEGL.def' ], -+ }], - ], - 'includes': [ '../build/common_defines.gypi', ], - 'msvs_settings': ++ 'libraries': [ ++ '-ldxguid -ld3d9 -lgdi32' ++ ] + }, + ], + } diff --git a/angleproject-prevent-multiple-definition-errors.patch b/angleproject-prevent-multiple-definition-errors.patch deleted file mode 100644 index 836fffcd20f7..000000000000 --- a/angleproject-prevent-multiple-definition-errors.patch +++ /dev/null @@ -1,39 +0,0 @@ ---- angle/src/libGLESv2.gypi.orig 2014-12-29 15:37:12.356076212 +0100 -+++ angle/src/libGLESv2.gypi 2014-12-29 15:37:36.310322769 +0100 -@@ -21,25 +21,11 @@ - '../include/GLSLANG/ShaderVars.h', - '../include/KHR/khrplatform.h', - '../include/angle_gl.h', -- 'common/RefCountObject.cpp', -- 'common/RefCountObject.h', -- 'common/angleutils.cpp', -- 'common/angleutils.h', -- 'common/blocklayout.cpp', -- 'common/blocklayout.h', - 'common/debug.cpp', - 'common/debug.h', -- 'common/event_tracer.cpp', -- 'common/event_tracer.h', - 'common/features.h', -- 'common/mathutil.cpp', -- 'common/mathutil.h', - 'common/platform.h', - 'common/NativeWindow.h', -- 'common/tls.cpp', -- 'common/tls.h', -- 'common/utilities.cpp', -- 'common/utilities.h', - 'common/version.h', - 'libGLESv2/BinaryStream.h', - 'libGLESv2/Buffer.cpp', ---- angle/src/compiler.gypi.orig 2014-12-30 16:14:45.387688544 +0100 -+++ angle/src/compiler.gypi 2014-12-30 16:14:52.091758591 +0100 -@@ -27,8 +27,6 @@ - 'common/angleutils.cpp', - 'common/blocklayout.cpp', - 'common/blocklayout.h', -- 'common/debug.cpp', -- 'common/debug.h', - 'common/event_tracer.cpp', - 'common/event_tracer.h', - 'common/mathutil.cpp', diff --git a/angleproject-undo-mingw-org-compatibility.patch b/angleproject-undo-mingw-org-compatibility.patch deleted file mode 100644 index 4496d6992d36..000000000000 --- a/angleproject-undo-mingw-org-compatibility.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- angle/src/common/platform.h.orig 2014-12-29 14:28:40.707691427 +0100 -+++ angle/src/common/platform.h 2014-12-29 14:28:57.662866462 +0100 -@@ -82,7 +82,7 @@ - # endif - # endif - --# if defined(__MINGW32__) // Missing defines on MinGW -+# if defined(__MINGW32__) && 0 // Missing defines on MinGW - typedef enum D3D11_MAP_FLAG - { - D3D11_MAP_FLAG_DO_NOT_WAIT = 0x100000L diff --git a/angleproject-undo-mingw-org-compatibility2.patch b/angleproject-undo-mingw-org-compatibility2.patch deleted file mode 100644 index f4db2817cb97..000000000000 --- a/angleproject-undo-mingw-org-compatibility2.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- angle/src/common/platform.h.orig 2014-12-30 22:25:05.452862806 +0100 -+++ angle/src/common/platform.h 2014-12-30 22:25:23.828052663 +0100 -@@ -63,9 +63,9 @@ - # include <d3d10.h> - # include <d3d11.h> - # include <dxgi.h> -+# include <dxgi1_2.h> - # if defined(_MSC_VER) && (_MSC_VER >= 1700) - # include <d3d11_1.h> --# include <dxgi1_2.h> - # endif - # if !defined(COMPILER_IMPLEMENTATION) - # include <d3dcompiler.h> diff --git a/angleproject-undo-shader-renames.patch b/angleproject-undo-shader-renames.patch deleted file mode 100644 index 470756ab8dc0..000000000000 --- a/angleproject-undo-shader-renames.patch +++ /dev/null @@ -1,162 +0,0 @@ ---- angle/src/libGLESv2/renderer/d3d/d3d9/Blit9.cpp 2014-12-29 14:58:14.398042285 +0100 -+++ angle/src/libGLESv2/renderer/d3d/d3d9/Blit9.cpp.orig 2014-12-29 14:57:55.097843925 +0100 -@@ -27,20 +27,20 @@ - - const BYTE* const g_shaderCode[] = - { -- g_vs20_VS_standard, -- g_vs20_VS_flipy, -- g_ps20_PS_passthrough, -- g_ps20_PS_luminance, -- g_ps20_PS_componentmask -+ g_vs20_standardvs, -+ g_vs20_flipyvs, -+ g_ps20_passthroughps, -+ g_ps20_luminanceps, -+ g_ps20_componentmaskps - }; - - const size_t g_shaderSize[] = - { -- 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) -+ sizeof(g_vs20_standardvs), -+ sizeof(g_vs20_flipyvs), -+ sizeof(g_ps20_passthroughps), -+ sizeof(g_ps20_luminanceps), -+ sizeof(g_ps20_componentmaskps) - }; - } - ---- angle/src/libGLESv2/renderer/d3d/d3d11/Blit11.cpp.orig 2014-12-29 15:05:57.769805226 +0100 -+++ angle/src/libGLESv2/renderer/d3d/d3d11/Blit11.cpp 2014-12-29 15:06:40.179241153 +0100 -@@ -13,39 +13,39 @@ - #include "libGLESv2/main.h" - #include "libGLESv2/formatutils.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/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/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/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/swizzlef2dps.h" - #include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/swizzlei2dps.h" ---- angle/src/libGLESv2/renderer/d3d/d3d11/Clear11.cpp.orig 2014-12-29 15:07:22.962680910 +0100 -+++ angle/src/libGLESv2/renderer/d3d/d3d11/Clear11.cpp 2014-12-29 15:07:33.924793589 +0100 -@@ -15,14 +15,14 @@ - #include "libGLESv2/FramebufferAttachment.h" - - // Precompiled shaders --#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/clearfloat11vs.h" -+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/clearfloat11ps.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/clearuint11vs.h" -+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/clearuint11ps.h" - --#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/clearsintvs.h" --#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/clearsintps.h" -+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/clearsint11vs.h" -+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/clearsint11ps.h" - - namespace rx - { ---- angle/src/libGLESv2/renderer/d3d/d3d11/PixelTransfer11.cpp.orig 2014-12-29 15:08:04.781110747 +0100 -+++ angle/src/libGLESv2/renderer/d3d/d3d11/PixelTransfer11.cpp 2014-12-29 15:08:16.912235446 +0100 -@@ -22,11 +22,11 @@ - #include "libGLESv2/Context.h" - - // Precompiled shaders --#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" -+#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" - - namespace rx - { ---- angle/src/libGLESv2/renderer/d3d/d3d11/SwapChain11.cpp.orig 2014-12-29 15:08:54.720624075 +0100 -+++ angle/src/libGLESv2/renderer/d3d/d3d11/SwapChain11.cpp 2014-12-29 15:09:04.775727437 +0100 -@@ -12,8 +12,8 @@ - #include "libGLESv2/renderer/d3d/d3d11/Renderer11.h" - - // Precompiled shaders --#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthrough2dvs.h" --#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrgba2dps.h" -+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthrough2d11vs.h" -+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrgba2d11ps.h" - - #include "common/features.h" - #include "common/NativeWindow.h" diff --git a/commit-409078f b/commit-409078f deleted file mode 100644 index af016deb7c7b..000000000000 --- a/commit-409078f +++ /dev/null @@ -1,363 +0,0 @@ -commit 409078f1e7c4ec79a1cbc58e3d0b3c399831ac5b -Author: Zhenyao Mo <zmo@chromium.org> -Date: Tue Oct 28 13:23:18 2014 -0700 - - Remove ShGetVariableInfo() and related code. - - BUG=angle:775 - TEST=chromium builds and runs fine - - Change-Id: Ic62d3a3c9a8f034880b77a96f7f1c6be2691985e - Reviewed-on: https://chromium-review.googlesource.com/226004 - Tested-by: Zhenyao Mo <zmo@chromium.org> - Reviewed-by: Jamie Madill <jmadill@chromium.org> - Reviewed-by: Shannon Woods <shannonwoods@chromium.org> - -diff --git a/include/GLSLANG/ShaderLang.h b/include/GLSLANG/ShaderLang.h -index 76012cf..def4946 100644 ---- a/include/GLSLANG/ShaderLang.h -+++ b/include/GLSLANG/ShaderLang.h -@@ -48,7 +48,7 @@ extern "C" { - - // Version number for shader translation API. - // It is incremented every time the API changes. --#define ANGLE_SH_VERSION 130 -+#define ANGLE_SH_VERSION 131 - - typedef enum { - SH_GLES2_SPEC = 0x8B40, -@@ -86,21 +86,8 @@ typedef enum { - } ShShaderOutput; - - typedef enum { -- SH_PRECISION_HIGHP = 0x5001, -- SH_PRECISION_MEDIUMP = 0x5002, -- SH_PRECISION_LOWP = 0x5003, -- SH_PRECISION_UNDEFINED = 0 --} ShPrecisionType; -- --typedef enum { - SH_INFO_LOG_LENGTH = 0x8B84, - SH_OBJECT_CODE_LENGTH = 0x8B88, // GL_SHADER_SOURCE_LENGTH -- SH_ACTIVE_UNIFORMS = 0x8B86, -- SH_ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87, -- SH_ACTIVE_ATTRIBUTES = 0x8B89, -- SH_ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A, -- SH_VARYINGS = 0x8BBB, -- SH_VARYING_MAX_LENGTH = 0x8BBC, - SH_MAPPED_NAME_MAX_LENGTH = 0x6000, - SH_NAME_MAX_LENGTH = 0x6001, - SH_HASHED_NAME_MAX_LENGTH = 0x6002, -@@ -364,17 +351,6 @@ COMPILER_EXPORT int ShCompile( - // including the null termination character. - // SH_OBJECT_CODE_LENGTH: the number of characters in the object code - // including the null termination character. --// SH_ACTIVE_ATTRIBUTES: the number of active attribute variables. --// SH_ACTIVE_ATTRIBUTE_MAX_LENGTH: the length of the longest active attribute --// variable name including the null --// termination character. --// SH_ACTIVE_UNIFORMS: the number of active uniform variables. --// SH_ACTIVE_UNIFORM_MAX_LENGTH: the length of the longest active uniform --// variable name including the null --// termination character. --// SH_VARYINGS: the number of varying variables. --// SH_VARYING_MAX_LENGTH: the length of the longest varying variable name --// including the null termination character. - // SH_MAPPED_NAME_MAX_LENGTH: the length of the mapped variable name including - // the null termination character. - // SH_NAME_MAX_LENGTH: the max length of a user-defined name including the -@@ -410,44 +386,6 @@ COMPILER_EXPORT void ShGetInfoLog(const ShHandle handle, char* infoLog); - // ShGetInfo with SH_OBJECT_CODE_LENGTH. - COMPILER_EXPORT void ShGetObjectCode(const ShHandle handle, char* objCode); - --// Returns information about a shader variable. --// Parameters: --// handle: Specifies the compiler --// variableType: Specifies the variable type; options include --// SH_ACTIVE_ATTRIBUTES, SH_ACTIVE_UNIFORMS, SH_VARYINGS. --// index: Specifies the index of the variable to be queried. --// length: Returns the number of characters actually written in the string --// indicated by name (excluding the null terminator) if a value other --// than NULL is passed. --// size: Returns the size of the variable. --// type: Returns the data type of the variable. --// precision: Returns the precision of the variable. --// staticUse: Returns 1 if the variable is accessed in a statement after --// pre-processing, whether or not run-time flow of control will --// cause that statement to be executed. --// Returns 0 otherwise. --// name: Returns a null terminated string containing the name of the --// variable. It is assumed that name has enough memory to accormodate --// the variable name. The size of the buffer required to store the --// variable name can be obtained by calling ShGetInfo with --// SH_ACTIVE_ATTRIBUTE_MAX_LENGTH, SH_ACTIVE_UNIFORM_MAX_LENGTH, --// SH_VARYING_MAX_LENGTH. --// mappedName: Returns a null terminated string containing the mapped name of --// the variable, It is assumed that mappedName has enough memory --// (SH_MAPPED_NAME_MAX_LENGTH), or NULL if don't care about the --// mapped name. If the name is not mapped, then name and mappedName --// are the same. --COMPILER_EXPORT void ShGetVariableInfo(const ShHandle handle, -- ShShaderInfo variableType, -- int index, -- size_t* length, -- int* size, -- sh::GLenum* type, -- ShPrecisionType* precision, -- int* staticUse, -- char* name, -- char* mappedName); -- - // Returns information about a name hashing entry from the latest compile. - // Parameters: - // handle: Specifies the compiler -diff --git a/src/compiler/translator/Compiler.cpp b/src/compiler/translator/Compiler.cpp -index 2824064..a93d7e6 100644 ---- a/src/compiler/translator/Compiler.cpp -+++ b/src/compiler/translator/Compiler.cpp -@@ -384,7 +384,6 @@ void TCompiler::clearResults() - uniforms.clear(); - expandedUniforms.clear(); - varyings.clear(); -- expandedVaryings.clear(); - interfaceBlocks.clear(); - - builtInFunctionEmulator.Cleanup(); -@@ -518,10 +517,8 @@ void TCompiler::collectVariables(TIntermNode* root) - symbolTable); - root->traverse(&collect); - -- // For backwards compatiblity with ShGetVariableInfo, expand struct -- // uniforms and varyings into separate variables for each field. -- sh::ExpandVariables(uniforms, &expandedUniforms); -- sh::ExpandVariables(varyings, &expandedVaryings); -+ // This is for enforcePackingRestriction(). -+ sh::ExpandUniforms(uniforms, &expandedUniforms); - } - - bool TCompiler::enforcePackingRestrictions() -diff --git a/src/compiler/translator/Compiler.h b/src/compiler/translator/Compiler.h -index 6d1e225..145ecb4 100644 ---- a/src/compiler/translator/Compiler.h -+++ b/src/compiler/translator/Compiler.h -@@ -72,9 +72,7 @@ class TCompiler : public TShHandleBase - const std::vector<sh::Attribute> &getAttributes() const { return attributes; } - const std::vector<sh::Attribute> &getOutputVariables() const { return outputVariables; } - const std::vector<sh::Uniform> &getUniforms() const { return uniforms; } -- const std::vector<sh::ShaderVariable> &getExpandedUniforms() const { return expandedUniforms; } - const std::vector<sh::Varying> &getVaryings() const { return varyings; } -- const std::vector<sh::ShaderVariable> &getExpandedVaryings() const { return expandedVaryings; } - const std::vector<sh::InterfaceBlock> &getInterfaceBlocks() const { return interfaceBlocks; } - - ShHashFunction64 getHashFunction() const { return hashFunction; } -@@ -144,7 +142,6 @@ class TCompiler : public TShHandleBase - std::vector<sh::Uniform> uniforms; - std::vector<sh::ShaderVariable> expandedUniforms; - std::vector<sh::Varying> varyings; -- std::vector<sh::ShaderVariable> expandedVaryings; - std::vector<sh::InterfaceBlock> interfaceBlocks; - - private: -diff --git a/src/compiler/translator/ShaderLang.cpp b/src/compiler/translator/ShaderLang.cpp -index 144ef90..35dac5f 100644 ---- a/src/compiler/translator/ShaderLang.cpp -+++ b/src/compiler/translator/ShaderLang.cpp -@@ -37,72 +37,6 @@ bool isInitialized = false; - // and the shading language compiler. - // - --static bool CheckVariableMaxLengths(const ShHandle handle, -- size_t expectedValue) --{ -- size_t activeUniformLimit = 0; -- ShGetInfo(handle, SH_ACTIVE_UNIFORM_MAX_LENGTH, &activeUniformLimit); -- size_t activeAttribLimit = 0; -- ShGetInfo(handle, SH_ACTIVE_ATTRIBUTE_MAX_LENGTH, &activeAttribLimit); -- size_t varyingLimit = 0; -- ShGetInfo(handle, SH_VARYING_MAX_LENGTH, &varyingLimit); -- return (expectedValue == activeUniformLimit && -- expectedValue == activeAttribLimit && -- expectedValue == varyingLimit); --} -- --bool CheckMappedNameMaxLength(const ShHandle handle, size_t expectedValue) --{ -- size_t mappedNameMaxLength = 0; -- ShGetInfo(handle, SH_MAPPED_NAME_MAX_LENGTH, &mappedNameMaxLength); -- return (expectedValue == mappedNameMaxLength); --} -- --template <typename VarT> --const sh::ShaderVariable *ReturnVariable(const std::vector<VarT> &infoList, int index) --{ -- if (index < 0 || static_cast<size_t>(index) >= infoList.size()) -- { -- return NULL; -- } -- -- return &infoList[index]; --} -- --const sh::ShaderVariable *GetVariable(const TCompiler *compiler, ShShaderInfo varType, int index) --{ -- switch (varType) -- { -- case SH_ACTIVE_ATTRIBUTES: -- return ReturnVariable(compiler->getAttributes(), index); -- case SH_ACTIVE_UNIFORMS: -- return ReturnVariable(compiler->getExpandedUniforms(), index); -- case SH_VARYINGS: -- return ReturnVariable(compiler->getExpandedVaryings(), index); -- default: -- UNREACHABLE(); -- return NULL; -- } --} -- --ShPrecisionType ConvertPrecision(sh::GLenum precision) --{ -- switch (precision) -- { -- case GL_HIGH_FLOAT: -- case GL_HIGH_INT: -- return SH_PRECISION_HIGHP; -- case GL_MEDIUM_FLOAT: -- case GL_MEDIUM_INT: -- return SH_PRECISION_MEDIUMP; -- case GL_LOW_FLOAT: -- case GL_LOW_INT: -- return SH_PRECISION_LOWP; -- default: -- return SH_PRECISION_UNDEFINED; -- } --} -- - template <typename VarT> - const std::vector<VarT> *GetVariableList(const TCompiler *compiler, ShaderVariableType variableType); - -@@ -315,24 +249,6 @@ void ShGetInfo(const ShHandle handle, ShShaderInfo pname, size_t* params) - case SH_OBJECT_CODE_LENGTH: - *params = compiler->getInfoSink().obj.size() + 1; - break; -- case SH_ACTIVE_UNIFORMS: -- *params = compiler->getExpandedUniforms().size(); -- break; -- case SH_ACTIVE_UNIFORM_MAX_LENGTH: -- *params = 1 + GetGlobalMaxTokenSize(compiler->getShaderSpec()); -- break; -- case SH_ACTIVE_ATTRIBUTES: -- *params = compiler->getAttributes().size(); -- break; -- case SH_ACTIVE_ATTRIBUTE_MAX_LENGTH: -- *params = 1 + GetGlobalMaxTokenSize(compiler->getShaderSpec()); -- break; -- case SH_VARYINGS: -- *params = compiler->getExpandedVaryings().size(); -- break; -- case SH_VARYING_MAX_LENGTH: -- *params = 1 + GetGlobalMaxTokenSize(compiler->getShaderSpec()); -- break; - case SH_MAPPED_NAME_MAX_LENGTH: - // Use longer length than MAX_SHORTENED_IDENTIFIER_SIZE to - // handle array and struct dereferences. -@@ -400,58 +316,6 @@ void ShGetObjectCode(const ShHandle handle, char* objCode) - strcpy(objCode, infoSink.obj.c_str()); - } - --void ShGetVariableInfo(const ShHandle handle, -- ShShaderInfo varType, -- int index, -- size_t* length, -- int* size, -- sh::GLenum* type, -- ShPrecisionType* precision, -- int* staticUse, -- char* name, -- char* mappedName) --{ -- if (!handle || !size || !type || !precision || !staticUse || !name) -- return; -- ASSERT((varType == SH_ACTIVE_ATTRIBUTES) || -- (varType == SH_ACTIVE_UNIFORMS) || -- (varType == SH_VARYINGS)); -- -- TShHandleBase* base = reinterpret_cast<TShHandleBase*>(handle); -- TCompiler* compiler = base->getAsCompiler(); -- if (compiler == 0) -- return; -- -- const sh::ShaderVariable *varInfo = GetVariable(compiler, varType, index); -- if (!varInfo) -- { -- return; -- } -- -- if (length) *length = varInfo->name.size(); -- *size = varInfo->elementCount(); -- *type = varInfo->type; -- *precision = ConvertPrecision(varInfo->precision); -- *staticUse = varInfo->staticUse ? 1 : 0; -- -- // This size must match that queried by -- // SH_ACTIVE_UNIFORM_MAX_LENGTH, SH_ACTIVE_ATTRIBUTE_MAX_LENGTH, SH_VARYING_MAX_LENGTH -- // in ShGetInfo, below. -- size_t variableLength = 1 + GetGlobalMaxTokenSize(compiler->getShaderSpec()); -- ASSERT(CheckVariableMaxLengths(handle, variableLength)); -- strncpy(name, varInfo->name.c_str(), variableLength); -- name[variableLength - 1] = 0; -- if (mappedName) -- { -- // This size must match that queried by -- // SH_MAPPED_NAME_MAX_LENGTH in ShGetInfo, below. -- size_t maxMappedNameLength = 1 + GetGlobalMaxTokenSize(compiler->getShaderSpec()); -- ASSERT(CheckMappedNameMaxLength(handle, maxMappedNameLength)); -- strncpy(mappedName, varInfo->mappedName.c_str(), maxMappedNameLength); -- mappedName[maxMappedNameLength - 1] = 0; -- } --} -- - void ShGetNameHashingEntry(const ShHandle handle, - int index, - char* name, -diff --git a/src/compiler/translator/VariableInfo.cpp b/src/compiler/translator/VariableInfo.cpp -index cd92706..d8e1378 100644 ---- a/src/compiler/translator/VariableInfo.cpp -+++ b/src/compiler/translator/VariableInfo.cpp -@@ -466,9 +466,8 @@ bool CollectVariables::visitBinary(Visit, TIntermBinary *binaryNode) - return true; - } - --template <typename VarT> --void ExpandVariables(const std::vector<VarT> &compact, -- std::vector<ShaderVariable> *expanded) -+void ExpandUniforms(const std::vector<Uniform> &compact, -+ std::vector<ShaderVariable> *expanded) - { - for (size_t variableIndex = 0; variableIndex < compact.size(); variableIndex++) - { -@@ -477,7 +476,4 @@ void ExpandVariables(const std::vector<VarT> &compact, - } - } - --template void ExpandVariables(const std::vector<Uniform> &, std::vector<ShaderVariable> *); --template void ExpandVariables(const std::vector<Varying> &, std::vector<ShaderVariable> *); -- - } -diff --git a/src/compiler/translator/VariableInfo.h b/src/compiler/translator/VariableInfo.h -index 9c6b6ba..92d376d 100644 ---- a/src/compiler/translator/VariableInfo.h -+++ b/src/compiler/translator/VariableInfo.h -@@ -59,10 +59,9 @@ class CollectVariables : public TIntermTraverser - const TSymbolTable &mSymbolTable; - }; - --// Expand struct variables to flattened lists of split variables --template <typename VarT> --void ExpandVariables(const std::vector<VarT> &compact, -- std::vector<ShaderVariable> *expanded); -+// Expand struct uniforms to flattened lists of split variables -+void ExpandUniforms(const std::vector<Uniform> &compact, -+ std::vector<ShaderVariable> *expanded); - - } - diff --git a/commit-4de44cb b/commit-4de44cb deleted file mode 100644 index 4c1c63ecbe83..000000000000 --- a/commit-4de44cb +++ /dev/null @@ -1,747 +0,0 @@ -commit 4de44cb67e9e36966fb1993c0be35659a47182ef -Author: Zhenyao Mo <zmo@chromium.org> -Date: Wed Oct 29 18:03:46 2014 -0700 - - Change ShaderLang APIs from c style to c++ style. - - BUG=angle:816 - TEST=gpu_unittests,angle_unittests,webgl_conformance - - Change-Id: I0b46c11f6055a82511bb946a6dc491360835526e - Reviewed-on: https://chromium-review.googlesource.com/226410 - Reviewed-by: Zhenyao Mo <zmo@chromium.org> - Tested-by: Zhenyao Mo <zmo@chromium.org> - -diff --git a/include/GLSLANG/ShaderLang.h b/include/GLSLANG/ShaderLang.h -index 0c1f8a0..647fed6 100644 ---- a/include/GLSLANG/ShaderLang.h -+++ b/include/GLSLANG/ShaderLang.h -@@ -27,6 +27,10 @@ - - #include "KHR/khrplatform.h" - -+#include <map> -+#include <string> -+#include <vector> -+ - // - // This is the platform independent interface between an OGL driver - // and the shading language compiler. -@@ -42,13 +46,9 @@ typedef unsigned int GLenum; - // Note: make sure to increment ANGLE_SH_VERSION when changing ShaderVars.h - #include "ShaderVars.h" - --#ifdef __cplusplus --extern "C" { --#endif -- - // Version number for shader translation API. - // It is incremented every time the API changes. --#define ANGLE_SH_VERSION 131 -+#define ANGLE_SH_VERSION 132 - - typedef enum { - SH_GLES2_SPEC = 0x8B40, -@@ -88,18 +88,6 @@ typedef enum { - SH_HLSL11_OUTPUT = 0x8B48 - } ShShaderOutput; - --typedef enum { -- SH_INFO_LOG_LENGTH = 0x8B84, -- SH_OBJECT_CODE_LENGTH = 0x8B88, // GL_SHADER_SOURCE_LENGTH -- SH_MAPPED_NAME_MAX_LENGTH = 0x6000, -- SH_NAME_MAX_LENGTH = 0x6001, -- SH_HASHED_NAME_MAX_LENGTH = 0x6002, -- SH_HASHED_NAMES_COUNT = 0x6003, -- SH_SHADER_VERSION = 0x6004, -- SH_RESOURCES_STRING_LENGTH = 0x6005, -- SH_OUTPUT_TYPE = 0x6006 --} ShShaderInfo; -- - // Compile options. - typedef enum { - SH_VALIDATE = 0, -@@ -198,14 +186,14 @@ typedef enum { - // - // Driver must call this first, once, before doing any other - // compiler operations. --// If the function succeeds, the return value is nonzero, else zero. -+// If the function succeeds, the return value is true, else false. - // --COMPILER_EXPORT int ShInitialize(); -+COMPILER_EXPORT bool ShInitialize(); - // - // Driver should call this at shutdown. --// If the function succeeds, the return value is nonzero, else zero. -+// If the function succeeds, the return value is true, else false. - // --COMPILER_EXPORT int ShFinalize(); -+COMPILER_EXPORT bool ShFinalize(); - - // The 64 bits hash function. The first parameter is the input string; the - // second parameter is the string length. -@@ -273,7 +261,7 @@ typedef struct - // Parameters: - // resources: The object to initialize. Will be comparable with memcmp. - // --COMPILER_EXPORT void ShInitBuiltInResources(ShBuiltInResources* resources); -+COMPILER_EXPORT void ShInitBuiltInResources(ShBuiltInResources *resources); - - // - // ShHandle held by but opaque to the driver. It is allocated, -@@ -282,18 +270,15 @@ COMPILER_EXPORT void ShInitBuiltInResources(ShBuiltInResources* resources); - // - // If handle creation fails, 0 will be returned. - // --typedef void* ShHandle; -+typedef void *ShHandle; - - // --// Returns the a concatenated list of the items in ShBuiltInResources as a string. -+// Returns the a concatenated list of the items in ShBuiltInResources as a -+// null-terminated string. - // This function must be updated whenever ShBuiltInResources is changed. - // Parameters: - // handle: Specifies the handle of the compiler to be used. --// outStringLen: Specifies the size of the buffer, in number of characters. The size --// of the buffer required to store the resources string can be obtained --// by calling ShGetInfo with SH_RESOURCES_STRING_LENGTH. --// outStr: Returns a null-terminated string representing all the built-in resources. --COMPILER_EXPORT void ShGetBuiltInResourcesString(const ShHandle handle, size_t outStringLen, char *outStr); -+COMPILER_EXPORT const std::string &ShGetBuiltInResourcesString(const ShHandle handle); - - // - // Driver calls these to create and destroy compiler objects. -@@ -311,12 +296,12 @@ COMPILER_EXPORT ShHandle ShConstructCompiler( - sh::GLenum type, - ShShaderSpec spec, - ShShaderOutput output, -- const ShBuiltInResources* resources); -+ const ShBuiltInResources *resources); - COMPILER_EXPORT void ShDestruct(ShHandle handle); - - // - // Compiles the given shader source. --// If the function succeeds, the return value is nonzero, else zero. -+// If the function succeeds, the return value is true, else false. - // Parameters: - // handle: Specifies the handle of compiler to be used. - // shaderStrings: Specifies an array of pointers to null-terminated strings -@@ -338,74 +323,36 @@ COMPILER_EXPORT void ShDestruct(ShHandle handle); - // SH_VARIABLES: Extracts attributes, uniforms, and varyings. - // Can be queried by calling ShGetVariableInfo(). - // --COMPILER_EXPORT int ShCompile( -+COMPILER_EXPORT bool ShCompile( - const ShHandle handle, -- const char* const shaderStrings[], -+ const char * const shaderStrings[], - size_t numStrings, -- int compileOptions -- ); -+ int compileOptions); - --// Returns a parameter from a compiled shader. --// Parameters: --// handle: Specifies the compiler --// pname: Specifies the parameter to query. --// The following parameters are defined: --// SH_INFO_LOG_LENGTH: the number of characters in the information log --// including the null termination character. --// SH_OBJECT_CODE_LENGTH: the number of characters in the object code --// including the null termination character. --// SH_MAPPED_NAME_MAX_LENGTH: the length of the mapped variable name including --// the null termination character. --// SH_NAME_MAX_LENGTH: the max length of a user-defined name including the --// null termination character. --// SH_HASHED_NAME_MAX_LENGTH: the max length of a hashed name including the --// null termination character. --// SH_HASHED_NAMES_COUNT: the number of hashed names from the latest compile. --// SH_SHADER_VERSION: the version of the shader language --// SH_OUTPUT_TYPE: the currently set language output type --// --// params: Requested parameter --COMPILER_EXPORT void ShGetInfo(const ShHandle handle, -- ShShaderInfo pname, -- size_t* params); -+// Return the version of the shader language. -+COMPILER_EXPORT int ShGetShaderVersion(const ShHandle handle); -+ -+// Return the currently set language output type. -+COMPILER_EXPORT ShShaderOutput ShGetShaderOutputType( -+ const ShHandle handle); - --// Returns nul-terminated information log for a compiled shader. -+// Returns null-terminated information log for a compiled shader. - // Parameters: - // handle: Specifies the compiler --// infoLog: Specifies an array of characters that is used to return --// the information log. It is assumed that infoLog has enough memory --// to accomodate the information log. The size of the buffer required --// to store the returned information log can be obtained by calling --// ShGetInfo with SH_INFO_LOG_LENGTH. --COMPILER_EXPORT void ShGetInfoLog(const ShHandle handle, char* infoLog); -+COMPILER_EXPORT const std::string &ShGetInfoLog(const ShHandle handle); - - // Returns null-terminated object code for a compiled shader. - // Parameters: - // handle: Specifies the compiler --// infoLog: Specifies an array of characters that is used to return --// the object code. It is assumed that infoLog has enough memory to --// accomodate the object code. The size of the buffer required to --// store the returned object code can be obtained by calling --// ShGetInfo with SH_OBJECT_CODE_LENGTH. --COMPILER_EXPORT void ShGetObjectCode(const ShHandle handle, char* objCode); -- --// Returns information about a name hashing entry from the latest compile. -+COMPILER_EXPORT const std::string &ShGetObjectCode(const ShHandle handle); -+ -+// Returns a (original_name, hash) map containing all the user defined -+// names in the shader, including variable names, function names, struct -+// names, and struct field names. - // Parameters: - // handle: Specifies the compiler --// index: Specifies the index of the name hashing entry to be queried. --// name: Returns a null terminated string containing the user defined name. --// It is assumed that name has enough memory to accomodate the name. --// The size of the buffer required to store the user defined name can --// be obtained by calling ShGetInfo with SH_NAME_MAX_LENGTH. --// hashedName: Returns a null terminated string containing the hashed name of --// the uniform variable, It is assumed that hashedName has enough --// memory to accomodate the name. The size of the buffer required --// to store the name can be obtained by calling ShGetInfo with --// SH_HASHED_NAME_MAX_LENGTH. --COMPILER_EXPORT void ShGetNameHashingEntry(const ShHandle handle, -- int index, -- char* name, -- char* hashedName); -+COMPILER_EXPORT const std::map<std::string, std::string> *ShGetNameHashingMap( -+ const ShHandle handle); - - // Shader variable inspection. - // Returns a pointer to a list of variables of the designated type. -@@ -425,17 +372,17 @@ typedef struct - int size; - } ShVariableInfo; - --// Returns 1 if the passed in variables pack in maxVectors following -+// Returns true if the passed in variables pack in maxVectors following - // the packing rules from the GLSL 1.017 spec, Appendix A, section 7. --// Returns 0 otherwise. Also look at the SH_ENFORCE_PACKING_RESTRICTIONS -+// Returns false otherwise. Also look at the SH_ENFORCE_PACKING_RESTRICTIONS - // flag above. - // Parameters: - // maxVectors: the available rows of registers. - // varInfoArray: an array of variable info (types and sizes). - // varInfoArraySize: the size of the variable array. --COMPILER_EXPORT int ShCheckVariablesWithinPackingLimits( -+COMPILER_EXPORT bool ShCheckVariablesWithinPackingLimits( - int maxVectors, -- ShVariableInfo* varInfoArray, -+ ShVariableInfo *varInfoArray, - size_t varInfoArraySize); - - // Gives the compiler-assigned register for an interface block. -@@ -446,7 +393,7 @@ COMPILER_EXPORT int ShCheckVariablesWithinPackingLimits( - // interfaceBlockName: Specifies the interface block - // indexOut: output variable that stores the assigned register - COMPILER_EXPORT bool ShGetInterfaceBlockRegister(const ShHandle handle, -- const char *interfaceBlockName, -+ const std::string &interfaceBlockName, - unsigned int *indexOut); - - // Gives the compiler-assigned register for uniforms in the default -@@ -458,11 +405,7 @@ COMPILER_EXPORT bool ShGetInterfaceBlockRegister(const ShHandle handle, - // interfaceBlockName: Specifies the uniform - // indexOut: output variable that stores the assigned register - COMPILER_EXPORT bool ShGetUniformRegister(const ShHandle handle, -- const char *uniformName, -+ const std::string &uniformName, - unsigned int *indexOut); - --#ifdef __cplusplus --} --#endif -- - #endif // _COMPILER_INTERFACE_INCLUDED_ -diff --git a/src/compiler/translator/Compiler.h b/src/compiler/translator/Compiler.h -index 145ecb4..b6c9d13 100644 ---- a/src/compiler/translator/Compiler.h -+++ b/src/compiler/translator/Compiler.h -@@ -80,7 +80,7 @@ class TCompiler : public TShHandleBase - TSymbolTable& getSymbolTable() { return symbolTable; } - ShShaderSpec getShaderSpec() const { return shaderSpec; } - ShShaderOutput getOutputType() const { return outputType; } -- std::string getBuiltInResourcesString() const { return builtInResourcesString; } -+ const std::string &getBuiltInResourcesString() const { return builtInResourcesString; } - - // Get the resources set by InitBuiltInSymbolTable - const ShBuiltInResources& getResources() const; -diff --git a/src/compiler/translator/ShaderLang.cpp b/src/compiler/translator/ShaderLang.cpp -index 35dac5f..0d6a1d6 100644 ---- a/src/compiler/translator/ShaderLang.cpp -+++ b/src/compiler/translator/ShaderLang.cpp -@@ -84,32 +84,48 @@ const std::vector<VarT> *GetShaderVariables(const ShHandle handle, ShaderVariabl - return GetVariableList<VarT>(compiler, variableType); - } - -+TCompiler *GetCompilerFromHandle(ShHandle handle) -+{ -+ if (!handle) -+ return NULL; -+ TShHandleBase *base = static_cast<TShHandleBase *>(handle); -+ return base->getAsCompiler(); - } - -+TranslatorHLSL *GetTranslatorHLSLFromHandle(ShHandle handle) -+{ -+ if (!handle) -+ return NULL; -+ TShHandleBase *base = static_cast<TShHandleBase *>(handle); -+ return base->getAsTranslatorHLSL(); -+} -+ -+} // namespace anonymous -+ - // - // Driver must call this first, once, before doing any other compiler operations. - // Subsequent calls to this function are no-op. - // --int ShInitialize() -+bool ShInitialize() - { - if (!isInitialized) - { - isInitialized = InitProcess(); - } -- return isInitialized ? 1 : 0; -+ return isInitialized; - } - - // - // Cleanup symbol tables - // --int ShFinalize() -+bool ShFinalize() - { - if (isInitialized) - { - DetachProcess(); - isInitialized = false; - } -- return 1; -+ return true; - } - - // -@@ -190,23 +206,13 @@ void ShDestruct(ShHandle handle) - DeleteCompiler(base->getAsCompiler()); - } - --void ShGetBuiltInResourcesString(const ShHandle handle, size_t outStringLen, char *outString) -+const std::string &ShGetBuiltInResourcesString(const ShHandle handle) - { -- if (!handle || !outString) -- { -- return; -- } -- -- TShHandleBase *base = static_cast<TShHandleBase*>(handle); -- TCompiler *compiler = base->getAsCompiler(); -- if (!compiler) -- { -- return; -- } -- -- strncpy(outString, compiler->getBuiltInResourcesString().c_str(), outStringLen); -- outString[outStringLen - 1] = '\0'; -+ TCompiler *compiler = GetCompilerFromHandle(handle); -+ ASSERT(compiler); -+ return compiler->getBuiltInResourcesString(); - } -+ - // - // Do an actual compile on the given strings. The result is left - // in the given compile object. -@@ -214,149 +220,62 @@ void ShGetBuiltInResourcesString(const ShHandle handle, size_t outStringLen, cha - // Return: The return value of ShCompile is really boolean, indicating - // success or failure. - // --int ShCompile( -+bool ShCompile( - const ShHandle handle, -- const char* const shaderStrings[], -+ const char *const shaderStrings[], - size_t numStrings, - int compileOptions) - { -- if (handle == 0) -- return 0; -- -- TShHandleBase* base = reinterpret_cast<TShHandleBase*>(handle); -- TCompiler* compiler = base->getAsCompiler(); -- if (compiler == 0) -- return 0; -+ TCompiler *compiler = GetCompilerFromHandle(handle); -+ ASSERT(compiler); - -- bool success = compiler->compile(shaderStrings, numStrings, compileOptions); -- return success ? 1 : 0; -+ return compiler->compile(shaderStrings, numStrings, compileOptions); - } - --void ShGetInfo(const ShHandle handle, ShShaderInfo pname, size_t* params) -+int ShGetShaderVersion(const ShHandle handle) - { -- if (!handle || !params) -- return; -- -- TShHandleBase* base = static_cast<TShHandleBase*>(handle); -- TCompiler* compiler = base->getAsCompiler(); -- if (!compiler) return; -+ TCompiler* compiler = GetCompilerFromHandle(handle); -+ ASSERT(compiler); -+ return compiler->getShaderVersion(); -+} - -- switch(pname) -- { -- case SH_INFO_LOG_LENGTH: -- *params = compiler->getInfoSink().info.size() + 1; -- break; -- case SH_OBJECT_CODE_LENGTH: -- *params = compiler->getInfoSink().obj.size() + 1; -- break; -- case SH_MAPPED_NAME_MAX_LENGTH: -- // Use longer length than MAX_SHORTENED_IDENTIFIER_SIZE to -- // handle array and struct dereferences. -- *params = 1 + GetGlobalMaxTokenSize(compiler->getShaderSpec()); -- break; -- case SH_NAME_MAX_LENGTH: -- *params = 1 + GetGlobalMaxTokenSize(compiler->getShaderSpec()); -- break; -- case SH_HASHED_NAME_MAX_LENGTH: -- if (compiler->getHashFunction() == NULL) { -- *params = 0; -- } else { -- // 64 bits hashing output requires 16 bytes for hex -- // representation. -- const char HashedNamePrefix[] = HASHED_NAME_PREFIX; -- (void)HashedNamePrefix; -- *params = 16 + sizeof(HashedNamePrefix); -- } -- break; -- case SH_HASHED_NAMES_COUNT: -- *params = compiler->getNameMap().size(); -- break; -- case SH_SHADER_VERSION: -- *params = compiler->getShaderVersion(); -- break; -- case SH_RESOURCES_STRING_LENGTH: -- *params = compiler->getBuiltInResourcesString().length() + 1; -- break; -- case SH_OUTPUT_TYPE: -- *params = compiler->getOutputType(); -- break; -- default: UNREACHABLE(); -- } -+ShShaderOutput ShGetShaderOutputType(const ShHandle handle) -+{ -+ TCompiler* compiler = GetCompilerFromHandle(handle); -+ ASSERT(compiler); -+ return compiler->getOutputType(); - } - - // - // Return any compiler log of messages for the application. - // --void ShGetInfoLog(const ShHandle handle, char* infoLog) -+const std::string &ShGetInfoLog(const ShHandle handle) - { -- if (!handle || !infoLog) -- return; -+ TCompiler *compiler = GetCompilerFromHandle(handle); -+ ASSERT(compiler); - -- TShHandleBase* base = static_cast<TShHandleBase*>(handle); -- TCompiler* compiler = base->getAsCompiler(); -- if (!compiler) return; -- -- TInfoSink& infoSink = compiler->getInfoSink(); -- strcpy(infoLog, infoSink.info.c_str()); -+ TInfoSink &infoSink = compiler->getInfoSink(); -+ return infoSink.info.str(); - } - - // - // Return any object code. - // --void ShGetObjectCode(const ShHandle handle, char* objCode) -+const std::string &ShGetObjectCode(const ShHandle handle) - { -- if (!handle || !objCode) -- return; -+ TCompiler *compiler = GetCompilerFromHandle(handle); -+ ASSERT(compiler); - -- TShHandleBase* base = static_cast<TShHandleBase*>(handle); -- TCompiler* compiler = base->getAsCompiler(); -- if (!compiler) return; -- -- TInfoSink& infoSink = compiler->getInfoSink(); -- strcpy(objCode, infoSink.obj.c_str()); -+ TInfoSink &infoSink = compiler->getInfoSink(); -+ return infoSink.obj.str(); - } - --void ShGetNameHashingEntry(const ShHandle handle, -- int index, -- char* name, -- char* hashedName) -+const std::map<std::string, std::string> *ShGetNameHashingMap( -+ const ShHandle handle) - { -- if (!handle || !name || !hashedName || index < 0) -- return; -- -- TShHandleBase* base = static_cast<TShHandleBase*>(handle); -- TCompiler* compiler = base->getAsCompiler(); -- if (!compiler) return; -- -- const NameMap& nameMap = compiler->getNameMap(); -- if (index >= static_cast<int>(nameMap.size())) -- return; -- -- NameMap::const_iterator it = nameMap.begin(); -- for (int i = 0; i < index; ++i) -- ++it; -- -- size_t len = it->first.length() + 1; -- size_t max_len = 0; -- ShGetInfo(handle, SH_NAME_MAX_LENGTH, &max_len); -- if (len > max_len) { -- ASSERT(false); -- len = max_len; -- } -- strncpy(name, it->first.c_str(), len); -- // To be on the safe side in case the source is longer than expected. -- name[len - 1] = '\0'; -- -- len = it->second.length() + 1; -- max_len = 0; -- ShGetInfo(handle, SH_HASHED_NAME_MAX_LENGTH, &max_len); -- if (len > max_len) { -- ASSERT(false); -- len = max_len; -- } -- strncpy(hashedName, it->second.c_str(), len); -- // To be on the safe side in case the source is longer than expected. -- hashedName[len - 1] = '\0'; -+ TCompiler *compiler = GetCompilerFromHandle(handle); -+ ASSERT(compiler); -+ return &(compiler->getNameMap()); - } - - const std::vector<sh::Uniform> *ShGetUniforms(const ShHandle handle) -@@ -384,11 +303,11 @@ const std::vector<sh::InterfaceBlock> *ShGetInterfaceBlocks(const ShHandle handl - return GetShaderVariables<sh::InterfaceBlock>(handle, SHADERVAR_INTERFACEBLOCK); - } - --int ShCheckVariablesWithinPackingLimits( -- int maxVectors, ShVariableInfo* varInfoArray, size_t varInfoArraySize) -+bool ShCheckVariablesWithinPackingLimits( -+ int maxVectors, ShVariableInfo *varInfoArray, size_t varInfoArraySize) - { - if (varInfoArraySize == 0) -- return 1; -+ return true; - ASSERT(varInfoArray); - std::vector<sh::ShaderVariable> variables; - for (size_t ii = 0; ii < varInfoArraySize; ++ii) -@@ -397,24 +316,17 @@ int ShCheckVariablesWithinPackingLimits( - variables.push_back(var); - } - VariablePacker packer; -- return packer.CheckVariablesWithinPackingLimits(maxVectors, variables) ? 1 : 0; -+ return packer.CheckVariablesWithinPackingLimits(maxVectors, variables); - } - - bool ShGetInterfaceBlockRegister(const ShHandle handle, -- const char *interfaceBlockName, -+ const std::string &interfaceBlockName, - unsigned int *indexOut) - { -- if (!handle || !interfaceBlockName || !indexOut) -- { -- return false; -- } -+ ASSERT(indexOut); - -- TShHandleBase* base = static_cast<TShHandleBase*>(handle); -- TranslatorHLSL* translator = base->getAsTranslatorHLSL(); -- if (!translator) -- { -- return false; -- } -+ TranslatorHLSL *translator = GetTranslatorHLSLFromHandle(handle); -+ ASSERT(translator); - - if (!translator->hasInterfaceBlock(interfaceBlockName)) - { -@@ -426,20 +338,12 @@ bool ShGetInterfaceBlockRegister(const ShHandle handle, - } - - bool ShGetUniformRegister(const ShHandle handle, -- const char *uniformName, -+ const std::string &uniformName, - unsigned int *indexOut) - { -- if (!handle || !uniformName || !indexOut) -- { -- return false; -- } -- -- TShHandleBase* base = static_cast<TShHandleBase*>(handle); -- TranslatorHLSL* translator = base->getAsTranslatorHLSL(); -- if (!translator) -- { -- return false; -- } -+ ASSERT(indexOut); -+ TranslatorHLSL *translator = GetTranslatorHLSLFromHandle(handle); -+ ASSERT(translator); - - if (!translator->hasUniform(uniformName)) - { -diff --git a/src/libGLESv2/renderer/d3d/ShaderD3D.cpp b/src/libGLESv2/renderer/d3d/ShaderD3D.cpp -index d08a81d..44e73e5 100644 ---- a/src/libGLESv2/renderer/d3d/ShaderD3D.cpp -+++ b/src/libGLESv2/renderer/d3d/ShaderD3D.cpp -@@ -102,7 +102,7 @@ void ShaderD3D::initializeCompiler() - { - if (!mFragmentCompiler) - { -- int result = ShInitialize(); -+ bool result = ShInitialize(); - - if (result) - { -@@ -252,23 +252,16 @@ - result = ShCompile(compiler, sourceStrings, ArraySize(sourceStrings), compileOptions | SH_SOURCE_PATH); - } - -- size_t shaderVersion = 100; -- ShGetInfo(compiler, SH_SHADER_VERSION, &shaderVersion); -+ mShaderVersion = ShGetShaderVersion(compiler); - -- mShaderVersion = static_cast<int>(shaderVersion); -- -- if (shaderVersion == 300 && data.clientVersion < 3) -+ if (mShaderVersion == 300 && data.clientVersion < 3) - { - mInfoLog = "GLSL ES 3.00 is not supported by OpenGL ES 2.0 contexts"; - TRACE("\n%s", mInfoLog.c_str()); - } - else if (result) - { -- size_t objCodeLen = 0; -- ShGetInfo(compiler, SH_OBJECT_CODE_LENGTH, &objCodeLen); -- -- std::vector<char> outputHLSL(objCodeLen); -- ShGetObjectCode(compiler, outputHLSL.data()); -+ mHlsl = ShGetObjectCode(compiler); - - #ifdef _DEBUG - // Prefix hlsl shader with commented out glsl shader -@@ -288,10 +281,8 @@ void ShaderD3D::compileToHLSL(void *compiler, const std::string &source) - curPos = (nextLine == std::string::npos) ? std::string::npos : (nextLine + 1); - } - hlslStream << "\n\n"; -- hlslStream << outputHLSL.data(); -+ hlslStream << mHlsl; - mHlsl = hlslStream.str(); --#else -- mHlsl = outputHLSL.data(); - #endif - - mUniforms = *GetShaderVariables(ShGetUniforms(compiler)); -@@ -303,7 +294,7 @@ void ShaderD3D::compileToHLSL(void *compiler, const std::string &source) - if (uniform.staticUse) - { - unsigned int index = -1; -- bool result = ShGetUniformRegister(compiler, uniform.name.c_str(), &index); -+ bool result = ShGetUniformRegister(compiler, uniform.name, &index); - UNUSED_ASSERTION_VARIABLE(result); - ASSERT(result); - -@@ -320,7 +311,7 @@ void ShaderD3D::compileToHLSL(void *compiler, const std::string &source) - if (interfaceBlock.staticUse) - { - unsigned int index = -1; -- bool result = ShGetInterfaceBlockRegister(compiler, interfaceBlock.name.c_str(), &index); -+ bool result = ShGetInterfaceBlockRegister(compiler, interfaceBlock.name, &index); - UNUSED_ASSERTION_VARIABLE(result); - ASSERT(result); - -@@ -330,14 +321,9 @@ void ShaderD3D::compileToHLSL(void *compiler, const std::string &source) - } - else - { -- size_t infoLogLen = 0; -- ShGetInfo(compiler, SH_INFO_LOG_LENGTH, &infoLogLen); -+ mInfoLog = ShGetInfoLog(compiler); - -- std::vector<char> infoLog(infoLogLen); -- ShGetInfoLog(compiler, infoLog.data()); -- mInfoLog = infoLog.data(); -- -- TRACE("\n%s", infoLog.data()); -+ TRACE("\n%s", mInfoLog.c_str()); - } - } - -@@ -419,10 +405,7 @@ - default: UNREACHABLE(); return SH_HLSL9_OUTPUT; - } - -- size_t outputType = 0; -- ShGetInfo(compiler, SH_OUTPUT_TYPE, &outputType); -- -- return static_cast<ShShaderOutput>(outputType); -+ return ShGetShaderOutputType(compiler); - } - - bool ShaderD3D::compile(const gl::Data &data, const std::string &source) -diff --git a/tests/compiler_tests/ExpressionLimit_test.cpp b/tests/compiler_tests/ExpressionLimit_test.cpp -index 0236064..1dc2be6 100644 ---- a/tests/compiler_tests/ExpressionLimit_test.cpp -+++ b/tests/compiler_tests/ExpressionLimit_test.cpp -@@ -144,19 +144,18 @@ protected: - // substring in the error log. This way we know the error is specific - // to the issue we are testing. - bool CheckShaderCompilation(ShHandle compiler, -- const char* source, -+ const char *source, - int compileOptions, -- const char* expected_error) { -+ const char *expected_error) -+ { - bool success = ShCompile(compiler, &source, 1, compileOptions) != 0; -- if (success) { -+ if (success) -+ { - success = !expected_error; -- } else { -- size_t bufferLen = 0; -- ShGetInfo(compiler, SH_INFO_LOG_LENGTH, &bufferLen); -- char* buffer(new char [bufferLen]); -- ShGetInfoLog(compiler, buffer); -- std::string log(buffer, buffer + bufferLen); -- delete [] buffer; -+ } -+ else -+ { -+ std::string log = ShGetInfoLog(compiler); - if (expected_error) - success = log.find(expected_error) != std::string::npos; - diff --git a/libEGL_mingw32.def b/libEGL_mingw32.def deleted file mode 100644 index 492ad4d0cf76..000000000000 --- a/libEGL_mingw32.def +++ /dev/null @@ -1,41 +0,0 @@ -LIBRARY libEGL -EXPORTS - eglBindAPI@4 @14 - eglBindTexImage@12 @20 - eglChooseConfig@20 @7 - eglCopyBuffers@12 @33 - eglCreateContext@16 @23 - eglCreatePbufferFromClientBuffer@20 @18 - eglCreatePbufferSurface@12 @10 - eglCreatePixmapSurface@16 @11 - eglCreateWindowSurface@16 @9 - eglDestroyContext@8 @24 - eglDestroySurface@8 @12 - eglGetConfigAttrib@16 @8 - eglGetConfigs@16 @6 - eglGetCurrentContext@0 @26 - eglGetCurrentDisplay@0 @28 - eglGetCurrentSurface@4 @27 - eglGetDisplay@4 @2 - eglGetError@0 @1 - eglGetProcAddress@4 @34 - eglInitialize@12 @3 - eglMakeCurrent@16 @25 - eglQueryAPI@0 @15 - eglQueryContext@16 @29 - eglQueryString@8 @5 - eglQuerySurface@16 @13 - eglReleaseTexImage@12 @21 - eglReleaseThread@0 @17 - eglSurfaceAttrib@16 @19 - eglSwapBuffers@8 @32 - eglSwapInterval@8 @22 - eglTerminate@4 @4 - eglWaitClient@0 @16 - eglWaitGL@0 @30 - eglWaitNative@4 @31 - - ; Extensions - eglGetPlatformDisplayEXT@12 @35 - eglQuerySurfacePointerANGLE@16 @36 - eglPostSubBufferNV@24 @37 diff --git a/libGLESv2_mingw32.def b/libGLESv2_mingw32.def deleted file mode 100644 index 18ffcf6a0dff..000000000000 --- a/libGLESv2_mingw32.def +++ /dev/null @@ -1,296 +0,0 @@ -LIBRARY libGLESv2 -EXPORTS - glActiveTexture@4 @1 - glAttachShader@8 @2 - glBindAttribLocation@12 @3 - glBindBuffer@8 @4 - glBindFramebuffer@8 @5 - glBindRenderbuffer@8 @6 - glBindTexture@8 @7 - glBlendColor@16 @8 - glBlendEquation@4 @9 - glBlendEquationSeparate@8 @10 - glBlendFunc@8 @11 - glBlendFuncSeparate@16 @12 - glBufferData@16 @13 - glBufferSubData@16 @14 - glCheckFramebufferStatus@4 @15 - glClear@4 @16 - glClearColor@16 @17 - glClearDepthf@4 @18 - glClearStencil@4 @19 - glColorMask@16 @20 - glCompileShader@4 @21 - glCompressedTexImage2D@32 @22 - glCompressedTexSubImage2D@36 @23 - glCopyTexImage2D@32 @24 - glCopyTexSubImage2D@32 @25 - glCreateProgram@0 @26 - glCreateShader@4 @27 - glCullFace@4 @28 - glDeleteBuffers@8 @29 - glDeleteFramebuffers@8 @30 - glDeleteProgram@4 @32 - glDeleteRenderbuffers@8 @33 - glDeleteShader@4 @34 - glDeleteTextures@8 @31 - glDepthFunc@4 @36 - glDepthMask@4 @37 - glDepthRangef@8 @38 - glDetachShader@8 @35 - glDisable@4 @39 - glDisableVertexAttribArray@4 @40 - glDrawArrays@12 @41 - glDrawElements@16 @42 - glEnable@4 @43 - glEnableVertexAttribArray@4 @44 - glFinish@0 @45 - glFlush@0 @46 - glFramebufferRenderbuffer@16 @47 - glFramebufferTexture2D@20 @48 - glFrontFace@4 @49 - glGenBuffers@8 @50 - glGenFramebuffers@8 @52 - glGenRenderbuffers@8 @53 - glGenTextures@8 @54 - glGenerateMipmap@4 @51 - glGetActiveAttrib@28 @55 - glGetActiveUniform@28 @56 - glGetAttachedShaders@16 @57 - glGetAttribLocation@8 @58 - glGetBooleanv@8 @59 - glGetBufferParameteriv@12 @60 - glGetError@0 @61 - glGetFloatv@8 @62 - glGetFramebufferAttachmentParameteriv@16 @63 - glGetIntegerv@8 @64 - glGetProgramInfoLog@16 @66 - glGetProgramiv@12 @65 - glGetRenderbufferParameteriv@12 @67 - glGetShaderInfoLog@16 @69 - glGetShaderPrecisionFormat@16 @70 - glGetShaderSource@16 @71 - glGetShaderiv@12 @68 - glGetString@4 @72 - glGetTexParameterfv@12 @73 - glGetTexParameteriv@12 @74 - glGetUniformLocation@8 @77 - glGetUniformfv@12 @75 - glGetUniformiv@12 @76 - glGetVertexAttribPointerv@12 @80 - glGetVertexAttribfv@12 @78 - glGetVertexAttribiv@12 @79 - glHint@8 @81 - glIsBuffer@4 @82 - glIsEnabled@4 @83 - glIsFramebuffer@4 @84 - glIsProgram@4 @85 - glIsRenderbuffer@4 @86 - glIsShader@4 @87 - glIsTexture@4 @88 - glLineWidth@4 @89 - glLinkProgram@4 @90 - glPixelStorei@8 @91 - glPolygonOffset@8 @92 - glReadPixels@28 @93 - glReleaseShaderCompiler@0 @94 - glRenderbufferStorage@16 @95 - glSampleCoverage@8 @96 - glScissor@16 @97 - glShaderBinary@20 @98 - glShaderSource@16 @99 - glStencilFunc@12 @100 - glStencilFuncSeparate@16 @101 - glStencilMask@4 @102 - glStencilMaskSeparate@8 @103 - glStencilOp@12 @104 - glStencilOpSeparate@16 @105 - glTexImage2D@36 @106 - glTexParameterf@12 @107 - glTexParameterfv@12 @108 - glTexParameteri@12 @109 - glTexParameteriv@12 @110 - glTexSubImage2D@36 @111 - glUniform1f@8 @112 - glUniform1fv@12 @113 - glUniform1i@8 @114 - glUniform1iv@12 @115 - glUniform2f@12 @116 - glUniform2fv@12 @117 - glUniform2i@12 @118 - glUniform2iv@12 @119 - glUniform3f@16 @120 - glUniform3fv@12 @121 - glUniform3i@16 @122 - glUniform3iv@12 @123 - glUniform4f@20 @124 - glUniform4fv@12 @125 - glUniform4i@20 @126 - glUniform4iv@12 @127 - glUniformMatrix2fv@16 @128 - glUniformMatrix3fv@16 @129 - glUniformMatrix4fv@16 @130 - glUseProgram@4 @131 - glValidateProgram@4 @132 - glVertexAttrib1f@8 @133 - glVertexAttrib1fv@8 @134 - glVertexAttrib2f@12 @135 - glVertexAttrib2fv@8 @136 - glVertexAttrib3f@16 @137 - glVertexAttrib3fv@8 @138 - glVertexAttrib4f@20 @139 - glVertexAttrib4fv@8 @140 - glVertexAttribPointer@24 @141 - glViewport@16 @142 - - ; Extensions - glTexImage3DOES@40 @143 - glBlitFramebufferANGLE@40 @149 - glRenderbufferStorageMultisampleANGLE@20 @150 - glDeleteFencesNV@8 @151 - glFinishFenceNV@4 @152 - glGenFencesNV@8 @153 - glGetFenceivNV@12 @154 - glIsFenceNV@4 @155 - glSetFenceNV@8 @156 - glTestFenceNV@4 @157 - glGetTranslatedShaderSourceANGLE@16 @159 - glTexStorage2DEXT@20 @160 - glGetGraphicsResetStatusEXT@0 @161 - glReadnPixelsEXT@32 @162 - glGetnUniformfvEXT@16 @163 - glGetnUniformivEXT@16 @164 - glGenQueriesEXT@8 @165 - glDeleteQueriesEXT@8 @166 - glIsQueryEXT@4 @167 - glBeginQueryEXT@8 @168 - glEndQueryEXT@4 @169 - glGetQueryivEXT@12 @170 - glGetQueryObjectuivEXT@12 @171 - glVertexAttribDivisorANGLE@8 @172 - glDrawArraysInstancedANGLE@16 @173 - glDrawElementsInstancedANGLE@20 @174 - glProgramBinaryOES@16 @175 - glGetProgramBinaryOES@20 @176 - glDrawBuffersEXT@8 @179 - glMapBufferOES@8 @285 - glUnmapBufferOES@4 @286 - glGetBufferPointervOES@12 @287 - glMapBufferRangeEXT@16 @288 - glFlushMappedBufferRangeEXT@12 @289 - - ; GLES 3.0 Functions - glReadBuffer@4 @180 - glDrawRangeElements@24 @181 - glTexImage3D@40 @182 - glTexSubImage3D@44 @183 - glCopyTexSubImage3D@36 @184 - glCompressedTexImage3D@36 @185 - glCompressedTexSubImage3D@44 @186 - glGenQueries@8 @187 - glDeleteQueries@8 @188 - glIsQuery@4 @189 - glBeginQuery@8 @190 - glEndQuery@4 @191 - glGetQueryiv@12 @192 - glGetQueryObjectuiv@12 @193 - glUnmapBuffer@4 @194 - glGetBufferPointerv@12 @195 - glDrawBuffers@8 @196 - glUniformMatrix2x3fv@16 @197 - glUniformMatrix3x2fv@16 @198 - glUniformMatrix2x4fv@16 @199 - glUniformMatrix4x2fv@16 @200 - glUniformMatrix3x4fv@16 @201 - glUniformMatrix4x3fv@16 @202 - glBlitFramebuffer@40 @203 - glRenderbufferStorageMultisample@20 @204 - glFramebufferTextureLayer@20 @205 - glMapBufferRange@16 @206 - glFlushMappedBufferRange@12 @207 - glBindVertexArray@4 @208 - glDeleteVertexArrays@8 @209 - glGenVertexArrays@8 @210 - glIsVertexArray@4 @211 - glGetIntegeri_v@12 @212 - glBeginTransformFeedback@4 @213 - glEndTransformFeedback@0 @214 - glBindBufferRange@20 @215 - glBindBufferBase@12 @216 - glTransformFeedbackVaryings@16 @217 - glGetTransformFeedbackVarying@28 @218 - glVertexAttribIPointer@20 @219 - glGetVertexAttribIiv@12 @220 - glGetVertexAttribIuiv@12 @221 - glVertexAttribI4i@20 @222 - glVertexAttribI4ui@20 @223 - glVertexAttribI4iv@8 @224 - glVertexAttribI4uiv@8 @225 - glGetUniformuiv@12 @226 - glGetFragDataLocation@8 @227 - glUniform1ui@8 @228 - glUniform2ui@12 @229 - glUniform3ui@16 @230 - glUniform4ui@20 @231 - glUniform1uiv@12 @232 - glUniform2uiv@12 @233 - glUniform3uiv@12 @234 - glUniform4uiv@12 @235 - glClearBufferiv@12 @236 - glClearBufferuiv@12 @237 - glClearBufferfv@12 @238 - glClearBufferfi@16 @239 - glGetStringi@8 @240 - glCopyBufferSubData@20 @241 - glGetUniformIndices@16 @242 - glGetActiveUniformsiv@20 @243 - glGetUniformBlockIndex@8 @244 - glGetActiveUniformBlockiv@16 @245 - glGetActiveUniformBlockName@20 @246 - glUniformBlockBinding@12 @247 - glDrawArraysInstanced@16 @248 - glDrawElementsInstanced@20 @249 - glFenceSync@8 @250 - glIsSync@4 @251 - glDeleteSync@4 @252 - glClientWaitSync@16 @253 - glWaitSync@16 @254 - glGetInteger64v@8 @255 - glGetSynciv@20 @256 - glGetInteger64i_v@12 @257 - glGetBufferParameteri64v@12 @258 - glGenSamplers@8 @259 - glDeleteSamplers@8 @260 - glIsSampler@4 @261 - glBindSampler@8 @262 - glSamplerParameteri@12 @263 - glSamplerParameteriv@12 @264 - glSamplerParameterf@12 @265 - glSamplerParameterfv@12 @266 - glGetSamplerParameteriv@12 @267 - glGetSamplerParameterfv@12 @268 - glVertexAttribDivisor@8 @269 - glBindTransformFeedback@8 @270 - glDeleteTransformFeedbacks@8 @271 - glGenTransformFeedbacks@8 @272 - glIsTransformFeedback@4 @273 - glPauseTransformFeedback@0 @274 - glResumeTransformFeedback@0 @275 - glGetProgramBinary@20 @276 - glProgramBinary@16 @277 - glProgramParameteri@12 @278 - glInvalidateFramebuffer@12 @279 - glInvalidateSubFramebuffer@28 @280 - glTexStorage2D@20 @281 - glTexStorage3D@24 @282 - glGetInternalformativ@20 @283 - - ; EGL dependencies - glCreateContext @144 NONAME - glDestroyContext @145 NONAME - glMakeCurrent @146 NONAME - glGetCurrentContext @147 NONAME - glGetProcAddress@4 @148 NONAME - glBindTexImage@4 @158 NONAME - glCreateRenderer @177 NONAME - glDestroyRenderer @178 NONAME |