Rendering to an surfaceless OpenGL ES context does not work correctly.

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Rendering to an surfaceless OpenGL ES context does not work correctly.

706 Views
miloszlazurek
Contributor I

I have observed rendering problem when running the attached OpenGL ES program that uses two shared contexts where one context is associated with a window surface and another context is a offscreen surface-less context, rendering into FBO which is used by the window context.

It seems that the offscreen context does not render correctly into the FBO everytime and hangs after rendering one frame. The commands issued in this OpenGL ES context do not have any effect, and the FBO texture is not updated wit a new context.

The problem is observed on Freescale Yocto (fsl-arm-yocto-bsp.git -b imx-4.1.15-1.0.0_ga) i.MX6Q SabreSD and Sabre AI but NOT on i.MXQP, i.MX6DL or i.MX6SoloX.

 

If a workaround as below is added into the program to read back the off screen, the rendering works correctly. Somehow it forces to execute and flush command buffers on the surfacelless context, but enforces a performance penalty as this call blocks until finished.

 

glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, &data);

 

Please find the attached OpenGL ES program compiled using the following

$CXX -O2 -DLINUX -DEGL_API_FB -D_FSLVIV ml_matrixmath.cpp

ml_vectormath.cpp resource.cpp main.cpp -

lpthread -lm -ldl -lGLESv2 -lEGL

 

Please let us know what is the problem and if there is any patch or other workaround to resolve the problemwithout doing glReadPixel that reduces the performance.

0 Kudos
1 Reply

523 Views
Bio_TICFSL
NXP TechSupport
NXP TechSupport

Hi Milosz,

You are right this not happens with the MX6P and MX6SX, however it has to be somethings in your FBO, you can try the examples provided in GPU_SDK.

0 Kudos