Here is an update to libplacebo 7.360.1.

v7.360.0

This release introduces some new features, alongside a bunch of miscellaneous 
bug
fixes across the board, in particular, major improvements to the Vulkan 
renderer.

Additions:

- add pl_gpu_limits.host_ptr_slow to notify if host pointer import is slow
- add PL_DEINTERLACE_BWDIF
- add PL_CLEAR_BLUR and pl_render_params.blur_radius to allow clearing with a
  blurred copy of image
- add pl_daylight_from_temp, pl_blackbody_from_temp
- add PL_COLOR_SYSTEM_YCGCO_{RE,RO}
- add pl_vulkan_swapchain_params.{alpha,color}_bits
- add pl_d3d11_swapchain_params.{alpha,color}_bits

Changes:

- pl_shader_{encode,decode}_color no longer (de)linearizes XYZ
- pl_avframe_set_repr now sets frame.alpha_mode
- pl_white_from_temp now computes a blend of the daylight and blackbody
  temperatures (old behavior can be achieved with pl_daylight_from_temp)

Fixes and enhancements:

- fix double application of alpha mode
- fix math in pl_primaries_compatible
- refactor and fix host-visible VRAM limit for Vulkan
- fix unsigned integer overflow with complex overlays
- fix many issues with frame_queue, mostly for interlaced sources and other
  esoteric files
- fix internal primaries/transfer function mapping of Vulkan color spaces
- Vulkan swapchain improvements by using VK_KHR_swapchain_maintenance1 when
  available
- switch to extended HLG gamma formula
- fix issues with SDR output in HDR mode on Windows with d3d11
- fix pl_filter_config_eq when comparing tunable with not tunable
- improve surface format and colorspace selection for Vulkan swapchains
- use deferred memory allocation for Vulkan swapchains
- render overlays with the same colorspace as source image
- convert background color to target and use infinite contrast for them
- prefer Vulkan formats that can be used for direct-to-display output on Apple

Please test (mpv).


Index: Makefile
===================================================================
RCS file: /cvs/ports/graphics/libplacebo/Makefile,v
retrieving revision 1.15
diff -u -p -u -p -r1.15 Makefile
--- Makefile    9 Nov 2025 12:34:31 -0000       1.15
+++ Makefile    12 Apr 2026 03:56:51 -0000
@@ -2,11 +2,10 @@ COMMENT=      reusable library for GPU-accele
 
 GH_ACCOUNT=    haasn
 GH_PROJECT=    libplacebo
-GH_TAGNAME=    v7.351.0
-REVISION=      0
+GH_TAGNAME=    v7.360.1
 CATEGORIES=    graphics
 
-SHARED_LIBS=   placebo 9.0
+SHARED_LIBS=   placebo 10.0
 
 MAINTAINER=    Brad Smith <[email protected]>
 
@@ -21,7 +20,7 @@ WANTLIB +=    GL epoxy
 MODULES=       devel/meson
 
 BUILD_DEPENDS= devel/fast-float \
-               graphics/glad>=2.0.6 \
+               graphics/glad \
                graphics/vulkan-headers
 
 LIB_DEPENDS=   graphics/lcms2 \
Index: distinfo
===================================================================
RCS file: /cvs/ports/graphics/libplacebo/distinfo,v
retrieving revision 1.11
diff -u -p -u -p -r1.11 distinfo
--- distinfo    3 Nov 2025 12:20:48 -0000       1.11
+++ distinfo    12 Apr 2026 03:56:51 -0000
@@ -1,2 +1,2 @@
-SHA256 (libplacebo-7.351.0.tar.gz) = 
cWlUUB2bduaQb93aZv68WIZJPQZz3SZeweblL05c18Y=
-SIZE (libplacebo-7.351.0.tar.gz) = 848715
+SHA256 (libplacebo-7.360.1.tar.gz) = 
0F/fkL6i9inqotEV6Qn9NWOIrGOeVPd7h6AYptdiJL0=
+SIZE (libplacebo-7.360.1.tar.gz) = 862269
Index: patches/patch-src_glsl_meson_build
===================================================================
RCS file: patches/patch-src_glsl_meson_build
diff -N patches/patch-src_glsl_meson_build
--- patches/patch-src_glsl_meson_build  9 Nov 2025 12:34:31 -0000       1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,21 +0,0 @@
-glsl/spirv_shaderc: check if shaderc recognizes Vulkan 1.4
-https://code.videolan.org/videolan/libplacebo/-/commit/3662b1f5d5a721f31cbf6c0ad090ac2345834cab
-
-Index: src/glsl/meson.build
---- src/glsl/meson.build.orig
-+++ src/glsl/meson.build
-@@ -4,6 +4,14 @@ components.set('shaderc', shaderc.found())
- if shaderc.found()
-   build_deps += shaderc
-   sources += 'glsl/spirv_shaderc.c'
-+
-+  # Version check for shaderc is not possible because everything after v2023.8
-+  # uses this version due to a malformed version line.
-+  # See https://github.com/google/shaderc/issues/1496
-+  conf_internal.set('PL_HAVE_SHADERC_VK_1_4',
-+    cc.has_header_symbol('shaderc/shaderc.h', 
'shaderc_env_version_vulkan_1_4', dependencies: shaderc))
-+  conf_internal.set('PL_HAVE_SHADERC_VK_1_3',
-+    cc.has_header_symbol('shaderc/shaderc.h', 
'shaderc_env_version_vulkan_1_3', dependencies: shaderc))
- endif
- 
- # glslang
Index: patches/patch-src_glsl_spirv_shaderc_c
===================================================================
RCS file: patches/patch-src_glsl_spirv_shaderc_c
diff -N patches/patch-src_glsl_spirv_shaderc_c
--- patches/patch-src_glsl_spirv_shaderc_c      9 Nov 2025 12:34:31 -0000       
1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,50 +0,0 @@
-glsl/spirv_shaderc: check if shaderc recognizes Vulkan 1.4
-https://code.videolan.org/videolan/libplacebo/-/commit/3662b1f5d5a721f31cbf6c0ad090ac2345834cab
-
-Index: src/glsl/spirv_shaderc.c
---- src/glsl/spirv_shaderc.c.orig
-+++ src/glsl/spirv_shaderc.c
-@@ -22,6 +22,17 @@
- #include "spirv.h"
- #include "utils.h"
- 
-+#define VK_API_VERSION_MAJOR(version) (((uint32_t)(version) >> 22U) & 0x7FU)
-+#define VK_API_VERSION_MINOR(version) (((uint32_t)(version) >> 12U) & 0x3FFU)
-+
-+#if defined(PL_HAVE_SHADERC_VK_1_4)
-+# define SHADERC_VULKAN_MAX PL_VLK_VERSION(1, 4)
-+#elif defined(PL_HAVE_SHADERC_VK_1_3)
-+# define SHADERC_VULKAN_MAX PL_VLK_VERSION(1, 3)
-+#else
-+# define SHADERC_VULKAN_MAX PL_VLK_VERSION(1, 2)
-+#endif
-+
- const struct spirv_compiler pl_spirv_shaderc;
- 
- struct priv {
-@@ -57,8 +68,25 @@ static pl_spirv shaderc_create(pl_log log, struct pl_s
- 
-     // Clamp to supported version by shaderc
-     if (ver < spirv->version.spv_version) {
-+        PL_WARN(spirv, "SPIR-V %u.%u is not supported by the current"
-+                       " version of shaderc. Falling back to %u.%u!",
-+                spirv->version.spv_version >> 16, (spirv->version.spv_version 
>> 8) & 0xff,
-+                ver >> 16, (ver >> 8) & 0xff);
-         spirv->version.spv_version = ver;
-         spirv->version.env_version = pl_spirv_version_to_vulkan(ver);
-+    }
-+
-+    if (SHADERC_VULKAN_MAX < spirv->version.env_version) {
-+        PL_WARN(spirv, "Vulkan %u.%u is not supported by the current"
-+                       " version of shaderc. Falling back to %u.%u!",
-+                       VK_API_VERSION_MAJOR(spirv->version.env_version),
-+                       VK_API_VERSION_MINOR(spirv->version.env_version),
-+                       VK_API_VERSION_MAJOR(SHADERC_VULKAN_MAX),
-+                       VK_API_VERSION_MINOR(SHADERC_VULKAN_MAX));
-+        // The SPIR-V version has already been clamped above.
-+        // In practice, this only occurs for Vulkan 1.3 and 1.4,
-+        // where the SPIR-V version is the same (1.6).
-+        spirv->version.env_version = SHADERC_VULKAN_MAX;
-     }
- 
-     pl_hash_merge(&spirv->signature, (uint64_t) spirv->version.spv_version << 
32 |
Index: patches/patch-src_vulkan_utils_gen_py
===================================================================
RCS file: patches/patch-src_vulkan_utils_gen_py
diff -N patches/patch-src_vulkan_utils_gen_py
--- patches/patch-src_vulkan_utils_gen_py       3 Nov 2025 12:27:56 -0000       
1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,22 +0,0 @@
-From 12509c0f1ee8c22ae163017f0a5e7b8a9d983a17 Mon Sep 17 00:00:00 2001
-From: Nicolas Chauvet <[email protected]>
-Date: Tue, 29 Jul 2025 11:42:35 +0200
-Subject: [PATCH] vulkan/utils_gen: fix for python 3.14
-
-Python 3.14+ has added more type checking. This patch fixes usage
-
-Fixes: https://github.com/haasn/libplacebo/issues/335
-
-Index: src/vulkan/utils_gen.py
---- src/vulkan/utils_gen.py.orig
-+++ src/vulkan/utils_gen.py
-@@ -202,7 +202,8 @@ if __name__ == '__main__':
-     if not xmlfile or xmlfile == '':
-         xmlfile = find_registry_xml(datadir)
- 
--    registry = VkXML(ET.parse(xmlfile))
-+    tree = ET.parse(xmlfile)
-+    registry = VkXML(tree.getroot())
-     with open(outfile, 'w') as f:
-         f.write(TEMPLATE.render(
-             vkresults = get_vkenum(registry, 'VkResult'),

Reply via email to