README revision 14b11b2b
101e04c3fSmrgPixman
201e04c3fSmrg======
301e04c3fSmrg
401e04c3fSmrgPixman is a library that provides low-level pixel manipulation
501e04c3fSmrgfeatures such as image compositing and trapezoid rasterization.
601e04c3fSmrg
701e04c3fSmrgQuestions should be directed to the pixman mailing list:
801e04c3fSmrg
901e04c3fSmrg    https://lists.freedesktop.org/mailman/listinfo/pixman
1001e04c3fSmrg
1101e04c3fSmrgYou can also file bugs at
1201e04c3fSmrg
1301e04c3fSmrg    https://gitlab.freedesktop.org/pixman/pixman/-/issues/new
1401e04c3fSmrg
1501e04c3fSmrgor submit improvements in form of a Merge Request via
1601e04c3fSmrg
1701e04c3fSmrg    https://gitlab.freedesktop.org/pixman/pixman/-/merge_requests
1801e04c3fSmrg
1901e04c3fSmrgFor real time discussions about pixman, feel free to join the IRC
2001e04c3fSmrgchannels #cairo and #xorg-devel on the FreeNode IRC network.
2101e04c3fSmrg
2201e04c3fSmrg
2301e04c3fSmrgContributing
2401e04c3fSmrg------------
2501e04c3fSmrg
2601e04c3fSmrgIn order to contribute to pixman, you will need a working knowledge of
2701e04c3fSmrgthe git version control system. For a quick getting started guide,
2801e04c3fSmrgthere is the "Everyday Git With 20 Commands Or So guide"
2901e04c3fSmrg
3001e04c3fSmrg    https://www.kernel.org/pub/software/scm/git/docs/everyday.html
3101e04c3fSmrg
3201e04c3fSmrgfrom the Git homepage. For more in depth git documentation, see the
3301e04c3fSmrgresources on the Git community documentation page:
3401e04c3fSmrg
3501e04c3fSmrg    https://git-scm.com/documentation
3601e04c3fSmrg
3701e04c3fSmrgPixman uses the infrastructure from the freedesktop.org umbrella
3801e04c3fSmrgproject. For instructions about how to use the git service on
3901e04c3fSmrgfreedesktop.org, see:
4001e04c3fSmrg
4101e04c3fSmrg    https://www.freedesktop.org/wiki/Infrastructure/git/Developers
4201e04c3fSmrg
4301e04c3fSmrgThe Pixman master repository can be found at:
4401e04c3fSmrg
4501e04c3fSmrg    https://gitlab.freedesktop.org/pixman/pixman
4601e04c3fSmrg
4701e04c3fSmrg
4801e04c3fSmrgSending patches
4901e04c3fSmrg---------------
5001e04c3fSmrg
5101e04c3fSmrgPatches should be submitted in form of Merge Requests via Gitlab.
5201e04c3fSmrg
5301e04c3fSmrgYou will first need to create a fork of the main pixman repository at
5401e04c3fSmrg
5501e04c3fSmrg    https://gitlab.freedesktop.org/pixman/pixman
5601e04c3fSmrg
5701e04c3fSmrgvia the Fork button on the top right. Once that is done you can add your
5801e04c3fSmrgpersonal repository as a remote to your local pixman development git checkout:
5901e04c3fSmrg
6001e04c3fSmrg    git remote add my-gitlab git@gitlab.freedesktop.org:YOURUSERNAME/pixman.git
6101e04c3fSmrg
6201e04c3fSmrg    git fetch my-gitlab
6301e04c3fSmrg
6401e04c3fSmrgMake sure to have added ssh keys to your gitlab profile at
6501e04c3fSmrg
6601e04c3fSmrg    https://gitlab.freedesktop.org/profile/keys
6701e04c3fSmrg
6801e04c3fSmrgOnce that is set up, the general workflow for sending patches is to create a
6901e04c3fSmrgnew local branch with your improvements and once it's ready push it to your
7001e04c3fSmrgpersonal pixman fork:
7101e04c3fSmrg
7201e04c3fSmrg    git checkout -b fix-some-bug
7301e04c3fSmrg    ...
7401e04c3fSmrg    git push my-gitlab
7501e04c3fSmrg
7601e04c3fSmrgThe output of the `git push` command will include a link that allows you to
7701e04c3fSmrgcreate a Merge Request against the official pixman repository.
7801e04c3fSmrg
7901e04c3fSmrgWhenever you make changes to your branch (add new commits or fix up commits)
8001e04c3fSmrgyou push them back to your personal pixman fork:
8101e04c3fSmrg
828a1362adSmaya    git push -f my-gitlab
838a1362adSmaya
848a1362adSmayaIf there is an open Merge Request Gitlab will automatically pick up the
858a1362adSmayachanges from your branch and pixman developers can review them anew.
8601e04c3fSmrg
8701e04c3fSmrgIn order for your patches to be accepted, please consider the
8801e04c3fSmrgfollowing guidelines:
8901e04c3fSmrg
9001e04c3fSmrg - At each point in the series, pixman should compile and the test
9101e04c3fSmrg   suite should pass.
9201e04c3fSmrg
9301e04c3fSmrg   The exception here is if you are changing the test suite to
9401e04c3fSmrg   demonstrate a bug. In this case, make one commit that makes the
9501e04c3fSmrg   test suite fail due to the bug, and then another commit that fixes
9601e04c3fSmrg   the bug.
9701e04c3fSmrg
9801e04c3fSmrg   You can run the test suite with 
9901e04c3fSmrg
10001e04c3fSmrg       meson test -C builddir
10101e04c3fSmrg
10201e04c3fSmrg   It will take around two minutes to run on a modern PC.
10301e04c3fSmrg
10401e04c3fSmrg - Follow the coding style described in the CODING_STYLE file
10501e04c3fSmrg
10601e04c3fSmrg - For bug fixes, include an update to the test suite to make sure
10701e04c3fSmrg   the bug doesn't reappear.
10801e04c3fSmrg
10901e04c3fSmrg - For new features, add tests of the feature to the test
11001e04c3fSmrg   suite. Also, add a program demonstrating the new feature to the
11101e04c3fSmrg   demos/ directory.
11201e04c3fSmrg
1138a1362adSmaya - Write descriptive commit messages. Useful information to include:
11401e04c3fSmrg        - Benchmark results, before and after
11501e04c3fSmrg	- Description of the bug that was fixed
11601e04c3fSmrg	- Detailed rationale for any new API
11701e04c3fSmrg	- Alternative approaches that were rejected (and why they
11801e04c3fSmrg          don't work)
11901e04c3fSmrg	- If review comments were incorporated, a brief version
12001e04c3fSmrg          history describing what those changes were.
12101e04c3fSmrg
12201e04c3fSmrg - For big patch series, write an introductory post with an overall
12301e04c3fSmrg   description of the patch series, including benchmarks and
12401e04c3fSmrg   motivation. Each commit message should still be descriptive and
12501e04c3fSmrg   include enough information to understand why this particular commit
12601e04c3fSmrg   was necessary.
12701e04c3fSmrg
12801e04c3fSmrgPixman has high standards for code quality and so almost everybody
12901e04c3fSmrgshould expect to have the first versions of their patches rejected.
13001e04c3fSmrg
13101e04c3fSmrgIf you think that the reviewers are wrong about something, or that the
13201e04c3fSmrgguidelines above are wrong, feel free to discuss the issue. The purpose
13301e04c3fSmrgof the guidelines and code review is to ensure high code quality; it is
13401e04c3fSmrgnot an exercise in compliance.
13501e04c3fSmrg