OSDN Git Service

fix decompression
[android-x86/external-s2tc.git] / tests / test.sh
1 #!/bin/sh
2
3 set -e
4
5 cd ..
6 git clean -xdf
7 sh autogen.sh
8 ./configure --prefix="`pwd`/tests" CXXFLAGS="-O3"
9 make
10 make install
11 cd tests
12
13 mkdir -p html
14 exec 3>html/index.html
15
16 html_start()
17 {
18         echo >&3 "<html><title>S2TC</title>"
19         cat <<'EOF' >&3
20 <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
21 <script type="text/javascript">
22 var refsrc = "";
23 function clickfunc()
24 {
25         var me = $(this);
26         if(!me.data("src"))
27                 me.data("src", me.attr("src"));
28         me.attr("src", me.data("src"));
29         if(refsrc == me.data("src"))
30                 refsrc = "";
31         else
32                 refsrc = me.data("src");
33 }
34 function enterfunc()
35 {
36         var me = $(this);
37         if(!me.data("src"))
38                 me.data("src", me.attr("src"));
39         if(refsrc != "")
40                 me.attr("src", refsrc);
41 }
42 function leavefunc()
43 {
44         var me = $(this);
45         if(me.data("src"))
46                 me.attr("src", me.data("src"));
47 }
48 function run()
49 {
50         $('img').click(clickfunc);
51         $('img').mouseenter(enterfunc);
52         $('img').mouseleave(leavefunc);
53 }
54 </script>
55 EOF
56         echo >&3 "<body onLoad=\"run()\"><h1>S2TC</h1>"
57         echo >&3 "<table>"
58         echo >&3 "<tr><th>Picture</th>"
59         echo >&3 "<th>Original</th>"
60
61         if $use_compressonator; then
62                 echo >&3 "<th>Compressonator</th>"
63         fi
64         if $use_nvcompress; then
65                 echo >&3 "<th>nvcompress</th>"
66         fi
67         echo >&3 "<th>rand32-sRGB-mixed</th>"
68         echo >&3 "<th>rand32-wavg</th>"
69         echo >&3 "<th>rand32-avg</th>"
70
71         if $use_libtxc_dxtn; then
72                 echo >&3 "<th>libtxc_dxtn</th>"
73         fi
74         echo >&3 "<th>norand-wavg</th>"
75         echo >&3 "<th>faster-wavg</th>"
76
77         echo >&3 "</tr>"
78 }
79 html_rowstart()
80 {
81         echo >&3 "<tr><th>$1</th>"
82         deltatime=
83         deltatime_raw=0
84         col=0
85 }
86
87 decompress()
88 {
89         case "$1" in
90                 *.dds)
91                         if $use_libtxc_dxtn; then
92                                 LD_PRELOAD=/usr/lib/libtxc_dxtn.so bin/s2tc_decompress < "$1"
93                         elif use_nvcompress; then
94                                 nvdecompress "$1"
95                         else
96                                 # this has bugs with alpha channels
97                                 convert "$1" TGA:-
98                         fi
99                         ;;
100                 *)
101                         cat "$1"
102                         ;;
103         esac
104 }
105
106 html()
107 {
108         decompress "$1" | convert TGA:- -crop 256x256+192+128 "html/$1.png"
109         echo >&3 "<td><img src=\"$1.png\" alt=\"$1\" title=\"$1$deltatime\"></td>"
110         eval "prevdeltatime=\$deltatime_$col"
111         prevdeltatime=`echo "($prevdeltatime-0)+$deltatime_raw" | bc`
112         eval "deltatime_$col=\$prevdeltatime"
113         col=$(($col+1))
114 }
115 html2()
116 {
117         bin/s2tc_decompress < "$1" | convert TGA:- -crop 256x256+192+128 "html/$1-s2tc.png"
118         echo >&3 "<td><img src=\"$1-s2tc.png\" alt=\"$1\" title=\"$1$deltatime\"></td>"
119         eval "prevdeltatime=\$deltatime_$col"
120         prevdeltatime=`echo "($prevdeltatime-0)+$deltatime_raw" | bc`
121         eval "deltatime_$col=\$prevdeltatime"
122         col=$(($col+1))
123 }
124 html_rowend()
125 {
126         echo >&3 "</tr>"
127 }
128 html_end()
129 {
130         echo >&3 "<tr><th>Total runtime</th><td>(original)</td>"
131         col=1
132         while :; do
133                 eval "prevdeltatime=\$deltatime_$col"
134                 [ -n "$prevdeltatime" ] || break
135                 deltatime=`echo "scale=3; $prevdeltatime / 1000000000" | bc -l`
136                 echo >&3 "<td>$deltatime seconds</td>"
137                 col=$(($col+1))
138         done
139         echo >&3 "</table></body></html>"
140 }
141
142 timing()
143 {
144         t0=`date +%s%N`
145         "$@"
146         t1=`date +%s%N`
147         deltatime_raw=`echo "$t1 - $t0" | bc`
148         deltatime=`echo "scale=3; $deltatime_raw / 1000000000" | bc -l`
149         deltatime=" ($deltatime seconds)"
150 }
151
152 t()
153 {
154         in=$1; shift
155         out=$1; shift
156         timing "$@" < "$in" > "$out"
157         html "$out"
158 }
159
160 if which nvcompress >/dev/null 2>&1; then
161         use_nvcompress=true
162 else
163         use_nvcompress=false
164 fi
165 if which wine >/dev/null 2>&1 && [ -f "$HOME/.wine/drive_c/Program Files (x86)/AMD/The Compressonator 1.50/TheCompressonator.exe" ]; then
166         use_compressonator=true
167 else
168         use_compressonator=false
169 fi
170 if [ -f /usr/lib/libtxc_dxtn.so ]; then
171         use_libtxc_dxtn=true
172 else
173         use_libtxc_dxtn=false
174 fi
175
176 html_start
177 for i in dxtfail floor_tread01 floor_tread01_norm fract001 base_concrete1a disabled floor_tile3a lift02 panel_ceil1a sunset amelia rms noise noise_solid supernova ishihara augenkrebs; do
178         html_rowstart "$i"
179
180         html "$i".tga
181
182         if $use_compressonator; then
183                 timing wine "c:/Program Files (x86)/AMD/The Compressonator 1.50/TheCompressonator.exe" -convert -overwrite -mipmaps "$i".tga "$i"-amdcompress.dds -codec DXTC.dll +fourCC DXT1 -mipper BoxFilter.dll
184                 html "$i"-amdcompress.dds
185         fi
186
187         if $use_nvcompress; then
188                 timing nvcompress "$i".tga "$i"-nvcompress.dds
189                 html "$i"-nvcompress.dds
190         fi
191
192         S2TC_COLORDIST_MODE=SRGB_MIXED S2TC_RANDOM_COLORS=32 S2TC_REFINE_COLORS=CHECK  t "$i".tga "$i"-rand32-mrgb-r.dds bin/s2tc
193         S2TC_COLORDIST_MODE=WAVG       S2TC_RANDOM_COLORS=32 S2TC_REFINE_COLORS=CHECK  t "$i".tga "$i"-rand32-wavg-r.dds bin/s2tc
194         S2TC_COLORDIST_MODE=AVG        S2TC_RANDOM_COLORS=32 S2TC_REFINE_COLORS=CHECK  t "$i".tga "$i"-rand32-avg-r.dds  bin/s2tc
195         if $use_libtxc_dxtn; then
196                 LD_PRELOAD=/usr/lib/libtxc_dxtn.so                                     t "$i".tga "$i"-libtxc_dxtn.dds   bin/s2tc
197                 unset LD_PRELOAD
198         fi
199         S2TC_COLORDIST_MODE=WAVG       S2TC_RANDOM_COLORS=0  S2TC_REFINE_COLORS=ALWAYS t "$i".tga "$i"-norand-wavg-r.dds bin/s2tc
200         S2TC_COLORDIST_MODE=WAVG       S2TC_RANDOM_COLORS=-1 S2TC_REFINE_COLORS=ALWAYS t "$i".tga "$i"-faster-wavg-r.dds bin/s2tc
201
202         html_rowend
203 done
204 html_end