This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux: J6 entry with sgx544mp: Rendering Error occurs when drawing a lot of triangles

Tool/software: Linux

Our product runs well with 60000 triangle,and the fps is 16.

But when we render 600000 triangles, some strange rendering images comes out

I want to konw what will casue such kind of image, as I konw too much triangles will only effect the fps, but not the rendering result.

  • Another info, I let the application sleep 50ms after eglswapbuffer, the tearing will not happen
  • Hi,

    Please provide additional information about your setup and application:
    1. SDK version - Linux / Android / Vision SDK
    2. Which application is being used? From the images, it looks like a camera based surround view / front camera application
    3. How are you rendering? Are you using Pixmap? Or Window Surface?
    4. What is the window system being used? Or is it using display directly? If so, which display interface?
    5. 600000 triangles is very large. Are you checking glGetError after every call?

    Regards,
    Anand
  • 1.linux sdk:psdk 3.2.0.1

    2.application based on surround view

    3.window surface

    4.use drm to filp, and gbm suface to create eglsurface. the display interface is eglswapbuffer

    5.glgeterror is 0, no error

    ------------------------

    more info:

    I call eglswapinterval(2), and the rendering image sometimes without tearing, But using eglswapinterval(0), the frequency of tearing is even higher .

    But with 60000 triangle we do not find tearing so far. 

    So is that true rendering too much triangle will cause rendering error. 

    ----------------------------------------------------------

    Another problem with triangle numbers:

    When changing the rendering triangle number, the rendering result will slightly transform

    The first frame we draw a full screen quad to show an UI

    The second frame we draw 60000 triangle to show the surround view and other 3D model

    The third frame we do exactly the second frame do

    But the second frame is wrong, the image which contains two rendering region, the left region  is narrow  which is not expected.

    And the third frame is correct, the left region is larger than the sceond frame. Then we keep rendering, all the frame is correct after second frame

    To create regions, we use glviewport api.

    Is this problem may be the same reason?

    When we draw a full quad, the gpu frequency may be lower, but when we suddenly increase the triangle num, gpu is not ready to handle that.  

      

  • Hi,

    Will you be able to share a sample OpenGLES application that demonstrates the problem on TI EVM? We can review and let you know our analysis.


    Regards,

    Anand

  • This is not easy to demonstrate,  simple sample may not trigger this rendeing error, because out app is very complicated.

    What I want to konw is will screen tearing hanppen if the fps is low(when  I draw a lot of triangle), So I can make some policy. 

  • Hi,

    Purely at the GPU level, the screen tearing should not happen because of number of triangles.

    The tearing problem mainly occurs due to a lack of sync between producer and consumer. There are two possibilities here:
    1. Display driver has already queued up the frame for display while GPU is still rendering the frame. GPU-DSS sync issue
    2. Number of triangles exceeds GPU limits. CPU starts rendering some of the triangles. CPU-GPU sync issue

    #1 is more of an application design issue. Check how application synchronizes the render thread vs display thread. The display thread should be triggered based on GPU render completion. It cannot run asynchronously on its own at display refresh rate.

    #2 can be checked through PVRTune. Look at CPU vs GPU load on PVRTune for lower vs higher triangle count.

    It should be possible to create a simple OpenGLES application to demonstrate the problem. It does not need to have the whole development workflow. TI needs a sample application showing the problem on TI EVM before we can debug it.

    Regards,
    Anand
  • Thank you very much.

    If I demonstrate the problem, I will start another question