cancel
Showing results for 
Search instead for 
Did you mean: 

Slow SlideMenu transition on Graph

ALomb
Senior

I ported "Model UI TouchGFX Demo 1 " on my board (WaveShare Open746I).

Screen resolution increases to 1024x600 16BPP.

On the target and also slightly on the simulatorIn in the Graph screen transiton of SlideMenu it's very slow.

if I remove points and area setting the transition is less slow, until it becomes normal by removing the two graphs.

What this slowdown is due to ?

Also.

The addition of values to the graph is done in GraphView::handleTickEvent. How often GraphView::handleTickEvent is recalled? Depends on the screen resolution?

//Antonello

11 REPLIES 11
Martin KJELDSEN
Chief III

ticks are based on your vsync. You're moving a lot of pixels so it will be slow. I'm not entirely sure what you mean when you say "Graph screen transition of slidemenu" - Can you post a screenshot?

Did you measure anything? Could be your framerate is just overall bad because the port is not complete.

/Martin

ALomb
Senior

Hi @Martin KJELDSEN​ ,

at this link you can see what happens.

Also, this is the VSYNC signal captured

0690X00000AQoVBQA1.pngVSYNC the frequency is approx 29Hz

/Antonello

Martin KJELDSEN
Chief III

Great, since you can measure things check out GPIO.cpp. It may be empty for you, but you can Implement the methods there to toggle whatever pins you want to measure on. From TouchGFX, we toggle the following internally so you can measure performance metrics.

  typedef enum
  {
    VSYNC_FREQ, /// Pin is toggled at each VSYNC
    RENDER_TIME, /// Pin is high when frame rendering begins, low when finished
    FRAME_RATE, /// Pin is toggled when the frame buffers are swapped.
    MCU_ACTIVE  /// Pin is high when the MCU is doing work (i.e. not in idle task).
  } GPIO_ID;
 

Your VSYNC seems slow. Can you tweak the pixel clock to speed it up?

/Martin

ALomb
Senior

Hi @Martin KJELDSEN​ 

I had already modified the GPIO.cpp file for measurements.

The capture that I posted is related to the VSYNC_FREQ.

If I understand correctly, I can change the pixel clock via STM32Cube IDE Clock Configuration, as shown in the figure.

0690X00000AQqcxQAD.png

It's correct?

/Antonello

Martin KJELDSEN
Chief III

What i meant is that you can capture RENDER_TIME to find the time it takes to render an entire frame. You can use this to measure the time during transitions to get an idea.

Yes, you can change the clock like that, but through the derivative settings following the arrow (PLL).

/Martin

ALomb
Senior

Hi @Martin KJELDSEN​ ,

sorry for the delay in replying: I was trying to better understand VSYNC_FREQ, RENDER_TIME and FRAME_RATE from Measuring Performace Knowledge Base.

Anyway, I doubled pixel clock (from 24Mhz to 48Mhz) but "TopMenu" transaction does not seem to accelerate.

In the attached image, VSYNC_FREQ and RENDER_TIME when I "touch" to display slidemenu

/Anonello

Martin KJELDSEN
Chief III

That is a really long render time. Must be a really slow animation.

Do you have DMA2D configured to do these transfers? In a slidetransition we're transferring a lot of pixels, especially with your resolution.

/Martin

Martin KJELDSEN
Chief III

Can you go through your configuration again? QSPI, RAM, core clock speed, etc.

ALomb
Senior

Hi @Martin KJELDSEN​ ,

I checked and remade the configuration. You can also find the attached .ioc file.

Yes, the DMA2D is enabled, but I don't understand what you mean by "these transfers".

How could you see in the my video if no graphics are tracked the slidetransition speed is ok.

I also wanted to point out that the "slowdown" is also appreciated with the simulator on the PC

/Antonello