Do frames get updated on every VSYNC or only when GUI changes?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2025-03-26 1:25 PM
Hi all, here with another question:
My coworkers and I are looking at the performance of our GUI, to better understand what's going on under the hood. We followed the steps in the Performance Measurement doc and found our system to behave differently than I expected.
We have a number of screens and we cycle through them every 3 seconds. I thought that the frame would be updated every VSYNC - no matter what - whether there's new frames to display or not. It seems that it's smart and only conveys information on a change. You can see this in the capture below.
This is confirmed to be the case because if we disconnect and reconnect the display, it'll display nothing until we actively change the screen. This isn't something we anticipate doing so it doesn't matter that much, I'm simply surprised that updates don't happen on every VSYNC.
Could anyone provide any more insight on this, please?
Thanks,
Julia
- Labels:
-
TouchGFX
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
2025-03-27 3:21 AM
Hello @jchernus-fikst ,
I think we should continue the discussion on the other thread as they are very similar.
To answer the specific question of this thread, the framerate is defined like so in the documentation:
" This is the frame rate of the user application. The signal toggles when a frame is updated. If render time exceeds the max render time defined by the display, the frame rate will drop."
"when a frame is updated' and this should be done every 16ms. Even if nothing changes on your GUI, we still fetch the clicks and render any change (perhaps there is no clicks/changes so it is fast).
What you seem to measure is the data transfer. This could be because you only transfer data when they are changed because your display have internal memory and you only change the GUI every 3 seconds.
You could try to add a moving element (a box and an interaction triggered every tick where the action is execute code and the code is something like box1.setX((box1.getX()+1)%300);) to check if your measured framerate changes.
Regards,
Software engineer at ST (TouchGFX)
