--- a/gfx/angle/AUTHORS
+++ b/gfx/angle/AUTHORS
@@ -8,16 +8,18 @@
# Email addresses for individuals are tracked elsewhere to avoid spam.
Google Inc.
TransGaming Inc.
3DLabs Inc. Ltd.
Adobe Systems Inc.
Autodesk, Inc.
+BlackBerry Limited
+Cable Television Laboratories, Inc.
Cloud Party, Inc.
Intel Corporation
Mozilla Corporation
Turbulenz
Klarälvdalens Datakonsult AB
Jacek Caban
Mark Callow
--- a/gfx/angle/CONTRIBUTORS
+++ b/gfx/angle/CONTRIBUTORS
@@ -1,76 +1,77 @@
-# This is the official list of people who can contribute
-# (and who have contributed) code to the ANGLE project
-# repository.
-# The AUTHORS file lists the copyright holders; this file
-# lists people. For example, Google employees are listed here
-# but not in AUTHORS, because Google holds the copyright.
-#
-
-TransGaming Inc.
- Nicolas Capens
- Daniel Koch
- Geoff Lang
- Andrew Lewycky
- Jamie Madill
- Gavriel State
- Shannon Woods
-
-Google Inc.
- Brent Austin
- Michael Bai
- John Bauman
- Peter Beverloo
- Steve Block
- Rachel Blum
- Eric Boren
- Henry Bridge
- Nat Duca
- Peter Kasting
- Vangelis Kokkevis
- Zhenyao Mo
- Daniel Nicoara
- Alastair Patrick
- Alok Priyadarshi
- Kenneth Russell
- Brian Salomon
- Gregg Tavares
- Jeff Timanus
- Ben Vanik
- Adrienne Walker
- thestig@chromium.org
- Justin Schuh
-
-Adobe Systems Inc.
- Alexandru Chiculita
- Steve Minns
- Max Vujovic
-
-Autodesk, Inc.
- Ranger Harke
-
-Cloud Party, Inc.
- Conor Dickinson
-
-Intel Corporation
- Jin Yang
- Andy Chen
- Josh Triplett
-
-Klarälvdalens Datakonsult AB
- Milian Wolff
-
-Mozilla Corp.
- Ehsan Akhgari
- Jeff Gilbert
- Mike Hommey
- Benoit Jacob
- Makoto Kato
- Vladimir Vukicevic
-
-Turbulenz
- Michael Braithwaite
-
-Ulrik Persson (ddefrostt)
-Mark Banner (standard8mbp)
-David Kilzer
-
+# This is the official list of people who can contribute
+# (and who have contributed) code to the ANGLE project
+# repository.
+# The AUTHORS file lists the copyright holders; this file
+# lists people. For example, Google employees are listed here
+# but not in AUTHORS, because Google holds the copyright.
+#
+
+TransGaming Inc.
+ Nicolas Capens
+ Daniel Koch
+ Geoff Lang
+ Andrew Lewycky
+ Jamie Madill
+ Gavriel State
+ Shannon Woods
+
+Google Inc.
+ Brent Austin
+ Michael Bai
+ John Bauman
+ Peter Beverloo
+ Steve Block
+ Rachel Blum
+ Eric Boren
+ Henry Bridge
+ Nat Duca
+ Peter Kasting
+ Vangelis Kokkevis
+ Zhenyao Mo
+ Daniel Nicoara
+ Alastair Patrick
+ Alok Priyadarshi
+ Kenneth Russell
+ Brian Salomon
+ Gregg Tavares
+ Jeff Timanus
+ Ben Vanik
+ Adrienne Walker
+ thestig@chromium.org
+ Justin Schuh
+ Scott Graham
+
+Adobe Systems Inc.
+ Alexandru Chiculita
+ Steve Minns
+ Max Vujovic
+
+Autodesk, Inc.
+ Ranger Harke
+
+Cloud Party, Inc.
+ Conor Dickinson
+
+Intel Corporation
+ Jin Yang
+ Andy Chen
+ Josh Triplett
+
+Klarälvdalens Datakonsult AB
+ Milian Wolff
+
+Mozilla Corp.
+ Ehsan Akhgari
+ Jeff Gilbert
+ Mike Hommey
+ Benoit Jacob
+ Makoto Kato
+ Vladimir Vukicevic
+
+Turbulenz
+ Michael Braithwaite
+
+Ulrik Persson (ddefrostt)
+Mark Banner (standard8mbp)
+David Kilzer
+
--- a/gfx/angle/DEPS
+++ b/gfx/angle/DEPS
@@ -1,18 +1,18 @@
deps = {
- "trunk/third_party/gyp":
- "http://gyp.googlecode.com/svn/trunk@1564",
+ "third_party/gyp":
+ "http://gyp.googlecode.com/svn/trunk@1806",
- "trunk/third_party/googletest":
- "http://googletest.googlecode.com/svn/trunk@573", #release 1.6.0
+ "tests/third_party/googletest":
+ "http://googletest.googlecode.com/svn/trunk@629",
- "trunk/third_party/googlemock":
- "http://googlemock.googlecode.com/svn/trunk@387", #release 1.6.0
+ "tests/third_party/googlemock":
+ "http://googlemock.googlecode.com/svn/trunk@410",
}
hooks = [
{
# A change to a .gyp, .gypi, or to GYP itself should run the generator.
"pattern": ".",
- "action": ["python", "trunk/build/gyp_angle"],
+ "action": ["python", "build/gyp_angle"],
},
]
--- a/gfx/angle/README.mozilla
+++ b/gfx/angle/README.mozilla
@@ -1,217 +1,35 @@
-This is the ANGLE project, from http://code.google.com/p/angleproject/
-
-Current revision: f3fc6571dca9832876e09c63b0958d413737757b
-Date of revision: 2013-08-02
-
-== Applied local patches ==
-In this order:
- angle-build-stdcall-alias.patch:
- Fix an issue GCC has with linking to undecorated stdcalls.
+This is the ANGLE project, originally from https://chromium.googlesource.com/angle/angle
- angle-build-dedupe-debug-cpp-h.patch:
- Rename: "src/compiler/debug.{cpp,h}"
- To: "src/compiler/compiler_debug.{cpp,h}"
- Repair includes accordingly.
+The Mozilla upstream is the 'mozilla' branch from https://github.com/mozilla/angle, which
+includes Mozilla-specific patches on top of upstream.
- angle-build-d3dcompiler-list.patch:
- Move `ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES` define from make files to
- Renderer.cpp, where it's used.
-
- angle-build-khrplatform-h-path.patch:
- Fix include path for khrplatform.h.
+=== How to upgrade ANGLE ===
- angle-build-case-sensitive.patch
- Fixes cross compilation on case sensitive OSes.
-
- angle-build-dedupe-uniform-cpp-h.patch:
- Rename: "src/compiler/Uniform.{cpp,h}"
- To: "src/compiler/CompilerUniform.{cpp,h}"
- Repair includes accordingly.
-
- angle-build-ttype.patch:
- Remove bit-field markings for TType, since GCC4.7 emits a default
- copy constructor which fails to compile.
+1. git clone https://github.com/mozilla/angle angle
- angle-long-ident-hash.patch:
- Use MurmurHash3 for long identifier hashing. See bug 676071, where we used
- Spooky Hash, before ANGLE came with MurmurHash3.
+2. Go into the angle dir, and add the google upstream as a remote:
+ git remote add google https://chromium.googlesource.com/angle/angle
- angle-faceforward-emu.patch:
- Adds emulation for faceforward(float,float,float), which is needed to
- prevent crashing on Mac+Intel. See bug 771406.
-
- angle-default-clamp-strat.patch:
- Fixes TCompiler::Init to treat `resources.ArrayIndexClampingStrategy`
- as a request for the default strategy.
-
- angle-tex-pool-default.patch:
- Don't use D3DPOOL_MANAGED on D3D9. Just use D3DPOOL_DEFAULT.
+3. Fetch the new google upstream:
+ git fetch google
- angle-build-unified.patch:
- Fixes required to make angle compile in unified mode
- Note that a different version of this patch was upstreamed, so the next time that
- Angle is updated this patch can be discarded. See:
- https://chromium.googlesource.com/angle/angle/+/0dd3b3ff66cdc50882125d21e60112d5161279b4
- https://chromium.googlesource.com/angle/angle/+/0685fbde65a3e90d8d4d4a6c72f2cc1771617fd0
-
- angle-fix-vc12.patch:
- Fixes angle to build on Visual Studio 2013
+4. Switch to the mozilla branch
+ git checkout mozilla
- angle-d3dcc47.patch:
- Tell ANGLE about d3dcompiler_47.dll from WinSDK 8.1.
-
- angle-fix-issue-651.patch:
- Fixes crash in TSymbolTableLevel::~TSymbolTableLevel with GCC 4.9
-
-In addition to these patches, the Makefile.in and moz.build build files are ours,
-they're not present in upsteam ANGLE. Therefore, changes made to the build files
-should not be stored in the local .patch files.
-
+5. Rebase the mozilla branch on top of the new google master. Fix up patches along the way,
+ remove unneded commits.
+ git rebase -i google/master
-== How to do a clean-slate upgrade ==
-1. Backup our moz-specific files:
- README.mozilla
- Makefile.in
- moz.build
- *.patch
- src/libEGL/Makefile.in
- src/libEGL/moz.build
- src/libGLESv2/Makefile.in
- src/libGLESv2/moz.build
+6. Re-generate moz.build files:
+ ./gyp_mozbuild
-2. $ rm -rf gfx/angle
+7. nuke mozilla-central/gfx/angle directory
-3. Copy the folder containing the angle rev you want onto gfx/angle.
- $ svn export -r <rev> <src> <moz-central>/gfx/angle
- Or:
- $ git checkout-index --prefix <moz-central>/gfx/angle/ -a
-
-4. Fold our moz-specific files into this new angle folder. (Makefiles, README)
-4a. Remove the unused files. (test/, samples/, msvc files)
+8. copy all the relevant files from the github checkout
+ cd mozilla-central
+ mkdir gfx/angle
+ cp -r /c/proj/angle/[A-Z]* /c/proj/angle/{include,src,moz.build} gfx/angle
-5. Clear out the "Applied Local Patches" section above, since we're going to
- repopulate it.
-
-6. Re-apply the angle-build-*.patch files and record them above.
-
-7. Update the Makefile.in files with the current deps from the .gyp(i) files.
-
-8. Build. Fix things until it builds.
-
-9. Reapply the rest of the .patch files and record them above.
+9. Build. Fix things until it builds.
10. Try runs and reviews!
-
-
-== Applying Diffs ==
-In general:
-$ patch -p1 -R < gfx/angle/angle-some-bug-fix.patch
-
-SVN diffs however can be iffy. They don't seem to be completely compatible
-with `patch`. Be aware that you'll likely get rejects whenever a file is
-removed.
-
-
-
-== How to do an incremental update ==
-Same general idea here, but instead of nuking the ANGLE dir, we're going to
-have to get a diff between revs from SVN, and deal with applying that. We
-also naturally have to peel off our local patches before we can apply a diff
-from upstream.
-
-1. Unapply patches
-
-Unapply them in reverse order, so iterate over the above list of applied patch
-starting from the bottom. You most likely want to record these patch-unapply
-operations as individual patches themselves, in order to re-apply patches later.
-
-$ cd /path/to/mozilla-central
-
-$ patch -p1 -R < gfx/angle/angle-some-bug-fix.patch
-$ hg qnew unapply-angle-some-bug-fix.patch
-
-2. Apply diff with new ANGLE version
-
-Check at the top of this file what ANGLE revision we currently have. Let's say it's
-r123. Check at the ANGLE Web site what recent revisions look like to figure what
-revision seems safe. Let's say we want r456.
-
-$ cd
-$ svn checkout http://angleproject.googlecode.com/svn/trunk/ angleproject
-$ cd angleproject
-$ svn diff -r 123:456 > ~/angle-diff-from-123-to-456
-$ cd /path/to/mozilla-central
-$ cd gfx/angle
-$ patch -p0 < ~/angle-diff-from-123-to-456
-$ cd ../..
-$ hg status
-# hg add any new ANGLE files under gfx/angle
-$ hg qnew angle-diff-from-123-to-456
-
-3. Reapply patches
-
-You may have to skip reapplying certain patches there, for example if they have
-been integrated into ANGLE since our last update. The short patch descriptions above
-in this file should help you make that decision.
-
-If you have recorded the individual patch unapply operations in step 1 as separate
-Mercurial patches, this will be easy, just apply the inverse patches now, in reverse
-order:
-
-$ patch -p1 -R < .hg/patches/unapply-angle-some-bug-fix.patch
-$ hg status
-# hg add any new ANGLE files under gfx/angle
-$ hg qnew angle-some-bug-fix.patch
-
-Note that here you need to proceed in the reverse order of what you did in step 1.
-
-4. Update our Makefiles
-
-Open your ANGLE diff file (~/angle-diff-from-123-to-456), search for GYP files
-(e.g. build_angle.gyp), it's easy-to-read JSON. It may list additions of new files,
-or removal of old files. You have to reflect this in our Makefiles:
-
-gfx/angle/Makefile.in
-gfx/angle/src/libEGL/Makefile.in
-gfx/angle/src/libGLESv2/Makefile.in
-
-The first one is our main Makefile. It has basically the ANGLE shader compiler.
-Changes there will typically have to be applied also to the two other Makefiles.
-These two other Makefiles are Windows-only and build the ANGLE GLES2-on-top-of-D3D
-implementation.
-
-5. Update patch files
-
-Something like:
-
-$ cp .hg/patches/angle-some-bug-fix.patch gfx/angle
-
-For each patch that you reapplied.
-
-If a patch was removed (not reapplied), remove the corresponding patch file.
-
-6. Update this README.mozilla
-
-You'll have to update at least the ANGLE revision number and probably the patch
-list as well.
-
-7. Push to Try
-
-Make sure to test both Windows and non-Windows, and enable mochitest-1 in your
-Try options. You may want reftest as well, as we have WebGL reftests.
-
-8. Get reviews.
-
-Typically, you would get review on your Makefiles patch, and any
-new patches that you need to add to get this update to work.
-
-You do not need a review for the ANGLE diff itself and for trivial updates of
-existing patches.
-
-
-== Visual Studio Solution Files ==
-Ignore these. We don't use them anymore. We use custom Makefiles.
-
-
-== Generated parser code==
-Don't bother about that anymore. The parser is now generated and included in the ANGLE svn repo.
deleted file mode 100644
--- a/gfx/angle/angle-build-case-sensitive.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From: Jeff Gilbert <jgilbert@mozilla.com>
-* * *
-Bug 840577 - Fix ANGLE cross compilation on case sensitive OSes, relanded
-
-diff --git a/gfx/angle/src/libGLESv2/precompiled.h b/gfx/angle/src/libGLESv2/precompiled.h
---- a/gfx/angle/src/libGLESv2/precompiled.h
-+++ b/gfx/angle/src/libGLESv2/precompiled.h
-@@ -30,13 +30,13 @@
- #include <sstream>
- #include <string>
- #include <unordered_map>
- #include <vector>
-
- #include <d3d9.h>
- #include <D3D11.h>
- #include <dxgi.h>
--#include <D3Dcompiler.h>
-+#include <d3dcompiler.h>
-
- #ifdef _MSC_VER
- #include <hash_map>
- #endif
deleted file mode 100644
--- a/gfx/angle/angle-build-d3dcompiler-list.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From: Jeff Gilbert <jgilbert@mozilla.com>
-
-diff --git a/gfx/angle/src/libGLESv2/renderer/Renderer.cpp b/gfx/angle/src/libGLESv2/renderer/Renderer.cpp
---- a/gfx/angle/src/libGLESv2/renderer/Renderer.cpp
-+++ b/gfx/angle/src/libGLESv2/renderer/Renderer.cpp
-@@ -15,16 +15,23 @@
- #include "libGLESv2/renderer/Renderer11.h"
- #include "libGLESv2/utilities.h"
-
- #if !defined(ANGLE_ENABLE_D3D11)
- // Enables use of the Direct3D 11 API for a default display, when available
- #define ANGLE_ENABLE_D3D11 0
- #endif
-
-+#define ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES \
-+ { \
-+ TEXT("d3dcompiler_46.dll"), \
-+ TEXT("d3dcompiler_43.dll") \
-+ }
-+
-+
- namespace rx
- {
-
- Renderer::Renderer(egl::Display *display) : mDisplay(display)
- {
- mD3dCompilerModule = NULL;
- mD3DCompileFunc = NULL;
- }
-@@ -212,9 +219,9 @@ rx::Renderer *glCreateRenderer(egl::Disp
- return NULL;
- }
-
- void glDestroyRenderer(rx::Renderer *renderer)
- {
- delete renderer;
- }
-
--}
-\ No newline at end of file
-+}
deleted file mode 100644
--- a/gfx/angle/angle-build-dedupe-debug-cpp-h.patch
+++ /dev/null
@@ -1,180 +0,0 @@
-From: Jeff Gilbert <jgilbert@mozilla.com>
-
-diff --git a/gfx/angle/src/compiler/Diagnostics.cpp b/gfx/angle/src/compiler/Diagnostics.cpp
---- a/gfx/angle/src/compiler/Diagnostics.cpp
-+++ b/gfx/angle/src/compiler/Diagnostics.cpp
-@@ -1,17 +1,17 @@
- //
- // Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- //
-
- #include "compiler/Diagnostics.h"
-
--#include "compiler/debug.h"
-+#include "compiler/compiler_debug.h"
- #include "compiler/InfoSink.h"
- #include "compiler/preprocessor/SourceLocation.h"
-
- TDiagnostics::TDiagnostics(TInfoSink& infoSink) :
- mInfoSink(infoSink),
- mNumErrors(0),
- mNumWarnings(0)
- {
-diff --git a/gfx/angle/src/compiler/DirectiveHandler.cpp b/gfx/angle/src/compiler/DirectiveHandler.cpp
---- a/gfx/angle/src/compiler/DirectiveHandler.cpp
-+++ b/gfx/angle/src/compiler/DirectiveHandler.cpp
-@@ -3,17 +3,17 @@
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- //
-
- #include "compiler/DirectiveHandler.h"
-
- #include <sstream>
-
--#include "compiler/debug.h"
-+#include "compiler/compiler_debug.h"
- #include "compiler/Diagnostics.h"
-
- static TBehavior getBehavior(const std::string& str)
- {
- static const std::string kRequire("require");
- static const std::string kEnable("enable");
- static const std::string kDisable("disable");
- static const std::string kWarn("warn");
-diff --git a/gfx/angle/src/compiler/OutputGLSLBase.cpp b/gfx/angle/src/compiler/OutputGLSLBase.cpp
---- a/gfx/angle/src/compiler/OutputGLSLBase.cpp
-+++ b/gfx/angle/src/compiler/OutputGLSLBase.cpp
-@@ -1,16 +1,16 @@
- //
- // Copyright (c) 2002-2011 The ANGLE Project Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- //
-
- #include "compiler/OutputGLSLBase.h"
--#include "compiler/debug.h"
-+#include "compiler/compiler_debug.h"
-
- #include <cfloat>
-
- namespace
- {
- TString arrayBrackets(const TType& type)
- {
- ASSERT(type.isArray());
-diff --git a/gfx/angle/src/compiler/OutputHLSL.cpp b/gfx/angle/src/compiler/OutputHLSL.cpp
---- a/gfx/angle/src/compiler/OutputHLSL.cpp
-+++ b/gfx/angle/src/compiler/OutputHLSL.cpp
-@@ -2,17 +2,17 @@
- // Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- //
-
- #include "compiler/OutputHLSL.h"
-
- #include "common/angleutils.h"
--#include "compiler/debug.h"
-+#include "compiler/compiler_debug.h"
- #include "compiler/DetectDiscontinuity.h"
- #include "compiler/InfoSink.h"
- #include "compiler/SearchSymbol.h"
- #include "compiler/UnfoldShortCircuit.h"
-
- #include <algorithm>
- #include <cfloat>
- #include <stdio.h>
-diff --git a/gfx/angle/src/compiler/Types.h b/gfx/angle/src/compiler/Types.h
---- a/gfx/angle/src/compiler/Types.h
-+++ b/gfx/angle/src/compiler/Types.h
-@@ -6,17 +6,17 @@
-
- #ifndef _TYPES_INCLUDED
- #define _TYPES_INCLUDED
-
- #include "common/angleutils.h"
-
- #include "compiler/BaseTypes.h"
- #include "compiler/Common.h"
--#include "compiler/debug.h"
-+#include "compiler/compiler_debug.h"
-
- struct TPublicType;
- class TType;
-
- class TField
- {
- public:
- POOL_ALLOCATOR_NEW_DELETE();
-diff --git a/gfx/angle/src/compiler/debug.cpp b/gfx/angle/src/compiler/compiler_debug.cpp
-rename from gfx/angle/src/compiler/debug.cpp
-rename to gfx/angle/src/compiler/compiler_debug.cpp
---- a/gfx/angle/src/compiler/debug.cpp
-+++ b/gfx/angle/src/compiler/compiler_debug.cpp
-@@ -1,17 +1,17 @@
- //
- // Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- //
-
--// debug.cpp: Debugging utilities.
-+// compiler_debug.cpp: Debugging utilities.
-
--#include "compiler/debug.h"
-+#include "compiler/compiler_debug.h"
-
- #include <stdarg.h>
- #include <stdio.h>
-
- #include "compiler/InitializeParseContext.h"
- #include "compiler/ParseHelper.h"
-
- static const int kTraceBufferLen = 1024;
-diff --git a/gfx/angle/src/compiler/debug.h b/gfx/angle/src/compiler/compiler_debug.h
-rename from gfx/angle/src/compiler/debug.h
-rename to gfx/angle/src/compiler/compiler_debug.h
---- a/gfx/angle/src/compiler/debug.h
-+++ b/gfx/angle/src/compiler/compiler_debug.h
-@@ -1,15 +1,15 @@
- //
- // Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- //
-
--// debug.h: Debugging utilities.
-+// compiler_debug.h: Debugging utilities.
-
- #ifndef COMPILER_DEBUG_H_
- #define COMPILER_DEBUG_H_
-
- #include <assert.h>
-
- #ifdef _DEBUG
- #define TRACE_ENABLED // define to enable debug message tracing
-diff --git a/gfx/angle/src/compiler/osinclude.h b/gfx/angle/src/compiler/osinclude.h
---- a/gfx/angle/src/compiler/osinclude.h
-+++ b/gfx/angle/src/compiler/osinclude.h
-@@ -30,17 +30,17 @@
- #include <windows.h>
- #elif defined(ANGLE_OS_POSIX)
- #include <pthread.h>
- #include <semaphore.h>
- #include <errno.h>
- #endif // ANGLE_OS_WIN
-
-
--#include "compiler/debug.h"
-+#include "compiler/compiler_debug.h"
-
- //
- // Thread Local Storage Operations
- //
- #if defined(ANGLE_OS_WIN)
- typedef DWORD OS_TLSIndex;
- #define OS_INVALID_TLS_INDEX (TLS_OUT_OF_INDEXES)
- #elif defined(ANGLE_OS_POSIX)
deleted file mode 100644
--- a/gfx/angle/angle-build-dedupe-uniform-cpp-h.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From: Jeff Gilbert <jgilbert@mozilla.com>
-
-diff --git a/gfx/angle/src/compiler/Uniform.cpp b/gfx/angle/src/compiler/CompilerUniform.cpp
-rename from gfx/angle/src/compiler/Uniform.cpp
-rename to gfx/angle/src/compiler/CompilerUniform.cpp
---- a/gfx/angle/src/compiler/Uniform.cpp
-+++ b/gfx/angle/src/compiler/CompilerUniform.cpp
-@@ -1,15 +1,15 @@
- //
- // Copyright (c) 2013 The ANGLE Project Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- //
-
--#include "compiler/Uniform.h"
-+#include "CompilerUniform.h"
-
- namespace sh
- {
-
- Uniform::Uniform(GLenum type, GLenum precision, const char *name, int arraySize, int registerIndex)
- {
- this->type = type;
- this->precision = precision;
-diff --git a/gfx/angle/src/compiler/Uniform.h b/gfx/angle/src/compiler/CompilerUniform.h
-rename from gfx/angle/src/compiler/Uniform.h
-rename to gfx/angle/src/compiler/CompilerUniform.h
-diff --git a/gfx/angle/src/compiler/OutputHLSL.h b/gfx/angle/src/compiler/OutputHLSL.h
---- a/gfx/angle/src/compiler/OutputHLSL.h
-+++ b/gfx/angle/src/compiler/OutputHLSL.h
-@@ -11,17 +11,17 @@
- #include <set>
- #include <map>
-
- #define GL_APICALL
- #include <GLES2/gl2.h>
-
- #include "compiler/intermediate.h"
- #include "compiler/ParseHelper.h"
--#include "compiler/Uniform.h"
-+#include "compiler/CompilerUniform.h"
-
- namespace sh
- {
- class UnfoldShortCircuit;
-
- class OutputHLSL : public TIntermTraverser
- {
- public:
-diff --git a/gfx/angle/src/compiler/TranslatorHLSL.h b/gfx/angle/src/compiler/TranslatorHLSL.h
---- a/gfx/angle/src/compiler/TranslatorHLSL.h
-+++ b/gfx/angle/src/compiler/TranslatorHLSL.h
-@@ -3,17 +3,17 @@
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- //
-
- #ifndef COMPILER_TRANSLATORHLSL_H_
- #define COMPILER_TRANSLATORHLSL_H_
-
- #include "compiler/ShHandle.h"
--#include "compiler/Uniform.h"
-+#include "compiler/CompilerUniform.h"
-
- class TranslatorHLSL : public TCompiler {
- public:
- TranslatorHLSL(ShShaderType type, ShShaderSpec spec, ShShaderOutput output);
-
- virtual TranslatorHLSL *getAsTranslatorHLSL() { return this; }
- const sh::ActiveUniforms &getUniforms() { return mActiveUniforms; }
-
-diff --git a/gfx/angle/src/libGLESv2/Shader.h b/gfx/angle/src/libGLESv2/Shader.h
---- a/gfx/angle/src/libGLESv2/Shader.h
-+++ b/gfx/angle/src/libGLESv2/Shader.h
-@@ -13,17 +13,17 @@
- #define LIBGLESV2_SHADER_H_
-
- #define GL_APICALL
- #include <GLES2/gl2.h>
- #include <string>
- #include <list>
- #include <vector>
-
--#include "compiler/Uniform.h"
-+#include "compiler/CompilerUniform.h"
- #include "common/angleutils.h"
-
- namespace rx
- {
- class Renderer;
- }
-
- namespace gl
deleted file mode 100644
--- a/gfx/angle/angle-build-khrplatform-h-path.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From: Jeff Gilbert <jgilbert@mozilla.com>
-
-diff --git a/gfx/angle/include/GLSLANG/ShaderLang.h b/gfx/angle/include/GLSLANG/ShaderLang.h
---- a/gfx/angle/include/GLSLANG/ShaderLang.h
-+++ b/gfx/angle/include/GLSLANG/ShaderLang.h
-@@ -18,17 +18,17 @@
- #else // defined(WIN32)
- #define COMPILER_EXPORT __attribute__((visibility("default")))
- #endif
-
- #else // defined(COMPONENT_BUILD)
- #define COMPILER_EXPORT
- #endif
-
--#include "KHR/khrplatform.h"
-+#include "khrplatform.h"
- #include <stddef.h>
-
- //
- // This is the platform independent interface between an OGL driver
- // and the shading language compiler.
- //
-
- #ifdef __cplusplus
deleted file mode 100644
--- a/gfx/angle/angle-build-mingw.patch
+++ /dev/null
@@ -1,201 +0,0 @@
-From: Jacek Caban <jacek@codeweavers.com>
-Bug 945292 - Fixed ANGLE compilation on mingw.
-
-
-diff --git a/gfx/angle/src/common/debug.h b/gfx/angle/src/common/debug.h
-index 23ee26d..060b727 100644
---- a/gfx/angle/src/common/debug.h
-+++ b/gfx/angle/src/common/debug.h
-@@ -94,18 +94,20 @@ namespace gl
- #define UNREACHABLE() do { \
- ERR("\t! Unreachable reached: %s(%d)\n", __FUNCTION__, __LINE__); \
- assert(false); \
- } while(0)
- #else
- #define UNREACHABLE() ERR("\t! Unreachable reached: %s(%d)\n", __FUNCTION__, __LINE__)
- #endif
-
--// A macro that determines whether an object has a given runtime type.
--#if !defined(NDEBUG) && (!defined(_MSC_VER) || defined(_CPPRTTI))
-+// A macro that determines whether an object has a given runtime type. MSVC uses _CPPRTTI.
-+// GCC uses __GXX_RTTI, but the macro was introduced in version 4.3, so we assume that all older
-+// versions support RTTI.
-+#if !defined(NDEBUG) && (!defined(_MSC_VER) || defined(_CPPRTTI)) && (!defined(__GNUC__) || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3) || defined(__GXX_RTTI))
- #define HAS_DYNAMIC_TYPE(type, obj) (dynamic_cast<type >(obj) != NULL)
- #else
- #define HAS_DYNAMIC_TYPE(type, obj) true
- #endif
-
- // A macro functioning as a compile-time assert to validate constant conditions
- #define META_ASSERT(condition) typedef int COMPILE_TIME_ASSERT_##__LINE__[static_cast<bool>(condition)?1:-1]
-
-diff --git a/gfx/angle/src/libGLESv2/Constants.h b/gfx/angle/src/libGLESv2/Constants.h
-new file mode 100644
-index 0000000..9f24d66
---- /dev/null
-+++ b/gfx/angle/src/libGLESv2/Constants.h
-@@ -0,0 +1,34 @@
-+//
-+// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style license that can be
-+// found in the LICENSE file.
-+//
-+
-+// Contants.h: Defines some implementation specific and gl constants
-+
-+#ifndef LIBGLESV2_CONSTANTS_H_
-+#define LIBGLESV2_CONSTANTS_H_
-+
-+namespace gl
-+{
-+
-+enum
-+{
-+ MAX_VERTEX_ATTRIBS = 16,
-+ MAX_TEXTURE_IMAGE_UNITS = 16,
-+
-+ // Implementation upper limits, real maximums depend on the hardware
-+ IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 16,
-+ IMPLEMENTATION_MAX_COMBINED_TEXTURE_IMAGE_UNITS = MAX_TEXTURE_IMAGE_UNITS + IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS,
-+
-+ IMPLEMENTATION_MAX_VARYING_VECTORS = 32,
-+ IMPLEMENTATION_MAX_DRAW_BUFFERS = 8
-+};
-+
-+const float ALIASED_LINE_WIDTH_RANGE_MIN = 1.0f;
-+const float ALIASED_LINE_WIDTH_RANGE_MAX = 1.0f;
-+const float ALIASED_POINT_SIZE_RANGE_MIN = 1.0f;
-+
-+}
-+
-+#endif // LIBGLESV2_CONSTANTS_H_
-diff --git a/gfx/angle/src/libGLESv2/Framebuffer.h b/gfx/angle/src/libGLESv2/Framebuffer.h
-index b54e008..50bfd4f 100644
---- a/gfx/angle/src/libGLESv2/Framebuffer.h
-+++ b/gfx/angle/src/libGLESv2/Framebuffer.h
-@@ -7,17 +7,17 @@
- // Framebuffer.h: Defines the gl::Framebuffer class. Implements GL framebuffer
- // objects and related functionality. [OpenGL ES 2.0.24] section 4.4 page 105.
-
- #ifndef LIBGLESV2_FRAMEBUFFER_H_
- #define LIBGLESV2_FRAMEBUFFER_H_
-
- #include "common/angleutils.h"
- #include "common/RefCountObject.h"
--#include "constants.h"
-+#include "Constants.h"
-
- namespace rx
- {
- class Renderer;
- }
-
- namespace gl
- {
-diff --git a/gfx/angle/src/libGLESv2/constants.h b/gfx/angle/src/libGLESv2/constants.h
-deleted file mode 100644
-index 9f24d66..0000000
---- a/gfx/angle/src/libGLESv2/constants.h
-+++ /dev/null
-@@ -1,34 +0,0 @@
--//
--// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved.
--// Use of this source code is governed by a BSD-style license that can be
--// found in the LICENSE file.
--//
--
--// Contants.h: Defines some implementation specific and gl constants
--
--#ifndef LIBGLESV2_CONSTANTS_H_
--#define LIBGLESV2_CONSTANTS_H_
--
--namespace gl
--{
--
--enum
--{
-- MAX_VERTEX_ATTRIBS = 16,
-- MAX_TEXTURE_IMAGE_UNITS = 16,
--
-- // Implementation upper limits, real maximums depend on the hardware
-- IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 16,
-- IMPLEMENTATION_MAX_COMBINED_TEXTURE_IMAGE_UNITS = MAX_TEXTURE_IMAGE_UNITS + IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS,
--
-- IMPLEMENTATION_MAX_VARYING_VECTORS = 32,
-- IMPLEMENTATION_MAX_DRAW_BUFFERS = 8
--};
--
--const float ALIASED_LINE_WIDTH_RANGE_MIN = 1.0f;
--const float ALIASED_LINE_WIDTH_RANGE_MAX = 1.0f;
--const float ALIASED_POINT_SIZE_RANGE_MIN = 1.0f;
--
--}
--
--#endif // LIBGLESV2_CONSTANTS_H_
-diff --git a/gfx/angle/src/libGLESv2/precompiled.h b/gfx/angle/src/libGLESv2/precompiled.h
-index f62e71b..58ad181 100644
---- a/gfx/angle/src/libGLESv2/precompiled.h
-+++ b/gfx/angle/src/libGLESv2/precompiled.h
-@@ -28,15 +28,15 @@
- #include <map>
- #include <set>
- #include <sstream>
- #include <string>
- #include <unordered_map>
- #include <vector>
-
- #include <d3d9.h>
--#include <D3D11.h>
-+#include <d3d11.h>
- #include <dxgi.h>
- #include <d3dcompiler.h>
-
- #ifdef _MSC_VER
- #include <hash_map>
- #endif
-diff --git a/gfx/angle/src/libGLESv2/renderer/Renderer11.cpp b/gfx/angle/src/libGLESv2/renderer/Renderer11.cpp
-index 774cd71..1f2b31d 100644
---- a/gfx/angle/src/libGLESv2/renderer/Renderer11.cpp
-+++ b/gfx/angle/src/libGLESv2/renderer/Renderer11.cpp
-@@ -7,17 +7,17 @@
-
- // Renderer11.cpp: Implements a back-end specific class for the D3D11 renderer.
-
- #include "libGLESv2/main.h"
- #include "libGLESv2/utilities.h"
- #include "libGLESv2/Buffer.h"
- #include "libGLESv2/ProgramBinary.h"
- #include "libGLESv2/Framebuffer.h"
--#include "libGLESv2/RenderBuffer.h"
-+#include "libGLESv2/Renderbuffer.h"
- #include "libGLESv2/renderer/Renderer11.h"
- #include "libGLESv2/renderer/RenderTarget11.h"
- #include "libGLESv2/renderer/renderer11_utils.h"
- #include "libGLESv2/renderer/ShaderExecutable11.h"
- #include "libGLESv2/renderer/SwapChain11.h"
- #include "libGLESv2/renderer/Image11.h"
- #include "libGLESv2/renderer/VertexBuffer11.h"
- #include "libGLESv2/renderer/IndexBuffer11.h"
-diff --git a/gfx/angle/src/libGLESv2/renderer/Renderer11.h b/gfx/angle/src/libGLESv2/renderer/Renderer11.h
-index f024855..90ef04d 100644
---- a/gfx/angle/src/libGLESv2/renderer/Renderer11.h
-+++ b/gfx/angle/src/libGLESv2/renderer/Renderer11.h
-@@ -230,17 +230,17 @@ class Renderer11 : public Renderer
- bool mDepthTextureSupport;
-
- // Multisample format support
- struct MultisampleSupportInfo
- {
- unsigned int qualityLevels[D3D11_MAX_MULTISAMPLE_SAMPLE_COUNT];
- };
-
-- typedef std::unordered_map<DXGI_FORMAT, MultisampleSupportInfo> MultisampleSupportMap;
-+ typedef std::unordered_map<DXGI_FORMAT, MultisampleSupportInfo, std::hash<int> > MultisampleSupportMap;
- MultisampleSupportMap mMultisampleSupportMap;
-
- unsigned int mMaxSupportedSamples;
-
- // current render target states
- unsigned int mAppliedRenderTargetSerials[gl::IMPLEMENTATION_MAX_DRAW_BUFFERS];
- unsigned int mAppliedDepthbufferSerial;
- unsigned int mAppliedStencilbufferSerial;
deleted file mode 100644
--- a/gfx/angle/angle-build-stdcall-alias.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-From: Jeff Gilbert <jgilbert@mozilla.com>
-
-diff --git a/gfx/angle/src/libGLESv2/libGLESv2.def b/gfx/angle/src/libGLESv2/libGLESv2.def
---- a/gfx/angle/src/libGLESv2/libGLESv2.def
-+++ b/gfx/angle/src/libGLESv2/libGLESv2.def
-@@ -175,8 +175,13 @@ EXPORTS
-
- ; EGL dependencies
- glCreateContext @144 NONAME
- glDestroyContext @145 NONAME
- glMakeCurrent @146 NONAME
- glGetCurrentContext @147 NONAME
- glGetProcAddress @148 NONAME
- glBindTexImage @158 NONAME
-+
-+ ; GCC has problems with linking to undecorated stdcall functions,
-+ ; so we explicitly add aliases for APIs used by EGL.
-+ glGetProcAddress@4=glGetProcAddress
-+ glBindTexImage@4=glBindTexImage
deleted file mode 100644
--- a/gfx/angle/angle-build-ttype.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From: Jeff Gilbert <jgilbert@mozilla.com>
-
-diff --git a/gfx/angle/src/compiler/Types.h b/gfx/angle/src/compiler/Types.h
---- a/gfx/angle/src/compiler/Types.h
-+++ b/gfx/angle/src/compiler/Types.h
-@@ -90,17 +90,17 @@ private:
- //
- // Base class for things that have a type.
- //
- class TType
- {
- public:
- POOL_ALLOCATOR_NEW_DELETE();
- TType() {}
-- TType(TBasicType t, TPrecision p, TQualifier q = EvqTemporary, int s = 1, bool m = false, bool a = false) :
-+ TType(TBasicType t, TPrecision p, TQualifier q = EvqTemporary, char s = 1, bool m = false, bool a = false) :
- type(t), precision(p), qualifier(q), size(s), matrix(m), array(a), arraySize(0), structure(0)
- {
- }
- explicit TType(const TPublicType &p);
- TType(TStructure* userDef, TPrecision p = EbpUndefined) :
- type(EbtStruct), precision(p), qualifier(EvqTemporary), size(1), matrix(false), array(false), arraySize(0), structure(userDef)
- {
- }
-@@ -229,22 +229,22 @@ public:
-
- bool isStructureContainingArrays() const {
- return structure ? structure->containsArrays() : false;
- }
-
- private:
- TString buildMangledName() const;
-
-- TBasicType type : 6;
-+ TBasicType type;
- TPrecision precision;
-- TQualifier qualifier : 7;
-- int size : 8; // size of vector or matrix, not size of array
-- unsigned int matrix : 1;
-- unsigned int array : 1;
-+ TQualifier qualifier;
-+ char size; // size of vector or matrix, not size of array
-+ bool matrix;
-+ bool array;
- int arraySize;
-
- TStructure* structure; // 0 unless this is a struct
-
- mutable TString mangled;
- };
-
- //
deleted file mode 100644
--- a/gfx/angle/angle-build-unified.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From: Ehsan Akhagri <ehsan@mozilla.com>
-Subject: Bug 939588 - Fixes required to make angle compile in unified mode
-
-diff --git a/gfx/angle/src/compiler/ForLoopUnroll.h b/gfx/angle/src/compiler/ForLoopUnroll.h
-index e800e25..7e10d82 100644
---- a/gfx/angle/src/compiler/ForLoopUnroll.h
-+++ b/gfx/angle/src/compiler/ForLoopUnroll.h
-@@ -1,14 +1,17 @@
- //
- // Copyright (c) 2011 The ANGLE Project Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- //
-
-+#ifndef ForLoopUnroll_h
-+#define ForLoopUnroll_h
-+
- #include "compiler/intermediate.h"
-
- struct TLoopIndexInfo {
- int id;
- int initValue;
- int stopValue;
- int incrementValue;
- TOperator op;
-@@ -41,8 +44,9 @@ public:
- private:
- int getLoopIncrement(TIntermLoop* node);
-
- int evaluateIntConstant(TIntermConstantUnion* node);
-
- TVector<TLoopIndexInfo> mLoopIndexStack;
- };
-
-+#endif
-diff --git a/gfx/angle/src/compiler/preprocessor/DiagnosticsBase.h b/gfx/angle/src/compiler/preprocessor/DiagnosticsBase.h
-index 07bc411..e1829b0 100644
---- a/gfx/angle/src/compiler/preprocessor/DiagnosticsBase.h
-+++ b/gfx/angle/src/compiler/preprocessor/DiagnosticsBase.h
-@@ -4,16 +4,21 @@
- // found in the LICENSE file.
- //
-
- #ifndef COMPILER_PREPROCESSOR_DIAGNOSTICS_H_
- #define COMPILER_PREPROCESSOR_DIAGNOSTICS_H_
-
- #include <string>
-
-+// Windows.h #defines ERROR.
-+#ifdef ERROR
-+#undef ERROR
-+#endif
-+
- namespace pp
- {
-
- struct SourceLocation;
-
- // Base class for reporting diagnostic messages.
- // Derived classes are responsible for formatting and printing the messages.
- class Diagnostics
deleted file mode 100644
--- a/gfx/angle/angle-d3dcc47.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From: Jeff Gilbert <jgilbert@mozilla.com>
-Bug 982973 - Tell ANGLE about d3dcompiler_47.dll. - r=vlad
-
-diff --git a/gfx/angle/src/libGLESv2/renderer/Renderer.cpp b/gfx/angle/src/libGLESv2/renderer/Renderer.cpp
---- a/gfx/angle/src/libGLESv2/renderer/Renderer.cpp
-+++ b/gfx/angle/src/libGLESv2/renderer/Renderer.cpp
-@@ -17,16 +17,17 @@
-
- #if !defined(ANGLE_ENABLE_D3D11)
- // Enables use of the Direct3D 11 API for a default display, when available
- #define ANGLE_ENABLE_D3D11 0
- #endif
-
- #define ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES \
- { \
-+ TEXT("d3dcompiler_47.dll"), \
- TEXT("d3dcompiler_46.dll"), \
- TEXT("d3dcompiler_43.dll") \
- }
-
-
- namespace rx
- {
-
-@@ -173,23 +174,23 @@ ShaderBlob *Renderer::compileToBinary(gl
-
- extern "C"
- {
-
- rx::Renderer *glCreateRenderer(egl::Display *display, HDC hDc, EGLNativeDisplayType displayId)
- {
- rx::Renderer *renderer = NULL;
- EGLint status = EGL_BAD_ALLOC;
--
-+
- if (ANGLE_ENABLE_D3D11 ||
- displayId == EGL_D3D11_ELSE_D3D9_DISPLAY_ANGLE ||
- displayId == EGL_D3D11_ONLY_DISPLAY_ANGLE)
- {
- renderer = new rx::Renderer11(display, hDc);
--
-+
- if (renderer)
- {
- status = renderer->initialize();
- }
-
- if (status == EGL_SUCCESS)
- {
- return renderer;
-@@ -200,17 +201,17 @@ rx::Renderer *glCreateRenderer(egl::Disp
- }
-
- // Failed to create a D3D11 renderer, try creating a D3D9 renderer
- delete renderer;
- }
-
- bool softwareDevice = (displayId == EGL_SOFTWARE_DISPLAY_ANGLE);
- renderer = new rx::Renderer9(display, hDc, softwareDevice);
--
-+
- if (renderer)
- {
- status = renderer->initialize();
- }
-
- if (status == EGL_SUCCESS)
- {
- return renderer;
deleted file mode 100644
--- a/gfx/angle/angle-default-clamp-strat.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From: Jeff Gilbert <jgilbert@mozilla.com>
-
-diff --git a/gfx/angle/src/compiler/Compiler.cpp b/gfx/angle/src/compiler/Compiler.cpp
---- a/gfx/angle/src/compiler/Compiler.cpp
-+++ b/gfx/angle/src/compiler/Compiler.cpp
-@@ -130,18 +130,21 @@ bool TCompiler::Init(const ShBuiltInReso
- TScopedPoolAllocator scopedAlloc(&allocator, false);
-
- // Generate built-in symbol table.
- if (!InitBuiltInSymbolTable(resources))
- return false;
- InitExtensionBehavior(resources, extensionBehavior);
- fragmentPrecisionHigh = resources.FragmentPrecisionHigh == 1;
-
-- arrayBoundsClamper.SetClampingStrategy(resources.ArrayIndexClampingStrategy);
-- clampingStrategy = resources.ArrayIndexClampingStrategy;
-+ // ArrayIndexClampingStrategy's enum starts at 1, so 0 is 'default'.
-+ if (resources.ArrayIndexClampingStrategy) {
-+ clampingStrategy = resources.ArrayIndexClampingStrategy;
-+ }
-+ arrayBoundsClamper.SetClampingStrategy(clampingStrategy);
-
- hashFunction = resources.HashFunction;
-
- return true;
- }
-
- bool TCompiler::compile(const char* const shaderStrings[],
- size_t numStrings,
-diff --git a/gfx/angle/src/third_party/compiler/ArrayBoundsClamper.cpp b/gfx/angle/src/third_party/compiler/ArrayBoundsClamper.cpp
---- a/gfx/angle/src/third_party/compiler/ArrayBoundsClamper.cpp
-+++ b/gfx/angle/src/third_party/compiler/ArrayBoundsClamper.cpp
-@@ -72,16 +72,19 @@ private:
- ArrayBoundsClamper::ArrayBoundsClamper()
- : mClampingStrategy(SH_CLAMP_WITH_CLAMP_INTRINSIC)
- , mArrayBoundsClampDefinitionNeeded(false)
- {
- }
-
- void ArrayBoundsClamper::SetClampingStrategy(ShArrayIndexClampingStrategy clampingStrategy)
- {
-+ ASSERT(clampingStrategy == SH_CLAMP_WITH_CLAMP_INTRINSIC ||
-+ clampingStrategy == SH_CLAMP_WITH_USER_DEFINED_INT_CLAMP_FUNCTION);
-+
- mClampingStrategy = clampingStrategy;
- }
-
- void ArrayBoundsClamper::MarkIndirectArrayBoundsForClamping(TIntermNode* root)
- {
- ASSERT(root);
-
- ArrayBoundsClamperMarker clamper;
deleted file mode 100644
--- a/gfx/angle/angle-faceforward-emu.patch
+++ /dev/null
@@ -1,314 +0,0 @@
-From: Jeff Gilbert <jgilbert@mozilla.com>
-Bug 771406 - Add emulation for GLSL faceforward() to ANGLE - r=bjacob
-
-diff --git a/gfx/angle/src/compiler/BuiltInFunctionEmulator.cpp b/gfx/angle/src/compiler/BuiltInFunctionEmulator.cpp
---- a/gfx/angle/src/compiler/BuiltInFunctionEmulator.cpp
-+++ b/gfx/angle/src/compiler/BuiltInFunctionEmulator.cpp
-@@ -26,16 +26,22 @@ const char* kFunctionEmulationVertexSour
- "#error no emulation for distance(vec3, vec3)",
- "#error no emulation for distance(vec4, vec4)",
-
- "#define webgl_dot_emu(x, y) ((x) * (y))",
- "#error no emulation for dot(vec2, vec2)",
- "#error no emulation for dot(vec3, vec3)",
- "#error no emulation for dot(vec4, vec4)",
-
-+ // |faceforward(N, I, Nref)| is |dot(NRef, I) < 0 ? N : -N|
-+ "#define webgl_faceforward_emu(N, I, Nref) (((Nref) * (I) < 0.0) ? (N) : -(N))",
-+ "#error no emulation for faceforward(vec2, vec2, vec2)",
-+ "#error no emulation for faceforward(vec3, vec3, vec3)",
-+ "#error no emulation for faceforward(vec4, vec4, vec4)",
-+
- "#define webgl_length_emu(x) ((x) >= 0.0 ? (x) : -(x))",
- "#error no emulation for length(vec2)",
- "#error no emulation for length(vec3)",
- "#error no emulation for length(vec4)",
-
- "#define webgl_normalize_emu(x) ((x) == 0.0 ? 0.0 : ((x) > 0.0 ? 1.0 : -1.0))",
- "#error no emulation for normalize(vec2)",
- "#error no emulation for normalize(vec3)",
-@@ -58,16 +64,22 @@ const char* kFunctionEmulationFragmentSo
- "#error no emulation for distance(vec3, vec3)",
- "#error no emulation for distance(vec4, vec4)",
-
- "#define webgl_dot_emu(x, y) ((x) * (y))",
- "#error no emulation for dot(vec2, vec2)",
- "#error no emulation for dot(vec3, vec3)",
- "#error no emulation for dot(vec4, vec4)",
-
-+ // |faceforward(N, I, Nref)| is |dot(NRef, I) < 0 ? N : -N|
-+ "#define webgl_faceforward_emu(N, I, Nref) (((Nref) * (I) < 0.0) ? (N) : -(N))",
-+ "#error no emulation for faceforward(vec2, vec2, vec2)",
-+ "#error no emulation for faceforward(vec3, vec3, vec3)",
-+ "#error no emulation for faceforward(vec4, vec4, vec4)",
-+
- "#define webgl_length_emu(x) ((x) >= 0.0 ? (x) : -(x))",
- "#error no emulation for length(vec2)",
- "#error no emulation for length(vec3)",
- "#error no emulation for length(vec4)",
-
- "#define webgl_normalize_emu(x) ((x) == 0.0 ? 0.0 : ((x) > 0.0 ? 1.0 : -1.0))",
- "#error no emulation for normalize(vec2)",
- "#error no emulation for normalize(vec3)",
-@@ -89,16 +101,20 @@ const bool kFunctionEmulationVertexMask[
- true, // TFunctionDistance1_1
- false, // TFunctionDistance2_2
- false, // TFunctionDistance3_3
- false, // TFunctionDistance4_4
- true, // TFunctionDot1_1
- false, // TFunctionDot2_2
- false, // TFunctionDot3_3
- false, // TFunctionDot4_4
-+ true, // TFunctionFaceForward1_1_1
-+ false, // TFunctionFaceForward2_2_2
-+ false, // TFunctionFaceForward3_3_3
-+ false, // TFunctionFaceForward4_4_4
- true, // TFunctionLength1
- false, // TFunctionLength2
- false, // TFunctionLength3
- false, // TFunctionLength4
- true, // TFunctionNormalize1
- false, // TFunctionNormalize2
- false, // TFunctionNormalize3
- false, // TFunctionNormalize4
-@@ -115,16 +131,20 @@ const bool kFunctionEmulationVertexMask[
- false, // TFunctionDistance1_1
- false, // TFunctionDistance2_2
- false, // TFunctionDistance3_3
- false, // TFunctionDistance4_4
- false, // TFunctionDot1_1
- false, // TFunctionDot2_2
- false, // TFunctionDot3_3
- false, // TFunctionDot4_4
-+ false, // TFunctionFaceForward1_1_1
-+ false, // TFunctionFaceForward2_2_2
-+ false, // TFunctionFaceForward3_3_3
-+ false, // TFunctionFaceForward4_4_4
- false, // TFunctionLength1
- false, // TFunctionLength2
- false, // TFunctionLength3
- false, // TFunctionLength4
- false, // TFunctionNormalize1
- false, // TFunctionNormalize2
- false, // TFunctionNormalize3
- false, // TFunctionNormalize4
-@@ -146,16 +166,20 @@ const bool kFunctionEmulationFragmentMas
- true, // TFunctionDistance1_1
- false, // TFunctionDistance2_2
- false, // TFunctionDistance3_3
- false, // TFunctionDistance4_4
- true, // TFunctionDot1_1
- false, // TFunctionDot2_2
- false, // TFunctionDot3_3
- false, // TFunctionDot4_4
-+ true, // TFunctionFaceForward1_1_1
-+ false, // TFunctionFaceForward2_2_2
-+ false, // TFunctionFaceForward3_3_3
-+ false, // TFunctionFaceForward4_4_4
- true, // TFunctionLength1
- false, // TFunctionLength2
- false, // TFunctionLength3
- false, // TFunctionLength4
- true, // TFunctionNormalize1
- false, // TFunctionNormalize2
- false, // TFunctionNormalize3
- false, // TFunctionNormalize4
-@@ -172,16 +196,20 @@ const bool kFunctionEmulationFragmentMas
- false, // TFunctionDistance1_1
- false, // TFunctionDistance2_2
- false, // TFunctionDistance3_3
- false, // TFunctionDistance4_4
- false, // TFunctionDot1_1
- false, // TFunctionDot2_2
- false, // TFunctionDot3_3
- false, // TFunctionDot4_4
-+ false, // TFunctionFaceForward1_1_1
-+ false, // TFunctionFaceForward2_2_2
-+ false, // TFunctionFaceForward3_3_3
-+ false, // TFunctionFaceForward4_4_4
- false, // TFunctionLength1
- false, // TFunctionLength2
- false, // TFunctionLength3
- false, // TFunctionLength4
- false, // TFunctionNormalize1
- false, // TFunctionNormalize2
- false, // TFunctionNormalize3
- false, // TFunctionNormalize4
-@@ -239,25 +267,37 @@ public:
- case EOpReflect:
- case EOpRefract:
- case EOpMul:
- break;
- default:
- return true;
- };
- const TIntermSequence& sequence = node->getSequence();
-- // Right now we only handle built-in functions with two parameters.
-- if (sequence.size() != 2)
-+ bool needToEmulate = false;
-+
-+ if (sequence.size() == 2) {
-+ TIntermTyped* param1 = sequence[0]->getAsTyped();
-+ TIntermTyped* param2 = sequence[1]->getAsTyped();
-+ if (!param1 || !param2)
-+ return true;
-+ needToEmulate = mEmulator.SetFunctionCalled(
-+ node->getOp(), param1->getType(), param2->getType());
-+ } else if (sequence.size() == 3) {
-+ TIntermTyped* param1 = sequence[0]->getAsTyped();
-+ TIntermTyped* param2 = sequence[1]->getAsTyped();
-+ TIntermTyped* param3 = sequence[2]->getAsTyped();
-+ if (!param1 || !param2 || !param3)
-+ return true;
-+ needToEmulate = mEmulator.SetFunctionCalled(
-+ node->getOp(), param1->getType(), param2->getType(), param3->getType());
-+ } else {
- return true;
-- TIntermTyped* param1 = sequence[0]->getAsTyped();
-- TIntermTyped* param2 = sequence[1]->getAsTyped();
-- if (!param1 || !param2)
-- return true;
-- bool needToEmulate = mEmulator.SetFunctionCalled(
-- node->getOp(), param1->getType(), param2->getType());
-+ }
-+
- if (needToEmulate)
- node->setUseEmulatedFunction();
- }
- return true;
- }
-
- private:
- BuiltInFunctionEmulator& mEmulator;
-@@ -286,16 +326,23 @@ bool BuiltInFunctionEmulator::SetFunctio
- bool BuiltInFunctionEmulator::SetFunctionCalled(
- TOperator op, const TType& param1, const TType& param2)
- {
- TBuiltInFunction function = IdentifyFunction(op, param1, param2);
- return SetFunctionCalled(function);
- }
-
- bool BuiltInFunctionEmulator::SetFunctionCalled(
-+ TOperator op, const TType& param1, const TType& param2, const TType& param3)
-+{
-+ TBuiltInFunction function = IdentifyFunction(op, param1, param2, param3);
-+ return SetFunctionCalled(function);
-+}
-+
-+bool BuiltInFunctionEmulator::SetFunctionCalled(
- BuiltInFunctionEmulator::TBuiltInFunction function) {
- if (function == TFunctionUnknown || mFunctionMask[function] == false)
- return false;
- for (size_t i = 0; i < mFunctions.size(); ++i) {
- if (mFunctions[i] == function)
- return true;
- }
- mFunctions.push_back(function);
-@@ -377,16 +424,44 @@ BuiltInFunctionEmulator::IdentifyFunctio
- }
- if (function == TFunctionUnknown)
- return TFunctionUnknown;
- if (param1.isVector())
- function += param1.getNominalSize() - 1;
- return static_cast<TBuiltInFunction>(function);
- }
-
-+BuiltInFunctionEmulator::TBuiltInFunction
-+BuiltInFunctionEmulator::IdentifyFunction(
-+ TOperator op, const TType& param1, const TType& param2, const TType& param3)
-+{
-+ // Check that all params have the same type, length,
-+ // and that they're not too large.
-+ if (param1.isVector() != param2.isVector() ||
-+ param2.isVector() != param3.isVector() ||
-+ param1.getNominalSize() != param2.getNominalSize() ||
-+ param2.getNominalSize() != param3.getNominalSize() ||
-+ param1.getNominalSize() > 4)
-+ return TFunctionUnknown;
-+
-+ unsigned int function = TFunctionUnknown;
-+ switch (op) {
-+ case EOpFaceForward:
-+ function = TFunctionFaceForward1_1_1;
-+ break;
-+ default:
-+ break;
-+ }
-+ if (function == TFunctionUnknown)
-+ return TFunctionUnknown;
-+ if (param1.isVector())
-+ function += param1.getNominalSize() - 1;
-+ return static_cast<TBuiltInFunction>(function);
-+}
-+
- void BuiltInFunctionEmulator::MarkBuiltInFunctionsForEmulation(
- TIntermNode* root)
- {
- ASSERT(root);
-
- BuiltInFunctionEmulationMarker marker(*this);
- root->traverse(&marker);
- }
-diff --git a/gfx/angle/src/compiler/BuiltInFunctionEmulator.h b/gfx/angle/src/compiler/BuiltInFunctionEmulator.h
---- a/gfx/angle/src/compiler/BuiltInFunctionEmulator.h
-+++ b/gfx/angle/src/compiler/BuiltInFunctionEmulator.h
-@@ -23,16 +23,18 @@ public:
- // Records that a function is called by the shader and might needs to be
- // emulated. If the function's group is not in mFunctionGroupFilter, this
- // becomes an no-op.
- // Returns true if the function call needs to be replaced with an emulated
- // one.
- bool SetFunctionCalled(TOperator op, const TType& param);
- bool SetFunctionCalled(
- TOperator op, const TType& param1, const TType& param2);
-+ bool SetFunctionCalled(
-+ TOperator op, const TType& param1, const TType& param2, const TType& param3);
-
- // Output function emulation definition. This should be before any other
- // shader source.
- void OutputEmulatedFunctionDefinition(TInfoSinkBase& out, bool withPrecision) const;
-
- void MarkBuiltInFunctionsForEmulation(TIntermNode* root);
-
- void Cleanup();
-@@ -55,16 +57,21 @@ private:
- TFunctionDistance3_3, // vec3 distance(vec3, vec3);
- TFunctionDistance4_4, // vec4 distance(vec4, vec4);
-
- TFunctionDot1_1, // float dot(float, float);
- TFunctionDot2_2, // vec2 dot(vec2, vec2);
- TFunctionDot3_3, // vec3 dot(vec3, vec3);
- TFunctionDot4_4, // vec4 dot(vec4, vec4);
-
-+ TFunctionFaceForward1_1_1, // float faceforward(float, float, float);
-+ TFunctionFaceForward2_2_2, // vec2 faceforward(vec2, vec2, vec2);
-+ TFunctionFaceForward3_3_3, // vec3 faceforward(vec3, vec3, vec3);
-+ TFunctionFaceForward4_4_4, // vec4 faceforward(vec4, vec4, vec4);
-+
- TFunctionLength1, // float length(float);
- TFunctionLength2, // float length(vec2);
- TFunctionLength3, // float length(vec3);
- TFunctionLength4, // float length(vec4);
-
- TFunctionNormalize1, // float normalize(float);
- TFunctionNormalize2, // vec2 normalize(vec2);
- TFunctionNormalize3, // vec3 normalize(vec3);
-@@ -76,16 +83,18 @@ private:
- TFunctionReflect4_4, // vec4 reflect(vec4, vec4);
-
- TFunctionUnknown
- };
-
- TBuiltInFunction IdentifyFunction(TOperator op, const TType& param);
- TBuiltInFunction IdentifyFunction(
- TOperator op, const TType& param1, const TType& param2);
-+ TBuiltInFunction IdentifyFunction(
-+ TOperator op, const TType& param1, const TType& param2, const TType& param3);
-
- bool SetFunctionCalled(TBuiltInFunction function);
-
- std::vector<TBuiltInFunction> mFunctions;
-
- const bool* mFunctionMask; // a boolean flag for each function.
- const char** mFunctionSource;
- };
deleted file mode 100644
--- a/gfx/angle/angle-fix-issue-651.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-Fix for https://code.google.com/p/angleproject/issues/detail?id=651
-
-See https://bugzilla.mozilla.org/show_bug.cgi?id=1025576 for details.
-
-diff --git a/gfx/angle/src/compiler/SymbolTable.cpp b/gfx/angle/src/compiler/SymbolTable.cpp
---- a/gfx/angle/src/compiler/SymbolTable.cpp
-+++ b/gfx/angle/src/compiler/SymbolTable.cpp
-@@ -166,17 +166,18 @@ TFunction::~TFunction()
- }
-
- //
- // Symbol table levels are a map of pointers to symbols that have to be deleted.
- //
- TSymbolTableLevel::~TSymbolTableLevel()
- {
- for (tLevel::iterator it = level.begin(); it != level.end(); ++it)
-- delete (*it).second;
-+ if ((*it).first == (*it).second->getMangledName())
-+ delete (*it).second;
- }
-
- //
- // Change all function entries in the table with the non-mangled name
- // to be related to the provided built-in operation. This is a low
- // performance operation, and only intended for symbol tables that
- // live across a large number of compiles.
- //
deleted file mode 100644
--- a/gfx/angle/angle-fix-vc12.patch
+++ /dev/null
@@ -1,137 +0,0 @@
-# HG changeset patch
-# Parent 4947d86b1f7b860e9c958a8a5eae03075c539f78
-# User Xavier Fung <xavier114fch@gmail.com>
-Fix Angle to build on Visual Studio 2013. r=?
-
-diff --git a/gfx/angle/src/compiler/Types.h b/gfx/angle/src/compiler/Types.h
---- a/gfx/angle/src/compiler/Types.h
-+++ b/gfx/angle/src/compiler/Types.h
-@@ -8,16 +8,18 @@
- #define _TYPES_INCLUDED
-
- #include "common/angleutils.h"
-
- #include "compiler/BaseTypes.h"
- #include "compiler/Common.h"
- #include "compiler/compiler_debug.h"
-
-+#include <algorithm>
-+
- struct TPublicType;
- class TType;
-
- class TField
- {
- public:
- POOL_ALLOCATOR_NEW_DELETE();
- TField(TType* type, TString* name) : mType(type), mName(name) {}
-diff --git a/gfx/angle/src/libEGL/Surface.cpp b/gfx/angle/src/libEGL/Surface.cpp
---- a/gfx/angle/src/libEGL/Surface.cpp
-+++ b/gfx/angle/src/libEGL/Surface.cpp
-@@ -15,16 +15,18 @@
- #include "common/debug.h"
- #include "libGLESv2/Texture.h"
- #include "libGLESv2/renderer/SwapChain.h"
- #include "libGLESv2/main.h"
-
- #include "libEGL/main.h"
- #include "libEGL/Display.h"
-
-+#include <algorithm>
-+
- namespace egl
- {
-
- Surface::Surface(Display *display, const Config *config, HWND window, EGLint postSubBufferSupported)
- : mDisplay(display), mConfig(config), mWindow(window), mPostSubBufferSupported(postSubBufferSupported)
- {
- mRenderer = mDisplay->getRenderer();
- mSwapChain = NULL;
-diff --git a/gfx/angle/src/libGLESv2/Program.cpp b/gfx/angle/src/libGLESv2/Program.cpp
---- a/gfx/angle/src/libGLESv2/Program.cpp
-+++ b/gfx/angle/src/libGLESv2/Program.cpp
-@@ -7,16 +7,18 @@
-
- // Program.cpp: Implements the gl::Program class. Implements GL program objects
- // and related functionality. [OpenGL ES 2.0.24] section 2.10.3 page 28.
-
- #include "libGLESv2/Program.h"
- #include "libGLESv2/ProgramBinary.h"
- #include "libGLESv2/ResourceManager.h"
-
-+#include <algorithm>
-+
- namespace gl
- {
- const char * const g_fakepath = "C:\\fakepath";
-
- AttributeBindings::AttributeBindings()
- {
- }
-
-diff --git a/gfx/angle/src/libGLESv2/ProgramBinary.cpp b/gfx/angle/src/libGLESv2/ProgramBinary.cpp
---- a/gfx/angle/src/libGLESv2/ProgramBinary.cpp
-+++ b/gfx/angle/src/libGLESv2/ProgramBinary.cpp
-@@ -17,16 +17,18 @@
- #include "utilities.h"
-
- #include "libGLESv2/main.h"
- #include "libGLESv2/Shader.h"
- #include "libGLESv2/Program.h"
- #include "libGLESv2/renderer/Renderer.h"
- #include "libGLESv2/renderer/VertexDataManager.h"
-
-+#include <algorithm>
-+
- #undef near
- #undef far
-
- namespace gl
- {
- std::string str(int i)
- {
- char buffer[20];
-diff --git a/gfx/angle/src/libGLESv2/Shader.cpp b/gfx/angle/src/libGLESv2/Shader.cpp
---- a/gfx/angle/src/libGLESv2/Shader.cpp
-+++ b/gfx/angle/src/libGLESv2/Shader.cpp
-@@ -6,16 +6,18 @@
- //
-
- // Shader.cpp: Implements the gl::Shader class and its derived classes
- // VertexShader and FragmentShader. Implements GL shader objects and related
- // functionality. [OpenGL ES 2.0.24] section 2.10 page 24 and section 3.8 page 84.
-
- #include "libGLESv2/Shader.h"
-
-+#include <algorithm>
-+
- #include "GLSLANG/ShaderLang.h"
- #include "libGLESv2/utilities.h"
- #include "libGLESv2/renderer/Renderer.h"
- #include "libGLESv2/Constants.h"
- #include "libGLESv2/ResourceManager.h"
-
- namespace gl
- {
-diff --git a/gfx/angle/src/libGLESv2/libGLESv2.cpp b/gfx/angle/src/libGLESv2/libGLESv2.cpp
---- a/gfx/angle/src/libGLESv2/libGLESv2.cpp
-+++ b/gfx/angle/src/libGLESv2/libGLESv2.cpp
-@@ -4,16 +4,18 @@
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- //
-
- // libGLESv2.cpp: Implements the exported OpenGL ES 2.0 functions.
-
- #include "common/version.h"
-
-+#include <algorithm>
-+
- #include "libGLESv2/main.h"
- #include "libGLESv2/utilities.h"
- #include "libGLESv2/Buffer.h"
- #include "libGLESv2/Fence.h"
- #include "libGLESv2/Framebuffer.h"
- #include "libGLESv2/Renderbuffer.h"
- #include "libGLESv2/Program.h"
- #include "libGLESv2/ProgramBinary.h"
deleted file mode 100644
--- a/gfx/angle/angle-long-ident-hash.patch
+++ /dev/null
@@ -1,137 +0,0 @@
-From: Jeff Gilbert <jgilbert@mozilla.com>
-
-diff --git a/gfx/angle/Makefile.in b/gfx/angle/Makefile.in
---- a/gfx/angle/Makefile.in
-+++ b/gfx/angle/Makefile.in
-@@ -32,16 +32,17 @@ LOCAL_INCLUDES += \
- -I$(srcdir)/src
-
- DEFINES += -DCOMPILER_IMPLEMENTATION
-
- VPATH += $(srcdir)/src/compiler
- VPATH += $(srcdir)/src/compiler/depgraph
- VPATH += $(srcdir)/src/compiler/timing
- VPATH += $(srcdir)/src/third_party/compiler
-+VPATH += $(srcdir)/src/third_party/murmurhash
-
- # Target: 'translator_glsl'
- # Requires: 'translator_common'
- # src/compiler:
- ifdef MOZ_ANGLE_RENDERER
-
- libs::
- ifdef MOZ_D3DCOMPILER_CAB
-diff --git a/gfx/angle/moz.build b/gfx/angle/moz.build
---- a/gfx/angle/moz.build
-+++ b/gfx/angle/moz.build
-@@ -83,16 +83,21 @@ CPP_SOURCES += [
- 'RestrictVertexShaderTiming.cpp',
- ]
-
- # src/third_party/compiler:
- CPP_SOURCES += [
- 'ArrayBoundsClamper.cpp',
- ]
-
-+# src/third_party/murmurhash:
-+CPP_SOURCES += [
-+ 'MurmurHash3.cpp',
-+]
-+
- if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
- CPP_SOURCES += [
- 'ossource_win.cpp',
- ]
- else:
- CPP_SOURCES += [
- 'ossource_posix.cpp',
- ]
-diff --git a/gfx/angle/src/compiler/MapLongVariableNames.cpp b/gfx/angle/src/compiler/MapLongVariableNames.cpp
---- a/gfx/angle/src/compiler/MapLongVariableNames.cpp
-+++ b/gfx/angle/src/compiler/MapLongVariableNames.cpp
-@@ -1,29 +1,39 @@
- //
- // Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- //
-
- #include "compiler/MapLongVariableNames.h"
-
-+#include "third_party/murmurhash/MurmurHash3.h"
-+
- namespace {
-
- TString mapLongName(size_t id, const TString& name, bool isGlobal)
- {
- ASSERT(name.size() > MAX_SHORTENED_IDENTIFIER_SIZE);
- TStringStream stream;
-- stream << "webgl_";
-- if (isGlobal)
-- stream << "g";
-- stream << id;
-- if (name[0] != '_')
-- stream << "_";
-- stream << name.substr(0, MAX_SHORTENED_IDENTIFIER_SIZE - stream.str().size());
-+
-+ uint64_t hash[2] = {0, 0};
-+ MurmurHash3_x64_128(name.data(), name.length(), 0, hash);
-+
-+ // We want to avoid producing a string with a double underscore,
-+ // which would be an illegal GLSL identifier. We can assume that the
-+ // original identifier doesn't have a double underscore, otherwise
-+ // it's illegal anyway.
-+ stream << (name[0] == '_' ? "webgl" : "webgl_")
-+ << name.substr(0, 9)
-+ << (name[8] == '_' ? "" : "_")
-+ << std::hex
-+ << hash[0];
-+ ASSERT(stream.str().length() <= MAX_SHORTENED_IDENTIFIER_SIZE);
-+ ASSERT(stream.str().length() >= MAX_SHORTENED_IDENTIFIER_SIZE - 2);
- return stream.str();
- }
-
- LongNameMap* gLongNameMapInstance = NULL;
-
- } // anonymous namespace
-
- LongNameMap::LongNameMap()
-diff --git a/gfx/angle/src/libGLESv2/moz.build b/gfx/angle/src/libGLESv2/moz.build
---- a/gfx/angle/src/libGLESv2/moz.build
-+++ b/gfx/angle/src/libGLESv2/moz.build
-@@ -71,16 +71,21 @@ CPP_SOURCES += [
- 'RestrictVertexShaderTiming.cpp',
- ]
-
- # src/third_party/compiler:
- CPP_SOURCES += [
- 'ArrayBoundsClamper.cpp',
- ]
-
-+# src/third_party/murmurhash:
-+CPP_SOURCES += [
-+ 'MurmurHash3.cpp',
-+]
-+
- if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
- CPP_SOURCES += [
- 'ossource_win.cpp',
- ]
- else:
- CPP_SOURCES += [
- 'ossource_posix.cpp',
- ]
-@@ -165,13 +170,8 @@ CPP_SOURCES += [
- 'TextureStorage11.cpp',
- 'TextureStorage9.cpp',
- 'VertexBuffer.cpp',
- 'VertexBuffer9.cpp',
- 'VertexBuffer11.cpp',
- 'VertexDataManager.cpp',
- 'VertexDeclarationCache.cpp',
- ]
--
--# src/third_party/murmurhash:
--CPP_SOURCES += [
-- 'MurmurHash3.cpp',
--]
deleted file mode 100644
--- a/gfx/angle/angle-tex-pool-default.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From: Jeff Gilbert <jgilbert@mozilla.com>
-
-diff --git a/gfx/angle/src/libGLESv2/renderer/Renderer9.cpp b/gfx/angle/src/libGLESv2/renderer/Renderer9.cpp
---- a/gfx/angle/src/libGLESv2/renderer/Renderer9.cpp
-+++ b/gfx/angle/src/libGLESv2/renderer/Renderer9.cpp
-@@ -3128,17 +3128,17 @@ D3DPOOL Renderer9::getTexturePool(DWORD
- if (mD3d9Ex != NULL)
- {
- return D3DPOOL_DEFAULT;
- }
- else
- {
- if (!(usage & (D3DUSAGE_DEPTHSTENCIL | D3DUSAGE_RENDERTARGET)))
- {
-- return D3DPOOL_MANAGED;
-+ return D3DPOOL_DEFAULT;
- }
- }
-
- return D3DPOOL_DEFAULT;
- }
-
- bool Renderer9::copyToRenderTarget(IDirect3DSurface9 *dest, IDirect3DSurface9 *source, bool fromManaged)
- {
deleted file mode 100644
--- a/gfx/angle/build/all.gyp
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright (c) 2010 The ANGLE Project Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-{
- 'targets': [
- {
- 'target_name': 'all',
- 'type': 'none',
- 'dependencies': [
- # TODO(alokp): build_ prefix should be removed from the gyp files
- # as soon as we can get rid of manually-maintained sln files.
- # Otherwise auto-generated sln files will overwrite/conflict the
- # manually maintained ones.
- '../samples/build_samples.gyp:*',
- '../src/build_angle.gyp:*',
- '../tests/build_tests.gyp:*',
- ],
- },
- ],
-}
-
-# Local Variables:
-# tab-width:2
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=2 shiftwidth=2:
deleted file mode 100644
--- a/gfx/angle/build/common.gypi
+++ /dev/null
@@ -1,190 +0,0 @@
-# Copyright (c) 2010 The ANGLE Project Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-{
- 'variables': {
- 'component%': 'static_library',
- # angle_code is set to 1 for the core ANGLE targets defined in src/build_angle.gyp.
- # angle_code is set to 0 for test code, sample code, and third party code.
- # When angle_code is 1, we build with additional warning flags on Mac and Linux.
- 'angle_code%': 0,
- 'gcc_or_clang_warnings': [
- '-Wall',
- '-Wchar-subscripts',
- '-Werror',
- '-Wextra',
- '-Wformat=2',
- '-Winit-self',
- '-Wno-sign-compare',
- '-Wno-unused-function',
- '-Wno-unused-parameter',
- '-Wno-unknown-pragmas',
- '-Wpacked',
- '-Wpointer-arith',
- '-Wundef',
- '-Wwrite-strings',
- ],
- },
- 'target_defaults': {
- 'default_configuration': 'Debug',
- 'variables': {
- 'warn_as_error%': 1,
- },
- 'target_conditions': [
- ['warn_as_error == 1', {
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'WarnAsError': 'true',
- },
- },
- }],
- ],
- 'configurations': {
- 'Common': {
- 'abstract': 1,
- 'msvs_configuration_attributes': {
- 'OutputDirectory': '$(SolutionDir)$(ConfigurationName)',
- 'IntermediateDirectory': '$(OutDir)\\obj\\$(ProjectName)',
- 'CharacterSet': '1', # UNICODE
- },
- 'msvs_configuration_platform': 'Win32',
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'BufferSecurityCheck': 'true',
- 'DebugInformationFormat': '3',
- # TODO(alokp): Disable exceptions before integrating with chromium.
- #'ExceptionHandling': '0',
- 'EnableFunctionLevelLinking': 'true',
- 'MinimalRebuild': 'false',
- 'PreprocessorDefinitions': [
- '_CRT_SECURE_NO_DEPRECATE',
- '_HAS_EXCEPTIONS=0',
- '_WIN32_WINNT=0x0600',
- '_WINDOWS',
- 'NOMINMAX',
- 'WIN32',
- 'WIN32_LEAN_AND_MEAN',
- 'WINVER=0x0600',
- ],
- 'RuntimeTypeInfo': 'false',
- 'WarningLevel': '4',
- 'DisableSpecificWarnings': [4100, 4127, 4189, 4239, 4244, 4245, 4512, 4702],
- },
- 'VCLinkerTool': {
- 'FixedBaseAddress': '1',
- 'GenerateDebugInformation': 'true',
- 'ImportLibrary': '$(OutDir)\\lib\\$(TargetName).lib',
- 'MapFileName': '$(OutDir)\\$(TargetName).map',
- # Most of the executables we'll ever create are tests
- # and utilities with console output.
- 'SubSystem': '1', # /SUBSYSTEM:CONSOLE
- 'AdditionalLibraryDirectories': [
- '$(ProgramFiles)/Windows Kits/8.0/Lib/win8/um/x86',
- ],
- },
- 'VCLibrarianTool': {
- 'AdditionalLibraryDirectories': [
- '$(ProgramFiles)/Windows Kits/8.0/Lib/win8/um/x86',
- ],
- },
- 'VCResourceCompilerTool': {
- 'Culture': '1033',
- },
- },
- 'msvs_system_include_dirs': [
- '$(ProgramFiles)/Windows Kits/8.0/Include/shared',
- '$(ProgramFiles)/Windows Kits/8.0/Include/um',
- ],
- }, # Common
- 'Debug': {
- 'inherit_from': ['Common'],
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'Optimization': '0', # /Od
- 'PreprocessorDefinitions': ['_DEBUG'],
- 'BasicRuntimeChecks': '3',
- 'RuntimeLibrary': '1', # /MTd (debug static)
- },
- 'VCLinkerTool': {
- 'LinkIncremental': '2',
- },
- },
- 'xcode_settings': {
- 'COPY_PHASE_STRIP': 'NO',
- 'GCC_OPTIMIZATION_LEVEL': '0',
- },
- }, # Debug
- 'Release': {
- 'inherit_from': ['Common'],
- 'msvs_settings': {
- 'VCCLCompilerTool': {
- 'Optimization': '2', # /Os
- 'PreprocessorDefinitions': ['NDEBUG'],
- 'RuntimeLibrary': '0', # /MT (static)
- },
- 'VCLinkerTool': {
- 'LinkIncremental': '1',
- },
- },
- }, # Release
- }, # configurations
- 'conditions': [
- ['component=="shared_library"', {
- 'defines': ['COMPONENT_BUILD'],
- }],
- ],
- }, # target_defaults
- 'conditions': [
- ['OS=="win"', {
- 'target_defaults': {
- 'msvs_cygwin_dirs': ['../third_party/cygwin'],
- },
- }],
- ['OS!="win" and OS!="mac"', {
- 'target_defaults': {
- 'cflags': [
- '-pthread',
- '-fno-exceptions',
- ],
- 'ldflags': [
- '-pthread',
- ],
- 'configurations': {
- 'Debug': {
- 'variables': {
- 'debug_optimize%': '0',
- },
- 'defines': [
- '_DEBUG',
- ],
- 'cflags': [
- '-O>(debug_optimize)',
- '-g',
- ],
- }
- },
- },
- }],
- ['angle_code==1', {
- 'target_defaults': {
- 'conditions': [
- ['OS=="mac"', {
- 'xcode_settings': {
- 'WARNING_CFLAGS': ['<@(gcc_or_clang_warnings)']
- },
- }],
- ['OS!="win" and OS!="mac"', {
- 'cflags': ['<@(gcc_or_clang_warnings)']
- }],
- ]
- }
- }],
- ],
-}
-
-# Local Variables:
-# tab-width:2
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=2 shiftwidth=2:
deleted file mode 100644
--- a/gfx/angle/build/gyp_angle
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/python
-
-# Copyright (c) 2010 The ANGLE Project Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# This script is wrapper for ANGLE that adds some support for how GYP
-# is invoked by ANGLE beyond what can be done in the gclient hooks.
-
-import os
-import sys
-
-script_dir = os.path.dirname(__file__)
-angle_dir = os.path.normpath(os.path.join(script_dir, os.pardir))
-
-sys.path.append(os.path.join(angle_dir, 'third_party', 'gyp', 'pylib'))
-import gyp
-
-if __name__ == '__main__':
- args = sys.argv[1:]
-
- print 'Updating projects from gyp files...'
- sys.stdout.flush()
-
- # Set the depth to get the top-level Makefile generated into the
- # correct directory. This only has an effect on Linux.
- args.append('--depth');
- args.append('./trunk');
- # Add common.gypi to the include path.
- args.append('-I' + os.path.join(script_dir, 'common.gypi'))
- # Add all.gyp as the main gyp file to be generated.
- args.append(os.path.join(script_dir, 'all.gyp'))
- sys.exit(gyp.main(args))
deleted file mode 100644
--- a/gfx/angle/extensions/ANGLE_depth_texture.txt
+++ /dev/null
@@ -1,402 +0,0 @@
-Name
-
- ANGLE_depth_texture
-
-Name Strings
-
- GL_ANGLE_depth_texture
-
-Contributors
-
- Nicolas Capens, TransGaming
- Daniel Koch, TransGaming
- Shannon Woods, TransGaming
- Kenneth Russell, Google
- Vangelis Kokkevis, Google
- Gregg Tavares, Google
- Contributors to OES_depth_texture
- Contributors to OES_packed_depth_stencil
-
-Contact
-
- Shannon Woods, TransGaming (shannon 'dot' woods 'at' transgaming.com)
-
-Status
-
- Implemented in ANGLE.
-
-Version
-
- Last Modified Date: February 25, 2013
- Revision: #4
-
-Number
-
- TBD
-
-Dependencies
-
- OpenGL ES 2.0 is required.
- This extension is written against the OpenGL ES 2.0.25 specification
-
- OES_packed_depth_stencil affects the definition of this extension.
-
- EXT_texture_storage affects the definition of this extension.
-
-Overview
-
- This extension defines support for 2D depth and depth-stencil
- textures in an OpenGL ES implementation.
-
- This extension incorporates the depth texturing functionality of
- OES_depth_texture and OES_packed_depth_stencil, but does not
- provide the ability to load existing data via TexImage2D or
- TexSubImage2D. This extension also allows implementation
- variability in which components from a sampled depth texture
- contain the depth data. Depth textures created with this
- extension only support 1 level.
-
-New Procedures and Functions
-
- None
-
-New Tokens
-
- Accepted by the <format> parameter of TexImage2D and TexSubImage2D and
- <internalformat> parameter of TexImage2D:
-
- DEPTH_COMPONENT 0x1902
- DEPTH_STENCIL_OES 0x84F9
-
- Accepted by the <type> parameter of TexImage2D, TexSubImage2D:
-
- UNSIGNED_SHORT 0x1403
- UNSIGNED_INT 0x1405
- UNSIGNED_INT_24_8_OES 0x84FA
-
- Accepted by the <internalformat> parameter of TexStorage2DEXT:
-
- DEPTH_COMPONENT16 0x81A5
- DEPTH_COMPONENT32_OES 0x81A7
- DEPTH24_STENCIL8_OES 0x88F0
-
-Additions to Chapter 2 of the OpenGL ES 2.0 Specification (OpenGL Operation)
-
- Update Section 2.10.5 "Shader Execution" in the subsection titled
- "Texture Access" add a new paragraph before the last paragraph add
- this line:
-
- "The stencil index texture internal component is ignored if the base
- internal format is DEPTH_STENCIL_OES.
-
- If a vertex shader uses..."
-
-Additions to Chapter 3 of the OpenGL ES 2.0 specification (Rasterization)
-
- Add the following rows to Table 3.2 (page 62):
-
- type Parameter GL Data Type Special
- ------------------------------------------------
- ... ... ...
- UNSIGNED_SHORT ushort No
- UNSIGNED_INT uint No
- UNSIGNED_INT_24_8_OES uint Yes
-
- Add the following rows to Table 3.3 (page 62):
-
- Format Name Element Meaning and Order Target Buffer
- ------------------------------------------------------------------
- ... ... ...
- DEPTH_COMPONENT Depth Depth
- DEPTH_STENCIL_OES Depth and Stencil Index Depth and Stencil
- ... ... ...
-
- Add a row to Table 3.5 "Packed pixel formats" (page 64):
-
- type Parameter GL Type Components Pixel Formats
- ------------------------------------------------------------------
- ... ... ... ...
- UNSIGNED_INT_24_8_OES uint 2 DEPTH_STENCIL_OES
-
- Add a new table after Table 3.6 (page 64):
-
- UNSIGNED_INT_24_8_OES
-
- 31 30 29 28 27 26 ... 12 11 10 9 8 7 6 5 4 3 2 1 0
- +----------------------------------+---------------+
- | 1st Component | 2nd Component |
- +----------------------------------+---------------+
-
- Table 3.6.B: UNSIGNED_INT formats
-
- Add a row to Table 3.7 "Packed pixel field assignments" (page 65):
-
- Format | 1st 2nd 3rd 4th
- ------------------+-------------------------------
- ... | ... ... ... ...
- DEPTH_STENCIL_OES | depth stencil N/A N/A
-
- Add the following paragraph to the end of the section "Conversion to
- floating-point" (page 65):
-
- "For groups of components that contain both standard components and index
- elements, such as DEPTH_STENCIL_OES, the index elements are not converted."
-
- In section 3.7.1 "Texture Image Specification", update page 67 to
- say:
-
- "The selected groups are processed as described in section 3.6.2, stopping
- just before final conversion. Each R, G, B, A, or depth value so generated
- is clamped to [0, 1], while the stencil index values are masked by 2^n-1,
- where n is the number of stencil bits in the internal format resolution
- (see below).
-
- Components are then selected from the resulting R, G, B, A, depth, or
- stencil index values to obtain a texture with the base internal format
- specified by <internalformat>. Table 3.8 summarizes the mapping of R, G,
- B, A, depth, or stencil values to texture components, as a function of the
- base internal format of the texture image. <internalformat> may be
- specified as one of the internal format symbolic constants listed in
- table 3.8. Specifying a value for <internalformat> that is not one of the
- above values generates the error INVALID_VALUE. If <internalformat> does
- not match <format>, the error INVALID_OPERATION is generated.
-
- Textures with a base internal format of DEPTH_COMPONENT or
- DEPTH_STENCIL_OES are supported by texture image specification commands
- only if <target> is TEXTURE_2D. Using these formats in conjunction with
- any other <target> will result in an INVALID_OPERATION error.
-
- Textures with a base internal format of DEPTH_COMPONENT or
- DEPTH_STENCIL_OES only support one level of image data. Specifying a
- non-zero value for <level> will result in an INVALID_OPERATION error.
-
- Textures with a base internal format of DEPTH_COMPONENT or DEPTH_STENCIL_OES
- require either depth component data or depth/stencil component data.
- Textures with other base internal formats require RGBA component data. The
- error INVALID_OPERATION is generated if the base internal format is
- DEPTH_COMPONENT or DEPTH_STENCIL_OES and <format> is not DEPTH_COMPONENT or
- DEPTH_STENCIL_OES, or if the base internal format is not DEPTH_COMPONENT or
- DEPTH_STENCIL_OES and <format> is DEPTH_COMPONENT or DEPTH_STENCIL_OES.
-
- Textures with a base internal format of DEPTH_COMPONENT or
- DEPTH_STENCIL_OES do not support loading image data via the TexImage
- commands. They can only have their contents specified by rendering
- to them. The INVALID_OPERATION error is generated by the TexImage2D
- command if <data> is not NULL for such textures."
-
- Add a row to table 3.8 (page 68), and update the title of the
- second column:
-
- Base Internal Format RGBA, Depth and Stencil Values Internal Components
- -------------------------------------------------------------------------
- ... ... ...
- DEPTH_COMPONENT Depth D
- DEPTH_STENCIL_OES Depth,Stencil D,S
- ... ... ...
-
- Update the caption for table 3.8 (page 68)
-
- "Table 3.8: Conversion from RGBA, depth, and stencil pixel components to
- internal texture components. Texture components R, G, B, A, and L are
- converted back to RGBA colors during filtering as shown in table 3.12.
- Texture components D are converted to RGBA colors as described in
- section 3.7.8-1/2."
-
- Add the following to section 3.7.2 "Alternate Texture Image Specification
- Commands":
-
- "CopyTexImage2D and CopyTexSubImage2D generate the INVALID_OPERATION
- error if the base internal format of the destination texture is
- DEPTH_COMPONENT or DEPTH_STENCIL_OES.
-
- TexSubImage2D generates the INVALID_OPERATION error if the base internal
- format of the texture is DEPTH_COMPONENT or DEPTH_STENCIL_OES."
-
- Add a new section between sections 3.7.8 and 3.7.9:
-
- "3.7.8-1/2 Depth/Stencil Textures
-
- If the currently bound texture's base internal format is DEPTH_COMPONENT or
- DEPTH_STENCIL_OES, then the output of the texture unit is as described
- below. Otherwise, the texture unit operates in the normal manner.
-
- Let <D_t> be the depth texture value, provided by the shader's texture lookup
- function. Then the effective texture value is computed as follows:
- <Tau> = <D_t>
-
- If the texture image has a base internal format of DEPTH_STENCIL_OES, then
- the stencil index texture component is ignored. The texture value <Tau> does
- not include a stencil index component, but includes only the depth
- component.
-
- The resulting <Tau> is assigned to <R_t>. In some implementations, <Tau> is
- also assigned to <G_t>, <B_t>, or <A_t>. Thus in table 3.12, textures with
- depth component data behave as if their base internal format is RGBA, with
- values in <G_t>, <B_t>, and <A_t> being implementation dependent."
-
- Add the following to section 3.7.11 "Mipmap Generation":
-
- "If the level zero array contains depth or depth-stencil data, the
- error INVALID_OPERATION is generated."
-
- Insert a new paragraph after the first paragraph of the "Texture Access"
- subsection of section 3.8.2 on page 87, which says:
-
- "Texture lookups involving textures with depth component data generate
- a texture source color by using depth data directly, as described in
- section 3.7.8-1/2. The stencil texture internal component is ignored
- if the base internal format is DEPTH_STENCIL_OES."
-
-Additions to Chapter 4 of the OpenGL ES 2.0 specification (Per-Fragment
-Operations and the Framebuffer)
-
- In section 4.4.5 "Framebuffer Completeness", replace the the 3rd
- paragraph with the following text:
-
- "* An internal format is color-renderable if it is one of the formats
- from table 4.5 noted as color-renderable or if it is unsized format
- RGBA or RGB. No other formats, including compressed internal formats,
- are color-renderable.
-
- * An internal format is depth-renderable if it is one of the sized
- internal formats from table 4.5 noted as depth-renderable, if it
- is the unsized format DEPTH_COMPONENT or if it is the internal
- format value of DEPTH24_STENCIL8_OES. No other formats are
- depth-renderable.
-
- * An internal format is stencil-renderable if it is one of the sized
- internal formats from table 4.5 noted as stencil-renderable or if it
- is DEPTH24_STENCIL8_OES. No other formats are stencil-renderable."
-
-Additions to Chapter 5 of the OpenGL ES 2.0 Specification (Special
-Functions)
-
- None.
-
-Additions to Chapter 6 of the OpenGL ES 2.0 Specification (State and State
-Requests)
-
- None.
-
-Interactions with OES_packed_depth_stencil
-
- If OES_packed_depth_stencil is not supported, mentions of
- DEPTH_STENCIL_OES and UNSIGNED_INT_24_8_OES as a format/type combinations
- for TexImage2D and TexSubImage2D are omitted. Mentions of
- the internal format DEPTH24_STENCIL8_OES are also omitted.
-
-Interactions with EXT_texture_storage
-
- If EXT_texture_storage is supported the following internalformat
- to format/type mappings are used:
-
- <internalformat> <format> <type>
- ---------------- -------- ------
- DEPTH_COMPONENT16 DEPTH_COMPONENT UNSIGNED_SHORT
- DEPTH_COMPONENT32_OES DEPTH_COMPONENT UNSIGNED_INT
- DEPTH24_STENCIL8_OES DEPTH_STENCIL_OES UNSIGNED_INT
-
- Textures with the above <internalformats> only support one level of
- image data. Specifying a value other than one for the <levels> parameter
- to TexStorage2DEXT will result in an INVALID_OPERATION error.
-
- If EXT_texture_storage is not supported, ignore any references
- to TexStorage2DEXT.
-
-Errors
-
- The error INVALID_OPERATION is generated by TexImage2D if <format> and
- <internalformat> are DEPTH_COMPONENT and <type> is not UNSIGNED_SHORT,
- or UNSIGNED_INT.
-
- The error INVALID_OPERATION is generated by TexSubImage2D if <format> is
- DEPTH_COMPONENT and <type> is not UNSIGNED_SHORT, or UNSIGNED_INT.
-
- The error INVALID_OPERATION is generated by TexImage2D if <format> and
- <internalformat> are not DEPTH_COMPONENT and <type> is UNSIGNED_SHORT,
- or UNSIGNED_INT.
-
- The error INVALID_OPERATION is generated by TexSubImage2D if <format> is
- not DEPTH_COMPONENT and <type> is UNSIGNED_SHORT, or UNSIGNED_INT.
-
- The error INVALID_OPERATION is generated by TexImage2D if <format> and
- <internalformat> are DEPTH_STENCIL_OES and <type> is not
- UNSIGNED_INT_24_8_OES.
-
- The error INVALID_OPERATION is generated by TexSubImage2D if <format>
- is DEPTH_STENCIL_OES and <type> is not UNSIGNED_INT_24_8_OES.
-
- The error INVALID_OPERATION is generated by TexImage2D if <format> and
- <internalformat> is not DEPTH_STENCIL_OES and <type> is
- UNSIGNED_INT_24_8_OES.
-
- The error INVALID_OPERATION is generated by TexSubImage2D if <format>
- is not DEPTH_STENCIL_OES and <type> is UNSIGNED_INT_24_8_OES.
-
- The error INVALID_OPERATION is generated in the following situations:
- - TexImage2D is called with <format> and <internalformat> of
- DEPTH_COMPONENT or DEPTH_STENCIL_OES and
- - <target> is not TEXTURE_2D,
- - <data> is not NULL, or
- - <level> is not zero.
- - TexSubImage2D is called with <format> of DEPTH_COMPONENT or
- DEPTH_STENCIL_OES.
- - TexStorage2DEXT is called with <internalformat> of DEPTH_COMPONENT16,
- DEPTH_COMPONENT32_OES, or DEPTH24_STENCIL8_OES, and
- - <target> is not TEXTURE_2D, or
- - <levels> is not one.
- - CopyTexImage2D is called with an <internalformat> that has a base
- internal format of DEPTH_COMPONENT or DEPTH_STENCIL_OES.
- - CopyTexSubImage2D is called with a target texture that has a base
- internal format of DEPTH_COMPONENT or DEPTH_STENCIL_OES.
- - GenerateMipmap is called on a texture that has a base internal format
- of DEPTH_COMPONENT or DEPTH_STENCIL_OES.
-
-New State
-
- None.
-
-Issues
-
- 1) What are the differences between this extension and OES_depth_texture
- and OES_packed_depth_stencil?
-
- RESOLVED: This extension:
- - does not support loading pre-baked depth stencil data via
- TexImage2D or TexSubImage2D.
- - allows variability in the y-, z-, and w-components of the sample
- results from depth textures.
- - only supports one level textures.
- - explicitly lists the errors for unsupported functionality.
- Since these were not clearly specified in the OES_depth_texture
- extension there may be differences in error values between
- implementations of OES_depth_texture and ANGLE_depth_texture.
- This specification was also rebased to apply against the OpenGL ES 2.0
- specification instead of the OpenGL specification, making it more
- obvious what all the functionality changes are.
-
- 2) Why does TexSubImage2D accept the new format/type combinations even
- though it does not actually support loading data?
-
- RESOLVED: This was done to be more consistent with the OES_depth_texture
- extension and to make it easier to add support for loading texture
- data if it is possible to support in the future.
-
- 3) Why are only 1-level depth textures supported?
-
- RESOLVED: The only use for multiple levels of depth textures would
- be for fitlered texturing. However since it is not possible to
- render to non-zero-level texture levels in OpenGL ES 2.0, and since
- this extension forbids loading existing data and GenerateMipmap on
- depth textures, it is impossible to initialize or specify contents
- for non-zero levels of depth textures.
-
-Revision History
-
- 02/25/2013 swoods revise to allow texture lookup to guarantee depth values
- only in red channel of sample result.
- 06/04/2012 dgkoch fix errors, disallow multi-level depth textures.
- 05/30/2012 dgkoch minor updates and add issues.
- 05/23/2012 dgkoch intial revision based on OES_depth_texture and
- OES_packed_depth_stencil and rebased against the ES 2.0 spec
-
deleted file mode 100644
--- a/gfx/angle/extensions/ANGLE_framebuffer_blit.txt
+++ /dev/null
@@ -1,437 +0,0 @@
-Name
-
- ANGLE_framebuffer_blit
-
-Name Strings
-
- GL_ANGLE_framebuffer_blit
-
-Contributors
-
- Contributors to EXT_framebuffer_blit
- Daniel Koch, TransGaming Inc.
- Shannon Woods, TransGaming Inc.
- Kenneth Russell, Google Inc.
- Vangelis Kokkevis, Google Inc.
-
-Contact
-
- Daniel Koch, TransGaming Inc. (daniel 'at' transgaming 'dot' com)
-
-Status
-
- Implemented in ANGLE ES2
-
-Version
-
- Last Modified Date: Sept 22, 2012
- Author Revision: 4
-
-Number
-
- OpenGL ES Extension #83
-
-Dependencies
-
- OpenGL ES 2.0 is required.
-
- The extension is written against the OpenGL ES 2.0 specification.
-
- OES_texture_3D affects the definition of this extension.
-
-Overview
-
- This extension modifies framebuffer objects by splitting the
- framebuffer object binding point into separate DRAW and READ
- bindings. This allows copying directly from one framebuffer to
- another. In addition, a new high performance blit function is
- added to facilitate these blits and perform some data conversion
- where allowed.
-
-IP Status
-
- No known IP claims.
-
-New Procedures and Functions
-
- void BlitFramebufferANGLE(int srcX0, int srcY0, int srcX1, int srcY1,
- int dstX0, int dstY0, int dstX1, int dstY1,
- bitfield mask, enum filter);
-
-New Tokens
-
- Accepted by the <target> parameter of BindFramebuffer,
- CheckFramebufferStatus, FramebufferTexture2D, FramebufferTexture3DOES,
- FramebufferRenderbuffer, and
- GetFramebufferAttachmentParameteriv:
-
- // (reusing the tokens from EXT_framebuffer_blit)
- READ_FRAMEBUFFER_ANGLE 0x8CA8
- DRAW_FRAMEBUFFER_ANGLE 0x8CA9
-
- Accepted by the <pname> parameters of GetIntegerv and GetFloatv:
-
- // (reusing the tokens from EXT_framebuffer_blit)
- DRAW_FRAMEBUFFER_BINDING_ANGLE 0x8CA6 // alias FRAMEBUFFER_BINDING
- READ_FRAMEBUFFER_BINDING_ANGLE 0x8CAA
-
-
-Additions to Chapter 3 of the OpenGL ES 2.0 Specification (Rasterization)
-
- Change the last paragraph of section 3.7.2 (Alternate Texture Image
- Specification Commands) to:
-
- "Calling CopyTexSubImage3DOES, CopyTexImage2D or CopyTexSubImage2D will
- result in an INVALID_FRAMEBUFFER_OPERATION error if the object bound
- to READ_FRAMEBUFFER_BINDING_ANGLE is not "framebuffer complete"
- (section 4.4.4.2)."
-
-Additions to Chapter 4 of the OpenGL ES 2.0 Specification (Per-Fragment
-Operations and the Framebuffer)
-
- Change the first word of Chapter 4 from "The" to "A".
-
- Append to the introduction of Chapter 4:
-
- "Conceptually, the GL has two active framebuffers; the draw
- framebuffer is the destination for rendering operations, and the
- read framebuffer is the source for readback operations. The same
- framebuffer may be used for both drawing and reading. Section
- 4.4.1 describes the mechanism for controlling framebuffer usage."
-
- Modify the first sentence of the last paragraph of section 4.1.1 as follows:
-
- "While an application-created framebuffer object is bound to
- DRAW_FRAMEBUFFER_ANGLE, the pixel ownership test always passes."
-
- Add to 4.3.1 (Reading Pixels), right before the subsection titled
- "Obtaining Pixels from the Framebuffer":
-
- "Calling ReadPixels generates INVALID_FRAMEBUFFER_OPERATION if
- the object bound to READ_FRAMEBUFFER_BINDING_ANGLE is not "framebuffer
- complete" (section 4.4.4.2). GetIntegerv generates an INVALID_OPERATION
- error if the object bound to READ_FRAMEBUFFER_BINDING_ANGLE is not
- framebuffer complete, or if the GL is using a framebuffer object
- (i.e. READ_FRAMEBUFFER_BINDING_ANGLE is non-zero) and there is no color
- attachment."
-
- Insert a new section 4.3.2 titled "Copying Pixels" and renumber the
- subsequent sections. Add the following text:
-
- "BlitFramebufferANGLE transfers a rectangle of pixel values from one
- region of the read framebuffer to another in the draw framebuffer.
-
- BlitFramebufferANGLE(int srcX0, int srcY0, int srcX1, int srcY1,
- int dstX0, int dstY0, int dstX1, int dstY1,
- bitfield mask, enum filter);
-
- <mask> is the bitwise OR of a number of values indicating which
- buffers are to be copied. The values are COLOR_BUFFER_BIT,
- DEPTH_BUFFER_BIT, and STENCIL_BUFFER_BIT, which are described in
- section 4.2.3. The pixels corresponding to these buffers are
- copied from the source rectangle, bound by the locations (srcX0,
- srcY0) and (srcX1, srcY1), to the destination rectangle, bound by
- the locations (dstX0, dstY0) and (dstX1, dstY1). The lower bounds
- of the rectangle are inclusive, while the upper bounds are
- exclusive.
-
- The actual region taken from the read framebuffer is limited to the
- intersection of the source buffers being transferred, which may include
- the color buffer, the depth buffer, and/or the stencil buffer depending on
- <mask>. The actual region written to the draw framebuffer is limited to the
- intersection of the destination buffers being written, which may include
- the color buffer, the depth buffer, and/or the stencil buffer
- depending on <mask>. Whether or not the source or destination regions are
- altered due to these limits, the offset applied to pixels being transferred
- is performed as though no such limits were present.
-
- Stretching and scaling during a copy are not supported. If the source
- and destination rectangle dimensions do not match, no copy is
- performed and an INVALID_OPERATION error is generated.
- Because stretching is not supported, <filter> must be NEAREST and
- no filtering is applied.
-
- Flipping during a copy is not supported. If either the source or
- destination rectangle specifies a negative dimension, the error
- INVALID_OPERATION is generated. If both the source and
- destination rectangles specify a negative dimension for the same
- direction, no reversal is required and the operation is supported.
-
- If the source and destination buffers are identical, and the
- source and destination rectangles overlap, the result of the blit
- operation is undefined.
-
- The pixel copy bypasses the fragment pipeline. The only fragment
- operations which affect the blit are the pixel ownership test and
- the scissor test.
-
- If a buffer is specified in <mask> and does not exist in both the
- read and draw framebuffers, the corresponding bit is silently
- ignored.
-
- Calling BlitFramebufferANGLE will result in an
- INVALID_FRAMEBUFFER_OPERATION error if the objects bound to
- DRAW_FRAMEBUFFER_BINDING_ANGLE and READ_FRAMEBUFFER_BINDING_ANGLE are
- not "framebuffer complete" (section 4.4.4.2)."
-
- Calling BlitFramebufferANGLE will result in an INVALID_OPERATION
- error if <mask> includes COLOR_BUFFER_BIT and the source and
- destination color formats to not match.
-
- Calling BlitFramebufferANGLE will result in an INVALID_OPERATION
- error if <mask> includes DEPTH_BUFFER_BIT or STENCIL_BUFFER_BIT
- and the source and destination depth and stencil buffer formats do
- not match.
-
- If <mask> includes DEPTH_BUFFER_BIT or STENCIL_BUFFER_BIT, only
- complete buffers can be copied. If the source rectangle does not
- specify the complete source buffer or the destination rectangle
- (after factoring the scissor region, if applicable) does not specify
- the complete destination buffer, an INVALID_OPERATION
- error is generated.
-
- Modify the beginning of section 4.4.1 as follows:
-
- "The default framebuffer for rendering and readback operations is
- provided by the windowing system. In addition, named framebuffer
- objects can be created and operated upon. The namespace for
- framebuffer objects is the unsigned integers, with zero reserved
- by the GL for the default framebuffer.
-
- A framebuffer object is created by binding an unused name to
- DRAW_FRAMEBUFFER_ANGLE or READ_FRAMEBUFFER_ANGLE. The binding is
- effected by calling
-
- void BindFramebuffer(enum target, uint framebuffer);
-
- with <target> set to the desired framebuffer target and
- <framebuffer> set to the unused name. The resulting framebuffer
- object is a new state vector, comprising one set of the state values
- listed in table 6.23 for each attachment point of the
- framebuffer, set to the same initial values. There is one
- color attachment point, plus one each
- for the depth and stencil attachment points.
-
- BindFramebuffer may also be used to bind an existing
- framebuffer object to DRAW_FRAMEBUFFER_ANGLE or
- READ_FRAMEBUFFER_ANGLE. If the bind is successful no change is made
- to the state of the bound framebuffer object, and any previous
- binding to <target> is broken.
-
- If a framebuffer object is bound to DRAW_FRAMEBUFFER_ANGLE or
- READ_FRAMEBUFFER_ANGLE, it becomes the target for rendering or
- readback operations, respectively, until it is deleted or another
- framebuffer is bound to the corresponding bind point. Calling
- BindFramebuffer with <target> set to FRAMEBUFFER binds the
- framebuffer to both DRAW_FRAMEBUFFER_ANGLE and READ_FRAMEBUFFER_ANGLE.
-
- While a framebuffer object is bound, GL operations on the target
- to which it is bound affect the images attached to the bound
- framebuffer object, and queries of the target to which it is bound
- return state from the bound object. Queries of the values
- specified in table 6.20 (Implementation Dependent Pixel Depths)
- and table 6.yy (Framebuffer Dependent Values) are
- derived from the framebuffer object bound to DRAW_FRAMEBUFFER_ANGLE.
-
- The initial state of DRAW_FRAMEBUFFER_ANGLE and READ_FRAMEBUFFER_ANGLE
- refers to the default framebuffer provided by the windowing
- system. In order that access to the default framebuffer is not
- lost, it is treated as a framebuffer object with the name of 0.
- The default framebuffer is therefore rendered to and read from
- while 0 is bound to the corresponding targets. On some
- implementations, the properties of the default framebuffer can
- change over time (e.g., in response to windowing system events
- such as attaching the context to a new windowing system drawable.)"
-
- Change the description of DeleteFramebuffers as follows:
-
- "<framebuffers> contains <n> names of framebuffer objects to be
- deleted. After a framebuffer object is deleted, it has no
- attachments, and its name is again unused. If a framebuffer that
- is currently bound to one or more of the targets
- DRAW_FRAMEBUFFER_ANGLE or READ_FRAMEBUFFER_ANGLE is deleted, it is as
- though BindFramebuffer had been executed with the corresponding
- <target> and <framebuffer> zero. Unused names in <framebuffers>
- are silently ignored, as is the value zero."
-
-
- In section 4.4.3 (Renderbuffer Objects), modify the first two sentences
- of the description of FramebufferRenderbuffer as follows:
-
- "<target> must be DRAW_FRAMEBUFFER_ANGLE, READ_FRAMEBUFFER_ANGLE, or
- FRAMEBUFFER. If <target> is FRAMEBUFFER, it behaves as
- though DRAW_FRAMEBUFFER_ANGLE was specified. The INVALID_OPERATION
- error is generated if the value of the corresponding binding is zero."
-
- In section 4.4.3 (Renderbuffer Objects), modify the first two sentences
- of the description of FramebufferTexture2D as follows:
-
- "<target> must be DRAW_FRAMEBUFFER_ANGLE,
- READ_FRAMEBUFFER_ANGLE, or FRAMEBUFFER. If <target> is
- FRAMEBUFFER, it behaves as though DRAW_FRAMEBUFFER_ANGLE was
- specified. The INVALID_OPERATION error is generated if the value of the
- corresponding binding is zero."
-
- In section 4.4.5 (Framebuffer Completeness), modify the first sentence
- of the description of CheckFramebufferStatus as follows:
-
- "If <target> is not DRAW_FRAMEBUFFER_ANGLE, READ_FRAMEBUFFER_ANGLE or
- FRAMEBUFFER, the error INVALID_ENUM is generated. If <target> is
- FRAMEBUFFER, it behaves as though DRAW_FRAMEBUFFER_ANGLE was
- specified."
-
- Modify the first sentence of the subsection titled "Effects of Framebuffer
- Completeness on Framebuffer Operations" to be:
-
- "Attempting to render to or read from a framebuffer which is not
- framebuffer complete will generate an
- INVALID_FRAMEBUFFER_OPERATION error."
-
-
-
-Additions to Chapter 6 of the OpenGL 1.5 Specification (State and State
-Requests)
-
- In section 6.1.3, modify the first sentence of the description of
- GetFramebufferAttachmentParameteriv as follows:
-
- "<target> must be DRAW_FRAMEBUFFER_ANGLE, READ_FRAMEBUFFER_ANGLE or
- FRAMEBUFFER. If <target> is FRAMEBUFFER, it behaves as
- though DRAW_FRAMEBUFFER_ANGLE was specified."
-
- Modify the title of Table 6.23 (Framebuffer State) to be "Framebuffer
- (state per attachment point)".
-
-
-Dependencies on OES_texture_3D
-
- On an OpenGL ES implementation, in the absense of OES_texture_3D,
- omit references to FramebufferTexture3DOES and CopyTexSubImage3DOES.
-
-Errors
-
- The error INVALID_FRAMEBUFFER_OPERATION is generated if
- BlitFramebufferANGLE is called while the
- draw framebuffer is not framebuffer complete.
-
- The error INVALID_FRAMEBUFFER_OPERATION is generated if
- BlitFramebufferANGLE, ReadPixels, CopyTex{Sub}Image*, is called while the
- read framebuffer is not framebuffer complete.
-
- The error INVALID_OPERATION is generated if GetIntegerv is called
- while the read framebuffer is not framebuffer complete, or if there
- is no color attachment present on the read framebuffer object.
-
- The error INVALID_VALUE is generated by BlitFramebufferANGLE if
- <mask> has any bits set other than those named by
- COLOR_BUFFER_BIT, DEPTH_BUFFER_BIT or STENCIL_BUFFER_BIT.
-
- The error INVALID_OPERATION is generated if BlitFramebufferANGLE is
- called and <mask> includes DEPTH_BUFFER_BIT or STENCIL_BUFFER_BIT
- and the source and destination depth or stencil buffer formats do
- not match.
-
- The error INVALID_OPERATION is generated if BlitFramebufferANGLE is
- called and any of the following conditions are true:
- - the source and destination rectangle dimensions do not match
- (ie scaling or flipping is required).
- - <mask> includes COLOR_BUFFER_BIT and the source and destination
- buffer formats do not match.
- - <mask> includes DEPTH_BUFFER_BIT or STENCIL_BUFFER_BIT and the
- source or destination rectangles do not specify the entire source
- or destination buffer (after applying any scissor region).
-
- The error INVALID_ENUM is generated by BlitFramebufferANGLE if
- <filter> is not NEAREST.
-
- The error INVALID_ENUM is generated if BindFramebuffer,
- CheckFramebufferStatus, FramebufferTexture{2D|3DOES},
- FramebufferRenderbuffer, or
- GetFramebufferAttachmentParameteriv is called and <target> is
- not DRAW_FRAMEBUFFER_ANGLE, READ_FRAMEBUFFER_ANGLE or FRAMEBUFFER.
-
-New State
-
- (Add a new table 6.xx, "Framebuffer (state per framebuffer target binding point)")
-
- Get Value Type Get Command Initial Value Description Section
- ------------------------------ ---- ----------- -------------- ------------------- ------------
- DRAW_FRAMEBUFFER_BINDING_ANGLE Z+ GetIntegerv 0 framebuffer object bound 4.4.1
- to DRAW_FRAMEBUFFER_ANGLE
- READ_FRAMEBUFFER_BINDING_ANGLE Z+ GetIntegerv 0 framebuffer object 4.4.1
- to READ_FRAMEBUFFER_ANGLE
-
- Remove reference to FRAMEBUFFER_BINDING from Table 6.23.
-
- (Add a new table 6.yy, "Framebuffer Dependent Values")
-
- Get Value Type Get Command Initial Value Description Section
- ---------------------------- ---- ----------- -------------- ------------------- ------------
- SAMPLE_BUFFERS Z+ GetIntegerv 0 Number of multisample 3.2
- buffers
- SAMPLES Z+ GetIntegerv 0 Coverage mask size 3.2
-
- Remove the references to SAMPLE_BUFFERS and SAMPLES from Table 6.17.
-
-
-Issues
-
- 1) What should we call this extension?
-
- Resolved: ANGLE_framebuffer_blit.
-
- This extension is a result of a collaboration between Google and
- TransGaming for the open-source ANGLE project. Typically one would
- label a multi-vendor extension as EXT, but EXT_framebuffer_blit
- is already the name for this on Desktop GL. Additionally this
- isn't truely a multi-vendor extension because there is only one
- implementation of this. We'll follow the example of the open-source
- MESA project which uses the project name for the vendor suffix.
-
- 2) Why is this done as a separate extension instead of just supporting
- EXT_framebuffer_blit?
-
- To date, EXT_framebuffer_blit has not had interactions with OpenGL ES
- specified and, as far as we know, it has not previously been exposed on
- an ES 1.1 or ES 2.0 implementation. Because there are enough
- differences between Desktop GL and OpenGL ES, and since OpenGL ES 2.0
- has already subsumed the EXT_framebuffer_object functionality (with
- some changes) it was deemed a worthwhile exercise to fully specify the
- interactions. Additionally, some of the choices in exactly which
- functionality is supported by BlitFramebufferANGLE is dictated by
- what is reasonable to support on a implementation which is
- layered on Direct3D9. It is not expected that other implementations
- will necessary have the same set of restrictions or requirements.
-
- 3) How does this extension differ from EXT_framebuffer_blit?
-
- This extension is designed to be a pure subset of the
- EXT_framebuffer_blit functionality as applicable to OpenGL ES 2.0.
-
- Functionality that is unchanged:
- - the split DRAW and READ framebuffer attachment points and related sematics.
- - the token values for the DRAW/READ_FRAMEBUFFER and DRAW/READ_FRAMBUFFER_BINDING
- - the signature of the BlitFramebuffer entry-point.
-
- Additional restrictions imposed by BlitFramebufferANGLE:
- - no color conversions are supported
- - no scaling, stretching or flipping are supported
- - no filtering is supported (a consequence of no stretching)
- - only whole depth and/or stencil buffers can be copied
-
-Revision History
-
- Revision 1, 2010/07/06
- - copied from revision 15 of EXT_framebuffer_object
- - removed language that was clearly not relevant to ES2
- - rebased changes against the OpenGL ES 2.0 specification
- - added ANGLE-specific restrictions
- Revision 2, 2010/07/15
- - clarifications of implicit clamping to buffer sizes (from ARB_fbo)
- - clarify that D/S restricts apply after the scissor is applied
- - improve some error language
- Revision 3, 2010/08/06
- - add additional contributors, update implementation status
- Revision 4, 2012/09/22
- - document errors for GetIntegerv.
-
deleted file mode 100644
--- a/gfx/angle/extensions/ANGLE_framebuffer_multisample.txt
+++ /dev/null
@@ -1,363 +0,0 @@
-Name
-
- ANGLE_framebuffer_multisample
-
-Name Strings
-
- GL_ANGLE_framebuffer_multisample
-
-Contributors
-
- Contributors to EXT_framebuffer_multisample
- Daniel Koch, TransGaming Inc.
- Shannon Woods, TransGaming Inc.
- Kenneth Russell, Google Inc.
- Vangelis Kokkevis, Google Inc.
-
-Contacts
-
- Daniel Koch, TransGaming Inc. (daniel 'at' transgaming 'dot' com)
-
-Status
-
- Implemented in ANGLE ES2
-
-Version
-
- Last Modified Date: Aug 6, 2010
- Author Revision: #3
-
-Number
-
- OpenGL ES Extension #84
-
-Dependencies
-
- Requires OpenGL ES 2.0.
-
- Requires GL_ANGLE_framebuffer_blit (or equivalent functionality).
-
- The extension is written against the OpenGL ES 2.0 specification.
-
- OES_texture_3D affects the definition of this extension.
-
-Overview
-
- This extension extends the framebuffer object framework to
- enable multisample rendering.
-
- The new operation RenderbufferStorageMultisampleANGLE() allocates
- storage for a renderbuffer object that can be used as a multisample
- buffer. A multisample render buffer image differs from a
- single-sample render buffer image in that a multisample image has a
- number of SAMPLES that is greater than zero. No method is provided
- for creating multisample texture images.
-
- All of the framebuffer-attachable images attached to a framebuffer
- object must have the same number of SAMPLES or else the framebuffer
- object is not "framebuffer complete". If a framebuffer object with
- multisample attachments is "framebuffer complete", then the
- framebuffer object behaves as if SAMPLE_BUFFERS is one.
-
- The resolve operation is affected by calling
- BlitFramebufferANGLE (provided by the ANGLE_framebuffer_blit
- extension) where the source is a multisample application-created
- framebuffer object and the destination is a single-sample
- framebuffer object (either application-created or window-system
- provided).
-
-New Procedures and Functions
-
- void RenderbufferStorageMultisampleANGLE(
- enum target, sizei samples,
- enum internalformat,
- sizei width, sizei height);
-
-New Types
-
- None.
-
-New Tokens
-
- Accepted by the <pname> parameter of GetRenderbufferParameteriv:
-
- RENDERBUFFER_SAMPLES_ANGLE 0x8CAB
-
- Returned by CheckFramebufferStatus:
-
- FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE 0x8D56
-
- Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
- and GetFloatv:
-
- MAX_SAMPLES_ANGLE 0x8D57
-
-Additions to Chapter 2 of the OpenGL ES 2.0 Specification (OpenGL Operation)
-
-Additions to Chapter 3 of the OpenGL ES 2.0 Specification (Rasterization)
-
- Add to the last paragraph of 3.7.2 (Alternate Texture Image Specification)
- (as modified by ANGLE_framebuffer_blit) the following:
-
- "Calling CopyTexSubImage3DOES, CopyTexImage2D or CopyTexSubImage2D will
- result in INVALID_OPERATION being generated if the object bound to
- READ_FRAMEBUFFER_BINDING_ANGLE is "framebuffer complete" and the value
- of SAMPLE_BUFFERS is greater than zero."
-
-Additions to Chapter 4 of the OpenGL ES 2.0 Specification (Per-Fragment
-Operations and the Framebuffer)
-
- Add to 4.3.1 (Reading Pixels), right before the subsection titled
- "Obtaining Pixels from the Framebuffer":
-
- "ReadPixels generates INVALID_OPERATION if READ_FRAMEBUFFER_BINDING_ANGLE
- (section 4.4) is non-zero, the read framebuffer is framebuffer
- complete, and the value of SAMPLE_BUFFERS for the read framebuffer
- is greater than zero."
-
- In 4.3.2 (Copying Pixels), add to the section describing BlitFramebuffer
- that was added by ANGLE_framebuffer_blit.
-
- "If SAMPLE_BUFFERS for the read framebuffer is greater than zero and
- SAMPLE_BUFFERS for the draw framebuffer is zero, the samples
- corresponding to each pixel location in the source are converted to
- a single sample before being written to the destination.
-
- If SAMPLE_BUFFERS for the draw framebuffer is greater than zero,
- no copy is performed and an INVALID_OPERATION error is generated.
-
- If SAMPLE_BUFFERS for the read framebuffer is greater than zero and
- <mask> includes DEPTH_BUFFER_BIT or STENCIL_BUFFER_BIT, no copy is
- performed and an INVALID_OPERATION error is generated.
-
- If SAMPLE_BUFFERS for the read framebuffer is greater than zero and
- the format of the read and draw framebuffers are not identical, no
- copy is performed and an INVALID_OPERATION error is generated.
-
- If SAMPLE_BUFFERS for the read framebuffer is greater than zero, the
- dimensions of the source and destination rectangles provided to
- BlitFramebufferANGLE must be identical and must specify the complete
- source and destination buffers, otherwise no copy is performed and
- an INVALID_OPERATION error is generated."
-
- Modification to 4.4.3 (Renderbuffer Objects)
-
- Add, just above the definition of RenderbufferStorage:
-
- "The command
-
- void RenderbufferStorageMultisampleANGLE(
- enum target, sizei samples,
- enum internalformat,
- sizei width, sizei height);
-
- establishes the data storage, format, dimensions, and number of
- samples of a renderbuffer object's image. <target> must be
- RENDERBUFFER. <internalformat> must be one of the color-renderable,
- depth-renderable, or stencil-renderable formats described in table 4.5.
- <width> and <height> are the dimensions in pixels of the renderbuffer. If
- either <width> or <height> is greater than the value of
- MAX_RENDERBUFFER_SIZE, or if <samples> is greater than MAX_SAMPLES_ANGLE,
- then the error INVALID_VALUE is generated. If OpenGL ES is unable to
- create a data store of the requested size, the error OUT_OF_MEMORY
- is generated.
-
- Upon success, RenderbufferStorageMultisampleANGLE deletes any existing
- data store for the renderbuffer image and the contents of the data
- store after calling RenderbufferStorageMultisampleANGLE are undefined.
- RENDERBUFFER_WIDTH is set to <width>, RENDERBUFFER_HEIGHT is
- set to <height>, and RENDERBUFFER_INTERNAL_FORMAT is set to
- <internalformat>.
-
- If <samples> is zero, then RENDERBUFFER_SAMPLES_ANGLE is set to zero.
- Otherwise <samples> represents a request for a desired minimum
- number of samples. Since different implementations may support
- different sample counts for multisampled rendering, the actual
- number of samples allocated for the renderbuffer image is
- implementation dependent. However, the resulting value for
- RENDERBUFFER_SAMPLES_ANGLE is guaranteed to be greater than or equal
- to <samples> and no more than the next larger sample count supported
- by the implementation.
-
- An OpenGL ES implementation may vary its allocation of internal component
- resolution based on any RenderbufferStorageMultisampleANGLE parameter (except
- target), but the allocation and chosen internal format must not be a
- function of any other state and cannot be changed once they are
- established. The actual resolution in bits of each component of the
- allocated image can be queried with GetRenderbufferParameteriv."
-
- Modify the definiton of RenderbufferStorage as follows:
-
- "The command
-
- void RenderbufferStorage(enum target, enum internalformat,
- sizei width, sizei height);
-
- is equivalent to calling RenderbufferStorageMultisampleANGLE with
- <samples> equal to zero."
-
- In section 4.4.5 (Framebuffer Completeness) in the subsection
- titled "Framebuffer Completeness" add an entry to the bullet list:
-
- * The value of RENDERBUFFER_SAMPLES_ANGLE is the same for all attached
- images.
- { FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE }
-
- Also add a paragraph to the end of the section after the definition
- of CheckFramebufferStatus:
-
- "The values of SAMPLE_BUFFERS and SAMPLES are derived from the
- attachments of the currently bound framebuffer object. If the
- current DRAW_FRAMEBUFFER_BINDING_ANGLE is not "framebuffer complete",
- then both SAMPLE_BUFFERS and SAMPLES are undefined. Otherwise,
- SAMPLES is equal to the value of RENDERBUFFER_SAMPLES_ANGLE for the
- attached images (which all must have the same value for
- RENDERBUFFER_SAMPLES_ANGLE). Further, SAMPLE_BUFFERS is one if
- SAMPLES is non-zero. Otherwise, SAMPLE_BUFFERS is zero.
-
-Additions to Chapter 5 of the OpenGL ES 2.0 Specification (Special Functions)
-
-
-Additions to Chapter 6 of the OpenGL ES 2.0 Specification (State and State
-Requests)
-
- In section 6.1.3 (Enumeraged Queries), modify the third paragraph
- of the description of GetRenderbufferParameteriv as follows:
-
- "Upon successful return from GetRenderbufferParameteriv, if
- <pname> is RENDERBUFFER_WIDTH, RENDERBUFFER_HEIGHT,
- RENDERBUFFER_INTERNAL_FORMAT, or RENDERBUFFER_SAMPLES_ANGLE, then <params>
- will contain the width in pixels, height in pixels, internal format, or
- number of samples, respectively, of the image of the renderbuffer
- currently bound to <target>."
-
-
-Dependencies on ANGLE_framebuffer_blit
-
- ANGLE_framebuffer_blit is required. Technically, ANGLE_framebuffer_blit
- would not be required to support multisampled rendering, except for
- the fact that it provides the only method of doing a multisample
- resovle from a multisample renderbuffer.
-
-Dependencies on OES_texture_3D
-
- On an OpenGL ES implementation, in the absense of OES_texture_3D,
- omit references to CopyTexSubImage3DOES.
-
-Errors
-
- The error INVALID_OPERATION is generated if ReadPixels or
- CopyTex{Sub}Image* is called while READ_FRAMEBUFFER_BINDING_ANGLE
- is non-zero, the read framebuffer is framebuffer complete, and the
- value of SAMPLE_BUFFERS for the read framebuffer is greater than
- zero.
-
- If both the draw and read framebuffers are framebuffer complete and
- the draw framebuffer has a value of SAMPLE_BUFFERS that is greater
- than zero, then the error INVALID_OPERATION is generated if
- BlitFramebufferANGLE is called.
-
- If both the draw and read framebuffers are framebuffer complete and
- the read framebuffer has a value of SAMPLE_BUFFERS that is greater
- than zero, the error INVALID_OPERATION is generated if
- BlitFramebufferANGLE is called and any of the following conditions
- are true:
- - <mask> includes DEPTH_BUFFER_BIT or STENCIL_BUFFER_BIT.
- - the source or destination rectangles do not specify the entire
- source or destination buffer.
-
- If both the draw and read framebuffers are framebuffer complete and
- either has a value of SAMPLE_BUFFERS that is greater than zero, then
- the error INVALID_OPERATION is generated if BlitFramebufferANGLE is
- called and the formats of the draw and read framebuffers are not
- identical.
-
- If either the draw or read framebuffer is framebuffer complete and
- has a value of SAMPLE_BUFFERS that is greater than zero, then the
- error INVALID_OPERATION is generated if BlitFramebufferANGLE is called
- and the specified source and destination dimensions are not
- identical.
-
- If RenderbufferStorageMultisampleANGLE is called with <target> not
- equal to RENDERBUFFER, the error INVALID_ENUM is generated.
-
- If RenderbufferStorageMultisampleANGLE is called with an
- <internalformat> that is not listed as one of the color-, depth-
- or stencil-renderable formats in Table 4.5, then the error
- INVALID_ENUM is generated.
-
- If RenderbufferStorageMultisampleANGLE is called with <width> or
- <height> greater than MAX_RENDERBUFFER_SIZE, then the error
- INVALID_VALUE is generated.
-
- If RenderbufferStorageMultisampleANGLE is called with a value of
- <samples> that is greater than MAX_SAMPLES_ANGLE or less than zero,
- then the error INVALID_VALUE is generated.
-
- The error OUT_OF_MEMORY is generated when
- RenderbufferStorageMultisampleANGLE cannot create storage of the
- specified size.
-
-New State
-
- Add to table 6.22 (Renderbuffer State)
-
- Get Value Type Get Command Initial Value Description Section
- ------------------------------- ------ -------------------------- ------------- -------------------- -------
- RENDERBUFFER_SAMPLES_ANGLE Z+ GetRenderbufferParameteriv 0 number of samples 4.4.3
-
-
- Add to table 6.yy (Framebuffer Dependent Vaues) (added by
- ANGLE_framebuffer_blit), the following new framebuffer dependent state.
-
- Get Value Type Get Command Minimum Value Description Section
- ----------------- ---- ----------- ------------- ------------------- -------
- MAX_SAMPLES_ANGLE Z+ GetIntegerv 1 Maximum number of 4.4.3
- samples supported
- for multisampling
-
-
-
-Issues
-
- Issues from EXT_framebuffer_multisample have been removed.
-
- 1) What should we call this extension?
-
- Resolved: ANGLE_framebuffer_blit.
-
- This extension is a result of a collaboration between Google and
- TransGaming for the open-source ANGLE project. Typically one would
- label a multi-vendor extension as EXT, but EXT_framebuffer_mulitsample
- is already the name for this on Desktop GL. Additionally this
- isn't truely a multi-vendor extension because there is only one
- implementation of this. We'll follow the example of the open-source
- MESA project which uses the project name for the vendor suffix.
-
- 2) How does this extension differ from EXT_framebuffer_multisample?
-
- This is designed to be a proper subset of EXT_framebuffer_multisample
- functionality as applicable to OpenGL ES 2.0.
-
- Functionality that is unchanged:
- - creation of multisample renderbuffers.
- - whole buffer multi-sample->single-sample resolve.
- - no format conversions, stretching or flipping supported on multisample blits.
-
- Additional restrictions on BlitFramebufferANGLE:
- - multisample resolve is only supported on color buffers.
- - no blits to multisample destinations (no single->multi or multi-multi).
- - only entire buffers can be resolved.
-
-Revision History
-
- Revision 1, 2010/07/08
- - copied from revision 7 of EXT_framebuffer_multisample
- - removed language that was not relevant to ES2
- - rebase changes against the Open GL ES 2.0 specification
- - added ANGLE-specific restrictions
- Revision 2, 2010/07/19
- - fix missing error code
- Revision 3, 2010/08/06
- - add additional contributors, update implementation status
- - disallow negative samples
deleted file mode 100644
--- a/gfx/angle/extensions/ANGLE_instanced_arrays.txt
+++ /dev/null
@@ -1,359 +0,0 @@
-Name
-
- ANGLE_instanced_arrays
-
-Name Strings
-
- GL_ANGLE_instanced_arrays
-
-Contributors
-
- Contributors to ARB_instanced_arrays
- Nicolas Capens, TransGaming Inc.
- James Helferty, TransGaming Inc.
- Kenneth Russell, Google Inc.
- Vangelis Kokkevis, Google Inc.
-
-Contact
-
- Daniel Koch, TransGaming Inc. (daniel 'at' transgaming.com)
-
-Status
-
- Implemented in ANGLE r976.
-
-Version
-
- Last Modified Date: February 8, 2012
- Author Revision: 3
-
-Number
-
- OpenGL ES Extension #109
-
-Dependencies
-
- OpenGL ES 2.0 is required.
-
- This extension is written against the OpenGL ES 2.0 Specification.
-
-Overview
-
- A common use case in GL for some applications is to be able to
- draw the same object, or groups of similar objects that share
- vertex data, primitive count and type, multiple times. This
- extension provides a means of accelerating such use cases while
- restricting the number of API calls, and keeping the amount of
- duplicate data to a minimum.
-
- This extension introduces an array "divisor" for generic
- vertex array attributes, which when non-zero specifies that the
- attribute is "instanced." An instanced attribute does not
- advance per-vertex as usual, but rather after every <divisor>
- conceptual draw calls.
-
- (Attributes which aren't instanced are repeated in their entirety
- for every conceptual draw call.)
-
- By specifying transform data in an instanced attribute or series
- of instanced attributes, vertex shaders can, in concert with the
- instancing draw calls, draw multiple instances of an object with
- one draw call.
-
-IP Status
-
- No known IP claims.
-
-New Tokens
-
- Accepted by the <pname> parameters of GetVertexAttribfv and
- GetVertexAttribiv:
-
- VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE
-
-New Procedures and Functions
-
- void DrawArraysInstancedANGLE(enum mode, int first, sizei count,
- sizei primcount);
-
- void DrawElementsInstancedANGLE(enum mode, sizei count, enum type,
- const void *indices, sizei primcount);
-
- void VertexAttribDivisorANGLE(uint index, uint divisor);
-
-Additions to Chapter 2 of the OpenGL ES 2.0 Specification
-(OpenGL ES Operation)
-
- Modify section 2.8 (Vertex Arrays), p. 21
-
- After description of EnableVertexAttribArray / DisableVertexAttribArray
- add the following:
-
- "The command
-
- void VertexAttribDivisorANGLE(uint index, uint divisor);
-
- modifies the rate at which generic vertex attributes advance when
- rendering multiple instances of primitives in a single draw call
- (see DrawArraysInstancedANGLE and DrawElementsInstancedANGLE below).
- If <divisor> is zero, the attribute at slot <index> advances once
- per vertex. If <divisor> is non-zero, the attribute advances once
- per <divisor> instances of the primitives being rendered.
- An attribute is referred to as "instanced" if its <divisor> value is
- non-zero."
-
- Replace the text describing DrawArrays and DrawElements in the
- "Transferring Array Elements" subsection of 2.8, from the second paragraph
- through the end of the section with the following:
-
- "The command
-
- void DrawArraysOneInstance( enum mode, int first, sizei count, int instance );
-
- does not exist in the GL, but is used to describe functionality in
- the rest of this section. This function constructs a sequence of
- geometric primitives by transferring elements <first> through <first> +
- <count> - 1 of each enabled non-instanced array to the GL. <mode>
- specifies what kind of primitives are constructed, as defined in section
- 2.6.1.
-
- If an enabled vertex attribute array is instanced (it has a non-zero
- attribute <divisor> as specified by VertexAttribDivisorANGLE), the element
- that is transferred to the GL is given by:
-
- floor( <instance> / <divisor> ).
-
- If an array corresponding to a generic attribute required by a vertex shader
- is not enabled, then the corresponding element is taken from the current
- generic attribute state (see section 2.7).
-
- If an array corresponding to a generic attribute required by a vertex shader
- is enabled, the corresponding current generic attribute value is unaffected
- by the execution of DrawArraysOneInstance.
-
- Specifying <first> < 0 results in undefined behavior. Generating the error
- INVALID_VALUE is recommended in this case.
-
- The command
-
- void DrawArrays( enum mode, int first, sizei count );
-
- is equivalent to the command sequence
-
- DrawArraysOneInstance(mode, first, count, 0);
-
- The command
-
- void DrawArraysInstancedANGLE(enum mode, int first, sizei count,
- sizei primcount);
-
- behaves identically to DrawArrays except that <primcount>
- instances of the range of elements are executed, and the
- <instance> advances for each iteration. Instanced attributes that
- have <divisor> N, (where N > 0, as specified by
- VertexAttribDivisorANGLE) advance once every N instances.
-
- It has the same effect as:
-
- if (mode, count, or primcount is invalid)
- generate appropriate error
- else {
- for (i = 0; i < primcount; i++) {
- DrawArraysOneInstance(mode, first, count, i);
- }
- }
-
- The command
-
- void DrawElementsOneInstance( enum mode, sizei count, enum type,
- void *indices, int instance );
-
- does not exist in the GL, but is used to describe functionality in
- the rest of this section. This command constructs a sequence of
- geometric primitives by successively transferring the <count> elements
- whose indices are stored in the currently bound element array buffer
- (see section 2.9.2) at the offset defined by <indices> to the GL.
- The <i>-th element transferred by DrawElementsOneInstance will be taken
- from element <indices>[i] of each enabled non-instanced array.
- <type> must be one of UNSIGNED_BYTE, UNSIGNED_SHORT, or UNSIGNED_INT,
- indicating that the index values are of GL type ubyte, ushort, or uint
- respectively. <mode> specifies what kind of primitives are constructed,
- as defined in section 2.6.1.
-
- If an enabled vertex attribute array is instanced (it has a non-zero
- attribute <divisor> as specified by VertexAttribDivisorANGLE), the element
- that is transferred to the GL is given by:
-
- floor( <instance> / <divisor> );
-
- If an array corresponding to a generic attribute required by a vertex
- shader is not enabled, then the corresponding element is taken from the
- current generic attribute state (see section 2.7). Otherwise, if an array
- is enabled, the corresponding current generic attribute value is
- unaffected by the execution of DrawElementsOneInstance.
-
- The command
-
- void DrawElements( enum mode, sizei count, enum type,
- const void *indices);
-
- behaves identically to DrawElementsOneInstance with the <instance>
- parameter set to zero; the effect of calling
-
- DrawElements(mode, count, type, indices);
-
- is equivalent to the command sequence:
-
- if (mode, count or type is invalid )
- generate appropriate error
- else
- DrawElementsOneInstance(mode, count, type, indices, 0);
-
- The command
-
- void DrawElementsInstancedANGLE(enum mode, sizei count, enum type,
- const void *indices, sizei primcount);
-
- behaves identically to DrawElements except that <primcount>
- instances of the set of elements are executed and the instance
- advances between each set. Instanced attributes are advanced as they do
- during the execution of DrawArraysInstancedANGLE. It has the same effect as:
-
- if (mode, count, primcount, or type is invalid )
- generate appropriate error
- else {
- for (int i = 0; i < primcount; i++) {
- DrawElementsOneInstance(mode, count, type, indices, i);
- }
- }
-
- If the number of supported generic vertex attributes (the value of
- MAX_VERTEX_ATTRIBS) is <n>, then the client state required to implement
- vertex arrays consists of <n> boolean values, <n> memory pointers, <n>
- integer stride values, <n> symbolic constants representing array types,
- <n> integers representing values per element, <n> boolean values
- indicating normalization, and <n> integers representing vertex attribute
- divisors.
-
- In the initial state, the boolean values are each false, the memory
- pointers are each NULL, the strides are each zero, the array types are
- each FLOAT, the integers representing values per element are each four,
- and the divisors are each zero."
-
-Additions to Chapter 3 of the OpenGL ES 2.0 Specification (Rasterization)
-
- None
-
-Additions to Chapter 4 of the OpenGL ES 2.0 Specification (Per-Fragment
-Operations and the Framebuffer)
-
- None
-
-Additions to Chapter 5 of the OpenGL ES 2.0 Specification (Special Functions)
-
- None
-
-Additions to Chapter 6 of the OpenGL ES 2.0 Specification (State and State
-Requests)
-
- In section 6.1.8, add VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE to the list of
- pnames accepted by GetVertexAttribfv and GetVertexAttribiv.
-
-Additions to the AGL/EGL/GLX/WGL Specifications
-
- None
-
-Dependencies on OES_element_index_uint
-
- If OES_element_index_uint is not supported, removed all references
- to UNSIGNED_INT indices and the associated GL data type uint in
- the description of DrawElementsOneInstance.
-
-Errors
-
- INVALID_VALUE is generated by VertexAttribDivisorANGLE if <index>
- is greater than or equal to MAX_VERTEX_ATTRIBS.
-
- INVALID_ENUM is generated by DrawElementsInstancedANGLE if <type> is
- not one of UNSIGNED_BYTE, UNSIGNED_SHORT or UNSIGNED_INT.
-
- INVALID_VALUE is generated by DrawArraysInstancedANGLE if <first>,
- <count>, or <primcount> is less than zero.
-
- INVALID_ENUM is generated by DrawArraysInstancedANGLE or
- DrawElementsInstancedANGLE if <mode> is not one of the modes described in
- section 2.6.1.
-
- INVALID_VALUE is generated by DrawElementsInstancedANGLE if <count> or
- <primcount> is less than zero.
-
- INVALID_OPERATION is generated by DrawArraysInstancedANGLE or
- DrawElementsInstancedANGLE if there is not at least one enabled
- vertex attribute array that has a <divisor> of zero and is bound to an
- active generic attribute value in the program used for the draw command.
-
-New State
-
- Changes to table 6.7, p. 268 (Vertex Array Data)
-
- Initial
- Get Value Type Get Command Value Description Sec.
- --------- ----- ----------- ------- ----------- ----
- VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 8*xZ+ GetVertexAttrib 0 Instance Divisor 2.8
-
-Issues
-
- 1) Should vertex attribute zero be instance-able?
-
- Resolved: Yes.
- Discussion: In Direct3D 9 stream 0 must be specified as indexed data
- and it cannot be instanced. In ANGLE we can work around this by
- remapping any other stream that does have indexed data (ie a zero
- attribute divisor) to stream 0 in D3D9. This works because the HLSL
- vertex shader matches attributes against the stream by using the
- shader semantic index.
-
- 2) Can all vertex attributes be instanced simultaneously?
-
- Resolved: No
- Discussion: In rare cases it is possible for no attribute to have a
- divisor of 0, meaning that all attributes are instanced and none of
- them are regularly indexed. This in turn means each instance can only
- have a single position element, and so it only actually renders
- something when rendering point primitives. This is not a very
- meaningful way of using instancing (which is likely why D3D restricts
- stream 0 to be indexed regularly for position data in the first place).
- We could implement it by drawing these points one at a time (essentially
- emulating instancing), but it would not be very efficient and there
- seems to be little-to-no value in doing so.
-
- If all of the enabled vertex attribute arrays that are bound to active
- generic attributes in the program have a non-zero divisor, the draw
- call should return INVALID_OPERATION.
-
- 3) Direct3D 9 only supports instancing for DrawIndexedPrimitive which
- corresponds to DrawElementsInstanced. Should we support
- DrawArraysInstanced?
-
- Resolved: Yes
- Discussion: This can be supported easily enough by simply manufacturing
- a linear index buffer of sufficient size and using that to do indexed
- D3D9 drawing.
-
- 4) How much data is needed in a buffer for an instanced attribute?
-
- Resolved: Where stride is the value passed to VertexAttribPointer:
-
- if stride > 0
- size = stride * ceil(primcount / divisor);
- else
- size = elementsize * ceil(primcount / divisor);
-
-Revision History
-
- #3 February 8, 2012 dgkoch
- - clarify Issue 3 and the error condition for no indexed attributes
- #2 January 24, 2012 dgkoch
- - fix typos, add clarifications, and more errors
- #1 January 17, 2012 dgkoch
- - initial GLES2 version from ARB_instanced_arrays
deleted file mode 100644
--- a/gfx/angle/extensions/ANGLE_pack_reverse_row_order.txt
+++ /dev/null
@@ -1,168 +0,0 @@
-Name
-
- ANGLE_pack_reverse_row_order
-
-Name Strings
-
- GL_ANGLE_pack_reverse_row_order
-
-Contact
-
- Daniel Koch, TransGaming (daniel 'at' transgaming.com)
-
-Contributors
-
- Brian Salomon
- Daniel Koch
-
-Status
-
- Implemented in ANGLE ES2
-
-Version
-
- Last Modified Date: February 22, 2011
- Author Revision: 22
-
-Number
-
- OpenGL ES Extension #110
-
-Dependencies
-
- OpenGL 1.5 or OpenGL ES 1.0 are required.
-
- Some of the functionality of this extension is not supported
- when implemented against OpenGL ES.
-
- EXT_texture_rg interacts with this extension.
-
- The extension is written against the OpenGL 3.2 Specification
- (Core Profile).
-
-Overview
-
- This extension introduces a mechanism to allow reversing the order
- in which image rows are written into a pack destination. This
- effectively allows an application to flip the results of a ReadPixels
- in the y direction operation without having to render upside down.
-
- The coordinate system of OpenGL is vertically reversed in comparison to a
- number of other graphics systems such as native windowing APIs. Applications
- that perform ReadPixels may have to either render to an intermediate color
- buffer before calling ReadPixels or perform a flip in software after
- ReadPixels. In some systems the GL can perform the row reversal during
- ReadPixels without incurring additional cost.
-
-IP Status
-
- No known IP claims.
-
-New Procedures and Functions
-
- None
-
-New Types
-
- None
-
-New Tokens
-
- Accepted by the <pname> parameter of PixelStore{if}, GetIntegerv(),
- GetBooleanv(), and GetFloatv():
-
- PACK_REVERSE_ROW_ORDER_ANGLE 0x93A4
-
-Additions to Chapter 3 of the OpenGL 3.2 Specification (Rasterization)
-
- In Section 4.3.1 (Reading Pixels) add a row to table 4.7:
-
- +------------------------------+---------+---------------+-------------+
- | Parameter Name | Type | Initial Value | Valid Range |
- +------------------------------+---------+---------------+-------------+
- | PACK_REVERSE_ROW_ORDER_ANGLE | boolean | FALSE | TRUE/FALSE |
- +------------------------------+---------+---------------+-------------+
-
- In Section 4.3.1 (Reading Pixels) modify the second paragraph of subsection
- "Placement in Pixel Pack Buffer or Client Memory" to read:
-
- When PACK_REVERSE_ROW_ORDER_ANGLE is FALSE groups of elements are placed
- in memory just as they are taken from memory when transferring pixel
- rectangles to the GL. That is, the ith group of the jth row
- (corresponding to the ith pixel in the jth row) is placed in memory just
- where the ith group of the jth row would be taken from when transferring
- pixels. See Unpacking under section 3.7.2. The only difference is that
- the storage mode parameters whose names begin with PACK_ are used
- instead of those whose names begin with UNPACK_. If the format is RED,
- GREEN, BLUE, or ALPHA, only the corresponding single element is written.
- Likewise if the format is RG, RGB, or BGR, only the corresponding two or
- three elements are written. Otherwise all the elements of each group are
- written. When PACK_REVERSE_ROW_ORDER_ANGLE is TRUE the order of the rows
- of elements is reversed before the data is packed. That is, the element
- corresponding to pixel (x, y + height - 1) becomes the first element
- packed, followed by (x + 1, y + height - 1), etc. Otherwise, pixel data
- is packed in the same manner as when PACK_REVERSE_ROW_ORDER_ANGLE is
- FALSE.
-
-Additions to Chapter 6 of the OpenGL 3.2 Specification (State and State Requests)
-
- In Section 6.1.4 add the following sentence to the fifth paragraph
- (beginning with "For three-dimensional and two-dimensional array
- textures..."):
- When PACK_REVERSE_ROW_ORDER_ANGLE is TRUE the order of rows within
- each image are reversed without reordering the images themselves.
-
-Dependencies on OpenGL ES
-
- If implemented for OpenGL ES, this extension behaves as specified, except:
-
- -Delete all references to formats RED, GREEN, BLUE, RG, and BGR.
-
- -The language about image order in Section 6.1.4 does not apply as OpenGL ES
- does not have GetTexImage.
-
-Dependencies on EXT_texture_rg
-
- If EXT_texture_rg is present reinsert language about formats RED and RG
- into the OpenGL ES 2.0 specification.
-
-Errors
-
- None
-
-New State
- Initial
- Get Value Type Get Command Value Description Sec.
- --------- ---- ----------- ------- ----------- ----
- PACK_REVERSE_ROW_ORDER_ANGLE B GetIntegerv FALSE Pixel pack row order reversal 4.3.1
-
-New Implementation Dependent State
-
- None
-
-Issues
-
- None
-
-Sample Code
-
- /* Allocate space to hold the pixel data */
- const GLvoid* pixels = malloc(width * height * 4);
-
- /* Bind the framebuffer object to be read */
- glBindFramebuffer(GL_READ_FRAMEBUFFER, framebuffer);
-
- /* Enable row order reversal */
- glPixelStore(GL_PACK_REVERSE_ROW_ORDER_ANGLE, TRUE);
-
- /* The pixel data stored in pixels will be in top-down order, ready for
- * use with a windowing system API that expects this order.
- */
- glReadPixels(x, y, width, height, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
-
-Revision History
-
- Revision 1, 2011/11/22 (Brian Salomon)
- - First version
- Revision 2, 2012/02/22 (dgkoch)
- - prepare for publishing
deleted file mode 100644
--- a/gfx/angle/extensions/ANGLE_program_binary.txt
+++ /dev/null
@@ -1,94 +0,0 @@
-Name
-
- ANGLE_program_binary
-
-Name Strings
-
- GL_ANGLE_program_binary
-
-Contributors
-
- Alastair Patrick, Google Inc.
- Daniel Koch, TransGaming Inc.
-
-Contact
-
- Alastair Patrick, Google Inc. (apatrick 'at' google 'dot' com)
-
-Status
-
- Under development.
-
-Version
-
- Last Modifed Date: June 6, 2012
- Revision: #1
-
-Number
-
- TBD
-
-Dependencies
-
- OpenGL ES 2.0 is required.
- OES_get_program_binary is required.
- This extension is written against the OpenGL ES 2.0.25 specification.
-
-Overview
-
- This extension makes available a program binary format,
- PROGRAM_BINARY_ANGLE. It enables retrieving and loading of pre-linked
- ANGLE program objects.
-
-New Procedures and Functions
-
- None
-
-New Tokens
-
- Accepted by the <binaryFormat> parameter of ProgramBinaryOES:
-
- PROGRAM_BINARY_ANGLE 0x93A6
-
-Additions to Chapter 2 of the OpenGL-ES 2.0 Specification (OpenGL Operation)
-
- Add the following paragraph to the end of section 2.15.4, Program Binaries:
-
- "PROGRAM_BINARY_ANGLE, returned in the list of PROGRAM_BINARY_FORMATS_OES,
- is a format that may be loaded into a program object via ProgramBinaryOES."
-
-Additions to Chapter 3 of the OpenGL ES 2.0 specification (Rasterizatoin)
-
- None.
-
-Additions to Chapter 4 of the OpenGL ES 2.0 specification (Per-Fragment
-Operations and the Framebuffer)
-
- None.
-
-Additions to Chapter 5 of the OpenGL ES 2.0 Specification (Special
-Functions)
-
- None.
-
-Additions to Chapter 6 of the OpenGL ES 2.0 Specification (State and State
-Requests)
-
- None.
-
-Errors
-
- None
-
-New State
-
- None.
-
-Issues
-
- None
-
-Revision History
-
- 06/06/2012 apatrick intial revision
-
deleted file mode 100644
--- a/gfx/angle/extensions/ANGLE_texture_compression_dxt.txt
+++ /dev/null
@@ -1,163 +0,0 @@
-Name
-
- ANGLE_texture_compression_dxt
-
-Name Strings
-
- GL_ANGLE_texture_compression_dxt1
- GL_ANGLE_texture_compression_dxt3
- GL_ANGLE_texture_compression_dxt5
-
-Contributors
-
- Gregg Tavares, Google Inc.
- Daniel Koch, TransGaming Inc.
- Al Patrick, Google Inc.
-
-Contacts
-
- Gregg Tavares, Google Inc. (gman 'at' google 'dot' com)
-
-Status
-
- Implemented in ANGLE ES2
-
-Version
-
- Last Modified Date: Sept 22, 2012
- Author Revision: 2
-
-Number
-
- OpenGL ES Extension #111
-
-Dependencies
-
- Requires OpenGL ES 1.0.
-
- The extension is written against the OpenGL ES 2.0 specification.
-
-Overview
-
- These extensions are exactly the same as EXT_texture_compression_dxt1
- except they additionally expose the COMPRESSED_RGBA_S3TC_DXT3_ANGLE and
- COMPRESSED_RGBA_S3TC_DXT5_ANGLE formats and have a size restrictions
- such that the size must be a multiple of four (except for mip levels
- where the dimensions are either 2 or 1).
-
- See EXT_texture_compression_dxt1 for the full list of changes. Also
- see EXT_texture_compression_s3tc for a description of the formats.
-
-IP Status
-
- A license to the S3TC Intellectual Property may be necessary for
- implementation of this extension. You should consult with your
- Attorney to determine the need for a license.
-
-New Procedures and Functions
-
- None.
-
-New Types
-
- None.
-
-New Tokens
-
- Accepted by the <internalformat> parameter of CompressedTexImage2D
- and the <format> parameter of CompressedTexSubImage2D:
-
- COMPRESSED_RGB_S3TC_DXT1_ANGLE 0x83F0
- COMPRESSED_RGBA_S3TC_DXT1_ANGLE 0x83F1
- COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2
- COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3
-
-Additions to Chapter 3 of the OpenGL ES 2.0 Specification (Rasterization)
-
- Add the following to Section 3.7.3 (Compressed Texture Images)
- (at the end of the description of the CompressedTexImage2D command):
-
- Compressed Internal Format Base Internal Format
- ========================== ====================
- COMPRESSED_RGB_S3TC_DXT1_ANGLE RGB
- COMPRESSED_RGBA_S3TC_DXT1_ANGLE RGBA
- COMPRESSED_RGBA_S3TC_DXT3_ANGLE RGBA
- COMPRESSED_RGBA_S3TC_DXT5_ANGLE RGBA
-
- Table 3.x: Specific Compressed Internal Formats
-
- If <internalformat> is one of the S3TC formats listed in Table 3.x,
- the compressed texture is stored in the appropriate S3TC compressed
- texture format (see Appendix). The GL and the S3TC texture compression
- algorithm support only 2D images without borders.
-
- CompressedTexImage2D will produce the INVALID_OPERATION error when
- <internalformat> is one of the values from Table 3.x under the following
- conditions:
-
- * <border> is non-zero.
- * <width> is not one, two, or a multiple of four.
- * <height> is not one, two, or a multiple of four.
-
- Add the following to Section 3.7.3 (Compressed Texture Images)
- (at the end of the description of the CompressedTexSubImage2D command):
-
- If the internal format of the texture image being modified is listed
- in Table 3.x, the texture is stored in the appropriate S3TC compressed
- texture format (see Appendix). Since DXT/S3TC images are easily