diff --git a/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl_1.2.15.bb b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl_1.2.15.bb
index e2992b5..50c5015 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl_1.2.15.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl_1.2.15.bb
@@ -80,3 +80,6 @@
 }
 
 BBCLASSEXTEND = "native nativesdk"
+
+#CVE-2019-14906 is a RHEL specific vulnerability.
+CVE_CHECK_IGNORE += "CVE-2019-14906"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_372.bb b/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_373.bb
similarity index 93%
rename from meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_372.bb
rename to meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_373.bb
index 3e1e9d7..bc555cb 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_372.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_373.bb
@@ -8,7 +8,7 @@
            file://0001-Add-configure-time-check-for-setsid.patch \
           "
 
-SRC_URI[sha256sum] = "c6d08127cb2409c3a04bcae559b7025196ed770bb7bf26630abcb45d95f60ab1"
+SRC_URI[sha256sum] = "deb0989473a63908b5a8d44dfeea8301c8710f6ce01fb57ce8c30002375746b6"
 
 PACKAGECONFIG ?= ""
 PACKAGECONFIG[xft] = "--enable-freetype,--disable-freetype,libxft fontconfig freetype-native"
@@ -27,6 +27,8 @@
 
 B = "${S}"
 
+CFLAGS += "-D_GNU_SOURCE"
+
 do_configure() {
     gnu-configize --force
     sed -e "s%/usr/contrib/X11R6%${STAGING_LIBDIR}%g" -i configure
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-ati/0001-Fix-link-failure-with-gcc-10.patch b/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-ati/0001-Fix-link-failure-with-gcc-10.patch
deleted file mode 100644
index 7dfa233..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-ati/0001-Fix-link-failure-with-gcc-10.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From cebbeaa9d0bdc18377faef27ea9ffd38e509d180 Mon Sep 17 00:00:00 2001
-From: Adam Jackson <ajax@redhat.com>
-Date: Tue, 4 Feb 2020 16:38:06 -0500
-Subject: [PATCH] Fix link failure with gcc 10
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Without the 'extern' this looks like a definition not just a
-declaration, in every file that includes the header. gcc 10 is stricter
-about this kind of multiple definition.
-
-Upstream-Status: Backport [https://cgit.freedesktop.org/xorg/driver/xf86-video-ati/commit/?id=f223035f4ffcff2a9296d1e907a5193f8e8845a3]
-Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
----
- src/drmmode_display.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/drmmode_display.h b/src/drmmode_display.h
-index 96eaef0..8cd8a0a 100644
---- a/src/drmmode_display.h
-+++ b/src/drmmode_display.h
-@@ -262,7 +262,7 @@ Bool drmmode_wait_vblank(xf86CrtcPtr crtc, drmVBlankSeqType type,
- 			 uint64_t *ust, uint32_t *result_seq);
- 
- 
--miPointerSpriteFuncRec drmmode_sprite_funcs;
-+extern miPointerSpriteFuncRec drmmode_sprite_funcs;
- 
- 
- #endif
--- 
-2.28.0
-
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-ati/0001-ati-cleanup-terminology-to-use-primary-secondary.patch b/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-ati/0001-ati-cleanup-terminology-to-use-primary-secondary.patch
deleted file mode 100644
index cda2c2f..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-ati/0001-ati-cleanup-terminology-to-use-primary-secondary.patch
+++ /dev/null
@@ -1,369 +0,0 @@
-From 6e035c007876ffe972a497681dd3debdc806e979 Mon Sep 17 00:00:00 2001
-From: Dave Airlie <airlied@redhat.com>
-Date: Mon, 13 Jul 2020 09:11:28 +1000
-Subject: [PATCH] ati: cleanup terminology to use primary/secondary
-
-The X server changed some API/ABIs here.
-
-Based on amdgpu patch by Michel
----
-Upstream-Status: Backport [https://gitlab.freedesktop.org/xorg/driver/xf86-video-ati/-/commit/8da3e4561ef82bb78c9a17b8cd8bf139b9cfd680.patch]
-man/radeon.man        |  2 +-
- src/compat-api.h      |  6 ++++
- src/drmmode_display.c |  4 +--
- src/evergreen_state.h |  2 +-
- src/r600_state.h      |  2 +-
- src/radeon.h          | 10 +++---
- src/radeon_exa.c      |  2 +-
- src/radeon_glamor.c   |  2 +-
- src/radeon_kms.c      | 74 +++++++++++++++++++++----------------------
- 9 files changed, 55 insertions(+), 49 deletions(-)
-
-diff --git a/man/radeon.man b/man/radeon.man
-index dcebf53..247dcdb 100644
---- a/man/radeon.man
-+++ b/man/radeon.man
-@@ -290,7 +290,7 @@ on. If this option is set, the default value of the property is 'on' or 'off'
- accordingly. If this option isn't set, the default value of the property is
- .B auto,
- which means that TearFree is on for rotated outputs, outputs with RandR
--transforms applied and for RandR 1.4 slave outputs, otherwise off.
-+transforms applied and for RandR 1.4 secondary outputs, otherwise off.
- .TP
- .BI "Option \*qAccelMethod\*q \*q" "string" \*q
- Chooses between available acceleration architectures.  Valid values are
-diff --git a/src/compat-api.h b/src/compat-api.h
-index f4e7524..def6d3e 100644
---- a/src/compat-api.h
-+++ b/src/compat-api.h
-@@ -34,4 +34,10 @@
- #define BLOCKHANDLER_ARGS pScreen, pTimeout, pReadmask
- #endif
- 
-+#if ABI_VIDEODRV_VERSION < SET_ABI_VERSION(25, 2)
-+#define current_primary current_master
-+#define primary_pixmap master_pixmap
-+#define secondary_dst slave_dst
-+#endif
-+
- #endif
-diff --git a/src/drmmode_display.c b/src/drmmode_display.c
-index 0e9e247..3dec91e 100644
---- a/src/drmmode_display.c
-+++ b/src/drmmode_display.c
-@@ -720,7 +720,7 @@ drmmode_crtc_prime_scanout_update(xf86CrtcPtr crtc, DisplayModePtr mode,
- 		xorg_list_for_each_entry(dirty, &screen->pixmap_dirty_list,
- 					 ent) {
- 			if (radeon_dirty_src_equals(dirty, drmmode_crtc->prime_scanout_pixmap)) {
--				dirty->slave_dst =
-+				dirty->secondary_dst =
- 					drmmode_crtc->scanout[scanout_id].pixmap;
- 				break;
- 			}
-@@ -1356,7 +1356,7 @@ drmmode_set_scanout_pixmap(xf86CrtcPtr crtc, PixmapPtr ppix)
- 
- 	xorg_list_for_each_entry(dirty, &screen->pixmap_dirty_list, ent) {
- 		if (radeon_dirty_src_equals(dirty, drmmode_crtc->prime_scanout_pixmap)) {
--			PixmapStopDirtyTracking(dirty->src, dirty->slave_dst);
-+			PixmapStopDirtyTracking(dirty->src, dirty->secondary_dst);
- 			break;
- 		}
- 	}
-diff --git a/src/evergreen_state.h b/src/evergreen_state.h
-index 7e54e1c..34ba87b 100644
---- a/src/evergreen_state.h
-+++ b/src/evergreen_state.h
-@@ -350,7 +350,7 @@ extern void *RADEONEXACreatePixmap2(ScreenPtr pScreen, int width, int height,
- 				    int *new_pitch);
- extern void RADEONEXADestroyPixmap(ScreenPtr pScreen, void *driverPriv);
- extern Bool RADEONEXAPixmapIsOffscreen(PixmapPtr pPix);
--extern Bool RADEONEXASharePixmapBacking(PixmapPtr ppix, ScreenPtr slave, void **handle_p);
-+extern Bool RADEONEXASharePixmapBacking(PixmapPtr ppix, ScreenPtr secondary, void **handle_p);
- extern Bool RADEONEXASetSharedPixmapBacking(PixmapPtr ppix, void *handle);
- 
- #endif
-diff --git a/src/r600_state.h b/src/r600_state.h
-index 3434599..567c3ca 100644
---- a/src/r600_state.h
-+++ b/src/r600_state.h
-@@ -321,6 +321,6 @@ extern void *RADEONEXACreatePixmap2(ScreenPtr pScreen, int width, int height,
- 				    int *new_pitch);
- extern void RADEONEXADestroyPixmap(ScreenPtr pScreen, void *driverPriv);
- extern Bool RADEONEXAPixmapIsOffscreen(PixmapPtr pPix);
--extern Bool RADEONEXASharePixmapBacking(PixmapPtr ppix, ScreenPtr slave, void **handle_p);
-+extern Bool RADEONEXASharePixmapBacking(PixmapPtr ppix, ScreenPtr secondary, void **handle_p);
- extern Bool RADEONEXASetSharedPixmapBacking(PixmapPtr ppix, void *handle);
- #endif
-diff --git a/src/radeon.h b/src/radeon.h
-index 2c91346..85fd021 100644
---- a/src/radeon.h
-+++ b/src/radeon.h
-@@ -182,18 +182,18 @@ typedef enum {
- 
- 
- static inline ScreenPtr
--radeon_master_screen(ScreenPtr screen)
-+radeon_primary_screen(ScreenPtr screen)
- {
--    if (screen->current_master)
--	return screen->current_master;
-+    if (screen->current_primary)
-+	return screen->current_primary;
- 
-     return screen;
- }
- 
- static inline ScreenPtr
--radeon_dirty_master(PixmapDirtyUpdatePtr dirty)
-+radeon_dirty_primary(PixmapDirtyUpdatePtr dirty)
- {
--    return radeon_master_screen(dirty->slave_dst->drawable.pScreen);
-+    return radeon_primary_screen(dirty->secondary_dst->drawable.pScreen);
- }
- 
- static inline DrawablePtr
-diff --git a/src/radeon_exa.c b/src/radeon_exa.c
-index 268155e..320ff99 100644
---- a/src/radeon_exa.c
-+++ b/src/radeon_exa.c
-@@ -282,7 +282,7 @@ void RADEONEXADestroyPixmap(ScreenPtr pScreen, void *driverPriv)
-     free(driverPriv);
- }
- 
--Bool RADEONEXASharePixmapBacking(PixmapPtr ppix, ScreenPtr slave, void **fd_handle)
-+Bool RADEONEXASharePixmapBacking(PixmapPtr ppix, ScreenPtr seconndary, void **fd_handle)
- {
-     struct radeon_exa_pixmap_priv *driver_priv = exaGetPixmapDriverPrivate(ppix);
- 
-diff --git a/src/radeon_glamor.c b/src/radeon_glamor.c
-index f109838..ccf9994 100644
---- a/src/radeon_glamor.c
-+++ b/src/radeon_glamor.c
-@@ -366,7 +366,7 @@ radeon_glamor_set_pixmap_bo(DrawablePtr drawable, PixmapPtr pixmap)
- 
- 
- static Bool
--radeon_glamor_share_pixmap_backing(PixmapPtr pixmap, ScreenPtr slave,
-+radeon_glamor_share_pixmap_backing(PixmapPtr pixmap, ScreenPtr secondary,
- 				   void **handle_p)
- {
- 	ScreenPtr screen = pixmap->drawable.pScreen;
-diff --git a/src/radeon_kms.c b/src/radeon_kms.c
-index b3db7c4..62962d6 100644
---- a/src/radeon_kms.c
-+++ b/src/radeon_kms.c
-@@ -559,8 +559,8 @@ dirty_region(PixmapDirtyUpdatePtr dirty)
- 	if (dirty->rotation != RR_Rotate_0) {
- 		dstregion = transform_region(damageregion,
- 					     &dirty->f_inverse,
--					     dirty->slave_dst->drawable.width,
--					     dirty->slave_dst->drawable.height);
-+					     dirty->secondary_dst->drawable.width,
-+					     dirty->secondary_dst->drawable.height);
- 	} else
- #endif
- 	{
-@@ -568,7 +568,7 @@ dirty_region(PixmapDirtyUpdatePtr dirty)
- 
- 	    dstregion = RegionDuplicate(damageregion);
- 	    RegionTranslate(dstregion, -dirty->x, -dirty->y);
--	    PixmapRegionInit(&pixregion, dirty->slave_dst);
-+	    PixmapRegionInit(&pixregion, dirty->secondary_dst);
- 	    RegionIntersect(dstregion, dstregion, &pixregion);
- 	    RegionUninit(&pixregion);
- 	}
-@@ -585,8 +585,8 @@ redisplay_dirty(PixmapDirtyUpdatePtr dirty, RegionPtr region)
- 	if (RegionNil(region))
- 		goto out;
- 
--	if (dirty->slave_dst->master_pixmap)
--	    DamageRegionAppend(&dirty->slave_dst->drawable, region);
-+	if (dirty->secondary_dst->primary_pixmap)
-+	    DamageRegionAppend(&dirty->secondary_dst->drawable, region);
- 
- #ifdef HAS_DIRTYTRACKING_ROTATION
- 	PixmapSyncDirtyHelper(dirty);
-@@ -595,8 +595,8 @@ redisplay_dirty(PixmapDirtyUpdatePtr dirty, RegionPtr region)
- #endif
- 
- 	radeon_cs_flush_indirect(src_scrn);
--	if (dirty->slave_dst->master_pixmap)
--	    DamageRegionProcessPending(&dirty->slave_dst->drawable);
-+	if (dirty->secondary_dst->primary_pixmap)
-+	    DamageRegionProcessPending(&dirty->secondary_dst->drawable);
- 
- out:
- 	DamageEmpty(dirty->damage);
-@@ -613,12 +613,12 @@ radeon_prime_scanout_update_abort(xf86CrtcPtr crtc, void *event_data)
- void
- radeon_sync_shared_pixmap(PixmapDirtyUpdatePtr dirty)
- {
--    ScreenPtr master_screen = radeon_dirty_master(dirty);
-+    ScreenPtr primary_screen = radeon_dirty_primary(dirty);
-     PixmapDirtyUpdatePtr ent;
-     RegionPtr region;
- 
--    xorg_list_for_each_entry(ent, &master_screen->pixmap_dirty_list, ent) {
--	if (!radeon_dirty_src_equals(dirty, ent->slave_dst))
-+    xorg_list_for_each_entry(ent, &primary_screen->pixmap_dirty_list, ent) {
-+	if (!radeon_dirty_src_equals(dirty, ent->secondary_dst))
- 	    continue;
- 
- 	region = dirty_region(ent);
-@@ -631,45 +631,45 @@ radeon_sync_shared_pixmap(PixmapDirtyUpdatePtr dirty)
- #if HAS_SYNC_SHARED_PIXMAP
- 
- static Bool
--master_has_sync_shared_pixmap(ScrnInfoPtr scrn, PixmapDirtyUpdatePtr dirty)
-+primary_has_sync_shared_pixmap(ScrnInfoPtr scrn, PixmapDirtyUpdatePtr dirty)
- {
--    ScreenPtr master_screen = radeon_dirty_master(dirty);
-+    ScreenPtr primary_screen = radeon_dirty_primary(dirty);
- 
--    return !!master_screen->SyncSharedPixmap;
-+    return !!primary_screen->SyncSharedPixmap;
- }
- 
- static Bool
--slave_has_sync_shared_pixmap(ScrnInfoPtr scrn, PixmapDirtyUpdatePtr dirty)
-+secondary_has_sync_shared_pixmap(ScrnInfoPtr scrn, PixmapDirtyUpdatePtr dirty)
- {
--    ScreenPtr slave_screen = dirty->slave_dst->drawable.pScreen;
-+    ScreenPtr secondary_screen = dirty->secondary_dst->drawable.pScreen;
- 
--    return !!slave_screen->SyncSharedPixmap;
-+    return !!secondary_screen->SyncSharedPixmap;
- }
- 
- static void
- call_sync_shared_pixmap(PixmapDirtyUpdatePtr dirty)
- {
--    ScreenPtr master_screen = radeon_dirty_master(dirty);
-+    ScreenPtr primary_screen = radeon_dirty_primary(dirty);
- 
--    master_screen->SyncSharedPixmap(dirty);
-+    primary_screen->SyncSharedPixmap(dirty);
- }
- 
- #else /* !HAS_SYNC_SHARED_PIXMAP */
- 
- static Bool
--master_has_sync_shared_pixmap(ScrnInfoPtr scrn, PixmapDirtyUpdatePtr dirty)
-+primary_has_sync_shared_pixmap(ScrnInfoPtr scrn, PixmapDirtyUpdatePtr dirty)
- {
--    ScrnInfoPtr master_scrn = xf86ScreenToScrn(radeon_dirty_master(dirty));
-+    ScrnInfoPtr primary_scrn = xf86ScreenToScrn(radeon_dirty_primary(dirty));
- 
--    return master_scrn->driverName == scrn->driverName;
-+    return primary_scrn->driverName == scrn->driverName;
- }
- 
- static Bool
--slave_has_sync_shared_pixmap(ScrnInfoPtr scrn, PixmapDirtyUpdatePtr dirty)
-+secondary_has_sync_shared_pixmap(ScrnInfoPtr scrn, PixmapDirtyUpdatePtr dirty)
- {
--    ScrnInfoPtr slave_scrn = xf86ScreenToScrn(dirty->slave_dst->drawable.pScreen);
-+    ScrnInfoPtr secondary_scrn = xf86ScreenToScrn(dirty->secondary_dst->drawable.pScreen);
- 
--    return slave_scrn->driverName == scrn->driverName;
-+    return secondary_scrn->driverName == scrn->driverName;
- }
- 
- static void
-@@ -684,12 +684,12 @@ call_sync_shared_pixmap(PixmapDirtyUpdatePtr dirty)
- static xf86CrtcPtr
- radeon_prime_dirty_to_crtc(PixmapDirtyUpdatePtr dirty)
- {
--    ScreenPtr screen = dirty->slave_dst->drawable.pScreen;
-+    ScreenPtr screen = dirty->secondary_dst->drawable.pScreen;
-     ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
-     xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
-     int c;
- 
--    /* Find the CRTC which is scanning out from this slave pixmap */
-+    /* Find the CRTC which is scanning out from this secondary pixmap */
-     for (c = 0; c < xf86_config->num_crtc; c++) {
- 	xf86CrtcPtr xf86_crtc = xf86_config->crtc[c];
- 	drmmode_crtc_private_ptr drmmode_crtc = xf86_crtc->driver_private;
-@@ -714,7 +714,7 @@ radeon_prime_scanout_do_update(xf86CrtcPtr crtc, unsigned scanout_id)
- 	if (radeon_dirty_src_equals(dirty, drmmode_crtc->prime_scanout_pixmap)) {
- 	    RegionPtr region;
- 
--	    if (master_has_sync_shared_pixmap(scrn, dirty))
-+	    if (primary_has_sync_shared_pixmap(scrn, dirty))
- 		call_sync_shared_pixmap(dirty);
- 
- 	    region = dirty_region(dirty);
-@@ -727,7 +727,7 @@ radeon_prime_scanout_do_update(xf86CrtcPtr crtc, unsigned scanout_id)
- 		radeon_cs_flush_indirect(scrn);
- 		RegionCopy(&drmmode_crtc->scanout_last_region, region);
- 		RegionTranslate(region, -crtc->x, -crtc->y);
--		dirty->slave_dst = drmmode_crtc->scanout[scanout_id].pixmap;
-+		dirty->secondary_dst = drmmode_crtc->scanout[scanout_id].pixmap;
- 	    }
- 
- 	    redisplay_dirty(dirty, region);
-@@ -754,7 +754,7 @@ radeon_prime_scanout_update_handler(xf86CrtcPtr crtc, uint32_t frame, uint64_t u
- static void
- radeon_prime_scanout_update(PixmapDirtyUpdatePtr dirty)
- {
--    ScreenPtr screen = dirty->slave_dst->drawable.pScreen;
-+    ScreenPtr screen = dirty->secondary_dst->drawable.pScreen;
-     ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
-     RADEONEntPtr pRADEONEnt = RADEONEntPriv(scrn);
-     xf86CrtcPtr xf86_crtc = radeon_prime_dirty_to_crtc(dirty);
-@@ -818,7 +818,7 @@ radeon_prime_scanout_update(PixmapDirtyUpdatePtr dirty)
- static void
- radeon_prime_scanout_flip(PixmapDirtyUpdatePtr ent)
- {
--    ScreenPtr screen = ent->slave_dst->drawable.pScreen;
-+    ScreenPtr screen = ent->secondary_dst->drawable.pScreen;
-     ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
-     RADEONEntPtr pRADEONEnt = RADEONEntPriv(scrn);
-     xf86CrtcPtr crtc = radeon_prime_dirty_to_crtc(ent);
-@@ -893,11 +893,11 @@ radeon_dirty_update(ScrnInfoPtr scrn)
- 		if (screen->isGPU) {
- 			PixmapDirtyUpdatePtr region_ent = ent;
- 
--			if (master_has_sync_shared_pixmap(scrn, ent)) {
--				ScreenPtr master_screen = radeon_dirty_master(ent);
-+			if (primary_has_sync_shared_pixmap(scrn, ent)) {
-+				ScreenPtr primary_screen = radeon_dirty_primary(ent);
- 
--				xorg_list_for_each_entry(region_ent, &master_screen->pixmap_dirty_list, ent) {
--					if (radeon_dirty_src_equals(ent, region_ent->slave_dst))
-+				xorg_list_for_each_entry(region_ent, &primary_screen->pixmap_dirty_list, ent) {
-+					if (radeon_dirty_src_equals(ent, region_ent->secondary_dst))
- 						break;
- 				}
- 			}
-@@ -921,7 +921,7 @@ radeon_dirty_update(ScrnInfoPtr scrn)
- 
- 			RegionDestroy(region);
- 		} else {
--			if (slave_has_sync_shared_pixmap(scrn, ent))
-+			if (secondary_has_sync_shared_pixmap(scrn, ent))
- 				continue;
- 
- 			region = dirty_region(ent);
-@@ -1216,7 +1216,7 @@ static void RADEONBlockHandler_KMS(BLOCKHANDLER_ARGS_DECL)
-     (*pScreen->BlockHandler) (BLOCKHANDLER_ARGS);
-     pScreen->BlockHandler = RADEONBlockHandler_KMS;
- 
--    if (!xf86ScreenToScrn(radeon_master_screen(pScreen))->vtSema)
-+    if (!xf86ScreenToScrn(radeon_primary_screen(pScreen))->vtSema)
- 	return;
- 
-     if (!pScreen->isGPU)
-@@ -2584,7 +2584,7 @@ CARD32 cleanup_black_fb(OsTimerPtr timer, CARD32 now, pointer data)
-     xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
-     int c;
- 
--    if (xf86ScreenToScrn(radeon_master_screen(screen))->vtSema)
-+    if (xf86ScreenToScrn(radeon_primary_screen(screen))->vtSema)
- 	return 0;
- 
-     /* Unreference the all-black FB created by RADEONLeaveVT_KMS. After
--- 
-2.33.1
-
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-ati_19.1.0.bb b/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-ati_19.1.0.bb
deleted file mode 100644
index c8ce77a..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-ati_19.1.0.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-require recipes-graphics/xorg-driver/xorg-driver-video.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=aabff1606551f9461ccf567739af63dc"
-
-SUMMARY = "X.Org X server -- ATI Radeon video driver"
-
-DESCRIPTION = "Open-source X.org graphics driver for ATI Radeon graphics"
-
-DEPENDS += "virtual/libx11 libxvmc drm \
-            virtual/libgl xorgproto libpciaccess"
-
-inherit features_check
-REQUIRED_DISTRO_FEATURES += "opengl"
-
-SRC_URI += "file://0001-Fix-link-failure-with-gcc-10.patch \
-            file://0001-ati-cleanup-terminology-to-use-primary-secondary.patch \
-           "
-SRC_URI[sha256sum] = "659f5a1629eea5f5334d9b39b18e6807a63aa1efa33c1236d9cc53acbb223c49"
-
-#EXTRA_OECONF += "--disable-glamor"
-
-RDEPENDS:${PN} += "xserver-xorg-module-exa"
-RRECOMMENDS:${PN} += "linux-firmware-radeon"
-
-FILES:${PN} += "${datadir}/X11"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-ati_git.bb b/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-ati_git.bb
new file mode 100644
index 0000000..9452c3a
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-ati_git.bb
@@ -0,0 +1,41 @@
+require recipes-graphics/xorg-driver/xorg-driver-video.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=aabff1606551f9461ccf567739af63dc"
+
+SUMMARY = "X.Org X server -- ATI Radeon video driver"
+
+DESCRIPTION = "Open-source X.org graphics driver for ATI Radeon graphics"
+
+DEPENDS += "virtual/libx11 libxvmc drm \
+            virtual/libgl xorgproto libpciaccess"
+
+inherit features_check
+
+REQUIRED_DISTRO_FEATURES += "opengl"
+
+SRC_URI = "git://git@gitlab.freedesktop.org/xorg/driver/xf86-video-ati.git;branch=master"
+SRCREV = "7a6a34af026f0bef8080b91baf97a729380bca01"
+
+SRC_URI[sha256sum] = "659f5a1629eea5f5334d9b39b18e6807a63aa1efa33c1236d9cc53acbb223c49"
+
+PV = "19.1.0+git${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+PACKAGECONFIG ??= "udev"
+PACKAGECONFIG[udev] = "--enable-udev,--disable-udev,udev"
+PACKAGECONFIG[glamor] = "--enable-glamor,--disable-glamor"
+
+RDEPENDS:${PN}:append = "\
+    ${@bb.utils.contains('PACKAGECONFIG', 'glamor', 'libegl', '', d)} \
+    mesa-megadriver \
+    xserver-xorg-extension-glx \
+    xserver-xorg-module-exa \
+"
+
+RRECOMMENDS:${PN} += "linux-firmware-radeon"
+
+PACKAGES =+ "${PN}-config"
+
+FILES:${PN}-config = "${datadir}/X11/xorg.conf.d"
+FILES:${PN} += "${datadir}/X11"
