diff --git a/buildroot-patches/0112-Bump-mesa3d-to-latest-version-from-buildroot-master.patch b/buildroot-patches/0112-Bump-mesa3d-to-latest-version-from-buildroot-master.patch
new file mode 100644
index 00000000..0ea8ae39
--- /dev/null
+++ b/buildroot-patches/0112-Bump-mesa3d-to-latest-version-from-buildroot-master.patch
@@ -0,0 +1,392 @@
+From a14fa4637769f1c77812ccf3b9f2d035c6b7bfd0 Mon Sep 17 00:00:00 2001
+From: j1nx
+Date: Mon, 18 May 2020 10:20:52 +0200
+Subject: [PATCH 1/1] Bump mesa3d to latest version from buildroot master
+
+---
+ package/mesa3d-headers/mesa3d-headers.mk | 2 +-
+ ...d-scanner-provided-by-wayland-scanne.patch | 52 ------------------
+ .../0005-vc4_bufmgr-fix-time_t-printf.patch | 33 ++++++++++++
+ ...n_bo.h-add-time.h-include-for-time_t.patch | 32 +++++++++++
+ ...util-remove-the-dependency-on-kcmp.h.patch | 42 ---------------
+ .../0007-v3d_bufmgr-fix-time_t-printf.patch | 33 ++++++++++++
+ package/mesa3d/Config.in | 2 +-
+ package/mesa3d/mesa3d.hash | 8 +--
+ package/mesa3d/mesa3d.mk | 54 +++++++++++--------
+ 9 files changed, 137 insertions(+), 121 deletions(-)
+ delete mode 100644 package/mesa3d/0002-meson-use-wayland-scanner-provided-by-wayland-scanne.patch
+ create mode 100644 package/mesa3d/0005-vc4_bufmgr-fix-time_t-printf.patch
+ create mode 100644 package/mesa3d/0006-pan_bo.h-add-time.h-include-for-time_t.patch
+ delete mode 100644 package/mesa3d/0006-util-remove-the-dependency-on-kcmp.h.patch
+ create mode 100644 package/mesa3d/0007-v3d_bufmgr-fix-time_t-printf.patch
+
+diff --git a/package/mesa3d-headers/mesa3d-headers.mk b/package/mesa3d-headers/mesa3d-headers.mk
+index 6af6e8843f..51b10acdb5 100644
+--- a/package/mesa3d-headers/mesa3d-headers.mk
++++ b/package/mesa3d-headers/mesa3d-headers.mk
+@@ -12,7 +12,7 @@ endif
+
+ # Not possible to directly refer to mesa3d variables, because of
+ # first/second expansion trickery...
+-MESA3D_HEADERS_VERSION = 19.3.4
++MESA3D_HEADERS_VERSION = 20.0.7
+ MESA3D_HEADERS_SOURCE = mesa-$(MESA3D_HEADERS_VERSION).tar.xz
+ MESA3D_HEADERS_SITE = https://mesa.freedesktop.org/archive
+ MESA3D_HEADERS_DL_SUBDIR = mesa3d
+diff --git a/package/mesa3d/0002-meson-use-wayland-scanner-provided-by-wayland-scanne.patch b/package/mesa3d/0002-meson-use-wayland-scanner-provided-by-wayland-scanne.patch
+deleted file mode 100644
+index 784b27c4a2..0000000000
+--- a/package/mesa3d/0002-meson-use-wayland-scanner-provided-by-wayland-scanne.patch
++++ /dev/null
+@@ -1,52 +0,0 @@
+-From 0e107f7bac8d84d8fb2bb5b83bfb4474348a82c1 Mon Sep 17 00:00:00 2001
+-From: Romain Naour
+-Date: Wed, 17 Apr 2019 22:47:05 +0200
+-Subject: [PATCH] meson: use wayland-scanner provided by wayland-scanner-path
+-
+-When cross-compiling the .pc file might point to the wrong
+-wayland-scanner binary (target rather than host) resulting in a
+-non-executable and wrong scanner.
+-First try by using the path provided by wayland-scanner-path,
+-and if that fails fall back into pkg-config.
+-
+-Based on the patch for autotools provided by Gustavo Zacarias.
+-
+-Signed-off-by: Romain Naour
+----
+- meson.build | 5 ++++-
+- meson_options.txt | 6 ++++++
+- 2 files changed, 10 insertions(+), 1 deletion(-)
+-
+-diff --git a/meson.build b/meson.build
+-index 6c4f1508855..ef0532b2cfb 100644
+---- a/meson.build
+-+++ b/meson.build
+-@@ -1319,7 +1319,10 @@ endif
+-
+- if with_platform_wayland
+- dep_wl_scanner = dependency('wayland-scanner', native: true)
+-- prog_wl_scanner = find_program(dep_wl_scanner.get_pkgconfig_variable('wayland_scanner'))
+-+ prog_wl_scanner = get_option('wayland-scanner-path')
+-+ if prog_wl_scanner == ''
+-+ prog_wl_scanner = find_program(dep_wl_scanner.get_pkgconfig_variable('wayland_scanner'))
+-+ endif
+- if dep_wl_scanner.version().version_compare('>= 1.15')
+- wl_scanner_arg = 'private-code'
+- else
+-diff --git a/meson_options.txt b/meson_options.txt
+-index ccf70659ff7..59ff8df8337 100644
+---- a/meson_options.txt
+-+++ b/meson_options.txt
+-@@ -324,3 +324,9 @@ option(
+- value : true,
+- description : 'Enable direct rendering in GLX and EGL for DRI',
+- )
+-+option(
+-+ 'wayland-scanner-path',
+-+ type : 'string',
+-+ value : '',
+-+ description : 'Locations to wayland-scanner binary. Default: use path from pkg-config'
+-+)
+---
+-2.20.1
+-
+diff --git a/package/mesa3d/0005-vc4_bufmgr-fix-time_t-printf.patch b/package/mesa3d/0005-vc4_bufmgr-fix-time_t-printf.patch
+new file mode 100644
+index 0000000000..56357e1f3a
+--- /dev/null
++++ b/package/mesa3d/0005-vc4_bufmgr-fix-time_t-printf.patch
+@@ -0,0 +1,33 @@
++From 4ed48324b032857c95e6803409d5def9660d5b46 Mon Sep 17 00:00:00 2001
++From: Peter Seiderer
++Date: Sun, 22 Mar 2020 11:42:35 +0100
++Subject: [PATCH] vc4_bufmgr: fix time_t printf
++MIME-Version: 1.0
++Content-Type: text/plain; charset=UTF-8
++Content-Transfer-Encoding: 8bit
++
++Fixes:
++
++ error: format ‘%ld’ expects argument of type ‘long int’, but argument 3 has type ‘time_t’ {aka ‘long long int’}
++
++Signed-off-by: Peter Seiderer
++---
++ src/gallium/drivers/vc4/vc4_bufmgr.c | 2 +-
++ 1 file changed, 1 insertion(+), 1 deletion(-)
++
++diff --git a/src/gallium/drivers/vc4/vc4_bufmgr.c b/src/gallium/drivers/vc4/vc4_bufmgr.c
++index f7ac1698ee3..a786e8ee939 100644
++--- a/src/gallium/drivers/vc4/vc4_bufmgr.c
+++++ b/src/gallium/drivers/vc4/vc4_bufmgr.c
++@@ -100,7 +100,7 @@ vc4_bo_dump_stats(struct vc4_screen *screen)
++ struct timespec time;
++ clock_gettime(CLOCK_MONOTONIC, &time);
++ fprintf(stderr, " now: %ld\n",
++- time.tv_sec);
+++ (long)time.tv_sec);
++ }
++ }
++
++--
++2.25.1
++
+diff --git a/package/mesa3d/0006-pan_bo.h-add-time.h-include-for-time_t.patch b/package/mesa3d/0006-pan_bo.h-add-time.h-include-for-time_t.patch
+new file mode 100644
+index 0000000000..1586b26bba
+--- /dev/null
++++ b/package/mesa3d/0006-pan_bo.h-add-time.h-include-for-time_t.patch
+@@ -0,0 +1,32 @@
++From fc93d357efd207525a4ddaac609ab5a6bf469bcd Mon Sep 17 00:00:00 2001
++From: Peter Seiderer
++Date: Sun, 22 Mar 2020 11:48:31 +0100
++Subject: [PATCH] pan_bo.h: add time.h include for time_t
++MIME-Version: 1.0
++Content-Type: text/plain; charset=UTF-8
++Content-Transfer-Encoding: 8bit
++
++Fixes:
++
++ ../src/gallium/drivers/panfrost/pan_bo.h:93:9: error: unknown type name ‘time_t’
++
++Signed-off-by: Peter Seiderer
++---
++ src/gallium/drivers/panfrost/pan_bo.h | 1 +
++ 1 file changed, 1 insertion(+)
++
++diff --git a/src/gallium/drivers/panfrost/pan_bo.h b/src/gallium/drivers/panfrost/pan_bo.h
++index 414c356b95c..6dda393095d 100644
++--- a/src/gallium/drivers/panfrost/pan_bo.h
+++++ b/src/gallium/drivers/panfrost/pan_bo.h
++@@ -29,6 +29,7 @@
++ #include
++ #include "pipe/p_state.h"
++ #include "util/list.h"
+++#include
++
++ struct panfrost_screen;
++
++--
++2.25.1
++
+diff --git a/package/mesa3d/0006-util-remove-the-dependency-on-kcmp.h.patch b/package/mesa3d/0006-util-remove-the-dependency-on-kcmp.h.patch
+deleted file mode 100644
+index 27ae021e08..0000000000
+--- a/package/mesa3d/0006-util-remove-the-dependency-on-kcmp.h.patch
++++ /dev/null
+@@ -1,42 +0,0 @@
+-From 63ad4535df6a0a938e7391d73adcada05e730c89 Mon Sep 17 00:00:00 2001
+-From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?=
+-Date: Tue, 18 Feb 2020 16:12:23 -0500
+-Subject: [PATCH] util: remove the dependency on kcmp.h
+-MIME-Version: 1.0
+-Content-Type: text/plain; charset=UTF-8
+-Content-Transfer-Encoding: 8bit
+-
+-Fixes: f76cbc7901f7 "util: Add os_same_file_description helper"
+-
+-Acked-by: Eric Engestrom
+-Reviewed-by: Michel Dänzer
+-Tested-by: Marge Bot
+-Part-of:
+-
+-[ Upstream: https://cgit.freedesktop.org/mesa/mesa/commit/?id=f7bfb10c69dfe48a91e35523cb5ee641bdbf6988 ]
+-Signed-off-by: Peter Seiderer
+----
+- src/util/os_file.c | 3 ++-
+- 1 file changed, 2 insertions(+), 1 deletion(-)
+-
+-diff --git a/src/util/os_file.c b/src/util/os_file.c
+-index b502ff4..128fe87 100644
+---- a/src/util/os_file.c
+-+++ b/src/util/os_file.c
+-@@ -34,11 +34,12 @@ os_file_create_unique(const char *filename, int filemode)
+- #if defined(__linux__)
+-
+- #include
+--#include
+- #include
+- #include
+- #include
+-
+-+/* copied from */
+-+#define KCMP_FILE 0
+-
+- static ssize_t
+- readN(int fd, char *buf, size_t len)
+---
+-2.25.1
+-
+diff --git a/package/mesa3d/0007-v3d_bufmgr-fix-time_t-printf.patch b/package/mesa3d/0007-v3d_bufmgr-fix-time_t-printf.patch
+new file mode 100644
+index 0000000000..f8031c2847
+--- /dev/null
++++ b/package/mesa3d/0007-v3d_bufmgr-fix-time_t-printf.patch
+@@ -0,0 +1,33 @@
++From c4984ce2b7d3bd7129ddb02e4e423bf00498607a Mon Sep 17 00:00:00 2001
++From: Peter Seiderer
++Date: Sun, 22 Mar 2020 13:03:00 +0100
++Subject: [PATCH] v3d_bufmgr: fix time_t printf
++MIME-Version: 1.0
++Content-Type: text/plain; charset=UTF-8
++Content-Transfer-Encoding: 8bit
++
++Fixes:
++
++ error: format ‘%ld’ expects argument of type ‘long int’, but argument 3 has type ‘time_t’ {aka ‘long long int’}
++
++Signed-off-by: Peter Seiderer
++---
++ src/gallium/drivers/v3d/v3d_bufmgr.c | 2 +-
++ 1 file changed, 1 insertion(+), 1 deletion(-)
++
++diff --git a/src/gallium/drivers/v3d/v3d_bufmgr.c b/src/gallium/drivers/v3d/v3d_bufmgr.c
++index 50e4081dafd..31a08036b38 100644
++--- a/src/gallium/drivers/v3d/v3d_bufmgr.c
+++++ b/src/gallium/drivers/v3d/v3d_bufmgr.c
++@@ -81,7 +81,7 @@ v3d_bo_dump_stats(struct v3d_screen *screen)
++ struct timespec time;
++ clock_gettime(CLOCK_MONOTONIC, &time);
++ fprintf(stderr, " now: %ld\n",
++- time.tv_sec);
+++ (long)time.tv_sec);
++ }
++ }
++
++--
++2.25.1
++
+diff --git a/package/mesa3d/Config.in b/package/mesa3d/Config.in
+index 16d77f42c2..dd512d9b76 100644
+--- a/package/mesa3d/Config.in
++++ b/package/mesa3d/Config.in
+@@ -106,13 +106,13 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV
+ select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
+ select BR2_PACKAGE_LIBDRM_ETNAVIV
+ select BR2_PACKAGE_MESA3D_GALLIUM_KMSRO
+- select BR2_PACKAGE_MESA3D_OPENGL_EGL
+ help
+ Mesa driver for Vivante GPUs.
+
+ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_FREEDRENO
+ bool "Gallium freedreno driver"
+ select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
++ select BR2_PACKAGE_LIBDRM_FREEDRENO
+ select BR2_PACKAGE_MESA3D_GALLIUM_KMSRO
+ help
+ Mesa driver for Freedreno GPUs.
+diff --git a/package/mesa3d/mesa3d.hash b/package/mesa3d/mesa3d.hash
+index 3237135b1c..0a6d0c5a82 100644
+--- a/package/mesa3d/mesa3d.hash
++++ b/package/mesa3d/mesa3d.hash
+@@ -1,6 +1,6 @@
+-# From https://lists.freedesktop.org/archives/mesa-announce/2020-February/000570.html
+-sha256 1da467e6ae2799a517e242462331eafd29ae77d9872f3a845df81f7c308e8fe4 mesa-19.3.4.tar.xz
+-sha512 2bbb3dc8f1d839f11fe12cc959393cd69607fa6714b2166b80299e0559d2d3b0ac38ed4e15ac3e5f472264eb24536d1901d350f7409f3a7e00d6f4ccbb2312fb mesa-19.3.4.tar.xz
++# From https://lists.freedesktop.org/archives/mesa-announce/2020-May/000583.html
++sha256 fe6e258fe772c3cd2ac01741bf7408058c3ac02d66acff9a6e669bd72e3ea178 mesa-20.0.7.tar.xz
++sha512 00baae50f14bf2b08b5654dffb11cf67499dc1825e1700b137fb5719e767e0e78e789979df2c194f677ea9c5e531f34965d47b9e37c239944c38d0570c7a9685 mesa-20.0.7.tar.xz
+
+ # License
+-sha256 d8d662974fc86e2e640362015e42de3fcc161d435a9f2111ecd8561412feca73 docs/license.html
++sha256 1ddae7da415352a5b5360ff3a9d7ecf23ba81408f62eeecce0011f32e3ef9da6 docs/license.html
+diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk
+index e742c4982b..d1933dabfd 100644
+--- a/package/mesa3d/mesa3d.mk
++++ b/package/mesa3d/mesa3d.mk
+@@ -5,7 +5,7 @@
+ ################################################################################
+
+ # When updating the version, please also update mesa3d-headers
+-MESA3D_VERSION = 19.3.4
++MESA3D_VERSION = 20.0.7
+ MESA3D_SOURCE = mesa-$(MESA3D_VERSION).tar.xz
+ MESA3D_SITE = https://mesa.freedesktop.org/archive
+ MESA3D_LICENSE = MIT, SGI, Khronos
+@@ -25,8 +25,7 @@ MESA3D_DEPENDENCIES = \
+
+ MESA3D_CONF_OPTS = \
+ -Dgallium-omx=disabled \
+- -Dpower8=false \
+- -Dvalgrind=false
++ -Dpower8=false
+
+ ifeq ($(BR2_PACKAGE_MESA3D_LLVM),y)
+ MESA3D_DEPENDENCIES += host-llvm llvm
+@@ -168,7 +167,22 @@ endef
+ MESA3D_POST_INSTALL_STAGING_HOOKS += MESA3D_REMOVE_OPENGL_HEADERS
+ endif
+
+-MESA3D_PLATFORMS = surfaceless
++ifeq ($(BR2_PACKAGE_MESA3D_NEEDS_X11),y)
++MESA3D_DEPENDENCIES += \
++ xlib_libX11 \
++ xlib_libXext \
++ xlib_libXdamage \
++ xlib_libXfixes \
++ xlib_libXrandr \
++ xlib_libXxf86vm \
++ xorgproto \
++ libxcb
++MESA3D_PLATFORMS += x11
++endif
++ifeq ($(BR2_PACKAGE_WAYLAND),y)
++MESA3D_DEPENDENCIES += wayland wayland-protocols
++MESA3D_PLATFORMS += wayland
++endif
+ ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),y)
+ MESA3D_PLATFORMS += drm
+ else ifeq ($(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_V3D),y)
+@@ -190,23 +204,7 @@ MESA3D_PLATFORMS += drm
+ else ifeq ($(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI),y)
+ MESA3D_PLATFORMS += drm
+ endif
+-ifeq ($(BR2_PACKAGE_WAYLAND),y)
+-MESA3D_DEPENDENCIES += wayland wayland-protocols
+-MESA3D_PLATFORMS += wayland
+-MESA3D_CONF_OPTS += -Dwayland-scanner-path=$(HOST_DIR)/bin/wayland-scanner
+-endif
+-ifeq ($(BR2_PACKAGE_MESA3D_NEEDS_X11),y)
+-MESA3D_DEPENDENCIES += \
+- xlib_libX11 \
+- xlib_libXext \
+- xlib_libXdamage \
+- xlib_libXfixes \
+- xlib_libXrandr \
+- xlib_libXxf86vm \
+- xorgproto \
+- libxcb
+-MESA3D_PLATFORMS += x11
+-endif
++MESA3D_PLATFORMS += surfaceless
+
+ MESA3D_CONF_OPTS += \
+ -Dplatforms=$(subst $(space),$(comma),$(MESA3D_PLATFORMS))
+@@ -242,6 +240,13 @@ else
+ MESA3D_CONF_OPTS += -Dgallium-xvmc=false
+ endif
+
++ifeq ($(BR2_PACKAGE_VALGRIND),y)
++MESA3D_CONF_OPTS += -Dvalgrind=true
++MESA3D_DEPENDENCIES += valgrind
++else
++MESA3D_CONF_OPTS += -Dvalgrind=false
++endif
++
+ ifeq ($(BR2_PACKAGE_LIBUNWIND),y)
+ MESA3D_CONF_OPTS += -Dlibunwind=true
+ MESA3D_DEPENDENCIES += libunwind
+@@ -263,4 +268,11 @@ else
+ MESA3D_CONF_OPTS += -Dlmsensors=false
+ endif
+
++ifeq ($(BR2_PACKAGE_ZSTD),y)
++MESA3D_CONF_OPTS += -Dzstd=true
++MESA3D_DEPENDENCIES += zstd
++else
++MESA3D_CONF_OPTS += -Dzstd=false
++endif
++
+ $(eval $(meson-package))
+--
+2.20.1
+