# Buildsheet autogenerated by ravenadm tool -- Do not edit. NAMEBASE= xorg-driver-video-intel VERSION= 2.99.917.923 EPOCH= 1 KEYWORDS= x11_drivers VARIANTS= standard SDESC[standard]= X.org legacy driver for Intel graphic chipsets HOMEPAGE= https://www.x.org/ CONTACT= nobody DOWNLOAD_GROUPS= main SITES[main]= https://gitlab.freedesktop.org/xorg/driver/xf86-video-intel/-/archive/ DISTFILE[1]= b74b67f0f321875492968f7097b9d6e82a66d7df.tar.bz2:main DF_INDEX= 1 SPKGS[standard]= single OPTIONS_AVAILABLE= SNA UXA XVMC OPTIONS_STANDARD= SNA UXA XVMC OPTGROUP_RADIO= ACCEL OPTDESCR[ACCEL]= Default AccelMethod (if not specified in xorg.conf) OPTGROUP[ACCEL]= SNA UXA OPT_ON[all]= UXA XVMC NOT_FOR_ARCH= aarch64 BUILD_DEPENDS= libdrm:dev:standard xorg-server:dev:standard BUILDRUN_DEPENDS= libdrm:primary:standard xorg-server:primary:standard USES= mesa libtool cpe autoreconf XORG_COMPONENTS= xorgproto x11 xfont2 xvmc xcb DISTNAME= xf86-video-intel-b74b67f0f321875492968f7097b9d6e82a66d7df LICENSE= MIT:single LICENSE_FILE= MIT:{{WRKSRC}}/COPYING LICENSE_SCHEME= solo CPE_PRODUCT= xf86-video-intel CPE_VENDOR= x FPC_EQUIVALENT= x11-drivers/xf86-video-intel MUST_CONFIGURE= gnu CONFIGURE_ARGS= --disable-udev --disable-tools --enable-dri --enable-dri2 --enable-dri3 --with-builderstring="2.99.917.923" CONFIGURE_ENV= ac_cv_header_sys_sysinfo_h=no INSTALL_TARGET= install-strip CFLAGS= -Wunused-but-set-variable [XVMC].DESCRIPTION= X11 XvMC video extension support [XVMC].CONFIGURE_ENABLE_BOTH= xvmc [XVMC].XORG_COMPONENTS_ON= x11 xcb xvmc xcb-util [SNA].DESCRIPTION= SandyBridge's New Acceleration [SNA].CONFIGURE_ARGS_ON= --with-default-accel=sna [UXA].DESCRIPTION= Unified Acceleration Architecture [UXA].CONFIGURE_ARGS_ON= --with-default-accel=uxa pre-configure: # Broken by political correctness ${SED} -i.PC \ -e 's|slave_dst|secondary_dst|g' \ -e 's|master_pixmap|primary_pixmap|g' \ ${WRKSRC}/src/sna/sna_accel.c \ ${WRKSRC}/src/uxa/intel_driver.c pre-configure-dragonfly: # Prefer to use dfly specific sigjmp_buf for less errors ${REINPLACE_CMD} -e 's|jmp_buf |sigjmp_buf |g' \ ${WRKSRC}/src/sna/sna.h \ ${WRKSRC}/src/sna/sna_accel.c [FILE:531:descriptions/desc.single] The xf86-video-intel module is an open-source 2D graphics driver for the X Window System as implemented by X.org. It supports a variety of Intel graphics chipsets including: i810/i810e/i810-dc100,i815, i830M,845G,852GM,855GM,865G, 915G/GM,945G/GM/GME,946GZ G/GM/GME/Q965, G/Q33,G/Q35,G41,G/Q43,G/GM/Q45 PineView-M (Atom N400 series) PineView-D (Atom D400/D500 series) Intel(R) HD Graphics, Intel(R) Iris(TM) Graphics, Intel(R) Iris(TM) Pro Graphics. [FILE:127:distinfo] cc4855308af8eedd414c60f0638ef19e1b695e83f9dc1d62146cdab3d5915aba 1250201 b74b67f0f321875492968f7097b9d6e82a66d7df.tar.bz2 [FILE:324:manifests/plist.single] %%ONLY-LINUX%%libexec/xf86-video-intel-backlight-helper %%ONLY-LINUX%%share/polkit-1/actions/org.x.xf86-video-intel.backlight-helper.policy lib/ libI810XvMC.so libI810XvMC.so.1 libI810XvMC.so.1.0.0 libIntelXvMC.so libIntelXvMC.so.1 libIntelXvMC.so.1.0.0 lib/xorg/modules/drivers/intel_drv.so share/man/man4/intel.4.gz [FILE:1201:patches/patch-benchmarks_dri3-swap.c] dri3-swap.c:237:24: error: variable 'tmp' is uninitialized when used here [-Werror,-Wuninitialized] list_for_each_entry(tmp, &mru, link) { ^~~ dri3-swap.c:117:45: note: expanded from macro 'list_for_each_entry' for (pos = __container_of((head)->next, pos, member); \ ^~~ dri3-swap.c:114:41: note: expanded from macro '__container_of' (void *)((char *)(ptr) - ((char *)&(sample)->member - (char *)(sample))) ^~~~~~ dri3-swap.c:236:22: note: initialize the variable 'tmp' to silence this warning struct buffer *tmp, *b = NULL; ^ = NULL --- benchmarks/dri3-swap.c.orig 2021-01-15 20:59:05 UTC +++ benchmarks/dri3-swap.c @@ -233,7 +233,7 @@ static void run(Display *dpy, Window win clock_gettime(CLOCK_MONOTONIC, &start); do { for (n = 0; n < 1000; n++) { - struct buffer *tmp, *b = NULL; + struct buffer *tmp = NULL, *b = NULL; list_for_each_entry(tmp, &mru, link) { if (!tmp->busy) { b = tmp; [FILE:3970:patches/patch-hyphen] Add hyphen to RANDR output names for consistency with modesetting(4x) --- src/sna/sna_display.c.orig 2021-01-15 20:59:05 UTC +++ src/sna/sna_display.c @@ -467,7 +467,7 @@ static inline uint32_t fb_id(struct kgem unsigned sna_crtc_count_sprites(xf86CrtcPtr crtc) { - struct plane *sprite; + struct plane *sprite = NULL; unsigned count; count = 0; @@ -479,7 +479,7 @@ unsigned sna_crtc_count_sprites(xf86Crtc static struct plane *lookup_sprite(struct sna_crtc *crtc, unsigned idx) { - struct plane *sprite; + struct plane *sprite = NULL; list_for_each_entry(sprite, &crtc->sprites, link) if (idx-- == 0) @@ -1727,7 +1727,7 @@ static bool wait_for_shadow(struct sna * if ((flags & MOVE_WRITE) == 0) { if ((flags & __MOVE_SCANOUT) == 0) { - struct sna_crtc *crtc; + struct sna_crtc *crtc = NULL; list_for_each_entry(crtc, &sna->mode.shadow_crtc, shadow_link) { if (overlap(&sna->mode.shadow_region.extents, @@ -1768,7 +1768,7 @@ static bool wait_for_shadow(struct sna * flip_active = sna->mode.flip_active; if (flip_active) { - struct sna_crtc *crtc; + struct sna_crtc *crtc = NULL; list_for_each_entry(crtc, &sna->mode.shadow_crtc, shadow_link) flip_active -= crtc->flip_pending; DBG(("%s: %d flips still pending, shadow flip_active=%d\n", @@ -3263,7 +3263,7 @@ static void sna_crtc_destroy(xf86CrtcPtr crtc) { struct sna_crtc *sna_crtc = to_sna_crtc(crtc); - struct plane *sprite, *sn; + struct plane *sprite = NULL, *sn; if (sna_crtc == NULL) return; @@ -3652,7 +3652,7 @@ bool sna_has_sprite_format(struct sna *s for (i = 0; i < sna->mode.num_real_crtc; i++) { struct sna_crtc *sna_crtc = to_sna_crtc(config->crtc[i]); - struct plane *plane; + struct plane *plane = NULL; list_for_each_entry(plane, &sna_crtc->sprites, link) { struct local_mode_get_plane p; @@ -8639,7 +8639,7 @@ sna_mode_disable_secondary_planes(struct for (c = 0; c < sna->mode.num_real_crtc; c++) { xf86CrtcPtr crtc = config->crtc[c]; struct sna_crtc *sna_crtc = to_sna_crtc(crtc); - struct plane *plane; + struct plane *plane = NULL; list_for_each_entry(plane, &sna_crtc->sprites, link) { struct local_mode_get_plane p; @@ -8737,7 +8737,7 @@ static bool sna_crtc_hide_planes(struct sna *sna, struct sna_crtc *crtc) { struct local_mode_set_plane s; - struct plane *plane; + struct plane *plane = NULL; if (crtc->primary.id == 0) return false; @@ -8774,7 +8774,7 @@ void sna_mode_reset(struct sna *sna) for (i = 0; i < sna->mode.num_real_crtc; i++) { struct sna_crtc *sna_crtc = to_sna_crtc(config->crtc[i]); - struct plane *plane; + struct plane *plane = NULL; assert(sna_crtc != NULL); --- src/uxa/intel_display.c.orig 2021-01-15 20:59:05 UTC +++ src/uxa/intel_display.c @@ -1872,7 +1872,7 @@ intel_drm_abort_one(struct intel_drm_que void intel_drm_abort(ScrnInfoPtr scrn, Bool (*match)(void *data, void *match_data), void *match_data) { - struct intel_drm_queue *q; + struct intel_drm_queue *q = NULL; list_for_each_entry(q, &intel_drm_queue, list) { if (match(q->data, match_data)) { @@ -1888,7 +1888,7 @@ intel_drm_abort(ScrnInfoPtr scrn, Bool ( void intel_drm_abort_seq(ScrnInfoPtr scrn, uint32_t seq) { - struct intel_drm_queue *q; + struct intel_drm_queue *q = NULL; list_for_each_entry(q, &intel_drm_queue, list) { if (q->seq == seq) { @@ -1905,7 +1905,7 @@ intel_drm_abort_seq(ScrnInfoPtr scrn, ui static void intel_drm_abort_scrn(ScrnInfoPtr scrn) { - struct intel_drm_queue *q, *tmp; + struct intel_drm_queue *q = NULL, *tmp; list_for_each_entry_safe(q, tmp, &intel_drm_queue, list) { if (q->scrn == scrn) @@ -1994,7 +1994,7 @@ static void intel_drm_handler(int fd, uint32_t frame, uint32_t sec, uint32_t usec, void *user_ptr) { uint32_t user_data = (intptr_t)user_ptr; - struct intel_drm_queue *q; + struct intel_drm_queue *q = NULL; list_for_each_entry(q, &intel_drm_queue, list) { if (q->seq == user_data) { [FILE:894:patches/patch-prefer-iris] Chase https://gitlab.freedesktop.org/mesa/mesa/-/commit/adaa3583f507 Chase https://gitlab.freedesktop.org/mesa/mesa/-/commit/cdde031ac2c8 --- src/sna/sna_dri2.c.orig 2021-01-15 20:59:05 UTC +++ src/sna/sna_dri2.c @@ -3707,8 +3707,10 @@ static const char *dri_driver_name(struct sna *sna) return has_i830_dri() ? "i830" : "i915"; else if (sna->kgem.gen < 040) return "i915"; + else if (sna->kgem.gen < 0100) + return "crocus"; else - return "i965"; + return "iris"; } return s; --- src/uxa/intel_dri.c.orig 2021-01-15 20:59:05 UTC +++ src/uxa/intel_dri.c @@ -1540,8 +1540,10 @@ static const char *dri_driver_name(intel_screen_privat return has_i830_dri() ? "i830" : "i915"; else if (INTEL_INFO(intel)->gen < 040) return "i915"; + else if (INTEL_INFO(intel)->gen < 0100) + return "crocus"; else - return "i965"; + return "iris"; } return s; [FILE:955:patches/patch-src_intel__device.c] i915 requires KMS, so FreeBSD uses suffix to distinguish drm1 and drm2 drivers. drm-kmod kept the same name at the cost of conflict with in-base drm2. --- src/intel_device.c.orig 2021-01-15 20:59:05 UTC +++ src/intel_device.c @@ -204,6 +204,7 @@ static inline struct intel_device *intel } static const char *kernel_module_names[] ={ + "i915kms", "i915", NULL, }; @@ -424,6 +425,10 @@ static int __intel_open_device__legacy(c "pci:%04x:%02x:%02x.%d", pci->domain, pci->bus, pci->dev, pci->func); +#if defined(__DragonFly__) + /* assume modesetting for i915, allow multiple loads and no fbcon */ + load_i915_kernel_module(); +#else ret = drmCheckModesettingSupported(id); if (ret) { if (load_i915_kernel_module() == 0) @@ -433,6 +438,7 @@ static int __intel_open_device__legacy(c /* Be nice to the user and load fbcon too */ (void)xf86LoadKernelModule("fbcon"); } +#endif return fd_set_nonblock(drmOpen(NULL, id)); } [FILE:8142:patches/patch-src_intel__list.h] kgem.c:2864:22: error: variable 'bo' is uninitialized when used here [-Werror,-Wuninitialized] list_for_each_entry(bo, &kgem->snoop, list) { ^~ ../../src/intel_list.h:328:45: note: expanded from macro 'list_for_each_entry' for (pos = __container_of((head)->next, pos, member); \ ^~~ ../../src/intel_list.h:309:41: note: expanded from macro '__container_of' (void *)((char *)(ptr) - ((char *)&(sample)->member - (char *)(sample))) ^~~~~~ kgem.c:2849:20: note: initialize the variable 'bo' to silence this warning struct kgem_bo *bo, *first = NULL; ^ = NULL kgem.c:3118:27: error: variable 'bo' is uninitialized when used here [-Werror,-Wuninitialized] list_for_each_entry_safe(bo, next, &kgem->flushing, request) { ^~ ../../src/intel_list.h:345:45: note: expanded from macro 'list_for_each_entry_safe' for (pos = __container_of((head)->next, pos, member), \ ^~~ ../../src/intel_list.h:309:41: note: expanded from macro '__container_of' (void *)((char *)(ptr) - ((char *)&(sample)->member - (char *)(sample))) ^~~~~~ kgem.c:3115:20: note: initialize the variable 'bo' to silence this warning struct kgem_bo *bo, *next; ^ = NULL kgem.c:3429:27: error: variable 'bo' is uninitialized when used here [-Werror,-Wuninitialized] list_for_each_entry_safe(bo, next, &rq->buffers, request) { ^~ ../../src/intel_list.h:345:45: note: expanded from macro 'list_for_each_entry_safe' for (pos = __container_of((head)->next, pos, member), \ ^~~ ../../src/intel_list.h:309:41: note: expanded from macro '__container_of' (void *)((char *)(ptr) - ((char *)&(sample)->member - (char *)(sample))) ^~~~~~ kgem.c:3425:20: note: initialize the variable 'bo' to silence this warning struct kgem_bo *bo, *next; ^ = NULL kgem.c:3541:27: error: variable 'bo' is uninitialized when used here [-Werror,-Wuninitialized] list_for_each_entry_safe(bo, next, &kgem->batch_buffers, base.list) { ^~ ../../src/intel_list.h:345:45: note: expanded from macro 'list_for_each_entry_safe' for (pos = __container_of((head)->next, pos, member), \ ^~~ ../../src/intel_list.h:309:41: note: expanded from macro '__container_of' (void *)((char *)(ptr) - ((char *)&(sample)->member - (char *)(sample))) ^~~~~~ kgem.c:3539:24: note: initialize the variable 'bo' to silence this warning struct kgem_buffer *bo, *next; ^ = NULL kgem.c:3930:22: error: variable 'bo' is uninitialized when used here [-Werror,-Wuninitialized] list_for_each_entry(bo, list, list) { ^~ ../../src/intel_list.h:328:45: note: expanded from macro 'list_for_each_entry' for (pos = __container_of((head)->next, pos, member); \ ^~~ ../../src/intel_list.h:309:41: note: expanded from macro '__container_of' (void *)((char *)(ptr) - ((char *)&(sample)->member - (char *)(sample))) ^~~~~~ kgem.c:3928:20: note: initialize the variable 'bo' to silence this warning struct kgem_bo *bo; ^ = NULL kgem.c:4670:23: error: variable 'bo' is uninitialized when used here [-Werror,-Wuninitialized] list_for_each_entry(bo, cache, vma) { ^~ ../../src/intel_list.h:328:45: note: expanded from macro 'list_for_each_entry' for (pos = __container_of((head)->next, pos, member); \ ^~~ ../../src/intel_list.h:309:41: note: expanded from macro '__container_of' (void *)((char *)(ptr) - ((char *)&(sample)->member - (char *)(sample))) ^~~~~~ kgem.c:4576:20: note: initialize the variable 'bo' to silence this warning struct kgem_bo *bo, *first = NULL; ^ = NULL kgem.c:5411:31: error: variable 'bo' is uninitialized when used here [-Werror,-Wuninitialized] list_for_each_entry_reverse(bo, &kgem->scanout, list) { ^~ ../../src/intel_list.h:333:45: note: expanded from macro 'list_for_each_entry_reverse' for (pos = __container_of((head)->prev, pos, member); \ ^~~ ../../src/intel_list.h:309:41: note: expanded from macro '__container_of' (void *)((char *)(ptr) - ((char *)&(sample)->member - (char *)(sample))) ^~~~~~ kgem.c:5380:20: note: initialize the variable 'bo' to silence this warning struct kgem_bo *bo; ^ = NULL kgem.c:7225:22: error: variable 'bo' is uninitialized when used here [-Werror,-Wuninitialized] list_for_each_entry(bo, buffers, request) { ^~ ../../src/intel_list.h:328:45: note: expanded from macro 'list_for_each_entry' for (pos = __container_of((head)->next, pos, member); \ ^~~ ../../src/intel_list.h:309:41: note: expanded from macro '__container_of' (void *)((char *)(ptr) - ((char *)&(sample)->member - (char *)(sample))) ^~~~~~ kgem.c:7223:20: note: initialize the variable 'bo' to silence this warning struct kgem_bo *bo; ^ = NULL kgem.c:7517:22: error: variable 'bo' is uninitialized when used here [-Werror,-Wuninitialized] list_for_each_entry(bo, &kgem->batch_buffers, base.list) { ^~ ../../src/intel_list.h:328:45: note: expanded from macro 'list_for_each_entry' for (pos = __container_of((head)->next, pos, member); \ ^~~ ../../src/intel_list.h:309:41: note: expanded from macro '__container_of' (void *)((char *)(ptr) - ((char *)&(sample)->member - (char *)(sample))) ^~~~~~ kgem.c:7503:24: note: initialize the variable 'bo' to silence this warning struct kgem_buffer *bo; ^ = NULL --- src/intel_list.h.orig 2021-01-15 20:59:05 UTC +++ src/intel_list.h @@ -325,12 +325,12 @@ list_is_empty(const struct list *head) * */ #define list_for_each_entry(pos, head, member) \ - for (pos = __container_of((head)->next, pos, member); \ + for (pos = NULL, pos = __container_of((head)->next, pos, member); \ &pos->member != (head); \ pos = __container_of(pos->member.next, pos, member)) -#define list_for_each_entry_reverse(pos, head, member) \ - for (pos = __container_of((head)->prev, pos, member); \ +#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)) @@ -342,7 +342,7 @@ list_is_empty(const struct list *head) * See list_for_each_entry for more details. */ #define list_for_each_entry_safe(pos, tmp, head, member) \ - for (pos = __container_of((head)->next, pos, 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)) [FILE:1144:patches/patch-src_legacy_i810_i810__dri.c] $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 2021-01-15 20:59:05 UTC +++ 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; } [FILE:4511:patches/patch-src_sna_kgem.c] https://gitlab.freedesktop.org/xorg/driver/xf86-video-intel/-/issues/171 https://gitlab.freedesktop.org/E5ten/xf86-video-intel/-/commit/a92ccaf05efe8f11b3c5cd217d48ad3cf4caa090 --- src/sna/kgem.c.orig 2021-01-15 20:59:05 UTC +++ src/sna/kgem.c @@ -71,7 +71,11 @@ search_snoop_cache(struct kgem *kgem, un #define DBG_NO_USERPTR 0 #define DBG_NO_UNSYNCHRONIZED_USERPTR 0 #define DBG_NO_COHERENT_MMAP_GTT 0 +#if defined __DragonFly__ +#define DBG_NO_LLC 1 +#else #define DBG_NO_LLC 0 +#endif #define DBG_NO_SEMAPHORES 0 #define DBG_NO_MADV 0 #define DBG_NO_UPLOAD_CACHE 0 @@ -1189,13 +1193,18 @@ static int gem_param(struct kgem *kgem, static bool test_has_execbuffer2(struct kgem *kgem) { struct drm_i915_gem_execbuffer2 execbuf; + int ret; memset(&execbuf, 0, sizeof(execbuf)); execbuf.buffer_count = 1; - return do_ioctl(kgem->fd, - DRM_IOCTL_I915_GEM_EXECBUFFER2, - &execbuf) == -EFAULT; + ret = do_ioctl(kgem->fd, DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf); +#ifdef __FreeBSD__ + /* XXX FreeBSD returns ENOENT instead of EFAULT. */ + if (ret == -ENOENT) + return true; +#endif + return ret == -EFAULT; } static bool test_has_no_reloc(struct kgem *kgem) @@ -2861,7 +2870,7 @@ static bool kgem_bo_move_to_cache(struct static struct kgem_bo * search_snoop_cache(struct kgem *kgem, unsigned int num_pages, unsigned flags) { - struct kgem_bo *bo, *first = NULL; + struct kgem_bo *bo = NULL, *first = NULL; DBG(("%s: num_pages=%d, flags=%x\n", __FUNCTION__, num_pages, flags)); @@ -3127,7 +3136,7 @@ void kgem_retire__buffers(struct kgem *k static bool kgem_retire__flushing(struct kgem *kgem) { - struct kgem_bo *bo, *next; + struct kgem_bo *bo = NULL, *next; bool retired = false; list_for_each_entry_safe(bo, next, &kgem->flushing, request) { @@ -3425,7 +3434,7 @@ static void kgem_commit__check_reloc(str #ifndef NDEBUG static void kgem_commit__check_buffers(struct kgem *kgem) { - struct kgem_buffer *bo; + struct kgem_buffer *bo = NULL; list_for_each_entry(bo, &kgem->active_buffers, base.list) assert(bo->base.exec == NULL); @@ -3437,7 +3446,7 @@ static void kgem_commit__check_buffers(s static void kgem_commit(struct kgem *kgem) { struct kgem_request *rq = kgem->next_request; - struct kgem_bo *bo, *next; + struct kgem_bo *bo = NULL, *next; kgem_commit__check_reloc(kgem); @@ -3551,7 +3560,7 @@ static void kgem_close_inactive(struct k static void kgem_finish_buffers(struct kgem *kgem) { - struct kgem_buffer *bo, *next; + struct kgem_buffer *bo = NULL, *next; list_for_each_entry_safe(bo, next, &kgem->batch_buffers, base.list) { DBG(("%s: buffer handle=%d, used=%d, exec?=%d, write=%d, mmapped=%s, refcnt=%d\n", @@ -3940,7 +3949,7 @@ static int compact_batch_surface(struct static struct kgem_bo *first_available(struct kgem *kgem, struct list *list) { - struct kgem_bo *bo; + struct kgem_bo *bo = NULL; list_for_each_entry(bo, list, list) { assert(bo->refcnt > 0); @@ -4224,7 +4233,7 @@ void _kgem_submit(struct kgem *kgem) kgem->nreloc, kgem->nexec, kgem->nfence, kgem->aperture, kgem->aperture_fenced, kgem->aperture_high, kgem->aperture_total, -ret); for (i = 0; i < kgem->nexec; i++) { - struct kgem_bo *bo, *found = NULL; + struct kgem_bo *bo = NULL, *found = NULL; list_for_each_entry(bo, &kgem->next_request->buffers, request) { if (bo->handle == kgem->exec[i].handle) { @@ -4588,7 +4597,7 @@ bool kgem_cleanup_cache(struct kgem *kge static struct kgem_bo * search_linear_cache(struct kgem *kgem, unsigned int num_pages, unsigned flags) { - struct kgem_bo *bo, *first = NULL; + struct kgem_bo *bo = NULL, *first = NULL; bool use_active = (flags & CREATE_INACTIVE) == 0; struct list *cache; @@ -5392,7 +5401,7 @@ struct kgem_bo *kgem_create_2d(struct kg uint32_t flags) { struct list *cache; - struct kgem_bo *bo; + struct kgem_bo *bo = NULL; uint32_t pitch, tiled_height, size; uint32_t handle; int i, bucket, retry; @@ -7245,7 +7254,7 @@ void kgem_bo_sync__gtt(struct kgem *kgem void kgem_clear_dirty(struct kgem *kgem) { struct list * const buffers = &kgem->next_request->buffers; - struct kgem_bo *bo; + struct kgem_bo *bo = NULL; list_for_each_entry(bo, buffers, request) { if (!bo->gpu_dirty) @@ -7525,7 +7534,7 @@ struct kgem_bo *kgem_create_buffer(struc uint32_t size, uint32_t flags, void **ret) { - struct kgem_buffer *bo; + struct kgem_buffer *bo = NULL; unsigned offset, alloc; struct kgem_bo *old; [FILE:856:patches/patch-src_sna_kgem__debug.c] $NetBSD: patch-src_sna_kgem__debug.c,v 1.1 2022/03/15 18:53:42 tnn Exp $ https://gitlab.freedesktop.org/xorg/driver/xf86-video-intel/-/issues/171 https://gitlab.freedesktop.org/E5ten/xf86-video-intel/-/commit/a92ccaf05efe8f11b3c5cd217d48ad3cf4caa090 --- src/sna/kgem_debug.c.orig 2021-01-15 20:59:05 UTC +++ src/sna/kgem_debug.c @@ -56,7 +56,7 @@ struct kgem_bo * kgem_debug_get_bo_for_reloc_entry(struct kgem *kgem, struct drm_i915_gem_relocation_entry *reloc) { - struct kgem_bo *bo; + struct kgem_bo *bo = NULL; if (reloc == NULL) return NULL; @@ -86,7 +86,7 @@ static int kgem_debug_handle_is_fenced(s static int kgem_debug_handle_tiling(struct kgem *kgem, uint32_t handle) { - struct kgem_bo *bo; + struct kgem_bo *bo = NULL; list_for_each_entry(bo, &kgem->next_request->buffers, request) if (bo->target_handle == handle) [FILE:851:patches/patch-src_sna_sna__damage.c] $NetBSD: patch-src_sna_sna__damage.c,v 1.1 2022/03/15 18:53:42 tnn Exp $ https://gitlab.freedesktop.org/xorg/driver/xf86-video-intel/-/issues/171 https://gitlab.freedesktop.org/E5ten/xf86-video-intel/-/commit/a92ccaf05efe8f11b3c5cd217d48ad3cf4caa090 --- src/sna/sna_damage.c.orig 2021-01-15 20:59:05 UTC +++ src/sna/sna_damage.c @@ -215,7 +215,7 @@ static void __sna_damage_reduce(struct s int n, nboxes; BoxPtr boxes, free_boxes = NULL; pixman_region16_t *region = &damage->region; - struct sna_damage_box *iter; + struct sna_damage_box *iter = NULL; assert(damage->mode != DAMAGE_ALL); assert(damage->dirty); @@ -1808,7 +1808,7 @@ void _sna_damage_debug_get_region(struct { int n, nboxes; BoxPtr boxes; - struct sna_damage_box *iter; + struct sna_damage_box *iter = NULL; RegionCopy(r, &damage->region); if (!damage->dirty) [FILE:614:patches/patch-src_sna_sna__dri3.c] $NetBSD: patch-src_sna_sna__dri3.c,v 1.1 2022/03/15 18:53:42 tnn Exp $ https://gitlab.freedesktop.org/xorg/driver/xf86-video-intel/-/issues/171 https://gitlab.freedesktop.org/E5ten/xf86-video-intel/-/commit/a92ccaf05efe8f11b3c5cd217d48ad3cf4caa090 --- src/sna/sna_dri3.c.orig 2021-01-15 20:59:05 UTC +++ src/sna/sna_dri3.c @@ -175,7 +175,7 @@ static PixmapPtr sna_dri3_pixmap_from_fd { struct sna *sna = to_sna_from_screen(screen); PixmapPtr pixmap; - struct sna_pixmap *priv; + struct sna_pixmap *priv = NULL; struct kgem_bo *bo; DBG(("%s(fd=%d, width=%d, height=%d, stride=%d, depth=%d, bpp=%d)\n", [FILE:977:patches/patch-src_sna_sna__present.c] $NetBSD: patch-src_sna_sna__present.c,v 1.1 2022/03/15 18:53:42 tnn Exp $ https://gitlab.freedesktop.org/xorg/driver/xf86-video-intel/-/issues/171 https://gitlab.freedesktop.org/E5ten/xf86-video-intel/-/commit/a92ccaf05efe8f11b3c5cd217d48ad3cf4caa090 --- src/sna/sna_present.c.orig 2021-01-15 20:59:05 UTC +++ src/sna/sna_present.c @@ -376,7 +376,7 @@ sna_present_get_crtc(WindowPtr window) static void add_keepalive(struct sna *sna, xf86CrtcPtr crtc, uint64_t msc) { struct list *q = sna_crtc_vblank_queue(crtc); - struct sna_present_event *info, *tmp; + struct sna_present_event *info, *tmp = NULL; union drm_wait_vblank vbl; list_for_each_entry(tmp, q, link) { @@ -480,7 +480,7 @@ static int sna_present_queue_vblank(RRCrtcPtr crtc, uint64_t event_id, uint64_t msc) { struct sna *sna = to_sna_from_screen(crtc->pScreen); - struct sna_present_event *info, *tmp; + struct sna_present_event *info, *tmp = NULL; const struct ust_msc *swap; struct list *q; [FILE:561:patches/patch-src_sna_sna__video.c] --- src/sna/sna_video.c.orig 2021-01-15 20:59:05 UTC +++ src/sna/sna_video.c @@ -59,7 +59,7 @@ #include "intel_options.h" #include -#if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__NetBSD__) +#if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) #include #include #ifdef __OpenBSD__ @@ -67,6 +67,9 @@ #else #define bswap_32 bswap32 #endif +#elif defined(__sun) +#include +#define bswap_32 BSWAP_32 #else #include #endif [FILE:592:patches/patch-src_uxa_intel__batchbuffer.c] $NetBSD: patch-src_uxa_intel__batchbuffer.c,v 1.1 2022/03/15 18:53:42 tnn Exp $ Similar to https://gitlab.freedesktop.org/xorg/driver/xf86-video-intel/-/issues/171 --- src/uxa/intel_batchbuffer.c.orig 2021-01-15 20:59:05 UTC +++ src/uxa/intel_batchbuffer.c @@ -142,7 +142,7 @@ void intel_batch_teardown(ScrnInfoPtr sc static void intel_batch_do_flush(ScrnInfoPtr scrn) { intel_screen_private *intel = intel_get_screen_private(scrn); - struct intel_uxa_pixmap *priv; + struct intel_uxa_pixmap *priv = NULL; list_for_each_entry(priv, &intel->batch_pixmaps, batch) priv->dirty = 0; [FILE:4751:patches/patch-test_present-speed.c] present-speed.c:317:23: error: variable 'b' is uninitialized when used here [-Werror,-Wuninitialized] list_for_each_entry(b, &mru, link) ^ present-speed.c:115:45: note: expanded from macro 'list_for_each_entry' for (pos = __container_of((head)->next, pos, member); \ ^~~ present-speed.c:112:41: note: expanded from macro '__container_of' (void *)((char *)(ptr) - ((char *)&(sample)->member - (char *)(sample))) ^~~~~~ present-speed.c:297:19: note: initialize the variable 'b' to silence this warning struct buffer *b; ^ = NULL present-speed.c:229:19: error: variable 'tmp' is used uninitialized whenever its declaration is reached [-Werror,-Wsometimes-uninitialized] struct buffer *tmp, *b = NULL; ~~~~~~~~~~~~~~~^~~ present-speed.c:231:24: note: uninitialized use occurs here list_for_each_entry(tmp, &mru, link) { ^~~ present-speed.c:115:45: note: expanded from macro 'list_for_each_entry' for (pos = __container_of((head)->next, pos, member); \ ^~~ present-speed.c:112:41: note: expanded from macro '__container_of' (void *)((char *)(ptr) - ((char *)&(sample)->member - (char *)(sample))) ^~~~~~ present-speed.c:229:22: note: initialize the variable 'tmp' to silence this warning struct buffer *tmp, *b = NULL; ^ = NULL present-speed.c:557:24: error: variable 'b' is uninitialized when used here [-Werror,-Wuninitialized] list_for_each_entry(b, &pp[i].mru, link) ^ present-speed.c:115:45: note: expanded from macro 'list_for_each_entry' for (pos = __container_of((head)->next, pos, member); \ ^~~ present-speed.c:112:41: note: expanded from macro '__container_of' (void *)((char *)(ptr) - ((char *)&(sample)->member - (char *)(sample))) ^~~~~~ present-speed.c:537:20: note: initialize the variable 'b' to silence this warning struct buffer *b; ^ = NULL present-speed.c:467:19: error: variable 'tmp' is used uninitialized whenever its declaration is reached [-Werror,-Wsometimes-uninitialized] struct buffer *tmp, *b = NULL; ~~~~~~~~~~~~~~~^~~ present-speed.c:469:24: note: uninitialized use occurs here list_for_each_entry(tmp, &pp[i].mru, link) { ^~~ present-speed.c:115:45: note: expanded from macro 'list_for_each_entry' for (pos = __container_of((head)->next, pos, member); \ ^~~ present-speed.c:112:41: note: expanded from macro '__container_of' (void *)((char *)(ptr) - ((char *)&(sample)->member - (char *)(sample))) ^~~~~~ present-speed.c:467:22: note: initialize the variable 'tmp' to silence this warning struct buffer *tmp, *b = NULL; ^ = NULL --- test/present-speed.c.orig 2021-01-15 20:59:05 UTC +++ test/present-speed.c @@ -226,7 +226,7 @@ static void run(Display *dpy, Window win clock_gettime(CLOCK_MONOTONIC, &start); do { for (n = 0; n < 1000; n++) { - struct buffer *tmp, *b = NULL; + struct buffer *tmp = NULL, *b = NULL; retry: list_for_each_entry(tmp, &mru, link) { if (tmp->fence.xid) @@ -294,7 +294,7 @@ retry: } while (end.tv_sec < start.tv_sec + 10); if (options & DRI3) { - struct buffer *b; + struct buffer *b = NULL; XID pixmap; pixmap = xcb_generate_id(c); @@ -464,7 +464,7 @@ static void perpixel(Display *dpy, clock_gettime(CLOCK_MONOTONIC, &start); do { for (i = 0; i < sz; i++) { - struct buffer *tmp, *b = NULL; + struct buffer *tmp = NULL, *b = NULL; retry: list_for_each_entry(tmp, &pp[i].mru, link) { if (tmp->fence.xid) @@ -534,7 +534,7 @@ retry: for (i = 0; i < sz; i++) { if (options & DRI3) { int depth = DefaultDepth(dpy, DefaultScreen(dpy)); - struct buffer *b; + struct buffer *b = NULL; XID pixmap; pixmap = xcb_generate_id(c); [FILE:284:dragonfly/patch-src_sna_sna__threads.c] --- src/sna/sna_threads.c.orig 2018-12-03 09:01:25 UTC +++ src/sna/sna_threads.c @@ -29,6 +29,9 @@ #include "config.h" #endif +#define _WITH_GETLINE /* to expose getline() in stdio.h on FreeBSD */ +#include /* for getline() */ + #include "sna.h" #include