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
This commit is contained in:
rin 2019-08-15 00:27:47 +00:00
parent 92c78af154
commit 04cebdd3c6

View File

@ -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 @@ intelfb_attach_task(struct i915drmkms_task *task)
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;