Mir

Mir's compositor holds buffers (blocking clients) for the duration of the frame, even when not necessary.

Bug #1264934 reported by Daniel van Vugt
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mir
Fix Released
Medium
Daniel van Vugt
mir (Ubuntu)
Fix Released
Medium
Unassigned

Bug Description

RenderingOperator::operator() holds buffers (blocking clients) for the duration of the frame, even when not necessary.

From what I can tell, the holding of the buffer as a "resource" till after the SwapBuffers is required for some APIs, such as glEGLImageTargetTexture2DOES used by Mir "hardware" buffers.

However, Mir software buffers use a simple glTexImage2D which only does a synchronous copy of the data. So it's wasteful holding a reference to the buffer for any longer than the duration of the glTexImage2D call. This will directly affect the round-trip performance of mir_surface_swap_buffers() while bug 1253868 is unresolved.

So in theory, just making our "saved resources" logic a little smarter could significantly improve clients ability to meet frame deadlines.

Tags: performance

Related branches

summary: - RenderingOperator::operator() holds buffers (blocking clients for the
- duration of the frame, which is not always necessary for some surface
- types (like software)
+ RenderingOperator::operator() holds buffers (blocking clients) for the
+ duration of the frame, even when not necessary.
Revision history for this message
kevin gunn (kgunn72) wrote : Re: RenderingOperator::operator() holds buffers (blocking clients) for the duration of the frame, even when not necessary.

so this would only be for SW rendering ?

Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Yeah, only software buffers. So this does not affect touch at all.

Changed in mir:
assignee: nobody → Daniel van Vugt (vanvugt)
importance: Undecided → Medium
Changed in mir:
status: New → Triaged
description: updated
summary: - RenderingOperator::operator() holds buffers (blocking clients) for the
- duration of the frame, even when not necessary.
+ Mir's compositor holds buffers (blocking clients) for the duration of
+ the frame, even when not necessary.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :

Fix committed into lp:mir at revision None, scheduled for release in mir, milestone 0.10.0

Changed in mir:
status: Triaged → Fix Committed
Changed in mir:
status: Fix Committed → Triaged
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Actually the attached swap-then-flip branch solves about 98% of this bug. So close enough.

Changed in mir:
status: Triaged → Fix Committed
milestone: none → 0.10.0
Changed in mir:
status: Fix Committed → Fix Released
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

mir (0.10.0+15.04.20150107.2-0ubuntu1) vivid; urgency=medium

Changed in mir (Ubuntu):
importance: Undecided → Medium
status: New → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.