Page MenuHomeSolus

Update libplacebo to 2.43.0
ClosedPublic

Authored by aleksvor on Apr 22 2020, 8:18 AM.
Referenced Files
F11020075: D8724.id20926.diff
Mon, Aug 7, 1:13 AM
F11015690: D8724.diff
Sat, Aug 5, 1:33 PM
F10945062: D8724.id20946.diff
Sat, Jul 15, 2:37 AM
F10810253: D8724.id20946.diff
May 30 2023, 5:45 PM
F10808741: D8724.id20926.diff
May 30 2023, 10:18 AM
F10808260: D8724.diff
May 30 2023, 7:53 AM
F10710160: D8724.id20926.diff
Apr 28 2023, 1:48 PM
Subscribers

Details

Summary

Changelog:

The major highlight of this release is the introduction of a new OpenGL backend, documented in <libplacebo/opengl.h>, which is also the reason for the major version bump.

Additions:

  • add pl_gpu.pci, containing the PCI address of the underlying GPU
  • add pl_image.av1_grain, allowing pl_renderer to add AV1 grain
  • add pl_opengl backend (see <libplacebo/opengl.h>)
  • add pl_color_levels_guess, to infer color levels from pl_color_repr
  • pl_shader_encode_color now handles non-linear color systems
  • add pl_render_params.force_dither, to force use of the dither code
  • add pl_render_params.disable_fbos, to forcibly disable FBOs
  • add pl_vk_inst_params.layers, to allow loading extra vulkan layers
  • add a way to restrict the maximum GLSL version provided by the various pl_gpu backends, for testing purposes

Changes:

  • load all vulkan function pointers indirectly, using a user-provided vkGetInstanceProcAddr function
  • vulkan can now be built without linking against libvulkan.so
  • refactor av1 grain data struct, splitting it up into "grain metadata" and "shader params"
  • pl_swapchain_resize now recreates suboptimal swapchains even if the size does not change
  • pl_tex_blit now requires the new cap PL_GPU_CAP_BLITTABLE_1D_3D for 1D/3D textures
  • pl_tex_params.host_readable now requires the new cap PL_FMT_CAP_HOST_READABLE on the chosen format
  • pl_vk_inst_create will now automatically load any layers needed for extensions specified by the user

Fixes and performance improvements:

  • make pl_color_adjustment.gamma actually do something
  • fix av1 grain shader for separated planes
  • fix memory corruption in pl_vulkan_swapchain_suboptimal
  • fix access mask on API writes to read-writable vulkan buffers
  • fix some instances of undefined behavior in av1 grain synthesis
  • fix av1 grain scale for PL_COLOR_LEVELS_UNKNOWN
  • fix use of local #include for config.h in installed headers
  • fix various incorrect literals for compatibility with older GLSL
  • fix potential type error in XYZ input handling
  • fix numerous backwards compatibility issues for older GLSL and GLES versions, across the board
  • quench some meson warnings, as well as some compiler warnings
Test Plan
  1. Rebuilt mpv and vlc against this version.
  2. Checked that Vulkan output in mpv works.
  3. Checked that HDR conversion in vlc works.

Diff Detail

Repository
R4851 libplacebo
Lint
Lint Not Applicable
Unit
Tests Not Applicable