diff --git a/emulators/yuzu/Makefile b/emulators/yuzu/Makefile
index 9163c1edae1c..8df00bb965f8 100644
--- a/emulators/yuzu/Makefile
+++ b/emulators/yuzu/Makefile
@@ -1,171 +1,174 @@
 PORTNAME=	yuzu
 PORTVERSION=	s20231218
 CATEGORIES=	emulators wayland
 .if make(makesum)
 MASTER_SITES=	https://api.yuzu-emu.org/gamedb/?dummy=/:gamedb
 .else
 MASTER_SITES=	LOCAL/jbeich:gamedb
 .endif
 DISTFILES=	${PORTNAME}-s20230424/compatibility_list.json:gamedb
 EXTRACT_ONLY=	${DISTFILES:N*\:gamedb:C/\:.*//}
 
+PATCH_SITES=	https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/
+PATCHFILES+=	310834aea2fa.patch:-p1 # https://github.com/yuzu-emu/yuzu/pull/12414
+
 MAINTAINER=	jbeich@FreeBSD.org
 COMMENT=	Nintendo Switch emulator/debugger
 WWW=		https://yuzu-emu.org/
 
 LICENSE=	APACHE20 BSD3CLAUSE GPLv3+ ISCL MIT UNLICENSE
 LICENSE_COMB=	multi
 LICENSE_FILE_BSD3CLAUSE=${WRKSRC}/externals/sirit/LICENSE.txt
 LICENSE_FILE_GPLv3+ =	${WRKSRC}/LICENSE.txt
 LICENSE_FILE_ISCL=	${WRKSRC}/externals/cubeb/LICENSE
 LICENSE_FILE_MIT=	${WRKSRC}/externals/sirit/externals/SPIRV-Headers/LICENSE
 
 ONLY_FOR_ARCHS=	aarch64 amd64
 ONLY_FOR_ARCHS_REASON=	requires int128 and dynarmic backend
 
 BUILD_DEPENDS=	boost-libs>0:devel/boost-libs \
 		nlohmann-json>0:devel/nlohmann-json \
 		simpleini>0:devel/simpleini \
 		xbyak>0:devel/xbyak \
 		glslangValidator:graphics/glslang \
 		vulkan-headers>0:graphics/vulkan-headers
 LIB_DEPENDS=	liblz4.so:archivers/liblz4 \
 		libzstd.so:archivers/zstd \
 		libopus.so:audio/opus \
 		libfmt.so:devel/libfmt \
 		libavcodec.so:multimedia/ffmpeg \
 		libenet.so:net/enet
 TEST_DEPENDS=	catch2>0:devel/catch2
 
 FLAVORS=	qt5 qt6
 qt5_CONFLICTS_INSTALL=	${PORTNAME}-qt6
 qt6_PKGNAMESUFFIX=	-qt6
 qt6_CONFLICTS_INSTALL=	${PORTNAME}
 qt6_OPTIONS_SLAVE=	QT6
 qt6_OPTIONS_EXCLUDE=	QT5
 
 USE_GITHUB=	yes
 GH_ACCOUNT=	yuzu-emu
 GH_TAGNAME=	50fd029eaa
 GH_TUPLE=	yuzu-emu:mbedtls:v2.16.9-115-g8c88150ca:mbedtls/externals/mbedtls \
 		yuzu-emu:sirit:ab75463:sirit/externals/sirit \
 		GPUOpen-LibrariesAndSDKs:VulkanMemoryAllocator:v3.0.1-114-g2f382df:VulkanMemoryAllocator/externals/VulkanMemoryAllocator \
 		KhronosGroup:SPIRV-Headers:1.5.4.raytracing.fixed-201-gc214f6f:SPIRV_Headers/externals/sirit/externals/SPIRV-Headers \
 		merryhime:dynarmic:6.5.0-11-g0df09e2f:dynarmic/externals/dynarmic \
 		merryhime:oaknut:1.2.1-18-g918bd94:oaknut/externals/oaknut \
 		arun11299:cpp-jwt:v1.4-18-g10ef573:cpp_jwt/externals/cpp-jwt \
 		arsenm:sanitizers-cmake:aab6948:sanitizers_cmake/externals/cubeb/cmake/sanitizers-cmake \
 		eggert:tz:2022g-11-g16ce126a:tz/externals/nx_tzdb/tzdb_to_nx/externals/tz/tz \
 		kinetiknz:cubeb:cubeb-0.2-1452-g48689ae:cubeb/externals/cubeb \
 		lat9nq:tzdb_to_nx:221202-4-gf668009:tzdb_to_nx/externals/nx_tzdb/tzdb_to_nx \
 		yhirose:cpp-httplib:v0.14.1:cpp_httplib/externals/cpp-httplib
 
 USES=		cmake:testing elfctl localbase:ldflags pkgconfig sdl ssl
 USE_SDL=	sdl2
 CMAKE_ON=	Boost_USE_STATIC_LIBS
 CMAKE_ON+=	BUNDLE_SPEEX # only used by cubeb tests
 CMAKE_ON+=	CMAKE_DISABLE_FIND_PACKAGE_LLVM # only need Demangle but llvm* is huge
 CMAKE_OFF=	YUZU_CHECK_SUBMODULES YUZU_USE_EXTERNAL_SDL2 YUZU_USE_EXTERNAL_VULKAN_HEADERS
 CMAKE_OFF+=	HTTPLIB_USE_BROTLI_IF_AVAILABLE # unused by ENABLE_WEB_SERVICE
 CMAKE_OFF+=	${ARCH:Maarch64:C/.+/YUZU_USE_PRECOMPILED_HEADERS DYNARMIC_USE_PRECOMPILED_HEADERS/}
 CMAKE_OFF+=	${CMAKE_TESTING_ON}
 CMAKE_TESTING_ON=	YUZU_TESTS
 LDFLAGS+=	-Wl,--as-needed # Qt5Network
 ELF_FEATURES=	${PLIST_FILES:Mbin/*:S/^/+wxneeded:/}
 PLIST_FILES=	bin/${PORTNAME}-cmd \
 		bin/${PORTNAME}-room
 
 OPTIONS_DEFINE=	ALSA GUI PULSEAUDIO JACK LTO NLS SNDIO VAAPI VULKAN WEBENGINE
 OPTIONS_DEFAULT=PULSEAUDIO JACK LTO QT5 SNDIO VAAPI VULKAN WEBENGINE
 OPTIONS_SINGLE=	GUI
 OPTIONS_SINGLE_GUI=	QT5 QT6
 OPTIONS_SLAVE=		${${FLAVOR}_OPTIONS_SLAVE}
 OPTIONS_EXCLUDE=	${${FLAVOR}_OPTIONS_EXCLUDE}
 
 ALSA_BUILD_DEPENDS=	alsa-lib>0:audio/alsa-lib
 ALSA_CMAKE_BOOL=	USE_ALSA
 
 GUI_USES=		desktop-file-utils shared-mime-info
 GUI_CMAKE_BOOL=		ENABLE_QT
 GUI_PLIST_FILES=	bin/${PORTNAME} \
 			share/applications/org.yuzu_emu.yuzu.desktop \
 			share/icons/hicolor/scalable/apps/org.yuzu_emu.yuzu.svg \
 			share/metainfo/org.yuzu_emu.yuzu.metainfo.xml \
 			share/mime/packages/org.yuzu_emu.yuzu.xml
 
 JACK_BUILD_DEPENDS=	jackit>0:audio/jack
 JACK_CMAKE_BOOL=	USE_JACK
 
 LTO_CMAKE_BOOL=		YUZU_ENABLE_LTO
 
 NLS_DESC=		UI translations (implies ${NLS_IMPLIES})
 NLS_USE=		QT=${"${PORT_OPTIONS:MQT5}":?linguist:}tools:build
 NLS_CMAKE_BOOL=		ENABLE_QT_TRANSLATION
 NLS_IMPLIES=		GUI
 
 PULSEAUDIO_BUILD_DEPENDS=pulseaudio>0:audio/pulseaudio
 PULSEAUDIO_CMAKE_BOOL=	USE_PULSE
 
 QT5_USES=		qt:5
 QT5_USE=		QT=qmake:build,buildtools:build,concurrent:build,core,dbus,gui,multimedia,widgets
 QT5_IMPLIES=		GUI
 
 QT6_USES=		qt:6
 QT6_USE=		QT=base
 QT6_CMAKE_BOOL=		ENABLE_QT6
 QT6_IMPLIES=		GUI
 
 SNDIO_BUILD_DEPENDS=	sndio>0:audio/sndio
 SNDIO_CMAKE_BOOL=	USE_SNDIO
 
 VAAPI_LIB_DEPENDS=	libva.so:multimedia/libva
 
 VULKAN_DESC=		Vulkan renderer
 VULKAN_RUN_DEPENDS=	${LOCALBASE}/lib/libvulkan.so:graphics/vulkan-loader
 
 WEBENGINE_DESC=		Web applet support (implies ${WEBENGINE_IMPLIES})
 WEBENGINE_USE=		QT=webengine
 WEBENGINE_CMAKE_BOOL=	YUZU_USE_QT_WEB_ENGINE
 WEBENGINE_IMPLIES=	GUI
 
 post-extract:
 	@${CP} ${DISTFILES:M*\:gamedb:C/\:.*//:S,^,${_DISTDIR},} \
 		${WRKSRC}/dist/compatibility_list/
 
 post-patch:
 	@${REINPLACE_CMD} -e 's/@GIT_BRANCH@/master/' \
 		-e 's/@GIT_DESC@/${GH_TAGNAME}/' \
 		${WRKSRC}/src/common/scm_rev.cpp.in
 # Temporarily use ConsoleKit2 like sysutils/gnome-settings-daemon
 	@${REINPLACE_CMD} -e 's,/login1,/ConsoleKit/Manager,' \
 		-e 's,login1,ConsoleKit,' \
 		${WRKSRC}/src/${PORTNAME}/main.cpp
 
 post-patch-VAAPI-off:
 	@${REINPLACE_CMD} -i .nova '/pkg_check.*libva/d' \
 		${WRKSRC}/CMakeLists.txt
 
 # XXX Drop after FreeBSD 13.2 EOL around 2024-05-01 (don't forget distinfo)
 .if !exists(/usr/include/c++/v1/__ranges/as_rvalue_view.h) || make(makesum) || make(fetch)
 . if !exists(/usr/include/c++/v1/__memory/concepts.h)
 USES+=		llvm:min=14,build,export
 PATH:=		${LLVM_PREFIX}/bin:${PATH} # XXX _CMAKE_TOOLCHAIN_SUFFIX vs. devel/llvm*
 CONFIGURE_ENV+=	CC="${CC}" CXX="${CXX}" CPP="${CPP}"
 . endif
 
 # XXX Move into separate port and standardize via USES
 GH_TUPLE+=	llvm:llvm-project:llvmorg-16.0.1:libcxx
 CXXFLAGS+=	-nostdinc++ -isystem${WRKDIR}/libcxx_prefix/include/c++/v1
 # Don't link against new libc++ to avoid ABI mismatch in Qt
 #LDFLAGS+=	-nostdlib++ -L${WRKDIR}/libcxx_prefix/lib -l:libc++.a -lcxxrt
 
 pre-configure:	bundled-libcxx
 bundled-libcxx:
 	@${SETENV} ${CONFIGURE_ENV} ${CMAKE_BIN} ${CMAKE_ARGS:M*Ninja*} \
 		-DLIBCXX_INCLUDE_BENCHMARKS:BOOL=OFF \
 		-DCMAKE_INSTALL_PREFIX:PATH=${WRKDIR}/libcxx_prefix \
 		-B ${WRKDIR}/libcxx_build -S ${WRKSRC_libcxx}/libcxx
 	@${DO_MAKE_BUILD:NDESTDIR*} install -C ${WRKDIR}/libcxx_build
 .endif
 
 .include <bsd.port.mk>
diff --git a/emulators/yuzu/distinfo b/emulators/yuzu/distinfo
index 981beb392a16..4be46ecc3ff7 100644
--- a/emulators/yuzu/distinfo
+++ b/emulators/yuzu/distinfo
@@ -1,31 +1,33 @@
 TIMESTAMP = 1702929976
 SHA256 (yuzu-s20230424/compatibility_list.json) = 382db629d6b060af722a27dfa9cd6bb60ac16a7544c58322f63aa1be4c0c0fac
 SIZE (yuzu-s20230424/compatibility_list.json) = 1801327
 SHA256 (yuzu-emu-yuzu-s20231218-50fd029eaa_GH0.tar.gz) = 39b8cc305f3f71ff3d5e54b56b0c38de5a32c05db578c44cc9949472fb8d8930
 SIZE (yuzu-emu-yuzu-s20231218-50fd029eaa_GH0.tar.gz) = 6721269
 SHA256 (yuzu-emu-mbedtls-v2.16.9-115-g8c88150ca_GH0.tar.gz) = 8cd6d075b4da0ad5fb995eb37390e2e6088be8d41ab1cdfc7e7e4256bd991450
 SIZE (yuzu-emu-mbedtls-v2.16.9-115-g8c88150ca_GH0.tar.gz) = 2679189
 SHA256 (yuzu-emu-sirit-ab75463_GH0.tar.gz) = 6b61e265be182b7a78075fc1b98ccf80fd33008343205dd0e22a10a439c45319
 SIZE (yuzu-emu-sirit-ab75463_GH0.tar.gz) = 23818
 SHA256 (GPUOpen-LibrariesAndSDKs-VulkanMemoryAllocator-v3.0.1-114-g2f382df_GH0.tar.gz) = 20ac76f32dd3236f9b66d1b4583393c35853b7ba2d77ea7f0cab753610415f9b
 SIZE (GPUOpen-LibrariesAndSDKs-VulkanMemoryAllocator-v3.0.1-114-g2f382df_GH0.tar.gz) = 877938
 SHA256 (KhronosGroup-SPIRV-Headers-1.5.4.raytracing.fixed-201-gc214f6f_GH0.tar.gz) = 5e32aefc599e6d26c2373b7296a37980b9c6c7ff6f636d5eee49f79b437e5a51
 SIZE (KhronosGroup-SPIRV-Headers-1.5.4.raytracing.fixed-201-gc214f6f_GH0.tar.gz) = 445472
 SHA256 (merryhime-dynarmic-6.5.0-11-g0df09e2f_GH0.tar.gz) = d7144d4c95d4a769933f7b389555524255595f0207b2a45d13f6272c5805f49f
 SIZE (merryhime-dynarmic-6.5.0-11-g0df09e2f_GH0.tar.gz) = 3615105
 SHA256 (merryhime-oaknut-1.2.1-18-g918bd94_GH0.tar.gz) = 9cd874c446c4eecdee152c18afde6196800fcd59a963ad982f3068945a25d761
 SIZE (merryhime-oaknut-1.2.1-18-g918bd94_GH0.tar.gz) = 84866
 SHA256 (arun11299-cpp-jwt-v1.4-18-g10ef573_GH0.tar.gz) = f88855ae7e94954a8c34688f49eb63542c69496ec8138006a2cc8fc7a51eb8df
 SIZE (arun11299-cpp-jwt-v1.4-18-g10ef573_GH0.tar.gz) = 1246202
 SHA256 (arsenm-sanitizers-cmake-aab6948_GH0.tar.gz) = d9009e17948aff769a6f6e16b52d4d8752c5cc2cab1e9c381d3a31fd1a680b58
 SIZE (arsenm-sanitizers-cmake-aab6948_GH0.tar.gz) = 7240
 SHA256 (eggert-tz-2022g-11-g16ce126a_GH0.tar.gz) = 1d1a5d867053ea55f526cb76f18c8fb8ae710188e9db2732fd85f8a557110e46
 SIZE (eggert-tz-2022g-11-g16ce126a_GH0.tar.gz) = 594209
 SHA256 (kinetiknz-cubeb-cubeb-0.2-1452-g48689ae_GH0.tar.gz) = c0f83a493f1d54a92e16baf56f27813ff294ce78bc42fbcc3935580852a624de
 SIZE (kinetiknz-cubeb-cubeb-0.2-1452-g48689ae_GH0.tar.gz) = 228346
 SHA256 (lat9nq-tzdb_to_nx-221202-4-gf668009_GH0.tar.gz) = 184380ee0bb7720c44261cd49a41b1a455a3907bfd32ab2ba32b881d898c0ac4
 SIZE (lat9nq-tzdb_to_nx-221202-4-gf668009_GH0.tar.gz) = 8203
 SHA256 (yhirose-cpp-httplib-v0.14.1_GH0.tar.gz) = 2d4fb5544da643e5d0a82585555d8b7502b4137eb321a4abbb075e21d2f00e96
 SIZE (yhirose-cpp-httplib-v0.14.1_GH0.tar.gz) = 1148935
 SHA256 (llvm-llvm-project-llvmorg-16.0.1_GH0.tar.gz) = b5a9ff1793b1e2d388a3819bf35797002b1d2e40bb35a10c65605e0ea1435271
 SIZE (llvm-llvm-project-llvmorg-16.0.1_GH0.tar.gz) = 179289803
+SHA256 (310834aea2fa.patch) = 97529e413ad2e153bdde99d94c87b0edf27e9c7bdef914d3ff0a12445a958d92
+SIZE (310834aea2fa.patch) = 1265
diff --git a/graphics/vulkan-headers/Makefile b/graphics/vulkan-headers/Makefile
index 1c4763a2fb1d..ff081a713cdb 100644
--- a/graphics/vulkan-headers/Makefile
+++ b/graphics/vulkan-headers/Makefile
@@ -1,30 +1,30 @@
 PORTNAME=	vulkan-headers
 DISTVERSIONPREFIX=	v
-DISTVERSION=	1.3.273
+DISTVERSION=	1.3.274
 CATEGORIES=	graphics
 
 MAINTAINER=	jbeich@FreeBSD.org
 COMMENT=	Headers for the Vulkan graphics API
 WWW=		https://github.com/KhronosGroup/Vulkan-Headers
 
 LICENSE=	APACHE20
 
 USES=		cmake
 USE_GITHUB=	yes
 GH_ACCOUNT=	KhronosGroup
 GH_PROJECT=	Vulkan-Headers
 STRIP=		# nothing to strip
 NO_ARCH=	yes
 
 post-extract:
 # genvk.py requires docgenerator.py from Vulkan-Docs, so drop useless shebang
 	@${FIND} ${WRKSRC}/registry -name \*.py -exec ${REINPLACE_CMD} -i '' '/^#!/d' {} +
 
 post-patch:
 # XXX Drop after FreeBSD 12.4 EOL around 2023-12-31
 	@if [ -L /usr/include/sched.h ]; then \
 		${REINPLACE_CMD} $$'/^namespace/i\\\n#undef major\\\n#undef minor\\\n\\\n' \
 			${WRKSRC}/include/vulkan/vulkan_structs.hpp; \
 	fi
 
 .include <bsd.port.mk>
diff --git a/graphics/vulkan-headers/distinfo b/graphics/vulkan-headers/distinfo
index dd5b2ded5143..52f165436fca 100644
--- a/graphics/vulkan-headers/distinfo
+++ b/graphics/vulkan-headers/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1702046187
-SHA256 (KhronosGroup-Vulkan-Headers-v1.3.273_GH0.tar.gz) = b46c77265a0b0f235a3df755742bab273fe2083ddd52b2134e8f4c7ad3154a43
-SIZE (KhronosGroup-Vulkan-Headers-v1.3.273_GH0.tar.gz) = 2176944
+TIMESTAMP = 1702984649
+SHA256 (KhronosGroup-Vulkan-Headers-v1.3.274_GH0.tar.gz) = 3458dd9049d561d0863069b1dd752cd4a04ca31fc090a58124691d61bff5b62a
+SIZE (KhronosGroup-Vulkan-Headers-v1.3.274_GH0.tar.gz) = 2196024
diff --git a/graphics/vulkan-loader/Makefile b/graphics/vulkan-loader/Makefile
index 37ef605f7498..324242788fd3 100644
--- a/graphics/vulkan-loader/Makefile
+++ b/graphics/vulkan-loader/Makefile
@@ -1,52 +1,53 @@
 PORTNAME=	vulkan-loader
 DISTVERSIONPREFIX=	v
 DISTVERSION=	1.3.273
+PORTREVISION=	1
 CATEGORIES=	graphics devel
 
 MAINTAINER=	jbeich@FreeBSD.org
 COMMENT=	Driver loader for the Vulkan graphics API
 WWW=		https://github.com/KhronosGroup/Vulkan-Loader
 
 LICENSE=	APACHE20
 
 BUILD_DEPENDS=	vulkan-headers>0:graphics/vulkan-headers
 
 USES=		alias cmake compiler:c++11-lib pkgconfig python:build
 USE_GITHUB=	yes
 USE_LDCONFIG=	yes
 GH_ACCOUNT=	KhronosGroup
 GH_PROJECT=	Vulkan-Loader
 CMAKE_ON=	CMAKE_SKIP_RPATH
 CMAKE_OFF=	BUILD_TESTS
 
 OPTIONS_DEFINE=	WAYLAND XCB XLIB
 OPTIONS_DEFAULT=WAYLAND XCB XLIB
 
 WAYLAND_LIB_DEPENDS=	libwayland-client.so:graphics/wayland
 WAYLAND_CMAKE_BOOL=	BUILD_WSI_WAYLAND_SUPPORT
 
 XCB_DESC=		${X11_DESC} via libxcb
 XCB_USES=		xorg
 XCB_USE=		XORG=xcb
 XCB_CMAKE_BOOL=		BUILD_WSI_XCB_SUPPORT
 
 XLIB_DESC=		${X11_DESC} via libX11
 XLIB_USES=		xorg
 XLIB_USE=		XORG=x11,xrandr
 XLIB_CMAKE_BOOL=	BUILD_WSI_XLIB_SUPPORT
 
 post-patch:
 # Extract (snapshot) version from the port
 # Respect PREFIX when XDG_CONFIG_DIRS and XDG_DATA_DIRS are unset
 	@${REINPLACE_CMD} -e '/find_.*Git/d' \
 		-e '/BRANCH/s/--unknown--/main/' \
 		-e '/TAG/s/--unknown--/${DISTVERSIONFULL}/' \
 		-e '/FALLBACK/s,/etc,${PREFIX}&,' \
 		-e 's,/usr/local,${PREFIX},' \
 		${WRKSRC}/CMakeLists.txt
 # https://github.com/llvm/llvm-project/issues/46692
 	@if [ "${CHOSEN_COMPILER_TYPE}-${ARCH}-${_OSRELEASE:C/.*-//}" = "clang-i386-CURRENT" ]; then \
 		${ECHO} "disabled" >${WRKSRC}/loader/asm_test_x86.S; \
 	fi
 
 .include <bsd.port.mk>
diff --git a/graphics/vulkan-tools/Makefile b/graphics/vulkan-tools/Makefile
index 7908da62c0ac..d3f3daf25332 100644
--- a/graphics/vulkan-tools/Makefile
+++ b/graphics/vulkan-tools/Makefile
@@ -1,63 +1,68 @@
 PORTNAME=	vulkan-tools
 DISTVERSIONPREFIX=	v
 DISTVERSION=	1.3.273
 CATEGORIES=	graphics
 
 MAINTAINER=	jbeich@FreeBSD.org
 COMMENT=	Tools and demos for the Vulkan graphics API
 WWW=		https://github.com/KhronosGroup/Vulkan-Tools
 
 LICENSE=	APACHE20
 
 BUILD_DEPENDS=	glslangValidator:graphics/glslang \
 		vulkan-headers>0:graphics/vulkan-headers
 
 USES=		alias cmake compiler:c++11-lib pkgconfig python:build
 USE_GITHUB=	yes
 GH_ACCOUNT=	KhronosGroup
 GH_PROJECT=	Vulkan-Tools
 GH_TUPLE=	zeux:volk:1.3.270-4-g1b05bb5:volk/volk
 CMAKE_OFF=	BUILD_CUBE BUILD_ICD
 CMAKE_ARGS=	-DGLSLANG_INSTALL_DIR:PATH="${LOCALBASE}"
 
+.if ${DISTVERSION:E} < 274
+GH_TUPLE+=	KhronosGroup:Vulkan-Headers:v1.3.273:vkheaders/Vulkan-Headers
+CFLAGS+=	-I${WRKSRC_vkheaders}/include
+.endif
+
 OPTIONS_DEFINE=		WAYLAND XCB XLIB
 OPTIONS_DEFAULT=	WAYLAND XCB XLIB
 OPTIONS_SLAVE=		DISPLAY
 OPTIONS_SUB=		yes
 
 WAYLAND_CATEGORIES=	wayland
 WAYLAND_BUILD_DEPENDS=	evdev-proto>0:devel/evdev-proto \
 			wayland-protocols>0:graphics/wayland-protocols
 WAYLAND_LIB_DEPENDS=	libwayland-client.so:graphics/wayland
 WAYLAND_CMAKE_BOOL=	BUILD_WSI_WAYLAND_SUPPORT
 
 XCB_DESC=		${X11_DESC} via libxcb
 XCB_USES=		xorg
 XCB_USE=		XORG=xcb
 XCB_CMAKE_BOOL=		BUILD_WSI_XCB_SUPPORT
 
 XLIB_DESC=		${X11_DESC} via libX11
 XLIB_USES=		xorg
 XLIB_USE=		XORG=x11
 XLIB_CMAKE_BOOL=	BUILD_WSI_XLIB_SUPPORT
 
 # https://github.com/KhronosGroup/Vulkan-Tools/issues/307
 .for _wsi in display wayland xcb xlib
 do-configure-${_wsi:tu}-on: ${_wsi}-configure
 ${_wsi}-configure:
 	@${SETENV} ${CONFIGURE_ENV} ${CMAKE_BIN} ${CMAKE_ARGS} ${CMAKE_SOURCE_PATH} \
 		-DBUILD_CUBE:BOOL=ON -DBUILD_VULKANINFO:BOOL=OFF \
 		-DCUBE_WSI_SELECTION:STRING=${_wsi:tu} \
 		-B${CONFIGURE_WRKSRC}-${_wsi}
 do-build-${_wsi:tu}-on: ${_wsi}-build
 ${_wsi}-build:
 	@${SETENV} ${MAKE_ENV} ${CMAKE_BIN} --build ${BUILD_WRKSRC}-${_wsi}
 do-install-${_wsi:tu}-on: ${_wsi}-install
 ${_wsi}-install:
 . for _file in vkcube vkcubepp
 	${INSTALL_PROGRAM} ${INSTALL_WRKSRC}-${_wsi}/cube/${_file} \
 		${STAGEDIR}${PREFIX}/bin/${_file}-${_wsi}
 . endfor
 .endfor
 
 .include <bsd.port.mk>
diff --git a/graphics/vulkan-tools/distinfo b/graphics/vulkan-tools/distinfo
index 3484a21b5ee5..26fd9daf68e3 100644
--- a/graphics/vulkan-tools/distinfo
+++ b/graphics/vulkan-tools/distinfo
@@ -1,5 +1,7 @@
 TIMESTAMP = 1702067810
 SHA256 (KhronosGroup-Vulkan-Tools-v1.3.273_GH0.tar.gz) = 477e70645f73d0756f8f025a7c8745126b1a11978f14a08283cf2471ad9be979
 SIZE (KhronosGroup-Vulkan-Tools-v1.3.273_GH0.tar.gz) = 749157
 SHA256 (zeux-volk-1.3.270-4-g1b05bb5_GH0.tar.gz) = ce2329889a5cf36b207f887180821b244fe01ad61f4f63b2eebf12631f8c3398
 SIZE (zeux-volk-1.3.270-4-g1b05bb5_GH0.tar.gz) = 60097
+SHA256 (KhronosGroup-Vulkan-Headers-v1.3.273_GH0.tar.gz) = b46c77265a0b0f235a3df755742bab273fe2083ddd52b2134e8f4c7ad3154a43
+SIZE (KhronosGroup-Vulkan-Headers-v1.3.273_GH0.tar.gz) = 2176944
diff --git a/graphics/vulkan-validation-layers/Makefile b/graphics/vulkan-validation-layers/Makefile
index 0e5e5bdf8407..f874e465c7ab 100644
--- a/graphics/vulkan-validation-layers/Makefile
+++ b/graphics/vulkan-validation-layers/Makefile
@@ -1,41 +1,46 @@
 PORTNAME=	vulkan-validation-layers
 DISTVERSIONPREFIX=	v
 DISTVERSION=	1.3.273
 CATEGORIES=	graphics
 
 MAINTAINER=	jbeich@FreeBSD.org
 COMMENT=	Validation layers for the Vulkan graphics API
 WWW=		https://github.com/KhronosGroup/Vulkan-ValidationLayers
 
 LICENSE=	APACHE20
 
 BUILD_DEPENDS=	robin-hood-hashing>0:devel/robin-hood-hashing \
 		spirv-tools>0:graphics/spirv-tools \
 		vulkan-headers>0:graphics/vulkan-headers
 
 USES=		alias cmake compiler:c++11-lib pkgconfig python:build
 USE_GITHUB=	yes
 USE_LDCONFIG=	yes
 GH_ACCOUNT=	KhronosGroup
 GH_PROJECT=	Vulkan-ValidationLayers
 GH_TUPLE=	KhronosGroup:SPIRV-Headers:1.5.4.raytracing.fixed-332-g1c6bb27:headers/SPIRV-Headers \
 		KhronosGroup:Vulkan-Utility-Libraries:${DISTVERSIONPREFIX}${DISTVERSION}:utils/Vulkan-Utility-Libraries
 CMAKE_OFF=	BUILD_TESTS
 
+.if ${DISTVERSION:E} < 274
+GH_TUPLE+=	KhronosGroup:Vulkan-Headers:v1.3.273:vkheaders/Vulkan-Headers
+CFLAGS+=	-I${WRKSRC_vkheaders}/include
+.endif
+
 OPTIONS_DEFINE=	WAYLAND XCB XLIB
 OPTIONS_DEFAULT=WAYLAND XCB XLIB
 
 WAYLAND_LIB_DEPENDS=	libwayland-egl.so:graphics/wayland
 WAYLAND_CMAKE_BOOL=	BUILD_WSI_WAYLAND_SUPPORT
 
 XCB_DESC=		${X11_DESC} via libxcb
 XCB_USES=		xorg
 XCB_USE=		XORG=xcb
 XCB_CMAKE_BOOL=		BUILD_WSI_XCB_SUPPORT
 
 XLIB_DESC=		${X11_DESC} via libX11
 XLIB_USES=		xorg
 XLIB_USE=		XORG=x11,xrandr
 XLIB_CMAKE_BOOL=	BUILD_WSI_XLIB_SUPPORT
 
 .include <bsd.port.mk>
diff --git a/graphics/vulkan-validation-layers/distinfo b/graphics/vulkan-validation-layers/distinfo
index cb2a296949d5..5bc33708ba4a 100644
--- a/graphics/vulkan-validation-layers/distinfo
+++ b/graphics/vulkan-validation-layers/distinfo
@@ -1,7 +1,9 @@
 TIMESTAMP = 1702082204
 SHA256 (KhronosGroup-Vulkan-ValidationLayers-v1.3.273_GH0.tar.gz) = 1e0e84d641815986e05108d604156653bc3a2e4eea1a37992d3c06abb01e6b4f
 SIZE (KhronosGroup-Vulkan-ValidationLayers-v1.3.273_GH0.tar.gz) = 5142791
 SHA256 (KhronosGroup-SPIRV-Headers-1.5.4.raytracing.fixed-332-g1c6bb27_GH0.tar.gz) = d5aa6bb24f14dc0ec6785cb03826b3e10194e8d168930d7cdec5826536d43ea1
 SIZE (KhronosGroup-SPIRV-Headers-1.5.4.raytracing.fixed-332-g1c6bb27_GH0.tar.gz) = 466608
 SHA256 (KhronosGroup-Vulkan-Utility-Libraries-v1.3.273_GH0.tar.gz) = 0d60ce78c2b8f1b354f61d2ace123cf26689be66e315198da3e0738594fcd949
 SIZE (KhronosGroup-Vulkan-Utility-Libraries-v1.3.273_GH0.tar.gz) = 166758
+SHA256 (KhronosGroup-Vulkan-Headers-v1.3.273_GH0.tar.gz) = b46c77265a0b0f235a3df755742bab273fe2083ddd52b2134e8f4c7ad3154a43
+SIZE (KhronosGroup-Vulkan-Headers-v1.3.273_GH0.tar.gz) = 2176944