blob: cda2c2f14616fae44889189fab75de3a35265526 [file] [log] [blame]
Andrew Geissler595f6302022-01-24 19:11:47 +00001From 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