Frame rate drops dramatically with high resolution on embedded device using EGL backend



My team and I working on porting clutter to an embedded linux system which requires using the EGL backend (CLUTTER_BACKEND=eglnative). I created a test application that renders a number of playing card images and scrolls them around the scene. When doing this at a resolution of 300x200 everything ran perfectly fine. CLUTTER_SHOW_FPS shows a frame rate varying around 60fps. However, as we increase the resolution, the frame rate drops dramatically. At our target resolution of 1920x1080, the frame rate completely tanked, dropping to an average of about 15fps. The frame rate is low with or without animations running. In addition, the high resolution version exhibits noticeable visual tearing. 

At first my assumption was that OpenGLES2 was not being used to render, since, as I understand it, OpenGL uses double buffering and should not cause tearing. So we ran the same test using one of the Cogl samples (cogl-gles-gears), with its resolution turned up to 1920x1080, but the same thing happened: dramatic decrease in frame rate and noticeable tearing.

We've tested implementations of the same card scrolling app in several other gui frameworks on the same device, at the same resolution, and none of them exhibited this problem. Qt, for example, ran smoothly at around 60fps with no tearing.

Does anyone have any insight into what might cause this? Could it have to do with the 'experimental' nature of the EGL backend? What could cause the tearing when rendering with OpenGL?

Here are some samples of the frame rate reported by cogl-gles-gears at different resolutions:

1920x1080 => ~16fps
1280x720 => ~32fps
854x480 => ~55fps


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]