From: Brad Smith Subject: Re: UPDATE: libplacebo 7.360.1 To: ports@openbsd.org Date: Wed, 17 Jun 2026 16:12:21 -0400 ping. On 2026-05-10 7:49 p.m., Brad Smith wrote: > 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 > > @@ -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 > -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'),