This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Hypothetical driver stall in upscale pass

Apologies for the odd title but I was wondering if you could perhaps shed some light when it comes do driver-side behavior.
We're seeing some suspiciously high time "around" a single draw call - slightly above 2ms on a Mali-G72MP2 (Samsung A20). This represents an upscale pass (in Unity). I'd expect this to cost next to "nothing", CPU-wise, but I was wondering if what we're seeing could be related with the driver making sure the framebuffer that is being upscaled is fully resolved before the draw call and therefore stalling?

A simplified view of the GL calls would be:

glInvalidateFramebuffer( intermediateFBO ); // DEPTH and Stencil
...
glBindTexture( intermediateTexture); // the texture attached to intermediateFBO
glBindFramebuffer( backbuffer );
glInvalidateFramebuffer( backbuffer ); // COLOR
...
glDrawElements(); // the fullscreen quad

Parents
  • Hi JPJ, 

    I don't have a good answer here unfortunately - there are few things it could be, but TBH neither seem a perfect fit for something mid-frame. 

    • Is the content hitting 60 FPS?
    • Does the content have a lot of simple render passes?

    For content hitting vsync there is always going to be a stall somewhere. It's normally during the either the first drawcall or the final eglSwapBuffers call, but it's possible you hit something mid-frame (but I view this a the least likely of the options).

    The driver includes a rate limiter to manage the number of render passes in flight. The first draw will "commit" that to be a real render pass, so it's possible that is tripping the max outstanding throttle if there are a number of other simple post passes before it. 

    Hard to give a better answer, sorry, 

    Pete

Reply
  • Hi JPJ, 

    I don't have a good answer here unfortunately - there are few things it could be, but TBH neither seem a perfect fit for something mid-frame. 

    • Is the content hitting 60 FPS?
    • Does the content have a lot of simple render passes?

    For content hitting vsync there is always going to be a stall somewhere. It's normally during the either the first drawcall or the final eglSwapBuffers call, but it's possible you hit something mid-frame (but I view this a the least likely of the options).

    The driver includes a rate limiter to manage the number of render passes in flight. The first draw will "commit" that to be a real render pass, so it's possible that is tripping the max outstanding throttle if there are a number of other simple post passes before it. 

    Hard to give a better answer, sorry, 

    Pete

Children