Source-Changes-HG archive

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

[src/trunk]: src/sys/external/bsd/drm2/i915drm kern/52229



details:   https://anonhg.NetBSD.org/src/rev/37cbd8f23858
branches:  trunk
changeset: 964735:37cbd8f23858
user:      rin <rin%NetBSD.org@localhost>
date:      Thu Aug 15 00:27:47 2019 +0000

description:
kern/52229

Correct linebytes (stride) for intelfb(4), which fixes screen
corruption on the following machines:

- MacBookAir5,2 (Ivy Bridge, 13-inch, Mid 2012)
- MacBookAir6,1 (Haswell, 11-inch, Early 2014)

Now, wsdisplay(4) console as well as intel(4) driver of Xorg
works fine on these machines.

Also there's no side effects found on another machine:

- ThinkPad T480s (Kaby Lake R)

XXX
pullup to netbsd-9

diffstat:

 sys/external/bsd/drm2/i915drm/intelfb.c |  8 +++-----
 1 files changed, 3 insertions(+), 5 deletions(-)

diffs (34 lines):

diff -r 4e29e26c4429 -r 37cbd8f23858 sys/external/bsd/drm2/i915drm/intelfb.c
--- a/sys/external/bsd/drm2/i915drm/intelfb.c   Wed Aug 14 15:08:53 2019 +0000
+++ b/sys/external/bsd/drm2/i915drm/intelfb.c   Thu Aug 15 00:27:47 2019 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: intelfb.c,v 1.16 2018/12/01 01:56:30 msaitoh Exp $     */
+/*     $NetBSD: intelfb.c,v 1.17 2019/08/15 00:27:47 rin Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: intelfb.c,v 1.16 2018/12/01 01:56:30 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intelfb.c,v 1.17 2019/08/15 00:27:47 rin Exp $");
 
 #include <sys/types.h>
 #include <sys/bus.h>
@@ -166,14 +166,12 @@
        struct intelfb_softc *const sc = container_of(task,
            struct intelfb_softc, sc_attach_task);
        const struct intelfb_attach_args *const ifa = &sc->sc_ifa;
-       const struct drm_fb_helper_surface_size *const sizes = &ifa->ifa_fb_sizes;
        const struct drmfb_attach_args da = {
                .da_dev = sc->sc_dev,
                .da_fb_helper = ifa->ifa_fb_helper,
                .da_fb_sizes = &ifa->ifa_fb_sizes,
                .da_fb_vaddr = bus_space_vaddr(ifa->ifa_fb_bst, sc->sc_fb_bsh),
-               .da_fb_linebytes = roundup2((sizes->surface_width *
-                   howmany(sizes->surface_bpp, 8)), 64),
+               .da_fb_linebytes = ifa->ifa_fb_helper->fb->pitches[0],
                .da_params = &intelfb_drmfb_params,
        };
        int error;



Home | Main Index | Thread Index | Old Index