744 views
in System Integration by
Hi,

We are using the generic Embedded Wizard package for our GUI application running on iMXRT (1050).

We are trying to measure the FPS and frame times of the application and see that we reach upto 200 frames per second (~4ms per frame). The display used has 60 Hz refresh rate and we use double buffering.

Questions:

- How is it possible to reach higher than 60FPS (with 60Hz display)? Does EmbWiz framework keep drawing to the backbuffer or does it wait after each frame for vsync? We do not see any tearing effect however.

- How is the setup for wait on vsync done? we have not done any specific configuration to wait for vsync. Is this handled internally?

Thanks in advance for the answer

1 Answer

0 votes
by
 
Best answer

Hello,

just to confirm: You are using the Generic Platform Package on a iMX RT1050 target? Maybe it is better to use the iMX RT Platform Package and our ready-to-use Build Environment for IMXRT1050-EVKB - there you will find the display initialization and v-synchroneous screen update within the file /TargetSpecifc/ew_bsp_display.c.

I think this will be much more easy than porting the Generic PP. 

Additional remark: The iMX RT Platform Package is already prepared to use the Pixelpipeline (PXP) hardware of the i.MX target.

Best regards,

Manfred. 

by

Dear Manfred,

Thanks for the answer and sorry for the incorrect information I provided. We are indeed using the iMXRT package from the link you specified. As we are using the evaluation version, we misunderstood this to be a generic package.

Coming back to the question,

- I referred the ew_bsp_display.c and could see that at the end of every Update, the ewrtgfx requests for framebuffer swap which in turn waits on vysnc. This means that for a 60Hz display we should not be reaching more than 60 FPS. Can you please give us a hint as to why we get upto 200FPS? (For FPS, we increase frame count at the end of every Update in the EmWiMainLoop and compute the number of frames after every 1 second)

- Additional question, which aspects of the PXP are used by the iMXRT package? Is it only for blitting. Our understanding is that the rendering is done by the CPU.

Thanks,

Hemant
by

Hello Hemant,

are you analyzing the resulting frame rate in fps according to this article?

In case you get more frames per second than the display can reach, it might be the case that you are not using double buffering for some reason...

Please check if the function EwBspSetFramebufferAddress() is called. This is only the case when double buffering is used.

Concerning PXP: Every drawing operation that is supported by the PXP is redirected to the hardware, e.g. in case of RGB565 color format the fill, copy and blend operations of native bitmaps are accelerated.

Best regards,

Manfred.

by
Hi Manfred,

Thanks a lot for the explanation.

Using the method described in the link yields correct results and we get the number of updates from application which does not exceed 60.

I figured out what was done wrong in our measurement. The place where we updated the framecounter was incorrect. We have corrected this now to update the framecounter only after the Update() call in EmWiLoop. Earlier this was not the case. With this change the FPS does not exceed 60.

Thanks again for the valuable hints.

Regards,

Hemant

Ask Embedded Wizard

Welcome to the question and answer site for Embedded Wizard users and UI developers.

Ask your question and receive answers from the Embedded Wizard support team or from other members of the community!

Embedded Wizard Website | Privacy Policy | Imprint

...