Hi, I'm using a third party library (Skia) to render custom opengl code in sync 
with the QtQuick Scene Graph (Qt 5.15 on Windows 11).
I'm using the QQuickFramebufferObject and QSGRenderNode classes to create 
custom QQuickItems to render my scene. The approach works fine, but I've come 
across a very strange issue that I'm unable to solve. The problem consists in a 
sudden unrecoverable drop in FPS during the rendering of my scene. I've noticed 
that the issue presents itself whenever the rendering frame time jumps above a 
certain threshold (most of the times my app is able to render at 60fps, but 
there are times when there is a lot of content to render). When this happens, 
the frame rate no longer jumps back to 60 fps as expected, but instead is 
remains weirdly low (less than 10 fps) for the remaning time of the session. 
This is despite the fact on subsequent draw calls I render nothing in my opengl 
Doing some logging with the helper logging categories provided by Qt, I can see 
that the scene graph that the render time is fine most of the time, but the 
logs consistently report an unusally high sync time in the threaded render 
loop. An example log message shows (other frame logs show similar times):

> Debug: time in renderer: total=4ms, preprocess=0, updates=0, binding=0, 
> rendering=4 (scenegraph\coreapi\qsgrenderer.cpp:281, void __cdecl 
> QSGRenderer::renderScene(const class QSGBindable &))
> Debug: Frame rendered with 'threaded' renderloop in 134ms, sync=129, 
> render=4, swap=1 - (on render thread) 
> (scenegraph\qsgthreadedrenderloop.cpp:902, void __cdecl 
> QSGRenderThread::syncAndRender(class QImage *))

Has anyone got any clue about what might be going here?

Best Regards,
Interest mailing list

Reply via email to