HomeSolus

Update libplacebo to 4.157.0

Authored by aleksvor on Wed, Sep 15, 3:14 PM.

Description

Update libplacebo to 4.157.0

Summary:
This is a major new release involving a significant overhaul of the public API, full thread safety, support for native HDR output, and more.

Summarized changelog:

  • Additions:
    • always accept DRM_FORMAT_MOD_INVALID for texture imports
    • add pl_shader_sample_oversample, a variant of nearest-neighbour that preserves pixel aspect ratios - good for pixel art
    • add support for compile-time specialization constants (pl_constant), and use them to speed up recompilation of shaders with hard-coded constants
    • implement full black point adaptation, even when not using ICC profiles, and infer this black-point-adapted BT.1886 instead of gamma 2.2 as the default gamma curve for SDR files.
  • Changes:
    • make almost everything thread-safe, and document the parts that aren't. In particular, almost all GPU state access is now thread safe, freeing up users to access pl_gpu instances from multiple threads, even when the underlying API is OpenGL
    • deprecate disable_overlay_sampling, now effectively always true
    • make pl_renderer automatically clear the target image, freeing users from the responsibility of calling pl_frame_clear themselves. This can be controlled via three new fields in pl_render_params: background_color, background_transparency and skip_target_clearing
    • rename pl_context to pl_log, and make its use optional. The old names have been deprecated. It now lives inside <libplacebo/log.h>
    • remove support for 64-bit float formats, which probably don't work on any Vulkan implementation
    • stop contrast-limiting ICC profiles, instead assuming perceptual profiles have infinite contrast
    • remove pl_shader_signature for being necessarily unsafe
    • require Vulkan 1.1 as the minimum Vulkan version
    • significantly increase the default strengths of the desaturation settings in pl_color_map_params to mimic the Hollywood feel
  • Fixes and performance improvements:
    • don't explode pl_queue on NaN/Infinity/weird PTS values
    • fix edge case involving plane merging for cropped images
    • several fixes for edge cases in <libplacebo/utils/libav.h> helpers
    • fix blending edge cases involving overlays and alpha channels
    • skip some unnecessary matrix multiplications for RGB content
    • slightly improve small texture transfers in some emulated edge cases
    • fix several possible hash collisions for generated shaders, making the shader dispatch mechanism significantly more robust
    • improve performance of textureGather-based polar sampling, especially for radius 2 and 4
    • fix crash on edge case when shader compilation fails
    • avoid generating spurious EGL errors when probing for EGL format modifiers

Full changelog here.

Test Plan:

  1. Rebuilt mpv and vlc.
  2. Played video in mpv using Vulkan rendering (mpv --vo=gpu --gpu-api=vulkan).
  3. Played HDR video in VLC, checked that HDR-to-SDR gamut conversion worked.

Reviewers: Triage Team, JoshStrobl

Reviewed By: Triage Team, JoshStrobl

Subscribers: JoshStrobl

Tags: Requires Rebuilds

Differential Revision: https://dev.getsol.us/D11831

Details

Committed
JoshStroblWed, Sep 15, 3:15 PM
Pushed
JoshStroblWed, Sep 15, 3:15 PM
Reviewer
Triage Team
Differential Revision
D11831: Update libplacebo to 4.157.0
Parents
R4851:08e21f428fdf: Update libplacebo to 3.120.3
Branches
Unknown
Tags
Unknown
References
HEAD -> master, tag: libplacebo-4.157.0-11