JustWe
JustWe

Reputation: 4484

Why eglswapinterval cannot disable v-sync?

My environment:

qt.scenegraph.general: QSG: basic render loop
qt.scenegraph.general: Using sg animation driver
qt.scenegraph.general: texture atlas dimensions: 2048x2048
qt.scenegraph.general: R/G/B/A Buffers:   8 8 8 0
qt.scenegraph.general: Depth Buffer:      24
qt.scenegraph.general: Stencil Buffer:    8
qt.scenegraph.general: Samples:           0
qt.scenegraph.general: GL_VENDOR:         Imagination Technologies
qt.scenegraph.general: GL_RENDERER:       PowerVR Rogue GE7800
qt.scenegraph.general: GL_VERSION:        OpenGL ES 3.2 build 1.10@5187610

I am running a Hello world QML program and config as above.

QT_QPA_EGLFS_SWAPINTERVAL=0
QT_QPA_UPDATE_IDLE_TIME=0
QSG_RENDER_LOOP=basic

I test the QT_QPA_EGLFS_SWAPINTERVAL via PVRTrace https://www.imgtec.com/developers/powervr-sdk-tools/pvrtrace/

enter image description here

it shows the eglSwapInterval did set properly as above. But the problem is the program stuck on 60FPS. Why I cannot disable the V-Sync.

Upvotes: 0

Views: 880

Answers (1)

solidpixel
solidpixel

Reputation: 12069

The short answer is that vsync behavior is entirely platform dependent. In reality eglSwapInterval() is actually just hint and it is implementation-defined whether it actually does anything at all. On most platforms it doesn't - e.g. on Android you can neither disable it nor fix FPS at 30. Suggest raising this with the platform provider.

Upvotes: 1

Related Questions