Graphics
Intel® graphics drivers and software, compatibility, troubleshooting, performance, and optimization
20690 Discussions

Display issues on ThinkPad L540 internal display.

AHemm
Beginner
2,438 Views

Recently I had to replace the LCD in my ThinkPad L540 laptop. Since doing so, the display no longer works correctly under Windows. Interestingly, it works just fine under Linux (using the latest upstream kernel with the standard DRM drivers), and for anything that either uses VESA or UEFI graphics. Things work fine when I am using just an external display (although only when it's connected to the mini displayport, not the VGA output), and also when I'm using both if the external display has the same resolution and refresh rate as the internal one. Things also work just fine when Windows is booted in safe mode and when I have the Intel graphics driver uninstalled (which is _not_ a solution, as my whole reason for running Windows at all is gaming).

I've tried multiple versions (both the current version, which worked fine prior to the hardware change, and ffive previous versions) of the Intel HD Graphics driver, and all of them see the same issue. I don't know if it's related to this issue or not, but when I have an external display connected, I only see that display listed in device manager and the graphics settings, previously I would see both that and the internal display (as long as the lid was open).

The hardware itself is a single GPU system using just the integrated GPU (no switching/hybrid graphics), which reports as a HD 4600 series (the CPU is an i5-5310M). I've thrown everything I can think of at it from Linux, and the GPU itself appears to be in perfect condition, which leads me to believe the issue is with the driver. The new screen has identical timing characteristics to the old one (1920x1080@60Hz native resolution). Prior to swapping the display, I had the driver on Windows configured correctly to display this, and clone screens when an external monitor is plugged in (and I think that's why it works with an external monitor plugged in).

Based on past experience with almost identical issues on Linux with other GPU's (multiple years ago now), I think that the driver isn't parsing the EDID properly, and as such can't figure out the actual resolution for the display. Visually, it looks like the driver is writing frames at some low resolution (my guess would be either 640x480 or 800x600) into the GPU memory, while the GPU is expecting frames at 1920x1080 (the display's native resolution (or possibly the driver is writing frames at the right resolution, and the GPU is trying to do some sort of scaling trick with them). I'm working on trying to get a VNC server running on Windows (I've only got 8.1 Home edition, so RDP isn't an option) to see if I can figure anything out from there, but until then I can't get a screenshot without a camera, which I don't have available.

0 Kudos
4 Replies
AHemm
Beginner
784 Views

I've tried with both version 4521 as well as the three previous versions that are available for download, and the most recent one that Lenovo is shipping, and all of the exhibit the issue.

Don't know if it's related, but I just noticed that Lenovo put their monitor INF files on Windows update recently, I'm going to see if I can force that to uninstall and block it from installing and see if that helps.

0 Kudos
AHemm
Beginner
784 Views

Also, forgot to mention, I did some digging and the EDID on the new LCD and the old one are different.

0 Kudos
AHemm
Beginner
784 Views

After further investigation (involving using a VNC server on the windows system and some low level hardware analysis of the monitor itself, I've been able to determine that nothing from inside Windows is able to read the EDID of the display for some reason. Based on this, it should theoretically be possible for me to fix this using custom resolutions, although fixing it would be trivial if I could just use an EDID override on windows like is possible on Linux. I'm also kind of curious as to why a digital video output through an eDP on a mid-high end processor defaults to 640x480 for the resolution if it can't read the EDID from the connected display

0 Kudos
Reply