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