gfx/angle/README.mozilla

Tue, 06 Jan 2015 21:39:09 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 06 Jan 2015 21:39:09 +0100
branch
TOR_BUG_9701
changeset 8
97036ab72558
permissions
-rw-r--r--

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.

mercurial