<?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:  Can anyone explain why glDrawArrays() causes high CPU utilization? in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/Can-anyone-explain-why-glDrawArrays-causes-high-CPU-utilization/m-p/551182#M86205</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for the response.&amp;nbsp; &lt;/P&gt;&lt;P&gt;Measurements were simply taken with top from the command line.&amp;nbsp; I have attached the source code used for a simple example (tdSimpleTestWidget.zip).&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 02 Aug 2016 21:34:19 GMT</pubDate>
    <dc:creator>dominicwalkes</dc:creator>
    <dc:date>2016-08-02T21:34:19Z</dc:date>
    <item>
      <title>Can anyone explain why glDrawArrays() causes high CPU utilization?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Can-anyone-explain-why-glDrawArrays-causes-high-CPU-utilization/m-p/551180#M86203</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Helvetica',sans-serif;"&gt;We have noticed high utilization of the main CPU while glDrawArrays() is executing. Our expectation is that glDrawArrays() should primarily cause high GPU utilization with minimal impact on the main CPU. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Helvetica',sans-serif;"&gt;Circumstance:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Helvetica',sans-serif;"&gt;Our environment is linux/Qt. We are rendering the screen on a timer at 20fps. We have 60+ VBOs in GPU RAM. The VBOs are GL_TRIANGLE type. We are not using VAOs or index buffers. Each VBO contains 2000 triangles/6000 vertices. Each frame we invoke glDrawArrays() for each VBO. All calls use the same shader programs:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="jive-pre"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: purple;"&gt;QString&lt;/SPAN&gt; vertexShader =&lt;/PRE&gt;&lt;PRE class="jive-pre"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: green;"&gt;"uniform&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;float&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;useUniformColor;"&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class="jive-pre"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: green;"&gt;"uniform&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;highp&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;vec4&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;uniformColor;"&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class="jive-pre"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: green;"&gt;"uniform&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;highp&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;mat4&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;ortho;"&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class="jive-pre"&gt; &lt;/PRE&gt;&lt;PRE class="jive-pre"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: green;"&gt;"attribute&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;highp&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;vec3&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;a_position;"&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class="jive-pre"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: green;"&gt;"attribute&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;highp&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;vec4&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;a_color;"&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class="jive-pre"&gt; &lt;/PRE&gt;&lt;PRE class="jive-pre"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: green;"&gt;"varying&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;highp&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;vec4&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;v_color;"&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class="jive-pre"&gt; &lt;/PRE&gt;&lt;PRE class="jive-pre"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: green;"&gt;"void&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;main()\&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class="jive-pre"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: green;"&gt;{\&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class="jive-pre"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: green;"&gt;gl_Position&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;=&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;vec4(a_position,1)&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;*&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;ortho;\&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class="jive-pre"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: green;"&gt;if(useUniformColor&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;!=&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;0.0)\&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class="jive-pre"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: green;"&gt;v_color&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;=&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;uniformColor;\&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class="jive-pre"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: green;"&gt;else\&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class="jive-pre"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: green;"&gt;v_color&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;=&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;a_color;\&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class="jive-pre"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: green;"&gt;}"&lt;/SPAN&gt;;&lt;/PRE&gt;&lt;PRE class="jive-pre"&gt;
 
 &lt;/PRE&gt;&lt;PRE class="jive-pre"&gt; &lt;/PRE&gt;&lt;PRE class="jive-pre"&gt; &lt;/PRE&gt;&lt;PRE class="jive-pre"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: purple;"&gt;QString&lt;/SPAN&gt; fragmentShader =&lt;/PRE&gt;&lt;PRE class="jive-pre"&gt; &lt;/PRE&gt;&lt;PRE class="jive-pre"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: green;"&gt;"varying&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;highp&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;vec4&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;v_color;"&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class="jive-pre"&gt; &lt;/PRE&gt;&lt;PRE class="jive-pre"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: green;"&gt;""&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class="jive-pre"&gt; &lt;/PRE&gt;&lt;PRE class="jive-pre"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: green;"&gt;"void&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;main()"&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class="jive-pre"&gt; &lt;/PRE&gt;&lt;PRE class="jive-pre"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: green;"&gt;"{"&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class="jive-pre"&gt; &lt;/PRE&gt;&lt;PRE class="jive-pre"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: green;"&gt;"&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: green;"&gt;gl_FragColor&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;=&lt;/SPAN&gt; &lt;SPAN style="color: green;"&gt;v_color;"&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class="jive-pre"&gt; &lt;/PRE&gt;&lt;PRE class="jive-pre"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: green;"&gt;"}"&lt;/SPAN&gt;;&lt;/PRE&gt;&lt;PRE class="jive-pre"&gt; &lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 Jul 2016 19:46:52 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Can-anyone-explain-why-glDrawArrays-causes-high-CPU-utilization/m-p/551180#M86203</guid>
      <dc:creator>dominicwalkes</dc:creator>
      <dc:date>2016-07-28T19:46:52Z</dc:date>
    </item>
    <item>
      <title>Re:  Can anyone explain why glDrawArrays() causes high CPU utilization?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Can-anyone-explain-why-glDrawArrays-causes-high-CPU-utilization/m-p/551181#M86204</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Could you share your perfomance measurements data, and how are you getting those numbers? Looks like you are using purely software libraries instead of using hfp libraries or the GPU driver for your OpenCL testing.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 02 Aug 2016 14:27:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Can-anyone-explain-why-glDrawArrays-causes-high-CPU-utilization/m-p/551181#M86204</guid>
      <dc:creator>Bio_TICFSL</dc:creator>
      <dc:date>2016-08-02T14:27:47Z</dc:date>
    </item>
    <item>
      <title>Re:  Can anyone explain why glDrawArrays() causes high CPU utilization?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Can-anyone-explain-why-glDrawArrays-causes-high-CPU-utilization/m-p/551182#M86205</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for the response.&amp;nbsp; &lt;/P&gt;&lt;P&gt;Measurements were simply taken with top from the command line.&amp;nbsp; I have attached the source code used for a simple example (tdSimpleTestWidget.zip).&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 02 Aug 2016 21:34:19 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Can-anyone-explain-why-glDrawArrays-causes-high-CPU-utilization/m-p/551182#M86205</guid>
      <dc:creator>dominicwalkes</dc:creator>
      <dc:date>2016-08-02T21:34:19Z</dc:date>
    </item>
    <item>
      <title>Re:  Can anyone explain why glDrawArrays() causes high CPU utilization?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Can-anyone-explain-why-glDrawArrays-causes-high-CPU-utilization/m-p/551183#M86206</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;@bio, &lt;/P&gt;&lt;P&gt;In our initial implementation, we generate several VBOs with 6000 vertices each (about 360k vertices).&amp;nbsp; The resulting CPU load was in the 60% range.&amp;nbsp; We were able to move this to a single VBO and we implemented an index buffer (now using glDrawElements)&amp;nbsp; and brought the CPU utilization down to about 35%, but this still seems high.&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Ben Beckwith&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 08 Aug 2016 14:40:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Can-anyone-explain-why-glDrawArrays-causes-high-CPU-utilization/m-p/551183#M86206</guid>
      <dc:creator>colonelpanic</dc:creator>
      <dc:date>2016-08-08T14:40:18Z</dc:date>
    </item>
    <item>
      <title>Re:  Can anyone explain why glDrawArrays() causes high CPU utilization?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Can-anyone-explain-why-glDrawArrays-causes-high-CPU-utilization/m-p/551184#M86207</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Furthermore, the results of glGetString(GL_VERSION) and glGetString(GL_SHADING_LANGUAGE_VERSION) is:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GL Version:&amp;nbsp; "OpenGL ES 3.0 V5.0.11.p4.25762"&amp;nbsp; GL Shader Version:&amp;nbsp; "OpenGL ES GLSL ES 3.00"&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;/P&gt;&lt;P class="p1"&gt;I'm assuming this implies Hardware acceleration.&lt;/P&gt;&lt;P class="p1"&gt;&lt;/P&gt;&lt;P class="p1"&gt;Thanks,&lt;BR /&gt;Ben Beckwith&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 08 Aug 2016 15:38:09 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Can-anyone-explain-why-glDrawArrays-causes-high-CPU-utilization/m-p/551184#M86207</guid>
      <dc:creator>colonelpanic</dc:creator>
      <dc:date>2016-08-08T15:38:09Z</dc:date>
    </item>
  </channel>
</rss>

