Skip to content
v7.349.0

This release introduces a number of minor and maintenance changes, and
bumps the major version to v7 in order to clean up old deprecations. The
main focus was on bug fixing and performance improvements, with some new
API additions as a side product of that.

Additions:
- add pl_peak_detect_params.black_cutoff, fixing unnatural flickering from
  encoding noise near black
- add pl_queue_params.drift_compensation (and PL_QUEUE_DEFAULTS), to help
  adjust for slight discrepencancies due to e.g. 0.1% differences between 60.00
  Hz and 59.94 Hz.
- add pl_cache_signature() to test if a cache object needs to be updated
- add pl_map_avdovi_metadata()
- add PL_ALPHA_NONE, distinguishing itself from PL_ALPHA_UNKNOWN
- add pl_frame_clear_tiles()
- add pl_gpu_limits.max_mapped_vram
- add pl_color_linearize() and pl_color_delinearize()
- add pl_color_{primaries,system,transfer}_name(s)
- add fourcc codes for AB48 and AR48
- add support for dovi extension block parsing in utils/libav.h

Changes:
- remove fields deprecated in libplacebo v5
- deprecate pl_frame_map_avdovi_metadata(), see pl_map_avdovi_metadata() for
  a replacement
- deprecate pl_render_params.skip_target_clearing and .blend_against_tiles,
  instead introduce new fields pl_render_params.background and .border, which
  can be set to an explicit value to control how the background and border are
  drawn (respectively).
- ICC profiles with well-known transfer functions are now identified as such
- White point adaptation is now done using CAT16, replacing CAT97.

Fixes and performance enhancements:
- fix accidentally removed symbols (cubic samplers)
- improve cache efficiency of plplay
- fix segfault when writing to oddly sized vulkan buffers under some
  circumstances
- fix various extension checks for GLES
- fix rgba8 not being marked host-readable on GLES
- fix bit shift of vulkan P010 frames
- also allow built-in fast paths for custom filters which are equivalent to
  built-in filters
- massively improve compilation time of large ortho samplers, by not unrolling
  past a certain point
- fix build issues past certain versions of glslang
- slightly modify debanding algorithm to reduce some blurring and increase
  performance
- fix wrong primaries being selected for linear light BT.709 swapchains
- fix non-compute polar sampling fallback
- allow polar sampling up to 64x64, up from 32x32
- make polar compute shader more flexible w.r.t hardware limits
- avoid compute shaders on very large polar radius
- fix exhausting mapped VRAM on non-resizable BAR devices
- fix use-after-free race when using download callbacks
- prefer peak detection over static metadata when inferring tone mapping state
- fix use as meson subproject
- clean up ICC metadata reporting to conform to normal libplacebo style
- allow timer queries to work on GL (ES) 3.0+
- fix GLSL version detection on GLES
- fix cache coherency issues on d3d11
- fix accidental rounding of sub-pixel offsets inside renderer
- allow using xxhash as subproject
- improve texture format sorting preference
- add support for 16hf formats on GL
- fix 32/64-bit cache mismatch on windows+d3d11
- fix superfluous function load warning on vulkan