### Install Proton using Makefile Source: https://github.com/dawn-winery/dwproton/blob/main/README.md Build and install Proton using the top-level Makefile. This is the easiest method and assumes a working Docker or Podman setup. ```bash make install ``` -------------------------------- ### Launch a Different Binary with Winecfg Source: https://github.com/dawn-winery/dwproton/blob/main/docs/DEBUGGING-LINUX.md Demonstrates how to start a specific binary, such as `winecfg`, instead of the game's default executable within the Steam Runtime environment. ```bash winecfg ``` -------------------------------- ### Example Build Error Output Source: https://github.com/dawn-winery/dwproton/blob/main/README.md Example of output indicating a build failure, showing the line number and error code. ```bash 11220:make: *** [../Makefile.in:465: /builds/proton/proton/build-dir/.kaldi-i386-configure] Error 1 12427:make: *** [../Makefile.in:1323: deploy] Error 2 ``` -------------------------------- ### Example wined3d/DXGI Adapter Initialization Log Source: https://github.com/dawn-winery/dwproton/blob/main/docs/PRIME.md This log snippet shows the GL_RENDERER information from wined3d, indicating the detected GPU and its driver details. Useful for verifying correct adapter initialization. ```text trace:d3d:wined3d_adapter_init_gl_caps GL_RENDERER: "Radeon RX 580 Series (POLARIS10, DRM 3.40.0, 5.10.9-zen1-1-zen, LLVM 11.0.1)". ``` -------------------------------- ### Configure clangd with compile_commands.json Source: https://github.com/dawn-winery/dwproton/blob/main/README.md Example of configuring clangd to use a specific compile_commands.json file by creating a .clangd file. ```bash cd src/proton/wine/ cat > .clangd < info process pid threads executable (all id:s are in hex) 0000028c 1 'start.exe' 0000029c 1 \_ 'winedbg.exe' =000002a4 1 \_ 'winedbg.exe' 00000294 2 \_ 'conhost.exe' 00000030 10 'services.exe' 000000e4 6 \_ 'rpcss.exe' 000000b0 3 \_ 'svchost.exe' 00000094 6 \_ 'plugplay.exe' 00000064 9 \_ 'winedevice.exe' 0000003c 8 \_ 'winedevice.exe' 00000020 3 'steam.exe' 00000128 62 \_ 'Game.exe' 000000d0 3 \_ 'explorer.exe' 0000010c 3 \_ 'tabtip.exe' ``` -------------------------------- ### Set Proton Runtime Option: Use wined3d Source: https://github.com/dawn-winery/dwproton/blob/main/README.md Example of setting a Proton runtime option to use the OpenGL-based wined3d renderer instead of DXVK by setting the PROTON_USE_WINED3D environment variable. ```bash PROTON_USE_WINED3D=1 %command% ``` -------------------------------- ### Configure Debugging Tool with Public Proton Symbol Store Source: https://github.com/dawn-winery/dwproton/blob/main/symstore/guidelines.md Use the public Proton symbol store URI when configuring debugging tools. This avoids the need for local installation of symbol files. ```text srv* ``` -------------------------------- ### Build dwproton Locally Source: https://github.com/dawn-winery/dwproton/blob/main/README.md Clone the dwproton repository, configure the build with Docker, and compile the redistributable. This process allows for local customization and building. ```bash git clone --recurse-submodules https://dawn.wine/dawn-winery/dwproton.git cd dwproton mkdir build && cd build ../configure.sh --build-name=dwproton-local --container-engine=docker --enable-ccache --without-tts make -j$(nproc) redist ``` -------------------------------- ### Enable Proton Logging for Troubleshooting Source: https://github.com/dawn-winery/dwproton/blob/main/docs/PRIME.md Set these launch options in Steam to enable detailed logging for Proton, wined3d, and VKD3D. This is crucial for diagnosing device selection and graphics issues. ```bash PROTON_LOG=1 WINEDEBUG=+d3d VKD3D_DEBUG=trace ``` -------------------------------- ### Set Launch Options for Steam Runtime Logging Source: https://github.com/dawn-winery/dwproton/blob/main/docs/DEBUGGING-LINUX.md Configure Steam launch options to enable Proton logging and the launcher service, which is necessary for accessing the Steam Runtime shell. ```bash PROTON_LOG=1 STEAM_COMPAT_LAUNCHER_SERVICE=proton %command% ``` -------------------------------- ### Log Build Output to File Source: https://github.com/dawn-winery/dwproton/blob/main/README.md Capture the full build output to a file for easier debugging. This is useful when build failures produce extensive logs. ```bash make 2>&1 | tee build.log ``` -------------------------------- ### Configure Visual Studio Symbol Path Source: https://github.com/dawn-winery/dwproton/blob/main/symstore/guidelines.md Set up Visual Studio to use a local symbol store for debugging. This involves adding a .pdb store pointing to your directory. ```text ``` -------------------------------- ### Build Proton SDK Docker Image Source: https://github.com/dawn-winery/dwproton/blob/main/docker/README.md Builds the Proton SDK Docker image using Make. Supports using Podman as an alternative to Docker. ```makefile make proton # Or using Podman: make DOCKER=podman proton ``` -------------------------------- ### Enable PRIME Offloading for Nvidia -> Integrated Intel (Vulkan) Source: https://github.com/dawn-winery/dwproton/blob/main/docs/PRIME.md Set this launch option in Steam for Vulkan games with an Nvidia GPU and integrated Intel graphics. It loads the Optimus Vulkan layer to restrict GPU selection to NVIDIA. ```bash __NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only %command% ``` -------------------------------- ### Build ARM64 Proton SDK Docker Image Source: https://github.com/dawn-winery/dwproton/blob/main/docker/README.md Builds the Proton SDK Docker image for the ARM64 architecture using Make. ```makefile make BUILD_ARCH=aarch64 proton-llvm ``` -------------------------------- ### Launch Proton via Pressure-Vessel Shell Source: https://github.com/dawn-winery/dwproton/blob/main/docs/DEBUGGING-LINUX.md This demonstrates how to use `pressure-vessel` to launch Proton, with the original command passed as arguments. ```bash /home/ivyl/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper/pressure-vessel/bin/steam-runtime-launcher-interface-0 container-runtime /home/ivyl/.local/share/Steam/steamapps/common/Proton - Experimental/proton waitforexitandrun /home/ivyl/.local/share/Steam/steamapps/common/Game/Game.exe ``` -------------------------------- ### Configure WinDbg Symbol Path Source: https://github.com/dawn-winery/dwproton/blob/main/symstore/guidelines.md Add the local symbol store path to WinDbg's symbol settings. Ensure is replaced with your actual symbol store directory. ```text srv* ``` -------------------------------- ### List Selectable Vulkan Devices with MESA_VK_DEVICE_SELECT Source: https://github.com/dawn-winery/dwproton/blob/main/docs/PRIME.md This command lists the available Vulkan devices recognized by Mesa. Use it to identify the correct GPU IDs for further configuration. ```bash $ MESA_VK_DEVICE_SELECT=list vulkaninfo ``` -------------------------------- ### Enable PRIME Offloading for AMD -> Integrated Intel (Mesa) Source: https://github.com/dawn-winery/dwproton/blob/main/docs/PRIME.md Set this launch option in Steam for games using DirectX 8 or OpenGL when using an AMD GPU with integrated Intel graphics. This utilizes DRI_PRIME for device selection. ```bash DRI_PRIME=1 %command% ``` -------------------------------- ### Configure Proton Build with Custom SDK Image Source: https://github.com/dawn-winery/dwproton/blob/main/docker/README.md Configures the Proton build script to use a custom-built SDK image. Ensure the same container engine (Docker or Podman) is used for both building the image and running the configure script. ```bash $PROTON_SRC/configure.sh --proton-sdk-image=registry.gitlab.steamos.cloud/proton/steamrt4/sdk:latest ``` -------------------------------- ### Limit Vulkan Device Selection with MESA_VK_DEVICE_SELECT Source: https://github.com/dawn-winery/dwproton/blob/main/docs/PRIME.md This launch option combines DRI_PRIME with MESA_VK_DEVICE_SELECT to explicitly choose a specific Vulkan device. Replace '1002:67df' with the desired GPU's vendor and product ID. ```bash DRI_PRIME=1 MESA_VK_DEVICE_SELECT=1002:67df $command% ``` -------------------------------- ### Build Symbol Server Tarball Source: https://github.com/dawn-winery/dwproton/blob/main/symstore/guidelines-deploy.md Run this command in a Proton build environment after building Proton to create the symbol server tarball. ```bash make symstore-tarball ``` -------------------------------- ### Substitute Proton Command with sed Source: https://github.com/dawn-winery/dwproton/blob/main/docs/DEBUGGING-LINUX.md Use this command to replace the default Proton launch command with `winecfg` using `sed` for substitution. ```bash echo "%command%" | sed 's/proton waitforexitandrun .*/proton waitforexitandrun winecfg/' | sh ``` -------------------------------- ### Enable PRIME Offloading for Nvidia -> Integrated Intel Source: https://github.com/dawn-winery/dwproton/blob/main/docs/PRIME.md Use this launch option in Steam for games using DirectX 8 or OpenGL with an Nvidia GPU and integrated Intel graphics. It enables NVIDIA's proprietary driver offloading and specifies the OpenGL vendor. ```bash __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia %command% ``` -------------------------------- ### Access Steam Runtime Shell via pressure-vessel Source: https://github.com/dawn-winery/dwproton/blob/main/docs/DEBUGGING-LINUX.md Use the `steam-runtime-launch-client` command to enter a shell within the per-app container of the Steam Runtime. This allows direct execution of Wine commands. ```bash /home/ivyl/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper/pressure-vessel/bin/steam-runtime-launch-client \ --bus-name=:1.307 \ --directory='' \ -- \ bash ``` -------------------------------- ### Configure Proton Build Source: https://github.com/dawn-winery/dwproton/blob/main/README.md Manually configure the Proton build environment. This involves creating a build directory and running the configure script with desired options. ```bash mkdir ../build && cd ../build ../proton/configure.sh --enable-ccache --build-name=my_build ``` -------------------------------- ### Use ARM64 SDK Image for Proton Build Source: https://github.com/dawn-winery/dwproton/blob/main/docker/README.md Configures the Proton build script to use a custom-built ARM64 SDK image. ```bash $PROTON_SRC/configure.sh --proton-sdk-image=registry.gitlab.steamos.cloud/proton/steamrt4/sdk/arm64:latest ``` -------------------------------- ### ICU for Windows Binary Archives Source: https://github.com/dawn-winery/dwproton/blob/main/icu/README.md Lists the available pre-packaged binary archives for ICU on Windows, including 32-bit and 64-bit MSVC2019 versions. ```text icu4c-68_2-Win64-MSVC2019.zip icu4c-68_2-Win32-MSVC2019.zip ``` -------------------------------- ### Search Build Log for Errors Source: https://github.com/dawn-winery/dwproton/blob/main/README.md Search the captured build log for specific error messages to pinpoint the cause of a build failure. ```bash grep -n '] Error [0-9]' build.log ``` -------------------------------- ### Build Proton Manually Source: https://github.com/dawn-winery/dwproton/blob/main/README.md Build Proton after configuring it. This command uses the Makefile generated by the configure script. ```bash make ``` -------------------------------- ### Symlink compile_commands.json Source: https://github.com/dawn-winery/dwproton/blob/main/README.md Alternative method to configure clangd by creating a symbolic link to the compile_commands.json file. ```bash ln -s ../build/current-dev/compile_commands/wine-x86_64/compile_commands.json . ``` -------------------------------- ### Load Symbols with Custom GDB Script Source: https://github.com/dawn-winery/dwproton/blob/main/docs/DEBUGGING-LINUX.md Source a custom GDB script to enable the `load-symbol-files` command, which helps load symbols from `/proc/$pid/maps` for older Proton versions. ```gdb (gdb) source ~/src/proton/wine/tools/gdbinit.py (gdb) load-symbol-files loading symbols for /home/ivyl/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/wine/x86_64-windows/kernelbase.dll ... ``` -------------------------------- ### Clone Latest Proton Sources Source: https://github.com/dawn-winery/dwproton/blob/main/README.md Obtain the latest Proton source code using Git. This command clones the repository and initializes all submodules. ```bash git clone --recurse-submodules https://github.com/ValveSoftware/Proton.git proton ``` -------------------------------- ### Bash Script for Cherry-Picking Commits from a File Source: https://github.com/dawn-winery/dwproton/blob/main/docs/REBASING_TIPS.md A script to cherry-pick commits listed in a file. It handles progress tracking by prefixing successfully picked commits with '#' in the output file. Aborts on failure and requires manual conflict resolution. ```bash #!/bin/bash # Cherry-picks commits from an input file in --pretty=oneline format. # Lines that begin with '#' are ignored. # Aborts when a cherry-pick fails. # Outputs the same input file on stderr, but with '#' prefixed to lines that were successfully cherry-picked. #Usage: # $ pick_commits to_pick 2> ~/to_pick2 # On pick failure, fix conflicts and use "git cherry-pick --continue", or # otherwise fix up the repo as desired. # Edit ~/to_pick2 to comment-out the commit that you fixed. # Continue using the new file: # $ pick_commits to_pick2 2> ~/to_pick # Repeat, alternating between to_pick and to_pick2. broken=0 while read -r l; do f=$(echo -n "$l" | cut '-d ' -f1 -) if [ $broken == 0 -a ${f:0:1} != '#' ]; then echo "Picking $l" git cherry-pick $f 2>&1 if [ $? -ne 0 ]; then echo $l 1>&2 broken=1 else echo '#'$l 1>&2 fi else echo $l 1>&2 fi done < "$1" ``` -------------------------------- ### Set Thread Niceness in limits.conf Source: https://github.com/dawn-winery/dwproton/blob/main/docs/THREAD_PRIORITY.md Configure system-wide limits for thread niceness by adding this line to /etc/security/limits.conf. A value of -15 allows threads to achieve a high priority. ```bash * hard nice -15 ``` -------------------------------- ### Build Proton with Unstripped Symbols Source: https://github.com/dawn-winery/dwproton/blob/main/README.md Perform a debug build of Proton by preventing symbol stripping. This is useful for debugging build issues and should be used with a clean build directory. ```bash mkdir ../debug-proton-build && cd ../debug-proton-build ../proton/configure.sh --enable-ccache --build-name=debug_build make UNSTRIPPED_BUILD=1 install ``` -------------------------------- ### View Backtrace with Loaded Symbols Source: https://github.com/dawn-winery/dwproton/blob/main/docs/DEBUGGING-LINUX.md After loading symbols using a custom GDB script, you can view a detailed backtrace that includes information across PE/Unix boundaries. ```gdb (gdb) bt #0 0x000075dce0cd788d in ?? () #1 0x000075dcdf26e842 in futex_wait (timeout=0x0, val=0, addr=0x75dcdd8383e0) at ../src-wine/dlls/ntdll/unix/sync.c:127 #2 NtWaitForAlertByThreadId (address=, timeout=0x0) at ../src-wine/dlls/ntdll/unix/sync.c:2658 #3 #4 0x000000017000ebb4 in NtWaitForAlertByThreadId () #5 0x00000001700367f9 in RtlWaitOnAddress (addr=addr@entry=0x4850970, cmp=0x3d12fa9c, cmp@entry=0x3d12fabc, size=size@entry=4, timeout=timeout@entry=0x0) at ../src-wine/dlls/ntdll/sync.c:941 #6 0x000000017003276a in RtlSleepConditionVariableSRW (variable=0x4850970, lock=0x4850908, timeout=0x0, flags=) at ../src-wine/dlls/ntdll/sync.c:837 #7 0x000000035915c892 in dxvk::condition_variable::wait (lock=..., this=0x4850970) at ../src-dxvk/src/dxvk/../util/log/../thread.h:251 #8 dxvk::condition_variable::wait > (pred=..., lock=..., this=0x4850970) at ../src-dxvk/src/dxvk/../util/log/../thread.h:257 #9 dxvk::DxvkPipelineWorkers::runWorker (this=0x48508f0, maxPriority=dxvk::DxvkPipelinePriority::Normal) at ../src-dxvk/src/dxvk/dxvk_pipemanager.cpp:140 #10 0x00000003591a7781 in std::function::operator()() const (this=0x4852ee0) at /usr/x86_64-w64-mingw32/include/c++/10.3.0/bits/std_function.h:622 #11 dxvk::thread::threadProc (arg=0x4852ed0, arg@entry=) at ../src-dxvk/src/util/thread.cpp:68 #12 0x000000007b6146ed in BaseThreadInitThunk (unknown=, entry=, arg=) at ../src-wine/dlls/kernel32/thread.c:61 #13 0x000000017000f1a7 in RtlUserThreadStart () #14 0x0000000000000000 in ?? () ``` -------------------------------- ### Log Commits Not Backported from Upstream Wine Source: https://github.com/dawn-winery/dwproton/blob/main/docs/REBASING_TIPS.md Use this command to list commits applied on top of a specific Wine version that were not backported from upstream Wine. This helps identify commits to manage during a rebase. ```bash git log --pretty=oneline --reverse --grep='cherry pick' --invert-grep wine-4.2..proton_4.2 ``` -------------------------------- ### Attach GDB to a Running Process Source: https://github.com/dawn-winery/dwproton/blob/main/docs/DEBUGGING-LINUX.md Use GDB to attach to a running game process by its PID. This is useful for live debugging sessions. ```bash $ ps | grep Game 2263566 ? tsl 0:09 Z:\home\ivyl\.local\share\Steam\steamapps\common\Game\Game.exe $ gdb GNU gdb (GDB) 14.1 ... (gdb) attach 2263566 Attaching to process 2263566 [New LWP 2263569] ... 0x000075dce0cd788d in ?? () ``` -------------------------------- ### Enable DGRAM ICMP Sockets Persistently Source: https://github.com/dawn-winery/dwproton/blob/main/docs/ICMP_ECHO.md Makes the DGRAM ICMP socket enablement persistent across reboots by adding a configuration line to sysctl.conf. Replace '' and '' with the desired user group range. ```bash net.ipv4.ping_group_range=" " ``` -------------------------------- ### Limit GPU Enumeration with DXVK_FILTER_DEVICE_NAME Source: https://github.com/dawn-winery/dwproton/blob/main/docs/PRIME.md Use this launch option in Steam to specify which GPU should be used by DXVK. Replace 'GTX 1650' with your specific graphics card name. You can find GPU names using the 'vulkaninfo' program. ```bash DXVK_FILTER_DEVICE_NAME="GTX 1650" %command% ``` -------------------------------- ### Enable DGRAM ICMP Sockets Temporarily Source: https://github.com/dawn-winery/dwproton/blob/main/docs/ICMP_ECHO.md Temporarily enables DGRAM ICMP sockets for a specified range of user groups until the next reboot. Adjust '' and '' to define the user group bounds. ```bash sudo sysctl -w net.ipv4.ping_group_range=" " ``` -------------------------------- ### Update Proton Submodules Source: https://github.com/dawn-winery/dwproton/blob/main/README.md Switch to a specific Proton branch and update its submodules. This is necessary when changing branches to ensure all components are up-to-date. ```bash git checkout experimental_6.3 git submodule update --init --recursive ``` -------------------------------- ### SHA256 Checksums for ICU DLLs Source: https://github.com/dawn-winery/dwproton/blob/main/icu/README.md Provides SHA256 checksums for critical ICU DLLs (icudt, icuin, icuuc) for both x86 and x86_64 Windows architectures, version 6.8.2. ```text fb652b4d18e452fae886f8fed404d6b430587e744a117ffaa32e05e73e839a97 icu-6.8.2-x86/icudt68.dll c7b8d528589f8e95e77ee42fe360b7d0be604bdb5ff2658d6ce15be2bec31d37 icu-6.8.2-x86/icuin68.dll 720c5009b6cc4ea641fc5bc803db9b425807989e8312512fc65b563268f284df icu-6.8.2-x86/icuuc68.dll cf4479a3f39d95c77058f39c5f49d104ec4f6d43e365aa13a2312066d2f5b024 icu-6.8.2-x86_64/icudt68.dll 87956cf4f8f8eb9e1860628fc5ce31e762d85ad3cfddad0824f0d45aaa4d5d78 icu-6.8.2-x86_64/icuin68.dll c85a5848628cc5e17253e894bbea98868b76766714fe72673bd6ffefa0521f52 icu-6.8.2-x86_64/icuuc68.dll ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.