Bug 23198

Summary: nv50/NVS135M: video hangs/flickers when fullscreen
Product: xorg Reporter: Stefan Neufeind <freedesktop.org>
Component: Driver/nouveauAssignee: Nouveau Project <nouveau>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium CC: anssi, mschiffer
Version: 7.3 (2007.09)   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Stefan Neufeind 2009-08-07 06:43:09 UTC
Video played back through e.g. Miro, kaffeine or others works fine if run at a "reasonable" size. But running near fullscreen or switching to complete fullscreen-mode it soon after starts to hang/flicker.
Comment 1 Maarten Maathuis 2009-08-07 11:34:11 UTC
Could you give the output of "nvclock -i"?

What xserver are you using, are you running kms?
Comment 2 Stefan Neufeind 2009-08-22 06:00:38 UTC
Running packages from Fedora 11 (testing) including packages:
xorg-x11-server-utils-7.4-7.fc11.x86_64
xorg-x11-server-common-1.6.3-4.fc11.x86_64
xorg-x11-server-Xorg-1.6.3-4.fc11.x86_64

Not running kms (yet), since Fedora 11 doesn't have that by default (possible through kernelparameter nouveau.modeset=1). When turning it on other problems appear (e.g. external and notebook-internal display appear in wrong order, some smaller graphics-errors etc.). Might *activating* KMS help narrow down performance-problems or would you estimate that not running KMS might be the safer part for now which "should work"?

+++ nvclock -i
Xlib:  extension "NV-CONTROL" missing on display ":0.0".
-- General info --                                      
Card:           nVidia Quadro NVS 135M                  
Architecture:   G86 A2                                  
PCI id:         0x42b                                   
GPU clock:      297.000 MHz                             
Bustype:        PCI-Express                             

-- Shader info --
Clock: 594.000 MHz
Stream units: 16 (1b)
ROP units: 4 (1b)
-- Memory info --
Amount:         128 MB
Type:           128 bit DDR3
Clock:          302.400 MHz

-- PCI-Express info --
Current Rate:   16X
Maximum rate:   16X

-- Sensor info --
Sensor: GPU Internal Sensor
GPU temperature: 85C

-- VideoBios information --
Version: 60.86.68.00.16
Signon message: G86M G3-64 Briscoe sku0 VGA BIOS
Performance level 0: gpu 275MHz/shader 550MHz/memory 301MHz/1.15V/100%
Performance level 1: gpu 400MHz/shader 800MHz/memory 594MHz/1.15V/100%
VID mask: 7
Voltage level 0: 1.00V, VID: 4
Voltage level 1: 1.15V, VID: 0
Voltage level 2: 1.18V, VID: 2
Voltage level 3: 1.20V, VID: 3


+++ xvinfo
X-Video Extension version 2.2
screen #0                    
  Adaptor #0: "Nouveau GeForce 8/9 Textured Video"
    number of ports: 32
    port base: 57
    operations supported: PutImage
    supported visuals:
      depth 24, visualID 0x21
      depth 24, visualID 0x22
    no port attributes defined
    maximum XvImage size: 4096 x 4096
    Number of image formats: 3
      id: 0x32315659 (YV12)
        guid: 59563132-0000-0010-8000-00aa00389b71
        bits per pixel: 12
        number of planes: 3
        type: YUV (planar)
      id: 0x30323449 (I420)
        guid: 49343230-0000-0010-8000-00aa00389b71
        bits per pixel: 12
        number of planes: 3
        type: YUV (planar)
      id: 0x32595559 (YUY2)
        guid: 59555932-0000-0010-8000-00aa00389b71
        bits per pixel: 16
        number of planes: 1
        type: YUV (packed)
Comment 3 Matthias Schiffer 2010-01-31 14:22:02 UTC
I have the same problems with a completely different setup on my Ubuntu system.

xserver 1.7.99.2 + git 0cb638dc (but I had these problems with all versions since 1.6)
Kernel 2.6.33-rc5 + Nouveau git 5e660316 (but again, happens with all versions I have tested in the last 3 months)
xf86-video-nouveau git 2630a155

The problems occur whenever I set MPlayer to fullscreen on my 1920x1200 display. It happens with Metacity compositing enabled or disabled. My card is a 8400M GS, built into a Dell XPS M1330 notebook.

This bug is rather annoying, as it makes XV unusable on my display, but with MPlayer's x11 driver my computer is to slow to play hd videos. If you don't know why this happens, do you know where I can start debugging? I don't know much about the internals of the nouveau driver, but I consider myself a rather competent C programmer.


# nvclock -i
Xlib:  extension "NV-CONTROL" missing on display ":0.0".
-- General info --
Card: 		nVidia Geforce 8400M GS
Architecture: 	G86 A2
PCI id: 	0x427
GPU clock: 	216.000 MHz
Bustype: 	PCI-Express

-- Shader info --
Clock: 432.000 MHz
Stream units: 16 (1b)
ROP units: 4 (1b)
-- Memory info --
Amount: 	128 MB
Type: 		128 bit DDR3
Clock: 		351.000 MHz

-- PCI-Express info --
Current Rate: 	16X
Maximum rate: 	16X

-- Sensor info --
Sensor: GPU Internal Sensor
GPU temperature: 73C

-- VideoBios information --
Version: 60.86.45.00.40
Signon message: G86M G3-64 Thurman sku0 VGA BIOS
Performance level 0: gpu 275MHz/shader 550MHz/memory 301MHz/1.15V/100%
Performance level 1: gpu 400MHz/shader 800MHz/memory 600MHz/1.15V/100%
VID mask: 3
Voltage level 0: 1.00V, VID: 4
Voltage level 1: 1.15V, VID: 0
Voltage level 2: 1.18V, VID: 2
Voltage level 3: 1.20V, VID: 3


# xvinfo 
X-Video Extension version 2.2
screen #0
  Adaptor #0: "Nouveau GeForce 8/9 Textured Video"
    number of ports: 32
    port base: 63
    operations supported: PutImage 
    supported visuals:
      depth 24, visualID 0x21
      depth 24, visualID 0x22
    number of attributes: 2
      "XV_SET_DEFAULTS" (range 0 to 0)
              client settable attribute
      "XV_SYNC_TO_VBLANK" (range 0 to 1)
              client settable attribute
              client gettable attribute (current value is 1)
    maximum XvImage size: 4096 x 4096
    Number of image formats: 3
      id: 0x32315659 (YV12)
        guid: 59563132-0000-0010-8000-00aa00389b71
        bits per pixel: 12
        number of planes: 3
        type: YUV (planar)
      id: 0x30323449 (I420)
        guid: 49343230-0000-0010-8000-00aa00389b71
        bits per pixel: 12
        number of planes: 3
        type: YUV (planar)
      id: 0x32595559 (YUY2)
        guid: 59555932-0000-0010-8000-00aa00389b71
        bits per pixel: 16
        number of planes: 1
        type: YUV (packed)
Comment 4 Marcin Kościelnicki 2010-01-31 14:39:46 UTC
Try applying http://0x04.net/~mwk/gen.diff

This is known issue... the card is using only 1/8 of its execution resources because of misextracted initialization values on G86. It'll be fixed for good when the ctxprog/ctxvals generator [above] is finished for all cards.

If the generator doesn't work for you, add the following lines to src/nv50_accel.c in DDX after "OUT_RING  (chan, NV50TCL_COND_MODE_ALWAYS);":

BEGIN_RING(chan, tesla, NV50TCL_WARP_HALVES, 1);
OUT_RING(chan, 2);
BEGIN_RING(chan, tesla, 0x1400, 1);
OUT_RING(chan, 0xf);

Either way, please report which of these work for you.
Comment 5 Matthias Schiffer 2010-02-01 17:10:53 UTC
The first patch doesn't make any difference, the second one works well.
Comment 6 Marcin Kościelnicki 2010-02-02 08:45:00 UTC
Ummm... the first patch really should make some difference.... It should either speed up Xv, or crash and burn horribly.

Could you attach a kernel boot log with gen.diff applied?
Comment 7 Matthias Schiffer 2010-02-02 13:49:36 UTC
Oops, forgot to update initrd... the first patch works, too.
Comment 8 Marcin Kościelnicki 2010-02-24 21:27:53 UTC
Should be fixed in latest git.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.