[mythtv] [mythtv-commits] Ticket #12311: tearing on full-screen video playback when 2D glamor accell is enabled
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
>> 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.
Whole issue addressed by me in #12311 is more-or-less about following
(I hope i'm reading mythtv code correctly)
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
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