1# How to Branch and Roll Chromium's ANGLE Dependency 2 3ANGLE provides an implementation of OpenGL ES on Windows, which Chromium relies 4upon for hardware accelerated rendering and WebGL support. Chromium specifies 5its dependency on a specific version of ANGLE in the repository; this document 6describes how to update that dependency, and, if necessary, create an ANGLE 7branch to correspond to a branched release of Chrome. 8 9## Rolling DEPS 10 11Chromium's dependency on third-party projects is tracked in [the Chromium 12repository's src/DEPS file] 13(http://src.chromium.org/viewvc/chrome/trunk/src/DEPS). To update the ANGLE 14dependency: 15 16 * Find the line in this file that defines "src/third\_party/angle" 17for deps (**not** deps\_os) 18 * Change the [git SHA-1 revision number] 19(http://git-scm.com/book/ch6-1.html) to be that of the commit on which Chromium 20should depend. Please use the full SHA-1, not a shortened version. 21 * You can 22find the SHA-1 for a particular commit with `git log` on the appropriate branch 23of the repository, or via [the public repository viewer] 24(https://chromium.googlesource.com/angle/angle). 25 * If using the public repository viewer, you will need to select the branch whose log you wish to view 26from the list on the left-hand side, and then click on the "tree" link at the 27top of the resulting page. Alternatively, you can navigate to 28`https://chromium.googlesource.com/angle/angle/+/<branch name>/` -- including 29the terminating forward slash. (e.g. 30`https://chromium.googlesource.com/angle/angle/+/main/`) 31 32## Branching ANGLE 33 34Sometimes, individual changes to ANGLE are needed for a release of Chrome which 35has already been branched. If this is the case, a branch of ANGLE should be 36created to correspond to the Chrome release version, so that Chrome may 37incorporate only these changes, and not everything that has been committed since 38the version on which Chrome depended at branch time. **Please note: Only ANGLE 39admins can create a new branch.** To create a branch of ANGLE for a branched 40Chrome release: 41 42 * Determine what the ANGLE dependency is for the Chrome release 43by checking the DEPS file for that branch. 44 * Check out this commit as a new branch in your local repository. 45 * e.g., for [the Chrome 34 release at chrome/branches/1847] 46(http://src.chromium.org/viewvc/chrome/branches/1847/src/DEPS), the ANGLE 47version is 4df02c1ed5e97dd54576b06964b1da67ea30238e. To check this commit out 48locally and create a new branch named 'mybranch' from this commit, use: ```git 49checkout -b mybranch 4df02c1ed5e97dd54576b06964b1da67ea30238e``` 50 * To create this new branch in the public repository, you'll need to push the 51branch to the special Gerrit reference location, 'refs/heads/<branch name>'. You 52must be an ANGLE administrator to be able to push this new branch. 53 * e.g., to use your local 'mybranch' to create a branch in the public repository called 54'chrome\_m34', use: ```git push origin mybranch:refs/heads/chrome_m34``` 55 * The naming convention that ANGLE uses for its release-dedicated branches is 'chrome\_m##'. 56