Page 1 of 3 123 LastLast
Results 1 to 10 of 27

Thread: TEARING - dreaming of tearfree on lvds with Intel gma950

  1. #1
    Join Date
    Jan 2009
    Posts
    6

    Default TEARING - dreaming of tearfree on lvds with Intel gma950

    System: MSI megabook, Intel 945gm / gma950 integrated graphics.

    The dream: tear-free video playback.

    For those who've not seen tearing / don't know what it is, perhaps you best stop reading, lest you find out your system suffers from it as well.

    As with some other problems, once you notice this one, you always will and it will really annoy you where perhaps it didn't before.

    First question: if you have a laptop with Intel GMA950 graphics and you know tearing when you see it, do you see it on your laptop also?

    In short, I've had this laptop for over 2 years, and have messed with linux since 10, and so I know more about modelines than all youngsters who shout "you should switch to Ubuntu" (I'm using Mandriva, thanks for asking) do, but apparently not enough...

    The problem:
    video playback is showing tearing, which is only clearly visible as usual during sideways panning camera shots or large objects moving sideways.

    This happens with mplayer and xine, with opengl and xv, and naturally whenever I go to slow motion playback, the problem is alleviated, at pause it is naturally absent.

    The things I've tried:
    - changing display refresh rates
    - played with the relatively new LVDSFixedMode option - see below for the reasoning and manpage excerpt
    - tried to select only the external vga connection (didn't manage)

    First indication of LVDSFixedMode in the man page (man intel):
    Code:
           Option "LVDSFixedMode" "boolean"
                  Use  a  fixed set of timings for the LVDS output, independent of
                  normal xorg  specified  timings.   The  default  value  if  left
                  unspecified  is  true, which is what you want for a normal LVDS-
                  connected LCD type of panel.  If you are not  sure  about  this,
                  leave  it  at  its default, which allows the driver to automati‐
                  cally figure out the correct fixed panel timings.   See  further
                  in the section about LVDS fixed timing for more information.

    Seems like that's what I may need; later there is more info on this:

    Code:
    HARDWARE LVDS FIXED TIMINGS AND SCALING
           Following here is a discussion that  should  shed  some  light  on  the
           nature and reasoning behind the LVDSFixedMode option.
    
           Unlike a CRT display, an LCD has a "native" resolution corresponding to
           the actual pixel geometry.  A graphics controller under all normal cir‐
           cumstances  should  always  output that resolution (and timings) to the
           display.  Anything else and the image might not fill  the  display,  it
           might  not be centered, or it might have information missing - any man‐
           ner of strange effects can happen if an LCD panel is not fed  with  the
           expected resolution and timings.
    
           However  there are cases where one might want to run an LCD panel at an
           effective resolution other than the native one.  And for  this  reason,
           GPUs  which  drive  LCD  panels  typically include a hardware scaler to
           match the user-configured frame buffer size to the actual size  of  the
           panel.   Thus when one "sets" his/her 1280x1024 panel to only 1024x768,
           the GPU happily configures a 1024x768 frame buffer, but  it  scans  the
           buffer  out  in such a way that the image is scaled to 1280x1024 and in
           fact sends 1280x1024 to the panel.  This is normally invisible  to  the
           user;  when  a "fuzzy" LCD image is seen, scaling like this is why this
           happens.
           In order to make this magic work, this driver logically has to be  con‐
           figured with two sets of monitor timings - the set specified (or other‐
           wise determined) as the normal xorg "mode",  and  the  "fixed"  timings
           that are actually sent to the monitor.  But with xorg, it's only possi‐
           ble to specify the first user-driven set, and not the second fixed set.
           So  how  does  the  driver  figure out the correct fixed panel timings?
           Normally it will attempt to detect the fixed timings,  and  it  uses  a
           number  of  strategies  to  figure this out.  First it attempts to read
           EDID data from whatever is connected to the LVDS port.   Failing  that,
           it  will check if the LVDS output is already configured (perhaps previ‐
           ously by the video BIOS) and will adopt those settings if found.  Fail‐
           ing that, it will scan the video BIOS ROM, looking for an embedded mode
           table from which it can infer the proper timings.  If even that  fails,
           then  the  driver  gives  up, prints the message "Couldn't detect panel
           mode.  Disabling panel" to the X server log, and shuts  down  the  LVDS
           output.
    
           Under  most  circumstances,  the detection scheme works.  However there
           are cases when it can go awry.  For example, if you have a panel  with‐
           out  EDID  support and it isn't integral to the motherboard (i.e. not a
           laptop), then odds are the driver is either not going to find something
           suitable  to use or it is going to find something flat-out wrong, leav‐
           ing a messed up display.  Remember that this is about the fixed timings
           being  discussed  here  and  not  the  user-specified timings which can
           always be set in xorg.conf in the worst case.   So  when  this  process
           goes awry there seems to be little recourse.  This sort of scenario can
           happen in some embedded applications.
    
           The LVDSFixedMode option is present to deal  with  this.   This  option
           normally  enables the above-described detection strategy.  And since it
           defaults to true, this is in fact what normally  happens.   However  if
           the detection fails to do the right thing, the LVDSFixedMode option can
           instead be set to false, which disables all the magic.  With LVDSFixed‐
           Mode  set to false, the detection steps are skipped and the driver pro‐
           ceeds without a specified fixed mode  timing.   This  then  causes  the
           hardware  scaler  to be disabled, and the actual timings then used fall
           back to those normally configured via the usual xorg mechanisms.
    
           Having LVDSFixedMode set to false means that whatever is used  for  the
           monitor's  mode  (e.g. a modeline setting) is precisely what is sent to
           the device connected to the LVDS port.  This also means that  the  user
           now  has to determine the correct mode to use - but it's really no dif‐
           ferent than the work for correctly configuring an old-school  CRT  any‐
           way,  and the alternative if detection fails will be a useless display.
    
           In short, leave LVDSFixedMode alone (thus set to true) and normal fixed
           mode  detection will take place, which in most cases is exactly what is
           needed.  Set LVDSFixedMode to false and then the user has full  control
           over  the  resolution  and  timings  sent to the LVDS-connected device,
           through the usual means in xorg.

    Well, seems like that could explain what goes wrong for me.

    Now the problem is: I can't seem to get any modeline accepted by the driver if I turn off LVDSFixedMode, the xorg log file just reports any ddc found modelines and uses that, but the resulting X still shows tearing, or without ddc xorg runs into the 'no screens found' situation...

  2. #2
    Join Date
    Jan 2009
    Posts
    6

    Default

    FYI, my xorg.conf (sorry, I did hack it for quite a bit) :
    Code:
    # File generated by XFdrake (rev 247269)
    
    # **********************************************************************
    # Refer to the xorg.conf man page for details about the format of
    # this file.
    # **********************************************************************
    
    Section "ServerFlags"
        #DontZap # disable <Ctrl><Alt><BS> (server abort)
        AllowMouseOpenFail # allows the server to start up even if the mouse does not work
        #DontZoom # disable <Ctrl><Alt><KP_+>/<KP_-> (resolution switching)
    EndSection
    
    Section "Module"
        Load "dbe" # Double-Buffering Extension
        Load "v4l" # Video for Linux
        Load "extmod"
        Load "type1"
        Load "freetype"
        Load "glx" # 3D layer
        Load "dri" # direct rendering
    EndSection
    
    Section "InputDevice"
        Identifier "Keyboard1"
        Driver "kbd"
        Option "XkbModel" "pc105"
        Option "XkbLayout" "us(alt-intl)"
        Option "XkbOptions" "compose:rwin"
    EndSection
    
    Section "InputDevice"
        Identifier "Mouse1"
        Driver "mouse"
        Option "Protocol" "ExplorerPS/2"
        Option "Device" "/dev/mouse"
    EndSection
    
    Section "Monitor"
        Identifier "monitor1"
        VendorName "Generic"
        ModelName "Flat Panel 1280x800"
        HorizSync 31.5-90
        VertRefresh 60
    
        Modeline "1280x800_75"   75.00  1280 1301 1333 1408  800 804 808 816 -hsync -vsync
        #added RT:
    
        # Monitor preferred modeline (65.3 Hz vsync, 53.3 kHz hsync, ratio 16/10)
        ModeLine "1280x800" 75 1280 1301 1333 1408 800 804 808 816 +hsync +vsync
        Modeline "1280x800_65.00"  91.61  1280 1352 1488 1696  800 801 804 831  -HSync +Vsync
    
        # TV fullscreen mode or DVD fullscreen output.
        # 768x576 @ 79 Hz, 50 kHz hsync
        ModeLine "768x576"     50.00  768  832  846 1000   576  590  595  630
    
        # 768x576 @ 100 Hz, 61.6 kHz hsync
        ModeLine "768x576"     63.07  768  800  960 1024   576  578  590  616
    
        # modeline generated by gtf(1) [handled by XFdrake]
        ModeLine "1280x800_120"  181.21  1280 1376 1520 1760  800 801 804 858  -HSync +Vsync
    
        # modeline generated by gtf(1) [handled by XFdrake]
        ModeLine "1280x800_100"  147.89  1280 1376 1512 1744  800 801 804 848  -HSync +Vsync
    
        # modeline generated by gtf(1) [handled by XFdrake]
        ModeLine "1280x800_85"  123.38  1280 1368 1504 1728  800 801 804 840  -HSync +Vsync
    
        # modeline generated by gtf(1) [handled by XFdrake]
        #ModeLine "1280x800_75"  107.21  1280 1360 1496 1712  800 801 804 835  -HSync +Vsync
    
        # modeline generated by gtf(1) [handled by XFdrake]
        #ModeLine "1280x800_60"  83.46  1280 1344 1480 1680  800 801 804 828  -HSync +Vsync
        ModeLine "1280x800_60"  83.46  1280 1344 1480 1680  800 801 804 828  +HSync +Vsync
        # modeline generated by gtf(1) [handled by XFdrake]
        ModeLine "1280x800_50"  68.56  1280 1336 1472 1664  800 801 804 824  -HSync +Vsync
    EndSection
    
    Section "Monitor"
       Identifier "mon0"
       VendorName "Generic"
       ModelName "Flat Panel 1280x800"
       HorizSync 31.5-90
       VertRefresh 60
    EndSection
    
    Section "Device"
        Identifier "device1"
        VendorName "Intel Corporation"
        BoardName "Intel 810 and later"
        Driver "intel"
        #Option "DPMS"
        #next option for 2d mem allocation
        #Option "CacheLines" "16384"
        #next option for xvmc - needs xvmc config file with abs path to libintelxvmc.so file
        #Option "XvMC" "true"
        Option "DDC" "off"
        Option "ForceEnablePipeA" "off"
        Option "LVDSFixedMode" "false"
        #Option "AccelMethod" "EXA"
        Option "AccelMethod" "XAA"
        Option "monitor-LVDS" "monitor1"
        Option "monitor-VGA" "mon0"
        Option "XaaNoOffscreenPixmaps" "true"
    EndSection
    
    Section "Screen"
        Identifier "screen1"
        Device "device1"
        Monitor "monitor1"
        DefaultColorDepth 24
    
        Subsection "Display"
            Depth 8
            Modes "1280x800"
        EndSubsection
    
        Subsection "Display"
            Depth 15
            Modes "1280x800"
        EndSubsection
    
        Subsection "Display"
            Depth 16
            Modes "1280x800"
        EndSubsection
    
        Subsection "Display"
            Depth 24
            Modes "1280x800" "1280x800_75" "1280x800_65.00" "1280x800_60" "1280x800_50" #"1280x800"
        EndSubsection
    EndSection
    
    Section "ServerLayout"
        Identifier "layout1"
        InputDevice "Keyboard1" "CoreKeyboard"
        InputDevice "Mouse1" "CorePointer"
        Screen "screen1"
    EndSection
    
    Section "DRI"
        Mode 0666
    EndSection

  3. #3
    Join Date
    Jan 2009
    Posts
    6

    Default

    and the resulting log file (minus some non-essential parts that made it too long for this board):
    Code:
    X.Org X Server 1.4.2
    Release Date: 11 June 2008
    X Protocol Version 11, Revision 0
    Build Operating System: Linux_2.6.22.12-server-1mdv Mandriva
    Current Operating System: Linux madeira 2.6.27.7-desktop-1mnb #1 SMP Thu Dec 11 17:28:52 EST 2008 x86_64
    Build Date: 25 August 2008  03:06:29PM
    
            Before reporting problems, check http://qa.mandriva.com
            to make sure that you have the latest version.
    Module Loader present
    
    
    (==) Log file: "/var/log/Xorg.3.log", Time: Sat Jan  3 00:53:29 2009
    (==) Using config file: "/etc/X11/xorg.conf"
    (==) ServerLayout "layout1"
    (**) |-->Screen "screen1" (0)
    (**) |   |-->Monitor "monitor1"
    (**) |   |-->Device "device1"
    (**) |-->Input Device "Keyboard1"
    (**) |-->Input Device "Mouse1"
    (**) Option "AllowMouseOpenFail"
    (==) Automatically adding devices
    (==) Automatically enabling devices
    (==) No FontPath specified.  Using compiled-in default.
    (==) FontPath set to:
            catalogue:/etc/X11/fontpath.d
    (==) RgbPath set to "/usr/share/X11/rgb"
    (==) ModulePath set to "/usr/lib64/xorg/modules"
    (II) Open ACPI successful (/var/run/acpid.socket)
    (II) Loader magic: 0x7bf120
    (II) Module ABI versions:
            X.Org ANSI C Emulation: 0.3
            X.Org Video Driver: 2.0
            X.Org XInput driver : 2.0
            X.Org Server Extension : 0.3
            X.Org Font Renderer : 0.5
    (II) Loader running on linux
    (II) LoadModule: "pcidata"
    (II) Loading /usr/lib64/xorg/modules//libpcidata.so
    (II) Module pcidata: vendor="X.Org Foundation"
            compiled for 1.4.2, module version = 1.0.0
            ABI class: X.Org Video Driver, version 2.0
    (++) using VT number 9
    
    (II) PCI: PCI scan (all values are in hex)
    (II) PCI: 00:00:0: chip 8086,27a0 card 1462,0571 rev 03 class 06,00,00 hdr 00
    
    (II) PCI: 03:00:0: chip 10ec,8168 card 1462,0571 rev 01 class 02,00,00 hdr 00
    (II) PCI: End of PCI scan
    (II) Intel Bridge workaround enabled
    (II) Host-to-PCI bridge:
    (II) Bus 0: bridge is at (0:0:0), (0,0,4), BCTRL: 0x0008 (VGA_EN is set)
    (II) Bus 0 I/O range:
            [0] -1  0       0x00000000 - 0x0000ffff (0x10000) IX[B]
    
    
    (II) PCI-to-ISA bridge:
    (II) Bus -1: bridge is at (0:31:0), (0,-1,-1), BCTRL: 0x0008 (VGA_EN is set)
    (--) PCI:*(0:2:0) Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller rev 3, Mem @ 0xffe80000/19, 0xd0000000/28, 0xffe40000/18, I/O @ 0xec00/3
    (--) PCI: (0:2:1) Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller rev 3, Mem @ 0xffd80000/19
    (II) Addressable bus resource ranges are
            [0] -1  0       0x00000000 - 0xffffffff (0x100000000) MX[B]
    
    
            [29] -1 0       0x0000ec00 - 0x0000ec07 (0x8) IX[B](B)
    
    
    II) LoadModule: "dbe"
    (II) Loading /usr/lib64/xorg/modules/extensions//libdbe.so
    (II) Module dbe: vendor="X.Org Foundation"
            compiled for 1.4.2, module version = 1.0.0
            Module class: X.Org Server Extension
            ABI class: X.Org Server Extension, version 0.3
    (II) Loading extension DOUBLE-BUFFER
    (II) LoadModule: "v4l"
    (II) Loading /usr/lib64/xorg/modules/drivers//v4l_drv.so
    (II) Module v4l: vendor="X.Org Foundation"
            compiled for 1.4.2, module version = 0.1.1
            ABI class: X.Org Video Driver, version 2.0
    (II) LoadModule: "extmod"
    (II) Loading /usr/lib64/xorg/modules/extensions//libextmod.so
    (II) Module extmod: vendor="X.Org Foundation"
            compiled for 1.4.2, module version = 1.0.0
            Module class: X.Org Server Extension
            ABI class: X.Org Server Extension, version 0.3
    (II) Loading extension SHAPE
    
    
    (II) Loading extension X-Resource
    (II) LoadModule: "type1"
    (II) Loading /usr/lib64/xorg/modules/fonts//libtype1.so
    (II) Module type1: vendor="X.Org Foundation"
            compiled for 1.4.2, module version = 1.0.2
            Module class: X.Org Font Renderer
            ABI class: X.Org Font Renderer, version 0.5
    (II) Loading font Type1
    (II) LoadModule: "freetype"
    (II) Loading /usr/lib64/xorg/modules/fonts//libfreetype.so
    (II) Module freetype: vendor="X.Org Foundation & the After X-TT Project"
            compiled for 1.4.2, module version = 2.1.0
            Module class: X.Org Font Renderer
            ABI class: X.Org Font Renderer, version 0.5
    (II) Loading font FreeType
    (II) LoadModule: "glx"
    (II) Loading /usr/lib64/xorg/modules/extensions//libglx.so
    (II) Module glx: vendor="X.Org Foundation"
            compiled for 1.4.2, module version = 1.0.0
            ABI class: X.Org Server Extension, version 0.3
    (==) AIGLX enabled
    (II) Loading extension GLX
    (II) LoadModule: "dri"
    (II) Loading /usr/lib64/xorg/modules/extensions//libdri.so
    (II) Module dri: vendor="X.Org Foundation"
            compiled for 1.4.2, module version = 1.0.0
            ABI class: X.Org Server Extension, version 0.3
    (II) Loading extension XFree86-DRI
    (II) LoadModule: "record"
    (II) Loading /usr/lib64/xorg/modules/extensions//librecord.so
    (II) Module record: vendor="X.Org Foundation"
            compiled for 1.4.2, module version = 1.13.0
            Module class: X.Org Server Extension
            ABI class: X.Org Server Extension, version 0.3
    (II) Loading extension RECORD
    (II) LoadModule: "intel"
    (II) Loading /usr/lib64/xorg/modules/drivers//intel_drv.so
    (II) Module intel: vendor="X.Org Foundation"
            compiled for 1.4.2, module version = 2.4.2
            Module class: X.Org Video Driver
            ABI class: X.Org Video Driver, version 2.0
    (II) LoadModule: "kbd"
    (II) Loading /usr/lib64/xorg/modules/input//kbd_drv.so
    (II) Module kbd: vendor="X.Org Foundation"
            compiled for 1.4.2, module version = 1.3.1
            Module class: X.Org XInput Driver
            ABI class: X.Org XInput driver, version 2.0
    (II) LoadModule: "mouse"
    (II) Loading /usr/lib64/xorg/modules/input//mouse_drv.so
    (II) Module mouse: vendor="X.Org Foundation"
            compiled for 1.4.2, module version = 1.3.0
            Module class: X.Org XInput Driver
            ABI class: X.Org XInput driver, version 2.0
    (II) v4l driver for Video4Linux
    (II) intel: Driver for Intel Integrated Graphics Chipsets: i810,
            i810-dc100, i810e, i815, i830M, 845G, 852GM/855GM, 865G, 915G,
            E7221 (i915), 915GM, 945G, 945GM, 945GME, 965G, G35, 965Q, 946GZ,
            965GM, 965GME/GLE, G33, Q35, Q33,
            Mobile Intel® GM45 Express Chipset,
            Intel Integrated Graphics Device, G45/G43, Q45/Q43, G41
    (II) Primary Device is: PCI 00:02:0
    (--) Assigning device section with no busID to primary device
    (WW) intel: No matching Device section for instance (BusID PCI:0:2:1) found
    (--) Chipset 945GM found
    (II) resource ranges after xf86ClaimFixedResources() call:
            [0] -1  0       0x00100000 - 0x3fffffff (0x3ff00000) MX[B]E(B)
    
    
            [34] 0  0       0x000003c0 - 0x000003df (0x20) IS[B]
    (II) Setting vga for screen 0.
    (II) Loading sub module "int10"
    (II) LoadModule: "int10"
    (II) Loading /usr/lib64/xorg/modules//libint10.so
    (II) Module int10: vendor="X.Org Foundation"
            compiled for 1.4.2, module version = 1.0.0
            ABI class: X.Org Video Driver, version 2.0
    (II) Loading sub module "vbe"
    (II) LoadModule: "vbe"
    (II) Loading /usr/lib64/xorg/modules//libvbe.so
    (II) Module vbe: vendor="X.Org Foundation"
            compiled for 1.4.2, module version = 1.1.0
            ABI class: X.Org Video Driver, version 2.0
    (II) Loading sub module "vgahw"
    (II) LoadModule: "vgahw"
    (II) Loading /usr/lib64/xorg/modules//libvgahw.so
    (II) Module vgahw: vendor="X.Org Foundation"
            compiled for 1.4.2, module version = 0.1.0
            ABI class: X.Org Video Driver, version 2.0
    (**) intel(0): Depth 24, (--) framebuffer bpp 32
    (==) intel(0): RGB weight 888
    (==) intel(0): Default visual is TrueColor
    (**) intel(0): Option "AccelMethod" "XAA"
    (**) intel(0): Option "LVDSFixedMode" "false"
    (**) intel(0): Option "ForceEnablePipeA" "off"
    (II) intel(0): Integrated Graphics Chipset: Intel(R) 945GM
    (--) intel(0): Chipset: "945GM"
    (--) intel(0): Linear framebuffer at 0xD0000000
    (--) intel(0): IO registers at addr 0xFFE80000
    (II) intel(0): 2 display pipes available.
    (**) intel(0): Using XAA for acceleration
    (II) Loading sub module "int10"
    (II) LoadModule: "int10"
    (II) Reloading /usr/lib64/xorg/modules//libint10.so
    (II) intel(0): initializing int10
    (WW) intel(0): Bad V_BIOS checksum
    (II) intel(0): Primary V_BIOS segment is: 0xc000
    (II) intel(0): VESA BIOS detected
    (II) intel(0): VESA VBE Version 3.0
    (II) intel(0): VESA VBE Total Mem: 7872 kB
    (II) intel(0): VESA VBE OEM: Intel(r) 82945GM Chipset Family Graphics Chip Accelerated VGA BIOS
    (II) intel(0): VESA VBE OEM Software Rev: 1.0
    (II) intel(0): VESA VBE OEM Vendor: Intel Corporation
    (II) intel(0): VESA VBE OEM Product: Intel(r) 82945GM Chipset Family Graphics Controller
    (II) intel(0): VESA VBE OEM Product Rev: Hardware Version 0.0
    (II) Loading sub module "ddc"
    (II) LoadModule: "ddc"(II) Module "ddc" already built-in
    (II) Loading sub module "i2c"
    (II) LoadModule: "i2c"(II) Module "i2c" already built-in
    (II) intel(0): Output VGA using monitor section mon0
    (II) intel(0): I2C bus "CRTDDC_A" initialized.
    (II) intel(0): Output LVDS using monitor section monitor1
    (II) intel(0): I2C bus "LVDSDDC_C" initialized.
    (II) intel(0): Skipping any attempt to determine panel fixed mode.
    (**) intel(0): Option "ddc" "off"
    (II) intel(0): Output VGA disconnected
    (II) intel(0): Output LVDS connected
    (EE) intel(0): Output LVDS enabled but has no modes
    (EE) intel(0): No valid modes.
    (II) UnloadModule: "intel"
    (II) UnloadModule: "int10"
    (II) UnloadModule: "vgahw"
    (II) Unloading /usr/lib64/xorg/modules//libvgahw.so
    (II) UnloadModule: "vbe"
    (II) Unloading /usr/lib64/xorg/modules//libvbe.so
    (II) UnloadModule: "int10"
    (II) Unloading /usr/lib64/xorg/modules//libint10.so
    (EE) Screen(s) found, but none have a usable configuration.
    
    Fatal server error:
    no screens found

  4. #4
    Join Date
    Oct 2008
    Location
    Sweden
    Posts
    983

    Default

    I don't think it's something that simply can be configured away...

    One of the goals for version 2.5 of the driver was to resolve the tearing problems, but it was unfortunately not the case,

    Jesse Barnes had this to say about it:
    Item (4) was the main thing we missed this time (Nanhai has been working
    flat out to get MPEG2 offload working so we didn't get a chance to try
    different approaches for vblank sync'ing). I think the real fix here will
    be DRI2, which should allow us to run compositing managers in DRI mode,
    with real vblank sync'ing for all their drawing.
    http://lists.freedesktop.org/archive...er/039555.html

  5. #5
    Join Date
    Nov 2007
    Posts
    65

    Default

    I would like to add that it seems (from the information in the beginning of this thread) that LVDSFixedMode could be used to alleviate video stuttering (not tearing) by setting the output frequency to the display to exactly a multiple of 23.976 when watching movies and such. I've previously used an nvidia card to do this because it will accept modelines in xorg.conf as overrides directly.

  6. #6
    Join Date
    Jan 2009
    Posts
    1

    Default

    The workaround for me is using the hardware overlay:
    Just type xvinfo in console and find the port base of video overlay.
    Code:
                                   
      Adaptor #1: "Intel(R) Video Overlay"                      
        number of ports: 1                                      
        port base: 82                                           
        operations supported: PutImage
    Now just use for example in mplayer:

    Code:
    mplayer -vo xv:port=82 video.avi
    Or set the port in your player preferences!

  7. #7
    Join Date
    Jan 2009
    Posts
    6

    Default

    Thanks a lot for the responses!

    1 )
    as usual after posting about my issues, in this case to feed modelines to the system and have those accepted, I managed to fix that part myself - I simply had to give a wide range for the vertical refresh, instead of just putting/keeping 60.
    As long as DDC is used, Xorg will not care too much, but as soon as DDC was off, Xorg realised that the modelines were not really exactly 60 Hz, so it found no modes...

    2 )
    I tried the direct method of playing to the port (in my case 97), it played in the same tearing way as usual... :-(

    3 )
    I took a multiple of 3 of the 23.976 Hz, and also 50 Hz (to see if it looks different), nothing worked differently from before...

    BTW I also tried XShm and such, not just xv.


    So does this really means Linux + Intel + xorg sucks that much that even proper video playback is out of reach?
    BTW on my gigabyte 780G I had big problems fighting tearing as well, finally I only got it working ok with gl, not xv.


    After years of Nvidia, I just didn't realise others were so much behind - and I so really want a fully Free system.

  8. #8
    Join Date
    Oct 2008
    Location
    Sweden
    Posts
    983

    Default

    Quote Originally Posted by aRTee View Post
    So does this really means Linux + Intel + xorg sucks that much that even proper video playback is out of reach?
    At the moment, I guess that's the case.

    But, DRI2 isn't that far away, and if Compiz can be run with vblank sync (see my previous comment) things should look a lot better.

    If you want a better answer, I suggest you ask on the xorg mailing list what the plans are for getting rid of tearing (there doesn't seem to be an open bug about it).

  9. #9
    Join Date
    Oct 2008
    Location
    Sweden
    Posts
    983

    Default

    Looks like somebody already asked this about a month back...
    Code:
    > Are there any options that I can enable in my xorg.conf to help
    > reduce/eliminate this tearing? Or is this simply a hardware limitation?
    > Can XvMC somehow help me here?
    
    There aren't any options at this point, but I'm wondering -- is this
    full-screen? If we made full-screen Xv operations block until vblank
    (which would lock up the X server), would that be an acceptable option?
    
    It's actually very easy to do, just stick a 'wait for vblank' command
    into the ring right before the 'copy the new picture' command in the Xv
    extension code. It's just annoying when you're watching a tiny movie and
    your whole session stops responding.
    From http://lists.freedesktop.org/archive...er/000746.html


    I also noticed something else; there was actually a wait for vblank patch committed to xf86-video-intel a while ago. But it was promptly revereted as it didn't support multiple clients. If that doesn't bother you, you might want to try the patch and see if it works.

  10. #10
    Join Date
    Oct 2007
    Posts
    370

    Default

    you just need to switch to overlay xv.. you may need an xorg setting to enable overlay support in xv... it wont work with compositing right now though.

    try the port base some more.. check port with xvinfo.

    you can see if you are using xv by dragging the window around and see if it lags somewhat behind with blue borders...

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •