<?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: Is Android direct texture supported on imx6q? in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/Is-Android-direct-texture-supported-on-imx6q/m-p/416439#M62562</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Android Surfaceflinger mostly use GPU 2D to accelerate surface composition, the interface is Hwcomposer provided by Vivante.&lt;/P&gt;&lt;P&gt;According to the test, composition with GPU 2D has high efficiency and lower power consumption than GPU 3D.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Have a great day,&lt;/P&gt;&lt;P&gt;Victor&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;P&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 15 May 2015 07:35:32 GMT</pubDate>
    <dc:creator>b36401</dc:creator>
    <dc:date>2015-05-15T07:35:32Z</dc:date>
    <item>
      <title>Is Android direct texture supported on imx6q?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Is-Android-direct-texture-supported-on-imx6q/m-p/416438#M62561</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I encountered the following issue on imx6q (Android ICS): "GraphicBuffer memory attached as the texture to FBO not updated after rendering".&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm trying to render into texture that is attached to the frame buffer object. However in order to avoid a lengthy glReadPixels operation from the GPU texture, I'm trying to do the following:&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;1) Create &lt;CODE class="language-c" data-lang="c"&gt;&lt;SPAN class="n"&gt;GraphicBuffer object: &lt;/SPAN&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="n"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;GraphicBuffer *renderGraphicBuffer = new GraphicBuffer(imageWidth,&lt;/P&gt;&lt;P&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;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imageHeight,&lt;/P&gt;&lt;P&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;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PIXEL_FORMAT_RGBA_8888,&lt;/P&gt;&lt;P&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;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GraphicBuffer::USAGE_SW_READ_OFTEN |&lt;/P&gt;&lt;P&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;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GraphicBuffer::USAGE_SW_WRITE_OFTEN |&lt;/P&gt;&lt;P&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;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GraphicBuffer::USAGE_HW_TEXTURE);&lt;/P&gt;&lt;P&gt;&lt;CODE class="language-c" data-lang="c"&gt;&lt;SPAN class="n"&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;2) Create EGL Image from &lt;CODE class="language-c" data-lang="c"&gt;&lt;SPAN class="n"&gt;GraphicBuffer object:&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;const EGLint imageAttrs[] = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; EGL_WIDTH, displayWidth,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; EGL_HEIGHT, displayHeight,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; EGL_MATCH_FORMAT_KHR, EGL_FORMAT_RGBA_8888_KHR,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; EGL_IMAGE_PRESERVED_KHR, EGL_TRUE,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; EGL_NONE&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;SPAN class="n"&gt;EGLImageKHR eglRenderImageHandle = eglCreateImageKHR(eglDisplay, &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="n"&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;&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;&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;&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;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EGL_NO_CONTEXT, &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="n"&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;&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;&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;&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;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EGL_NATIVE_BUFFER_ANDROID, &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="n"&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;&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;&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;&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;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; renderGraphicBuffer-&amp;gt;getNativeBuffer(), &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="n"&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;&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;&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;&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;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imageAttrs);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE class="language-c" data-lang="c"&gt;&lt;SPAN class="n"&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;3) Create a texture and attach the EGL Image to the same texture:&lt;/P&gt;&lt;P&gt;GLuint framebufferTexture;&lt;/P&gt;&lt;P&gt;glGenTextures(1, &amp;amp;framebufferTexture);&lt;/P&gt;&lt;P&gt;glBindTexture(GL_TEXTURE_2D, framebufferTexture);&lt;/P&gt;&lt;P&gt;glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);&lt;/P&gt;&lt;P&gt;glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);&lt;/P&gt;&lt;P&gt;glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);&lt;/P&gt;&lt;P&gt;glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);&lt;/P&gt;&lt;P&gt;glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, (GLeglImageOES)eglRenderImageHandle);&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;4) Create FBO and attach texture as GL_COLOR_ATTACHMENT0:&lt;/P&gt;&lt;P&gt;GLuint framebuffer;&lt;/P&gt;&lt;P&gt;glGenFramebuffers(1, &amp;amp;framebuffer);&lt;/P&gt;&lt;P&gt;glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);&lt;/P&gt;&lt;P&gt;glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, framebufferTexture, 0);&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;5) I render some pixels into framebufferTexture:&lt;/P&gt;&lt;P&gt;glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);&lt;/P&gt;&lt;P&gt;glViewport(0, 0, imageWidth, imageHeight);&lt;/P&gt;&lt;P&gt;glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);&lt;/P&gt;&lt;P&gt;glFinish();&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;6) After I complete rendering, I copy the contest of renderGraphicBuffer into some temporary buffer destination that I transfer to my PC for inspection:&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;void *tex = 0;&lt;/P&gt;&lt;P&gt;renderGraphicBuffer-&amp;gt;lock(GraphicBuffer::USAGE_SW_READ_OFTEN, &amp;amp;tex);&lt;/P&gt;&lt;P&gt;memcpy(destination, tex, imageWidth * imageHeight * 4);&lt;/P&gt;&lt;P&gt;renderGraphicBuffer-&amp;gt;unlock();&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The problem&amp;nbsp; is that when I use the code from 6) I get black image. If I replace code from 6) with the following, picture looks good:&lt;/P&gt;&lt;P&gt;glReadPixels(0, 0, imageWidth, imageHeight, GL_RGBA, GL_UNSIGNED_BYTE, destination);&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My question: Does imx6q GPU support attaching GraphicBuffer to the output texture and if it does, what I'm doing wrong?&lt;/P&gt;&lt;P&gt;Has anyone tried this? BTW, this approach is well documented on the Internet and people tried this before (not necessarily on imx6)&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I attached complete test program with the makefile. The program works but to read pixels I use glReadPixels. If I replace glReadPixels with byte by byte copy from target texture buffer to the texture buffer I get black image as if target buffer doesn't reflect changes done to its texture during rendering pass. In the attached test code, lines 236-238 work. Lines 240-247 don't work.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Update:&lt;/P&gt;&lt;P&gt;After looking into ASOP code and reading some useful links I'm starting to understand Android mechanism to move graphic buffers through processing stages without using glReadPixels or memcpy. But the problem I encountered seems to be a supported feature on other GPUs so I was suprised that it didn't work as I expected. It could be still the case that there is an error in the code and if somebody knows the fix it would be good to know it because we could still use that method in some cases to simplify implementation.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If somebody is interested the following links are good to understand Android graphic buffers pipeline:&lt;/P&gt;&lt;P&gt;&lt;A class="jive-link-external-small" data-content-finding="Community" href="https://github.com/google/grafika" target="_blank"&gt;https://github.com/google/grafika&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive-link-external-small" data-content-finding="Community" href="https://source.android.com/devices/graphics.html" target="_blank"&gt;https://source.android.com/devices/graphics.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive-link-external-small" data-content-finding="Community" href="https://source.android.com/devices/graphics/architecture.html" target="_blank"&gt;https://source.android.com/devices/graphics/architecture.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-336915"&gt;galileo_direct_texture_test.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Apr 2015 17:51:45 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Is-Android-direct-texture-supported-on-imx6q/m-p/416438#M62561</guid>
      <dc:creator>DraganOstojic</dc:creator>
      <dc:date>2015-04-16T17:51:45Z</dc:date>
    </item>
    <item>
      <title>Re: Is Android direct texture supported on imx6q?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Is-Android-direct-texture-supported-on-imx6q/m-p/416439#M62562</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Android Surfaceflinger mostly use GPU 2D to accelerate surface composition, the interface is Hwcomposer provided by Vivante.&lt;/P&gt;&lt;P&gt;According to the test, composition with GPU 2D has high efficiency and lower power consumption than GPU 3D.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Have a great day,&lt;/P&gt;&lt;P&gt;Victor&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;P&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 May 2015 07:35:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Is-Android-direct-texture-supported-on-imx6q/m-p/416439#M62562</guid>
      <dc:creator>b36401</dc:creator>
      <dc:date>2015-05-15T07:35:32Z</dc:date>
    </item>
    <item>
      <title>Re: Is Android direct texture supported on imx6q?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Is-Android-direct-texture-supported-on-imx6q/m-p/416440#M62563</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm having the exact same issue. The same code path works in every other GPU except Vivante. I'm wondering is there any other way to read data from a texture? I tried using glTexDirectVIV but that one is also always returning a null pointer to me. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 06 Oct 2015 20:32:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Is-Android-direct-texture-supported-on-imx6q/m-p/416440#M62563</guid>
      <dc:creator>rgngl</dc:creator>
      <dc:date>2015-10-06T20:32:51Z</dc:date>
    </item>
    <item>
      <title>Re: Is Android direct texture supported on imx6q?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Is-Android-direct-texture-supported-on-imx6q/m-p/416441#M62564</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I appear to have the exact same issue.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Using the IMX6 Quad, how do you copy a &lt;STRONG&gt;rendered&lt;/STRONG&gt; image to another OpenGLES/EGL Context or CPU application?&lt;/P&gt;&lt;P&gt;Emphasis on the RENDERED. The image was made in OpenGLES and it's in an FBO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;glReadPixels() has utterly hideous performance, and context sharing doesn't seem to work at all.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 08 Feb 2016 14:01:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Is-Android-direct-texture-supported-on-imx6q/m-p/416441#M62564</guid>
      <dc:creator>Richard2</dc:creator>
      <dc:date>2016-02-08T14:01:27Z</dc:date>
    </item>
  </channel>
</rss>

