[mythtv-commits] Ticket #12799: Improve OSD on Raspberry Pi
MythTV
noreply at mythtv.org
Fri Jun 17 15:49:07 UTC 2016
#12799: Improve OSD on Raspberry Pi
----------------------------+-----------------------------
Reporter: pbennett | Owner: pbennett
Type: Developer Task | Status: accepted
Priority: minor | Milestone: unknown
Component: Ports - rPi | Version: Master Head
Severity: medium | Resolution:
Keywords: | Ticket locked: 0
----------------------------+-----------------------------
Comment (by pbennett):
I have the OSD displaying with OpenGL ES on raspberry pi, using the
existing code that displays with OpenGL. All OSDs are displaying correctly
and with excellent detail, but there is a severe performance problem.
Playback is badly impacted when the OSD appears. Subtitles are the worst
offender. In general performance is much worse than with Software merge.
Investigation shows that the call to OSD::!DrawDirect is taking from 200
ms to 700 ms. Since this is done between frames in the frame rendering
thread, up to 21 frames are lost when an OSD appears or changes. CPU time
is not high so I suspect that the OpenGL calls are blocking.
Removing the call to glFlush improves performance, but not enough. With
this change, calls to OSD::!DrawDirect take from 50 ms to 200 ms.
Options:
1. Investigate further into which specific OGL operations are slow and try
to improve them.
2. Put OSD rendering in a separate thread. This may require a new osd
renderer object and ways of synchronizing information. Simply using the
existing OSD object in another thread does not work, for several reasons.
3. Use the OSD::Draw method instead, which draws into a memory image, and
then use OpenGL to display that image. The OSD::Draw is used by software
merge and is fast.
--
Ticket URL: <https://code.mythtv.org/trac/ticket/12799#comment:2>
MythTV <http://www.mythtv.org>
MythTV Media Center
More information about the mythtv-commits
mailing list