|
1 This is the ANGLE project, from http://code.google.com/p/angleproject/ |
|
2 |
|
3 Current revision: f3fc6571dca9832876e09c63b0958d413737757b |
|
4 Date of revision: 2013-08-02 |
|
5 |
|
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. |
|
10 |
|
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. |
|
15 |
|
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. |
|
19 |
|
20 angle-build-khrplatform-h-path.patch: |
|
21 Fix include path for khrplatform.h. |
|
22 |
|
23 angle-build-case-sensitive.patch |
|
24 Fixes cross compilation on case sensitive OSes. |
|
25 |
|
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. |
|
30 |
|
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. |
|
34 |
|
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. |
|
38 |
|
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. |
|
42 |
|
43 angle-default-clamp-strat.patch: |
|
44 Fixes TCompiler::Init to treat `resources.ArrayIndexClampingStrategy` |
|
45 as a request for the default strategy. |
|
46 |
|
47 angle-tex-pool-default.patch: |
|
48 Don't use D3DPOOL_MANAGED on D3D9. Just use D3DPOOL_DEFAULT. |
|
49 |
|
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 |
|
56 |
|
57 angle-fix-vc12.patch: |
|
58 Fixes angle to build on Visual Studio 2013 |
|
59 |
|
60 angle-d3dcc47.patch: |
|
61 Tell ANGLE about d3dcompiler_47.dll from WinSDK 8.1. |
|
62 |
|
63 angle-fix-issue-651.patch: |
|
64 Fixes crash in TSymbolTableLevel::~TSymbolTableLevel with GCC 4.9 |
|
65 |
|
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. |
|
69 |
|
70 |
|
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 |
|
81 |
|
82 2. $ rm -rf gfx/angle |
|
83 |
|
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 |
|
88 |
|
89 4. Fold our moz-specific files into this new angle folder. (Makefiles, README) |
|
90 4a. Remove the unused files. (test/, samples/, msvc files) |
|
91 |
|
92 5. Clear out the "Applied Local Patches" section above, since we're going to |
|
93 repopulate it. |
|
94 |
|
95 6. Re-apply the angle-build-*.patch files and record them above. |
|
96 |
|
97 7. Update the Makefile.in files with the current deps from the .gyp(i) files. |
|
98 |
|
99 8. Build. Fix things until it builds. |
|
100 |
|
101 9. Reapply the rest of the .patch files and record them above. |
|
102 |
|
103 10. Try runs and reviews! |
|
104 |
|
105 |
|
106 == Applying Diffs == |
|
107 In general: |
|
108 $ patch -p1 -R < gfx/angle/angle-some-bug-fix.patch |
|
109 |
|
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. |
|
113 |
|
114 |
|
115 |
|
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. |
|
121 |
|
122 1. Unapply patches |
|
123 |
|
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. |
|
127 |
|
128 $ cd /path/to/mozilla-central |
|
129 |
|
130 $ patch -p1 -R < gfx/angle/angle-some-bug-fix.patch |
|
131 $ hg qnew unapply-angle-some-bug-fix.patch |
|
132 |
|
133 2. Apply diff with new ANGLE version |
|
134 |
|
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. |
|
138 |
|
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 |
|
150 |
|
151 3. Reapply patches |
|
152 |
|
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. |
|
156 |
|
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: |
|
160 |
|
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 |
|
165 |
|
166 Note that here you need to proceed in the reverse order of what you did in step 1. |
|
167 |
|
168 4. Update our Makefiles |
|
169 |
|
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: |
|
173 |
|
174 gfx/angle/Makefile.in |
|
175 gfx/angle/src/libEGL/Makefile.in |
|
176 gfx/angle/src/libGLESv2/Makefile.in |
|
177 |
|
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. |
|
182 |
|
183 5. Update patch files |
|
184 |
|
185 Something like: |
|
186 |
|
187 $ cp .hg/patches/angle-some-bug-fix.patch gfx/angle |
|
188 |
|
189 For each patch that you reapplied. |
|
190 |
|
191 If a patch was removed (not reapplied), remove the corresponding patch file. |
|
192 |
|
193 6. Update this README.mozilla |
|
194 |
|
195 You'll have to update at least the ANGLE revision number and probably the patch |
|
196 list as well. |
|
197 |
|
198 7. Push to Try |
|
199 |
|
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. |
|
202 |
|
203 8. Get reviews. |
|
204 |
|
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. |
|
207 |
|
208 You do not need a review for the ANGLE diff itself and for trivial updates of |
|
209 existing patches. |
|
210 |
|
211 |
|
212 == Visual Studio Solution Files == |
|
213 Ignore these. We don't use them anymore. We use custom Makefiles. |
|
214 |
|
215 |
|
216 == Generated parser code== |
|
217 Don't bother about that anymore. The parser is now generated and included in the ANGLE svn repo. |