xf86-video-intel-dfbsd: Update wip/xf86-video-intel-dfbsd to 6afed33b2d67

Changes:
* Still at 2019-03-01 sna: Switch back to hwcursor on the next cursor update
* Knobs for patches from NetBSD xsrc
* uxa default on NetBSD
This commit is contained in:
David Shao 2019-07-22 22:31:05 -07:00
parent 09d4ce258c
commit b52d9fefae
10 changed files with 240 additions and 41 deletions

View File

@ -1 +1,13 @@
This is the video driver for Intel cards for the modular Xorg server.
Support hardware includes the following chipsets:
- i810, i810-dc100, i810e
- i815
- i830
- i845
- i852
- i855
- i915
- i945
- i965
An older version of the Intel driver is available in x11/xf86-video-i810.

View File

@ -1,6 +1,6 @@
# $NetBSD: Makefile,v 1.40 2018/03/07 11:57:43 wiz Exp $
# $NetBSD: Makefile,v 1.41 2018/05/15 10:50:19 wiz Exp $
# Use the commit id to obtain a snapshot of the form:
# Use the commit id to obtain a snapshot of the form:
# http://cgit.freedesktop.org/xorg/driver/xf86-video-intel/snapshot/xf86-video-intel-78d7a09b0343829c81257024b164b0b3764392ac.tar.xz
# 2019-03-01 sna: Switch back to hwcursor on the next cursor update
@ -13,7 +13,7 @@ COMMIT_ID= 6afed33b2d673d88674f0c76efe500ae414e8e1b
# COMMIT_ID= 33ee0c3b21ea279e08d0863fcb2e874f0974b00e
# 2019-01-10 sna: Switch off old outputs on topology changes
# COMMIT_ID= c37c7ee0748ba828ec5d2c7304cd2a17af2c8109
# COMMIT_ID= c37c7ee0748ba828ec5d2c7304cd2a17af2c8109
# 2018-05-12 configure: Set DRI1 to autodiscover
# COMMIT_ID= 359477215092ac1b602ad1e2f17a28963d9224c2
@ -24,12 +24,14 @@ COMMIT_ID= 6afed33b2d673d88674f0c76efe500ae414e8e1b
# 2017-02-28 intel: Fix checking xf86LoadKernelModule for success
# COMMIT_ID= 78d7a09b0343829c81257024b164b0b3764392ac
# DISTNAME= xf86-video-intel-2.99.917
PORTNAME= xf86-video-intel
DISTNAME= ${PORTNAME}-${COMMIT_ID}
PKGNAME= ${PORTNAME}-2.99.917
PKGREVISION= 7
CATEGORIES= x11
# MASTER_SITES= ${MASTER_SITE_XORG:=driver/}
# EXTRACT_SUFX= .tar.bz2
MASTER_SITES= http://cgit.freedesktop.org/xorg/driver/${PORTNAME}/snapshot/
EXTRACT_SUFX= .tar.xz
@ -53,7 +55,7 @@ CONFIGURE_ENV.SunOS+= DRIVER_MAN_SUFFIX=4
CONFIGURE_ENV.DragonFly+= xorg_cv_cc_flag__Wno_maybe_uninitialized=no
# DragonFly version 4.6-RELEASE, maybe other versions prior to 4.7
# need -D_WITH_GETLINE=1 according to:
# need -D_WITH_GETLINE=1 according to:
# https://github.com/DragonFlyBSD/DPorts/issues/184
# FreeBSD ports now patches files individually.
# CFLAGS.FreeBSD+= -D_WITH_GETLINE=1
@ -71,9 +73,14 @@ SUBST_SED.jmp_buf= -e 's@[[:<:]]jmp_buf[[:>:]]@sigjmp_buf@g'
.endif
PKG_OPTIONS_VAR= PKG_OPTIONS.xf86-video-intel
PKG_SUPPORTED_OPTIONS= uxa dri3 debug
PKG_SUPPORTED_OPTIONS= uxa dri3 debug xvmc
PKG_SUPPORTED_OPTIONS+= set_dbg_no_unsynchronized_userptr
PKG_SUPPORTED_OPTIONS+= set_dbg_no_llc
PKG_SUPPORTED_OPTIONS+= list_h_xserver
PKG_SUPPORTED_OPTIONS+= kgem_null_bo
PKG_SUPPORTED_OPTIONS+= handler_xsrc_netbsd
PKG_SUPPORTED_OPTIONS+= reset_cursor_xsrc_netbsd
PKG_SUPPORTED_OPTIONS+= strict_xsrc_netbsd
PKG_SUGGESTED_OPTIONS=
# PKG_SUGGESTED_OPTIONS+= set_dbg_no_unsynchronized_userptr
# PKG_SUGGESTED_OPTIONS+= set_dbg_no_llc
@ -81,16 +88,48 @@ PKG_SUGGESTED_OPTIONS=
CONFIGURE_ARGS.FreeBSD+= --disable-udev
.if ${OPSYS} == "FreeBSD"
# PKG_SUGGESTED_OPTIONS+= uxa
PKG_SUGGESTED_OPTIONS+= uxa
PKG_SUGGESTED_OPTIONS+= set_dbg_no_unsynchronized_userptr
.endif
.if ${OPSYS} == "NetBSD"
PKG_SUGGESTED_OPTIONS+= uxa
.endif
.if ${OPSYS} == "FreeBSD" || ${OPSYS} == "DragonFly" || ${OPSYS} == "NetBSD"
PKG_SUGGESTED_OPTIONS+= xvmc
.endif
.if ${OPSYS} == "DragonFly"
PKG_SUGGESTED_OPTIONS+= set_dbg_no_llc
.endif
# Sync list.h definitions with xorg server, presumably safer.
.if ${OPSYS} == "FreeBSD" || ${OPSYS} == "DragonFly" || ${OPSYS} == "NetBSD"
PKG_SUGGESTED_OPTIONS+= list_h_xserver
.endif
# bo object possibly null in kgem.c
.if ${OPSYS} == "FreeBSD" || ${OPSYS} == "DragonFly" || ${OPSYS} == "NetBSD"
PKG_SUGGESTED_OPTIONS+= kgem_null_bo
.endif
# .if ${OPSYS} == "NetBSD"
# PKG_SUGGESTED_OPTIONS+= handler_xsrc_netbsd
# .endif
# .if ${OPSYS} == "NetBSD"
# PKG_SUGGESTED_OPTIONS+= reset_cursor_xsrc_netbsd
# .endif
.if ${OPSYS} == "NetBSD"
PKG_SUGGESTED_OPTIONS+= strict_xsrc_netbsd
.endif
.include "../../mk/bsd.options.mk"
PLIST_VARS+= xvmc
.if !empty(PKG_OPTIONS:Muxa)
CONFIGURE_ARGS+= --with-default-accel=uxa
.endif
@ -109,6 +148,12 @@ CFLAGS+= -O0 -g3
CONFIGURE_ARGS+= --enable-debug
.endif
.if !empty(PKG_OPTIONS:Mxvmc)
# Seems required for actual xvmc support
.include "../../x11/xcb-util/buildlink3.mk"
PLIST.xvmc= yes
.endif
.if !empty(PKG_OPTIONS:Mset_dbg_no_unsynchronized_userptr)
CPPFLAGS+= -DSET_DBG_NO_UNSYNCHRONIZED_USERPTR
.endif
@ -117,6 +162,26 @@ CPPFLAGS+= -DSET_DBG_NO_UNSYNCHRONIZED_USERPTR
CPPFLAGS+= -DSET_DBG_NO_LLC
.endif
.if !empty(PKG_OPTIONS:Mlist_h_xserver)
CPPFLAGS+= -DLIST_H_XSERVER
.endif
.if !empty(PKG_OPTIONS:Mkgem_null_bo)
CPPFLAGS+= -DKGEM_NULL_BO
.endif
.if !empty(PKG_OPTIONS:Mhandler_xsrc_netbsd)
CPPFLAGS+= -DHANDLER_XSRC_NETBSD
.endif
.if !empty(PKG_OPTIONS:Mreset_cursor_xsrc_netbsd)
CPPFLAGS+= -DRESET_CURSOR_XSRC_NETBSD
.endif
.if !empty(PKG_OPTIONS:Mstrict_xsrc_netbsd)
CPPFLAGS+= -DSTRICT_XSRC_NETBSD
.endif
pre-configure:
cd ${WRKSRC} && autoreconf -vif
@ -127,8 +192,4 @@ BUILDLINK_API_DEPENDS.libdrm+= libdrm>=2.4.7
.include "../../x11/libdrm/buildlink3.mk"
.include "../../x11/xorgproto/buildlink3.mk"
.include "../../mk/pthread.buildlink3.mk"
# Seems required for actual xvmc support
.include "../../x11/xcb-util/buildlink3.mk"
.include "../../mk/bsd.pkg.mk"

View File

@ -1,5 +1,5 @@
@comment $NetBSD: PLIST,v 1.1 2015/04/01 13:11:38 tnn2 Exp $
lib/libI810XvMC.la
lib/libIntelXvMC.la
@comment $NetBSD: PLIST,v 1.4 2013/05/16 06:16:50 richard Exp $
${PLIST.xvmc}lib/libI810XvMC.la
${PLIST.xvmc}lib/libIntelXvMC.la
lib/xorg/modules/drivers/intel_drv.la
man/man4/intel.4

View File

@ -1,11 +1,15 @@
$NetBSD: distinfo,v 1.1 2015/04/01 13:11:38 tnn2 Exp $
$NetBSD: distinfo,v 1.29 2018/05/15 10:50:19 wiz Exp $
SHA1 (xf86-video-intel-6afed33b2d673d88674f0c76efe500ae414e8e1b.tar.xz) = acec51bc49102bd071ebd1ffd14eb4730dc4cdc2
RMD160 (xf86-video-intel-6afed33b2d673d88674f0c76efe500ae414e8e1b.tar.xz) = bee1e0526fb569a5942e45cacb962d7d81604a6a
SHA512 (xf86-video-intel-6afed33b2d673d88674f0c76efe500ae414e8e1b.tar.xz) = 37572630196ee124097ffbfcd6f0e77c9701ff46154a213a6a0778cd1ca4f42fe9da598e948bc167eac6af3ef8097c101f39b1569b3141fb7e0dd0e1997955df
Size (xf86-video-intel-6afed33b2d673d88674f0c76efe500ae414e8e1b.tar.xz) = 955096 bytes
SHA1 (patch-src_compat-api.h) = 286fa9a7a17b9b81e07a0b90faf1976b0bbf2c3b
SHA1 (patch-src_intel__device.c) = b0a1f775d3e66605e9a1d94745bc4f7a1fba179e
SHA1 (patch-src_intel__list.h) = 98ba59c22bc7109f95666291ca1aac19189999aa
SHA1 (patch-src_sna_kgem.c) = 57341a2fba5cabe70b20a4a0b2699e655e2d61d7
SHA1 (patch-src_intel__list.h) = 505686bd97aa64ddea6654f2eb8eeb16f61f4610
SHA1 (patch-src_legacy_i810_i810__dri.c) = fb963b994d51c9db48457106048226214a2d986c
SHA1 (patch-src_sna_kgem.c) = 6ba0cd66f8172d6e57587da1002b87b2c10a3dad
SHA1 (patch-src_sna_sna.h) = e72d55022089d66df785bd572b8266b70aa0f5e0
SHA1 (patch-src_sna_sna__threads.c) = 54a3bd0de878009335f08b3f41812540a72f5d4d
SHA1 (patch-src_sna_sna__video.c) = ee732a2c73997cfdf5c5b936fac065a0224687af
SHA1 (patch-src_uxa_intel__display.c) = 2e1dcea94b2f80331615956e9c1f16e4710211cc

View File

@ -0,0 +1,28 @@
$NetBSD: patch-src_compat-api.h,v 1.1 2016/12/07 21:59:54 wiz Exp $
Upstream patches for xorg-server-1.19.
Handler args patch from NetBSD xsrc xf86-video-intel-2014
--- src/compat-api.h.orig 2019-03-01 18:22:07.000000000 +0000
+++ src/compat-api.h
@@ -94,11 +94,19 @@
#define SCREEN_INIT_ARGS_DECL ScreenPtr screen, int argc, char **argv
+#if (ABI_VIDEODRV_VERSION >= SET_ABI_VERSION(23, 0)) && defined(HANDLER_XSRC_NETBSD)
+#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer timeout
+#define BLOCKHANDLER_ARGS arg, timeout
+
+#define WAKEUPHANDLER_ARGS_DECL ScreenPtr arg, int result
+#define WAKEUPHANDLER_ARGS arg, result
+#else
#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer timeout, pointer read_mask
#define BLOCKHANDLER_ARGS arg, timeout, read_mask
#define WAKEUPHANDLER_ARGS_DECL ScreenPtr arg, unsigned long result, pointer read_mask
#define WAKEUPHANDLER_ARGS arg, result, read_mask
+#endif
#define CLOSE_SCREEN_ARGS_DECL ScreenPtr screen
#define CLOSE_SCREEN_ARGS screen

View File

@ -2,28 +2,40 @@ $NetBSD$
Patch from FreeBSD ports x11-drivers/xf86-video-intel.
--- src/intel_list.h.orig 2017-02-10 21:52:47.000000000 +0000
Further adaption from NetBSD xsrc xf86-video-intel.
--- src/intel_list.h.orig 2019-03-01 18:22:07.000000000 +0000
+++ src/intel_list.h
@@ -305,8 +305,10 @@ list_is_empty(const struct list *head)
@@ -305,8 +305,19 @@ list_is_empty(const struct list *head)
#define list_last_entry(ptr, type, member) \
list_entry((ptr)->prev, type, member)
+#if !defined(__FreeBSD__)
+#ifdef __container_of
+#undef __container_of
+#endif
+#if defined(LIST_H_XSERVER)
+/* Assume that HAVE_TYPEOF is true */
+#define __container_of(ptr, sample, member) \
+ container_of(ptr, typeof(*sample), member)
+#else /* !LIST_H_XSERVER */
#define __container_of(ptr, sample, member) \
(void *)((char *)(ptr) - ((char *)&(sample)->member - (char *)(sample)))
+#endif /* LIST_H_XSERVER */
+#endif
/**
* Loop through the list given by head and set pos to struct in the list.
*
@@ -324,15 +326,29 @@ list_is_empty(const struct list *head)
@@ -324,15 +335,31 @@ list_is_empty(const struct list *head)
* @param member Member name of the struct list in the list elements.
*
*/
+#if defined(__FreeBSD__)
+ #define list_for_each_entry(pos, head, member) \
+ for (pos = NULL, pos = __container_of((head)->next, pos, member); \
+ &pos->member != (head); \
+ pos = __container_of(pos->member.next, pos, member))
+#if defined(LIST_H_XSERVER)
+#define list_for_each_entry(pos, head, member) \
+ for (pos = NULL, \
+ pos = __container_of((head)->next, pos, member); \
+ &pos->member != (head); \
+ pos = __container_of(pos->member.next, pos, member))
+#else
#define list_for_each_entry(pos, head, member) \
for (pos = __container_of((head)->next, pos, member); \
@ -31,11 +43,12 @@ Patch from FreeBSD ports x11-drivers/xf86-video-intel.
pos = __container_of(pos->member.next, pos, member))
+#endif
+#if defined(__FreeBSD__)
+#define list_for_each_entry_reverse(pos, head, member) \
+ for (pos = NULL, pos = __container_of((head)->prev, pos, member); \
+ &pos->member != (head); \
+ pos = __container_of(pos->member.prev, pos, member))
+#if defined(LIST_H_XSERVER)
+#define list_for_each_entry_reverse(pos, head, member) \
+ for (pos = NULL, \
+ pos = __container_of((head)->prev, pos, member); \
+ &pos->member != (head); \
+ pos = __container_of(pos->member.prev, pos, member))
+#else
#define list_for_each_entry_reverse(pos, head, member) \
for (pos = __container_of((head)->prev, pos, member); \
@ -45,16 +58,17 @@ Patch from FreeBSD ports x11-drivers/xf86-video-intel.
/**
* Loop through the list, keeping a backup pointer to the element. This
@@ -341,11 +357,19 @@ list_is_empty(const struct list *head)
@@ -341,11 +368,20 @@ list_is_empty(const struct list *head)
*
* See list_for_each_entry for more details.
*/
+#if defined(__FreeBSD__)
+#if defined(LIST_H_XSERVER)
+#define list_for_each_entry_safe(pos, tmp, head, member) \
+ for (pos = NULL, pos = __container_of((head)->next, pos, member), \
+ tmp = __container_of(pos->member.next, pos, member); \
+ &pos->member != (head); \
+ pos = tmp, tmp = __container_of(pos->member.next, tmp, member))
+ for (pos = NULL, \
+ pos = __container_of((head)->next, pos, member), \
+ tmp = __container_of(pos->member.next, pos, member); \
+ &pos->member != (head); \
+ pos = tmp, tmp = __container_of(pos->member.next, tmp, member))
+#else
#define list_for_each_entry_safe(pos, tmp, head, member) \
for (pos = __container_of((head)->next, pos, member), \

View File

@ -0,0 +1,33 @@
$NetBSD: patch-src_legacy_i810_i810__dri.c,v 1.1 2015/04/20 13:39:00 khorben Exp $
CID 1107540: Make the code safe avoiding random stack access. In
the first loop where there is a singleton point to pptSrc, only
access that singleton, no matter what.
November 2013 patch from NetBSD xsrc:
http://mail-index.netbsd.org/source-changes/2013/11/14/msg049188.html
--- src/legacy/i810/i810_dri.c.orig 2014-08-29 09:33:11.000000000 +0000
+++ src/legacy/i810/i810_dri.c
@@ -1104,10 +1104,17 @@ I810DRIMoveBuffers(WindowPtr pParent, DD
while ((pboxNext >= pbox) && (pboxBase->y1 == pboxNext->y1))
pboxNext--;
pboxTmp = pboxNext + 1;
- pptTmp = pptSrc + (pboxTmp - pbox);
- while (pboxTmp <= pboxBase) {
- *pboxNew1++ = *pboxTmp++;
- *pptNew1++ = *pptTmp++;
+ if (pptSrc == &ptOldOrg) {
+ if (pboxTmp <= pboxBase) {
+ *pboxNew1++ = *pboxTmp;
+ *pptNew1++ = *pptSrc;
+ }
+ } else {
+ pptTmp = pptSrc + (pboxTmp - pbox);
+ while (pboxTmp <= pboxBase) {
+ *pboxNew1++ = *pboxTmp++;
+ *pptNew1++ = *pptTmp++;
+ }
}
pboxBase = pboxNext;
}

View File

@ -15,7 +15,7 @@ Fix SNA for drm-v4.11 or later by disabling I915_USERPTR_UNSYNCHRONIZED
I915_USERPTR_UNSYNCHRONIZED is broken since drm-v4.11
https://github.com/FreeBSDDesktop/kms-drm/issues/32
--- src/sna/kgem.c.orig 2019-02-21 22:26:50.000000000 +0000
--- src/sna/kgem.c.orig 2019-03-01 18:22:07.000000000 +0000
+++ src/sna/kgem.c
@@ -29,6 +29,11 @@
#include "config.h"
@ -29,7 +29,7 @@ https://github.com/FreeBSDDesktop/kms-drm/issues/32
#include "sna.h"
#include "sna_reg.h"
@@ -69,9 +74,17 @@ search_snoop_cache(struct kgem *kgem, unsigned int num
@@ -69,9 +74,17 @@ search_snoop_cache(struct kgem *kgem, un
#define DBG_NO_CPU 0
#define DBG_NO_CREATE2 0
#define DBG_NO_USERPTR 0
@ -59,7 +59,7 @@ https://github.com/FreeBSDDesktop/kms-drm/issues/32
int err;
VG_CLEAR(arg);
@@ -691,7 +708,12 @@ static void *__kgem_bo_map__cpu(struct kgem *kgem, str
@@ -691,7 +708,12 @@ static void *__kgem_bo_map__cpu(struct k
retry:
arg.handle = bo->handle;
arg.size = bytes(bo);
@ -72,11 +72,11 @@ https://github.com/FreeBSDDesktop/kms-drm/issues/32
DBG(("%s: failed %d, throttling/cleaning caches\n",
__FUNCTION__, err));
assert(err != -EINVAL || bo->prime);
@@ -3313,11 +3335,21 @@ bool __kgem_ring_is_idle(struct kgem *kgem, int ring)
@@ -3313,11 +3335,21 @@ bool __kgem_ring_is_idle(struct kgem *kg
if (rq) {
struct kgem_request *tmp;
+#if defined(__DragonFly__)
+#if defined(KGEM_NULL_BO)
+ if (rq->bo == NULL)
+ fprintf(stderr, "__kgem_ring_is_idle: rq->bo == NULL\n");
+ if (rq->bo && __kgem_busy(kgem, rq->bo->handle)) {

View File

@ -0,0 +1,27 @@
$NetBSD: patch-src_sna_sna.h,v 1.1 2016/12/07 21:59:54 wiz Exp $
Upstream patches for xorg-server-1.19.
Patches from NetBSD xsrc xf86-video-intel-2014
--- src/sna/sna.h.orig 2019-03-01 18:22:07.000000000 +0000
+++ src/sna/sna.h
@@ -1336,11 +1336,18 @@ char *sna_cpu_features_to_string(unsigne
int sna_acpi_open(void);
void sna_acpi_init(struct sna *sna);
void _sna_acpi_wakeup(struct sna *sna);
+#if defined(HANDLER_XSRC_NETBSD)
+static inline void sna_acpi_wakeup(struct sna *sna)
+{
+ _sna_acpi_wakeup(sna);
+}
+#else
static inline void sna_acpi_wakeup(struct sna *sna, void *read_mask)
{
if (sna->acpi.fd >= 0 && FD_ISSET(sna->acpi.fd, (fd_set*)read_mask))
_sna_acpi_wakeup(sna);
}
+#endif
void sna_acpi_fini(struct sna *sna);
void sna_threads_init(void);

View File

@ -0,0 +1,20 @@
$NetBSD: patch-src_uxa_intel__display.c,v 1.1 2016/12/07 21:59:54 wiz Exp $
Upstream patches for xorg-server-1.19.
Patches from NetBSD xsrc xf86-video-intel-2014
--- src/uxa/intel_display.c.orig 2019-03-01 18:22:07.000000000 +0000
+++ src/uxa/intel_display.c
@@ -394,7 +394,11 @@ intel_crtc_apply(xf86CrtcPtr crtc)
}
if (scrn->pScreen)
+#if defined(HAVE_XF86_CURSOR_RESET_CURSOR) && defined(RESET_CURSOR_XSRC_NETBSD)
+ xf86CursorResetCursor(scrn->pScreen);
+#else
xf86_reload_cursors(scrn->pScreen);
+#endif
done:
free(output_ids);