X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=docs%2Fdevinfo.html;h=0f1d5ac612b6698f53d05d60fc782cb3e0aa3691;hb=2434fb3e8e4c9c93b5755af34f077d2bf767b5f3;hp=8ebf80f40e8019f85124f7e2ad2a58eab3022cec;hpb=2ce2b80c6fd7ba5effbdf86ca3affe10a9c70492;p=mesa.git diff --git a/docs/devinfo.html b/docs/devinfo.html index 8ebf80f40e8..0f1d5ac612b 100644 --- a/docs/devinfo.html +++ b/docs/devinfo.html @@ -8,7 +8,7 @@
-

The Mesa 3D Graphics Library

+ The Mesa 3D Graphics Library
@@ -18,655 +18,19 @@ - -

Coding Style

- -

-Mesa is over 20 years old and the coding style has evolved over time. -Some old parts use a style that's a bit out of date. -If the guidelines below don't cover something, try following the format of -existing, neighboring code. -

- -

-Basic formatting guidelines -

- - - - -

Submitting patches

- -

-The basic guidelines for submitting patches are: -

- - - -

Patch formatting

- -

-The basic rules for patch formatting are: -

- - - - - -

Testing Patches

- -

-It should go without saying that patches must be tested. In general, -do whatever testing is prudent. -

- -

-You should always run the Mesa test suite before submitting patches. -The test suite can be run using the 'make check' command. All tests -must pass before patches will be accepted, this may mean you have -to update the tests themselves. -

- -

-Whenever possible and applicable, test the patch with -Piglit to -check for regressions. -

- - -

Mailing Patches

- -

-Patches should be sent to the Mesa mailing list for review. -When submitting a patch make sure to use git send-email rather than attaching -patches to emails. Sending patches as attachments prevents people from being -able to provide in-line review comments. -

- -

-When submitting follow-up patches you can use --in-reply-to to make v2, v3, -etc patches show up as replies to the originals. This usually works well -when you're sending out updates to individual patches (as opposed to -re-sending the whole series). Using --in-reply-to makes -it harder for reviewers to accidentally review old patches. -

- -

-When submitting follow-up patches you should also login to -patchwork and change the -state of your old patches to Superseded. -

- -

Reviewing Patches

- -

-When you've reviewed a patch on the mailing list, please be unambiguous -about your review. That is, state either -

-    Reviewed-by: Joe Hacker <jhacker@foo.com>
-
-or -
-    Acked-by: Joe Hacker <jhacker@foo.com>
-
-Rather than saying just "LGTM" or "Seems OK". -

- -

-If small changes are suggested, it's OK to say something like: -

-   With the above fixes, Reviewed-by: Joe Hacker <jhacker@foo.com>
-
-which tells the patch author that the patch can be committed, as long -as the issues are resolved first. -

- - -

Marking a commit as a candidate for a stable branch

- -

-If you want a commit to be applied to a stable branch, -you should add an appropriate note to the commit message. -

- -

-Here are some examples of such a note: -

- - -Simply adding the CC to the mesa-stable list address is adequate to nominate -the commit for the most-recently-created stable branch. It is only necessary -to specify a specific branch name, (such as "9.2 10.0" or "10.0" in the -examples above), if you want to nominate the commit for an older stable -branch. And, as in these examples, you can nominate the commit for the older -branch in addition to the more recent branch, or nominate the commit -exclusively for the older branch. - -This "CC" syntax for patch nomination will cause patches to automatically be -copied to the mesa-stable@ mailing list when you use "git send-email" to send -patches to the mesa-dev@ mailing list. Also, if you realize that a commit -should be nominated for the stable branch after it has already been committed, -you can send a note directly to the mesa-stable@lists.freedesktop.org where -the Mesa stable-branch maintainers will receive it. Be sure to mention the -commit ID of the commit of interest (as it appears in the mesa master branch). - -The latest set of patches that have been nominated, accepted, or rejected for -the upcoming stable release can always be seen on the -Mesa Stable Queue -page. - -

Criteria for accepting patches to the stable branch

- -Mesa has a designated release manager for each stable branch, and the release -manager is the only developer that should be pushing changes to these -branches. Everyone else should simply nominate patches using the mechanism -described above. - -The stable-release manager will work with the list of nominated patches, and -for each patch that meets the crtieria below will cherry-pick the patch with: -git cherry-pick -x <commit>. The -x option is -important so that the picked patch references the comit ID of the original -patch. - -The stable-release manager may at times need to force-push changes to the -stable branches, for example, to drop a previously-picked patch that was later -identified as causing a regression). These force-pushes may cause changes to -be lost from the stable branch if developers push things directly. Consider -yourself warned. - -The stable-release manager is also given broad discretion in rejecting patches -that have been nominated for the stable branch. The most basic rule is that -the stable branch is for bug fixes only, (no new features, no -regressions). Here is a non-exhaustive list of some reasons that a patch may -be rejected: - - - - -

Making a New Mesa Release

- -

-These are the instructions for making a new Mesa release. -

- -

Get latest source files

-

-Use git to get the latest Mesa files from the git repository, from whatever -branch is relevant. This document uses the convention X.Y.Z for the release -being created, which should be created from a branch named X.Y. -

- -

Perform basic testing

-

-The release manager should, at the very least, test the code by compiling it, -installing it, and running the latest piglit to ensure that no piglit tests -have regressed since the previous release. -

- -

-The release manager should do this testing with at least one hardware driver, -(say, whatever is contained in the local development machine), as well as on -both Gallium and non-Gallium software drivers. The software testing can be -performed by running piglit with the following environment-variable set: -

- -
-LIBGL_ALWAYS_SOFTWARE=1
-
- -And Gallium vs. non-Gallium software drivers can be obtained by using the -following configure flags on separate builds: - -
---with-dri-drivers=swrast
---with-gallium-drivers=swrast
-
- -

-Note: If both options are given in one build, both swrast_dri.so drivers will -be compiled, but only one will be installed. The following command can be used -to ensure the correct driver is being tested: -

- -
-LIBGL_ALWAYS_SOFTWARE=1 glxinfo | grep "renderer string"
-
- -If any regressions are found in this testing with piglit, stop here, and do -not perform a release until regressions are fixed. - -

Update version in file VERSION

- -

-Increment the version contained in the file VERSION at Mesa's top-level, then -commit this change. -

- -

Create release notes for the new release

- -

-Create a new file docs/relnotes/X.Y.Z.html, (follow the style of the previous -release notes). Note that the sha256sums section of the release notes should -be empty at this point. -

- -

-Two scripts are available to help generate portions of the release notes: - -

-	./bin/bugzilla_mesa.sh
-	./bin/shortlog_mesa.sh
-
- -

-The first script identifies commits that reference bugzilla bugs and obtains -the descriptions of those bugs from bugzilla. The second script generates a -log of all commits. In both cases, HTML-formatted lists are printed to stdout -to be included in the release notes. -

- -

-Commit these changes -

- -

Make the release archives, signatures, and the release tag

-

-From inside the Mesa directory: -

-	./autogen.sh
-	make -j1 tarballs
-
- -

-After the tarballs are created, the sha256 checksums for the files will -be computed and printed. These will be used in a step below. -

- -

-It's important at this point to also verify that the constructed tar file -actually builds: -

- -
-	tar xjf MesaLib-X.Y.Z.tar.bz2
-	cd Mesa-X.Y.Z
-	./configure --enable-gallium-llvm
-	make -j6
-	make install
-
- -

-Some touch testing should also be performed at this point, (run glxgears or -more involved OpenGL programs against the installed Mesa). -

- -

-Create detached GPG signatures for each of the archive files created above: -

- -
-	gpg --sign --detach MesaLib-X.Y.Z.tar.gz
-	gpg --sign --detach MesaLib-X.Y.Z.tar.bz2
-	gpg --sign --detach MesaLib-X.Y.Z.zip
-
- -

-Tag the commit used for the build: -

- -
-	git tag -s mesa-X.Y.X -m "Mesa X.Y.Z release"
-
- -

-Note: It would be nice to investigate and fix the issue that causes the -tarballs target to fail with multiple build process, such as with "-j4". It -would also be nice to incorporate all of the above commands into a single -makefile target. And instead of a custom "tarballs" target, we should -incorporate things into the standard "make dist" and "make distcheck" targets. -

- -

Add the sha256sums to the release notes

- -

-Edit docs/relnotes/X.Y.Z.html to add the sha256sums printed as part of "make -tarballs" in the previous step. Commit this change. -

- -

Push all commits and the tag created above

- -

-This is the first step that cannot easily be undone. The release is going -forward from this point: -

- -
-	git push origin X.Y --tags
-
- -

Install the release files and signatures on the distribution server

- -

-The following commands can be used to copy the release archive files and -signatures to the freedesktop.org server: -

- -
-	scp MesaLib-X.Y.Z* people.freedesktop.org:
-	ssh people.freedesktop.org
-	cd /srv/ftp.freedesktop.org/pub/mesa
-	mkdir X.Y.Z
-	cd X.Y.Z
-	mv ~/MesaLib-X.Y.Z* .
-
- -

Back on mesa master, add the new release notes into the tree

- -

-Something like the following steps will do the trick: -

- -
-	cp docs/relnotes/X.Y.Z.html /tmp
-        git checkout master
-        cp /tmp/X.Y.Z.html docs/relnotes
-        git add docs/relnotes/X.Y.Z.html
-
- -

-Also, edit docs/relnotes.html to add a link to the new release notes, and edit -docs/index.html to add a news entry. Then commit and push: -

- -
-	git commit -a -m "docs: Import X.Y.Z release notes, add news item."
-        git push origin
-
- -

Update the mesa3d.org website

- -

-NOTE: The recent release managers have not been performing this step -themselves, but leaving this to Brian Paul, (who has access to the -sourceforge.net hosting for mesa3d.org). Brian is more than willing to grant -the permission necessary to future release managers to do this step on their -own. -

- -

-Update the web site by copying the docs/ directory's files to -/home/users/b/br/brianp/mesa-www/htdocs/ with: -
- -sftp USERNAME,mesa3d@web.sourceforge.net - -

- - -

Announce the release

-

-Make an announcement on the mailing lists: - -mesa-dev@lists.freedesktop.org, -and -mesa-announce@lists.freedesktop.org - -Follow the template of previously-sent release announcements. The following -command can be used to generate the log of changes to be included in the -release announcement: - -

-	git shortlog mesa-X.Y.Z-1..mesa-X.Y.Z
-
-

- -

Adding Extensions

To add a new GL extension to Mesa you have to do at least the following. +