114b11b2bSmrgPixman
214b11b2bSmrg======
314b11b2bSmrg
4f4f78bb6SmrgPixman is a library that provides low-level pixel manipulation
5b4b94579Smrgfeatures such as image compositing and trapezoid rasterization.
6b4b94579Smrg
714b11b2bSmrgQuestions should be directed to the pixman mailing list:
8b4b94579Smrg
914b11b2bSmrg    https://lists.freedesktop.org/mailman/listinfo/pixman
10b4b94579Smrg
11f4f78bb6SmrgYou can also file bugs at
121b18d63aSmrg
1314b11b2bSmrg    https://gitlab.freedesktop.org/pixman/pixman/-/issues/new
1414b11b2bSmrg
1514b11b2bSmrgor submit improvements in form of a Merge Request via
1614b11b2bSmrg
1714b11b2bSmrg    https://gitlab.freedesktop.org/pixman/pixman/-/merge_requests
181b18d63aSmrg
19f4f78bb6SmrgFor real time discussions about pixman, feel free to join the IRC
20f4f78bb6Smrgchannels #cairo and #xorg-devel on the FreeNode IRC network.
21f4f78bb6Smrg
22f4f78bb6Smrg
23f4f78bb6SmrgContributing
24f4f78bb6Smrg------------
25f4f78bb6Smrg
26f4f78bb6SmrgIn order to contribute to pixman, you will need a working knowledge of
27f4f78bb6Smrgthe git version control system. For a quick getting started guide,
28f4f78bb6Smrgthere is the "Everyday Git With 20 Commands Or So guide"
29f4f78bb6Smrg
3014b11b2bSmrg    https://www.kernel.org/pub/software/scm/git/docs/everyday.html
31f4f78bb6Smrg
32f4f78bb6Smrgfrom the Git homepage. For more in depth git documentation, see the
33f4f78bb6Smrgresources on the Git community documentation page:
34f4f78bb6Smrg
3514b11b2bSmrg    https://git-scm.com/documentation
36f4f78bb6Smrg
37f4f78bb6SmrgPixman uses the infrastructure from the freedesktop.org umbrella
38f4f78bb6Smrgproject. For instructions about how to use the git service on
39f4f78bb6Smrgfreedesktop.org, see:
40f4f78bb6Smrg
4114b11b2bSmrg    https://www.freedesktop.org/wiki/Infrastructure/git/Developers
42f4f78bb6Smrg
43f4f78bb6SmrgThe Pixman master repository can be found at:
44b4b94579Smrg
4514b11b2bSmrg    https://gitlab.freedesktop.org/pixman/pixman
46f4f78bb6Smrg
47f4f78bb6Smrg
48101944cfSmrgSending patches
49101944cfSmrg---------------
50f4f78bb6Smrg
5114b11b2bSmrgPatches should be submitted in form of Merge Requests via Gitlab.
52f4f78bb6Smrg
5314b11b2bSmrgYou will first need to create a fork of the main pixman repository at
54a156c6bdSmrg
5514b11b2bSmrg    https://gitlab.freedesktop.org/pixman/pixman
56a156c6bdSmrg
5714b11b2bSmrgvia the Fork button on the top right. Once that is done you can add your
5814b11b2bSmrgpersonal repository as a remote to your local pixman development git checkout:
59f4f78bb6Smrg
6014b11b2bSmrg    git remote add my-gitlab git@gitlab.freedesktop.org:YOURUSERNAME/pixman.git
61f4f78bb6Smrg
6214b11b2bSmrg    git fetch my-gitlab
63f4f78bb6Smrg
6414b11b2bSmrgMake sure to have added ssh keys to your gitlab profile at
65a156c6bdSmrg
6614b11b2bSmrg    https://gitlab.freedesktop.org/profile/keys
67a156c6bdSmrg
6814b11b2bSmrgOnce that is set up, the general workflow for sending patches is to create a
6914b11b2bSmrgnew local branch with your improvements and once it's ready push it to your
7014b11b2bSmrgpersonal pixman fork:
71a156c6bdSmrg
7214b11b2bSmrg    git checkout -b fix-some-bug
7314b11b2bSmrg    ...
7414b11b2bSmrg    git push my-gitlab
7514b11b2bSmrg
7614b11b2bSmrgThe output of the `git push` command will include a link that allows you to
7714b11b2bSmrgcreate a Merge Request against the official pixman repository.
7814b11b2bSmrg
7914b11b2bSmrgWhenever you make changes to your branch (add new commits or fix up commits)
8014b11b2bSmrgyou push them back to your personal pixman fork:
8114b11b2bSmrg
8214b11b2bSmrg    git push -f my-gitlab
8314b11b2bSmrg
8414b11b2bSmrgIf there is an open Merge Request Gitlab will automatically pick up the
8514b11b2bSmrgchanges from your branch and pixman developers can review them anew.
8614b11b2bSmrg
8714b11b2bSmrgIn order for your patches to be accepted, please consider the
8814b11b2bSmrgfollowing guidelines:
89f4f78bb6Smrg
90f4f78bb6Smrg - At each point in the series, pixman should compile and the test
91f4f78bb6Smrg   suite should pass.
92f4f78bb6Smrg
93f4f78bb6Smrg   The exception here is if you are changing the test suite to
94f4f78bb6Smrg   demonstrate a bug. In this case, make one commit that makes the
95f4f78bb6Smrg   test suite fail due to the bug, and then another commit that fixes
96f4f78bb6Smrg   the bug.
97f4f78bb6Smrg
98f4f78bb6Smrg   You can run the test suite with 
99f4f78bb6Smrg
10014b11b2bSmrg       meson test -C builddir
101f4f78bb6Smrg
102f4f78bb6Smrg   It will take around two minutes to run on a modern PC.
103f4f78bb6Smrg
104f4f78bb6Smrg - Follow the coding style described in the CODING_STYLE file
105f4f78bb6Smrg
106f4f78bb6Smrg - For bug fixes, include an update to the test suite to make sure
107f4f78bb6Smrg   the bug doesn't reappear.
108f4f78bb6Smrg
109f4f78bb6Smrg - For new features, add tests of the feature to the test
110f4f78bb6Smrg   suite. Also, add a program demonstrating the new feature to the
111f4f78bb6Smrg   demos/ directory.
112f4f78bb6Smrg
113f4f78bb6Smrg - Write descriptive commit messages. Useful information to include:
114f4f78bb6Smrg        - Benchmark results, before and after
115f4f78bb6Smrg	- Description of the bug that was fixed
116f4f78bb6Smrg	- Detailed rationale for any new API
117f4f78bb6Smrg	- Alternative approaches that were rejected (and why they
118f4f78bb6Smrg          don't work)
119f4f78bb6Smrg	- If review comments were incorporated, a brief version
120f4f78bb6Smrg          history describing what those changes were.
121f4f78bb6Smrg
12214b11b2bSmrg - For big patch series, write an introductory post with an overall
123f4f78bb6Smrg   description of the patch series, including benchmarks and
124f4f78bb6Smrg   motivation. Each commit message should still be descriptive and
125f4f78bb6Smrg   include enough information to understand why this particular commit
126f4f78bb6Smrg   was necessary.
127b4b94579Smrg
128f4f78bb6SmrgPixman has high standards for code quality and so almost everybody
129f4f78bb6Smrgshould expect to have the first versions of their patches rejected.
130b4b94579Smrg
131f4f78bb6SmrgIf you think that the reviewers are wrong about something, or that the
13214b11b2bSmrgguidelines above are wrong, feel free to discuss the issue. The purpose
13314b11b2bSmrgof the guidelines and code review is to ensure high code quality; it is
13414b11b2bSmrgnot an exercise in compliance.
135