<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: To improve i.MX6Q OpenGL rendering performance. in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/To-improve-i-MX6Q-OpenGL-rendering-performance/m-p/300276#M37695</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;I found the following OpenGL ES Tips and Tricks and general CPU optimization considerations :&lt;BR /&gt; &lt;BR /&gt; 1. General Tips for i.MX6 :&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;&lt;BR /&gt; Minimize state changes&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Use uncompressed textures&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Batch your calls as much as possible&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Avoid glFinish.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Use Triangle Strip&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Consider glDrawElements instead of glDrawArrays&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Use VBOs instead of re-submitting vertices&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Prevent uploads (VBOs, TexImage2D, etc.)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Optimize your shaders&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;reduce branching (if-else)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;keep the code simple&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;avoid using functions&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;some math calls are costly&lt;BR /&gt; &lt;BR /&gt; 2. Other Graphics Tips and Tricks :&lt;BR /&gt; &lt;BR /&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Keep an eye on your CPU load &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;&amp;nbsp; In Linux, use ‘top’&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Keep an eye on the Memory Bandwidth&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;&amp;nbsp; In Linux, use ‘mmdc’ profiling tool&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;High CPU/BW load can be indicative of bad API usage&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;You should try to avoid data ‘uploads’ (either texture or vertex) on a frame-by-fame basis&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Use VBOs instead of arrays in your draw calls&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Use DirectVIV / PBOs / EGL Images instead of teximage data&lt;BR /&gt; &lt;BR /&gt; 3. CPU Optimizations.&lt;BR /&gt; &lt;BR /&gt; 3.1.&lt;BR /&gt; Before measuring any performance on ARM CPU(s), it is recommended to disable the dynamic frequency scaling:&lt;BR /&gt; &lt;BR /&gt; # echo performance &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq scaling_governor&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;&lt;BR /&gt; Else, anytime your computing threads are sleeping or waiting for an interrupt, &lt;BR /&gt; the Power Management may enter a state with lower CPU frequency, thus degrading your performance.&lt;BR /&gt; &lt;BR /&gt; 3.2.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;The ARM cores in i.MX6 have Neon units that can run SIMD instructions (Single Instruction Multiple Data).&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Basic steps to enable Neon in gcc.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;In compile flags:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;LDFLAGS = -fmpu=neon –O3&lt;BR /&gt; Lets the compiler optimize the code using neon.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;More flags: fast-math, unsafe-math, unsafe-loop-optimizations&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Best practices to allow compiler better vectorize data in your loops:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Have : countable loops, independent and continuous data accesses&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Ex: gather data in a struct of arrays, rather than array of structs.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Avoid: break-continue, if-else, unrolling manually loops.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Use C intrinsics&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;C function call interface to NEON operations&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Supports all data types and operations supported by NEON&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;&lt;SPAN&gt;Full list &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html"&gt;http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html&lt;/A&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;&lt;SPAN&gt;More info at &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://armneon.blogspot.com/"&gt;http://armneon.blogspot.com/&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;3.3.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;The ARM cores in i.MX6 Dual and Quad can run your algo in Parallel by using OpenMP compile directives.&lt;BR /&gt; Basic steps to enable OpenMP with gcc.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;In compile flags:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;LDFLAGS = -fopenmp&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Install on target the library libgomp.so&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;In source file:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;#include &amp;lt;omp.h&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Put your code to parallelize into {}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Just before the {}, add:&lt;BR /&gt; #pragma omp parallel&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;If your code is a loop, just before the loop add:&lt;BR /&gt; #pragma omp parallel for&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Disambigue variable visibility across threads: &lt;BR /&gt; shared(var1,var2,…) private(var3,var4,…)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;SPAN style="font-size: 12.0pt; font-family: 'Verdana','sans-serif';"&gt;&lt;SPAN&gt;More info at &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://openmp.org/wp/resources/#Tutorials"&gt;http://openmp.org/wp/resources/#Tutorials&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Have a great day,&lt;BR /&gt;Yuri&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 28 May 2014 10:16:38 GMT</pubDate>
    <dc:creator>Yuri</dc:creator>
    <dc:date>2014-05-28T10:16:38Z</dc:date>
    <item>
      <title>To improve i.MX6Q OpenGL rendering performance.</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/To-improve-i-MX6Q-OpenGL-rendering-performance/m-p/300274#M37693</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi community,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have a question about i.MX6DQ OpenGL rendering with Yocto BSP (L3.10.17_1.0.0-ga).&lt;/P&gt;&lt;P&gt;Actually, rendering speed is not enough for 1920x1080 resolution now even though it is ok for XGA (1024x768).&lt;/P&gt;&lt;P&gt;Could you give me some advice to improve OpenGL rendering speed or how to investigate what is wrong?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;Satoshi Shimoda&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 19 May 2014 06:45:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/To-improve-i-MX6Q-OpenGL-rendering-performance/m-p/300274#M37693</guid>
      <dc:creator>satoshishimoda</dc:creator>
      <dc:date>2014-05-19T06:45:37Z</dc:date>
    </item>
    <item>
      <title>Re: To improve i.MX6Q OpenGL rendering performance.</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/To-improve-i-MX6Q-OpenGL-rendering-performance/m-p/300275#M37694</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Performance depends on many factors. One thing would recommend is use eglImage Extension.&lt;/P&gt;&lt;P&gt;When you use conventional image and textures, it involves copy operation which will reduce the performance. I suggest you to Try to use eglImage extension, Note that the recipes in meta-browser now contain packageconfigs to enable EGL support. You don't need to pass this parameter then.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Have a great day,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 26 May 2014 17:52:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/To-improve-i-MX6Q-OpenGL-rendering-performance/m-p/300275#M37694</guid>
      <dc:creator>Bio_TICFSL</dc:creator>
      <dc:date>2014-05-26T17:52:37Z</dc:date>
    </item>
    <item>
      <title>Re: To improve i.MX6Q OpenGL rendering performance.</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/To-improve-i-MX6Q-OpenGL-rendering-performance/m-p/300276#M37695</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;I found the following OpenGL ES Tips and Tricks and general CPU optimization considerations :&lt;BR /&gt; &lt;BR /&gt; 1. General Tips for i.MX6 :&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;&lt;BR /&gt; Minimize state changes&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Use uncompressed textures&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Batch your calls as much as possible&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Avoid glFinish.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Use Triangle Strip&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Consider glDrawElements instead of glDrawArrays&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Use VBOs instead of re-submitting vertices&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Prevent uploads (VBOs, TexImage2D, etc.)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Optimize your shaders&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;reduce branching (if-else)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;keep the code simple&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;avoid using functions&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;some math calls are costly&lt;BR /&gt; &lt;BR /&gt; 2. Other Graphics Tips and Tricks :&lt;BR /&gt; &lt;BR /&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Keep an eye on your CPU load &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;&amp;nbsp; In Linux, use ‘top’&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Keep an eye on the Memory Bandwidth&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;&amp;nbsp; In Linux, use ‘mmdc’ profiling tool&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;High CPU/BW load can be indicative of bad API usage&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;You should try to avoid data ‘uploads’ (either texture or vertex) on a frame-by-fame basis&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Use VBOs instead of arrays in your draw calls&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Use DirectVIV / PBOs / EGL Images instead of teximage data&lt;BR /&gt; &lt;BR /&gt; 3. CPU Optimizations.&lt;BR /&gt; &lt;BR /&gt; 3.1.&lt;BR /&gt; Before measuring any performance on ARM CPU(s), it is recommended to disable the dynamic frequency scaling:&lt;BR /&gt; &lt;BR /&gt; # echo performance &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq scaling_governor&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;&lt;BR /&gt; Else, anytime your computing threads are sleeping or waiting for an interrupt, &lt;BR /&gt; the Power Management may enter a state with lower CPU frequency, thus degrading your performance.&lt;BR /&gt; &lt;BR /&gt; 3.2.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;The ARM cores in i.MX6 have Neon units that can run SIMD instructions (Single Instruction Multiple Data).&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Basic steps to enable Neon in gcc.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;In compile flags:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;LDFLAGS = -fmpu=neon –O3&lt;BR /&gt; Lets the compiler optimize the code using neon.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;More flags: fast-math, unsafe-math, unsafe-loop-optimizations&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Best practices to allow compiler better vectorize data in your loops:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Have : countable loops, independent and continuous data accesses&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Ex: gather data in a struct of arrays, rather than array of structs.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Avoid: break-continue, if-else, unrolling manually loops.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Use C intrinsics&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;C function call interface to NEON operations&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Supports all data types and operations supported by NEON&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;&lt;SPAN&gt;Full list &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html"&gt;http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html&lt;/A&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;&lt;SPAN&gt;More info at &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://armneon.blogspot.com/"&gt;http://armneon.blogspot.com/&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;3.3.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;The ARM cores in i.MX6 Dual and Quad can run your algo in Parallel by using OpenMP compile directives.&lt;BR /&gt; Basic steps to enable OpenMP with gcc.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;In compile flags:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;LDFLAGS = -fopenmp&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Install on target the library libgomp.so&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;In source file:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;#include &amp;lt;omp.h&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Put your code to parallelize into {}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Just before the {}, add:&lt;BR /&gt; #pragma omp parallel&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;If your code is a loop, just before the loop add:&lt;BR /&gt; #pragma omp parallel for&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Verdana','sans-serif';"&gt;Disambigue variable visibility across threads: &lt;BR /&gt; shared(var1,var2,…) private(var3,var4,…)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;SPAN style="font-size: 12.0pt; font-family: 'Verdana','sans-serif';"&gt;&lt;SPAN&gt;More info at &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://openmp.org/wp/resources/#Tutorials"&gt;http://openmp.org/wp/resources/#Tutorials&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Have a great day,&lt;BR /&gt;Yuri&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 28 May 2014 10:16:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/To-improve-i-MX6Q-OpenGL-rendering-performance/m-p/300276#M37695</guid>
      <dc:creator>Yuri</dc:creator>
      <dc:date>2014-05-28T10:16:38Z</dc:date>
    </item>
  </channel>
</rss>

