Welcome to dxvk-remix! We appreciate your interest in contributing. RTX Remix is an open-source project created and maintained by NVIDIA Corporation. The codebase of DXVK-Remix is provided under the MIT license, and NVIDIA's official statement on the use of this repository and its submodules for projects is as follows:
NVIDIA permits modders to build and share mods using NVIDIA technologies/binaries from our RTX Remix’s GitHub and the DXVK-Remix GitHub.
If you are looking to contribute to the RTX Remix project, be mindful of the following:
A number of useful resources are available on the RTX Remix Discord, including a list of easy-to-run applications with high compatibility.
All bug reports and requests should be filed on the RTX Remix repository via New Issue button. Select an appropriate template for your issue/ask and fill out the requested information. Please avoid submitting reports to the dxvk-remix repository.
Due to ticket volume and internal project demands, these tickets can take time-- be patient!
Pull Requests should be submitted to the relevant repository. Pull requests for the main RTX Remix repository are rarely if ever needed. If the pull request is for a submodule (DXVK-Remix), send the pull request to the repository instead.
DXVK-Remix has two separate code guide style for C/C++ code and shader code:
Additionally, limit changes in your PR to changes that are required for the goal of the PR. Avoid making unnecessary code style changes/fixes to code outside the code of the PR, unless it's a dedicated PR that's addressing code style in particular.
When making a pull request, remember to update dxvk_imgui_about.cpp and add your name to the list of "GitHub Contributors" on a new line. Names are organized from A-Z by last name.
While the source code of RTX Remix is made available via GitHub, internal development uses a private environment then pushes to GitHub. The repository is open to contributions, but all pulls must be prepared as a single squashed commit so that the commit can be cherrypicked and merged internally. When the process is complete, this will appear as two commits-- one from the contributor, and one from the merge.
This is done in order to keep a clean history of changes and not interrupt internal development branches more than necessary.
Squashing is a process in which all of the changes across several commits are transformed into a single, clean commit with a single clean history.
When Squashing, make sure that you replace the automatic squashed commit history with a concise message describing exactly what your change does.
- Press
Ctrl-Shift-Hor selectBranch>Merge into current branch..., then select the branch you are squashing. The branch will merge into itself with a clean history. If an error occurs, see Squash Troubleshooting.
git fetchgit checkout yourPRbranchgit merge --squash yourPRbranch
If a branch with a new commit has been pulling and merging with the main repository, this can make a clean commit history difficult. If a squash is no longer possible, the workaround is as follows:
Rebase and Mergeyour PR with the latest changes from main.- Create a new branch based on
upstream/main. This will be a branch for a clean new history. Squash and Mergefrom the PR branch to the new cleaned branch. Do not include the full automatic squashed history changes; just give a concise and accurate description of what the changes do.Force Pushthe cleaned branch to overwrite the PR branch.- Your PR branch will now have a clean and concise history with one commit, and you will appear as the only author.
Rebase and Mergeyour PR branch toupstream/mainby pressingBranch>Rebase Current Branch, orCtrl-Shift-E.- Create a new branch by clicking the
Current branchtab and selectingNew branch. The new branch should be based onupstream/mainwith no changes. Squash and Mergethe dirty PR branch by selecting the clean branch, then pressingCtrl-Shift-H. Select the dirty branch and all commits will squashed and merged. The clean branch now has your work as a single commit.- Press
Ctrl-`to open the Command Prompt. - Input the following command, with
rebased-commit-branchbeing your clean branch from step 3 andoriginal-dirty-pr-branchbeing your dirty PR branch from step 1:git push origin +rebased-commit-branch:original-dirty-pr-branch- By adding a
+, this becomes a force-push, overwriting the previous commit history for only the new branch's history.
- You will now have a single squashed commit in your PR branch.
git fetchgit pull --rebase upstream/maingit checkout -b rebased-commit-branch upstream/maingit merge --squash dirty-original-pr-branch:rebased-commit-branchgit push origin +rebased-commit-branch:original-dirty-pr-branch