[Mesa-dev] Very low framerate when recording desktop content in Weston using mesa git on Radeon 5770 (glReadPixels slow path)

Pekka Paalanen ppaalanen at gmail.com
Tue Mar 26 00:58:54 PDT 2013

On Tue, 26 Mar 2013 03:30:58 +0100
Rune Kjær Svendsen <runesvend at gmail.com> wrote:

> Marek, do you have an idea on where the currency bottleneck is?
> I just did a profiling with sysprof, zooming in on the desktop in Weston
> and moving the mouse wildly around, so that the buffer is completely
> changed for every frame. I got around 5 fps, which isn't *that* much, but
> still an order of magnitude better than without your patches.
> sysprof says there is 100% CPU usage, but unlike the previous 0.5-FPS
> recording, it's not in a single function, but spread out over several
> functions:
> 35% weston_recorder_frame_notify
> 11% __memcpy_ssse3
> 4.5% clear_page_c
> 4.3% output_run
> Although I'm not completely sure I'm reading the sysprof output right.
> weston_recorder_frame_notify, for example, has 35% CPU usage, but none of
> its child functions has any significant CPU usage. I presume the CPU usage
> in that function is from calling glReadPixels, although that's not apparent
> from sysprof:
> weston_recorder_frame_notify                                     39.15%
>  39.15%
>   - - kernel - -                                                  0.00%
> 0.01%
>     ret_from_intr                                                 0.00%
> 0.01%
>       __irqentry_text_start                                       0.00%

Well, if you look at weston_recorder_frame_notify function, it has a
naive loop over each single pixel it processes. component_delta() may
get inlined, and output_run() you saw in the profile.

I think it's possible it actually is weston_recorder_frame_notify
eating the CPU. Can you get more precise profiling, like hits per source
line or instruction?


More information about the mesa-dev mailing list