From 1740258c91ff3a3787eac7cb42ff4e7d1ab3d8da Mon Sep 17 00:00:00 2001
From: Steve Lhomme <robux4@ycbcr.xyz>
Date: Tue, 4 Mar 2025 14:32:57 +0100
Subject: [PATCH 1/3] configure: use libplacebo pkg-config file to find
 optional components

So we don't rely on possibly outdated headers from a previous installation.

The variables in libplacebo have been around since [^1] which is in version 3.104.0
and above. We require version 4.192.

[^1]: https://github.com/haasn/libplacebo/commit/98b92cd6b47dc6ed95cc69e9bb4a51b79b44573b
---
 configure.ac | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/configure.ac b/configure.ac
index a94bab310576..c092db2cbaab 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3260,12 +3260,26 @@ have_libplacebo_gl="no"
 AS_IF([test "$enable_libplacebo" != "no"], [
   PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 4.192], [
     AC_DEFINE([HAVE_LIBPLACEBO], [1], [Define to 1 if libplacebo is enabled.])
-    AC_CHECK_HEADER([libplacebo/vulkan.h], [VLC_ADD_PLUGIN([placebo_vk])])
-    AC_CHECK_HEADER([libplacebo/opengl.h], [
+
+    AC_MSG_CHECKING([libplacebo is compiled with vulkan support])
+    PLACEBO_HAS_VULKAN="$(${PKG_CONFIG} libplacebo --variable pl_has_vulkan)"
+    AS_IF([test "${PLACEBO_HAS_VULKAN}" = "1"], [
+      AC_MSG_RESULT([yes])
+      VLC_ADD_PLUGIN([placebo_vk])
+    ],[
+      AC_MSG_RESULT([no])
+    ])
+
+    AC_MSG_CHECKING([libplacebo is compiled with OpenGL support])
+    PLACEBO_HAS_OPENGL="$(${PKG_CONFIG} libplacebo --variable pl_has_opengl)"
+    AS_IF([test "${PLACEBO_HAS_OPENGL}" = "1"], [
+        AC_MSG_RESULT([yes])
         AC_DEFINE([HAVE_LIBPLACEBO_GL], [1], [Define to 1 if <libplacebo/opengl.h> is available.])
         VLC_ADD_PLUGIN([placebo_gl])
         VLC_ADD_PLUGIN([placebo_gles2])
         have_libplacebo_gl="yes"
+    ],[
+        AC_MSG_RESULT([no])
     ])
   ], [
     AS_IF([test -n "${enable_libplacebo}"], [
-- 
GitLab


From 42e89f2917ac226576ea91ec4d2dba0d4558c8d9 Mon Sep 17 00:00:00 2001
From: Steve Lhomme <robux4@ycbcr.xyz>
Date: Tue, 4 Mar 2025 14:50:38 +0100
Subject: [PATCH 2/3] configure: disable libplacebo Vulkan code if the user
 doesn't want it

---
 configure.ac | 27 ++++++++++++++++-----------
 1 file changed, 16 insertions(+), 11 deletions(-)

diff --git a/configure.ac b/configure.ac
index c092db2cbaab..de6c96b949ea 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3249,6 +3249,13 @@ dnl
 
 EXTEND_HELP_STRING([Video plugins:])
 
+dnl
+dnl Vulkan
+dnl
+AC_ARG_ENABLE(vulkan,
+  [AS_HELP_STRING([--disable-vulkan],
+      [disable Vulkan support (default auto)])])
+
 dnl
 dnl  libplacebo support
 dnl
@@ -3261,13 +3268,15 @@ AS_IF([test "$enable_libplacebo" != "no"], [
   PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 4.192], [
     AC_DEFINE([HAVE_LIBPLACEBO], [1], [Define to 1 if libplacebo is enabled.])
 
-    AC_MSG_CHECKING([libplacebo is compiled with vulkan support])
-    PLACEBO_HAS_VULKAN="$(${PKG_CONFIG} libplacebo --variable pl_has_vulkan)"
-    AS_IF([test "${PLACEBO_HAS_VULKAN}" = "1"], [
-      AC_MSG_RESULT([yes])
-      VLC_ADD_PLUGIN([placebo_vk])
-    ],[
-      AC_MSG_RESULT([no])
+    AS_IF([test "$enable_vulkan" != "no"], [
+      AC_MSG_CHECKING([libplacebo is compiled with vulkan support])
+      PLACEBO_HAS_VULKAN="$(${PKG_CONFIG} libplacebo --variable pl_has_vulkan)"
+      AS_IF([test "${PLACEBO_HAS_VULKAN}" = "1"], [
+        AC_MSG_RESULT([yes])
+        VLC_ADD_PLUGIN([placebo_vk])
+      ],[
+        AC_MSG_RESULT([no])
+      ])
     ])
 
     AC_MSG_CHECKING([libplacebo is compiled with OpenGL support])
@@ -3338,10 +3347,6 @@ PKG_HAVE_WITH_MODULES([GLES2], [glesv2], [enable GLES2 support (default auto)])
 dnl
 dnl Vulkan
 dnl
-AC_ARG_ENABLE(vulkan,
-  [AS_HELP_STRING([--disable-vulkan],
-      [disable Vulkan support (default auto)])])
-
 AS_IF([test "$enable_vulkan" != "no"], [
   PKG_CHECK_MODULES([VULKAN], [vulkan >= 1.0.26], [
   ], [
-- 
GitLab


From e53d4d7ba43cfa1033d3849b7b3b212f1d85d7bc Mon Sep 17 00:00:00 2001
From: Steve Lhomme <robux4@ycbcr.xyz>
Date: Tue, 4 Mar 2025 12:12:01 +0100
Subject: [PATCH 3/3] configure: let libplacebo decide if it uses vulkan and
 with what version

The libplacebo pkgconfg file has a hard requirement on vulkan if it was built with it.
Since we only use our vulkan code with libplacebo, we can rely on it to check
the dependency is matched when we check the libplacebo package.
It it's built with vulkan support, it will require the dependency to be found.

This should allow building vulkan code on platforms when libplacebo detects it
(Android) and we don't (no pkg-config file).

The vulkan code is used via "vulkan platform" modules that are only used by
libplacebo.
---
 configure.ac | 19 +++++--------------
 1 file changed, 5 insertions(+), 14 deletions(-)

diff --git a/configure.ac b/configure.ac
index de6c96b949ea..7922e40e4874 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3276,6 +3276,10 @@ AS_IF([test "$enable_libplacebo" != "no"], [
         VLC_ADD_PLUGIN([placebo_vk])
       ],[
         AC_MSG_RESULT([no])
+        AS_IF([test -n "${enable_vulkan}"], [
+          AC_MSG_ERROR([Vulkan enabled by libplacebo does not support.])
+        ])
+        enable_vulkan="no"
       ])
     ])
 
@@ -3299,6 +3303,7 @@ AS_IF([test "$enable_libplacebo" != "no"], [
 ])
 AM_CONDITIONAL([HAVE_LIBPLACEBO], [test "$enable_libplacebo" != "no"])
 AM_CONDITIONAL([HAVE_LIBPLACEBO_GL], [test "$have_libplacebo_gl" = "yes"])
+AM_CONDITIONAL(HAVE_VULKAN, [test "$enable_vulkan" != "no"])
 
 dnl
 dnl  OpenGL
@@ -3344,20 +3349,6 @@ AM_CONDITIONAL([HAVE_GL], [test "${have_gl}" = "yes"])
 dnl OpenGL ES 2: depends on EGL 1.1
 PKG_HAVE_WITH_MODULES([GLES2], [glesv2], [enable GLES2 support (default auto)])
 
-dnl
-dnl Vulkan
-dnl
-AS_IF([test "$enable_vulkan" != "no"], [
-  PKG_CHECK_MODULES([VULKAN], [vulkan >= 1.0.26], [
-  ], [
-    AS_IF([test -n "${enable_vulkan}"], [
-      AC_MSG_ERROR([${VULKAN_PKG_ERRORS}.])
-    ])
-    enable_vulkan="no"
-  ])
-])
-AM_CONDITIONAL(HAVE_VULKAN, [test "$enable_vulkan" != "no"])
-
 dnl
 dnl  Xlib
 dnl
-- 
GitLab