diff --git a/poky/meta/recipes-graphics/harfbuzz/harfbuzz/0001-test-threads-hb-subset-threads.cc-add-missing-cstdio.patch b/poky/meta/recipes-graphics/harfbuzz/harfbuzz/0001-test-threads-hb-subset-threads.cc-add-missing-cstdio.patch
new file mode 100644
index 0000000..13819f5
--- /dev/null
+++ b/poky/meta/recipes-graphics/harfbuzz/harfbuzz/0001-test-threads-hb-subset-threads.cc-add-missing-cstdio.patch
@@ -0,0 +1,34 @@
+From 7dfa672dac958bdbc7703ab0920e167eaa126754 Mon Sep 17 00:00:00 2001
+From: Sergei Trofimovich <slyich@gmail.com>
+Date: Mon, 16 Jan 2023 19:49:53 +0000
+Subject: [PATCH] test/threads/hb-subset-threads.cc: add missing <cstdio> include
+
+This week's `gcc-13` snapshot cleaned further up it's standard headers
+and exposed missing declaration as a build failure:
+
+    ../test/threads/hb-subset-threads.cc: In function 'void test_operation(operation_t, const char*, const test_input_t&)':
+    ../test/threads/hb-subset-threads.cc:127:3: error: 'printf' was not declared in this scope
+
+    ../test/threads/hb-subset-threads.cc: In function 'int main(int, char**)':
+    ../test/threads/hb-subset-threads.cc:157:19: error: 'atoi' was not declared in this scope
+
+Upstream-Status: Backport [https://github.com/harfbuzz/harfbuzz/commit/7dfa672dac958bdbc7703ab0920e167eaa126754]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ test/threads/hb-subset-threads.cc | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/test/threads/hb-subset-threads.cc b/test/threads/hb-subset-threads.cc
+index 9d86d8d51..f0e4b7e2a 100644
+--- a/test/threads/hb-subset-threads.cc
++++ b/test/threads/hb-subset-threads.cc
+@@ -1,4 +1,6 @@
+ #include <cassert>
++#include <cstdio>
++#include <cstdlib>
+ #include <cstring>
+ #include <thread>
+ #include <condition_variable>
+-- 
+2.39.1
+
diff --git a/poky/meta/recipes-graphics/harfbuzz/harfbuzz_6.0.0.bb b/poky/meta/recipes-graphics/harfbuzz/harfbuzz_6.0.0.bb
index ae54bad..1fce127 100644
--- a/poky/meta/recipes-graphics/harfbuzz/harfbuzz_6.0.0.bb
+++ b/poky/meta/recipes-graphics/harfbuzz/harfbuzz_6.0.0.bb
@@ -8,7 +8,8 @@
                     file://src/hb-ucd.cc;beginline=1;endline=15;md5=29d4dcb6410429195df67efe3382d8bc \
                     "
 
-SRC_URI = "${GITHUB_BASE_URI}/download/${PV}/${BPN}-${PV}.tar.xz"
+SRC_URI = "${GITHUB_BASE_URI}/download/${PV}/${BPN}-${PV}.tar.xz \
+           file://0001-test-threads-hb-subset-threads.cc-add-missing-cstdio.patch"
 SRC_URI[sha256sum] = "1d1010a1751d076d5291e433c138502a794d679a7498d1268ee21e2d4a140eb4"
 
 inherit meson pkgconfig lib_package gtk-doc gobject-introspection github-releases
diff --git a/poky/meta/recipes-graphics/mesa/files/0001-futex.h-Define-__NR_futex-if-it-does-not-exist.patch b/poky/meta/recipes-graphics/mesa/files/0001-futex.h-Define-__NR_futex-if-it-does-not-exist.patch
deleted file mode 100644
index e7d9219..0000000
--- a/poky/meta/recipes-graphics/mesa/files/0001-futex.h-Define-__NR_futex-if-it-does-not-exist.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 859bfc342d1db9b61c43f30d9aa27cea35ca7599 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 16 Oct 2020 11:03:47 -0700
-Subject: [PATCH] futex.h: Define __NR_futex if it does not exist
-
-__NR_futex is not defines by newer architectures e.g. arc, riscv32 as
-they only have 64bit variant of time_t. Glibc defines SYS_futex interface based on
-__NR_futex, since this is used in applications, such applications start
-to fail to build for these newer architectures. This patch defines a
-fallback to alias __NR_futex to __NR_futex_tim64 so SYS_futex keeps
-working
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- src/util/futex.h | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/src/util/futex.h b/src/util/futex.h
-index 2a2a00c..92fc123 100644
---- a/src/util/futex.h
-+++ b/src/util/futex.h
-@@ -38,6 +38,10 @@
- #define SYS_futex SYS_futex_time64
- #endif
- 
-+#if !defined(SYS_futex) && defined(SYS_futex_time64)
-+# define SYS_futex SYS_futex_time64
-+#endif
-+
- static inline long sys_futex(void *addr1, int op, int val1, const struct timespec *timeout, void *addr2, int val3)
- {
-    return syscall(SYS_futex, addr1, op, val1, timeout, addr2, val3);
diff --git a/poky/meta/recipes-graphics/mesa/files/0001-gbm-backend-fix-gbm-compile-without-dri.patch b/poky/meta/recipes-graphics/mesa/files/0001-gbm-backend-fix-gbm-compile-without-dri.patch
new file mode 100644
index 0000000..6541671
--- /dev/null
+++ b/poky/meta/recipes-graphics/mesa/files/0001-gbm-backend-fix-gbm-compile-without-dri.patch
@@ -0,0 +1,65 @@
+From 25946100e21cf2095bea334e8d7096798561d0b7 Mon Sep 17 00:00:00 2001
+From: Vincent Davis Jr <vince@underview.tech>
+Date: Wed, 28 Dec 2022 16:28:01 -0600
+Subject: [PATCH] gbm/backend: fix gbm compile without dri
+
+Upstream-Status: Backport
+
+https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20447
+https://gitlab.freedesktop.org/mesa/mesa/-/commit/842ca284650f066e58706741a7d22d67b5088e60
+
+At mesa version 22.2.3 patch wasn't introduced until after.
+
+Commit introduces a fix that allows for gbm to be built with an empty
+backend. There are situation especially in a Yocto/OE cross compilation
+environment where you want to build with an empty backend. The particular
+situation is as such:
+
+The mesa-gl recipe is the preferred provider for virtual/libgbm, virtual/libgl,
+virtual/mesa, etc... But the x11 DISTRO_FEATURE in't included this leads to build
+errors such as:
+
+| /../../../ld: src/gbm/libgbm.so.1.0.0.p/main_backend.c.o: in function `find_backend':
+| backend.c:(.text.find_backend+0xa4): undefined reference to `gbm_dri_backend'
+| /../../../ld: src/gbm/libgbm.so.1.0.0.p/main_backend.c.o:(.data.rel.ro.builtin_backends+0x4):
+                undefined reference to `gbm_dri_backend'
+| collect2: error: ld returned 1 exit status
+
+Issue should be replicable by setting -Ddri3=disabled and -Dgbm=enabled
+
+Add fix to bypasses compilation issue by excluding gbm dri backend. If
+HAVE_DRI || HAVE_DRIX not specified.
+
+Acked-by: David Heidelberg <david.heidelberg@collabora.com>
+Signed-off-by: Vincent Davis Jr <vince@underview.tech>
+---
+ src/gbm/main/backend.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/gbm/main/backend.c b/src/gbm/main/backend.c
+index 974d0a76a4e..feee0703495 100644
+--- a/src/gbm/main/backend.c
++++ b/src/gbm/main/backend.c
+@@ -42,7 +42,9 @@
+ #define ARRAY_SIZE(a) (sizeof(a)/sizeof((a)[0]))
+ #define VER_MIN(a, b) ((a) < (b) ? (a) : (b))
+ 
++#if defined(HAVE_DRI) || defined(HAVE_DRI2) || defined(HAVE_DRI3)
+ extern const struct gbm_backend gbm_dri_backend;
++#endif
+ 
+ struct gbm_backend_desc {
+    const char *name;
+@@ -51,7 +53,9 @@ struct gbm_backend_desc {
+ };
+ 
+ static const struct gbm_backend_desc builtin_backends[] = {
++#if defined(HAVE_DRI) || defined(HAVE_DRI2) || defined(HAVE_DRI3)
+    { "dri", &gbm_dri_backend },
++#endif
+ };
+ 
+ #define BACKEND_LIB_SUFFIX "_gbm"
+-- 
+2.34.1
+
diff --git a/poky/meta/recipes-graphics/mesa/files/0001-meson.build-check-for-all-linux-host_os-combinations.patch b/poky/meta/recipes-graphics/mesa/files/0001-meson.build-check-for-all-linux-host_os-combinations.patch
index ec263ce..36c33f8 100644
--- a/poky/meta/recipes-graphics/mesa/files/0001-meson.build-check-for-all-linux-host_os-combinations.patch
+++ b/poky/meta/recipes-graphics/mesa/files/0001-meson.build-check-for-all-linux-host_os-combinations.patch
@@ -1,4 +1,4 @@
-From d092a9000da62dfccca5b58fca56b94eb9989c48 Mon Sep 17 00:00:00 2001
+From 3b4d6b89f644b43e507c08181fef06db4326f9da Mon Sep 17 00:00:00 2001
 From: Alistair Francis <alistair@alistair23.me>
 Date: Thu, 14 Nov 2019 13:04:49 -0800
 Subject: [PATCH] meson.build: check for all linux host_os combinations
@@ -20,19 +20,19 @@
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/meson.build b/meson.build
-index 250b528..b5c98f8 100644
+index 172c64a..9b5294c 100644
 --- a/meson.build
 +++ b/meson.build
 @@ -173,7 +173,7 @@ with_any_opengl = with_opengl or with_gles1 or with_gles2
  # Only build shared_glapi if at least one OpenGL API is enabled
  with_shared_glapi = with_shared_glapi and with_any_opengl
  
--system_has_kms_drm = ['openbsd', 'netbsd', 'freebsd', 'gnu/kfreebsd', 'dragonfly', 'linux', 'sunos'].contains(host_machine.system())
-+system_has_kms_drm = ['openbsd', 'netbsd', 'freebsd', 'dragonfly'].contains(host_machine.system()) or host_machine.system().startswith('linux')
+-system_has_kms_drm = ['openbsd', 'netbsd', 'freebsd', 'gnu/kfreebsd', 'dragonfly', 'linux', 'sunos', 'android'].contains(host_machine.system())
++system_has_kms_drm = ['openbsd', 'netbsd', 'freebsd', 'gnu/kfreebsd', 'dragonfly', 'linux', 'sunos', 'android'].contains(host_machine.system()) or host_machine.system().startswith('linux')
  
- dri_drivers = get_option('dri-drivers')
- if dri_drivers.length() != 0
-@@ -1091,7 +1091,7 @@ if cc.has_function('reallocarray')
+ with_freedreno_kgsl = get_option('freedreno-kgsl')
+ if with_freedreno_kgsl
+@@ -1076,7 +1076,7 @@ if cc.has_function('reallocarray')
  endif
  
  # TODO: this is very incomplete
diff --git a/poky/meta/recipes-graphics/mesa/files/0001-nir-nir_opt_move-fix-ALWAYS_INLINE-compiler-error.patch b/poky/meta/recipes-graphics/mesa/files/0001-nir-nir_opt_move-fix-ALWAYS_INLINE-compiler-error.patch
index 7989843..1cf2349 100644
--- a/poky/meta/recipes-graphics/mesa/files/0001-nir-nir_opt_move-fix-ALWAYS_INLINE-compiler-error.patch
+++ b/poky/meta/recipes-graphics/mesa/files/0001-nir-nir_opt_move-fix-ALWAYS_INLINE-compiler-error.patch
@@ -1,67 +1,36 @@
-From da6e47f1717f34c73de388c56ffaf4861a07fdc5 Mon Sep 17 00:00:00 2001
-From: t bettler <thomas.bettler@gmail.com>
-Date: Sat, 9 Jul 2022 09:28:51 +0000
+From 267dd1f4d571ee606141aa66f1665aa152b4e911 Mon Sep 17 00:00:00 2001
+From: t0b3 <thomas.bettler@gmail.com>
+Date: Sat, 10 Dec 2022 14:32:53 +0100
 Subject: [PATCH] nir/nir_opt_move: fix ALWAYS_INLINE compiler error
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
 
-Backport merge request to fix mesa compile error when debug build
-enabled.
+Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
+Reviewed-by: Adam Jackson <ajax@redhat.com>
+Closes: #6825
+Fixes: f1d20ec6 ("nir/nir_opt_move: handle non-SSA defs ")
+Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17439>
 
-Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17439]
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
-
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-fix call to ‘always_inline’ ‘src_is_ssa’
-
-Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6825
-Fixes: f1d20ec67c3f186886b97de94f74484650f8fda1 ("nir/nir_opt_move: handle non-SSA defs ")
-
+Upstream-Status: Backport [https://gitlab.freedesktop.org/mesa/mesa/-/commit/267dd1f4d571ee606141aa66f1665aa152b4e911]
 ---
- src/compiler/nir/nir_inline_helpers.h | 10 ++++++++--
- src/compiler/nir/nir_opt_move.c       |  2 +-
- 2 files changed, 9 insertions(+), 3 deletions(-)
+ src/compiler/nir/nir_opt_move.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
-diff --git a/src/compiler/nir/nir_inline_helpers.h b/src/compiler/nir/nir_inline_helpers.h
-index 125dd8a..ec33f05 100644
---- a/src/compiler/nir/nir_inline_helpers.h
-+++ b/src/compiler/nir/nir_inline_helpers.h
-@@ -73,8 +73,8 @@ nir_foreach_dest(nir_instr *instr, nir_foreach_dest_cb cb, void *state)
-    return _nir_foreach_dest(instr, cb, state);
- }
- 
--static inline bool
--nir_foreach_src(nir_instr *instr, nir_foreach_src_cb cb, void *state)
-+static ALWAYS_INLINE bool
-+_nir_foreach_src(nir_instr *instr, nir_foreach_src_cb cb, void *state)
- {
-    switch (instr->type) {
-    case nir_instr_type_alu: {
-@@ -162,3 +162,9 @@ nir_foreach_src(nir_instr *instr, nir_foreach_src_cb cb, void *state)
-    dest_state.cb = cb;
-    return _nir_foreach_dest(instr, _nir_visit_dest_indirect, &dest_state);
- }
-+
-+static inline bool
-+nir_foreach_src(nir_instr *instr, nir_foreach_src_cb cb, void *state)
-+{
-+   return _nir_foreach_src(instr, cb, state);
-+}
 diff --git a/src/compiler/nir/nir_opt_move.c b/src/compiler/nir/nir_opt_move.c
-index 81bcde5..051c3cc 100644
+index 81bcde5c436..9aeb9f4cf86 100644
 --- a/src/compiler/nir/nir_opt_move.c
 +++ b/src/compiler/nir/nir_opt_move.c
-@@ -60,7 +60,7 @@ src_is_ssa(nir_src *src, void *state)
- static ALWAYS_INLINE bool
- instr_reads_register(nir_instr *instr)
+@@ -51,13 +51,13 @@
+  * lower register pressure.
+  */
+ 
+-static ALWAYS_INLINE bool
++static inline bool
+ src_is_ssa(nir_src *src, void *state)
  {
--   return !nir_foreach_src(instr, src_is_ssa, NULL);
-+   return !_nir_foreach_src(instr, src_is_ssa, NULL);
+    return src->is_ssa;
  }
  
- static bool
+-static ALWAYS_INLINE bool
++static inline bool
+ instr_reads_register(nir_instr *instr)
+ {
+    return !nir_foreach_src(instr, src_is_ssa, NULL);
diff --git a/poky/meta/recipes-graphics/mesa/libglu/0001-Remove-deprecated-register-in-C-17.patch b/poky/meta/recipes-graphics/mesa/libglu/0001-Remove-deprecated-register-in-C-17.patch
new file mode 100644
index 0000000..95d56e9
--- /dev/null
+++ b/poky/meta/recipes-graphics/mesa/libglu/0001-Remove-deprecated-register-in-C-17.patch
@@ -0,0 +1,32 @@
+From 1910b3a83a7e5aa1a31c4325829c94134fafce76 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 13 Jan 2023 20:58:07 -0800
+Subject: [PATCH] Remove deprecated register in C++17
+
+Fixes errors like
+
+src/libnurbs/internals/varray.cc:76:5: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
+    register long ds = sgn(arc->tail()[0] - arc->prev->tail()[0]);
+    ^~~~~~~~~
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/glu/-/merge_requests/10]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/libnurbs/internals/varray.cc | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/libnurbs/internals/varray.cc b/src/libnurbs/internals/varray.cc
+index 1cb2354..41b3b18 100644
+--- a/src/libnurbs/internals/varray.cc
++++ b/src/libnurbs/internals/varray.cc
+@@ -73,8 +73,8 @@ Varray::~Varray( void )
+ inline void
+ Varray::update( Arc_ptr arc, long dir[2], REAL val )
+ {
+-    register long ds = sgn(arc->tail()[0] - arc->prev->tail()[0]);
+-    register long dt = sgn(arc->tail()[1] - arc->prev->tail()[1]);
++    long ds = sgn(arc->tail()[0] - arc->prev->tail()[0]);
++    long dt = sgn(arc->tail()[1] - arc->prev->tail()[1]);
+ 
+     if( dir[0] != ds || dir[1] != dt ) {
+ 	dir[0] = ds;
diff --git a/poky/meta/recipes-graphics/mesa/libglu_9.0.2.bb b/poky/meta/recipes-graphics/mesa/libglu_9.0.2.bb
index 0d27dd1..525d631 100644
--- a/poky/meta/recipes-graphics/mesa/libglu_9.0.2.bb
+++ b/poky/meta/recipes-graphics/mesa/libglu_9.0.2.bb
@@ -11,7 +11,9 @@
 # Epoch as this used to be part of mesa
 PE = "2"
 
-SRC_URI = "https://mesa.freedesktop.org/archive/glu/glu-${PV}.tar.gz"
+SRC_URI = "https://mesa.freedesktop.org/archive/glu/glu-${PV}.tar.gz \
+           file://0001-Remove-deprecated-register-in-C-17.patch \
+           "
 
 SRC_URI[sha256sum] = "24effdfb952453cc00e275e1c82ca9787506aba0282145fff054498e60e19a65"
 
diff --git a/poky/meta/recipes-graphics/mesa/mesa-gl_22.2.3.bb b/poky/meta/recipes-graphics/mesa/mesa-gl_22.3.3.bb
similarity index 91%
rename from poky/meta/recipes-graphics/mesa/mesa-gl_22.2.3.bb
rename to poky/meta/recipes-graphics/mesa/mesa-gl_22.3.3.bb
index c7c7aa7..ca160f1 100644
--- a/poky/meta/recipes-graphics/mesa/mesa-gl_22.2.3.bb
+++ b/poky/meta/recipes-graphics/mesa/mesa-gl_22.3.3.bb
@@ -6,6 +6,8 @@
 
 S = "${WORKDIR}/mesa-${PV}"
 
+TARGET_CFLAGS = "-I${STAGING_INCDIR}/drm"
+
 # At least one DRI rendering engine is required to build mesa.
 # When no X11 is available, use osmesa for the rendering engine.
 PACKAGECONFIG ??= "opengl gallium ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', 'osmesa', d)}"
diff --git a/poky/meta/recipes-graphics/mesa/mesa.inc b/poky/meta/recipes-graphics/mesa/mesa.inc
index 77aa970..0ec681c 100644
--- a/poky/meta/recipes-graphics/mesa/mesa.inc
+++ b/poky/meta/recipes-graphics/mesa/mesa.inc
@@ -17,15 +17,12 @@
 SRC_URI = "https://mesa.freedesktop.org/archive/mesa-${PV}.tar.xz \
            file://0001-meson.build-check-for-all-linux-host_os-combinations.patch \
            file://0001-meson-misdetects-64bit-atomics-on-mips-clang.patch \
-           file://0001-futex.h-Define-__NR_futex-if-it-does-not-exist.patch \
            file://0001-util-format-Check-for-NEON-before-using-it.patch \
-           ${NATIVE_PATCHES} \
+           file://0001-gbm-backend-fix-gbm-compile-without-dri.patch \
+           file://0001-nir-nir_opt_move-fix-ALWAYS_INLINE-compiler-error.patch \
            "
-NATIVE_PATCHES ?= ""
-# required by mesa-native on Ubuntu 18.04 with gcc 7.5 when DEBUG_BUILD enabled
-NATIVE_PATCHES:class-native = "file://0001-nir-nir_opt_move-fix-ALWAYS_INLINE-compiler-error.patch"
 
-SRC_URI[sha256sum] = "ee7d026f7b1991dbae0861d359b671145c3a86f2a731353b885d2ea2d5c098d6"
+SRC_URI[sha256sum] = "bed799788bf2bd9ef079d97cd8e09348bf53cb086818578e40773b2b17812922"
 
 UPSTREAM_CHECK_GITTAGREGEX = "mesa-(?P<pver>\d+(\.\d+)+)"
 
@@ -97,7 +94,6 @@
 X11_DEPS = "xorgproto virtual/libx11 libxext libxxf86vm libxdamage libxfixes xrandr"
 # "x11" requires "opengl"
 PACKAGECONFIG[x11] = ",-Dglx=disabled,${X11_DEPS}"
-PACKAGECONFIG[xvmc] = "-Dgallium-xvmc=enabled,-Dgallium-xvmc=disabled,libxvmc"
 PACKAGECONFIG[wayland] = ",,wayland-native wayland libdrm wayland-protocols"
 
 PACKAGECONFIG[dri3] = "-Ddri3=enabled, -Ddri3=disabled, xorgproto libxshmfence"
diff --git a/poky/meta/recipes-graphics/mesa/mesa_22.2.3.bb b/poky/meta/recipes-graphics/mesa/mesa_22.3.3.bb
similarity index 100%
rename from poky/meta/recipes-graphics/mesa/mesa_22.2.3.bb
rename to poky/meta/recipes-graphics/mesa/mesa_22.3.3.bb
diff --git a/poky/meta/recipes-graphics/spir/spirv-headers_1.3.236.0.bb b/poky/meta/recipes-graphics/spir/spirv-headers_1.3.236.0.bb
index e35628e..5b4e157 100644
--- a/poky/meta/recipes-graphics/spir/spirv-headers_1.3.236.0.bb
+++ b/poky/meta/recipes-graphics/spir/spirv-headers_1.3.236.0.bb
@@ -8,7 +8,7 @@
 LIC_FILES_CHKSUM = "file://LICENSE;md5=c938b85bceb8fb26c1a807f28a52ae2d"
 
 SRCREV = "1d31a100405cf8783ca7a31e31cdd727c9fc54c3"
-SRC_URI = "git://github.com/KhronosGroup/SPIRV-Headers;protocol=https;branch=master"
+SRC_URI = "git://github.com/KhronosGroup/SPIRV-Headers;protocol=https;branch=sdk-1.3.236"
 PE = "1"
 UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)"
 S = "${WORKDIR}/git"
diff --git a/poky/meta/recipes-graphics/spir/spirv-tools_1.3.236.0.bb b/poky/meta/recipes-graphics/spir/spirv-tools_1.3.236.0.bb
index c921bde..1099925 100644
--- a/poky/meta/recipes-graphics/spir/spirv-tools_1.3.236.0.bb
+++ b/poky/meta/recipes-graphics/spir/spirv-tools_1.3.236.0.bb
@@ -8,7 +8,7 @@
 LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
 
 SRCREV = "40f5bf59c6acb4754a0bffd3c53a715732883a12"
-SRC_URI = "git://github.com/KhronosGroup/SPIRV-Tools.git;branch=master;protocol=https"
+SRC_URI = "git://github.com/KhronosGroup/SPIRV-Tools.git;branch=sdk-1.3.236;protocol=https"
 PE = "1"
 UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)"
 S = "${WORKDIR}/git"
diff --git a/poky/meta/recipes-graphics/vulkan/vulkan-samples/0001-CMakeLists.txt-do-not-hardcode-lib-as-installation-t.patch b/poky/meta/recipes-graphics/vulkan/vulkan-samples/0001-CMakeLists.txt-do-not-hardcode-lib-as-installation-t.patch
deleted file mode 100644
index 90fe277..0000000
--- a/poky/meta/recipes-graphics/vulkan/vulkan-samples/0001-CMakeLists.txt-do-not-hardcode-lib-as-installation-t.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 5fb216d35b6846074196e80421f3162df3b9c8cd Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Sun, 1 Nov 2020 23:19:22 +0000
-Subject: [PATCH] CMakeLists.txt: do not hardcode 'lib' as installation target
-
-Upstream-Status: Inappropriate [already fixed in newer versions]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- CMakeLists.txt | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index e00f8c77..f9896eed 100644
---- a/third_party/spirv-cross/CMakeLists.txt
-+++ b/third_party/spirv-cross/CMakeLists.txt
-@@ -67,8 +67,8 @@ macro(spirv_cross_add_library name config_name)
-   install(TARGETS ${name}
-       EXPORT ${config_name}Config
-       RUNTIME DESTINATION bin
--      LIBRARY DESTINATION lib
--      ARCHIVE DESTINATION lib
-+      LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-+      ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
-       PUBLIC_HEADER DESTINATION include/spirv_cross)
-   install(FILES ${hdrs} DESTINATION include/spirv_cross)
-   install(EXPORT ${config_name}Config DESTINATION share/${config_name}/cmake)
--- 
-2.17.1
-
diff --git a/poky/meta/recipes-graphics/vulkan/vulkan-samples/0001-Deprecate-u8string_view.patch b/poky/meta/recipes-graphics/vulkan/vulkan-samples/0001-Deprecate-u8string_view.patch
new file mode 100644
index 0000000..c2304bd
--- /dev/null
+++ b/poky/meta/recipes-graphics/vulkan/vulkan-samples/0001-Deprecate-u8string_view.patch
@@ -0,0 +1,59 @@
+From 93987b1ce7d6f91387202495aac61026070597df Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 15 Jan 2023 21:37:52 -0800
+Subject: [PATCH] Deprecate u8string_view
+
+Use basic_string_view instead
+
+Upstream-Status: Backport [https://github.com/fmtlib/fmt/commit/dea7fde8b7d649923dd41b0766bdf076033c62a2]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ include/spdlog/fmt/bundled/core.h   |  3 ++-
+ include/spdlog/fmt/bundled/format.h | 15 ++-------------
+ 2 files changed, 4 insertions(+), 14 deletions(-)
+
+diff --git a/include/spdlog/fmt/bundled/core.h b/include/spdlog/fmt/bundled/core.h
+index 50b79351..e8b029ef 100644
+--- a/include/spdlog/fmt/bundled/core.h
++++ b/include/spdlog/fmt/bundled/core.h
+@@ -1484,7 +1484,8 @@ FMT_API void vprint(wstring_view format_str, wformat_args args);
+ 
+ /**
+   \rst
+-  Prints formatted data to ``stdout``.
++  Formats ``args`` according to specifications in ``format_str`` and writes the
++  output to ``stdout``.
+ 
+   **Example**::
+ 
+diff --git a/include/spdlog/fmt/bundled/format.h b/include/spdlog/fmt/bundled/format.h
+index 1bb24a52..39426361 100644
+--- a/include/spdlog/fmt/bundled/format.h
++++ b/include/spdlog/fmt/bundled/format.h
+@@ -407,21 +407,10 @@ void basic_buffer<T>::append(const U *begin, const U *end) {
+ enum char8_t: unsigned char {};
+ #endif
+ 
+-// A UTF-8 string view.
+-class u8string_view : public basic_string_view<char8_t> {
+- public:
+-  typedef char8_t char_type;
+-
+-  u8string_view(const char *s):
+-    basic_string_view<char8_t>(reinterpret_cast<const char8_t*>(s)) {}
+-  u8string_view(const char *s, size_t count) FMT_NOEXCEPT:
+-    basic_string_view<char8_t>(reinterpret_cast<const char8_t*>(s), count) {}
+-};
+-
+ #if FMT_USE_USER_DEFINED_LITERALS
+ inline namespace literals {
+-inline u8string_view operator"" _u(const char *s, std::size_t n) {
+-  return {s, n};
++inline basic_string_view<char8_t> operator"" _u(const char* s, std::size_t n) {
++  return {reinterpret_cast<const char8_t*>(s), n};
+ }
+ }
+ #endif
+-- 
+2.39.0
+
diff --git a/poky/meta/recipes-graphics/vulkan/vulkan-samples/0001-Qualify-move-as-std-move.patch b/poky/meta/recipes-graphics/vulkan/vulkan-samples/0001-Qualify-move-as-std-move.patch
deleted file mode 100644
index 80ee521..0000000
--- a/poky/meta/recipes-graphics/vulkan/vulkan-samples/0001-Qualify-move-as-std-move.patch
+++ /dev/null
@@ -1,405 +0,0 @@
-From 9e061b12b9305eee96a4d3129b646c244cc02347 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 14 Aug 2022 19:16:45 -0700
-Subject: [PATCH] Qualify move as std::move
-
-Seeing errors like below with clang-15
-
-spirv_common.hpp:692:19: error: unqualified call to std::move
-
-squashed Backport of following upstream commits
-
-https://github.com/KhronosGroup/SPIRV-Cross/commit/44c3333a1c315ead00c24f7aef5fa8a7ccf49299
-https://github.com/KhronosGroup/SPIRV-Cross/commit/0eda71c40936586ea812d0d20d93c11a3e9af192
-
-Upstream-Status: Backport [https://github.com/KhronosGroup/SPIRV-Cross/commit/0eda71c40936586ea812d0d20d93c11a3e9af192]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- main.cpp          | 38 +++++++++++++++++++-------------------
- spirv_common.hpp  |  2 +-
- spirv_cpp.hpp     |  2 +-
- spirv_cross.cpp   | 18 +++++++++---------
- spirv_glsl.cpp    |  2 +-
- spirv_glsl.hpp    |  2 +-
- spirv_hlsl.cpp    |  4 ++--
- spirv_hlsl.hpp    |  2 +-
- spirv_msl.cpp     |  2 +-
- spirv_parser.cpp  |  4 ++--
- spirv_reflect.hpp |  2 +-
- 11 files changed, 39 insertions(+), 39 deletions(-)
-
-diff --git a/main.cpp b/main.cpp
-index 78991094..581c5e3b 100644
---- a/main.cpp
-+++ b/main.cpp
-@@ -65,7 +65,7 @@ struct CLICallbacks
- struct CLIParser
- {
- 	CLIParser(CLICallbacks cbs_, int argc_, char *argv_[])
--	    : cbs(move(cbs_))
-+	    : cbs(std::move(cbs_))
- 	    , argc(argc_)
- 	    , argv(argv_)
- 	{
-@@ -722,7 +722,7 @@ static int main_inner(int argc, char *argv[])
- 		auto old_name = parser.next_string();
- 		auto new_name = parser.next_string();
- 		auto model = stage_to_execution_model(parser.next_string());
--		args.entry_point_rename.push_back({ old_name, new_name, move(model) });
-+		args.entry_point_rename.push_back({ old_name, new_name, std::move(model) });
- 	});
- 	cbs.add("--entry", [&args](CLIParser &parser) { args.entry = parser.next_string(); });
- 	cbs.add("--stage", [&args](CLIParser &parser) { args.entry_stage = parser.next_string(); });
-@@ -731,20 +731,20 @@ static int main_inner(int argc, char *argv[])
- 		HLSLVertexAttributeRemap remap;
- 		remap.location = parser.next_uint();
- 		remap.semantic = parser.next_string();
--		args.hlsl_attr_remap.push_back(move(remap));
-+		args.hlsl_attr_remap.push_back(std::move(remap));
- 	});
- 
- 	cbs.add("--remap", [&args](CLIParser &parser) {
- 		string src = parser.next_string();
- 		string dst = parser.next_string();
- 		uint32_t components = parser.next_uint();
--		args.remaps.push_back({ move(src), move(dst), components });
-+		args.remaps.push_back({ std::move(src), std::move(dst), components });
- 	});
- 
- 	cbs.add("--remap-variable-type", [&args](CLIParser &parser) {
- 		string var_name = parser.next_string();
- 		string new_type = parser.next_string();
--		args.variable_type_remaps.push_back({ move(var_name), move(new_type) });
-+		args.variable_type_remaps.push_back({ std::move(var_name), std::move(new_type) });
- 	});
- 
- 	cbs.add("--rename-interface-variable", [&args](CLIParser &parser) {
-@@ -757,18 +757,18 @@ static int main_inner(int argc, char *argv[])
- 
- 		uint32_t loc = parser.next_uint();
- 		string var_name = parser.next_string();
--		args.interface_variable_renames.push_back({ cls, loc, move(var_name) });
-+		args.interface_variable_renames.push_back({ cls, loc, std::move(var_name) });
- 	});
- 
- 	cbs.add("--pls-in", [&args](CLIParser &parser) {
- 		auto fmt = pls_format(parser.next_string());
- 		auto name = parser.next_string();
--		args.pls_in.push_back({ move(fmt), move(name) });
-+		args.pls_in.push_back({ std::move(fmt), std::move(name) });
- 	});
- 	cbs.add("--pls-out", [&args](CLIParser &parser) {
- 		auto fmt = pls_format(parser.next_string());
- 		auto name = parser.next_string();
--		args.pls_out.push_back({ move(fmt), move(name) });
-+		args.pls_out.push_back({ std::move(fmt), std::move(name) });
- 	});
- 	cbs.add("--shader-model", [&args](CLIParser &parser) {
- 		args.shader_model = parser.next_uint();
-@@ -788,7 +788,7 @@ static int main_inner(int argc, char *argv[])
- 	cbs.default_handler = [&args](const char *value) { args.input = value; };
- 	cbs.error_handler = [] { print_help(); };
- 
--	CLIParser parser{ move(cbs), argc - 1, argv + 1 };
-+	CLIParser parser{ std::move(cbs), argc - 1, argv + 1 };
- 	if (!parser.parse())
- 	{
- 		return EXIT_FAILURE;
-@@ -808,14 +808,14 @@ static int main_inner(int argc, char *argv[])
- 	auto spirv_file = read_spirv_file(args.input);
- 	if (spirv_file.empty())
- 		return EXIT_FAILURE;
--	Parser spirv_parser(move(spirv_file));
-+	Parser spirv_parser(std::move(spirv_file));
- 
- 	spirv_parser.parse();
- 
- 	// Special case reflection because it has little to do with the path followed by code-outputting compilers
- 	if (!args.reflect.empty())
- 	{
--		CompilerReflection compiler(move(spirv_parser.get_parsed_ir()));
-+		CompilerReflection compiler(std::move(spirv_parser.get_parsed_ir()));
- 		compiler.set_format(args.reflect);
- 		auto json = compiler.compile();
- 		if (args.output)
-@@ -831,13 +831,13 @@ static int main_inner(int argc, char *argv[])
- 
- 	if (args.cpp)
- 	{
--		compiler.reset(new CompilerCPP(move(spirv_parser.get_parsed_ir())));
-+		compiler.reset(new CompilerCPP(std::move(spirv_parser.get_parsed_ir())));
- 		if (args.cpp_interface_name)
- 			static_cast<CompilerCPP *>(compiler.get())->set_interface_name(args.cpp_interface_name);
- 	}
- 	else if (args.msl)
- 	{
--		compiler.reset(new CompilerMSL(move(spirv_parser.get_parsed_ir())));
-+		compiler.reset(new CompilerMSL(std::move(spirv_parser.get_parsed_ir())));
- 
- 		auto *msl_comp = static_cast<CompilerMSL *>(compiler.get());
- 		auto msl_opts = msl_comp->get_msl_options();
-@@ -850,13 +850,13 @@ static int main_inner(int argc, char *argv[])
- 		msl_comp->set_msl_options(msl_opts);
- 	}
- 	else if (args.hlsl)
--		compiler.reset(new CompilerHLSL(move(spirv_parser.get_parsed_ir())));
-+		compiler.reset(new CompilerHLSL(std::move(spirv_parser.get_parsed_ir())));
- 	else
- 	{
- 		combined_image_samplers = !args.vulkan_semantics;
- 		if (!args.vulkan_semantics)
- 			build_dummy_sampler = true;
--		compiler.reset(new CompilerGLSL(move(spirv_parser.get_parsed_ir())));
-+		compiler.reset(new CompilerGLSL(std::move(spirv_parser.get_parsed_ir())));
- 	}
- 
- 	if (!args.variable_type_remaps.empty())
-@@ -867,7 +867,7 @@ static int main_inner(int argc, char *argv[])
- 					out = remap.new_variable_type;
- 		};
- 
--		compiler->set_variable_type_remap_callback(move(remap_cb));
-+		compiler->set_variable_type_remap_callback(std::move(remap_cb));
- 	}
- 
- 	for (auto &rename : args.entry_point_rename)
-@@ -1019,7 +1019,7 @@ static int main_inner(int argc, char *argv[])
- 	{
- 		auto active = compiler->get_active_interface_variables();
- 		res = compiler->get_shader_resources(active);
--		compiler->set_enabled_interface_variables(move(active));
-+		compiler->set_enabled_interface_variables(std::move(active));
- 	}
- 	else
- 		res = compiler->get_shader_resources();
-@@ -1034,7 +1034,7 @@ static int main_inner(int argc, char *argv[])
- 
- 	auto pls_inputs = remap_pls(args.pls_in, res.stage_inputs, &res.subpass_inputs);
- 	auto pls_outputs = remap_pls(args.pls_out, res.stage_outputs, nullptr);
--	compiler->remap_pixel_local_storage(move(pls_inputs), move(pls_outputs));
-+	compiler->remap_pixel_local_storage(std::move(pls_inputs), std::move(pls_outputs));
- 
- 	for (auto &ext : args.extensions)
- 		compiler->require_extension(ext);
-@@ -1101,7 +1101,7 @@ static int main_inner(int argc, char *argv[])
- 	for (uint32_t i = 0; i < args.iterations; i++)
- 	{
- 		if (args.hlsl)
--			glsl = static_cast<CompilerHLSL *>(compiler.get())->compile(move(args.hlsl_attr_remap));
-+			glsl = static_cast<CompilerHLSL *>(compiler.get())->compile(std::move(args.hlsl_attr_remap));
- 		else
- 			glsl = compiler->compile();
- 	}
-diff --git a/spirv_common.hpp b/spirv_common.hpp
-index aa32142d..0daf5ad5 100644
---- a/spirv_common.hpp
-+++ b/spirv_common.hpp
-@@ -536,7 +536,7 @@ struct SPIRExpression : IVariant
- 
- 	// Only created by the backend target to avoid creating tons of temporaries.
- 	SPIRExpression(std::string expr, uint32_t expression_type_, bool immutable_)
--	    : expression(move(expr))
-+	    : expression(std::move(expr))
- 	    , expression_type(expression_type_)
- 	    , immutable(immutable_)
- 	{
-diff --git a/spirv_cpp.hpp b/spirv_cpp.hpp
-index bcdb669b..b4da84b9 100644
---- a/spirv_cpp.hpp
-+++ b/spirv_cpp.hpp
-@@ -27,7 +27,7 @@ class CompilerCPP : public CompilerGLSL
- {
- public:
- 	explicit CompilerCPP(std::vector<uint32_t> spirv_)
--	    : CompilerGLSL(move(spirv_))
-+	    : CompilerGLSL(std::move(spirv_))
- 	{
- 	}
- 
-diff --git a/spirv_cross.cpp b/spirv_cross.cpp
-index 19bac301..d21dbd41 100644
---- a/spirv_cross.cpp
-+++ b/spirv_cross.cpp
-@@ -28,16 +28,16 @@ using namespace spirv_cross;
- 
- Compiler::Compiler(vector<uint32_t> ir_)
- {
--	Parser parser(move(ir_));
-+	Parser parser(std::move(ir_));
- 	parser.parse();
--	set_ir(move(parser.get_parsed_ir()));
-+	set_ir(std::move(parser.get_parsed_ir()));
- }
- 
- Compiler::Compiler(const uint32_t *ir_, size_t word_count)
- {
- 	Parser parser(ir_, word_count);
- 	parser.parse();
--	set_ir(move(parser.get_parsed_ir()));
-+	set_ir(std::move(parser.get_parsed_ir()));
- }
- 
- Compiler::Compiler(const ParsedIR &ir_)
-@@ -47,12 +47,12 @@ Compiler::Compiler(const ParsedIR &ir_)
- 
- Compiler::Compiler(ParsedIR &&ir_)
- {
--	set_ir(move(ir_));
-+	set_ir(std::move(ir_));
- }
- 
- void Compiler::set_ir(ParsedIR &&ir_)
- {
--	ir = move(ir_);
-+	ir = std::move(ir_);
- 	parse_fixup();
- }
- 
-@@ -716,7 +716,7 @@ unordered_set<uint32_t> Compiler::get_active_interface_variables() const
- 
- void Compiler::set_enabled_interface_variables(std::unordered_set<uint32_t> active_variables)
- {
--	active_interface_variables = move(active_variables);
-+	active_interface_variables = std::move(active_variables);
- 	check_active_interface_variables = true;
- }
- 
-@@ -2163,7 +2163,7 @@ void Compiler::CombinedImageSamplerHandler::push_remap_parameters(const SPIRFunc
- 	unordered_map<uint32_t, uint32_t> remapping;
- 	for (uint32_t i = 0; i < length; i++)
- 		remapping[func.arguments[i].id] = remap_parameter(args[i]);
--	parameter_remapping.push(move(remapping));
-+	parameter_remapping.push(std::move(remapping));
- }
- 
- void Compiler::CombinedImageSamplerHandler::pop_remap_parameters()
-@@ -3611,7 +3611,7 @@ void Compiler::analyze_image_and_sampler_usage()
- 
- 	CombinedImageSamplerUsageHandler handler(*this, dref_handler.dref_combined_samplers);
- 	traverse_all_reachable_opcodes(get<SPIRFunction>(ir.default_entry_point), handler);
--	comparison_ids = move(handler.comparison_ids);
-+	comparison_ids = std::move(handler.comparison_ids);
- 	need_subpass_input = handler.need_subpass_input;
- 
- 	// Forward information from separate images and samplers into combined image samplers.
-@@ -3650,7 +3650,7 @@ void Compiler::build_function_control_flow_graphs_and_analyze()
- 	CFGBuilder handler(*this);
- 	handler.function_cfgs[ir.default_entry_point].reset(new CFG(*this, get<SPIRFunction>(ir.default_entry_point)));
- 	traverse_all_reachable_opcodes(get<SPIRFunction>(ir.default_entry_point), handler);
--	function_cfgs = move(handler.function_cfgs);
-+	function_cfgs = std::move(handler.function_cfgs);
- 
- 	for (auto &f : function_cfgs)
- 	{
-diff --git a/spirv_glsl.cpp b/spirv_glsl.cpp
-index a8855987..fabbb105 100644
---- a/spirv_glsl.cpp
-+++ b/spirv_glsl.cpp
-@@ -6876,7 +6876,7 @@ void CompilerGLSL::emit_instruction(const Instruction &instruction)
- 		bool ptr_chain = opcode == OpPtrAccessChain;
- 		auto e = access_chain(ops[2], &ops[3], length - 3, get<SPIRType>(ops[0]), &meta, ptr_chain);
- 
--		auto &expr = set<SPIRExpression>(ops[1], move(e), ops[0], should_forward(ops[2]));
-+		auto &expr = set<SPIRExpression>(ops[1], std::move(e), ops[0], should_forward(ops[2]));
- 
- 		auto *backing_variable = maybe_get_backing_variable(ops[2]);
- 		expr.loaded_from = backing_variable ? backing_variable->self : ops[2];
-diff --git a/spirv_glsl.hpp b/spirv_glsl.hpp
-index caf0ad3b..aac1196e 100644
---- a/spirv_glsl.hpp
-+++ b/spirv_glsl.hpp
-@@ -138,7 +138,7 @@ public:
- 	}
- 
- 	explicit CompilerGLSL(std::vector<uint32_t> spirv_)
--	    : Compiler(move(spirv_))
-+	    : Compiler(std::move(spirv_))
- 	{
- 		init();
- 	}
-diff --git a/spirv_hlsl.cpp b/spirv_hlsl.cpp
-index a5b6d2dc..0933017e 100644
---- a/spirv_hlsl.cpp
-+++ b/spirv_hlsl.cpp
-@@ -2028,7 +2028,7 @@ void CompilerHLSL::emit_function_prototype(SPIRFunction &func, const Bitset &ret
- 		out_argument += " ";
- 		out_argument += "SPIRV_Cross_return_value";
- 		out_argument += type_to_array_glsl(type);
--		arglist.push_back(move(out_argument));
-+		arglist.push_back(std::move(out_argument));
- 	}
- 
- 	for (auto &arg : func.arguments)
-@@ -4553,7 +4553,7 @@ void CompilerHLSL::require_texture_query_variant(const SPIRType &type)
- 
- string CompilerHLSL::compile(std::vector<HLSLVertexAttributeRemap> vertex_attributes)
- {
--	remap_vertex_attributes = move(vertex_attributes);
-+	remap_vertex_attributes = std::move(vertex_attributes);
- 	return compile();
- }
- 
-diff --git a/spirv_hlsl.hpp b/spirv_hlsl.hpp
-index b2b60fca..3503c674 100644
---- a/spirv_hlsl.hpp
-+++ b/spirv_hlsl.hpp
-@@ -63,7 +63,7 @@ public:
- 	};
- 
- 	explicit CompilerHLSL(std::vector<uint32_t> spirv_)
--	    : CompilerGLSL(move(spirv_))
-+	    : CompilerGLSL(std::move(spirv_))
- 	{
- 	}
- 
-diff --git a/spirv_msl.cpp b/spirv_msl.cpp
-index 0e1e733d..fbfcdba5 100644
---- a/spirv_msl.cpp
-+++ b/spirv_msl.cpp
-@@ -32,7 +32,7 @@ static const uint32_t k_aux_mbr_idx_swizzle_const = 0u;
- 
- CompilerMSL::CompilerMSL(vector<uint32_t> spirv_, vector<MSLVertexAttr> *p_vtx_attrs,
-                          vector<MSLResourceBinding> *p_res_bindings)
--    : CompilerGLSL(move(spirv_))
-+    : CompilerGLSL(std::move(spirv_))
- {
- 	if (p_vtx_attrs)
- 		for (auto &va : *p_vtx_attrs)
-diff --git a/spirv_parser.cpp b/spirv_parser.cpp
-index 1725b4ca..0fcd7691 100644
---- a/spirv_parser.cpp
-+++ b/spirv_parser.cpp
-@@ -24,7 +24,7 @@ namespace spirv_cross
- {
- Parser::Parser(std::vector<uint32_t> spirv)
- {
--	ir.spirv = move(spirv);
-+	ir.spirv = std::move(spirv);
- }
- 
- Parser::Parser(const uint32_t *spirv_data, size_t word_count)
-@@ -223,7 +223,7 @@ void Parser::parse(const Instruction &instruction)
- 	case OpExtension:
- 	{
- 		auto ext = extract_string(ir.spirv, instruction.offset);
--		ir.declared_extensions.push_back(move(ext));
-+		ir.declared_extensions.push_back(std::move(ext));
- 		break;
- 	}
- 
-diff --git a/spirv_reflect.hpp b/spirv_reflect.hpp
-index 13b5b431..f5c6a6ff 100644
---- a/spirv_reflect.hpp
-+++ b/spirv_reflect.hpp
-@@ -34,7 +34,7 @@ class CompilerReflection : public CompilerGLSL
- 
- public:
- 	explicit CompilerReflection(std::vector<uint32_t> spirv_)
--	    : Parent(move(spirv_))
-+	    : Parent(std::move(spirv_))
- 	{
- 		options.vulkan_semantics = true;
- 	}
--- 
-2.37.2
-
diff --git a/poky/meta/recipes-graphics/vulkan/vulkan-samples/0001-parser.h-Including-missing-cstdint.patch b/poky/meta/recipes-graphics/vulkan/vulkan-samples/0001-parser.h-Including-missing-cstdint.patch
new file mode 100644
index 0000000..3f6b37d
--- /dev/null
+++ b/poky/meta/recipes-graphics/vulkan/vulkan-samples/0001-parser.h-Including-missing-cstdint.patch
@@ -0,0 +1,37 @@
+From 590bd5f81207bb55bd02b4a37f73a1f64dac452d Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 23 Jan 2023 13:20:58 -0800
+Subject: [PATCH] parser.h: Including missing <cstdint>
+
+This is needed from gcc-13+ see [1]
+
+Fixes
+
+../git/framework/platform/parser.h:282:43: error: 'uint32_t' does not name a type
+  282 |                 *type       = static_cast<uint32_t>(number);
+      |                                           ^~~~~~~~
+../git/framework/platform/parser.h:21:1: note: 'uint32_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
+
+[1] https://www.gnu.org/software/gcc/gcc-13/porting_to.html
+
+Upstream-Status: Submitted [https://github.com/KhronosGroup/Vulkan-Samples/pull/602]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ framework/platform/parser.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/framework/platform/parser.h b/framework/platform/parser.h
+index 215f3d80..a5bd1344 100644
+--- a/framework/platform/parser.h
++++ b/framework/platform/parser.h
+@@ -18,6 +18,7 @@
+ #pragma once
+ 
+ #include <cassert>
++#include <cstdint>
+ #include <string>
+ #include <typeindex>
+ #include <vector>
+-- 
+2.39.1
+
diff --git a/poky/meta/recipes-graphics/vulkan/vulkan-samples_git.bb b/poky/meta/recipes-graphics/vulkan/vulkan-samples_git.bb
index 6aabf2e..0a936a7 100644
--- a/poky/meta/recipes-graphics/vulkan/vulkan-samples_git.bb
+++ b/poky/meta/recipes-graphics/vulkan/vulkan-samples_git.bb
@@ -5,15 +5,15 @@
 
 LIC_FILES_CHKSUM = "file://LICENSE;md5=48aa35cefb768436223a6e7f18dc2a2a"
 
-SRC_URI = "gitsm://github.com/KhronosGroup/Vulkan-Samples.git;branch=master;protocol=https;lfs=0 \
-           file://0001-CMakeLists.txt-do-not-hardcode-lib-as-installation-t.patch \
+SRC_URI = "gitsm://github.com/KhronosGroup/Vulkan-Samples.git;branch=main;protocol=https;lfs=0 \
            file://debugfix.patch \
-           file://0001-Qualify-move-as-std-move.patch;patchdir=third_party/spirv-cross \
            file://0001-Do-not-use-LFS64-functions-on-linux-musl.patch;patchdir=third_party/spdlog \
+           file://0001-Deprecate-u8string_view.patch;patchdir=third_party/spdlog \
+           file://0001-parser.h-Including-missing-cstdint.patch \
            "
 
 UPSTREAM_CHECK_COMMITS = "1"
-SRCREV = "8b945bebf8b2fd987dcf0eeca048068adf4ea44d"
+SRCREV = "a42d4eab1e5fe7814dfbe91e3bbaf8ab62cf03f6"
 
 UPSTREAM_CHECK_GITTAGREGEX = "These are not the releases you're looking for"
 S = "${WORKDIR}/git"
diff --git a/poky/meta/recipes-graphics/xorg-lib/libxcb/0001-use-_Alignof-to-avoid-UB-in-ALIGNOF.patch b/poky/meta/recipes-graphics/xorg-lib/libxcb/0001-use-_Alignof-to-avoid-UB-in-ALIGNOF.patch
new file mode 100644
index 0000000..5b159d6
--- /dev/null
+++ b/poky/meta/recipes-graphics/xorg-lib/libxcb/0001-use-_Alignof-to-avoid-UB-in-ALIGNOF.patch
@@ -0,0 +1,45 @@
+From d55b6b1fa87700f3eae3a29522972d2e7be7d53e Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 14 Jan 2023 10:11:35 -0800
+Subject: [PATCH] use _Alignof to avoid UB in ALIGNOF
+
+WG14 N2350 clearly says that it is an UB having type definitions
+within "offsetof" [1]. Clang 16+ has started diagnosing it [2].
+This patch changes the implementation of macro
+"ALIGNOF" to builtin "_Alignof" to avoid undefined behavior.
+
+_Alignof() return the ABI required minimum alignment.
+
+[1] https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2350.htm
+[2] https://reviews.llvm.org/D133574
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/xorg/lib/libxcb/-/merge_requests/42]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/c_client.py | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/src/c_client.py b/src/c_client.py
+index fd256f0..4e48f13 100644
+--- a/src/c_client.py
++++ b/src/c_client.py
+@@ -288,7 +288,6 @@ def c_open(self):
+     _c('#include "%s.h"', _ns.header)
+ 
+     _c('')
+-    _c('#define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member)')
+ 
+     if _ns.is_ext:
+         for (n, h) in self.direct_imports:
+@@ -1266,7 +1265,7 @@ def _c_serialize_helper_fields(context, self,
+             count += 1
+ 
+         code_lines.append(
+-            '%s    xcb_align_to = ALIGNOF(%s);'
++            '%s    xcb_align_to = _Alignof(%s);'
+              % (space,
+                  'char'
+                   if field.c_field_type == 'void' or field.type.is_switch
+-- 
+2.39.0
+
diff --git a/poky/meta/recipes-graphics/xorg-lib/libxcb_1.15.bb b/poky/meta/recipes-graphics/xorg-lib/libxcb_1.15.bb
index 8395773..411f51a 100644
--- a/poky/meta/recipes-graphics/xorg-lib/libxcb_1.15.bb
+++ b/poky/meta/recipes-graphics/xorg-lib/libxcb_1.15.bb
@@ -9,7 +9,8 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d763b081cb10c223435b01e00dc0aba7"
 
-SRC_URI = "http://xcb.freedesktop.org/dist/libxcb-${PV}.tar.xz"
+SRC_URI = "http://xcb.freedesktop.org/dist/libxcb-${PV}.tar.xz \
+           file://0001-use-_Alignof-to-avoid-UB-in-ALIGNOF.patch"
 
 SRC_URI[sha256sum] = "cc38744f817cf6814c847e2df37fcb8997357d72fa4bcbc228ae0fe47219a059"
 
