[mythtv] [mythtv-commits] Ticket #12311: tearing on full-screen video playback when 2D glamor accell is enabled

Warpme warpme at o2.pl
Mon Jan 12 20:03:10 UTC 2015

On 12/01/15 13:18, Michael T. Dean wrote:
> On 01/06/2015 04:17 PM, MythTV wrote:
>> #12311: tearing on full-screen video playback when 2D glamor accell 
>> is enabled
>> Comment (by warpme@…):
>>   Regarding windows coordinates (second hunk) - I was trying to 
>> address it
>>   with proper _playback window coordinates_ - but finally achieving this
>>   becomes beyond of my MythTV code knowledge. (I'm really missing that
>>   MythTV coding standard isn't forcing to comment by default...).
>>   First hunk (related to window size) seems to be already within hack
>>   (tv_play.cpp line1255). I don't know why in my system (X mode to TV 
>> set
>>   always to 1080p50), maxHeight = display_res->GetMaxHeight(); 
>> returns 1200.
>>   In all my those frontends with X modes lower than fullHD,
>>   display_res->GetMaxHeight() returns expected values. I suspect 
>> issue that
>>   1920x1080 display returns 1920x1200 is kind of bug....If it is bug 
>> - then
>>   currently I haven't better idea to overcome it....
Mike - I'm a bit confused how to properly read Your message.
Pls see in-line
> FWIW, if I'm parsing this correctly (you think your system has a 
> resolution of 1920x1080, but display_res->GetMaxHeight() returns 1200)
Well - I'm simply assuming: if my TV tells me I'm on 1920x1080p50 then 
Xserver is working with such res.
Is this correct assumption?
Also what about xrandr which reports: "Screen 0: minimum 320 x 200, 
current 1920 x 1080, maximum 16384 x 16384"
xwininfo reports "Root window extents: (0, 0)-(1920, 1080)"
For me it means: Xserver gfx operating area is 1920x1080.
I'm wrong here?
> it sounds like the typical "user is running some variant of Xinerama 
> and doesn't know it and doesn't tell MythTV."

How can I determine that I'm running with MergedFB on AMD E2100 platform 
I have single monitor connected.
Xrandr reports res. the same like res. reported by connected monitor.
Xorg server reports "connected" and EDID only for this monitor (no 
reports for 2 other outputs).
xwininfo reports "Root window extents: (0, 0)-(1920, 1080)" and this is 
equal to monitor reported res.
How running MergedFB will manifest here?
I believe - when MergedFB is running - first things to notice are: 
virtual screen and X root window aren't equal to monitor res.
I'm right here?
> The "variant of Xinerama" includes all of them (including nvidia 
> TwinView, AMD/ATI MergedFB, etc.), The "doesn't know it" typically 
> happens because your video card has multiple outputs (i.e. built-in 
> LCD in laptop and HDMI output or even multiple HDMI/DVI outputs) and X 
> auto-enables multiple even though a monitor isn't connected (or used) 
> on one or more.  The "doesn't tell MythTV" part means that the 
> Xinerama settings aren't specified, specifically:
You wrote "Xinerama settings aren't specified".
How can I specify such settings in MythTV?
> Display on screen
> Run on the specified screen or spanning all screens.
> Monitor aspect ratio
>  - 16:9
>  - 16:10
>  - 4:3
> The aspect ratio of a Xinerama display cannot be queried from the 
> display, so it must be specified.
> and the reason why it's important to do so is explained in the help 
> text of the 2nd setting.  These settings are in the Appearance 
> settings of mythfrontend, and only appear if you actually have 
> Xinerama enabled (have more than one screen).  If they appear, they 
> must be set or MythTV won't properly handle window-related settings.
> Mike
Whole issue addressed by me in #12311 is more-or-less about following 
(I hope i'm reading mythtv code correctly)
1.fullscreen mode
2.playback starts. mythtv asks X server what is screen size
3.My E2100 (connected to 1920x1080 TV) reports 1920x1200
4.mythtv passes this info to mythplayer
5.mythplayer plays 1920x1080 content within 1920x1072 window
6.as root window isn't 1:1 aligned to playback window - xserver can't 
skip glamor and go directly with page flipping (as it thinks there is 
another 1920x2 window). User has tearing as there is no V-sync driven 
page flipping.

Attached patch is prof-of-concept for hypothesis that root cause is 
wrong res. report from Xserver - as 'correcting' resolution from 
1920x1200 -> 1920x1080 makes all working OK (I mean tear-free playback)

Interesting is that Xserver reports wrong display_res->GetMaxHeight() 
only for my FullHD TV.
With other displays (1280x1024 and 1024x768 monitors) connected to this 
same hardware, display_res->GetMaxHeight() reports are OK.
I'm suspecting this is bug in Xserver.
If it is result of miss-config from my side - I would love to learn how 
to correct this....

BTW: issue that GUI starts on 0,0 while playback on -1,-1 is other issue...
Here unfortunately 0.27 behaves differently than master and #12311 is OK 
only for 0.27 :-(


More information about the mythtv-dev mailing list