Bug 26612

Summary: nv driver gives only black screen and mouse pointer for Geforce 8300 GS
Product: xorg Reporter: zebulon <zebul666>
Component: Driver/nVidia (open)Assignee: Aaron Plattner <aplattner>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium CC: aplattner, ku.b
Version: 7.5 (2009.10)   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
Xorg.0.log none

Description zebulon 2010-02-17 11:33:22 UTC
when i try to use the nv driver with my Geforce 8300 GS (on an inspiron 531, athlon XP 4400+, archlinux), i got only a black screen and a mouse pointer.

at first, i thought it might gdm, so i run a bare fluxbox via startx (with exec fluxbox & in ~/.xinitrc) and i still get only a black screen with a mouse pointer. I have also rebooted to be sure not to have nvidia module loaded.

moreover, if i run an xterm from another console (DISPLAY=:0 xterm) it seems to work but i still see nothing on my X display. when i hover my mouse, i see the pointer changing shape to a double T over a region i guess where xterm is supposed to be, but it's black there.

i tried with an empty xorg.conf, it's the same.

i can't see why it's not working, so, on last ressort, i think of a bug of the driver.

it's not that i rely on the nv driver. but the only time i needed it, it seems to let me down ;-(

the vesa driver works fine (and the nvidia binary driver too)
Comment 1 zebulon 2010-02-17 11:33:49 UTC
Created attachment 33364 [details]
Xorg.0.log
Comment 2 Aaron Plattner 2010-02-17 15:13:17 UTC
The problem is that xserver 1.7 contains a bug where it fails to call the LoadPalette driver hook, leaving the palette uninitialized.  To implement the new-style hooks, I'd need to create a separate LUT per display, which I don't have time to do right now.

In the meantime, you could simply disable the LUT entirely by (and this is completely untested) changing this line in g80_display.c from

  C(0x00000840 + headOff, pScrn->depth == 8 ? 0x80000000 : 0xc0000000);

to

  C(0x00000840 + headOff, 0);
Comment 3 Aaron Plattner 2010-03-02 08:22:09 UTC
I just pushed a change that might fix this.  Please give it a try:

Author: Aaron Plattner <aplattner@nvidia.com>
Date:   Mon Mar 1 14:26:51 2010 -0800

    Bug #26612: Separate LUTs per output.
    
    Wire up the RandR 1.2 gamma_set hook.  Call it from G80SetPalette like the
    Intel driver does.
    
    Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
    Signed-off-by: Andy Ritger <aritger@nvidia.com>
    Reviewed-by: Christian Zander <chzander@nvidia.com>

:100644 100644 0cb9860... 8c8e5bd... M  src/g80_display.c
:100644 100644 2031fed... 43c6e12... M  src/g80_display.h
:100644 100644 13e417a... 8ea45af... M  src/g80_driver.c
Comment 4 zebulon 2010-03-02 11:06:35 UTC
i am terribly sorry. i just tried 2.1.16 and this was working fine but not 2.1.15.

2.1.15 add a patch here and X segfaults without the patch to 2.1.15.
+static void
+G80DispGammaSet(xf86CrtcPtr crtc, CARD16 *red, CARD16 *green, CARD16 *blue,
+		int size)
+{
+}
+
 static const xf86CrtcFuncsRec g80_crtc_funcs = {
     .dpms = G80CrtcDPMSSet,
     .save = NULL,
@@ -654,7 +660,7 @@ static const xf86CrtcFuncsRec g80_crtc_f
     .mode_fixup = G80CrtcModeFixup,
     .prepare = G80CrtcPrepare,
     .mode_set = G80CrtcModeSet,
-    // .gamma_set = G80DispGammaSet,
+    .gamma_set = G80DispGammaSet,
     .commit = G80CrtcCommit,
     .shadow_create = NULL,
     .shadow_destroy = NULL,

so may be it's not a surprise i get a black screen with an empty function like that ?

i used 2.1.16 without any patch and repeat it worked.
at least, the git version is still working here.
Comment 5 zebulon 2010-03-02 11:11:04 UTC
but i did not recompiled X or any other package except the nv driver. still using 1.7.5 as seen in Xorg.log.0

p.s.: previouly i meant had not add
Comment 6 Aaron Plattner 2010-03-02 18:48:58 UTC
Sorry, I should have been more clear.  The change is in git, but it's not in any release yet.  2.1.16 doesn't contain my change.

You should be able to build it like this:

git clone git://anongit.freedesktop.org/git/xorg/driver/xf86-video-nv
cd xf86-video-nv
./autogen.sh --prefix=/usr
make
sudo make install


You'll need to have autoconf and automake installed for that to work.
Comment 7 zebulon 2010-03-03 01:13:41 UTC
this was clear to me.

i wanted to make clear that i did not tested the latest stable nor did mention the version that fails, in my bug report.
Comment 8 Aaron Plattner 2010-03-04 10:16:17 UTC
Okay, got it.  Thanks for testing.  Marking fixed.
Comment 9 Aaron Plattner 2011-09-14 14:31:08 UTC
*** Bug 16639 has been marked as a duplicate of this bug. ***

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.