Tue, 06 Jan 2015 21:39:09 +0100
Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.
1 This is the ANGLE project, from http://code.google.com/p/angleproject/
3 Current revision: f3fc6571dca9832876e09c63b0958d413737757b
4 Date of revision: 2013-08-02
6 == Applied local patches ==
7 In this order:
8 angle-build-stdcall-alias.patch:
9 Fix an issue GCC has with linking to undecorated stdcalls.
11 angle-build-dedupe-debug-cpp-h.patch:
12 Rename: "src/compiler/debug.{cpp,h}"
13 To: "src/compiler/compiler_debug.{cpp,h}"
14 Repair includes accordingly.
16 angle-build-d3dcompiler-list.patch:
17 Move `ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES` define from make files to
18 Renderer.cpp, where it's used.
20 angle-build-khrplatform-h-path.patch:
21 Fix include path for khrplatform.h.
23 angle-build-case-sensitive.patch
24 Fixes cross compilation on case sensitive OSes.
26 angle-build-dedupe-uniform-cpp-h.patch:
27 Rename: "src/compiler/Uniform.{cpp,h}"
28 To: "src/compiler/CompilerUniform.{cpp,h}"
29 Repair includes accordingly.
31 angle-build-ttype.patch:
32 Remove bit-field markings for TType, since GCC4.7 emits a default
33 copy constructor which fails to compile.
35 angle-long-ident-hash.patch:
36 Use MurmurHash3 for long identifier hashing. See bug 676071, where we used
37 Spooky Hash, before ANGLE came with MurmurHash3.
39 angle-faceforward-emu.patch:
40 Adds emulation for faceforward(float,float,float), which is needed to
41 prevent crashing on Mac+Intel. See bug 771406.
43 angle-default-clamp-strat.patch:
44 Fixes TCompiler::Init to treat `resources.ArrayIndexClampingStrategy`
45 as a request for the default strategy.
47 angle-tex-pool-default.patch:
48 Don't use D3DPOOL_MANAGED on D3D9. Just use D3DPOOL_DEFAULT.
50 angle-build-unified.patch:
51 Fixes required to make angle compile in unified mode
52 Note that a different version of this patch was upstreamed, so the next time that
53 Angle is updated this patch can be discarded. See:
54 https://chromium.googlesource.com/angle/angle/+/0dd3b3ff66cdc50882125d21e60112d5161279b4
55 https://chromium.googlesource.com/angle/angle/+/0685fbde65a3e90d8d4d4a6c72f2cc1771617fd0
57 angle-fix-vc12.patch:
58 Fixes angle to build on Visual Studio 2013
60 angle-d3dcc47.patch:
61 Tell ANGLE about d3dcompiler_47.dll from WinSDK 8.1.
63 angle-fix-issue-651.patch:
64 Fixes crash in TSymbolTableLevel::~TSymbolTableLevel with GCC 4.9
66 In addition to these patches, the Makefile.in and moz.build build files are ours,
67 they're not present in upsteam ANGLE. Therefore, changes made to the build files
68 should not be stored in the local .patch files.
71 == How to do a clean-slate upgrade ==
72 1. Backup our moz-specific files:
73 README.mozilla
74 Makefile.in
75 moz.build
76 *.patch
77 src/libEGL/Makefile.in
78 src/libEGL/moz.build
79 src/libGLESv2/Makefile.in
80 src/libGLESv2/moz.build
82 2. $ rm -rf gfx/angle
84 3. Copy the folder containing the angle rev you want onto gfx/angle.
85 $ svn export -r <rev> <src> <moz-central>/gfx/angle
86 Or:
87 $ git checkout-index --prefix <moz-central>/gfx/angle/ -a
89 4. Fold our moz-specific files into this new angle folder. (Makefiles, README)
90 4a. Remove the unused files. (test/, samples/, msvc files)
92 5. Clear out the "Applied Local Patches" section above, since we're going to
93 repopulate it.
95 6. Re-apply the angle-build-*.patch files and record them above.
97 7. Update the Makefile.in files with the current deps from the .gyp(i) files.
99 8. Build. Fix things until it builds.
101 9. Reapply the rest of the .patch files and record them above.
103 10. Try runs and reviews!
106 == Applying Diffs ==
107 In general:
108 $ patch -p1 -R < gfx/angle/angle-some-bug-fix.patch
110 SVN diffs however can be iffy. They don't seem to be completely compatible
111 with `patch`. Be aware that you'll likely get rejects whenever a file is
112 removed.
116 == How to do an incremental update ==
117 Same general idea here, but instead of nuking the ANGLE dir, we're going to
118 have to get a diff between revs from SVN, and deal with applying that. We
119 also naturally have to peel off our local patches before we can apply a diff
120 from upstream.
122 1. Unapply patches
124 Unapply them in reverse order, so iterate over the above list of applied patch
125 starting from the bottom. You most likely want to record these patch-unapply
126 operations as individual patches themselves, in order to re-apply patches later.
128 $ cd /path/to/mozilla-central
130 $ patch -p1 -R < gfx/angle/angle-some-bug-fix.patch
131 $ hg qnew unapply-angle-some-bug-fix.patch
133 2. Apply diff with new ANGLE version
135 Check at the top of this file what ANGLE revision we currently have. Let's say it's
136 r123. Check at the ANGLE Web site what recent revisions look like to figure what
137 revision seems safe. Let's say we want r456.
139 $ cd
140 $ svn checkout http://angleproject.googlecode.com/svn/trunk/ angleproject
141 $ cd angleproject
142 $ svn diff -r 123:456 > ~/angle-diff-from-123-to-456
143 $ cd /path/to/mozilla-central
144 $ cd gfx/angle
145 $ patch -p0 < ~/angle-diff-from-123-to-456
146 $ cd ../..
147 $ hg status
148 # hg add any new ANGLE files under gfx/angle
149 $ hg qnew angle-diff-from-123-to-456
151 3. Reapply patches
153 You may have to skip reapplying certain patches there, for example if they have
154 been integrated into ANGLE since our last update. The short patch descriptions above
155 in this file should help you make that decision.
157 If you have recorded the individual patch unapply operations in step 1 as separate
158 Mercurial patches, this will be easy, just apply the inverse patches now, in reverse
159 order:
161 $ patch -p1 -R < .hg/patches/unapply-angle-some-bug-fix.patch
162 $ hg status
163 # hg add any new ANGLE files under gfx/angle
164 $ hg qnew angle-some-bug-fix.patch
166 Note that here you need to proceed in the reverse order of what you did in step 1.
168 4. Update our Makefiles
170 Open your ANGLE diff file (~/angle-diff-from-123-to-456), search for GYP files
171 (e.g. build_angle.gyp), it's easy-to-read JSON. It may list additions of new files,
172 or removal of old files. You have to reflect this in our Makefiles:
174 gfx/angle/Makefile.in
175 gfx/angle/src/libEGL/Makefile.in
176 gfx/angle/src/libGLESv2/Makefile.in
178 The first one is our main Makefile. It has basically the ANGLE shader compiler.
179 Changes there will typically have to be applied also to the two other Makefiles.
180 These two other Makefiles are Windows-only and build the ANGLE GLES2-on-top-of-D3D
181 implementation.
183 5. Update patch files
185 Something like:
187 $ cp .hg/patches/angle-some-bug-fix.patch gfx/angle
189 For each patch that you reapplied.
191 If a patch was removed (not reapplied), remove the corresponding patch file.
193 6. Update this README.mozilla
195 You'll have to update at least the ANGLE revision number and probably the patch
196 list as well.
198 7. Push to Try
200 Make sure to test both Windows and non-Windows, and enable mochitest-1 in your
201 Try options. You may want reftest as well, as we have WebGL reftests.
203 8. Get reviews.
205 Typically, you would get review on your Makefiles patch, and any
206 new patches that you need to add to get this update to work.
208 You do not need a review for the ANGLE diff itself and for trivial updates of
209 existing patches.
212 == Visual Studio Solution Files ==
213 Ignore these. We don't use them anymore. We use custom Makefiles.
216 == Generated parser code==
217 Don't bother about that anymore. The parser is now generated and included in the ANGLE svn repo.