]> git.xonotic.org Git - xonotic/xonotic.git/blob - misc/tools/the-big-benchmark/the-big-benchmark.sh
don't use playermodel LOD in the big benchmark to not invalidate previous results
[xonotic/xonotic.git] / misc / tools / the-big-benchmark / the-big-benchmark.sh
1 #!/bin/sh
2
3 set -e
4
5 if [ -d "${0%/*}" ]; then
6         cd "${0%/*}"
7 fi
8 cd ../../..
9
10 echo "The Big Benchmark"
11 echo " ================="
12 echo
13 if [ -f ./all ]; then
14         echo "WARNING: running this script will destroy ANY local changes you"
15         echo "might have on the repository that haven't been pushed or stored"
16         echo "in a local branch yet."
17         echo
18         if [ x"$1" != x"--yes" ]; then
19                 echo "Are you absolutely sure you want to run this?"
20                 echo
21                 while :; do
22                         echo -n "y/n: "
23                         read -r yesno
24                         case "$yesno" in
25                                 y)
26                                         break
27                                         ;;
28                                 n)
29                                         echo "Aborted."
30                                         exit 1
31                                         ;;
32                         esac
33                 done
34         fi
35 fi
36
37 if [ -f ./all ]; then
38         ./all clean -fU -m -r
39         ./all compile -r
40         export USE_GDB=no
41         set -- ./all run "$@"
42 elif [ -z "$*" ]; then
43         case "`uname`" in
44                 Darwin)
45                         set -- ./Xonotic.app/Contents/MacOS/xonotic-osx-sdl
46                         ;;
47                 Linux)
48                         set -- ./xonotic-linux-sdl.sh
49                         ;;
50                 *)
51                         echo "OS not detected. Usage:"
52                         echo "  $0 how-to-run-xonotic"
53                         echo "On Windows when using a release build or an autobuild,"
54                         echo "use the-big-benchmark.bat instead!"
55                         exit 1
56                         ;;
57         esac
58 fi
59 rm -f data/the-big-benchmark.log
60 rm -f data/benchmark.log
61 rm -f data/engine.log
62 p="+r_texture_dds_load 1 +cl_playerdetailreduction 0 +developer 1 -nohome -benchmarkruns 4 -benchmarkruns_skipfirst -benchmark demos/the-big-keybench.dem"
63 for e in omg low med normal high ultra ultimate; do
64         rm -f data/benchmark.log
65         echo + "$@" +exec effects-$e.cfg $p > data/engine.log
66         "$@" +exec effects-$e.cfg $p >>data/engine.log 2>&1 || true
67         if grep '\]quit' data/engine.log >/dev/null; then
68                 break
69         fi
70         cat data/engine.log >> data/the-big-benchmark.log
71         cat data/benchmark.log >> data/the-big-benchmark.log
72 done
73 if [ -f ./all ]; then
74         ./all clean -r
75 fi
76
77 rm -f data/benchmark.log
78 rm -f data/engine.log
79 if ! [ -f data/the-big-benchmark.log ]; then
80         echo
81         echo "The benchmark has been aborted. No log file has been written."
82         exit
83 fi
84
85 echo
86 echo "Please provide the the following info to the Xonotic developers:"
87 echo " - CPU speed"
88 echo " - memory size"
89 echo " - graphics card (which vendor, which model)"
90 echo " - operating system (including whether it is 32bit or 64bit)"
91 echo " - graphics driver version"
92 echo " - the file the-big-benchmark.log in the data directory"
93 echo
94 echo "Thank you"