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