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