Playing with the xf86-video-intel code

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello!

In a nutshell:
I have a problem where my linux box hooked up to my sharp lcd tv can only output 1080p@30hz OR 1080i@60hz under linux (opensuse 13.2), but CAN output 1080p@60hz under windows. (meaning in the kde display configuration, 30hz is the highest value)
Also:
xrandr --verbose gives me an edid:
00 ff ff ff ff ff ff 00 4d 10 99 10 01 01 01 01
ff 15 01 03 80 59 32 78 0a 68 37 a4 54 48 9a 25
0f 4a 4c 3f ef 80 d1 00 d1 c0 81 19 90 59 01 01
01 01 01 01 01 01 01 1d 80 18 71 1c 16 20 58 2c
25 00 10 09 00 00 00 9e 01 1d 00 72 51 d0 1e 20
6e 28 55 00 10 09 00 00 00 1e 00 00 00 fc 00 53
48 41 52 50 20 4c 43 44 0a 0a 20 20 00 00 00 fd
00 31 3d 0f 2e 08 00 0a 20 20 20 20 20 20 01 53
02 03 24 71 50 01 02 04 85 06 11 13 14 15 03 07
12 16 1f 20 10 23 09 07 01 83 01 00 00 66 03 0c
00 20 00 80 8c 0a d0 8a 20 e0 2d 10 10 3e 96 00
04 03 00 00 00 18 8c 0a a0 14 51 f0 16 00 26 7c
43 00 04 03 00 00 00 99 01 1d 80 d0 72 1c 16 20
10 2c 25 80 10 09 00 00 00 9f 01 1d 00 bc 52 d0
1e 20 b8 28 55 40 10 09 00 00 00 1e 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e2

Shows that I have this mode: (block1/video data block, last entry)
Native: FALSE
VIC: 16
Format: 1920x1080p
Field Rate: 59.94Hz/60Hz
Picture AR: 16:9
Pixel AR: 1:1

Yet after the edid listing, xrandr --verbose only shows these 1080 modes:
  1920x1080i (0x48) 74.250MHz +HSync +VSync Interlace +preferred
        h: width  1920 start 2008 end 2052 total 2200 skew    0 clock  33.75KHz
        v: height 1080 start 1084 end 1094 total 1125           clock  60.00Hz
  1920x1080i (0xa8) 74.250MHz +HSync +VSync Interlace
        h: width  1920 start 2448 end 2492 total 2640 skew    0 clock  28.12KHz
        v: height 1080 start 1084 end 1094 total 1125           clock  50.00Hz
  1920x1080 (0xa9) 74.250MHz +HSync +VSync
        h: width  1920 start 2558 end 2602 total 2750 skew    0 clock  27.00KHz
        v: height 1080 start 1084 end 1089 total 1125           clock  24.00Hz
  1920x1080i (0xaa) 74.176MHz +HSync +VSync Interlace *current
        h: width  1920 start 2008 end 2052 total 2200 skew    0 clock  33.72KHz
        v: height 1080 start 1084 end 1094 total 1125           clock  59.94Hz
  1920x1080 (0xab) 74.176MHz +HSync +VSync
        h: width  1920 start 2558 end 2602 total 2750 skew    0 clock  26.97KHz
        v: height 1080 start 1084 end 1089 total 1125           clock  23.98Hz


So since I've a c/c++ background I thought I'd investigate the problem myself:
I've built the srpm with a small logging addition:
In intel_display_c: I've added a log line each to:
mode_from_kmode() and intel_output_panel_edid(),
since they both are called from intel_output_get_modes().
(I'm logging with:
    mylog("%s: %ix%i@%f\n", mode->name, mode->HTotal, mode->VTotal, calculate_refresh(mode->HTotal, mode->VTotal, mode->Clock, mode->Flags));
This will save the log message to a text file in my home directory. Since xorg is running as root, it should have access to it, right?)

Now, after overwriting /usr/lib64/xorg/modules/drivers/intel_drv.so with my version, xorg immediately crashed:
(xorg.log.old)
[ 16177.244] (II) LoadModule: "fbdevhw"
[ 16177.244] (II) Loading /usr/lib64/xorg/modules/libfbdevhw.so
[ 16177.244] (II) Module fbdevhw: vendor="X.Org Foundation"
[ 16177.244]     compiled for 1.16.1, module version = 0.0.2
[ 16177.244]     ABI class: X.Org Video Driver, version 18.0
[ 16177.244] (WW) Falling back to old probe method for vesa
[ 16179.440] (EE) intel(0): [drm] failed to set drm interface version: Permission denied [13].
[ 16179.440] (II) intel(0): [drm] Contents of '/sys/kernel/debug/dri/0/clients':
[ 16179.440] (II) intel(0): [drm] a dev    pid    uid    magic
[ 16179.440] (II) intel(0): [drm]
[ 16179.440] (II) intel(0): [drm] y   0  6360     0          0
[ 16179.440] (II) intel(0): [drm] y   0   638     0          0
[ 16179.440] (EE) intel(0): Failed to claim DRM device.
[ 16179.440] (II) UnloadModule: "intel"
[ 16179.440] (EE) Screen(s) found, but none have a usable configuration.

Strangely, xorg shows no error after a reboot (so my module seems to be working), yet I do not see my log entries when calling xrandr --verbose again.

So my questions are:
-Am I looking at the right location? (I'm looking for the deepest location where the supported resolution list is assembled/calculated/parsed)
-Is there a way to dynamically reload the intel_drv module?

Thanks:
Bálint
_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux