Check out my first novel, midnight's simulacra!

Linux Framebuffer

From dankwiki
(Redirected from Linux framebuffer)

It would seem that the Intel framebuffer drivers do not (and will not?) support the i965. But...

[recombinator](0) $ fbset -i

mode "1024x768-60"
    # D: 62.360 MHz, H: 47.530 kHz, V: 60.013 Hz
    geometry 1024 768 1024 768 16
    timings 16036 128 32 16 4 128 4
    accel true
    rgba 5/11,6/5,5/0,0/0
endmode

Frame buffer device information:
    Name        : Intel(R) 965G
    Address     : 0xd0000000
    Size        : 8122368
    Type        : PACKED PIXELS
    Visual      : TRUECOLOR
    XPanStep    : 8
    YPanStep    : 1
    YWrapStep   : 0
    LineLength  : 2048
    MMIO Address: 0xe0300000
    MMIO Size   : 524288
    Accelerator : Intel 830M/845G/85x/865G
[recombinator](0) $  uname -a
Linux recombinator 2.6.28-rc6 #1 SMP Sat Nov 22 01:55:26 EST 2008 x86_64 GNU/Linux
[recombinator](0) $ 

and, from dmesg:

Linux agpgart interface v0.103
agpgart-intel 0000:00:00.0: Intel 965G Chipset
agpgart-intel 0000:00:00.0: detected 7676K stolen memory
agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0xd0000000
intelfb: Framebuffer driver for Intel(R) 830M/845G/852GM/855GM/865G/915G/915GM/945G/945GM/945GME/965G/965GM chipsets
intelfb: Version 0.9.6
intelfb 0000:00:02.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
intelfb: 00:02.0: Intel(R) 965G, aperture size 256MB, stolen memory 7932kB
intelfb: Non-CRT device is enabled ( DVO port B ).  Disabling mode switching.
intelfb: Initial video mode is 1024x768-16@60.
intelfb: Changing the video mode is not supported.
Console: switching to colour frame buffer device 128x48

GEM

GEM, the Graphics Execution Manager present in recent X.org (requiring 2.6.29 for kernel support), takes over the framebuffer (this is actually an effect of Kernel Mode Switching on Intel graphics hardware):

[recombinator](0) $ fbset -i

mode "1600x1200-0"
    # D: 0.000 MHz, H: 0.000 kHz, V: 0.000 Hz
    geometry 1600 1200 1600 1200 32
    timings -1 0 0 0 0 0 0
    rgba 8/16,8/8,8/0,0/0
endmode

Frame buffer device information:
    Name        : inteldrmfb
    Address     : 0xd07df000
    Size        : 7680000
    Type        : PACKED PIXELS
    Visual      : TRUECOLOR
    XPanStep    : 1
    YPanStep    : 1
    YWrapStep   : 0
    LineLength  : 6400
    MMIO Address: 0xe0300000
    MMIO Size   : 1048576
    Accelerator : Intel 830M/845G/85x/865G
[recombinator](0) $ uname -a
Linux recombinator 2.6.29.1 #1 SMP Fri Apr 3 22:43:27 EDT 2009 x86_64 GNU/Linux
[recombinator](0) $ 

It would seem that DRM must be loaded prior to intelfb (or both built into the kernel rather than as modules). Otherwise, you'll get an intelfb (as opposed to inteldrmfb), and it won't cooperate with X very well at all. From Linux 2.6.31-rc4's ChangeLog:

commit 78af08d90b8f745044b1274430bc4bc6b2b27aca
Merge: a1cc1ba ecca068
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Fri Jul 17 21:19:50 2009 -0700

Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6
    
'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6:
      drm: Move a dereference below a NULL test
      fb/intelfb: conflict with DRM_I915 and hide by default
      drm/ttm: fix misplaced parentheses
      drm/via: Fix vblank IRQ on VIA hardware.
      drm: drm_gem, check kzalloc retval
      drm: drm_debugfs, check kmalloc retval
      drm/radeon: add some missing pci ids

See also