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