├── LICENSE ├── README.md ├── bin ├── f ├── glcts ├── ll ├── ninja-stderr ├── sp └── sw ├── build_kernel.sh ├── conf_drm.sh ├── conf_glcts.sh ├── conf_llvm.sh ├── conf_mesa.sh ├── conf_piglit.sh ├── conf_waffle.sh ├── etc ├── X11 │ └── xorg.conf.d │ │ └── 10-modesetting.conf └── ld.so.conf.d │ └── marek_llvm.conf ├── home ├── .colordiffrc ├── .git-prompt.sh └── .gitconfig ├── llvm_config_i386-linux-gnu.cfg ├── llvm_config_x86_64-linux-gnu.cfg ├── make-install_glx-utils-32.sh └── make-mesa-symlinks.sh /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Advanced Micro Devices, Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | NOTE: 24 | home/.git-prompt.sh uses the GNU GPL 2.0 license. 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Marek's approach to building AMD GPU drivers for driver development 2 | =================================================================== 3 | 4 | These instructions have only been tested on Ubuntu 20.04. 5 | 6 | You are going to need the following packages: 7 | 8 | ```bash 9 | sudo apt install git make gcc flex bison libncurses-dev libssl-dev libelf-dev libzstd-dev zstd python3-setuptools libpciaccess-dev ninja-build libcairo2-dev gcc-multilib cmake-curses-gui g++ g++-multilib ccache libudev-dev libglvnd-dev libxml2-dev graphviz doxygen xsltproc xmlto xorg-dev libxcb-glx0-dev libx11-xcb-dev libxcb-dri2-0-dev libxcb-dri3-dev libxcb-present-dev libxshmfence-dev libxkbcommon-dev libvulkan-dev spirv-tools glslang-tools python3-numpy libcaca-dev python3-lxml autoconf libtool automake xutils-dev libva-dev libvdpau-dev wayland-protocols libwayland-egl-backend-dev python3-mako libsensors-dev libunwind-dev valgrind libxcb-keysyms1-dev curl libwaffle-dev python3-pip 10 | ``` 11 | 12 | Also 32-bit packages: 13 | 14 | ```bash 15 | sudo apt install libelf-dev:i386 libzstd-dev:i386 libpciaccess-dev:i386 libcairo2-dev:i386 libudev-dev:i386 libglvnd-dev:i386 libxml2-dev:i386 libxcb-glx0-dev:i386 libx11-xcb-dev:i386 libxcb-dri2-0-dev:i386 libxcb-dri3-dev:i386 libxcb-present-dev:i386 libxshmfence-dev:i386 libxfixes-dev:i386 libxxf86vm-dev:i386 libxrandr-dev:i386 libwayland-dev:i386 libwayland-egl-backend-dev:i386 libsensors-dev:i386 libunwind-dev:i386 libxcb-keysyms1-dev:i386 16 | ``` 17 | 18 | Put `/usr/lib/ccache:` at the beginning of PATH in `/etc/environment`. 19 | 20 | ```bash 21 | ccache --max-size=30G 22 | ``` 23 | 24 | Instal meson as follows: 25 | ```bash 26 | sudo pip install meson --break-system-packages 27 | ``` 28 | 29 | Cloning repos 30 | ------------- 31 | 32 | These can be skipped depending on your circumstances: 33 | - linux-firmware: The latest firmware is in the [linux-firmware](https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/) repository. It's recommended to only download the latest tagged archive, not the whole repository. Not necessary if your distribution already contains firmware for your GPU. You can find your current firmware in `/lib/firmware/amdgpu`. The firmware is installed by copying files from the firmware repository into that directory and running `sudo update-initramfs -k all -u` to update initrd. The kernel only loads firmware from initrd. 34 | - libdrm can be skipped if Mesa doen't fail to configure, but that's rare. 35 | - xf86-video-amdgpu usually doesn't need an update. 36 | - The 32-bit driver is not needed if Steam isn't going to be used because only Steam and some Steam games need 32-bit drivers. 37 | 38 | Clone with ssh for the repositories where you will want to push. The below commands only give you read-only access. 39 | 40 | ```bash 41 | 42 | # For configure scripts 43 | git clone https://github.com/marekolsak/marek-build.git 44 | 45 | # For the driver: 46 | git clone https://gitlab.freedesktop.org/xorg/driver/xf86-video-amdgpu.git 47 | git clone https://gitlab.freedesktop.org/agd5f/linux.git -b amd-staging-drm-next # Ideally use the AMD internal repository instead 48 | git clone https://gitlab.freedesktop.org/mesa/drm.git 49 | git clone https://github.com/llvm/llvm-project.git 50 | git clone https://gitlab.freedesktop.org/mesa/mesa.git 51 | git clone https://gitlab.freedesktop.org/mesa/demos.git # just for glxinfo and glxgears 52 | 53 | # For test suites: 54 | git clone https://gitlab.freedesktop.org/mesa/piglit.git 55 | git clone https://github.com/KhronosGroup/VK-GL-CTS.git glcts 56 | ``` 57 | 58 | 59 | **Build order for the driver:** 60 | - firmware (just copy the firmware files to /lib/firmware/amdgpu/) 61 | - kernel (depends on firmware) 62 | - libdrm 63 | - llvm 64 | - mesa (depends on libdrm and llvm) 65 | - xf86-video-amdgpu (depends on libdrm and mesa) 66 | 67 | **Build order for test suites:** 68 | - piglit (depends on mesa) - don't install 69 | - glcts (depends on mesa) - don't install 70 | 71 | 72 | Building the driver 73 | ------------------- 74 | 75 | Notes: 76 | - If you get Mesa build failures due to LLVM, go back to llvm-project, check out the latest release/* branch in git, and repeat all step for LLVM. Then repeat all steps for Mesa. 77 | 78 | ```bash 79 | 80 | # Kernel 81 | cd linux 82 | sudo apt install linux-source; cp -r /usr/src/linux-source-*/debian . # to fix a compile failure on Ubuntu 83 | ../marek-build/build_kernel.sh 84 | cd .. 85 | 86 | # libdrm 87 | cd drm 88 | ../marek-build/conf_drm.sh 89 | ../marek-build/conf_drm.sh 32 90 | ninja -Cbuild 91 | ninja -Cbuild32 92 | sudo ninja -Cbuild install 93 | sudo ninja -Cbuild32 install 94 | cd .. 95 | 96 | # LLVM 97 | cd llvm-project 98 | sudo cp ../marek-build/etc/ld.so.conf.d/marek_llvm.conf /etc/ld.so.conf.d/ 99 | ../marek-build/conf_llvm.sh 100 | ../marek-build/conf_llvm.sh 32 101 | ninja -Cbuild 102 | ninja -Cbuild32 103 | sudo ninja -Cbuild install 104 | sudo ninja -Cbuild32 install 105 | sudo ldconfig 106 | cd .. 107 | 108 | # Mesa 109 | cd mesa 110 | ../marek-build/conf_mesa.sh 111 | ../marek-build/conf_mesa.sh 32 112 | ninja -Cbuild 113 | ninja -Cbuild32 114 | sudo ninja -Cbuild install 115 | sudo ninja -Cbuild32 install 116 | sudo ldconfig 117 | cd .. 118 | 119 | # Install the latest 64-bit and 32-bit glxgears and glxinfo (this uses the demos repository) 120 | sudo marek-build/make-install_glx-utils-32.sh 121 | 122 | # xf86-video-amdgpu (usually not needed) 123 | cd xf86-video-amdgpu 124 | ./autogen.sh --prefix=/usr 125 | make -j`nproc` 126 | sudo make install 127 | cd .. 128 | ``` 129 | 130 | The above instructions overwrite distribution libraries and header files. If your Linux distribution updates them, you'll have to reinstall them from source. 131 | 132 | 133 | Building OpenGL test suites 134 | --------------------------- 135 | 136 | ```bash 137 | # piglit 138 | cd piglit 139 | ../marek-build/conf_piglit.sh 140 | ninja 141 | cd .. 142 | 143 | # glcts 144 | cd glcts 145 | ../marek-build/conf_glcts.sh 146 | ninja -Cbuild 147 | ninja -Cbuild_es 148 | cd .. 149 | ``` 150 | 151 | 152 | First test 153 | ---------- 154 | 155 | Verify that the driver is working without Xorg. If this works, Xorg will work too. 156 | 157 | ```bash 158 | PIGLIT_PLATFORM=gbm piglit/bin/glinfo 159 | PIGLIT_PLATFORM=gbm piglit/bin/fbo-generatemipmap -auto 160 | ``` 161 | 162 | Xorg startup crashes can be debugged via gdb over ssh like this: `sudo gdb /usr/lib/xorg/Xorg` 163 | 164 | 165 | Mesa development and testing without subsequent installation 166 | ------------------------------------------------------------ 167 | 168 | After you run `ninja install` for Mesa, you don't have to install it every time you rebuild it if you add symlinks from `/usr/lib` into your build directory. Then, you just build Mesa and the next started app will use it. There is a script that creates the symlinks: 169 | 170 | ```bash 171 | marek-build/make-mesa-symlinks.sh 172 | ``` 173 | 174 | If your Linux distribution updates packages and overwrites your symlinks, just re-run the script. 175 | 176 | 177 | Test suites and regression testing 178 | ---------------------------------- 179 | 180 | Initial setup: 181 | - mesa, piglit, and glcts directories must be next to each other. 182 | - Add `PATH=$HOME/?/mesa/src/gallium/drivers/radeonsi/ci:$PATH` into `.bashrc`. Replace `?` with the proper path. 183 | - Install Rust, which will include its package manager Cargo: https://www.rust-lang.org/tools/install 184 | - The installer will add the Cargo environment into `.bashrc`, which will add cargo into `PATH`. 185 | - Restart bash to get the new `PATH`. 186 | - Run: `cargo install deqp-runner` 187 | 188 | Then just type `radeonsi-run-tests.py` to run all test suites. It will store the results in the `test-results` directory next to the cloned repositories and print regression information into the terminal. 189 | 190 | If your machine has multiple GPUs, you can select the one to test with `--gpu N`. 191 | 192 | Expected tests results for some GPU types are stored directly in Mesa, so running `radeonsi-run-tests.py` will compare the results again this baseline. If the tests results are identical, the output will look like this: 193 | ``` 194 | $ radeonsi-run-tests.py 195 | Tested GPU: 'AMD Radeon RX 6800 XT' (sienna_cichlid) 196 | Output folder: '/tmp/2022-01-07-13-07-48' 197 | Running piglit tests [baseline .../sienna_cichlid-piglit-quick-fail.csv] ... Completed in 397 seconds 198 | Running GLCTS tests [baseline .../sienna_cichlid-glcts-fail.csv] ... Completed in 338 seconds 199 | Running dEQP tests [baseline .../sienna_cichlid-deqp-fail.csv] ... Completed in 649 seconds 200 | ``` 201 | 202 | If no baseline is available, or if new errors were found, the output will be similar to: 203 | ``` 204 | Tested GPU: 'AMD Radeon RX 6800 XT' (sienna_cichlid) 205 | Output folder: '/tmp/2022-01-07-13-07-48' 206 | Running piglit tests [baseline .../sienna_cichlid-piglit-quick-fail.csv] ... Completed in 397 seconds 207 | New errors. Check /tmp/2022-01-07-13-07-48/new_baseline/sienna_cichlid-piglit-quick-fail.csv 208 | Running GLCTS tests [baseline .../sienna_cichlid-glcts-fail.csv] ... Completed in 338 seconds 209 | New errors. Check /tmp/2022-01-07-13-07-48/new_baseline/sienna_cichlid-glcts-fail.csv 210 | Running dEQP tests [baseline .../sienna_cichlid-deqp-fail.csv] ... Completed in 649 seconds 211 | New errors. Check /tmp/2022-01-07-13-07-48/new_baseline/sienna_cichlid-deqp-fail.csv 212 | ``` 213 | 214 | The `*-fail.csv` files contain the unexpected results. `radeonsi-run-tests.py` has a test filter feature, and these files can be used to easily re-run the failed tests. 215 | Here's an example, which also uses the `-v` (verbose) option: 216 | 217 | ``` 218 | $ radeonsi-run-tests.py -v -t /tmp/2022-01-07-13-07-48/new_baseline/sienna_cichlid-piglit-quick-fail.csv 219 | Tested GPU: 'AMD Radeon RX 6800 XT' (sienna_cichlid) 220 | Output folder: '/tmp/2022-01-07-17-06-01' 221 | Running piglit tests 222 | [baseline .../sienna_cichlid-piglit-quick-fail.csv] 223 | | Running 4 piglit tests on 16 threads 224 | | Pass: 0, Duration: 0 225 | | ERROR - Test spec@!opengl 1.1@windowoverlap: Fail: See "/tmp/2022-01-07-17-06-01/piglit/piglit.spec@!opengl 1.1@windowoverlap.log" 226 | | ERROR - Test spec@!opengl 1.1@windowoverlap: Fail: See "/tmp/2022-01-07-17-06-01/piglit/piglit.spec@!opengl 1.1@windowoverlap.log" 227 | | ERROR - Test spec@ext_texture_integer@fbo-integer: UnexpectedPass: See "/tmp/2022-01-07-17-06-01/piglit/piglit.spec@ext_texture_integer@fbo-integer.log" 228 | | ERROR - Test spec@ext_texture_integer@fbo-integer: UnexpectedPass: See "/tmp/2022-01-07-17-06-01/piglit/piglit.spec@ext_texture_integer@fbo-integer.log" 229 | | ERROR - Test spec@arb_direct_state_access@gettextureimage-formats: UnexpectedPass: See "/tmp/2022-01-07-17-06-01/piglit/piglit.spec@arb_direct_state_access@gettextureimage-formats.log" 230 | | ERROR - Test spec@arb_direct_state_access@gettextureimage-formats: UnexpectedPass: See "/tmp/2022-01-07-17-06-01/piglit/piglit.spec@arb_direct_state_access@gettextureimage-formats.log" 231 | | Pass: 1, Fail: 1, UnexpectedPass: 2, Duration: 0, Remaining: 0 232 | | 233 | | Slowest tests: 234 | | spec@arb_direct_state_access@gettextureimage-formats (0.29s) 235 | | spec@arb_direct_state_access@gettextureimage-formats init-by-rendering (0.26s) 236 | | spec@ext_texture_integer@fbo-integer (0.08s) 237 | | spec@!opengl 1.1@windowoverlap (0.00s) 238 | | 239 | | Some failures found: 240 | | spec@!opengl 1.1@windowoverlap,Fail 241 | | spec@arb_direct_state_access@gettextureimage-formats,UnexpectedPass 242 | | spec@ext_texture_integer@fbo-integer,UnexpectedPass 243 | | 244 | └ Completed in 0 seconds 245 | New errors. Check /tmp/2022-01-07-17-06-01/new_baseline/sienna_cichlid-piglit-quick-fail.csv 246 | Running GLCTS tests 247 | [baseline .../sienna_cichlid-glcts-fail.csv] 248 | | Running dEQP on 16 threads in 1-test groups 249 | | Pass: 0, Duration: 0 250 | | Pass: 0, Duration: 0 251 | | 252 | └ Completed in 0 seconds 253 | Running dEQP tests 254 | [baseline .../sienna_cichlid-deqp-fail.csv] 255 | | Running dEQP on 16 threads in 1-test groups 256 | | Running dEQP on 16 threads in 1-test groups 257 | | Running dEQP on 16 threads in 1-test groups 258 | | Running dEQP on 16 threads in 1-test groups 259 | | Pass: 0, Duration: 0 260 | | Pass: 0, Duration: 0 261 | | 262 | └ Completed in 0 seconds 263 | ``` 264 | 265 | As `radeonsi-run-tests.py` uses multiple processes / threads, the `-j` option can be used to control how many are spawned. 266 | Lastly, there are several `--no-xxx` option to disable running specific tests suites (eg: `--no-deqp-egl`). Use `-h` to see all options. 267 | 268 | 269 | What to do if piglit hangs the GPU 270 | ---------------------------------- 271 | 272 | When it hangs, run `ps aux|grep home` over ssh to get command lines of currently running tests. After reboot, you can run each line separately to find the hanging test. 273 | -------------------------------------------------------------------------------- /bin/f: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | grep -RIn --color=always "$@" * 3 | -------------------------------------------------------------------------------- /bin/glcts: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Check if the last parameter is -d, indicating that gdb should be used 4 | if test ${@: -1} == -d; then 5 | # Remove the last parameter 6 | # https://stackoverflow.com/questions/20398499/remove-last-argument-from-argument-list-of-shell-script-bash 7 | set -- "${@:1:$(($#-1))}" 8 | (cd $HOME/dev/glcts/build/external/openglcts/modules; gdb --args ./glcts $@) 9 | else 10 | (cd $HOME/dev/glcts/build/external/openglcts/modules; ./glcts $@) 11 | fi 12 | -------------------------------------------------------------------------------- /bin/ll: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | GBM_ALWAYS_SOFTWARE=1 \ 4 | LIBGL_ALWAYS_SOFTWARE=1 \ 5 | GALLIUM_DRIVER=llvmpipe \ 6 | $@ 7 | -------------------------------------------------------------------------------- /bin/ninja-stderr: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | 3 | import sys 4 | import subprocess 5 | 6 | # Run ninja, capture stdout in text mode (universal_newlines) 7 | ninja = subprocess.Popen(['ninja'] + sys.argv[1:], stdout=subprocess.PIPE, universal_newlines=True) 8 | 9 | for line in ninja.stdout: 10 | error = (line.find('error:') >= 0 or 11 | line.find('warning:') >= 0 or 12 | line.find('Error:') >= 0 or 13 | line.find('undefined reference') >= 0 or 14 | line.find('FAILED:') >= 0) 15 | file = sys.stderr if error else sys.stdout 16 | print(line.rstrip(), file=file) 17 | file.flush() 18 | 19 | # Return ninja's return code 20 | sys.exit(ninja.wait()) 21 | -------------------------------------------------------------------------------- /bin/sp: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | GBM_ALWAYS_SOFTWARE=1 \ 4 | LIBGL_ALWAYS_SOFTWARE=1 \ 5 | GALLIUM_DRIVER=softpipe \ 6 | $@ 7 | -------------------------------------------------------------------------------- /bin/sw: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | LIBGL_ALWAYS_SOFTWARE=1 \ 4 | $@ 5 | -------------------------------------------------------------------------------- /build_kernel.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | sudo echo && make -j`nproc` && sudo make modules_install && sudo make install 4 | -------------------------------------------------------------------------------- /conf_drm.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | prefix=${PREFIX:-/usr} 4 | 5 | if test x$1 = x32; then 6 | is64bit=disabled 7 | archdir=i386-linux-gnu 8 | export CC="gcc -m32" 9 | export PKG_CONFIG_PATH=/usr/lib/$archdir/pkgconfig 10 | else 11 | is64bit=enabled 12 | archdir=x86_64-linux-gnu 13 | fi 14 | 15 | rm -r build$1 16 | 17 | set -e 18 | 19 | cflags="-fno-omit-frame-pointer" 20 | 21 | meson build$1 --prefix $prefix --libdir $prefix/lib/$archdir --buildtype debugoptimized \ 22 | -Dc_args=$cflags -Dc_link_args=$cflags -Dpkg_config_path=$prefix/lib/$archdir/pkgconfig:/usr/lib/$archdir/pkgconfig \ 23 | -Detnaviv=enabled -Dexynos=enabled -Dfreedreno=enabled -Domap=enabled -Dtegra=enabled -Dvc4=enabled \ 24 | -Dcairo-tests=$is64bit 25 | -------------------------------------------------------------------------------- /conf_glcts.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | python3 external/fetch_sources.py 5 | 6 | rm -rf build 7 | mkdir build 8 | cmake -B build . -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DGLCTS_GTF_TARGET=gl -DDEQP_TARGET=x11_egl 9 | 10 | rm -rf build_es 11 | mkdir build_es 12 | cmake -B build_es . -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DGLCTS_GTF_TARGET=gles32 -DDEQP_TARGET=x11_egl 13 | 14 | echo 15 | echo !!! GLCTS is not supposed to be installed !!! 16 | echo Type: 17 | echo ' ninja -Cbuild && ninja -Cbuild_es' 18 | -------------------------------------------------------------------------------- /conf_llvm.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | prefix=${PREFIX:-/usr/local} 4 | 5 | if test x$1 = x32; then 6 | # 32-bit build 7 | rm -rf build32 8 | 9 | set -e 10 | 11 | mkdir build32 12 | cd build32 13 | cmake ../llvm -G Ninja \ 14 | -DCMAKE_INSTALL_PREFIX=$prefix/llvm-i386 -DLLVM_TARGETS_TO_BUILD="X86;AMDGPU" -DLLVM_ENABLE_ASSERTIONS=ON \ 15 | -DCMAKE_BUILD_TYPE=Release -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON -DLLVM_APPEND_VC_REV=OFF \ 16 | -DLLVM_BUILD_32_BITS=ON -DLLVM_ENABLE_RTTI=ON -DLLVM_CCACHE_BUILD=ON -DLLVM_ENABLE_LIBXML2=OFF \ 17 | -DCMAKE_C_FLAGS_RELEASE="-O2 -g1 -fno-omit-frame-pointer" \ 18 | -DCMAKE_CXX_FLAGS_RELEASE="-O2 -g1 -fno-omit-frame-pointer" \ 19 | -DTerminfo_LIBRARIES="/usr/lib/i386-linux-gnu/libtinfo.so" \ 20 | -DZLIB_LIBRARY_RELEASE="/usr/lib/i386-linux-gnu/libz.so" \ 21 | -Dzstd_LIBRARY="/usr/lib/i386-linux-gnu/libzstd.so" 22 | cd .. 23 | else 24 | # 64-bit build 25 | rm -rf build 26 | 27 | set -e 28 | 29 | mkdir build 30 | cd build 31 | 32 | cmake ../llvm -G Ninja \ 33 | -DCMAKE_INSTALL_PREFIX=$prefix/llvm -DLLVM_TARGETS_TO_BUILD="X86;AMDGPU" -DLLVM_ENABLE_ASSERTIONS=ON \ 34 | -DCMAKE_BUILD_TYPE=Release -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON -DLLVM_APPEND_VC_REV=OFF \ 35 | -DLLVM_CCACHE_BUILD=ON -DLLVM_ENABLE_RTTI=ON \ 36 | -DCMAKE_C_FLAGS_RELEASE="-O2 -g1 -fno-omit-frame-pointer" \ 37 | -DCMAKE_CXX_FLAGS_RELEASE="-O2 -g1 -fno-omit-frame-pointer" 38 | cd .. 39 | fi 40 | 41 | cd .. 42 | -------------------------------------------------------------------------------- /conf_mesa.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | prefix=${PREFIX:-/usr} 4 | # for general development (optimized with assertions) 5 | buildtype=${BUILD_TYPE:-debugoptimized} 6 | 7 | if test x$1 = x32; then 8 | export CC="gcc -m32" 9 | export CXX="g++ -m32" 10 | arch=i386-linux-gnu 11 | mm="-Dgallium-vdpau=disabled -Dgallium-va=disabled" 12 | 13 | buildtype=release 14 | profile="-g" 15 | 16 | gallium_drivers=radeonsi 17 | vulkandrv=amd 18 | else 19 | arch=x86_64-linux-gnu 20 | mm="-Dgallium-vdpau=enabled -Dgallium-va=enabled -Dvideo-codecs=av1dec,av1enc,vp9dec,vc1dec,h264dec,h264enc,h265dec,h265enc" 21 | 22 | # comment or uncomment the following settings 23 | 24 | # for benchmarking (fastest, optimized without assertions) 25 | #buildtype=release; profile="-g" 26 | 27 | # for profiling (second fastest) 28 | #buildtype=release; profile="-g -fno-omit-frame-pointer" 29 | 30 | # for best debugging (no optimizations) 31 | #buildtype=debug 32 | 33 | gallium_drivers=radeonsi,llvmpipe,softpipe #,r300,r600 #,zink,crocus,virgl,nouveau,d3d12,svga,etnaviv,freedreno,kmsro,lima,panfrost,tegra,v3d,vc4,i915 #,iris,asahi #needs libllvmspirv 34 | vulkandrv=amd #,swrast 35 | 36 | fi 37 | 38 | rm -r build$1 39 | 40 | set -e 41 | 42 | meson setup build$1 --prefix $prefix --libdir $prefix/lib/$arch --buildtype $buildtype -Dglvnd=enabled \ 43 | --native-file `dirname $0`/llvm_config_$arch.cfg -Dc_args="$profile" -Dcpp_args="$profile" \ 44 | -Dgallium-drivers=$gallium_drivers -Dvulkan-drivers=$vulkandrv $mm $others $repl 45 | -------------------------------------------------------------------------------- /conf_piglit.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | cmake . -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo \ 6 | -DPIGLIT_BUILD_DMA_BUF_TESTS=ON \ 7 | -DPIGLIT_BUILD_GLES1_TESTS=ON \ 8 | -DPIGLIT_BUILD_GLES2_TESTS=ON \ 9 | -DPIGLIT_BUILD_GLES3_TESTS=ON \ 10 | -DPIGLIT_BUILD_GLX_TESTS=ON \ 11 | -DPIGLIT_BUILD_GL_TESTS=ON \ 12 | -DPIGLIT_USE_WAFFLE=ON 13 | 14 | echo 15 | echo !!! Piglit is not supposed to be installed !!! 16 | -------------------------------------------------------------------------------- /conf_waffle.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | prefix=${PREFIX:-/usr} 6 | buildtype=${BUILD_TYPE:-debugoptimized} 7 | 8 | rm -r build 9 | mkdir build 10 | meson build --prefix $prefix --libdir $prefix/lib/$arch --datadir $prefix/share --buildtype $buildtype 11 | 12 | echo 13 | echo !!! Make sure this output contains: Supported platforms: ... gbm !!! 14 | -------------------------------------------------------------------------------- /etc/X11/xorg.conf.d/10-modesetting.conf: -------------------------------------------------------------------------------- 1 | Section "Device" 2 | Identifier "gpu" 3 | Driver "modesetting" 4 | EndSection 5 | -------------------------------------------------------------------------------- /etc/ld.so.conf.d/marek_llvm.conf: -------------------------------------------------------------------------------- 1 | /usr/local/llvm/lib 2 | /usr/local/llvm-i386/lib 3 | -------------------------------------------------------------------------------- /home/.colordiffrc: -------------------------------------------------------------------------------- 1 | plain=off 2 | newtext=darkgreen 3 | oldtext=darkred 4 | diffstuff=darkcyan 5 | -------------------------------------------------------------------------------- /home/.git-prompt.sh: -------------------------------------------------------------------------------- 1 | # bash/zsh git prompt support 2 | # 3 | # Copyright (C) 2006,2007 Shawn O. Pearce 4 | # Distributed under the GNU General Public License, version 2.0. 5 | # 6 | # This script allows you to see repository status in your prompt. 7 | # 8 | # To enable: 9 | # 10 | # 1) Copy this file to somewhere (e.g. ~/.git-prompt.sh). 11 | # 2) Add the following line to your .bashrc/.zshrc: 12 | # source ~/.git-prompt.sh 13 | # 3a) Change your PS1 to call __git_ps1 as 14 | # command-substitution: 15 | # Bash: PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ ' 16 | # ZSH: setopt PROMPT_SUBST ; PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ ' 17 | # the optional argument will be used as format string. 18 | # 3b) Alternatively, for a slightly faster prompt, __git_ps1 can 19 | # be used for PROMPT_COMMAND in Bash or for precmd() in Zsh 20 | # with two parameters,
 and , which are strings
 21 | #        you would put in $PS1 before and after the status string
 22 | #        generated by the git-prompt machinery.  e.g.
 23 | #        Bash: PROMPT_COMMAND='__git_ps1 "\u@\h:\w" "\\\$ "'
 24 | #          will show username, at-sign, host, colon, cwd, then
 25 | #          various status string, followed by dollar and SP, as
 26 | #          your prompt.
 27 | #        ZSH:  precmd () { __git_ps1 "%n" ":%~$ " "|%s" }
 28 | #          will show username, pipe, then various status string,
 29 | #          followed by colon, cwd, dollar and SP, as your prompt.
 30 | #        Optionally, you can supply a third argument with a printf
 31 | #        format string to finetune the output of the branch status
 32 | #
 33 | # The repository status will be displayed only if you are currently in a
 34 | # git repository. The %s token is the placeholder for the shown status.
 35 | #
 36 | # The prompt status always includes the current branch name.
 37 | #
 38 | # In addition, if you set GIT_PS1_SHOWDIRTYSTATE to a nonempty value,
 39 | # unstaged (*) and staged (+) changes will be shown next to the branch
 40 | # name.  You can configure this per-repository with the
 41 | # bash.showDirtyState variable, which defaults to true once
 42 | # GIT_PS1_SHOWDIRTYSTATE is enabled.
 43 | #
 44 | # You can also see if currently something is stashed, by setting
 45 | # GIT_PS1_SHOWSTASHSTATE to a nonempty value. If something is stashed,
 46 | # then a '$' will be shown next to the branch name.
 47 | #
 48 | # If you would like to see if there're untracked files, then you can set
 49 | # GIT_PS1_SHOWUNTRACKEDFILES to a nonempty value. If there're untracked
 50 | # files, then a '%' will be shown next to the branch name.  You can
 51 | # configure this per-repository with the bash.showUntrackedFiles
 52 | # variable, which defaults to true once GIT_PS1_SHOWUNTRACKEDFILES is
 53 | # enabled.
 54 | #
 55 | # If you would like to see the difference between HEAD and its upstream,
 56 | # set GIT_PS1_SHOWUPSTREAM="auto".  A "<" indicates you are behind, ">"
 57 | # indicates you are ahead, "<>" indicates you have diverged and "="
 58 | # indicates that there is no difference. You can further control
 59 | # behaviour by setting GIT_PS1_SHOWUPSTREAM to a space-separated list
 60 | # of values:
 61 | #
 62 | #     verbose       show number of commits ahead/behind (+/-) upstream
 63 | #     name          if verbose, then also show the upstream abbrev name
 64 | #     legacy        don't use the '--count' option available in recent
 65 | #                   versions of git-rev-list
 66 | #     git           always compare HEAD to @{upstream}
 67 | #     svn           always compare HEAD to your SVN upstream
 68 | #
 69 | # By default, __git_ps1 will compare HEAD to your SVN upstream if it can
 70 | # find one, or @{upstream} otherwise.  Once you have set
 71 | # GIT_PS1_SHOWUPSTREAM, you can override it on a per-repository basis by
 72 | # setting the bash.showUpstream config variable.
 73 | #
 74 | # If you would like to see more information about the identity of
 75 | # commits checked out as a detached HEAD, set GIT_PS1_DESCRIBE_STYLE
 76 | # to one of these values:
 77 | #
 78 | #     contains      relative to newer annotated tag (v1.6.3.2~35)
 79 | #     branch        relative to newer tag or branch (master~4)
 80 | #     describe      relative to older annotated tag (v1.6.3.1-13-gdd42c2f)
 81 | #     default       exactly matching tag
 82 | #
 83 | # If you would like a colored hint about the current dirty state, set
 84 | # GIT_PS1_SHOWCOLORHINTS to a nonempty value. The colors are based on
 85 | # the colored output of "git status -sb" and are available only when
 86 | # using __git_ps1 for PROMPT_COMMAND or precmd.
 87 | #
 88 | # If you would like __git_ps1 to do nothing in the case when the current
 89 | # directory is set up to be ignored by git, then set
 90 | # GIT_PS1_HIDE_IF_PWD_IGNORED to a nonempty value. Override this on the
 91 | # repository level by setting bash.hideIfPwdIgnored to "false".
 92 | 
 93 | # check whether printf supports -v
 94 | __git_printf_supports_v=
 95 | printf -v __git_printf_supports_v -- '%s' yes >/dev/null 2>&1
 96 | 
 97 | # stores the divergence from upstream in $p
 98 | # used by GIT_PS1_SHOWUPSTREAM
 99 | __git_ps1_show_upstream ()
100 | {
101 | 	local key value
102 | 	local svn_remote svn_url_pattern count n
103 | 	local upstream=git legacy="" verbose="" name=""
104 | 
105 | 	svn_remote=()
106 | 	# get some config options from git-config
107 | 	local output="$(git config -z --get-regexp '^(svn-remote\..*\.url|bash\.showupstream)$' 2>/dev/null | tr '\0\n' '\n ')"
108 | 	while read -r key value; do
109 | 		case "$key" in
110 | 		bash.showupstream)
111 | 			GIT_PS1_SHOWUPSTREAM="$value"
112 | 			if [[ -z "${GIT_PS1_SHOWUPSTREAM}" ]]; then
113 | 				p=""
114 | 				return
115 | 			fi
116 | 			;;
117 | 		svn-remote.*.url)
118 | 			svn_remote[$((${#svn_remote[@]} + 1))]="$value"
119 | 			svn_url_pattern="$svn_url_pattern\\|$value"
120 | 			upstream=svn+git # default upstream is SVN if available, else git
121 | 			;;
122 | 		esac
123 | 	done <<< "$output"
124 | 
125 | 	# parse configuration values
126 | 	for option in ${GIT_PS1_SHOWUPSTREAM}; do
127 | 		case "$option" in
128 | 		git|svn) upstream="$option" ;;
129 | 		verbose) verbose=1 ;;
130 | 		legacy)  legacy=1  ;;
131 | 		name)    name=1 ;;
132 | 		esac
133 | 	done
134 | 
135 | 	# Find our upstream
136 | 	case "$upstream" in
137 | 	git)    upstream="@{upstream}" ;;
138 | 	svn*)
139 | 		# get the upstream from the "git-svn-id: ..." in a commit message
140 | 		# (git-svn uses essentially the same procedure internally)
141 | 		local -a svn_upstream
142 | 		svn_upstream=($(git log --first-parent -1 \
143 | 					--grep="^git-svn-id: \(${svn_url_pattern#??}\)" 2>/dev/null))
144 | 		if [[ 0 -ne ${#svn_upstream[@]} ]]; then
145 | 			svn_upstream=${svn_upstream[${#svn_upstream[@]} - 2]}
146 | 			svn_upstream=${svn_upstream%@*}
147 | 			local n_stop="${#svn_remote[@]}"
148 | 			for ((n=1; n <= n_stop; n++)); do
149 | 				svn_upstream=${svn_upstream#${svn_remote[$n]}}
150 | 			done
151 | 
152 | 			if [[ -z "$svn_upstream" ]]; then
153 | 				# default branch name for checkouts with no layout:
154 | 				upstream=${GIT_SVN_ID:-git-svn}
155 | 			else
156 | 				upstream=${svn_upstream#/}
157 | 			fi
158 | 		elif [[ "svn+git" = "$upstream" ]]; then
159 | 			upstream="@{upstream}"
160 | 		fi
161 | 		;;
162 | 	esac
163 | 
164 | 	# Find how many commits we are ahead/behind our upstream
165 | 	if [[ -z "$legacy" ]]; then
166 | 		count="$(git rev-list --count --left-right \
167 | 				"$upstream"...HEAD 2>/dev/null)"
168 | 	else
169 | 		# produce equivalent output to --count for older versions of git
170 | 		local commits
171 | 		if commits="$(git rev-list --left-right "$upstream"...HEAD 2>/dev/null)"
172 | 		then
173 | 			local commit behind=0 ahead=0
174 | 			for commit in $commits
175 | 			do
176 | 				case "$commit" in
177 | 				"<"*) ((behind++)) ;;
178 | 				*)    ((ahead++))  ;;
179 | 				esac
180 | 			done
181 | 			count="$behind	$ahead"
182 | 		else
183 | 			count=""
184 | 		fi
185 | 	fi
186 | 
187 | 	# calculate the result
188 | 	if [[ -z "$verbose" ]]; then
189 | 		case "$count" in
190 | 		"") # no upstream
191 | 			p="" ;;
192 | 		"0	0") # equal to upstream
193 | 			p="=" ;;
194 | 		"0	"*) # ahead of upstream
195 | 			p=">" ;;
196 | 		*"	0") # behind upstream
197 | 			p="<" ;;
198 | 		*)	    # diverged from upstream
199 | 			p="<>" ;;
200 | 		esac
201 | 	else
202 | 		case "$count" in
203 | 		"") # no upstream
204 | 			p="" ;;
205 | 		"0	0") # equal to upstream
206 | 			p=" u=" ;;
207 | 		"0	"*) # ahead of upstream
208 | 			p=" u+${count#0	}" ;;
209 | 		*"	0") # behind upstream
210 | 			p=" u-${count%	0}" ;;
211 | 		*)	    # diverged from upstream
212 | 			p=" u+${count#*	}-${count%	*}" ;;
213 | 		esac
214 | 		if [[ -n "$count" && -n "$name" ]]; then
215 | 			__git_ps1_upstream_name=$(git rev-parse \
216 | 				--abbrev-ref "$upstream" 2>/dev/null)
217 | 			if [ $pcmode = yes ] && [ $ps1_expanded = yes ]; then
218 | 				p="$p \${__git_ps1_upstream_name}"
219 | 			else
220 | 				p="$p ${__git_ps1_upstream_name}"
221 | 				# not needed anymore; keep user's
222 | 				# environment clean
223 | 				unset __git_ps1_upstream_name
224 | 			fi
225 | 		fi
226 | 	fi
227 | 
228 | }
229 | 
230 | # Helper function that is meant to be called from __git_ps1.  It
231 | # injects color codes into the appropriate gitstring variables used
232 | # to build a gitstring.
233 | __git_ps1_colorize_gitstring ()
234 | {
235 | 	if [[ -n ${ZSH_VERSION-} ]]; then
236 | 		local c_red='%F{red}'
237 | 		local c_green='%F{green}'
238 | 		local c_lblue='%F{blue}'
239 | 		local c_clear='%f'
240 | 	else
241 | 		# Using \[ and \] around colors is necessary to prevent
242 | 		# issues with command line editing/browsing/completion!
243 | 		local c_red='\[\e[31m\]'
244 | 		local c_green='\[\e[32m\]'
245 | 		local c_lblue='\[\e[1;34m\]'
246 | 		local c_clear='\[\e[0m\]'
247 | 	fi
248 | 	local bad_color=$c_red
249 | 	local ok_color=$c_green
250 | 	local flags_color="$c_lblue"
251 | 
252 | 	local branch_color=""
253 | 	if [ $detached = no ]; then
254 | 		branch_color="$ok_color"
255 | 	else
256 | 		branch_color="$bad_color"
257 | 	fi
258 | 	c="$branch_color$c"
259 | 
260 | 	z="$c_clear$z"
261 | 	if [ "$w" = "*" ]; then
262 | 		w="$bad_color$w"
263 | 	fi
264 | 	if [ -n "$i" ]; then
265 | 		i="$ok_color$i"
266 | 	fi
267 | 	if [ -n "$s" ]; then
268 | 		s="$flags_color$s"
269 | 	fi
270 | 	if [ -n "$u" ]; then
271 | 		u="$bad_color$u"
272 | 	fi
273 | 	r="$c_clear$r"
274 | }
275 | 
276 | __git_eread ()
277 | {
278 | 	local f="$1"
279 | 	shift
280 | 	test -r "$f" && read "$@" <"$f"
281 | }
282 | 
283 | # __git_ps1 accepts 0 or 1 arguments (i.e., format string)
284 | # when called from PS1 using command substitution
285 | # in this mode it prints text to add to bash PS1 prompt (includes branch name)
286 | #
287 | # __git_ps1 requires 2 or 3 arguments when called from PROMPT_COMMAND (pc)
288 | # in that case it _sets_ PS1. The arguments are parts of a PS1 string.
289 | # when two arguments are given, the first is prepended and the second appended
290 | # to the state string when assigned to PS1.
291 | # The optional third parameter will be used as printf format string to further
292 | # customize the output of the git-status string.
293 | # In this mode you can request colored hints using GIT_PS1_SHOWCOLORHINTS=true
294 | __git_ps1x ()
295 | {
296 | 	# preserve exit status
297 | 	local exit=$?
298 | 	local pcmode=no
299 | 	local detached=no
300 | 	local ps1pc_start='\u@\h:\w '
301 | 	local ps1pc_end='\$ '
302 | 	local printf_format='|%s'
303 | 
304 | 	case "$#" in
305 | 		2|3)	pcmode=yes
306 | 			ps1pc_start="$1"
307 | 			ps1pc_end="$2"
308 | 			printf_format="${3:-$printf_format}"
309 | 			# set PS1 to a plain prompt so that we can
310 | 			# simply return early if the prompt should not
311 | 			# be decorated
312 | 			PS1="$ps1pc_start$ps1pc_end"
313 | 		;;
314 | 		0|1)	printf_format="${1:-$printf_format}"
315 | 		;;
316 | 		*)	return $exit
317 | 		;;
318 | 	esac
319 | 
320 | 	# ps1_expanded:  This variable is set to 'yes' if the shell
321 | 	# subjects the value of PS1 to parameter expansion:
322 | 	#
323 | 	#   * bash does unless the promptvars option is disabled
324 | 	#   * zsh does not unless the PROMPT_SUBST option is set
325 | 	#   * POSIX shells always do
326 | 	#
327 | 	# If the shell would expand the contents of PS1 when drawing
328 | 	# the prompt, a raw ref name must not be included in PS1.
329 | 	# This protects the user from arbitrary code execution via
330 | 	# specially crafted ref names.  For example, a ref named
331 | 	# 'refs/heads/$(IFS=_;cmd=sudo_rm_-rf_/;$cmd)' might cause the
332 | 	# shell to execute 'sudo rm -rf /' when the prompt is drawn.
333 | 	#
334 | 	# Instead, the ref name should be placed in a separate global
335 | 	# variable (in the __git_ps1_* namespace to avoid colliding
336 | 	# with the user's environment) and that variable should be
337 | 	# referenced from PS1.  For example:
338 | 	#
339 | 	#     __git_ps1_foo=$(do_something_to_get_ref_name)
340 | 	#     PS1="...stuff...\${__git_ps1_foo}...stuff..."
341 | 	#
342 | 	# If the shell does not expand the contents of PS1, the raw
343 | 	# ref name must be included in PS1.
344 | 	#
345 | 	# The value of this variable is only relevant when in pcmode.
346 | 	#
347 | 	# Assume that the shell follows the POSIX specification and
348 | 	# expands PS1 unless determined otherwise.  (This is more
349 | 	# likely to be correct if the user has a non-bash, non-zsh
350 | 	# shell and safer than the alternative if the assumption is
351 | 	# incorrect.)
352 | 	#
353 | 	local ps1_expanded=yes
354 | 	[ -z "$ZSH_VERSION" ] || [[ -o PROMPT_SUBST ]] || ps1_expanded=no
355 | 	[ -z "$BASH_VERSION" ] || shopt -q promptvars || ps1_expanded=no
356 | 
357 | 	local repo_info rev_parse_exit_code
358 | 	repo_info="$(git rev-parse --git-dir --is-inside-git-dir \
359 | 		--is-bare-repository --is-inside-work-tree \
360 | 		--short HEAD 2>/dev/null)"
361 | 	rev_parse_exit_code="$?"
362 | 
363 | 	if [ -z "$repo_info" ]; then
364 | 		return $exit
365 | 	fi
366 | 
367 | 	local short_sha
368 | 	if [ "$rev_parse_exit_code" = "0" ]; then
369 | 		short_sha="${repo_info##*$'\n'}"
370 | 		repo_info="${repo_info%$'\n'*}"
371 | 	fi
372 | 	local inside_worktree="${repo_info##*$'\n'}"
373 | 	repo_info="${repo_info%$'\n'*}"
374 | 	local bare_repo="${repo_info##*$'\n'}"
375 | 	repo_info="${repo_info%$'\n'*}"
376 | 	local inside_gitdir="${repo_info##*$'\n'}"
377 | 	local g="${repo_info%$'\n'*}"
378 | 
379 | 	if [ "true" = "$inside_worktree" ] &&
380 | 	   [ -n "${GIT_PS1_HIDE_IF_PWD_IGNORED-}" ] &&
381 | 	   [ "$(git config --bool bash.hideIfPwdIgnored)" != "false" ] &&
382 | 	   git check-ignore -q .
383 | 	then
384 | 		return $exit
385 | 	fi
386 | 
387 | 	local r=""
388 | 	local b=""
389 | 	local step=""
390 | 	local total=""
391 | 	if [ -d "$g/rebase-merge" ]; then
392 | 		__git_eread "$g/rebase-merge/head-name" b
393 | 		__git_eread "$g/rebase-merge/msgnum" step
394 | 		__git_eread "$g/rebase-merge/end" total
395 | 		if [ -f "$g/rebase-merge/interactive" ]; then
396 | 			r=" (REBASE-i)"
397 | 		else
398 | 			r=" (REBASE-m)"
399 | 		fi
400 | 	else
401 | 		if [ -d "$g/rebase-apply" ]; then
402 | 			__git_eread "$g/rebase-apply/next" step
403 | 			__git_eread "$g/rebase-apply/last" total
404 | 			if [ -f "$g/rebase-apply/rebasing" ]; then
405 | 				__git_eread "$g/rebase-apply/head-name" b
406 | 				r=" (REBASE)"
407 | 			elif [ -f "$g/rebase-apply/applying" ]; then
408 | 				r=" (AM)"
409 | 			else
410 | 				r=" (AM/REBASE)"
411 | 			fi
412 | 		elif [ -f "$g/MERGE_HEAD" ]; then
413 | 			r=" (MERGING)"
414 | 		elif [ -f "$g/CHERRY_PICK_HEAD" ]; then
415 | 			r=" (CHERRY-PICKING)"
416 | 		elif [ -f "$g/REVERT_HEAD" ]; then
417 | 			r=" (REVERTING)"
418 | 		elif [ -f "$g/BISECT_LOG" ]; then
419 | 			r=" (BISECTING)"
420 | 		fi
421 | 
422 | 		if [ -n "$b" ]; then
423 | 			:
424 | 		elif [ -h "$g/HEAD" ]; then
425 | 			# symlink symbolic ref
426 | 			b="$(git symbolic-ref HEAD 2>/dev/null)"
427 | 		else
428 | 			local head=""
429 | 			if ! __git_eread "$g/HEAD" head; then
430 | 				return $exit
431 | 			fi
432 | 			# is it a symbolic ref?
433 | 			b="${head#ref: }"
434 | 			if [ "$head" = "$b" ]; then
435 | 				detached=yes
436 | 				b="$(
437 | 				case "${GIT_PS1_DESCRIBE_STYLE-}" in
438 | 				(contains)
439 | 					git describe --contains HEAD ;;
440 | 				(branch)
441 | 					git describe --contains --all HEAD ;;
442 | 				(describe)
443 | 					git describe HEAD ;;
444 | 				(* | default)
445 | 					git describe --tags --exact-match HEAD ;;
446 | 				esac 2>/dev/null)" ||
447 | 
448 | 				b="$short_sha..."
449 | 				b="($b)"
450 | 			fi
451 | 		fi
452 | 	fi
453 | 
454 | 	if [ -n "$step" ] && [ -n "$total" ]; then
455 | 		r="$r $step/$total"
456 | 	fi
457 | 
458 | 	local w=""
459 | 	local i=""
460 | 	local s=""
461 | 	local u=""
462 | 	local c=""
463 | 	local p=""
464 | 
465 | 	if [ "true" = "$inside_gitdir" ]; then
466 | 		if [ "true" = "$bare_repo" ]; then
467 | 			c="BARE:"
468 | 		else
469 | 			b="GIT_DIR!"
470 | 		fi
471 | 	elif [ "true" = "$inside_worktree" ]; then
472 | 		if [ -n "${GIT_PS1_SHOWDIRTYSTATE-}" ] &&
473 | 		   [ "$(git config --bool bash.showDirtyState)" != "false" ]
474 | 		then
475 | 			git diff --no-ext-diff --quiet --exit-code || w="*"
476 | 			if [ -n "$short_sha" ]; then
477 | 				git diff-index --cached --quiet HEAD -- || i="+"
478 | 			else
479 | 				i="#"
480 | 			fi
481 | 		fi
482 | 		if [ -n "${GIT_PS1_SHOWSTASHSTATE-}" ] &&
483 | 		   git rev-parse --verify --quiet refs/stash >/dev/null
484 | 		then
485 | 			s="$"
486 | 		fi
487 | 
488 | 		if [ -n "${GIT_PS1_SHOWUNTRACKEDFILES-}" ] &&
489 | 		   [ "$(git config --bool bash.showUntrackedFiles)" != "false" ] &&
490 | 		   git ls-files --others --exclude-standard --error-unmatch -- '*' >/dev/null 2>/dev/null
491 | 		then
492 | 			u="%${ZSH_VERSION+%}"
493 | 		fi
494 | 
495 | 		if [ -n "${GIT_PS1_SHOWUPSTREAM-}" ]; then
496 | 			__git_ps1_show_upstream
497 | 		fi
498 | 	fi
499 | 
500 | 	local z="${GIT_PS1_STATESEPARATOR-" "}"
501 | 
502 | 	# NO color option unless in PROMPT_COMMAND mode
503 | 	if [ $pcmode = yes ] && [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then
504 | 		__git_ps1_colorize_gitstring
505 | 	fi
506 | 
507 | 	b=${b##refs/heads/}
508 | 	if [ $pcmode = yes ] && [ $ps1_expanded = yes ]; then
509 | 		__git_ps1_branch_name=$b
510 | 		b="\${__git_ps1_branch_name}"
511 | 	fi
512 | 
513 | 	local f="$w$i$s$u"
514 | 	local gitstring="$c$b${f:+$z$f}$r$p"
515 | 
516 | 	if [ $pcmode = yes ]; then
517 | 		if [ "${__git_printf_supports_v-}" != yes ]; then
518 | 			gitstring=$(printf -- "$printf_format" "$gitstring")
519 | 		else
520 | 			printf -v gitstring -- "$printf_format" "$gitstring"
521 | 		fi
522 | 		PS1="$ps1pc_start$gitstring$ps1pc_end"
523 | 	else
524 | 		printf -- "$printf_format" "$gitstring"
525 | 	fi
526 | 
527 | 	return $exit
528 | }
529 | 
530 | PS1="${debian_chroot:+($debian_chroot)}\[\e[1;36m\]\u@\h\[\e[0m\]:\[\e[1;36m\]\w\[\e[0;32m\]\$(__git_ps1x)\[\e[0m\]\$ "
531 | 


--------------------------------------------------------------------------------
/home/.gitconfig:
--------------------------------------------------------------------------------
 1 | [alias]
 2 | 	l = log --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold cyan)<%an>%Creset'
 3 | 	co = checkout
 4 | 	cp = cherry-pick
 5 | 	r = rebase
 6 | 	ro = rebase origin
 7 | 	ri = rebase -i
 8 | 	rio = rebase -i origin
 9 | 	rc = rebase --continue
10 |         ra = rebase --abort
11 | 	b = branch
12 |         bs = bisect start HEAD origin
13 |         brun = bisect run sh -c
14 |         br = bisect reset
15 | 	bg = bisect good
16 | 	bb = bisect bad
17 | 	a = commit --amend -v
18 | 	aa = commit --amend -a -v
19 |         au = add -u
20 | 	d = diff
21 | 	dc = diff --cached
22 | 	s = show
23 | 	st = status
24 | [push]
25 | 	default = simple
26 | [rebase]
27 | 	stat = true
28 | [branch]
29 | 	autosetuprebase = always
30 | [diff]
31 | 	renames = true
32 |         renameLimit = 5000
33 | 


--------------------------------------------------------------------------------
/llvm_config_i386-linux-gnu.cfg:
--------------------------------------------------------------------------------
1 | [binaries]
2 | llvm-config = '/usr/local/llvm-i386/bin/llvm-config'
3 | pkg-config = 'i686-linux-gnu-pkg-config'
4 | 


--------------------------------------------------------------------------------
/llvm_config_x86_64-linux-gnu.cfg:
--------------------------------------------------------------------------------
1 | [binaries]
2 | llvm-config = '/usr/local/llvm/bin/llvm-config'
3 | 
4 | 


--------------------------------------------------------------------------------
/make-install_glx-utils-32.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | 
3 | gcc -O2      -g -fno-omit-frame-pointer demos/src/xdemos/glxinfo.c demos/src/util/glinfo_common.c demos/src/glad/src/gl.c -Idemos/src/glad/include -Idemos/src/util -o /usr/bin/glxinfo   -lX11 -lGL -lm && echo "glxinfo installed."
4 | gcc -O2 -m32 -g -fno-omit-frame-pointer demos/src/xdemos/glxinfo.c demos/src/util/glinfo_common.c demos/src/glad/src/gl.c -Idemos/src/glad/include -Idemos/src/util -o /usr/bin/glxinfo32 -lX11 -lGL -lm && echo "glxinfo32 installed."
5 | gcc -O2      -g -fno-omit-frame-pointer demos/src/xdemos/glxgears.c -o /usr/bin/glxgears   -lX11 -lGL -lm && echo "glxgears installed."
6 | gcc -O2 -m32 -g -fno-omit-frame-pointer demos/src/xdemos/glxgears.c -o /usr/bin/glxgears32 -lX11 -lGL -lm && echo "glxgears32 installed."
7 | 


--------------------------------------------------------------------------------
/make-mesa-symlinks.sh:
--------------------------------------------------------------------------------
 1 | #!/bin/bash
 2 | 
 3 | if test x$1 = x; then
 4 |     dir=mesa
 5 | else
 6 |     dir=$1
 7 | fi
 8 | 
 9 | 
10 | create_links()
11 | {
12 |     mesalibs=$1
13 |     libdir=$2
14 | 
15 |     if test ! -f $mesalibs/src/glx/libGLX_mesa.so; then
16 |         echo $mesalibs/src/glx/libGLX_mesa.so: not found
17 |         exit 1
18 |     fi
19 | 
20 |     cd $mesalibs/src/gallium/targets/dri
21 |     libgallium_so=`echo libgallium-*.so`
22 |     cd - >/dev/null
23 | 
24 |     if test ! -f "$mesalibs/src/gallium/targets/dri/$libgallium_so"; then
25 |         echo Expected $mesalibs/src/gallium/targets/libgallium-*.so. Found: "$libgallium_so" '(or the file is missing)'
26 |         exit 1
27 |     fi
28 | 
29 |     mkdir -p $libdir/gbm
30 | 
31 |     ln -sf $mesalibs/src/egl/libEGL_mesa.so             $libdir/libEGL_mesa.so.0.0.0
32 |     ln -sf $mesalibs/src/glx/libGLX_mesa.so             $libdir/libGLX_mesa.so.0.0.0
33 |     ln -sf $mesalibs/src/gbm/libgbm.so                  $libdir/libgbm.so.1.0.0
34 |     ln -sf $mesalibs/src/gbm/backends/dri/dri_gbm.so    $libdir/gbm/dri_gbm.so
35 |     ln -sf $mesalibs/src/mapi/shared-glapi/libglapi.so  $libdir/libglapi.so.0.0.0
36 | 
37 |     ln -sf $mesalibs/src/gallium/targets/dri/$libgallium_so     $libdir/$libgallium_so
38 | 
39 |     ln -sf $mesalibs/src/gallium/targets/dril/libdril_dri.so    $libdir/dri/libdril_dri.so
40 |     ln -sf $mesalibs/src/gallium/targets/dril/libdril_dri.so    $libdir/dri/radeonsi_dri.so
41 |     ln -sf $mesalibs/src/gallium/targets/dril/libdril_dri.so    $libdir/dri/swrast_dri.so
42 |     ln -sf $mesalibs/src/gallium/targets/dril/libdril_dri.so    $libdir/dri/zink_dri.so
43 | 
44 |     ln -sf $mesalibs/src/amd/vulkan/libvulkan_radeon.so $libdir/libvulkan_radeon.so
45 | 
46 |     if $3; then
47 |         drv_video_so=$mesalibs/src/gallium/targets/dri/$libgallium_so
48 |         ln -sf $drv_video_so $libdir/dri/radeonsi_drv_video.so
49 | 
50 |         mkdir -p $libdir/vdpau
51 |         ln -sf $drv_video_so $libdir/vdpau/libvdpau_radeonsi.so.1.0.0
52 | 
53 |         ln -sf $mesalibs/src/gallium/targets/lavapipe/libvulkan_lvp.so $libdir/libvulkan_lvp.so
54 |     fi
55 | }
56 | 
57 | prefix=`pwd`
58 | prefix=`realpath $prefix`
59 | 
60 | create_links $prefix/${dir}/build   /usr/lib/x86_64-linux-gnu true
61 | create_links $prefix/${dir}/build32 /usr/lib/i386-linux-gnu false
62 | 
63 | ln -sf $prefix/${dir}/src/util/00-mesa-defaults.conf /usr/share/drirc.d/00-mesa-defaults.conf
64 | 
65 | ldconfig
66 | 


--------------------------------------------------------------------------------