<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="http://git.reviewboard.kde.org/r/101378/">http://git.reviewboard.kde.org/r/101378/</a>
     </td>
    </tr>
   </table>
   <br />





<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On May 21st, 2011, 2:10 p.m., <b>Torsten Rahn</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Insanely Great :-)

I tested the Qt-Only version with various settings and ran through lots of use cases that I  could think of which might pose a problem on a Dual CPU machine:

trah@horst:~/marble-1.1/qt_marble_build&gt; cat /proc/cpuinfo 
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 23
model name      : Genuine Intel(R) CPU           U7300  @ 1.30GHz
stepping        : 10
cpu MHz         : 800.000
cache size      : 3072 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 2
apicid          : 0
initial apicid  : 0
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm tpr_shadow vnmi flexpriority
bogomips        : 2593.45
clflush size    : 64
power management:

processor       : 1
vendor_id       : GenuineIntel
cpu family      : 6
model           : 23
model name      : Genuine Intel(R) CPU           U7300  @ 1.30GHz
stepping        : 10
cpu MHz         : 800.000
cache size      : 3072 KB
physical id     : 0
siblings        : 2
core id         : 1
cpu cores       : 2
apicid          : 1
initial apicid  : 1
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm tpr_shadow vnmi flexpriority
bogomips        : 2593.38
clflush size    : 64
power management:

I didn&#39;t have a single crash. The only thing I long for now is threaded tile access. Then we can finally enable the checkmark for the &quot;Animated Voyage&quot; by default. </pre>
 </blockquote>







</blockquote>

<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Thanks for your reviews!

I&#39;ve tackled sluggish behavior in a separate branch, where I get nice animated voyages. Stay tuned!</pre>
<br />








<p>- Bernhard</p>


<br />
<p>On May 17th, 2011, 3:38 p.m., Bernhard Beschow wrote:</p>






<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('http://git.reviewboard.kde.org/media/rb/images/review_request_box_top_bg.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for Marble.</div>
<div>By Bernhard Beschow.</div>


<p style="color: grey;"><i>Updated May 17, 2011, 3:38 p.m.</i></p>




<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">This patch changes the scanline texture mappers to render textures with multiple threads.
The number of threads is determined using QThread::idealThreadCount().
The patch consists of two commits [1], where the first one refactors and cleans up the texture mappers, whereas the second one introduces the threading.

In the first commit, a class named ScanlineTextureMapperContext is introduced, which holds the state for performing scanline texture mapping. It was factored out of the AbstractScanlineTextureMapper class, which is now named &quot;TextureMapperInterface&quot;. Fresh ScanlineTextureMapperContexts are created upon every rendering action, which is cleaner than the former approach of reinitializing all rendering attributes in AbstractScanlineTextureMapper::setRadius(). Finally, the patch constifies many variables in the texture mappers and removes some unneeded code.

In the second commit, threads are used for texture rendering. Almost all rendering logic has been moved into QRunnable implementations, which are recreated for every frame. Since each QRunnable instantiates its own ScanlineTextureMapperContext, the contexts are recreated for every frame as well.

Due to synchronization overhead for tile acces, the patch may cause a small performance regression. I couldn&#39;t measure any big difference on a single-core machine, though.

[1] https://github.com/shentok/marble/tree/threaded-rendering</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Here are some numbers of a benchmark using OSM:

I get the following speedups on an Atom N270 (two Hyperthreads):
o globe projection:
  low quality:     ~29 -&gt; ~32 fps
  outline quality: ~20 -&gt; ~25 fps
  high quality:     ~5 -&gt;  ~7 fps
o flat projection:
  low quality:     ~33 -&gt; ~36 fps
  outline quality: ~23 -&gt; ~26 fps
  high quality:     ~7 -&gt;  ~9 fps
o mercator projection:
  low quality:     ~32 -&gt; ~35 fps
  outline quality: ~22 -&gt; ~26 fps
  high quality:     ~7 -&gt;  ~9 fps

Earthwings gets the following speedups for globe projection on an Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz (four &quot;real&quot; threads):
low quality:     ~57 -&gt; ~66 fps
outline quality: ~37 -&gt; ~48 fps
high quality:    ~14 -&gt; ~30 fps

I get about the same results before and after the patch is applied on a single-core machine.</pre>
  </td>
 </tr>
</table>




<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>src/lib/AbstractScanlineTextureMapper.h <span style="color: grey">(1998db0)</span></li>

 <li>src/lib/AbstractScanlineTextureMapper.cpp <span style="color: grey">(8acf57c)</span></li>

 <li>src/lib/CMakeLists.txt <span style="color: grey">(f5d49c0)</span></li>

 <li>src/lib/EquirectScanlineTextureMapper.h <span style="color: grey">(05e6639)</span></li>

 <li>src/lib/EquirectScanlineTextureMapper.cpp <span style="color: grey">(8f697cc)</span></li>

 <li>src/lib/MarbleMap.cpp <span style="color: grey">(6f5f54f)</span></li>

 <li>src/lib/MercatorScanlineTextureMapper.h <span style="color: grey">(a79d1c8)</span></li>

 <li>src/lib/MercatorScanlineTextureMapper.cpp <span style="color: grey">(bdf9b0c)</span></li>

 <li>src/lib/ScanlineTextureMapperContext.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/lib/ScanlineTextureMapperContext.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/lib/SphericalScanlineTextureMapper.h <span style="color: grey">(f336282)</span></li>

 <li>src/lib/SphericalScanlineTextureMapper.cpp <span style="color: grey">(583630a)</span></li>

 <li>src/lib/StackedTileLoader.cpp <span style="color: grey">(b67cb98)</span></li>

 <li>src/lib/TextureLayer.cpp <span style="color: grey">(d98f712)</span></li>

 <li>src/lib/TextureMapperInterface.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/lib/TextureMapperInterface.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/lib/TileLoader.cpp <span style="color: grey">(1b85dda)</span></li>

 <li>src/lib/TileScalingTextureMapper.h <span style="color: grey">(2c70dad)</span></li>

 <li>src/lib/TileScalingTextureMapper.cpp <span style="color: grey">(2ec719f)</span></li>

 <li>src/lib/global.h <span style="color: grey">(a5c25fb)</span></li>

</ul>

<p><a href="http://git.reviewboard.kde.org/r/101378/diff/" style="margin-left: 3em;">View Diff</a></p>




  </td>
 </tr>
</table>








  </div>
 </body>
</html>