1From 6e035c007876ffe972a497681dd3debdc806e979 Mon Sep 17 00:00:00 2001
2From: Dave Airlie <airlied@redhat.com>
3Date: Mon, 13 Jul 2020 09:11:28 +1000
4Subject: [PATCH] ati: cleanup terminology to use primary/secondary
5
6The X server changed some API/ABIs here.
7
8Based on amdgpu patch by Michel
9---
10Upstream-Status: Backport [https://gitlab.freedesktop.org/xorg/driver/xf86-video-ati/-/commit/8da3e4561ef82bb78c9a17b8cd8bf139b9cfd680.patch]
11man/radeon.man        |  2 +-
12 src/compat-api.h      |  6 ++++
13 src/drmmode_display.c |  4 +--
14 src/evergreen_state.h |  2 +-
15 src/r600_state.h      |  2 +-
16 src/radeon.h          | 10 +++---
17 src/radeon_exa.c      |  2 +-
18 src/radeon_glamor.c   |  2 +-
19 src/radeon_kms.c      | 74 +++++++++++++++++++++----------------------
20 9 files changed, 55 insertions(+), 49 deletions(-)
21
22diff --git a/man/radeon.man b/man/radeon.man
23index dcebf53..247dcdb 100644
24--- a/man/radeon.man
25+++ b/man/radeon.man
26@@ -290,7 +290,7 @@ on. If this option is set, the default value of the property is 'on' or 'off'
27 accordingly. If this option isn't set, the default value of the property is
28 .B auto,
29 which means that TearFree is on for rotated outputs, outputs with RandR
30-transforms applied and for RandR 1.4 slave outputs, otherwise off.
31+transforms applied and for RandR 1.4 secondary outputs, otherwise off.
32 .TP
33 .BI "Option \*qAccelMethod\*q \*q" "string" \*q
34 Chooses between available acceleration architectures.  Valid values are
35diff --git a/src/compat-api.h b/src/compat-api.h
36index f4e7524..def6d3e 100644
37--- a/src/compat-api.h
38+++ b/src/compat-api.h
39@@ -34,4 +34,10 @@
40 #define BLOCKHANDLER_ARGS pScreen, pTimeout, pReadmask
41 #endif
42
43+#if ABI_VIDEODRV_VERSION < SET_ABI_VERSION(25, 2)
44+#define current_primary current_master
45+#define primary_pixmap master_pixmap
46+#define secondary_dst slave_dst
47+#endif
48+
49 #endif
50diff --git a/src/drmmode_display.c b/src/drmmode_display.c
51index 0e9e247..3dec91e 100644
52--- a/src/drmmode_display.c
53+++ b/src/drmmode_display.c
54@@ -720,7 +720,7 @@ drmmode_crtc_prime_scanout_update(xf86CrtcPtr crtc, DisplayModePtr mode,
55 		xorg_list_for_each_entry(dirty, &screen->pixmap_dirty_list,
56 					 ent) {
57 			if (radeon_dirty_src_equals(dirty, drmmode_crtc->prime_scanout_pixmap)) {
58-				dirty->slave_dst =
59+				dirty->secondary_dst =
60 					drmmode_crtc->scanout[scanout_id].pixmap;
61 				break;
62 			}
63@@ -1356,7 +1356,7 @@ drmmode_set_scanout_pixmap(xf86CrtcPtr crtc, PixmapPtr ppix)
64
65 	xorg_list_for_each_entry(dirty, &screen->pixmap_dirty_list, ent) {
66 		if (radeon_dirty_src_equals(dirty, drmmode_crtc->prime_scanout_pixmap)) {
67-			PixmapStopDirtyTracking(dirty->src, dirty->slave_dst);
68+			PixmapStopDirtyTracking(dirty->src, dirty->secondary_dst);
69 			break;
70 		}
71 	}
72diff --git a/src/evergreen_state.h b/src/evergreen_state.h
73index 7e54e1c..34ba87b 100644
74--- a/src/evergreen_state.h
75+++ b/src/evergreen_state.h
76@@ -350,7 +350,7 @@ extern void *RADEONEXACreatePixmap2(ScreenPtr pScreen, int width, int height,
77 				    int *new_pitch);
78 extern void RADEONEXADestroyPixmap(ScreenPtr pScreen, void *driverPriv);
79 extern Bool RADEONEXAPixmapIsOffscreen(PixmapPtr pPix);
80-extern Bool RADEONEXASharePixmapBacking(PixmapPtr ppix, ScreenPtr slave, void **handle_p);
81+extern Bool RADEONEXASharePixmapBacking(PixmapPtr ppix, ScreenPtr secondary, void **handle_p);
82 extern Bool RADEONEXASetSharedPixmapBacking(PixmapPtr ppix, void *handle);
83
84 #endif
85diff --git a/src/r600_state.h b/src/r600_state.h
86index 3434599..567c3ca 100644
87--- a/src/r600_state.h
88+++ b/src/r600_state.h
89@@ -321,6 +321,6 @@ extern void *RADEONEXACreatePixmap2(ScreenPtr pScreen, int width, int height,
90 				    int *new_pitch);
91 extern void RADEONEXADestroyPixmap(ScreenPtr pScreen, void *driverPriv);
92 extern Bool RADEONEXAPixmapIsOffscreen(PixmapPtr pPix);
93-extern Bool RADEONEXASharePixmapBacking(PixmapPtr ppix, ScreenPtr slave, void **handle_p);
94+extern Bool RADEONEXASharePixmapBacking(PixmapPtr ppix, ScreenPtr secondary, void **handle_p);
95 extern Bool RADEONEXASetSharedPixmapBacking(PixmapPtr ppix, void *handle);
96 #endif
97diff --git a/src/radeon.h b/src/radeon.h
98index 2c91346..85fd021 100644
99--- a/src/radeon.h
100+++ b/src/radeon.h
101@@ -182,18 +182,18 @@ typedef enum {
102
103
104 static inline ScreenPtr
105-radeon_master_screen(ScreenPtr screen)
106+radeon_primary_screen(ScreenPtr screen)
107 {
108-    if (screen->current_master)
109-	return screen->current_master;
110+    if (screen->current_primary)
111+	return screen->current_primary;
112
113     return screen;
114 }
115
116 static inline ScreenPtr
117-radeon_dirty_master(PixmapDirtyUpdatePtr dirty)
118+radeon_dirty_primary(PixmapDirtyUpdatePtr dirty)
119 {
120-    return radeon_master_screen(dirty->slave_dst->drawable.pScreen);
121+    return radeon_primary_screen(dirty->secondary_dst->drawable.pScreen);
122 }
123
124 static inline DrawablePtr
125diff --git a/src/radeon_exa.c b/src/radeon_exa.c
126index 268155e..320ff99 100644
127--- a/src/radeon_exa.c
128+++ b/src/radeon_exa.c
129@@ -282,7 +282,7 @@ void RADEONEXADestroyPixmap(ScreenPtr pScreen, void *driverPriv)
130     free(driverPriv);
131 }
132
133-Bool RADEONEXASharePixmapBacking(PixmapPtr ppix, ScreenPtr slave, void **fd_handle)
134+Bool RADEONEXASharePixmapBacking(PixmapPtr ppix, ScreenPtr seconndary, void **fd_handle)
135 {
136     struct radeon_exa_pixmap_priv *driver_priv = exaGetPixmapDriverPrivate(ppix);
137
138diff --git a/src/radeon_glamor.c b/src/radeon_glamor.c
139index f109838..ccf9994 100644
140--- a/src/radeon_glamor.c
141+++ b/src/radeon_glamor.c
142@@ -366,7 +366,7 @@ radeon_glamor_set_pixmap_bo(DrawablePtr drawable, PixmapPtr pixmap)
143
144
145 static Bool
146-radeon_glamor_share_pixmap_backing(PixmapPtr pixmap, ScreenPtr slave,
147+radeon_glamor_share_pixmap_backing(PixmapPtr pixmap, ScreenPtr secondary,
148 				   void **handle_p)
149 {
150 	ScreenPtr screen = pixmap->drawable.pScreen;
151diff --git a/src/radeon_kms.c b/src/radeon_kms.c
152index b3db7c4..62962d6 100644
153--- a/src/radeon_kms.c
154+++ b/src/radeon_kms.c
155@@ -559,8 +559,8 @@ dirty_region(PixmapDirtyUpdatePtr dirty)
156 	if (dirty->rotation != RR_Rotate_0) {
157 		dstregion = transform_region(damageregion,
158 					     &dirty->f_inverse,
159-					     dirty->slave_dst->drawable.width,
160-					     dirty->slave_dst->drawable.height);
161+					     dirty->secondary_dst->drawable.width,
162+					     dirty->secondary_dst->drawable.height);
163 	} else
164 #endif
165 	{
166@@ -568,7 +568,7 @@ dirty_region(PixmapDirtyUpdatePtr dirty)
167
168 	    dstregion = RegionDuplicate(damageregion);
169 	    RegionTranslate(dstregion, -dirty->x, -dirty->y);
170-	    PixmapRegionInit(&pixregion, dirty->slave_dst);
171+	    PixmapRegionInit(&pixregion, dirty->secondary_dst);
172 	    RegionIntersect(dstregion, dstregion, &pixregion);
173 	    RegionUninit(&pixregion);
174 	}
175@@ -585,8 +585,8 @@ redisplay_dirty(PixmapDirtyUpdatePtr dirty, RegionPtr region)
176 	if (RegionNil(region))
177 		goto out;
178
179-	if (dirty->slave_dst->master_pixmap)
180-	    DamageRegionAppend(&dirty->slave_dst->drawable, region);
181+	if (dirty->secondary_dst->primary_pixmap)
182+	    DamageRegionAppend(&dirty->secondary_dst->drawable, region);
183
184 #ifdef HAS_DIRTYTRACKING_ROTATION
185 	PixmapSyncDirtyHelper(dirty);
186@@ -595,8 +595,8 @@ redisplay_dirty(PixmapDirtyUpdatePtr dirty, RegionPtr region)
187 #endif
188
189 	radeon_cs_flush_indirect(src_scrn);
190-	if (dirty->slave_dst->master_pixmap)
191-	    DamageRegionProcessPending(&dirty->slave_dst->drawable);
192+	if (dirty->secondary_dst->primary_pixmap)
193+	    DamageRegionProcessPending(&dirty->secondary_dst->drawable);
194
195 out:
196 	DamageEmpty(dirty->damage);
197@@ -613,12 +613,12 @@ radeon_prime_scanout_update_abort(xf86CrtcPtr crtc, void *event_data)
198 void
199 radeon_sync_shared_pixmap(PixmapDirtyUpdatePtr dirty)
200 {
201-    ScreenPtr master_screen = radeon_dirty_master(dirty);
202+    ScreenPtr primary_screen = radeon_dirty_primary(dirty);
203     PixmapDirtyUpdatePtr ent;
204     RegionPtr region;
205
206-    xorg_list_for_each_entry(ent, &master_screen->pixmap_dirty_list, ent) {
207-	if (!radeon_dirty_src_equals(dirty, ent->slave_dst))
208+    xorg_list_for_each_entry(ent, &primary_screen->pixmap_dirty_list, ent) {
209+	if (!radeon_dirty_src_equals(dirty, ent->secondary_dst))
210 	    continue;
211
212 	region = dirty_region(ent);
213@@ -631,45 +631,45 @@ radeon_sync_shared_pixmap(PixmapDirtyUpdatePtr dirty)
214 #if HAS_SYNC_SHARED_PIXMAP
215
216 static Bool
217-master_has_sync_shared_pixmap(ScrnInfoPtr scrn, PixmapDirtyUpdatePtr dirty)
218+primary_has_sync_shared_pixmap(ScrnInfoPtr scrn, PixmapDirtyUpdatePtr dirty)
219 {
220-    ScreenPtr master_screen = radeon_dirty_master(dirty);
221+    ScreenPtr primary_screen = radeon_dirty_primary(dirty);
222
223-    return !!master_screen->SyncSharedPixmap;
224+    return !!primary_screen->SyncSharedPixmap;
225 }
226
227 static Bool
228-slave_has_sync_shared_pixmap(ScrnInfoPtr scrn, PixmapDirtyUpdatePtr dirty)
229+secondary_has_sync_shared_pixmap(ScrnInfoPtr scrn, PixmapDirtyUpdatePtr dirty)
230 {
231-    ScreenPtr slave_screen = dirty->slave_dst->drawable.pScreen;
232+    ScreenPtr secondary_screen = dirty->secondary_dst->drawable.pScreen;
233
234-    return !!slave_screen->SyncSharedPixmap;
235+    return !!secondary_screen->SyncSharedPixmap;
236 }
237
238 static void
239 call_sync_shared_pixmap(PixmapDirtyUpdatePtr dirty)
240 {
241-    ScreenPtr master_screen = radeon_dirty_master(dirty);
242+    ScreenPtr primary_screen = radeon_dirty_primary(dirty);
243
244-    master_screen->SyncSharedPixmap(dirty);
245+    primary_screen->SyncSharedPixmap(dirty);
246 }
247
248 #else /* !HAS_SYNC_SHARED_PIXMAP */
249
250 static Bool
251-master_has_sync_shared_pixmap(ScrnInfoPtr scrn, PixmapDirtyUpdatePtr dirty)
252+primary_has_sync_shared_pixmap(ScrnInfoPtr scrn, PixmapDirtyUpdatePtr dirty)
253 {
254-    ScrnInfoPtr master_scrn = xf86ScreenToScrn(radeon_dirty_master(dirty));
255+    ScrnInfoPtr primary_scrn = xf86ScreenToScrn(radeon_dirty_primary(dirty));
256
257-    return master_scrn->driverName == scrn->driverName;
258+    return primary_scrn->driverName == scrn->driverName;
259 }
260
261 static Bool
262-slave_has_sync_shared_pixmap(ScrnInfoPtr scrn, PixmapDirtyUpdatePtr dirty)
263+secondary_has_sync_shared_pixmap(ScrnInfoPtr scrn, PixmapDirtyUpdatePtr dirty)
264 {
265-    ScrnInfoPtr slave_scrn = xf86ScreenToScrn(dirty->slave_dst->drawable.pScreen);
266+    ScrnInfoPtr secondary_scrn = xf86ScreenToScrn(dirty->secondary_dst->drawable.pScreen);
267
268-    return slave_scrn->driverName == scrn->driverName;
269+    return secondary_scrn->driverName == scrn->driverName;
270 }
271
272 static void
273@@ -684,12 +684,12 @@ call_sync_shared_pixmap(PixmapDirtyUpdatePtr dirty)
274 static xf86CrtcPtr
275 radeon_prime_dirty_to_crtc(PixmapDirtyUpdatePtr dirty)
276 {
277-    ScreenPtr screen = dirty->slave_dst->drawable.pScreen;
278+    ScreenPtr screen = dirty->secondary_dst->drawable.pScreen;
279     ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
280     xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
281     int c;
282
283-    /* Find the CRTC which is scanning out from this slave pixmap */
284+    /* Find the CRTC which is scanning out from this secondary pixmap */
285     for (c = 0; c < xf86_config->num_crtc; c++) {
286 	xf86CrtcPtr xf86_crtc = xf86_config->crtc[c];
287 	drmmode_crtc_private_ptr drmmode_crtc = xf86_crtc->driver_private;
288@@ -714,7 +714,7 @@ radeon_prime_scanout_do_update(xf86CrtcPtr crtc, unsigned scanout_id)
289 	if (radeon_dirty_src_equals(dirty, drmmode_crtc->prime_scanout_pixmap)) {
290 	    RegionPtr region;
291
292-	    if (master_has_sync_shared_pixmap(scrn, dirty))
293+	    if (primary_has_sync_shared_pixmap(scrn, dirty))
294 		call_sync_shared_pixmap(dirty);
295
296 	    region = dirty_region(dirty);
297@@ -727,7 +727,7 @@ radeon_prime_scanout_do_update(xf86CrtcPtr crtc, unsigned scanout_id)
298 		radeon_cs_flush_indirect(scrn);
299 		RegionCopy(&drmmode_crtc->scanout_last_region, region);
300 		RegionTranslate(region, -crtc->x, -crtc->y);
301-		dirty->slave_dst = drmmode_crtc->scanout[scanout_id].pixmap;
302+		dirty->secondary_dst = drmmode_crtc->scanout[scanout_id].pixmap;
303 	    }
304
305 	    redisplay_dirty(dirty, region);
306@@ -754,7 +754,7 @@ radeon_prime_scanout_update_handler(xf86CrtcPtr crtc, uint32_t frame, uint64_t u
307 static void
308 radeon_prime_scanout_update(PixmapDirtyUpdatePtr dirty)
309 {
310-    ScreenPtr screen = dirty->slave_dst->drawable.pScreen;
311+    ScreenPtr screen = dirty->secondary_dst->drawable.pScreen;
312     ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
313     RADEONEntPtr pRADEONEnt = RADEONEntPriv(scrn);
314     xf86CrtcPtr xf86_crtc = radeon_prime_dirty_to_crtc(dirty);
315@@ -818,7 +818,7 @@ radeon_prime_scanout_update(PixmapDirtyUpdatePtr dirty)
316 static void
317 radeon_prime_scanout_flip(PixmapDirtyUpdatePtr ent)
318 {
319-    ScreenPtr screen = ent->slave_dst->drawable.pScreen;
320+    ScreenPtr screen = ent->secondary_dst->drawable.pScreen;
321     ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
322     RADEONEntPtr pRADEONEnt = RADEONEntPriv(scrn);
323     xf86CrtcPtr crtc = radeon_prime_dirty_to_crtc(ent);
324@@ -893,11 +893,11 @@ radeon_dirty_update(ScrnInfoPtr scrn)
325 		if (screen->isGPU) {
326 			PixmapDirtyUpdatePtr region_ent = ent;
327
328-			if (master_has_sync_shared_pixmap(scrn, ent)) {
329-				ScreenPtr master_screen = radeon_dirty_master(ent);
330+			if (primary_has_sync_shared_pixmap(scrn, ent)) {
331+				ScreenPtr primary_screen = radeon_dirty_primary(ent);
332
333-				xorg_list_for_each_entry(region_ent, &master_screen->pixmap_dirty_list, ent) {
334-					if (radeon_dirty_src_equals(ent, region_ent->slave_dst))
335+				xorg_list_for_each_entry(region_ent, &primary_screen->pixmap_dirty_list, ent) {
336+					if (radeon_dirty_src_equals(ent, region_ent->secondary_dst))
337 						break;
338 				}
339 			}
340@@ -921,7 +921,7 @@ radeon_dirty_update(ScrnInfoPtr scrn)
341
342 			RegionDestroy(region);
343 		} else {
344-			if (slave_has_sync_shared_pixmap(scrn, ent))
345+			if (secondary_has_sync_shared_pixmap(scrn, ent))
346 				continue;
347
348 			region = dirty_region(ent);
349@@ -1216,7 +1216,7 @@ static void RADEONBlockHandler_KMS(BLOCKHANDLER_ARGS_DECL)
350     (*pScreen->BlockHandler) (BLOCKHANDLER_ARGS);
351     pScreen->BlockHandler = RADEONBlockHandler_KMS;
352
353-    if (!xf86ScreenToScrn(radeon_master_screen(pScreen))->vtSema)
354+    if (!xf86ScreenToScrn(radeon_primary_screen(pScreen))->vtSema)
355 	return;
356
357     if (!pScreen->isGPU)
358@@ -2584,7 +2584,7 @@ CARD32 cleanup_black_fb(OsTimerPtr timer, CARD32 now, pointer data)
359     xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
360     int c;
361
362-    if (xf86ScreenToScrn(radeon_master_screen(screen))->vtSema)
363+    if (xf86ScreenToScrn(radeon_primary_screen(screen))->vtSema)
364 	return 0;
365
366     /* Unreference the all-black FB created by RADEONLeaveVT_KMS. After
367--
3682.33.1
369
370