Module Name:    xsrc
Committed By:   mrg
Date:           Sun Mar  9 22:23:47 UTC 2025

Modified Files:
        xsrc/external/mit/xf86-video-nouveau/dist/src: compat-api.h
            drmmode_display.c nouveau_xv.c nv_driver.c nv_include.h nv_proto.h

Log Message:
merge xf86-video-nouveau 1.0.18


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 \
    xsrc/external/mit/xf86-video-nouveau/dist/src/compat-api.h
cvs rdiff -u -r1.12 -r1.13 \
    xsrc/external/mit/xf86-video-nouveau/dist/src/drmmode_display.c
cvs rdiff -u -r1.4 -r1.5 \
    xsrc/external/mit/xf86-video-nouveau/dist/src/nouveau_xv.c
cvs rdiff -u -r1.5 -r1.6 \
    xsrc/external/mit/xf86-video-nouveau/dist/src/nv_driver.c
cvs rdiff -u -r1.3 -r1.4 \
    xsrc/external/mit/xf86-video-nouveau/dist/src/nv_include.h
cvs rdiff -u -r1.7 -r1.8 \
    xsrc/external/mit/xf86-video-nouveau/dist/src/nv_proto.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: xsrc/external/mit/xf86-video-nouveau/dist/src/compat-api.h
diff -u xsrc/external/mit/xf86-video-nouveau/dist/src/compat-api.h:1.2 xsrc/external/mit/xf86-video-nouveau/dist/src/compat-api.h:1.3
--- xsrc/external/mit/xf86-video-nouveau/dist/src/compat-api.h:1.2	Fri Jul 15 04:13:16 2022
+++ xsrc/external/mit/xf86-video-nouveau/dist/src/compat-api.h	Sun Mar  9 22:23:47 2025
@@ -28,44 +28,6 @@
 #ifndef COMPAT_API_H
 #define COMPAT_API_H
 
-#ifndef GLYPH_HAS_GLYPH_PICTURE_ACCESSOR
-#define GetGlyphPicture(g, s) GlyphPicture((g))[(s)->myNum]
-#define SetGlyphPicture(g, s, p) GlyphPicture((g))[(s)->myNum] = p
-#endif
-
-#ifndef XF86_HAS_SCRN_CONV
-#define xf86ScreenToScrn(s) xf86Screens[(s)->myNum]
-#define xf86ScrnToScreen(s) screenInfo.screens[(s)->scrnIndex]
-#endif
-
-#ifndef XF86_SCRN_INTERFACE
-
-#define SCRN_ARG_TYPE int
-#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = xf86Screens[(arg1)]
-
-#define SCREEN_ARG_TYPE int
-#define SCREEN_PTR(arg1) ScreenPtr pScreen = screenInfo.screens[(arg1)]
-
-#define SCREEN_INIT_ARGS_DECL int index, ScreenPtr pScreen, int argc, char **argv
-
-#define BLOCKHANDLER_ARGS_DECL int arg, pointer blockData, pointer pTimeout, pointer pReadmask
-#define BLOCKHANDLER_ARGS arg, blockData, pTimeout, pReadmask
-
-#define CLOSE_SCREEN_ARGS_DECL int scrnIndex, ScreenPtr pScreen
-#define CLOSE_SCREEN_ARGS scrnIndex, pScreen
-
-#define ADJUST_FRAME_ARGS_DECL int arg, int x, int y, int flags
-
-#define SWITCH_MODE_ARGS_DECL int arg, DisplayModePtr mode, int flags
-
-#define FREE_SCREEN_ARGS_DECL int arg, int flags
-#define FREE_SCREEN_ARGS(x) (x)->scrnIndex, 0
-
-#define VT_FUNC_ARGS_DECL int arg, int flags
-#define VT_FUNC_ARGS(flags) pScrn->scrnIndex, (flags)
-
-#define XF86_ENABLEDISABLEFB_ARG(x) ((x)->scrnIndex)
-#else
 #define SCRN_ARG_TYPE ScrnInfoPtr
 #define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = (arg1)
 
@@ -102,10 +64,9 @@
 
 #endif
 
-#if ABI_VIDEODRV_VERSION >= SET_ABI_VERSION(25, 2)
-#define current_master current_primary
-#define master_pixmap primary_pixmap
-#define slave_dst secondary_dst
-#endif
-
+#if ABI_VIDEODRV_VERSION < SET_ABI_VERSION(25, 2)
+#define secondary_dst slave_dst
+#define secondary_list slave_list
+#define secondary_head slave_head
+#define is_output_secondary is_output_slave
 #endif

Index: xsrc/external/mit/xf86-video-nouveau/dist/src/drmmode_display.c
diff -u xsrc/external/mit/xf86-video-nouveau/dist/src/drmmode_display.c:1.12 xsrc/external/mit/xf86-video-nouveau/dist/src/drmmode_display.c:1.13
--- xsrc/external/mit/xf86-video-nouveau/dist/src/drmmode_display.c:1.12	Tue Apr 27 01:22:55 2021
+++ xsrc/external/mit/xf86-video-nouveau/dist/src/drmmode_display.c	Sun Mar  9 22:23:47 2025
@@ -119,7 +119,7 @@ drmmode_crtc(xf86CrtcPtr crtc)
 }
 
 Bool
-drmmode_crtc_on(xf86CrtcPtr crtc)
+xf86_crtc_on(xf86CrtcPtr crtc)
 {
     drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
 
@@ -141,14 +141,6 @@ drmmode_swap(ScrnInfoPtr scrn, uint32_t 
 	drmmode->fb_id = next;
 }
 
-#if !HAVE_XORG_LIST
-#define xorg_list                       list
-#define xorg_list_for_each_entry        list_for_each_entry
-#define xorg_list_for_each_entry_safe   list_for_each_entry_safe
-#define xorg_list_append                list_append
-#define xorg_list_del                   list_del
-#endif
-
 struct drmmode_event {
 	struct xorg_list head;
 	drmmode_ptr drmmode;
@@ -347,99 +339,6 @@ drmmode_fbcon_copy(ScreenPtr pScreen)
 {
 	ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
 	NVPtr pNv = NVPTR(pScrn);
-#if XORG_VERSION_CURRENT >= 10999001
-	ExaDriverPtr exa = pNv->EXADriverPtr;
-	xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
-	struct nouveau_bo *bo = NULL;
-	PixmapPtr pspix, pdpix = NULL;
-	drmModeFBPtr fb;
-	unsigned w = pScrn->virtualX, h = pScrn->virtualY;
-	int i, ret, fbcon_id = 0;
-
-	if (pNv->AccelMethod != EXA)
-		goto fallback;
-
-	pdpix = drmmode_pixmap_wrap(pScreen, pScrn->virtualX,
-				    pScrn->virtualY, pScrn->depth,
-				    pScrn->bitsPerPixel, pScrn->displayWidth *
-				    pScrn->bitsPerPixel / 8, pNv->scanout,
-				    NULL);
-	if (!pdpix) {
-		xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
-			   "Failed to init scanout pixmap for fbcon mirror\n");
-		goto fallback;
-	}
-
-	for (i = 0; i < xf86_config->num_crtc; i++) {
-		drmmode_crtc_private_ptr drmmode_crtc =
-			xf86_config->crtc[i]->driver_private;
-
-		if (drmmode_crtc->mode_crtc->buffer_id)
-			fbcon_id = drmmode_crtc->mode_crtc->buffer_id;
-	}
-
-	if (!fbcon_id)
-		goto fallback;
-
-	fb = drmModeGetFB(pNv->dev->fd, fbcon_id);
-	if (!fb) {
-		xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
-			   "Failed to retrieve fbcon fb: id %d\n", fbcon_id);
-		goto fallback;
-	}
-
-	if (fb->depth != pScrn->depth || fb->width != w || fb->height != h) {
-		drmFree(fb);
-		goto fallback;
-	}
-
-	ret = nouveau_bo_wrap(pNv->dev, fb->handle, &bo);
-	if (ret) {
-		xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
-			   "Failed to retrieve fbcon buffer: handle=0x%08x\n",
-			   fb->handle);
-		drmFree(fb);
-		goto fallback;
-	}
-
-	pspix = drmmode_pixmap_wrap(pScreen, fb->width, fb->height,
-				    fb->depth, fb->bpp, fb->pitch, bo, NULL);
-	nouveau_bo_ref(NULL, &bo);
-	drmFree(fb);
-	if (!pspix) {
-		xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
-			   "Failed to create pixmap for fbcon contents\n");
-		goto fallback;
-	}
-
-	exa->PrepareCopy(pspix, pdpix, 0, 0, GXcopy, ~0);
-	exa->Copy(pdpix, 0, 0, 0, 0, w, h);
-	exa->DoneCopy(pdpix);
-	PUSH_KICK(pNv->pushbuf);
-
-	/* wait for completion before continuing, avoids seeing a momentary
-	 * flash of "corruption" on occasion
-	 */
-	nouveau_bo_wait(pNv->scanout, NOUVEAU_BO_RDWR, pNv->client);
-
-	pScreen->DestroyPixmap(pdpix);
-	pScreen->DestroyPixmap(pspix);
-	pScreen->canDoBGNoneRoot = TRUE;
-	return;
-
-fallback:
-	if (pdpix) {
-		if (exa->PrepareSolid(pdpix, GXcopy, ~0, 0)) {
-			exa->Solid(pdpix, 0, 0, w, h);
-			exa->DoneSolid(pdpix);
-			PUSH_KICK(pNv->pushbuf);
-			nouveau_bo_wait(pNv->scanout, NOUVEAU_BO_RDWR, pNv->client);
-			pScreen->DestroyPixmap(pdpix);
-			return;
-		}
-		pScreen->DestroyPixmap(pdpix);
-	}
-#endif
 	if (nouveau_bo_map(pNv->scanout, NOUVEAU_BO_WR, pNv->client))
 		return;
 	memset(pNv->scanout->map, 0x00, pNv->scanout->size);
@@ -745,12 +644,6 @@ drmmode_set_scanout_pixmap(xf86CrtcPtr c
 			if (max_height < iter->mode.VDisplay)
 				max_height = iter->mode.VDisplay;
 		}
-#if !defined(HAS_DIRTYTRACKING_ROTATION) && !defined(HAS_DIRTYTRACKING2)
-	if (iter != crtc) {
-		ErrorF("Cannot do multiple crtcs without X server dirty tracking 2 interface\n");
-		return FALSE;
-	}
-#endif
 	}
 
 	if (total_width != screenpix->drawable.width ||
@@ -768,12 +661,8 @@ drmmode_set_scanout_pixmap(xf86CrtcPtr c
 
 #ifdef HAS_DIRTYTRACKING_DRAWABLE_SRC
 	PixmapStartDirtyTracking(&ppix->drawable, screenpix, 0, 0, this_x, 0, RR_Rotate_0);
-#elif defined(HAS_DIRTYTRACKING_ROTATION)
-	PixmapStartDirtyTracking(ppix, screenpix, 0, 0, this_x, 0, RR_Rotate_0);
-#elif defined(HAS_DIRTYTRACKING2)
-	PixmapStartDirtyTracking2(ppix, screenpix, 0, 0, this_x, 0);
 #else
-	PixmapStartDirtyTracking(ppix, screenpix, 0, 0);
+	PixmapStartDirtyTracking(ppix, screenpix, 0, 0, this_x, 0, RR_Rotate_0);
 #endif
 	return TRUE;
 }
@@ -810,7 +699,7 @@ drmmode_crtc_init(ScrnInfoPtr pScrn, drm
 	if (crtc == NULL)
 		return 0;
 
-	drmmode_crtc = xnfcalloc(sizeof(drmmode_crtc_private_rec), 1);
+	drmmode_crtc = XNFcallocarray(sizeof(drmmode_crtc_private_rec), 1);
 	drmmode_crtc->mode_crtc = drmModeGetCrtc(drmmode->fd,
 						 mode_res->crtcs[num]);
 	drmmode_crtc->drmmode = drmmode;
@@ -968,7 +857,7 @@ drmmode_output_get_modes(xf86OutputPtr o
 
 	/* modes should already be available */
 	for (i = 0; i < koutput->count_modes; i++) {
-		Mode = xnfalloc(sizeof(DisplayModeRec));
+		Mode = XNFalloc(sizeof(DisplayModeRec));
 
 		drmmode_ConvertFromKMode(output->scrn, &koutput->modes[i],
 					 Mode);
@@ -1564,9 +1453,6 @@ drmmode_xf86crtc_resize(ScrnInfoPtr scrn
 	screen->ModifyPixmapHeader(ppix, width, height, -1, -1, pitch,
 				   (pNv->AccelMethod > NONE || pNv->ShadowPtr) ?
 				   pNv->ShadowPtr : pNv->scanout->map);
-#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 9
-	scrn->pixmapPrivate.ptr = ppix->devPrivate.ptr;
-#endif
 
 	if (pNv->AccelMethod == EXA) {
 		pNv->EXADriverPtr->PrepareSolid(ppix, GXcopy, ~0, 0);
@@ -1617,7 +1503,7 @@ Bool drmmode_pre_init(ScrnInfoPtr pScrn,
 	unsigned int crtcs_needed = 0;
 	int crtcshift;
 
-	drmmode = xnfcalloc(sizeof(*drmmode), 1);
+	drmmode = XNFcallocarray(sizeof(*drmmode), 1);
 	drmmode->fd = fd;
 	drmmode->fb_id = 0;
 
@@ -1867,11 +1753,7 @@ drmmode_udev_notify(int fd, int notify, 
 
 static bool has_randr(void)
 {
-#if HAS_DIXREGISTERPRIVATEKEY
 	return dixPrivateKeyRegistered(rrPrivKey);
-#else
-	return *rrPrivKey;
-#endif
 }
 
 static void

Index: xsrc/external/mit/xf86-video-nouveau/dist/src/nouveau_xv.c
diff -u xsrc/external/mit/xf86-video-nouveau/dist/src/nouveau_xv.c:1.4 xsrc/external/mit/xf86-video-nouveau/dist/src/nouveau_xv.c:1.5
--- xsrc/external/mit/xf86-video-nouveau/dist/src/nouveau_xv.c:1.4	Sun Mar  3 09:44:37 2019
+++ xsrc/external/mit/xf86-video-nouveau/dist/src/nouveau_xv.c	Sun Mar  9 22:23:47 2025
@@ -204,44 +204,164 @@ static XF86ImageRec NVImages[NUM_IMAGES_
 };
 
 static void
-nouveau_box_intersect(BoxPtr dest, BoxPtr a, BoxPtr b)
+box_intersect(BoxPtr dest, BoxPtr a, BoxPtr b)
 {
-    dest->x1 = a->x1 > b->x1 ? a->x1 : b->x1;
-    dest->x2 = a->x2 < b->x2 ? a->x2 : b->x2;
-    dest->y1 = a->y1 > b->y1 ? a->y1 : b->y1;
-    dest->y2 = a->y2 < b->y2 ? a->y2 : b->y2;
+	dest->x1 = a->x1 > b->x1 ? a->x1 : b->x1;
+	dest->x2 = a->x2 < b->x2 ? a->x2 : b->x2;
+	if (dest->x1 >= dest->x2) {
+		dest->x1 = dest->x2 = dest->y1 = dest->y2 = 0;
+		return;
+	}
+
+	dest->y1 = a->y1 > b->y1 ? a->y1 : b->y1;
+	dest->y2 = a->y2 < b->y2 ? a->y2 : b->y2;
+	if (dest->y1 >= dest->y2)
+		dest->x1 = dest->x2 = dest->y1 = dest->y2 = 0;
+}
 
-    if (dest->x1 >= dest->x2 || dest->y1 >= dest->y2)
-	dest->x1 = dest->x2 = dest->y1 = dest->y2 = 0;
+static int
+box_area(BoxPtr box)
+{
+    return (int) (box->x2 - box->x1) * (int) (box->y2 - box->y1);
 }
 
 static void
-nouveau_crtc_box(xf86CrtcPtr crtc, BoxPtr crtc_box)
+rr_crtc_box(RRCrtcPtr crtc, BoxPtr crtc_box)
 {
-    if (crtc->enabled) {
-	crtc_box->x1 = crtc->x;
-	crtc_box->x2 = crtc->x + xf86ModeWidth(&crtc->mode, crtc->rotation);
-	crtc_box->y1 = crtc->y;
-	crtc_box->y2 = crtc->y + xf86ModeHeight(&crtc->mode, crtc->rotation);
-    } else
-	crtc_box->x1 = crtc_box->x2 = crtc_box->y1 = crtc_box->y2 = 0;
+	if (crtc->mode) {
+		crtc_box->x1 = crtc->x;
+		crtc_box->y1 = crtc->y;
+		switch (crtc->rotation) {
+		case RR_Rotate_0:
+		case RR_Rotate_180:
+		default:
+			crtc_box->x2 = crtc->x + crtc->mode->mode.width;
+			crtc_box->y2 = crtc->y + crtc->mode->mode.height;
+			break;
+		case RR_Rotate_90:
+		case RR_Rotate_270:
+			crtc_box->x2 = crtc->x + crtc->mode->mode.height;
+			crtc_box->y2 = crtc->y + crtc->mode->mode.width;
+			break;
+		}
+	} else
+		crtc_box->x1 = crtc_box->x2 = crtc_box->y1 = crtc_box->y2 = 0;
 }
 
-static int
-nouveau_box_area(BoxPtr box)
+static Bool
+rr_crtc_on(RRCrtcPtr crtc, Bool crtc_is_xf86_hint)
 {
-    return (int) (box->x2 - box->x1) * (int) (box->y2 - box->y1);
+	if (!crtc) {
+		return FALSE;
+	}
+	if (crtc_is_xf86_hint && crtc->devPrivate) {
+		return xf86_crtc_on(crtc->devPrivate);
+	} else {
+		return !!crtc->mode;
+	}
+}
+
+/*
+ * Return the crtc covering 'box'. If two crtcs cover a portion of
+ * 'box', then prefer the crtc with greater coverage.
+ */
+static RRCrtcPtr
+rr_crtc_covering_box(ScreenPtr pScreen, BoxPtr box, Bool screen_is_xf86_hint)
+{
+	rrScrPrivPtr pScrPriv;
+	RRCrtcPtr crtc, best_crtc, primary_crtc;
+	int coverage, best_coverage;
+	int c;
+	BoxRec crtc_box, cover_box;
+	RROutputPtr primary_output;
+
+	best_crtc = NULL;
+	best_coverage = 0;
+	primary_crtc = NULL;
+	primary_output = NULL;
+
+	if (!dixPrivateKeyRegistered(rrPrivKey))
+		return NULL;
+
+	pScrPriv = rrGetScrPriv(pScreen);
+
+	if (!pScrPriv)
+		return NULL;
+
+	primary_output = RRFirstOutput(pScreen);
+	if (primary_output && primary_output->crtc)
+		primary_crtc = primary_output->crtc->devPrivate;
+
+	for (c = 0; c < pScrPriv->numCrtcs; c++) {
+		crtc = pScrPriv->crtcs[c];
+
+		/* If the CRTC is off, treat it as not covering */
+		if (!rr_crtc_on(crtc, screen_is_xf86_hint))
+			continue;
+
+		rr_crtc_box(crtc, &crtc_box);
+		box_intersect(&cover_box, &crtc_box, box);
+		coverage = box_area(&cover_box);
+		if (coverage > best_coverage ||
+		   (crtc == primary_crtc && coverage == best_coverage)) {
+			best_crtc = crtc;
+			best_coverage = coverage;
+		}
+	}
+
+	return best_crtc;
+}
+
+#if ABI_VIDEODRV_VERSION >= SET_ABI_VERSION(23, 0)
+static RRCrtcPtr
+rr_crtc_covering_box_on_secondary(ScreenPtr pScreen, BoxPtr box)
+{
+	if (!pScreen->isGPU) {
+		ScreenPtr secondary;
+		RRCrtcPtr crtc = NULL;
+
+		xorg_list_for_each_entry(secondary, &pScreen->secondary_list, secondary_head) {
+			if (!secondary->is_output_secondary)
+				continue;
+
+			crtc = rr_crtc_covering_box(secondary, box, FALSE);
+			if (crtc)
+				return crtc;
+		}
+	}
+
+	return NULL;
+}
+#endif
+
+RRCrtcPtr
+randr_crtc_covering_drawable(DrawablePtr pDraw)
+{
+	ScreenPtr pScreen = pDraw->pScreen;
+	RRCrtcPtr crtc = NULL;
+	BoxRec box;
+
+	box.x1 = pDraw->x;
+	box.y1 = pDraw->y;
+	box.x2 = box.x1 + pDraw->width;
+	box.y2 = box.y1 + pDraw->height;
+
+	crtc = rr_crtc_covering_box(pScreen, &box, TRUE);
+#if ABI_VIDEODRV_VERSION >= SET_ABI_VERSION(23, 0)
+	if (!crtc) {
+		crtc = rr_crtc_covering_box_on_secondary(pScreen, &box);
+	}
+#endif
+	return crtc;
 }
 
 xf86CrtcPtr
-nouveau_pick_best_crtc(ScrnInfoPtr pScrn, Bool consider_disabled,
+nouveau_pick_best_crtc(ScrnInfoPtr pScrn,
                        int x, int y, int w, int h)
 {
-    xf86CrtcConfigPtr   xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
-    int                 coverage, best_coverage, c;
-    BoxRec              box, crtc_box, cover_box;
-    RROutputPtr         primary_output = NULL;
-    xf86CrtcPtr         best_crtc = NULL, primary_crtc = NULL;
+    ScreenPtr pScreen = pScrn->pScreen;
+    RRCrtcPtr crtc = NULL;
+    BoxRec box;
 
     if (!pScrn->vtSema)
 	return NULL;
@@ -250,51 +370,12 @@ nouveau_pick_best_crtc(ScrnInfoPtr pScrn
     box.x2 = x + w;
     box.y1 = y;
     box.y2 = y + h;
-    best_coverage = 0;
-
-    /* Prefer the CRTC of the primary output */
-#ifdef HAS_DIXREGISTERPRIVATEKEY
-    if (dixPrivateKeyRegistered(rrPrivKey))
-#endif
-    {
-	primary_output = RRFirstOutput(pScrn->pScreen);
-    }
-    if (primary_output && primary_output->crtc)
-	primary_crtc = primary_output->crtc->devPrivate;
 
-    /* first consider only enabled CRTCs */
-    for (c = 0; c < xf86_config->num_crtc; c++) {
-	xf86CrtcPtr crtc = xf86_config->crtc[c];
-
-	if (!crtc->enabled)
-	    continue;
-
-	nouveau_crtc_box(crtc, &crtc_box);
-	nouveau_box_intersect(&cover_box, &crtc_box, &box);
-	coverage = nouveau_box_area(&cover_box);
-	if (coverage > best_coverage ||
-	    (coverage == best_coverage && crtc == primary_crtc)) {
-	    best_crtc = crtc;
-	    best_coverage = coverage;
-	}
-    }
-    if (best_crtc || !consider_disabled)
-	return best_crtc;
-
-    /* if we found nothing, repeat the search including disabled CRTCs */
-    for (c = 0; c < xf86_config->num_crtc; c++) {
-	xf86CrtcPtr crtc = xf86_config->crtc[c];
-
-	nouveau_crtc_box(crtc, &crtc_box);
-	nouveau_box_intersect(&cover_box, &crtc_box, &box);
-	coverage = nouveau_box_area(&cover_box);
-	if (coverage > best_coverage ||
-	    (coverage == best_coverage && crtc == primary_crtc)) {
-	    best_crtc = crtc;
-	    best_coverage = coverage;
-	}
+    crtc = rr_crtc_covering_box(pScreen, &box, TRUE);
+    if (crtc) {
+	return crtc->devPrivate;
     }
-    return best_crtc;
+    return NULL;
 }
 
 unsigned int
@@ -307,7 +388,7 @@ nv_window_belongs_to_crtc(ScrnInfoPtr pS
 	for (i = 0; i < xf86_config->num_crtc; i++) {
 		xf86CrtcPtr crtc = xf86_config->crtc[i];
 
-		if (!drmmode_crtc_on(crtc))
+		if (!xf86_crtc_on(crtc))
 			continue;
 
 		if ((x < (crtc->x + crtc->mode.HDisplay)) &&

Index: xsrc/external/mit/xf86-video-nouveau/dist/src/nv_driver.c
diff -u xsrc/external/mit/xf86-video-nouveau/dist/src/nv_driver.c:1.5 xsrc/external/mit/xf86-video-nouveau/dist/src/nv_driver.c:1.6
--- xsrc/external/mit/xf86-video-nouveau/dist/src/nv_driver.c:1.5	Mon Aug  1 22:19:41 2022
+++ xsrc/external/mit/xf86-video-nouveau/dist/src/nv_driver.c	Sun Mar  9 22:23:47 2025
@@ -37,11 +37,6 @@
 #include "nouveau_present.h"
 #include "nouveau_sync.h"
 
-#if !HAVE_XORG_LIST
-#define xorg_list_is_empty              list_is_empty
-#define xorg_list_for_each_entry        list_for_each_entry
-#endif
-
 /*
  * Forward definitions for the functions that make up the driver.
  */
@@ -241,10 +236,8 @@ NVDriverFunc(ScrnInfoPtr scrn, xorgDrive
 	    flag = (CARD32 *)data;
 	    (*flag) = 0;
 	    return TRUE;
-#if XORG_VERSION_CURRENT > XORG_VERSION_NUMERIC(1,15,99,0,0)
 	case SUPPORTS_SERVER_FDS:
 	    return TRUE;
-#endif
 	default:
 	    return FALSE;
     }
@@ -277,7 +270,7 @@ NVInitScrn(ScrnInfoPtr pScrn, struct xf8
 	pPriv = xf86GetEntityPrivate(entity_num,
 				     NVEntityIndex);
 	if (!pPriv->ptr) {
-		pPriv->ptr = xnfcalloc(sizeof(NVEntRec), 1);
+		pPriv->ptr = XNFcallocarray(sizeof(NVEntRec), 1);
 		pNVEnt = pPriv->ptr;
 		pNVEnt->platform_dev = platform_dev;
 	}
@@ -309,15 +302,9 @@ NVOpenNouveauDevice(struct pci_device *p
 	else
 #endif
 	{
-#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,9,99,901,0)
 		XNFasprintf(&busid, "pci:%04x:%02x:%02x.%d",
 			    pci_dev->domain, pci_dev->bus,
 			    pci_dev->dev, pci_dev->func);
-#else
-		busid = XNFprintf("pci:%04x:%02x:%02x.%d",
-				  pci_dev->domain, pci_dev->bus,
-				  pci_dev->dev, pci_dev->func);
-#endif
 	}
 
 #if defined(ODEV_ATTRIB_FD)
@@ -559,16 +546,12 @@ redisplay_dirty(ScreenPtr screen, Pixmap
 {
 	RegionRec pixregion;
 
-	PixmapRegionInit(&pixregion, dirty->slave_dst);
+	PixmapRegionInit(&pixregion, dirty->secondary_dst);
 
-	DamageRegionAppend(&dirty->slave_dst->drawable, &pixregion);
-#ifdef HAS_DIRTYTRACKING_ROTATION
+	DamageRegionAppend(&dirty->secondary_dst->drawable, &pixregion);
 	PixmapSyncDirtyHelper(dirty);
-#else
-	PixmapSyncDirtyHelper(dirty, &pixregion);
-#endif
 
-	DamageRegionProcessPending(&dirty->slave_dst->drawable);
+	DamageRegionProcessPending(&dirty->secondary_dst->drawable);
 	RegionUninit(&pixregion);
 }
 
@@ -880,7 +863,7 @@ NVPreInit(ScrnInfoPtr pScrn, int flags)
 		return FALSE;
 
 	/* Allocate the NVRec driverPrivate */
-	if (!(pScrn->driverPrivate = xnfcalloc(1, sizeof(NVRec))))
+	if (!(pScrn->driverPrivate = XNFcallocarray(1, sizeof(NVRec))))
 		return FALSE;
 	pNv = NVPTR(pScrn);
 

Index: xsrc/external/mit/xf86-video-nouveau/dist/src/nv_include.h
diff -u xsrc/external/mit/xf86-video-nouveau/dist/src/nv_include.h:1.3 xsrc/external/mit/xf86-video-nouveau/dist/src/nv_include.h:1.4
--- xsrc/external/mit/xf86-video-nouveau/dist/src/nv_include.h:1.3	Thu Jan 31 19:52:31 2019
+++ xsrc/external/mit/xf86-video-nouveau/dist/src/nv_include.h	Sun Mar  9 22:23:47 2025
@@ -72,6 +72,5 @@
 #include "nv_type.h"
 #include "nv_proto.h"
 #include "nv_dma.h"
-#include "sarea.h"
 
 #endif /* __NV_INCLUDE_H__ */

Index: xsrc/external/mit/xf86-video-nouveau/dist/src/nv_proto.h
diff -u xsrc/external/mit/xf86-video-nouveau/dist/src/nv_proto.h:1.7 xsrc/external/mit/xf86-video-nouveau/dist/src/nv_proto.h:1.8
--- xsrc/external/mit/xf86-video-nouveau/dist/src/nv_proto.h:1.7	Sun Mar  3 09:44:37 2019
+++ xsrc/external/mit/xf86-video-nouveau/dist/src/nv_proto.h	Sun Mar  9 22:23:47 2025
@@ -13,7 +13,7 @@ void drmmode_screen_init(ScreenPtr pScre
 void drmmode_screen_fini(ScreenPtr pScreen);
 
 int  drmmode_crtc(xf86CrtcPtr crtc);
-Bool drmmode_crtc_on(xf86CrtcPtr crtc);
+Bool xf86_crtc_on(xf86CrtcPtr crtc);
 int  drmmode_head(xf86CrtcPtr crtc);
 void drmmode_swap(ScrnInfoPtr, uint32_t, uint32_t *);
 
@@ -45,8 +45,9 @@ void NVTakedownVideo(ScrnInfoPtr);
 void NVSetPortDefaults (ScrnInfoPtr pScrn, NVPortPrivPtr pPriv);
 void NVXVComputeBicubicFilter(struct nouveau_bo *, unsigned, unsigned);
 unsigned int nv_window_belongs_to_crtc(ScrnInfoPtr, int, int, int, int);
-xf86CrtcPtr nouveau_pick_best_crtc(ScrnInfoPtr pScrn, Bool consider_disabled,
+xf86CrtcPtr nouveau_pick_best_crtc(ScrnInfoPtr pScrn,
                                    int x, int y, int w, int h);
+RRCrtcPtr randr_crtc_covering_drawable(DrawablePtr pDraw);
 
 /* in nouveau_exa.c */
 Bool nouveau_exa_init(ScreenPtr pScreen);
@@ -229,5 +230,15 @@ extern void exaMoveInPixmap(PixmapPtr pP
 
 extern Bool wfbPictureInit(ScreenPtr, PictFormatPtr, int);
 
+extern Bool wfbScreenInit(ScreenPtr pScreen,
+              void *pbits,
+              int xsize,
+              int ysize,
+              int dpix,
+              int dpiy,
+              int width,
+              int bpp,
+              SetupWrapProcPtr setupWrap, FinishWrapProcPtr finishWrap);
+
 #endif /* __NV_PROTO_H__ */
 

Reply via email to