]> git.xonotic.org Git - xonotic/xonotic.git/blob - misc/tools/the-big-benchmark/the-big-benchmark.sh
119ad21b3c03bf64ebbf70f027b7d6cb4e223895
[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
64 for e in omg low med normal high ultra ultimate; do
65         echo "Benchmarking on $e"
66         rm -f data/benchmark.log
67         echo + "$@" +exec effects-$e.cfg $p > data/engine.log
68         "$@" +exec effects-$e.cfg $p >>data/engine.log 2>&1 || true
69         grep "^MED: " data/engine.log # print results to the terminal
70         if grep '\]quit' data/engine.log >/dev/null; then
71                 break
72         fi
73         cat data/engine.log >> data/the-big-benchmark.log
74         cat data/benchmark.log >> data/the-big-benchmark.log
75         if [ x"$e" = x"med" ]; then
76                 if grep 'checking for OpenGL 2\.0 core features\.\.\.  not detected' data/engine.log; then
77                         echo "OpenGL 2.0 or later required for Normal quality and higher, exiting."
78                         break
79                 fi
80         fi
81         if [ x"$e" = x"high" ]; then
82                 if grep 'vid_soft 1' data/engine.log; then
83                         echo "Software rendering does not support Ultra and Ultimate quality settings, exiting."
84                         break
85                 fi
86         fi
87 done
88
89 if [ -f ./all ]; then
90         ./all clean -r
91 fi
92
93 rm -f data/benchmark.log
94 rm -f data/engine.log
95 if ! [ -f data/the-big-benchmark.log ]; then
96         echo
97         echo "The benchmark has been aborted. No log file has been written."
98         exit
99 fi
100
101 echo
102 echo "Please provide the the following info to the Xonotic developers:"
103 echo " - CPU speed"
104 echo " - memory size"
105 echo " - graphics card (which vendor, which model)"
106 echo " - operating system (including whether it is 32bit or 64bit)"
107 echo " - graphics driver version"
108 echo " - the file the-big-benchmark.log in the data directory"
109 echo
110 echo "Thank you"