Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:llyyr
libplacebo
libplacebo.changes
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File libplacebo.changes of Package libplacebo
------------------------------------------------------------------- Sat Sep 21 01:44:51 UTC 2024 - llyyr@yukari.in - Update to version v7.349.0+13~git20240917.a018ab049edd: * utils/upload: fix use of formats with unusual sample order * renderer: update plane state after user hook * d3d11/formats: don't add emulated formats if they would fail on upload * filters: change sinc radius to 2 * utils/libav: guard hwctx vulkan include * utils/libav: drop support for legacy API * renderer: fix incorrect comments for deprecated params * Fix typo in README.md * shaders: don't assert on duplicate descriptors * gpu: ensure uniqueness of descriptor bindings * shaders: fix buffer vars renaming loop * tests/fuzz/options: check input length * tests/fuzz: fix header location ------------------------------------------------------------------- Tue Jul 02 13:19:10 UTC 2024 - llyyr@yukari.in - Update to version 7.349.0-rc1+3~git20240619.1fd3c7bde7b9: * colorspace: switch to the CAT16 color transform * d3d11: make cache header constant size regardless of the build * vulkan: remove accidental load of vkDestroyInstance * opengl: add support for 16hf formats * tests/gpu_tests: avoid invalid floats when testing roundtrip * tests/utils: add helpers for generating random floats * tests: rename tests.h to utils.h * tests: move gpu_tests to actual source file * tests: also highlight errors in memdump using plaintext * opengl: remove the check for GL_EXT_color_buffer_half_float * shaders: remove redundant call * utils/libav: read dovi L1 metadata in pl_map_avdovi_metadata * gpu/utils: only sort by relevant texture capabilities * gpu/utils: add fourcc AB48 & AR48 ------------------------------------------------------------------- Mon May 13 03:12:25 UTC 2024 - llyyr@yukari.in - Update to version 6.338.0+130~git20240510.bf1855c7f85f: * meson: allow using xxhash as subproject * win32: bump copyright year in RC * win32: fix RC encoding of © * renderer: fix accidental rounding of sub-pixel offsets * d3d11: don't write redundant hash to cache * d3d11: use full pass hash as a cache key * opengl/gpu: fix GLSL version detection on GLES * opengl/gpu: make timer queries work on GLES * opengl/gpu: fill in missing GLES versions in feature checks * vulkan/common: only include Metal extensions on Apple targets * shaders/icc: fix gamut detection * Revert "3rdparty/glad: update to v2.0.5" * 3rdparty/glad: update to v2.0.5 * shaders/icc: delete left-over debug code ------------------------------------------------------------------- Mon Mar 11 18:15:04 UTC 2024 - llyyr@yukari.in - Update to version 6.338.0+116~git20240311.14699044d84a: * renderer: use auto-detected ICC transfer if available * shaders/icc: consolidate/normalize profile info dumping * shaders/icc: simplify detect_contrast signature * shaders/icc: simplify detect_csp signature * shaders/icc: move gamut detection to detect_csp * shaders/icc: detect exact match for known transfer functions * tests: re-use friendly names inside colorspace tests * demos/settings: re-use pl_color_primaries_names etc. * colorspace: add pl_color_{primaries,system,transfer}_name(s) * tests/colorspace: add test for pl_color_(de)linearize * colorspace: add pl_color_linearize and pl_color_delinearize * shaders/colorspace: remove blatantly wrong comment * shaders/colorspace: simplify switch/case check * colorspace: add shared header for common constants * meson: fix version.h generation if build as a meson subproject * shaders/colorspace: take peak detection into account when tone mapping * ci: switch to merge request pipelines * tools/glsl_preproc: force utf-8 input * gpu/utils: fix use after free on race with download callback * tools/glsl_preproc: force utf-8 input * vulkan/gpu_buf: check host-mapped VRAM size limits * gpu: add pl_gpu_limits.max_mapped_vram * gpu/utils: minor cleanup * shaders/sampling: don't use polar compute for high radius * shaders/sampling: dynamically downsize polar work group size * shaders/sampling: bump maximum polar size to 64x64 * shaders/sampling: fix gather version of pl_shader_sample_polar * vulkan: disable synchronization validation * utils/libav: update max_luma threshold to 5 nits * vulkan/swapchain: fix typo in VK_COLOR_SPACE_BT709_LINEAR_EXT case * vulkan: avoid function pointer casting ------------------------------------------------------------------- Fri Feb 23 09:24:21 UTC 2024 - llyyr@yukari.in - Update to version 6.338.0+85~git20240221.e987124: * options: update for new clearing options * demos/settings: update for new clearing options * renderer: refactor background/border clearing options * renderer: add pl_frame_clear_tiles * colorspace: split PL_ALPHA_NONE off from PL_ALPHA_UNKNOWN * shaders/sampling: switch to nearest neighbour for debanding ------------------------------------------------------------------- Sun Feb 18 18:21:24 UTC 2024 - llyyr@yukari.in - Update to version 6.338.0+79~git20240218.0f0acc1: * meson: use project version for build version instead of git describe * utils/libav: add pl_map_avdovi_metadata * meson: don't hard-require glslang internal dependencies * shaders/sampling: change loop iterator to uint in sample ortho * shaders/sampling: simplify pl_shader_sample_ortho * shaders/sampling: add proper loop step for use_linear case * shaders/sampling: don't unroll whole ortho sampling * tools/glsl_preproc: don't strip newlines * renderer: enable fast path for copies of built-in filters * utils/libav: fix unused parameter warning * utils/libav: fix unused variable warning * utils/libav: Only adjust bit_shift for DRM P010 frames * opengl/formats: fix rgba8 not marked as host-readable on GLES * opengl/formats: fix extension check for uint formats on GLES * vulkan/gpu_buf: avoid segfault with unusually aligned size_base ------------------------------------------------------------------- Thu Jan 18 15:51:29 UTC 2024 - llyyr.public@gmail.com - Update to version 6.338.0+64~git20240110.34e019b: * utils/libav: Use Vulkan HW frames context dimensions * docs/options: fix typo in perceptual_strength ------------------------------------------------------------------- Tue Jan 09 18:45:14 UTC 2024 - llyyr.public@gmail.com - Update to version 6.338.0+62~git20231204.52314e0: * renderer: avoid integer overflow * meson: don't use xxhash dependency to avoid generating bogus .pc file * cache: don't reject pl_cache_obj with custom allocator * shaders/lut: add an assert for signature if cache is used ------------------------------------------------------------------- Sun Nov 19 14:29:45 UTC 2023 - llyyr.public@gmail.com - Update to version 6.338.0+58~git20231118.2385b36: * demos/plplay: avoid re-saving unmodified cache * cache: add pl_cache_signature * tests/cache: use proper keys for testing cache ------------------------------------------------------------------- Sat Nov 18 07:30:24 UTC 2023 - llyyr.public@gmail.com - Update to version 6.338.0+55~git20231117.426f346: * renderer: don't delinearize linear input when sigmoidizing * utils/libav: don't use deprecated side data * shaders/sampling: avoid duplicating scale factor * shaders/sampling: avoid possible namespace collision ------------------------------------------------------------------- Fri Nov 10 18:31:36 UTC 2023 - llyyr.public@gmail.com - Update to version 6.338.0+51~git20231106.c59d487: * shaders/icc: don't spam logs if there is no lcms support * filters: re-add accidentally removed filters * renderer: don't assert on a failed icc profile * utils/frame_queue: add PTS drift compensation * vulkan: fix pNext chain contains duplicate structure types * filters: fix pl_find_filter_function and pl_find_filter_config * log: suppress maybe-uninitialized warning false positive * vulkan: fix ancient and misleading comment * vulkan/utils_gen: fix deprecation warning ------------------------------------------------------------------- Sun Oct 22 18:38:41 UTC 2023 - llyyr.public@gmail.com - Update to version 6.338.0+42~git20231022.6ba2300: * renderer: suppress unused variable warning * renderer: don't attempt opening ICC profile without support * opengl/gpu: disable advanced buffers if PBOs not available * vulkan/gpu: properly clamp vulkan buffer sizes ------------------------------------------------------------------- Thu Oct 19 17:08:11 UTC 2023 - llyyr.public@gmail.com - Update to version 6.338.0+38~git20231019.adc9d7f: * vulkan/gpu_tex: properly propagate tex transfer return value * vulkan/gpu_tex: slight improvement to sanity assertions * gpu/utils: remove error path from pl_tex_transfer_slices * gpu/utils: allow non-texel emulated format slices * gpu/utils: use correct limit for tex transfer slices * gpu/utils: add more sanity verifications * utils/libav: fix plane alignment calculation ------------------------------------------------------------------- Tue Oct 17 13:23:25 UTC 2023 - llyyr.public@gmail.com - Update to version 6.338.0+31~git20231017.fd2addf: * renderer: properly clamp tscale blur calculation ------------------------------------------------------------------- Mon Oct 09 19:19:46 UTC 2023 - llyyr.public@gmail.com - Update to version 6.338.0+30~git20231008.7ca8418: * tests/bench: change texture size default to 1920x1080 * tests/bench: replace test pattern * tests/bench: make depth and components tunable * tests/bench: add warmup phase * tests/bench: slight cleanup to prelude * demos/multigpu-bench: don't duplicate default value * shaders/colorspace: improve accuracy of desaturation * colorspace: slight cleanup to pl_get_rgb2xyz_matrix * gpu/utils: dispatch callback sooner on pbo upload * gpu: don't attach callback to sliced uploads * tests/cache: support also big-endian in ref compare test * shaders/sampling: fix broken AR on strictly positive filters * shaders/sampling: avoid unnecessary cast * shaders/sampling: fix unnecessary shader recompilation * shaders/lut: attach debug tag to LUT allocations * demos/plplay: fix use_icc_luma checkbox * shaders/colorspace: add pl_peak_detect_params.black_cutoff * shaders/colorspace: convert peak shader to pragma GLSL * shaders: drop v5 deprecations * vulkan: drop v5 deprecations * gpu: drop v5 deprecations * colorspace: drop v5 deprecations * config: attach version to deprecation macros * gpu: remove out-of-date comment ------------------------------------------------------------------- Fri Sep 29 14:42:54 UTC 2023 - llyyr.public@gmail.com - Update to version 6.338.0+6~git20230928.2dbac98: * meson: remove _XOPEN_SOURCE=700 flag * options: fix typo * options: clarify behavior of pl_options_alloc/reset * shaders/film_grain_h274: match spec offset calculation * shaders/film_grain_h274: fix PRNG shift ------------------------------------------------------------------- Tue Sep 26 11:31:40 UTC 2023 - llyyr.public@gmail.com - Update to version 6.338.0+1~git20230926.d322515: * meson: bump major version * docs: add options documentation * docs: limit TOC depth * docs: indent paragraphs * tone_mapping: update comments (cosmetic) * shaders: update comments (cosmetic) * renderer: update comment (cosmetic) * colorspace: update comment (cosmetic) * options: allow scaler_radius=0 * shaders/colorspace: default visualize_rect to {0,0,1,1} * filters: split pl_filter_nearest into `nearest` and `box` * tests/bench: add HQ peak detection test * utils/frame_queue: increase queue size based on fps ratio * renderer: properly blur frame mixer * renderer: add missing validation check * filters: move helper function to filters.h * demos/plplay: default to pl_render_default_params * demos/plplay: write new options parser * demos/plplay: replace redundant helper macro * demos/plplay: factor options out to extra file * demos: Fix building multigpu-bench on macOS ------------------------------------------------------------------- Thu Sep 21 13:03:25 UTC 2023 - llyyr.public@gmail.com - Update to version 6.337.0~rc1+0~git20230920.9bed4c8: * options: adjust deband param value ranges * shaders/sampling: tune default debanding parameters * renderer: make default frame mixer consistent * meson: fix typo in API log * shaders/sampling: replace redundant logic * filters: drop mitchell upscaling recommendation * filters: add Catmull-Rom recommendation * filters: drop spline36 recommendation * filters: fix PL_FILTER_DOWNSCALING definition * shaders/sampling: skip redundant weight check * shaders/sampling: stop using deprecated radius_cutoff * tests/filters: add testing for radius/radius_zero * filters: calculate exact radius and main lobe size * filters: simplify compute_row * tests/bench: reduce test duration * tests/bench: don't queue up infinite commands * tests/filters: test polar LUT precision * shaders/sampling: hard-code scaler configuration * renderer: add missing deprecation tag * renderer: switch to lanczos upscaling by default ------------------------------------------------------------------- Wed Sep 20 10:15:45 UTC 2023 - llyyr.public@gmail.com - Update to version 6.292.0+404~git20230919.7800209: * demos: add multigpu benchmark * gpu: add pl_tex_transfer_params.no_import * vulkan/malloc: add pl_debug_abort to malloc failure path * tests/bench: flush after every iteration * renderer: fix mitchell_clamp description * renderer: switch to hermite downscaling by default * filters: recommend hermite for downscaling * renderer: use fast hermite/gaussian automatically * tests/bench: fix integer division * tests/bench: add hermite/gaussian benchmark * shaders/sampling: use bilinear trick for all ortho kernels * shaders/sampling: add more fast shader variants * demos/plplay: expose mixer cache bypass debug option * meson: add -fno-math-errno * filters: fix pl_filter_bicubic/cubic presets * filters: drop mitchell_clamp from recommended * meson: fix typo in api log * filters: make filter field order consistent * filters: minor cleanup to cubic() function * filters: don't leak params to non-tunable filters * filters: add "cubic" alias to bicubic for frame mixing * filters: add pl_filter_function_hermite and pl_filter_hermite * filters: remove bcspline family filter functions * tests/gpu_tests: add pl_frames_infer_* tests * tests/gpu_tests: add test for empty pl_frame_mix * renderer: add pl_frames_infer(_mix) * renderer: add pl_frame_mix_nearest/current helpers * renderer: split frame fixing logic off from pass_init * renderer: remove pl_render_params.ignore_icc_profiles * tests/filters: move to new filter API * tests/filters: add filter function scaling test * filters: fix filter function scaling * filters: remove incorrectly named bcspline alias * shaders/sampling: fix polar scaler anti-ringing * convert: don't use concepts for older compilers * d3d11/formats: set fmt->fourcc for consistency ------------------------------------------------------------------- Fri Sep 15 09:30:20 UTC 2023 - llyyr.public@gmail.com - Update to version 6.292.0+368~git20230914.808f1af: * demos/plplay: switch to new ICC profile API * renderer: remove pl_render_params.icc_params * options: refactor option macros slightly * renderer: add pl_frame.icc * renderer: re-use pl_icc_update internally * shaders/icc: fix empty profile check * shaders/icc: add pl_icc_update helper * shaders/icc: add note to size_r/g/b comment * shaders/icc: fix out-of-date / misleading comment * colorspace: add missing pl_icc_profile helper macro * colorspace: improve pl_icc_profile_compute_signature * demos/plplay: fix target ICC signature calculation * shaders/colorspace: document ICC signature requirements * shaders/colorspace: fix theoretical white shift * shaders/colorspace: fix gamut visualization * meson: fix typo (cosmetic) * shaders/custom: correctly update hook params * renderer: add pl_render_params.correct_subpixel_offsets * gamut_mapping: sanity clamp highlight() output * opengl/formats: update SNORM format documentation * shaders/colorspace: switch to UNORM 3DLUT texture * shaders/icc: handle format lookup failure gracefully * shaders/colorspace: fallback when no rgba16s format * filters: fix polar downscale antiringing ------------------------------------------------------------------- Thu Sep 14 09:03:01 UTC 2023 - llyyr.public@gmail.com - Update to version 6.292.0+344~git20230913.a12b733: * renderer: fix pl_render_params.ignore_icc_profiles * demos/plplay: add option to control target zoom/crop * demos/utils: fix build on macOS * renderer: allow non-complex scalers without FBOs * gpu: suppress scan-build warning * utils/dav1d: remove use of deprecated type name * renderer: remove outdated and wrong comment * renderer: pass overlays through ICC profile * cache: sanitize/expose configured max object/total size * shaders/colorspace: use rgba16s for gamut 3DLUT * cache: add missing header * shaders/lut: fix texture LUT size generation * cache: make pl_cache_load() more robust * cache: defend against array overflow * cache: fix for 32-bit systems * demos/plplay: increase default cache size * cache: add verbose PL_TRACE logging * hash: improve golden ratio constant * global: remove MSAN hacks * cache: add sanity assertion (+ whitespace) * vulkan/context: log init times * demos/plplay: drop max object size * xxhash: add optional libxxhash implementation of pl_mem_hash * hash: inline pl_mem_hash * hash: move prototype from pl_string to new header * cache: fix deadlock on loading corrupt files ------------------------------------------------------------------- Fri Sep 08 16:30:56 UTC 2023 - llyyr.public@gmail.com - Update to version 6.292.0+318~git20230908.07fa0f0: * demos/plplay: add cache statistics UI * demos/plplay: add basic shader caching support * demos/utils: add get_cache_dir helper * demos: add missing license headers * demos: remove old/unused assets * dispatch: deprecate pl_dispatch_save/load * gpu: remove pl_pass_params.cached_program * d3d11/pass: pl_str_hash(pl_str0()) -> pl_str0_hash * d3d11/pass: switch to pl_cache based caching * opengl/pass: switch to pl_cache based caching * vulkan/pass: switch to pl_cache based caching * shaders/colorspace: enable gamut mapping 3DLUT caching * shaders/colorspace: switch from update to signature * shaders/film_grain_h274: cache grain LUT * shaders/dithering: cache blue noise dither matrix * shaders/icc: refactor cache mechanism * shaders/lut: add ability to cache shader LUTs directly * gpu: add pl_gpu_set_cache() * tests/cache: add tests for pl_cache mechanism * cache: add common/core caching mechanism * pl_string: add pl_var_hash * d3d11/gpu: add missing pl_spirv_destroy call * glsl/spirv: API bikeshedding * convert: make fast_float optional dependency if not required * demos/plplay: work around exp10f non-portability * demos/plplay: adjust polar cutoff slider * filters: update ewa_lanczossharp blur value * meson: add missing variable * filters: fix ewa_lanczossharp(est) legacy description * filters: update ewa_lanczos4sharpest blur value * dispatch: disable textureLod() when using non-normal samplers * ci: remove msan build * tests/string: add tests for large inputs * convert: remove unused code * format: use new pl_str_print/parse * convert: improve ccStrPrintDouble * pl_string: add pl_string_print_* and pl_string_parse* * convert: add fast_float submodule * convert: move conversion functions to own file * meson: bump C++ version to 20 * pl_string: fix for C++ compatibility * common: exclude atomics in C++ * shaders: be explicit about the type * tools/glsl_preproc: use type names instead of suffix * common: fix include order * meson: don't declare vulkan headers as dependency * meson: specify code page with pragma * meson: add -DNOMINMAX and -DWIN32_LEAN_AND_MEAN for Windows * meson: set project args also for cpp ------------------------------------------------------------------- Mon Sep 04 02:30:25 UTC 2023 - llyyr.public@gmail.com - Update to version 6.292.0+269~git20230903.7737933: * tests: increase default test timeout to 120s * renderer: default to ewa_lanczossharp * filters: add pl_filter_ewa_lanczossharp(est) * options: add antiring options to custom scalers * filters: add pl_filter_config.antiring * filters: remove pl_filter_config.filter_scale * shaders/sampling: use pl_filter_config.blur instead of filter_scale * filters: apply blur to window as well * options: parse floats expressed as fractions * shaders/colorspace: bias PQ deltas for mostly black frames * shaders/colorspace: don't bypass smoothing for black frames * shaders/colorspace: distinguish between active/total wg count * shaders/colorspace: properly handle pl_buf_read failure * shaders/colorspace: don't warn on solid black frame ------------------------------------------------------------------- Sat Sep 02 09:21:19 UTC 2023 - llyyr.public@gmail.com - Update to version 6.292.0+255~git20230901.ec60dd1: * shaders/colorspace: significantly lower default smoothing period * shaders/colorspace: significantly reduce scene threshold * tone_mapping: remove pl_tone_map_auto * shaders/colorspace: default to pl_tone_map_spline * shaders/colorspace: exclude black pixels from peak detection * shaders/colorspace: simplify sh_luma_coeffs signature * shaders/colorspace: use correct luma coeffs for peak detection * options: exclude special options from `preset=` loading ------------------------------------------------------------------- Mon Aug 28 20:25:17 UTC 2023 - llyyr.public@gmail.com - Update to version 6.292.0+247~git20230828.defc776: * renderer: only disable peak detection if HDR10+ OOTF in use * tone_mapping: simplify auto-TM selection * demos/plplay: add detected peak metadata * renderer: add pl_renderer_get_hdr_metadata * shaders/colorspace: remove minimum_peak * shaders/colorspace: fix order of pl_tone_map_params_infer * tone_mapping: also constrain output max if no inverse TM * tone_mapping: properly constrain input peak * tone_mapping: used inferred peak in fix_params() * tone_mapping: lower default adaptation strength * tone_mapping: add dynamic knee point adaptation tuning * tone_mapping: reformulate st2094_pick_knee (cosmetic) * tone_mapping: rename duplicate expression (cosmetic) * gamut_mapping: slightly increase perceptual strength default * demos/plplay: simplify option value ranges * options: simplify value ranges ------------------------------------------------------------------- Sun Aug 27 11:06:38 UTC 2023 - llyyr.public@gmail.com - Update to version 6.292.0+231~git20230826.612071d: * renderer: fix nominal luma comparison * gamut_mapping: slightly boost default perceptual deadzone * gamut_mapping: drop perceptual strength to 0.6 * tests/tone_mapping: force max strength for saturation test * gamut_mapping: add tunable perceptual_strength * renderer: use nominal max luminance for peak detection check ------------------------------------------------------------------- Sat Aug 26 17:29:34 UTC 2023 - llyyr.public@gmail.com - Update to version 6.292.0+225~git20230826.b19e441: * tools/glsl_preproc: fix vecType on 1-component mask * shaders: make sh_float_type accept comp mask * vulkan/formats: drop format probing spam verbosity * dispatch: reduce verbosity of cache load/save spam * options: lower verbosity of option parsing * Revert "tools/glsl_preproc: add support for const char variables" * Revert "docs/glsl: expand GLSL variables documentation" * shaders/sampling: switch to new swizzle/vecType fmt * tools/glsl_preproc: add support for swizzle and vecType * tools/glsl_preproc: add ability to wrap bound references * tools/glsl_preproc: move FmtSpec to statement.py * demos/plplay: add advanced constants section * demos/plplay: remove deprecated tone mapping param UI * options: map pl_tone_map_constants * tone_mapping: refactor tone mapping parameters API * tone_mapping: change gamma default knee to 0.3 * tone_mapping: change st2094-10 knee point default to 0.7 * tests/options: explicitly test setting 0.0 * options: don't reject 0.0 floats * options: expose pl_color_map_constants options * options: fix gamut_mapping options order * gamut_mapping: make hard-coded constants tunable * common: protect pl_smoothstep against edge0 = edge1 * shaders: replace magic constants with values from default struct ------------------------------------------------------------------- Mon Aug 21 11:51:57 UTC 2023 - llyyr.public@gmail.com - Update to version 6.292.0+201~git20230821.69e40e5: * utils/frame_queue: don't crash on empty pl_queue_update ------------------------------------------------------------------- Mon Aug 21 11:05:15 UTC 2023 - llyyr.public@gmail.com - Update to version 6.292.0+200~git20230821.e9b39ab: * RELEASING: add note to create github release tags * vulkan/malloc: bump up maximum slab age * vulkan/malloc: profile malloc times * tests: limit array log size and start with an offset * Revert "d3d11: remove static texels count limit" * vulkan/tex: split texel transfers into slices * d3d11/tex: split texel transfers into slices * gpu/utils: add pl_tex_transfer_slices * gpu/utils: make tex offset dynamic in pl_tex_upload/download_texel * gpu/utils: fix pl_tex_upload/download_texel to respect params.buf_offset * gpu/utils: drop UBO support from pl_tex_upload_texel * demos/video-filtering: switch to new pl_thread helpers * pl_thread: properly document pl_thread_sleep * docs/glsl: expand GLSL variables documentation * shaders/deinterlacing: re-use swizzle helpers * shader/sampling: 80col align GLSL pragma (cosmetic) * shaders: simplify sh_tex_swiz helper * tools/glsl_preproc: add support for const char variables * tools/glsl_preproc: fix ident_t size * renderer: alignment (cosmetic) * renderer: set proper error attributes on hook * renderer: don't wipe `unique` attrib on custom hooks * options: allow : as separator in pl_options_load * renderer: correctly hook CHROMA/ALPHA_SCALED * renderer: simplify plane shader handling * win32: include manifest in libplacebo and plplay * shaders/colorspace: allow smoothing period of 0.0 * shaders/colorspace: simplify iir_coeff math * vulkan/malloc: fix allocation with large pages * Revert "meson: bump C++ version to 20" * glsl/glslang: avoid use of designated initializer * glsl/glslang: enable optimizer * meson: bump C++ version to 20 * shaders/sampling: fix uninitialized variable in pl_shader_sample_ortho * ci: enable debug-abort in all builds that run tests * d3d11/utils: fix D3D11_MESSAGE_ID_CREATE_FENCE id * tools/glsl_preproc: add suffixes to literals * tools/glsl_preproc: add strip option to reduce shader string size in binary * tools/glsl_preproc: strip leading spaces due to C indent * shaders/sampling: rewrite pl_shader_sample_ortho to pragma GLSL * shaders/sampling: refactor pl_shader_sample_ortho to make it smaller * meson: don't use declare_dependency for UCRT import lib ------------------------------------------------------------------- Sat Aug 12 12:09:42 UTC 2023 - llyyr.public@gmail.com - Update to version 6.292.0+158~git20230811.e9043c5: * shaders/film_grain_av1: fix name collision on 4:4:4 ------------------------------------------------------------------- Thu Aug 10 20:49:20 UTC 2023 - llyyr.public@gmail.com - Update to version 6.292.0+157~git20230809.2af3c56: * tools/glls_preproc: use correct shader asprintf * README: more minor fixes * tests/fuzz: add pl_options_load fuzzer * tests/fuzz: fix various issues * README: fix minimum vulkan version * README: add github sponsors link * README: rewrite marketing blurbs * README: historical revisionism * README: remove obsolete sponsorship section * README: document options.h * demos/plplay: allow pasting/copying settings from clipboard * demos/window: support clipboard copy/paste * demos/plplay: add raw settings dump * demos/plplay: switch to pl_options * options: add new options parsing API * pl_string: add pl_str_split_chars * pl_alloc: support negative indices in PL_ARRAY_* * tests: add REQUIRE_STREQ ------------------------------------------------------------------- Mon Aug 07 17:01:29 UTC 2023 - llyyr.public@gmail.com - Update to version 6.292.0+139~git20230807.95d44fb: * vulkan/context: don't load synchronization2 layer * shaders/sampling: improve numerical accuracy of antiringing * shaders/custom: add support for NAMED parameters * shaders/sampling: redesign polar anti-ringing shader * renderer: fix outdated comment * shaders/sampling: enable antiringing for polar downscaling * shaders/sampling: fix stray parameter * shaders/sampling: optimize/improve polar anti-ringing ------------------------------------------------------------------- Mon Aug 07 04:15:20 UTC 2023 - llyyr.public@gmail.com - Update to version 6.292.0+131~git20230806.a09b834: * common: fix PL_PRINTF nonnull annotation * shaders/custom: formatting (cosmetic) * demos/plplay: switch to new filters API * renderer: soft-deprecate old filter configuration API * filters: add "linear" pseudo-alias for bilinear * filters: add extra aliases to pl_filter_configs/functions * filters: avoid unnecessary double precision * filters: fix description on mitchell_clamp * filters: fix comment on spline16/36/64 * filters: fix box window * filters: remove ancient aliases * filters: remove slightly misleading comment * filters: add pl_filter_functions/configs * filters: move pl_filter_oversample to filters.h * filters: add pl_filter_config usage semantics * filters: error out on opaque kernels/windows * filters: refactor filter configuration * renderer: reprioritize default frame mixers * renderer: fix typo (cosmetic) * renderer: add safe params to PL_RENDER_DEFAULTS * shaders/icc: switch pl_icc_params.size_r/g/b to int * colorspace: make pl_color_adjustment consistent with other params * shaders/colorspace: properly default to pl_tone_map_clip * gamut_mapping: fix stray comment (cosmetic) * shaders/sampling: lower default deband threshold * shaders/colorspace: clamp CR output to legal range * shaders/colorspace: fix comment * filters: fix comment (cosmetic) * shaders/colorspace: only visualize legal part of 3DLUT * meson: use python dependency instead of calling the script directly * swapchain: remove buggy metadata sanitization logic * shaders/colorspace: add pl_gamut_map_params.gamut_expansion * shaders/colorspace: don't use saturation mapping if disabled * gamut_mapping: remove redundant hueshift disabling logic * gamut_mapping: bypass gamut mapping for incompatible primaries * tests/colorspace: test gamut clipping functions * colorspace: add more pl_primaries functions * colorspace: fix pl_primaries_superset numerical inaccuracy * shaders/colorspace: increase default 3DLUT precision * gamut_mapping: add pl_gamut_map_softclip * tests/tone_mapping: increase test accuracy * gamut_mapping: refactor perceptual gamut mapping * gamut_mapping: protect against UB in softclip() * gamut_mapping: safety clamp on desat_bounded() * gamut_mapping: factor out hue shifting code * gamut_mapping: fix hue shift margin direction * colorspace: don't copy HDR levels to SDR output * demos/window: fix WIN32 check, we don't use os.h here * renderer: always set HDR levels from ICC profile * colorspace: match unknown target contrast to source * colorspace: tune HLG source to target HDR peak * ci: add -Wno-deprecated-declarations to clang jobs * ci: update to include demos * pl_thread_win32: initialize time variable before goto * tone_mapping: add pl_tone_map_linear_light * tests/gpu_tests: switch disco tex to rgba8 * opengl/gpu: move GLSL version clamping to pl_gpu * opengl/gpu: require GLSL 140+ for SSBOs in pl_gpu * tests/gpu_tests: split off user shader tests requiring SSBOs * opengl/gpu: require GLSL 420+ for compute shaders * tests/gpu_tests: use rgba8 for import test * tests/gpu_tests: don't hard-code import size * tests/opengl_surfaceless: remove redundant test * tests/gpu_tests: fix peak detection source data bug * vulkan/formats: remove unusable rxgxbxax10/12 * gpu: ensure planar textures are 2D * vulkan/context: bump debug_extra requirement * tests/vulkan: re-enable debug_extra * vulkan/context: disable debug_extra on older layers * vulkan/context: report debug layer version * vulkan/context: fix verbose/spammy best practices message * vulkan/context: enable synchronization validation * d3d11: fix leak of num_workgroups_buf buffer * README: update plplay screenshots * demos/plplay: update comment * demos/plplay: reword confusing message * demos/plplay: remove unnecessary var (cosmetic) * demos/plplay: fix initial clock drift/offset * demos/plplay: measure and report CPU timings * demos/plplay: rename ts_present (cosmetic) * demos/plplay: log EOF * utils/frame_queue: properly extend single-frame files * demos/plplay: render frames before waiting for PTS * demos/plplay: don't error if no future frames available * utils/frame_queue: don't suppress PL_QUEUE_MORE in point() * ci: remove gpu-strip job * shaders: suppress Wint-to-pointer-cast * demos/window: set timer resolution on Windows * pl_thread_win32: implement pl_thread_sleep * pl_clock: morph pl_clock_sleep into pl_thread_sleep * pl_clock: return boolean whether slept fully instead of time * renderer: don't overwrite misc img attributes in main scaler * renderer: properly update img->rect on free sampling ------------------------------------------------------------------- Sat Jul 29 15:38:01 UTC 2023 - llyyr.public@gmail.com - Update to version 6.292.0+38~git20230729.fcba744: * opengl/swapchain: glFlush on submit_frame() * meson: disable UCRT math usage on 32-bit Windows target * demos/plplay: make antiringing slider slower to adjust * shaders/sampling: enable antiringing for EWA scalers * shaders/sampling: rename dmax to dmin * shaders/sampling: use #pragma GLSL in EWA footer * shaders/sampling: slight refactor to polar_sample * demos/plplay: add ability to override rendering FPS * demos/plplay: stall render loop when frame mixing disabled * demos/plplay: add frame/timing statistics * demos/plplay: implement more robust timing loop * pl_clock: add pl_clock_sleep() * utils/frame_queue: add queue state introspection API * utils/frame_queue: bump max FPS estimate hard limit * utils/frame_queue: use doubles for PTS * utils/frame_queue: handle FPS updates more quickly * utils/frame_queue: dynamically increase PREFETCH_FRAMES * vulkan: add pl_vulkan_swapchain_params.disable_10bit_sdr * vulkan: fix crash without synchronization2 ------------------------------------------------------------------- Mon Jul 24 01:12:45 UTC 2023 - llyyr.public@gmail.com - Update to version 6.292.0+19~git20230723.1d70923: * vulkan/context: don't require synchronization2 * vulkan/command: add compatibility for pre-QueueSubmit2 * vulkan/command: add compatibility for pre-sync2 barriers * vulkan/command: drop redundant vk_ctx param from vk_cmd_* * vulkan/command: drop unused param from vk_sem_barrier * vulkan/command: add struct vk_ctx *vk to vk_cmdpool * filters: fix polar downscaling ------------------------------------------------------------------- Mon Jul 17 15:54:41 UTC 2023 - llyyr.public@gmail.com - Update to version 6.292.0+12~git20230717.e6a89f3: * shaders/colorspace: reverse LUT-less fallback logic * Revert "vulkan/pass: switch to dynamic rendering" * utils/libav: add pl_test_pixfmt_caps ------------------------------------------------------------------- Mon Jul 10 22:12:47 UTC 2023 - llyyr.public@gmail.com - Update to version v6.292.0+9~git20230710.9855b66: * shaders/sampling: don't antiring when not upscaling * tools/glsl_preproc: properly ensure uniqueness of names * docs: add documentation for GLSL subsystem * shaders/sampling: use #pragma GLSL for parts of polar shader * shaders/sampling: switch some samplers to pragma GLSL * shaders: add GLSL macro preprocessor * shaders: default to PL_STRIP_SHADERS * vulkan/utils_gen: move template to separate file ------------------------------------------------------------------- Fri Jul 07 23:32:50 UTC 2023 - llyyr.public@gmail.com - Update to version v6.292.0+1~git20230707.b959cab: * shaders/colorspace: also visualize iso-chroma lines * renderer: use saturation mapping for OSD * renderer: force linear TM for OSD * shaders/colorspace: implement saturation mapping fast path * shaders/colorspace: allow linear TM without state obj ------------------------------------------------------------------- Thu Jul 06 06:40:19 UTC 2023 - llyyr.public@gmail.com - Update to version 6.292.0~rc3+0~git20230705.6bdb786: * demos/plplay: add -h to enable high-quality preset * demos/plplay: fix indent (cosmetic) * renderer: ignore skip_anti_aliasing for contrast recovery * renderer: don't disable contrast recovery if no downscaler set * renderer: use pl_*_high_quality_params where appropriate * shaders/colorspace: add pl_*_high_quality_params for tone-mapping * renderer: move skip_caching_single_frame to correct section * renderer: enable peak detection by default * renderer: silently disable peak-detection if no SSBOs * renderer: update HDR peak at downscaled resolution * renderer: hook PL_HOOK_SCALED even on free sampling * renderer: remove unnecessary need_fbo force * shaders/colorspace: parallelize peak detection atomics * meson: use git describe --dirty ------------------------------------------------------------------- Tue Jul 04 21:06:23 UTC 2023 - llyyr.public@gmail.com - Update to version 6.291.0~rc2+4~git20230704.187bbbe: * demos/plplay: default use_icc_luma to enabled * demos/plplay: rename force_icc_luma to use_icc_luma * gamut_mapping: desaturate more aggressively * tests/tone_mapping: make gamut mapping test more verbose ------------------------------------------------------------------- Mon Jul 03 11:40:19 UTC 2023 - llyyr.public@gmail.com - Update to version 6.291.0~rc2+0~git20230703.e2e235a: * shaders/colorspace: allow non-host-readable peak detection SSBOs * gamut_mapping: soft-clip in RGB after mapping * gamut_mapping: factor out softclip function * gamut_mapping: add chromaticity margin to perceptual mode * gamut_mapping: greatly simplify perceptual tone mapping * Revert "gamut_mapping: clip to source gamut in perceptual mode" ------------------------------------------------------------------- Sun Jul 02 19:40:05 UTC 2023 - llyyr.public@gmail.com - Update to version 6.287.0~rc1+57~git20230702.363cada: * ci: define minimal macOS version * colorspace: improve pl_color_transfer_nominal_peak docs * colorspace: properly clamp HDR levels * colorspace: fix pl_nominal_luma_ex SDR contrast fallback * tests/colorspace: test pl_color_space_nominal_luma_ex * colorspace: document pl_hdr_metadata better * colorspace: introduce more PL_COLOR_* defines * colorspace: consider only max_luma a valid HDR10 set * colorspace: remove minimum max_luma safety clamp * colorspace: also allow using static metadata as fallback * utils/libav: strip bogus MDM values ------------------------------------------------------------------- Fri Jun 30 18:48:06 UTC 2023 - llyyr.public@gmail.com - Update to version 6.287.0~rc1+46~git20230630.a03718e: * pl_clock: use new helper * pl_clock: add clock helper * plplay: allow going down to 10 nits for target max luma * colorspace: allow going down to 10 nits for target max luma * meson: fix apiver table * plplay: add window impl selection * plplay: add -s software decoding option * plplay: add more flexible arg parsing * gamut_mapping: split perceptual cache pre/post hueshift * gamut_mapping: nuke thread-local cache hack * gamut_mapping: improve PQ EOTF LUT precision * shaders/colorspace: don't unconditionally clip input * gamut_mapping: clip to source gamut in perceptual mode * demos/plplay: drop removed setting * shaders/colorspace: remove hybrid_mix * gamut_mapping: add knee to perceptual hue shifting * gamut_mapping: nuke chroma_margin * gamut_mapping: multi-thread 3DLUT generation * pl_thread: fix return type of pl_thread_create * shaders/colorspace: adjust 3DLUT resolution * demos/plplay: bump up 3DLUT size limits * shaders/colorspace: add support for tricubic 3DLUT interpolation * shaders: implement tricubic LUT interpolation * shaders: interleave bicubic sampling with mixing * common: slightly increase accuracy of pl_matrix3x3_invert * colorspace: fix precision of numeric constant * gamut_mapping: limit precision to avoid float diverging * gamut_mapping: raise precision cutoffs * demos/plplay: fix 3DLUT size bounds * meson: fix building with vulkan disabled and non-standard header location * meson: workaround meson bug in get_define() ------------------------------------------------------------------- Tue Jun 27 16:30:11 UTC 2023 - llyyr.public@gmail.com - Update to version 6.287.0~rc1+15~git20230627.8ceb7a5: * shaders/colorspace: avoid oversaturating tone-mapped colors ------------------------------------------------------------------- Mon Jun 26 09:17:16 UTC 2023 - llyyr.public@gmail.com - Update to version 6.287.0~rc1+14~git20230624.9b4e561: * gamut_mapping: fix compile warning * gamut_mapping: disable hue shifting on extreme inputs * demos/plplay: force HDR primaries when forcing primaries * demos/plplay: don't override HDR primaries ------------------------------------------------------------------- Wed Jun 21 10:46:47 UTC 2023 - llyyr.public@gmail.com - Update to version 6.287.0~rc1+10~git20230621.d25b82b: * shaders/icc: fix black point display scale * shaders/icc: print more ICC profile diagnostics ------------------------------------------------------------------- Wed Jun 21 04:51:40 UTC 2023 - llyyr.public@gmail.com - Update to version 6.287.0-rc1+8~git20230620.00d19d2: * renderer: fix corner rounding on flipped targets * utils/frame_queue: delay first frame until start PTS * renderer: correctly normalize distortion dimensions * renderer: correctly rotate distortion canvas * common: don't promote to double unnecessarily * common: prefix local variable with _ * meson: make header compile test more strict * ci: don't double-define PL_STRIP_SHADERS * shaders/colorspace: scale down saturation when raising brightness * shaders/colorspace: move implementation of pl_shader_color_map into the library ------------------------------------------------------------------- Sat Jun 17 08:23:36 UTC 2023 - llyyr.public@gmail.com - Update to version 5.264.0+296~git20230615.3df4e60: * demos/plplay: hook up contrast recovery options * renderer: hook up contrast recovery * renderer: refactor sampler selection * shaders/colorspace: add HDR contrast recovery * common: switch to pl_shader_color_map_ex * shaders/colorspace: add pl_shader_color_map_ex * shaders/icc: fix gamma estimation for very strange profiles ------------------------------------------------------------------- Wed Jun 07 01:08:05 UTC 2023 - llyyr.public@gmail.com - Update to version 5.264.0+289~git20230606.d9ad4c3: * vulkan/context: fix typo * tests/gpu_tests: don't unnecessarily print polar output * tests/gpu_tests: fix and rewrite renderer tests * shaders/sampling: fix pl_shader_sample_bicubic on GLES * demos/plplay: add distortion settings * tests/gpu_tests: add pl_distort_params test * renderer: add pl_render_params.distort_params * shaders/custom: add PL_HOOK_PRE_OUTPUT * common: add pl_matrix2x2_rotation * shaders/sampling: add pl_shader_distort * common: add some missing matrix-related functions * renderer: don't invalidate cache on corner_rounding change ------------------------------------------------------------------- Thu Jun 01 15:03:19 UTC 2023 - llyyr.public@gmail.com - Update to version 5.264.0+277~git20230530.e684619: * renderer: simplify need_fbo check * shaders: slightly improve clarity of code flow * shaders: correctly mark flexible shaders as such * meson: prefer UCRT math functions ------------------------------------------------------------------- Tue May 30 09:47:39 UTC 2023 - llyyr.public@gmail.com - Update to version 5.264.0+273~git20230530.c79f26c: * gamut_mapping: replace PQ EOTF by LUT * tests/tone_mapping: add 3DLUT generation benchmark * meson: workaround has_header_symbol ignoring include_directories * meson: refactor Vulkan loader/headers search * utils/libav: suppress unused variable warning ------------------------------------------------------------------- Sun May 28 22:48:17 UTC 2023 - llyyr.public@gmail.com - Update to version 5.264.0+268~git20230528.b8494ff: * utils/libav: support planar texture interop * utils/libav: support frame locking * d3d11/tex: fix initial data upload for emulated texture formats * shaders/custom/mpv: log user shader source ------------------------------------------------------------------- Fri May 26 19:11:27 UTC 2023 - llyyr.public@gmail.com - Update to version 5.264.0+264~git20230526.20d63f7: * shaders/colorspace: rotate isohue vectors with angle * tests/tone_mapping: add gamut mapping primary round-trip test * gamut_mapping: improve perceptual tone-mapping ------------------------------------------------------------------- Fri May 26 10:11:33 UTC 2023 - llyyr.public@gmail.com - Update to version 5.264.0+261~git20230524.541c85e: * renderer: fix alpha blending output * renderer: properly handle out-of-bounds crops * renderer: fix non-image case clamping * utils/libav: handle mistagged YCbCr files * renderer: refactor/fix frame acquire/release logic ------------------------------------------------------------------- Fri May 19 06:58:49 UTC 2023 - llyyr.public@gmail.com - Update to version 5.264.0+256~git20230516.a28c2b4: * vulkan: switch (un)lock_queue to uint32_t * tone_mapping: allow st2094-40 for no-op TM * tests: add test for corner rounding and background blending * demos/plplay: add corner rounding GUI setting * renderer: add corner rounding feature ------------------------------------------------------------------- Sun May 14 05:21:42 UTC 2023 - llyyr.public@gmail.com - Update to version 5.264.0+251~git20230513.6bd1217: * d3d11: remove static texels count limit * d3d11/tex: destroy texture on error ------------------------------------------------------------------- Sat May 13 08:31:23 UTC 2023 - llyyr.public@gmail.com - Update to version 5.264.0+249~git20230512.b7ceacd: * shaders: switch to textureLod() properly ------------------------------------------------------------------- Fri May 12 07:28:38 UTC 2023 - llyyr.public@gmail.com - Update to version 5.264.0+248~git20230511.d0957d4: * shaders: switch to textureSize() ------------------------------------------------------------------- Thu May 11 07:43:25 UTC 2023 - llyyr.public@gmail.com - Update to version 5.264.0+247~git20230510.fa0b73a: * utils/libav: update for lavu API changes * utils/frame_queue: fix off-by-one error in EOF determination * utils/frame_queue: properly hold last interpolated frame * utils/frame_queue: treat provided vsync info as authoritative * utils/frame_queue: don't interpolate incomplete frames * renderer: add "linear" frame mixer ------------------------------------------------------------------- Tue May 09 21:26:29 UTC 2023 - llyyr.public@gmail.com - Update to version 5.264.0+241~git20230508.2c94c04: * utils/libav: add pl_get_mapped_avframe * demos/plplay: fix UB avframe dereference * utils/libav: fix outdated comment ------------------------------------------------------------------- Thu May 04 23:57:36 UTC 2023 - llyyr.public@gmail.com - Update to version 5.264.0+238~git20230504.6e7bb73: * d3d11: disable IDXGIInfoQueue usage if dxgidebug.h is incomplete * d3d11: use __typeof__ instead of custom PFN_CREATE_DXGI_FACTORY * d3d11: do not report live object on pl_d3d11_destroy on external device * d3d11: add more message queue flush points * d3d11: rename d3dmsg to dxgi_msg for consistency * d3d11: use IDXGIInfoQueue instead ID3D11InfoQueue * plplay: do not use more than 16 threads * vulkan: add pl_vulkan_params.extra_queues * utils/libav: move pl_dovi_metadata to priv struct * utils/libav: turn `pl_frame.user_data` into a struct * d3d11/pass: add a break when binding is found * d3d11/pass: fix UAV register allocation * d3d11/pass: fix samplers count check in register allocation * vulkan/utils_gen: fix extension promotion check * vulkan: fix vkCmdWriteTimestamp2 symbol name * vulkan/utils_gen: fix VK_API_VERSION macro * vulkan/context: fix nullptr dereference in feature check * meson: set pkg-config vars in declare_dependency * vulkan/context: check required features explicitly * dispatch: enable more subgroup operations * gpu: also log stack trace on shader miscompilation * common: also log to stderr on pl_debug_abort() * vulkan: revert back to 1.2 minimum version * vulkan/formats: respect API version when probing formats * Revert "vulkan/gpu: drop redundant SPIR-V versions" * vulkan: support VK_KHR_dynamic_rendering * vulkan/context: support VK_LAYER_KHRONOS_synchronization2 * vulkan: add support for VK_KHR_synchronization2 * vulkan/common: remove unused event-related functions * vulkan/context: fix extension loading on pl_vulkan_import * vulkan: move header definition (style) * vulkan/context: remove superfluous casts and use fixed type specifiers * vulkan/context: use VK_API_VERSION_MAJOR instead of deprecated VK_VERSION_MAJOR * pl_thread_win32: use __restrict to make it compatible with C++ * d3d11: reduce indent of validation messages to make it more readable with backtrace * d3d11: remove storage limit * d3d11: reuse allocated memory as much as possible when flushing messages * d3d11: always clear messages, even on error * d3d11: workaround bug in ID3D11InfoQueue::GetNumStoredMessages * d3d11: use fixed type printf specifier * d3d11: do not call pl_d3d11_flush_message_queue recursively when it errors ------------------------------------------------------------------- Tue Apr 25 23:20:11 UTC 2023 - llyyr.public@gmail.com - Update to version 5.264.0+197~git20230425.2e2f597: * vulkan/context: fix driver version display on import * vulkan: disable unworkable video decoding validation * gpu: add pl_debug_abort on compilation failure * d3d11: fix ID3D11Device5::CreateFence call to init fence correctly * .gitignore: add .cache * meson: set library prefix to `lib` always * vulkan/tex: move function definitions to library * meson: add missing glad_dep definition when opengl is disabled * meson: generate pkg-config file with PL_STATIC * meson: define PL_STATIC when linking to static lib ------------------------------------------------------------------- Mon Apr 24 22:21:49 UTC 2023 - llyyr.public@gmail.com - Update to version 5.264.0+187~git20230424.4fb31ab: * vulkan: infer correct VkImageAspectFlags when wrapping * vulkan: move header definition (style) * vulkan/context: explicitly clear queried feature structs * vulkan/context: set correct sType on vk->features * meson: suppress warnings about unsupported args with MS link * meson: allow Vulkan discovery by using VULKAN_SDK env * win32: add compatibility between posix and MS SDK * meson: add missing vulkan_headers dependency on bench * meson: disable CRT deprecation warnings * meson: define _USE_MATH_DEFINES in whole build instead of one by one * tests: use standard timespec_get * plplay: add PL_BASENAME for Windows compatibility * common: remove unneded includes * api: decorate all API functions with PL_API * d3d11/utils: add pl_debug_abort for validation similar as done for Vulkan * common: make pl_debug_abort() to always evaluate to non-empty statement * meson: do not exclude-libs=ALL if sanitizers are enabled * ci: enable shaderc and glslang * ci: instead of disabling code just disable MSAN with attribute * ci: merge UBSAN and ASAN builds * ci: add -Werror to clang builds too * meson: handle test dependencies in more fine-grained way * meson: remove unused variable * plplay: use pl_thread * meson: remove pl_threads dependency on internal config * thread/win32: implement thread creation for win32 * thread: add abstraction for actual threads * vulkan/context: print API version on device selection * vulkan/context: add recommended features from lavu hwcontext * vulkan/pass: switch to dynamic rendering * vulkan: switch to VK_KHR_synchronization2 * vulkan/gpu: drop redundant features/version checks * vulkan/context: add and expand pl_vulkan_required_features * vulkan/context: simplify feature handling * vulkan/utils: add feature normalization helper * vulkan/utils: add vk_chain_alloc helper ------------------------------------------------------------------- Sat Apr 22 18:43:15 UTC 2023 - llyyr.public@gmail.com - Update to version 5.264.0+151~git20230421.efdfbbf: * vulkan/gpu: drop redundant SPIR-V versions * vulkan: include maintenance4 in recommended features * vulkan: drop promoted extensions * vulkan: drop back-compat defines * vulkan: bump minimum version to 1.3 * vulkan: add PL_VK_MIN_VERSION * vulkan/utils: parse extension promotion data from vk.xml * vulkan/context: always initialize all queues * vulkan/context: work around spec bug in VUID * vulkan/tex: pass correct DRM format modifier to fmt check * vulkan/malloc: use dynamic maximum page size * vulkan/malloc: print allocation source * gpu: log source of pl_tex_recreate * vulkan/command: filter out redundant access flags * vulkan/buf: drop redundant host barriers * vulkan/command: fix transitive image barrier dependencies ------------------------------------------------------------------- Sat Apr 15 15:10:00 UTC 2023 - llyyr.public@gmail.com - Update to version 5.264.0+135~git20230414.a98fed5: * vulkan/context: clean up queue lock mutexes * vulkan/context: init queue locks for all queues * gamut_mapping: remove unused function * gamut_mapping: speed up ingamut() slightly * demos/plplay: clamp maximum luminance to legal range * colorspace: allow wider range of HDR metadata * shaders/icc: detect v4 perceptual intent black point * demos/plplay: make LUT visualization rectangular * demos/plplay: update for new gamut mapping API * tests/gpu_tests: drop redundant tests * shaders/colorspace: rename tone map shader object * shaders/colorspace: drop default LUT size to 256 * shaders/colorspace: add 3DLUT visualization code * shaders/colorspace: complete refactor of tone mapping pipeline * shaders/colorspace: fix luma clamping * tests/tone_mapping: add rudimentary gamut mapping test * gamut_mapping: add new gamut mapping API * colorspace: add IPTPQc4 model definitions * common: add pl_smoothstep * common: simplify PL_CMP ------------------------------------------------------------------- Mon Apr 10 14:30:13 UTC 2023 - llyyr.public@gmail.com - Update to version 5.264.0+115~git20230410.9faea1b: * utils/libav: fix AVFrame <-> AVBufferRef mapping * tests/opengl: also test highest GLES in CI_MAXGL * tests/opengl_surfaceless: reduce unnecessary GL testing * dispatc: force explicit LOD when texturing * shaders/sampling: simplify bicubic shader * shaders/sampling: cache sh_bind results * shaders/deinterlacing: cache pos/pt * shaders/colorspace: drop redundant memory barriers * gpu: fix whitespace * shaders/lut: log LUT generation CPU time * shaders/colorspace: ignore small deviations in peak * shaders/colorspace: clamp detected peak to sane value * shaders/colorspace: reduce string print boilerplate * shaders: add sh_var_mat3 and SH_MAT3 helpers * colorspace: avoid NAN on negative PQ inputs * tests/bench: fix LUT tone mapping test * utils/frame_queue: don't estimate fps when PTS are not monotonically increasing * utils/frame_queue: use fmaxf for float ------------------------------------------------------------------- Fri Apr 07 03:03:07 UTC 2023 - llyyr.public@gmail.com - Update to version 5.264.0+97~git20230404.e3fce6a: * common: typedef pl_matrix3x3 etc. structs * vulkan/swapchain: work around nvidia swapchain resizing bug * vulkan: add VkPhysicalDeviceProperties to vk_ctx * ci: use clang also for ASAN * ci: use lld along with clang * ci: update jammy image to include lld * ci: move meson build command to new line * ci: do not build demos in coverage build * Revert "ci: disable building demos with msan/ubsan" ------------------------------------------------------------------- Fri Mar 31 07:38:00 UTC 2023 - llyyr.public@gmail.com - Update to version 5.264.0+88~git20230328.97d008b: * log: add missing backtrace header in Windows code path * log: fix type of HMODULE * demos/colors: add support for escaping out of demo ------------------------------------------------------------------- Sat Mar 25 00:57:06 UTC 2023 - llyyr.public@gmail.com - Update to version 5.264.0+85~git20230323.0f36b01: * docs: fix typo in website * pl_alloc: reduce code duplication * shaders: pool small temporary allocations * shaders: fix sh_desc texel buffer handling * dispatch: minor optimizations of shader generation * dispatch: don't unnecessarily reset shaders twice * shaders: don't strdup sh_subpass info steps * pl_alloc: nuke pl_ref * shaders: remove SH_TMP macro * shaders: simplify SH_TMP refcounting system * shaders: defer pl_asprintf on shader variables * dispatch: refactor add_buffer_vars sorting * shaders/custom: re-use sh_var() etc. * shaders: add sh_attr * shaders: stop using pl_shader_res internally * demos/plplay: refactor pass display * demos/plplay: switch to pl_shader_info * renderer: improve description of frame mixing shader * renderer: fix possible memleak * shaders: add pl_shader_info to replace pl_dispatch_info.shader * shaders: correctly ref objs in sh_subpass * pl_alloc: fix pl_free_children * pl_alloc: don't downsize in PL_ARRAY_RESIZE * shaders/colorspace: simplify tone map description * log: ensure pl_log_stack_trace is never inlined * common: add PL_NOINLINE * d3d11: print stack trace on debug messages * log: cast FARPROC to void* first to suppress GCC warning * log: add pl_log_stack_trace support on Windows * log: skip the first frame when using execinfo * vulkan: gurad against possible stack buffer overflow ------------------------------------------------------------------- Fri Mar 17 09:27:23 UTC 2023 - llyyr.public@gmail.com - Update to version 5.264.0+54~git20230316.2f629a8: * ci: only test one GL version for repeat GPU jobs * ci: add gpu-strip job * shaders: allow using unsigned integer identifiers * shaders/sampling: parametrize ident_t * shaders/lut: parametrize ident_t * shaders/icc: parametrize ident_t * shaders/film_grain: parametrize ident_t * shaders/dithering: parametrize ident_t * shaders/deinterlacing: parametrize ident_t * shaders/custom/mpv: parametrize ident_t * shaders/colorspace: parametrize ident_t * renderer: parametrize ident_t * gpu/utils: parametrize ident_t * dispatch: parametrize ident_t * shaders: parametrize `ident_t` printf fmt and initializer * shaders: require uniqueness of buffers * renderer: always load frame mixing weight * dispatch: pass position vertex by index * shaders: assert name in sh_fresh * vulkan/context: remove old work-around * format: remove zero check from print_hex * format: cast to ushort before calling print_hex * colorspace: don't nuke HDR10 minimum in pl_color_space_infer * shaders/colorspace: rename misleading variable * shaders/colorspace: improve description of tone-mapping shader * meson: bump minimum version to 0.63 for prefer_static * format: fix %hx formatting * shaders: refactor shader identifier naming * format: support %hx in *printf_c * colorspace: ensure min_luma is positive * renderer: fix ICC profile tone-mapping logic * shaders/colorspace: highlight sub-black region in visualize_lut * shaders/colorspace: fix linear GLSL implementation ------------------------------------------------------------------- Tue Mar 14 16:47:31 UTC 2023 - llyyr.public@gmail.com - Update to version 5.264.0+21~git20230314.a307eae: * shaders/icc: remove left-over debug junk * shaders/icc: print error when failed detecting icc bp * shaders/icc: put pl_log into icc priv * shaders/icc: fix misleading warning message * tests: move include tests to separate directory * meson: do not link include tests * opengl/context: fix log message * opengl: drop redundant extension / capability checks * shaders: remove back-compat for pre-GLSL 130 * shaders: nuke sh_tex_fun ------------------------------------------------------------------- Mon Mar 13 20:05:16 UTC 2023 - llyyr.public@gmail.com - Update to version 5.264.0+15~git20230313.8359352: * opengl/context: fix log message * opengl: drop redundant extension / capability checks * shaders: remove back-compat for pre-GLSL 130 * shaders: nuke sh_tex_fun * shaders: remove sh_bvec * opengl: bump minimum version to GLSL 130 * tests/opengl: drop older opengl test * README: add hardware requirements section * README: remove gentoo-specific section ------------------------------------------------------------------- Mon Mar 13 17:22:35 UTC 2023 - llyyr.public@gmail.com - Update to version 5.264.0+6~git20230313.a329d4a: * vulkan: drop misc #ifdefs * vulkan: drop #ifdef VK_VERSION_1_3 * vulkan: bump minimum build dependency to 1.3 * 3rdparty: update deps * global: remove v4 deprecations * meson: bump major ver * RELEASING: update release guidelines * renderer: fix dither depth message * glsl/utils: fix SPIR-V to Vulkan version mapping * shaders/dithering: describe bit depth in dither pass ------------------------------------------------------------------- Sat Mar 11 08:01:17 UTC 2023 - llyyr.public@gmail.com - Update to version 5.264.0-rc1+1~git20230310.3bdfb69: * all: add a PL_HAVE_DOVI flag to control DoVi code from being built * vulkan/gpu: drop redundant #ifdef * renderer: log dither bit depth * vulkan/pass: emit correct barrier when load_target is true * vulkan/context: correctly enable VK_EXT_validation_features * vulkan/context: also look for debug ext inside debug layer * vulkan/context: make VK_EXT_validation_features non-conditional * renderer: fix frame reuse when ICC profile is used * shaders/colorspace: add pl_color_map_params.show_clipping * shaders/colorspace: move unnecessarily scoped variable * shaders/colorspace: make dst_max dynamic * shaders/colorspace: remove hard-clamp * shaders/colorspace: add frame histogram measurement * vulkan: link VkPhysicalDeviceMaintenance4Features only on vulkan >= 1.3 * demos: fix build on macOS with older deployment targets * shaders/colorspace: fix scene change hysteresis (again) * shaders/colorspace: reset peak detection on params change ------------------------------------------------------------------- Wed Mar 08 14:07:15 UTC 2023 - llyyr.public@gmail.com - Update to version 5.229.1+376~git20230307.e43bb79: * shaders/colorspace: fix pl_peak_detect_params.minimum_peak * Revert "shaders/colorspace: avoid clipping on pans/fades" * renderer: fix alpha assertions * shaders/colorspace: add pl_color_map_params.visualize_rect * colorspace: always sanitize static HDR10 metadata * colorspace: ignore obviously broken HDR metadata ------------------------------------------------------------------- Tue Mar 07 00:33:14 UTC 2023 - llyyr.public@gmail.com - Update to version 5.229.1+370~git20230306.0fbda59: * tests/gpu_tests: add peak detect params test * renderer: ignore deprecated/removed param * renderer: always treat peak_detect_params as non-trivial * renderer: disable peak detection when redundant or unused * demos/plplay: allow tuning tone mapping data source * shaders/colorspace: add tone-map nits to shader description * shaders/colorspace: allow tuning HDR metadata source * utils/dolbyvision: set CIE Y metadata fields * shaders/colorspace: check for SSBO support in peak detect shader * shaders/colorspace: measure PQ Y instead of MaxRGB * shaders/colorspace: switch to pl_color_space_nominal_luma_ex * demos/plplay: switch to pl_color_space_nominal_luma_ex * tone_mapping: add pl_tone_map_params.input_avg * colorspace: add pl_color_space_nominal_luma_ex * colorspace: add pl_hdr_metadata_type * tone_mapping: move pl_hdr_scaling / pl_hdr_rescale to colorspace.h * colorspace: add PQ Y values to pl_hdr_metadata * renderer: always force strict reuse on single frames * renderer: do color management before frame mixing * renderer: move color management to pass_convert_colors * spirv: use highest supported SPIR-V version * vulkan: enable maintenance4 for LocalSizeId execution mode support * spirv: allow to control target SPIR-V version * meson: respect prefer_static option for glslang * glslang: do not link things we don't use * glslang: do not mix static libraries with shared ones * glslang: use pl_static_mutex instead pthread_mutex_t * pl_thread_pthread: fix literal type * os: add new header for OS detection * thread: do not use PL_MIN * common: remove PL_CHECK_ERR * gpu: check for null to avoid crashes when closing after error ------------------------------------------------------------------- Mon Mar 06 12:46:46 UTC 2023 - llyyr.public@gmail.com - Update to version 5.229.1+338~git20230305.d5b6bb5: * shaders/colorspace: make dst_max dynamic in visualize_tone_map * tone_mapping: remove left-over junk * vulkan/formats: reduce verbosity of storable fmt warning * shaders/colorspace: fix scene change hysteresis * shaders/colorspace: remove pl_peak_detect_params.overshoot * shaders/colorspace: avoid clipping on pans/fades * shaders/colorspace: always default to PL_TONE_MAP_HYBRID * Revert "colorspace: pass scene_max through luma coeffs" * Revert "shaders/colorspace: implement ST2094-40 MaxSCL gain" * demos/plplay: show the HDR peak detection options always * demos/plplay: use metadata from the frame directly ------------------------------------------------------------------- Sun Mar 05 04:19:41 UTC 2023 - llyyr.public@gmail.com - Update to version 5.229.1+327~git20230303.2b2de17: * vulkan/malloc: also dump memory statistics on uninit * vulkan/malloc: track debug tags when allocating memory * vulkan/malloc: improve memleak message * shaders/colorspace: fix peak detection memory leak * shaders/colorspace: add pl_get_detected_hdr_metadata * shaders/colorspace: move `allow_delayed` to pl_peak_detect_params * shaders/colorspace: rewrite peak detection shader * tone_mapping: fix inverse tone mapping discontinuity * shaders/colorspace: use linear stretch only if requested * tone_mapping: reduce strength of knee clamping ------------------------------------------------------------------- Fri Mar 03 08:15:21 UTC 2023 - llyyr.public@gmail.com - Update to version 5.229.1+317~git20230302.2dea081: * ci: use the same compiler for C++ * tests: add include test in C++ * vulkan: fix for C++ compilation * utils/dav1d: split declarations from definitions * utils/libav: split declarations from definitions * tone_mapping: add peak-dependent spline slope tuning ------------------------------------------------------------------- Thu Mar 02 03:48:10 UTC 2023 - llyyr.public@gmail.com - Update to version 5.229.1+311~git20230301.3a6fa54: * tone_mapping: fix typo in SMPTE tone mapper names * tone_mapping: refactor spline slope selection * tone_mapping: refactor st2094 knee point selection * tone_mapping: fix outdated comment * shaders/colorspace: tune luma-dependent desat by ratio * shaders/colorspace: don't switch to RGB for pure BPC ------------------------------------------------------------------- Mon Feb 27 05:24:51 UTC 2023 - llyyr.public@gmail.com - Update to version 5.229.1+305~git20230226.2836ded: * demos/plplay: track external fullscreen changes * demos/window: fix typo * demos/window: fix fullscreen switch on SDL * demos/plplay: add separate controls for bits struct * demos/plplay: use constant step of 5 mcd/m² for min_luma * demos/plplay: prioritize manual HDR levels override over dynamic metadata * shaders/colorspace: simplify dynamic LUT generation * shaders/colorspace: simplify tone-map visualization * renderer: disable tone-mapping params for overlays * tone_mapping: prefer spline over st2094-40 for non-HDR10+ * tone_mapping: refactor pl_tone_map_spline * tone_mapping: improve knee point selection * plplay: forward dynamic brightness changes to display * swapchain/vulkan: properly remember the size * demos/plplay: add fullscreen mode * d3d11/swapchain: pass metadata struct as a pointer * d3d11/swapchain: reset HDR metadata if it hasn't been applied * demos/plplay: communicate detected CSP values to user * demos/plplay: major refactor of HDR override section * d3d11/swapchain: strip unsupported HDR10+ metadata * vulkan/swapchain: strip unsupported HDR10+ metadata * colorspace: add pl_color_space_nominal_luma to replace nominal_min/max * colorspace: pass scene_max through luma coeffs * ci: raise process limits for llvmpipe * shaders/colorspace: mark src-dependent shader vars dynamic * shaders: add SH_FLOAT_DYN etc. helpers * tests/gpu_tests: avoid rounding error in pl_planar_tests * tests/string: add pl_str_append_asprintf_c test * dispatch: only execute string templates when compiling * dispatch: switch to pl_str_builder * shaders: switch to pl_str_builder * pl_string: add pl_str_builder * format: add pl_str_append_memprintf_c * format: use pl_str_append_raw * pl_string: add pl_str_append_raw ------------------------------------------------------------------- Thu Feb 23 23:54:13 UTC 2023 - llyyr.public@gmail.com - Update to version 5.229.1+270~git20230223.6f8510f: * vulkan/utils_gen: prefer mingw env path * utils/libav: don't mix declarations and code * utils/libav: add missing include for LIBAVCODEC_VERSION_INT * make vk_device_extensions const * vulkan: make vk_formats static * swapchain: Put pl_sw_fns struct into .data.rel.ro ------------------------------------------------------------------- Thu Feb 23 19:08:16 UTC 2023 - llyyr.public@gmail.com - Update to version 5.229.1+264~git20230223.18d8ddb: * vulkan/context: fix destruction message * vulkan/common: remove dead #define * swapchain: hide implementation inside PL_PRIV * utils/dolbyvision: ignore brightness metadata for profile 4 * dispatch: purge stale cache entries ------------------------------------------------------------------- Tue Feb 21 23:24:06 UTC 2023 - llyyr.public@gmail.com - Update to version 5.229.1+259~git20230221.dc6c465: * glsl/shaderc: add spv disassembly in PL_LOG_TRACE * ci: drop llvmpipe hack * vulkan/command: switch to comand semaphores for vk_sem * vulkan/command: switch from VkFence to VkSemaphore * tests/gpu_tests: disable ICC profiles test on GLES2 * shaders/icc: add missing lut check * tests/bench: add some error checking * d3d11: enable sampling from integer textures * shaders/film_grain_av1: fix left shift of negative value * common: add nonnull attribute PL_PRINTF * shaders/film_grain_av1: add missing null check for LUT * shaders/film_grain_av1: remove sh_lut_quiet ------------------------------------------------------------------- Tue Feb 21 16:14:15 UTC 2023 - llyyr.public@gmail.com - Update to version 5.229.1+247~git20230220.8206a0b: * tests/vulkan: use proper init type for handle ------------------------------------------------------------------- Mon Feb 20 13:22:57 UTC 2023 - llyyr.public@gmail.com - Update to version 5.229.1+246~git20230220.2f48906: * vulkan/utils: assert that struct sizes are known ------------------------------------------------------------------- Sun Feb 19 22:59:55 UTC 2023 - llyyr.public@gmail.com - Update to version 5.229.1+245~git20230219.1ede859: * README: add libdovi optional dependency * vulkan/utils_gen: fix build on vulkan-headers 1.3.241 * utils/libav_internal: use pl_hdr_metadata_from_dovi_rpu when mapping from AVFrame * utils: add dolbyvision.h and pl_hdr_metadata_from_dovi_rpu * meson: add libdovi dependency * utils/libav: add pl_frame_map_avdovi_metadata * tests: check pl_render_image errors * renderer: add pl_renderer_get_errors * renderer: convert disable_* to single bitfield with all errors * shaders/custom: add signature to pl_hook * ci: detect leaks * plplay: do not use deprecated aliases * demos/plplay: change how color metadata are handled * demos/plplay: allow controlling color space hint * colorspace: include nominal min/max in pl_color_space_merge * demos/glfw: fix initial swapchain size * d3d11/swapchain: copy missing fields in map_pl_csp_to_d3d11 * gpu: move global variable closer to usage * d3d11: define guids in one translation unit * stubs: add header includes to stubs * d3d11: add missing PL_API macros * meson: set visibility hidden with option ------------------------------------------------------------------- Sat Feb 18 17:15:57 UTC 2023 - llyyr.public@gmail.com - Update to version 5.229.1+223~git20230218.3dd5092: * shaders/lut: don't spam LUT update message for dynamic LUTs * vulkan/buf: emit correct host read/write dependencies * config: fix config.h API definitions * common: don't unconditionally include all public headers * common: move GCC visibility pragmas to PL_API_BEGIN/END * shaders/deinterlacing: add missing PL_API macros ------------------------------------------------------------------- Sat Feb 18 02:23:49 UTC 2023 - llyyr.public@gmail.com - Update to version 5.229.1+217~git20230217.0254012: * vulkan/malloc: fix double-unlock of mutex * renderer: suppress dynamic HDR metadata in frame mixer * tone_mapping: don't use BT.2446a for HDR<->HDR conversions * tone_mapping: don't pick ST2094 for inverse tone-mapping * shaders/colorspace: add tone mapping visualization * shaders/colorspace: move margin to peak detection shader * tests/tone_mapping: also test pure BPC generation * tests/gpu_tests: add more tone-mapping tests * shaders/colorspace: use perceptually linear pure BPC * tone_mapping: improve default BPC method * tone_mapping: fix ST2094-40 for D != T ------------------------------------------------------------------- Wed Feb 15 22:37:07 UTC 2023 - llyyr.public@gmail.com - Update to version 5.229.1+206~git20230215.36e4536: * gpu: require pl_buf_copy src != dst * vulkan/buf: fix whitespace * vulkan/gpu: add vk_gpu_idle_callback * vulkan/pass: fix thread unsafe static array ------------------------------------------------------------------- Wed Feb 15 15:40:03 UTC 2023 - llyyr.public@gmail.com - Update to version 5.229.1+202~git20230214.f2c4da9: * tests/gpu_tests: use MEMEQ for pl_planar_tests * tests: remove unneeded feq() function * tests/vulkan: switch to new REQUIRE macros * tests/utils: switch to new REQUIRE macros * tests/tone_mapping: switch to new REQUIRE macros * tests/string: switch to new REQUIRE macros * tests/opengl_surfaceless: switch to new REQUIRE macros * tests/gpu_tests: switch to new REQUIRE macros * tests/libav: switch to new REQUIRE macros * tests/icc: switch to new REQUIRE macros * tests/filters: switch to new REQUIRE macros * tests/dummy: switch to new REQUIRE macro * tests/dav1d: switch to new REQUIRE macros * tests/common: switch to new REQUIRE macros * tests/colorspace: switch to new REQUIRE macros * tests: add REQUIRE_MEMEQ() macro * tests: add REQUIRE_FEQ() macro * tests: add REQUIRE_CMP() macro * tests: refactor REQUIRE() into macro * tests/dummy: make less verbose * tests/gpu_tests: fix missing semicolon * gitignore: ignore 3rdparty dir * tone_mapping: avoid over-brightening in ST2094 * tone_mapping: default to ST2094 when metadata present * tone_mapping: add SMPTE ST2094-10 and ST2094-40 Annex B * shaders/colorspace: implement ST2094-40 MaxSCL gain * shaders/colorspace: mark tone-mapping LUT as dynamic * tone_mapping: make HDR metadata available to tone-mappers * tone_mapping: fix comment on spline implementation * utils/libav: add `pl_map_hdr_metadata` * utils/libav: fix deprecated struct name * utils/libav: don't pollute namespace * renderer: disable peak detection with per-scene metadata * colorspace: refactor HDR levels fields * colorspace: add HDR10+ metadata to `pl_hdr_metadata` * common: add PL_MAX3 ------------------------------------------------------------------- Mon Feb 13 04:33:42 UTC 2023 - llyyr.public@gmail.com - Update to version 5.229.1+166~git20230212.e38753b: * shaders/custom: zero init hook allocation * utils/frame_queue: add missing ref count init * shaders/custom: properly release hook on error * tests: fix memory leak in pl_ycbcr_tests * opengl/context: disable SSBO on GLSL < 140 * tests/lut: destroy pl_gpu_dummy when we are done * gpu: remove const in pl_tex_blit_compute * tests/opengl_surfaceless: test more versions * tests: use double for RANDOM_U8 * utils/upload: silence scan-build warning * renderer: fix scan-build warning * opengl: also load ARB_program_interface_query ------------------------------------------------------------------- Wed Feb 08 12:30:23 UTC 2023 - llyyr.public@gmail.com - Update to version 5.229.1+154~git20230207.72b2c02: * utils/upload: mask big-endian data from pl_recreate_plane * d3d11: do not leak IDXGIAdapter4 * tests/libav: test support for big endian format mapping * vulkan/buf: refactor memory selection logic * tests/libav: test to make sure no avpixfmt crashes * utils/libav: don't crash on rgb565be or x2rgb10be * ci: update aarch64 image to jammy * tests/vulkan: fix bug when VK_KHR_surface is missing ------------------------------------------------------------------- Fri Feb 03 06:50:00 UTC 2023 - llyyr.public@gmail.com - Update to version 5.229.1+146~git20230201.a76281c: * d3d11/utils: move return unknown outside switch * demos: update nuklear dep to 4.10.5 * demos/sdlimage: add noreturn attr to uninit * demos/plplay: print values only if they are available * ci: rollback llvmpipe image to last known good version * ci: update jammy image to include d3d11 deps * d3d11/utils: suppress enum warning * tests/d3d11: skip test if CreateDXGIFactory1 fails * utils/libav: support big-endian formats * utils/upload: support uploading non-native endian data * tests: add test for pl_buf_copy_swap * gpu: add endian swapping helper function * vulkan: drop unneeded pl_dispatch object * d3d11: drop unneeded pl_dispatch object * gpu: use internal pl_dispatch for helper functions * gpu: add generic GPU-internal dispatch object * common: switch to PL_DIV_UP helper * common: add PL_DIV_UP helper * dispatch: specify SSBO binding points more liberally * opengl: properly set uniform block locations * common: add pl_require validation assist macro * gpu: outsource utility functions to gpu/utils.c * ci: update focal images to jammy * colorspace: add missing XYZ whitepoint adjustment * colorspace: clarify what format XYZ system is in API * utils: update dav1d and libav mappings * colorspace: add PL_COLOR_TRC_ST428 as defined in ST 428-1 * shaders/colorspace: unconstify hi/lo variables ------------------------------------------------------------------- Mon Jan 30 10:46:16 UTC 2023 - llyyr.public@gmail.com - Update to version 5.229.1+118~git20230129.cd71614: * d3d11: add emulated formats for rgb8, rgb16, rgb16hf and 16f * d3d11: add support for emulated formats * d3d11: add missing Buffer struct initialization for SRV/UAV buffers * colorspace: define white points with commonly used precision * dispatch: emit proper samplerBuffer type for int bufs * vulkan: add more verbose logging to tex creation failure * tests: add basic test for planar images * vulkan: add planar texture formats * vulkan: implement planar synchronization * vulkan: add support for planar formats * vulkan: minor code cleanup * gpu: add DRM modifiers for planar formats * gpu: increase size of texture name in format dump * gpu: add planar format API * gpu: relax pl_fmt_fourcc non-opaque restriction * gpu: delete unused left-over field * common: add PL_RSHIFT_UP helper * vulkan: add packed 16-bit formats * vulkan: properly mask more usage flags in pl_vulkan_wrap * vulkan: bikeshed pl_vulkan_wrap variable names * vulkan: fix pl_vulkan_wrap on non-2D textures ------------------------------------------------------------------- Tue Jan 24 21:14:57 UTC 2023 - llyyr.public@gmail.com - Update to version 5.229.1+97~git20230124.371a0c1: * renderer: ignore alpha component when initializing neutral * tests: fix UB of converting out of range value to uint8_t ------------------------------------------------------------------- Mon Jan 23 19:16:04 UTC 2023 - llyyr.public@gmail.com - Update to version 5.229.1+95~git20230123.90e2c92: * vulkan: allow importing planar textures * vulkan: support clearing planar textures * vulkan: support blitting planar textures * vulkan: parametrize image aspect * gpu: allow pl_tex_blit_compute on non-storable src * gpu: optimize pl_tex_blit_compute for 1-pixel blits * gpu: fix compute shader blit fallback * renderer: handle XYZ more gracefully * renderer: infer correct XYZ gamma/primaries * renderer: correctly re-linearize un-linearized linear inputs * colorspace: default to DCI-P3 for XYZ, not BT.709 * colorspace: improve TRC default selection logic * utils/libav: fix whitespace * vulkan/swapchain: add missing queue family information * vulkan: add missing array termination ------------------------------------------------------------------- Wed Jan 18 13:56:08 UTC 2023 - llyyr.public@gmail.com - Update to version 5.229.1+80~git20230118.9074fd7: * gpu: deprecate pl_sync and pl_tex_export * vulkan/swapchain: switch to pl_vulkan_release_ex * utils/libav: switch to new vulkan hold/release helpers * tests/vulkan: add interop API test * vulkan: refactor pl_vulkan_hold/release API * vulkan: add semaphore creation helpers * vulkan: refactor vk_tex_export to keep track of qf ------------------------------------------------------------------- Tue Jan 17 06:59:55 UTC 2023 - llyyr.public@gmail.com - Update to version 5.229.1+73~git20230116.36afb4f: * dispatch: fix deprecation warning on ES GLSL >=3.0 * dispatch: also enable GL_OES_EGL_image_external_essl3 ------------------------------------------------------------------- Sun Jan 15 20:36:15 UTC 2023 - llyyr.public@gmail.com - Update to version 5.229.1+71~git20230115.8299ec7: * renderer: fix unintentional sub-pixel distortions when cropping ------------------------------------------------------------------- Sat Jan 14 23:43:49 UTC 2023 - llyyr.public@gmail.com - Update to version 5.229.1+70~git20230114.f9dacd3: * vulkan: fix typo in log message * glsl/glslang: use new GetDefaultResources() API * glsl/glslang: fix configure issue on recent glslang * vulkan: expose vkGetInstanceProcAddr in pl_vulkan ------------------------------------------------------------------- Fri Jan 06 17:34:56 UTC 2023 - llyyr.public@gmail.com - Update to version 5.229.1+66~git20230106.d0f2e68: * renderer: invalidate cached image on crop change * renderer: minor code simplification ------------------------------------------------------------------- Wed Jan 04 17:07:11 UTC 2023 - llyyr.public@gmail.com - Update to version 5.229.1+64~git20230104.8ca1a81: * tests/libav: add 64-bit pixfmt test * RELEASING: update bugfix release guidelines * tests/vulkan: disable GPU-assisted validation * utils/libav: only allocate host-cached AvFrames * utils/dav1d: only allocate host-cached Dav1dPictures * vulkan/buf: relax HOST_CACHED requirement for buffers * opengl: implement pl_gpu_limits.host_cached * vulkan: set host_cached cap * gpu: log host_cached cap * gpu: add pl_gpu_limits.host_cached * vulkan: report accurate buffer size limits * vulkan/malloc: add vk_malloc_avail() * tone_mapping: fix inferred default tone map param ------------------------------------------------------------------- Tue Jan 03 16:38:20 UTC 2023 - llyyr.public@gmail.com - Update to version 5.229.1+51~git20230103.41f7d6a: * opengl: do not blindly reject all Microsoft's OpenGL implementations * renderer: fix memory leak of pass.tmp ------------------------------------------------------------------- Fri Dec 23 16:05:00 UTC 2022 - llyyr.public@gmail.com - Update to version 5.229.1+49~git20221223.22ce304: * docs: document BIND also working on buffer blocks * docs: fix missing ` * docs: add documentation for custom shaders * shaders/custom: drop redundant comment * shaders/colorspace: improve PL_GAMUT_WARN algorithm * docs: add CNAME * docs: align initializers * docs: rename basic-rendering.md * docs: add pl_renderer tutorial * renderer: never use linear downscaling on HDR sources * docs: change colors * README: add link to documentation * github: add hook for documentation pages * docs: add basic documentation ------------------------------------------------------------------- Sun Dec 18 14:58:55 UTC 2022 - llyyr.public@gmail.com - Update to version 5.229.1+35~git20221213.cbc3ef8: * vulkan/malloc: remove assertion * shaders/film_grain_av1: support >12-bit input samples ------------------------------------------------------------------- Wed Nov 30 13:36:14 UTC 2022 - llyyr.public@gmail.com - Update to version 5.229.1+33~git20221121.7ead30d: * renderer: fix red channel plane merging ------------------------------------------------------------------- Mon Nov 21 05:13:53 UTC 2022 - llyyr.public@gmail.com - Update to version 5.229.1+32~git20221119.9e9b935: * shaders/colorspace: don't explode on luma > 1000 * shaders/colorspace: fix tone mapping desaturation ------------------------------------------------------------------- Thu Nov 17 22:50:13 UTC 2022 - llyyr.public@gmail.com - Update to version 5.229.1+30~git20221117.fc6cf3a: * shaders/dithering: reduce unnessary code duplication * utils/upload: verbosely log plane misalignment failures ------------------------------------------------------------------- Mon Nov 14 08:07:55 UTC 2022 - llyyr.public@gmail.com - Update to version 5.229.1+28~git20221112.27e38da: * shaders/film_grain: don't spam log on LUT invalidation * renderer: fix film grain bit depth after debanding * shaders: refcount pl_shader_obj inside pl_shader * opengl: don't try to use libdl on *BSD OS's * shaders/custom: split up into sub-files * demos/plplay: add support for tuning custom shaders * shaders/custom: allow referencing shader parameters in RPN exprs * shaders/custom: rename SHEXP_VAR_* to SHEXP_TEX_* * shaders/custom: rename szexpr to shexpr * shaders/custom: refactor szexpr code * tests: add shader parameter parsing tests * shaders/custom: add //!PARAM syntax to mpv hook shaders * shaders/custom: add support for tunable parameters * shaders/custom: remove stray whitespace * alloc: make pl_get_size take const ptr * string: add support for unsigned integer parsing * tests/libav: add test for AV_PIX_FMT_RGBF32LE * utils/libav: fix compatibility issue with >8-byte pixfmts * utils/upload: add pl_plane_data_from_comps * shaders/custom: fix custom shader input signature * shaders/custom: silently skip passes with unknown binds * shaders/custom: properly clean up pl_shader in error path * shaders/custom: fix //!SAVE MAIN * demos/glfw: Request and use an EGL context ------------------------------------------------------------------- Thu Nov 03 16:50:12 UTC 2022 - llyyr.public@gmail.com - Update to version 5.229.1+4~git20221102.3d8a872: * shaders/colorspace: fix tone mapping params in place * tone_mapping: add pl_tone_map_params_infer * shaders/icc: accept too-wide ICC profiles * colorspace: add ACES ultra-wide gamuts * shaders/icc: guard against very odd/broken profiles * shaders/icc: also warn on NaN results * shaders/icc: only warn on unusual profiles * vulkan/swapchain: explicitly wait for queues to be idle * renderer: properly scale ortho first pass ------------------------------------------------------------------- Sun Oct 30 15:21:41 UTC 2022 - llyyr.public@gmail.com - Update to version 5.229.0+2~git20221030.33cd9cb: * shaders/sampling: add tolerance to ortho2 scaling check * renderer: properly round scaling ratios ------------------------------------------------------------------- Thu Oct 27 23:16:38 UTC 2022 - llyyr.public@gmail.com - Update to version v5.229.0+0~git20221026.1544b07: * shaders/sampling: refactor pl_shader_sample_ortho * vulkan: don't assume host ptr imports are host mappable ------------------------------------------------------------------- Wed Oct 26 18:50:05 UTC 2022 - llyyr.public@gmail.com - Update to version 5.228.0~rc2+5~git20221026.e07f223: * 3rdparty/glad: update to v2.0.1 * opengl: fix MemoryBarrier undef location * opengl: work around llvm/mingw macro conflict * meson: fix / operator consistency * vulkan/meson: actually test include dir ------------------------------------------------------------------- Sat Oct 22 12:07:51 UTC 2022 - llyyr.public@gmail.com - Update to version 5.228.0~rc2+0~git20221021.bb6bdd3: * 3rdparty/glad: bump to v2.0.0 * opengl/context: rework static mutex * 3rdparty/glad: update to pull in new mx API * opengl/context: don't double-load GL and GLES * opengl/context: drop `gl_loaded` bool * opengl/context: conditionally unload EGL * opengl: factor out OpenGL ES check * tests/opengl_surfaceless: set get_proc_addr explicitly * opengl: implement GL_EXT_EGL_image_storage * opengl: use mutex to guard internal glad loader * thread: add static mutexes * thread: document API better ------------------------------------------------------------------- Thu Oct 20 10:41:08 UTC 2022 - llyyr.public@gmail.com - Update to version 5.228.0~rc1+12~git20221019.a45c37c: * shaders/deinterlacing: fix field calculation * shaders/deinterlacing: fix differences to C yadif * vulkan: explicitly disallow full screen exclusive mode * vulkan/utils: add const to vk_link_struct signature * renderer: fix plane merging after deinterlacing * opengl: unload internally loaded functions * opengl: implement get_proc_addr_ex for EGL * renderer: minor logic cleanup ------------------------------------------------------------------- Sun Oct 16 10:19:51 UTC 2022 - llyyr.public@gmail.com - Update to version 5.228.0-rc1+4~git20221015.7d3557b: * opengl: implicitly define the libdl dependency on Windows * 3rdparty: drop mako * vulkan/utils_gen: switch from mako to jinja2 * shaders/icc: fix force_bpc cache signature * RELEASING: add release guide * demos/plplay: hook up pl_icc_params.force_bpc * shaders/icc: support forced black point linearization * shaders/icc: add missing comma * shaders/lut: fallback to texture() on older GLSL * shaders/lut: move sh_lut here * shaders: don't prefer literals for linear LUTs * shaders/sampling: always use textures for polar LUTs * tone_mapping: fix pl_tone_map_params_noop + inverse * opengl: minor cosmetic change * README: update opengl dependencies * renderer: make deband shader mergeable ------------------------------------------------------------------- Mon Oct 10 00:56:19 UTC 2022 - llyyr.public@gmail.com - Update to version 4.208.0+167~git20221009.93a01c7: * renderer: re-use plane shaders when not scaling * renderer: delay plane shader execution * renderer: perform debanding first ------------------------------------------------------------------- Thu Oct 06 20:12:40 UTC 2022 - llyyr.public@gmail.com - Update to version 4.208.0+164~git20221005.35cbea8: * renderer: rename 'pts' to 'rts' * vulkan/command: coalesce semaphore signal operations * vulkan/context: fix queue family selection * renderer: suppress warning * renderer: cleanup unneeded parameter * colorspace: ignore PQ minimum luminance ------------------------------------------------------------------- Thu Sep 29 19:30:26 UTC 2022 - llyyr.public@gmail.com - Update to version 4.208.0+158~git20220928.deccd2c: * utils/libav: don't auto-apply DV that requires EL * utils/libav: test for <vulkan.h> dynamically ------------------------------------------------------------------- Tue Sep 27 04:25:07 UTC 2022 - llyyr.public@gmail.com - Update to version 4.208.0+156~git20220926.c7da37a: * demos/plplay: update for new render_info API * renderer: refactor pl_render_info * shaders/dithering: fix error diffusion bounds check * d3d11: build stubs on supported platforms * opengl: build stubs unconditionally * vulkan: build stubs unconditionally * thirdparty: meson: bundle vulkan headers * vulkan: fix left-over printf warning * vulkan: fix 32-bit printf warnings when printing semaphores * vulkan: properly wrap dispatchable handles into uint64_t * vulkan: fix vulkan.h version check * shaders/dithering: work around d3d11 shader compiler bug * meson/demos: minor simplification * meson/d3d11: minor refactor * meson/opengl: refactor 'opengl-loader' * meson/vulkan: refactor `vulkan-link` * meson: split tests off into separate meson.build * meson: miscellaneous minor refactors * meson: split d3d11 off into separate file * meson: split off glsl into separate file * meosn: split opengl off into separate file * meson: split off vulkan-related checks * meson: refactor/remove components system * meson: move various global definitions to top level ------------------------------------------------------------------- Wed Sep 21 00:10:22 UTC 2022 - llyyr.public@gmail.com - Update to version 4.208.0+132~git20220920.d32990b: * shaders/dithering: support gamma-correct dithering * demos/plplay: add error diffusion GUI option * renderer: support error diffusion dithering * tests: test error diffusion * shaders/dithering: add error diffusion shader * shaders/dithering: split off from shaders/colorspace.h * dispatch: default constants to 1 instead of 0 * glsl/glslang: move resources declaration to C file * shaders/icc: switch to tetrahedral interpolation * shaders/lut: switch to tetrahedral interpolation * shaders: add support for tetrahedral interpolation * shaders: remove broken texelFetch fallback * shaders: generalize sh_lut interpolation method * shaders: clean up sh_lut API and usages ------------------------------------------------------------------- Tue Sep 13 05:43:13 UTC 2022 - llyyr.public@gmail.com - Update to version 4.208.0+118~git20220911.9e8cf59: * shaders/icc: add 3DLUT caching API * shaders/icc: fix LUT signature check * renderer: fix icc params compat check ------------------------------------------------------------------- Mon Sep 12 08:35:36 UTC 2022 - llyyr.public@gmail.com - Update to version 4.208.0+115~git20220909.a496c2f: * gpu: fix validation of opaque formats * tests/bench: add deinterlacing benchmarks * demos/plplay: hook up deinterlacing options * tests: add deinterlacing test * utils/frame_queue: add deinterlacing support * renderer: add support for deinterlacing * tests: update for frame_duration field deprecation * demos/plplay: update for frame_duration field * utils/frame_queue: move frame duration to pl_source_frame * utils/frame_queue: refcount frame entries * shaders/deinterlacing: add deinterlacing GPU shaders * demos/plplay: allocate extra hw frames * demos/plplay: properly compute mix radius * tests: fix pl_queue frame scheduling * vulkan/context: suppress SemaphoreCount warnings * tone_mapping: implement pl_find_tone_map_function ------------------------------------------------------------------- Thu Sep 01 20:12:59 UTC 2022 - llyyr.public@gmail.com - Update to version 4.208.0+99~git20220830.0ce3fa4: * d3d11: fix documentation * colorspace: force max > min after inferring * colorspace: infer BT.1886 contrast based on target ------------------------------------------------------------------- Mon Aug 29 14:46:02 UTC 2022 - llyyr.public@gmail.com - Update to version 4.208.0+96~git20220828.7159093: * shaders/custom: fix build with gcc 5 and earlier * config.h: detect support for enumerator attributes * config.h: add __has_feature compat shim * colorspace: default HDR to true black * renderer: hook up pl_deband_params.grain_neutral * shaders/sampling: avoid adding deband grain near black * shaders/sampling: refactor debanding implementation * shaders: add misc helper functions * swapchain: don't send invalid HDR swapchain hints * gpu: add debug prints to specialization constant values ------------------------------------------------------------------- Tue Jul 19 14:19:18 UTC 2022 - llyyr <llyyr.public@gmail.com> - Update libplacebo to version 4.208.0. See details in: https://code.videolan.org/videolan/libplacebo/-/tags/v4.208.0 ------------------------------------------------------------------- Fri Jul 1 10:59:49 UTC 2022 - Enrico Belleri <idesmi@protonmail.com> - Update libplacebo to version 4.208.0-rc1. See details in: https://code.videolan.org/videolan/libplacebo/-/tags/v4.208.0-rc1 - Update nuklear.h to 4.9.6 ------------------------------------------------------------------- Thu Feb 3 15:59:08 UTC 2022 - Niklas Haas <obs@haasn.xyz> - Update libplacebo to version 4.192.1. See details in: https://code.videolan.org/videolan/libplacebo/-/tags/v4.192.1 ------------------------------------------------------------------- Sun Jan 30 17:08:01 UTC 2022 - Enrico Belleri <idesmi@protonmail.com> - Update nuklear.h to 4.9.5 - Add dav1d dependency ------------------------------------------------------------------- Wed Jan 19 12:10:24 UTC 2022 - Niklas Haas <obs@haasn.xyz> - Update libplacebo to version 4.192.0. See details in: https://code.videolan.org/videolan/libplacebo/-/tags/v4.192.0 - Add libunwind dependency - Bump meson dependency version to match upstream ------------------------------------------------------------------- Tue Sep 7 09:09:22 UTC 2021 - Niklas Haas <obs@haasn.xyz> - Update libplacebo to version 4.157.0: This is a major new release involving a significant overhaul of the public API, full thread safety, support for Direct3D 11 / Win32 / MSVC, native HDR output, and more. The primary way of accessing most libplacebo objects has been revamped. Rather than writing e.g. `const struct pl_tex *image`, users now simply write `pl_tex image`. In addition, the `struct pl_context *ctx` was universally refactored and replaced by `pl_log log`, with no concern besides logging. Direct3D 11 is now natively supported by libplacebo, and compiling on Windows in general has been made more straightforward. The entire API was revamped to be thread safe by default, even when using OpenGL (assuming the user provides the appropriate context binding callbacks). Accompanying this change, the `pl_queue` has been rewritten with multi-threaded decoding loops in mind. See the accompanying `plplay` demo for an illustration. Finally, this release brings with it a lot of features for feature parity with mpv, such as the ability to get pass stats / timings, oversample scaling, and more. Additions: - add a `void *user_data` field to `pl_frame`, with no further interpretation by libplacebo - add `pl_queue_push_block`, useful for multi-threaded decoding loops - add a `uint64_t timeout` to `pl_queue_update`, allowing it to block until frames are available even when not using a `get_frame` callback - make `pl_queue_update` also return valid data when failing with PL_QUEUE_MORE, allowing access to partial/incomplete mix outputs - allow calling `pl_render_image` on `image == NULL`, to render overlays only - add `pl_get_buffer2`, API-compatible with AVCodecContext.get_buffer2 - add support for blitting from/to several obscure formats such as a1rgb5 or 64-bit integer formats - add `pl_tex_clear_ex` to support clearing integer textures - add `pl_render_params.ignore_icc_profiles`, for debugging - add `pl_queue_params.interpolation_threshold`, to allow disabling frame mixing when the source FPS approximately matches the display FPS - always accept DRM_FORMAT_MOD_INVALID for texture imports - add extra windowing functions to <libplacebo/filters.h> - add the `pl_fmt.gatherable` capability - add `pl_shader_sample_oversample`, a variant of nearest-neighbour that preserves pixel aspect ratios - good for pixel art - add `pl_scale_filters` alongside `pl_frame_mixers` - add support for compile-time specialization constants (`pl_constant`), and use them to speed up recompilation of shaders with hard-coded constants - add `pl_render_params.dynamic_constants`, which lifts hard-coded constants to dynamic variables - useful for scenarios in which render parameters are expected to change very frequently - add more PL_COLOR_TRC_GAMMAxx definitions - 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. - add `pl_shader_res.description` and `pl_shader_res.steps`, containing more friendly names for shaders plus a detailed list of operations that shader is performing - add callbacks to `pl_dispatch` and `pl_renderer` for informing users of executed passes and their execution times - add support for the Direct3D 11 graphics API - add `pl_swapchain_colorspace_hint`, replacing `pl_swapchain_hdr_metadata` as the new way to update swapchain colorspace metadata at runtime. This can be used to e.g. switch between HDR and SDR mode, for supported swapchains - add `pl_peak_detect_params.minimum_peak`, allowing users to constrain the detected peak values to only be sensible (e.g. above 1.0) Changes: - simplify the `shaderc` pkg-config check - rather than querying for `shaderc_shared.pc`, `shaderc_combined.pc` etc, simply check for `shaderc.pc`, matching upstream - 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 - `struct pl_overlay` has been refactored completely to allow for overlays with more than one part per texture. The only way of using this struct is deprecated - prefix `enum pl_queue_status` members by `PL_`, fixing an oversight in the previous version of this API - 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> - add `typedefs` to all public-facing object types, o make them shorter to reference. For example, `const struct pl_tex *tex` is now simply `pl_tex tex`. This change affects almost every type of object in libplacebo. The old way of referencing these objects is still possible, but considered deprecated. Note that due to C++-specific reasons, C++ users *must* upgrade their codeto the new API style - remove PL_PRIM_TRIANGLE_FAN - 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 - rename `pl_oversample_frame_mixer` to `pl_filter_oversample`, and allow using it for image scaling as well - change `pl_color_space_monitor` from PL_COLOR_TRC_GAMMA22 to UNKNOWN - change the signature of `pl_shader_(de)linearize` slightly - significantly increase the default strengths of the desaturation settings in`pl_color_map_params`, to mimic the hollywood feel - refactor `pl_glsl_desc` and `pl_gpu_caps` completely, in favor of the new structs `pl_glsl_version` and `pl_gpu_limits`, with new members. The old API is still available for the time being, but deprecated Fixes and performance improvements: - fix possible use-after-free in `plplay` - don't explode `pl_queue` on NaN/Infinity/weird PTS values - fix edge case involving plane merging for cropped images - improve `plplay` by using threaded libplacebo APIs - several fixes for edge cases in <libplacebo/utils/libav.h> helpers - several fixes for 32-bit platforms (e.g. integer overflows) - fix blending edge cases involving overlays and alpha channels - skip some unnecessary matrix multiplications for RGB content - allow for some small backwards PTS jumps in `pl_queue_update` - fix drawing overlays to subsampled targets - `pl_dispatch` now garbage collects old, unused passes to free up RAM - various improvements to debug/diagnonstic printouts - allow blitting from e.g. 2D to 3D textures - 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 - properly allow building against vulkan headers without linking to the vulkan loader - C++ compatibility for public headers - improve performance of textureGather-based polar sampling, especially for radius 2 and 4 - fix vulkan texture handle capabilities check, again - don't include superfluous pNext chains, fixes undefined behavior - fix crash on edge case when shader compilation fails - infer unsampled alpha channels as 1.0, rather than 0.0 - properly infer `target->color` in `pl_render_image` - properly tag the OpenGL swapchain as pl_color_space_monitor - fix possible crash in pl_get_detected_peak - fix several edge cases in pl_render_image_mix relating to LUTs, 3DLUTs, HDR peak detection and so on - fix sig_peak inferral for HLG content - several compatibility fixes for older GLSL, and GLES 2.0 - fix possible use-after-free in pl_shader_custom - fix `pl_color_map_params.gamut_clipping` for HDR targets - reduce the number of redundant color space transformations required for frame mixing - fix edge case in pl_dispatch_save for some ancient GL drivers - several fixes for LLVM/MinGW/MSVC - fix bug where pl_pass_run incorrectly invalidated/accessed `params->target` even for compute shaders - add windows compatibility to several demo programs - fix the pl_fmt <-> DRM fourcc format mapping table - fix inappropriate texture access function for generated samplers with the sampler2D API - avoid generating spurious EGL errors when probing for EGL format modifiers - fix various typis in the documentation ------------------------------------------------------------------- Fri May 7 09:51:50 UTC 2021 - Niklas Haas <obs@haasn.xyz> - Update libplacebo to version 3.120.3: This minor release fixes a number of regressions surrounding memory imports and DRM modifiers, specifically aimed at issues that arose with mpv's --hwdec=vaapi. Changes: - `pl_fmt.modifiers` now always includes DRM_FORMAT_MOD_INVALID on OpenGL, which instructs the implementation to not specify modifiers - passing a DRM modifier not in the list of supported modifiers is now considered a hard error, to rule out non-working hwaccel formats Fixes: - fix a crash when using sampling shaders on textures with unknown formats - fix improperly specified SDL header imports in the demos - fix an issue where the vulkan texture handle capabilities were testing for presence of the wrong extension - fix an issue where non-enabled DRM modifier structs were accidentally linked into the pNext chain, causing issues with some drivers ------------------------------------------------------------------- Mon Apr 19 08:27:57 UTC 2021 - Niklas Haas <obs@haasn.xyz> - Update libplacebo to version 3.120.2: This minor release fixes a number of additional bugs related to the thread queue, included demos, included helpers, and build system. Changes: - replace the `shaderc` library checks by pkg-config checks - `pl_dispatch` no longer grows infinitely, but prunes stale cache entries after a certain threshold - improve logging of GPU capabilities (including format capabilities) Fixes and performance improvements: - fix a typo on an error message - fix a use-after-free edge case in `plplay` - filter out Infinity, NaN and other values from fps/vps estimates - add several warnings for suspected frame queue API misuses - fix a crash when combining pl_render_image_mix with cropped frames - fix a crash on AV_PIX_FMT_NONE in the libav helpers - fix the loading of overlays in the `sdlimage` demo - fix a number of potential overflows on 32-bit platforms - omit redundant identity matrices in pl_shader_decode_color - fix crash in frame queue with certain out-of-order PTS sequences - add missing link to vulkan dependency in the `video-filtering` demo - correctly shift overlays when drawing to subsampled YCbCr planes - add missing check for PL_GPU_CAP_CALLBACKS in `utils/{libav,dav1d}.h` - improve handling of asynchronous texture uploads in `utils/libav.h` ------------------------------------------------------------------- Tue Apr 6 06:57:44 UTC 2021 - Niklas Haas <obs@haasn.xyz> - Update libplacebo to version 3.120.1: This hotfix release fixes a number of minor issues with the v3.120.0 release, and also modularizes the included demo programs to cut down on the number of compiled binaries. Changes: - hexadecimal strings in custom shaders may now include whitespace - added 16-bit half float formats to the dummy pl_gpu - significantly reduced verbosity of the included demo programs - merged all of the demo program variants into a single binary that picks the best windowing system / graphical API at runtime - install `plplay` when demos are enabled Fixes and performance improvements: - fixed an integer overflow in a texture bounds check - fixed a false positive error in the test framework on 32-bit platforms - fixed some minor issues with various outdated comments - fixed a potential use-after-free in the `plplay` demo program when playing files containing embedded ICC profiles ------------------------------------------------------------------- Fri Apr 2 13:21:38 UTC 2021 - Niklas Haas <obs@haasn.xyz> - Update libplacebo to version 3.120.0. (Upstream changelog appended) - Create a new package `plplay` for the included demo program. This requires bundling a copy of `nuklear.h`, which is single-header library not included as part of the libplacebo source distribution. This is a feature release, introducing frame mixing, DRM format modifiers, and support for custom LUTs -, while also greatly expanding the available demo programs, in particular the `plplay` video player. The main highlight is the new `pl_queue` abstraction living in <libplacebo/utils/frame_queue.h>. This greatly simplifies the core of a libplacebo-based video renderer by translating a stream of input frames into an array of GPU-mapped textures suitable for frame mixing, given a corresponding vsync timestamp. New frames can be delivered to this API using a push or pull model, and they are lazily uploaded on an as-needed basis as well as internally garbage collected when no longer needed. This abstraction also contains all needed machinery for estimating source/display framerates by comparing and averaging timestamps, freeing users from the burden of having to accurately determine this information a priori. Also worth mentioning is the addition of support for custom LUTs, currently only in Adobe's .cube format. They can be applied flexibly at a number of locations in the video processing pipeline, including as a replacement for YUV<->RGB conversion or tone/gamut mapping, and fed with either normalized linear light or native-gamma values. Among the included demo programs, the `plplay` example video player has been greatly expanded - adding support for a settings GUI (based on nuklear), frame timing and mixing, custom shaders, and more. This example video player now serves as a convenient platform to demonstrate all of libplacebo's advanced rendering features. Finally, all of libplacebo now contains only code written entirely from scratch (rather than deriving from mpv), opening up the possibility to explore different licenses besides the current LGPLv2.1+. In particular, permissive (MIT/BSD-style) licenses are being considered. Additions: - add asynchronous GPU callbacks, specifically to `pl_tex_transfer`, allowing for non-blocking host memory transfer operations - add `pl_shared_mem.stride_w/h` to control dmabuf pitch - add `pl_render_image_mix` to blend multiple frames into a single output image, given relative timestamp information - add the `pl_filter_mitchell_clamp` filter preset - add `pl_render_params.preserve_mixing_cache` to speed up redraws after renderer size changes when frame mixing is active - add <libplacebo/utils/dav1d.h> to help with Dav1dPicture mapping - implement `PL_HANDLE_HOST_PTR` for the OpenGL backend - implement drm format modifiers for vulkan - add a new field `pl_fmt.modifiers` for DRM format modifier negotiation - add new header <libplacebo/shaders/lut.h> to load custom LUTs (currently only supporting the .cube format) - add `index_data/buf` to `pl_pass_run_params`, adding support for indexed vertex data when dispatching shader passes - add `pl_dispatch_vertex` to allow dispatching fragment shaders using a list of custom vertices with custom vertex attributes - add `pl_frame_recreate_from_avframe` and `pl_download_avframe` to help downloading GPU textures back into AVFrame form - add a new header <libplacebo/utils/frame_queue.h> to assist in taking a stream of (Frame, PTS) pairs as well as a list of VSync times and turning them into a stream of `pl_frame_mix` structs - add `pl_white_from_temp` and `pl_color_adjustment.temperature` to apply white point adjustments between correlated color temperatures (K) - add `pl_filter_preset.description` containing a longer, human-readable name for a given filter preset Changes: - `pl_3dlut_params` has been renamed `pl_icc_params` - `pl_render_params.force_3dlut` has been renamed `force_icc_lut` - `pl_3dlut_update/apply` have been renamed to `pl_icc_update/apply` and moved to a (conditionally installed) new header <libplacebo/shaders/icc.h> - `pl_upload_plane` no longer initializes `out_plane->shift_x/y` to 0, instead leaving them unmodified (to avoid clobbering existing shift data) - `pl_filter_box` has been renamed to `pl_filter_nearest` - `pl_filter_triangle` has been renamed to `pl_filter_bilinear` - `pl_render_params.frame_mixer = NULL` now disables frame mixing - to get back the old behaviour, set this to `&pl_oversample_frame_mixer`. - `pl_color_map_params.gamut_warning` now highlights out-of-gamut colors in bright pink, rather than the old (ill-defined) inversion behaviour - `pl_named_filter_config` has been renamed to `pl_filter_preset` - `pl_find_named_filter` has been renamed to `pl_find_filter_preset` - ditto for `pl_named_filter_function` and `pl_filter_function_preset` Fixes and performance improvements: - fix buffer overflow in custom shader STORAGE blocks - fix include path for glslang >= 11.0.0 - actually enable shader subgroup operations for HDR peak detection - fix locale dependence of shader parsing primitives - fix AVCOL_SPC_SMPTE170M mapping - fix wrong color space selection in `pl_vulkan_create_swapchain` - work-around low UBO size limits on some platforms - fix compilation issues on C++ due to the use of reserved identifiers - fix `pl_get_detected_peak` on platforms without host-visible SSBOs - fix edge case in vulkan texture handle capabilities check - fix suboptimal mutex destruction code - skip peak detection when outputting to HDR displays - fix edge cases in shader LUT type selection logic - avoid redundant scaling passes when scaling anamorphic content - merge similar planes before dispatching heavy shaders (e.g. debanding, hooks) - avoid scaling passes for certain small fractional scaling steps - entirely avoid processing unneeded components when dispatching scalers - avoid using more components than necessary for intermediate FBOs - fix out-of-bounds read for small non-cropped emulated textures - avoid thrashing the shader cache when reinitializing OpenGL FBOs - fix incorrect include in <libplacebo/opengl.h> - fix vk.xml priority issue on windows - fix undefined behaviour / GPU hangs in HDR peak detection shader - fix incorrect forwarding of DRM modifiers to the OpenGL backend - fix crash on AV_PIX_FMT_FLAG_BAYER - fix various compilation issues on certain platforms - fix obscure edge-case in floating point printing routine - `pl_render_params.force_icc_lut` now excludes no-op cases - fix handling of custom shader COMPUTE blocks - correctly apply hue and saturation controls for non-YCbCr color spaces ------------------------------------------------------------------- Fri Jan 1 19:37:02 UTC 2021 - Mia Herkt <mia@0x0.st> - Update to version 3.104.0 This is a major release, introducing many new features and modifications. Most importantly, libplacebo now interoperates well with FFmpeg's libav* abstractions. This is primarily exposed via a new set of helpers, <libplacebo/utils/libav.h>, implemented as a single header library. In addition to this, a number of other supporting changes have been made to the API, most notably the unification of `pl_image` and `pl_render_target` into a single `pl_frame` concept, similar in spirit to AVFrame. As such, libplacebo now supports **rendering to planar targets**, including subsampled YCbCr. Besides the libav* compatibility changes, this release also brings with it a new feature for custom shaders: buffer blocks, and persistent storage. This can be used by third parties to implement stateful shaders (e.g. motion interpolation or temporal deinterlacing), or be leveraged to speed up some shaders by combining multiple passes into one. Finally, various import/export procedures have been expanded, including the ability to import host pointers and real-world DMABUFs. Additions: * add `pl_memory_qualifiers`, plus a corresponding `pl_shader_desc.memory`, to allow attaching GLSL memory qualifiers (coherent, volatile etc.) to shader descriptors * add functions `pl_dispatch_save` and `pl_dispatch_load` to allow saving/restoring the contents of an entire `pl_dispatch`'s cache * add functions `pl_renderer_save` and `pl_renderer_load` to allow saving/restoring the contents of an entire `pl_renderer`'s cache * add `pl_vulkan_swapchain_params.prefer_hdr`, which will cause the surface format selection logic to try HDR output formats first * add `pl_buf_copy` to copy from one buffer to another * add `pl_get_detected_peak`, to read back the result of peak detection * add `pl_primaries_superset` to test if one set of primaries is fully enclosed by another * add `pl_color_map_params.gamut_clipping`, which will colorimetrically clip any out-of-gamut colors by desaturating them towards neutral gray until they're in-gamut, rather than clipping per channel as before * add `PL_GPU_CAP_SUBGROUPS` and `pl_gpu_limits.subgroup_size`, to expose GLSL subgroup functionality via the `pl_gpu` interface * add `pl_gpu_is_failed`, to query at a high level whether the `pl_gpu` is in some internal failure state. GPUs in this state should be recreated, using the appropriate mechanism * add `pl_shader_custom`, to allow injecting arbitrary custom GLSL code into a `pl_shader`. * add `pl_buf_params.import_handle` to allow importing buffers * add `PL_HANDLE_HOST_POTR`, to allow importing arbitrary host pointers * add `pl_pass_run_params.vertex_buf`, to allow drawing vertex data directly from a `pl_buf`, guarded by `pl_gpu_limits.max_vbo_size` * add `_COUNT` members to all public enums, for consistency * add `pl_shared_mem.drm_format_mod`, to allow communicating DRM format modifiers when importing/exporting textures * add support for importing DMABUFs via EGL, via the new fields `pl_opengl_params.egl_display/context` * add `pl_fmt.fourcc` to facilitate mapping between `pl_fmt` and DRM * add the missing `pl_var_*` helpers, for consistency * add `pl_plane_data_align` to help with aligning `pl_plane_data` structs to byte boundaries * add support for STORAGE textures in user shaders, which can be used to persist data across separate invocations of the shader * add support for BUFFER blocks in user shaders, which can be used to create UBOs or SSBOs for use inside shaders, the latter of which can also persist across frames and be used to store persistent state * add PL_COLOR_PRIM_EBU_3213 and PL_COLOR_PRIM_FILM_C * add a new header <libplacebo/utils/libav.h>, containing a variety of helper functions for interoperating between libav* and libplacebo * add `demos/plplay.c` to serve as a demonstration of how to make a trivial playback loop with libavcodec and libplacebo * add `pl_sample_src.component_mask` to allow sampling an arbitrary subset of the available components from a plane * add `pl_frame_is_cropped` and `pl_frame_clear` to assist in properly clearing frames before rendering to them * add `pl_tex_poll` to assist in interoperating with some external APIs * add `pl_render_params.blend_params` to allow blending the final output Changes: * remove `pl_image.signature` and `pl_render_params.skip_redraw_caching` * change vulkan surface format selection to prioritize formats by 'score', preferring higher depth integer formats * `pl_fmt` may now have PL_FMT_CAP_STORABLE even when `glsl_format` is NULL, in which case formatless image storage must be used * `pl_buf_read` no longer requires `buf_offset` be a multiple of 4 * `pl_buf_*` commands are now synchronized internally: * `pl_buf_write` and `pl_buf_read` now block while the buffer is in use Note: for this reason, `pl_buf_write` should not be used in loops * `pl_tex_upload/download` may now be called on in-use buffers * allow `pl_dispatch_compute` on shaders with outputs, including the ability to automatically determine the number of work groups based on the shader output resolution * remove `pl_buf_params.type`, and the concept of buffer types in general. `pl_buf` is now a generic catch-all for any type of buffer, with individual capabilities in `pl_buf_params` determinig what type of shader operations it can be used for * relax the alignment requirements on `pl_tex_transfer_params` * change `pl_opengl_wrap_params` to allow directly importing framebuffers in addition to textures * rename `pl_color_levels` members for clarity * make `pl_opengl` ignore software rasterizers by default, unless the new field `pl_opengl_params.allow_software` is set * add `pl_av1_grain_params.luma_comp` to allow drawing the luma component from a channel with nonzero index * `pl_renderer` now supports rendering to planar targets, including subsampled targets * `pl_image` and `pl_render_target` have been removed and unified into a single `pl_frame` concept * remove `pl_tex_params.sample_mode/address_mode` and move them to `pl_desc_binding` instead, to decouple them from texture creation * refactor the signature of `pl_tex_blit` Fixes and performance improvements: * fix an oversight where `pl_buf_destroy` delayed some buffer destructions unnecessarily * fix a limitation where `pl_tex_destroy` sometimes delayed destroying textures unnecessarily * improve the performance of `pl_dispatch`'s code for assembling UBOs * improve the performance of `pl_shader_av1_grain` by switching from SSBOs to texture LUTs, also improving compatibility with older GL * improve the performance of `pl_shader_detect_peak` on GPUs with access to subgroups operations * fix an issue where reinitializing shader state objects with different settings sometimes resulted in undefined behaviour * fix some GLSL backwards compatibility issues * slightly cut down on unnecessary image layout transitions * add some miscellaneous debug print-outs, and improve the legibility of some existing log messages * fix an issue where freeing buffer variables from shader descriptors could result in use-after-free * add support for vulkan memory imports requiring dedication allocations * slightly improve, and fix, the vulkan memory placement logic * significantly improve the performance of `pl_tex_download` by importing the target host pointer directly * improve the performance of small LUTs, especially for the non-compute polar fallback path * prevent `pl_renderer` from unneccessarily applying a 3DLUT when both the input and output frames have the same ICC profile * fix the behaviour of partially specified `pl_bit_encoding` structs * fix the component ordering on some odd packed vulkan formats * fix an issue where `pl_plane_data_from_mask` broke for high bit depths * make `pl_renderer` consult the dither bit depth from the texture precision, if absent from `pl_bit_encoding` * fix the behaviour of `pl_renderer` when sampling from textures with swapped component orders * fix the implementation of PL_COLOR_SYSTEM_BT_2100_HLG * fix some issues relating to missing includes * enforce legality of image usage parameters on `pl_vulkan_wrap` * fix an undesired shader double-compilation when using orthogonal scalers with subsampled chroma planes * fix an issue where application of a 3DLUT cleared the alpha channel * add a missing extension to `pl_vulkan_recommended_extensions` * fix the plane alignment code for oddly sized subsampled chroma * fix the poor precision of `pl_shader_dither` for high bit depths * fix several possible overflows in the BT.2390 shader * fix a bug where using a polar sampler to draw a scaled overlay onto a non-storable target neglected to disable compute shaders * fix a bug where the renderer could sometimes alias when downscaling, in particular if both the upsampler and downsampler are set to bicubic * improve performance of scalers by avoiding bilinear filtering * reduce verbosity of memory allocations * fix missing PL_FMT_CAP_BLENDABLE on opengl fbos * significantly improve precision of float literals in shaders * add better error checking to gl_pass_create ------------------------------------------------------------------- Sun Nov 22 03:24:14 UTC 2020 - Mia Herkt <mia@0x0.st> - Update to version 2.72.2 This hotfix release fixes an additional glslang linking/build issue that was missed in v2.72.1. Bug fixes: * fix linking issue with some installations of glslang >= 11.0.0 Changes for 2.72.1: This release backports a number of bug fixes from master affecting the v2.72.0 release, most notably extending the range of supported glslang versions, as well as fixing the 3DLUT/ICC generation code. Bug fixes: * compatibility with glslang >= 8.13.3743 * compatibility with new glslang semantic versioning scheme * fix broken shaders on some versions of GLES by defaulting to 32-bit precision for floating point math * fix the vulkan API version passed to shaderc * fix the extension check for glInvalidateTexImage * fix pl_tex_create on older GLES versions * fix OpenGL logging thread safety * fix undefined memcmp() in pl_shader_av1_grain * fix pl_render_target.repr being ignored by pl_render_image * fix 3DLUT generation code (generated corrupt LUTs in all cases) * fix symbol visibility on some versions of GCC * fix potential overflow in BT.2390 shader * properly restrict pl_shader_sample_polar to GLSL >= 130 * fix vulkan function loading of promoted core functions Other changes: * tiny performance gain in 3DLUT generation * pl_opengl_create now logs GL_EXTENSIONS * log some additional VkResult enum members * improve several vulkan log messages by using friendly names of enums * add a copy of the config.h variables to the libplacebo.pc file ------------------------------------------------------------------- Sun Jun 14 15:37:17 UTC 2020 - Mia Herkt <mia@0x0.st> - Update to version 2.72.0 This is a major release with several key additions, most notably being the support for custom, mpv-style "user shaders" (.hook), giving us access to a large variety of pre-existing user shaders such as RAVU, FSRCNNX, Anime4K, SSimSuperRes, KrigBilateral, NNEDI3, and more. In addition to this, major additions include a completely refactored and fixed AV1 grain generation shader, support for Vulkan versions higher than 1.0, support for GPU-based timers, and improved interop APIs for both Vulkan and OpenGL, and new and improved aspect ratio handling. Finally, this release also brings with it a major change to the way HDR and SDR content are mapped between each other, including a new tone-mapping function based on the industry-standard ITU-R BT.2390 EETF. Additions: * add pl_swapchain_hdr_metadata, to set HDR metadata on supported swapchains (currently only vulkan with VK_EXT_hdr_metadata) * add support for vulkan versions higher than 1.0, communicated via the new fields api_version and max_api_version * add support for GPU-assisted validation and best practices layers, via the new field pl_vk_inst_params.debug_extra * add helper functions for working with pl_rects, including new aspect ratio handling helpers (pl_rect2df_aspect_*) * add field pl_vulkan_params.device_uuid to allow choosing the vulkan device by its UUID * add function pl_vulkan_hold_raw, to hold images without actually transitioning its layout and access mode * add function pl_vulkan_import, to allow directly re-using an existing VkDevice rather than creating a new one; this requires communicating metadata about how the device was created * add field pl_vulkan_params.features to allow loading optional extra device features at device creation time * add support for mpv-style custom user shaders (.hook), using the set of functions in <libplacebo/shaders/custom.h> * add pl_render_high_quality_params, enabling debanding and EWA scaling * add pl_timer GPU resource type and associated API functions, allowing the GPU execution time of shaders and texture transfer operations to be measured directly * add PL_SHADER_SIG_SAMPLER, allowing generated sampling shaders to directly accept the sampler to use as function parameters * add pl_image_set_chroma_location to automatically apply the correct chroma location to any subsampled planes * add PL_TONE_MAPPING_BT_2390, a tone mapping function based on the EETF from ITU-R Report BT.2390 (and make it the default) * add pl_peak_detect_params.overshoot_margin to help combat clipping on certain types of rapid scene fade-ins * add pl_sampler_type to allow encoding non-standard sampler types such as sampler2DRect, and also generalize samplers to allow e.g. usampler2D or isampler3D * add pl_opengl_wrap and pl_opengl_unwrap, to allow directly mapping between OpenGL textures and the pl_tex abstraction Changes: * deprecate pl_image.width/height, which are now inferred automatically from the actual planes * pl_vulkan_wrap now takes a pl_vulkan_wrap_params struct instead of directly accepting its parameters, including new fields sample_mode and address_mode to configure the created sampler * change pl_dispatch_compute to allow optionally passing in a simulated framebuffer width/height, which will be used to translate vertex attributes (if any) * undefine disabled config.h features, instead of defining them as 0 * remove debanding from pl_render_default_params * refactor HDR<->SDR mapping; PL_COLOR_REF_WHITE has been removed and replaced by PL_COLOR_SDR_WHITE (203 cd/m^2) and PL_COLOR_SDR_WHITE_HLG (75% HLG), respectively * completely refactor pl_shader_av1_grain`, which now samples directly from the passed texture rather than requiring the color be pre-sampled * pl_render_image now infers the image primaries based on resolution, rather than always hard-coding PL_COLOR_SPACE_UNKNOWN as BT.709 * change pl_render_target.dst_rect from pl_rect2d to pl_rect2df, allowing more accurate aspect ratio handling, and correctly compensate for subpixel scaling ratios * require python3-mako as a dependency of the vulkan feature * pl_chroma_location_offset now treats PL_CHROMA_UNKNOWN as PL_CHROMA_LEFT, the de-facto standard chroma location * the default value of pl_color_map_params.tone_mapping_algo is now PL_TONE_MAPPING_BT_2390 Fixes and performance improvements: * fix shader generation when the GLSL version is explicitly overridden * properly mark some shader failures (pl_shader_is_failed) * fix texture invalidation on OpenGL * correctly respect pl_swapchain_frame.flipped in pl_render_target_from_swapchain * correctly validate descriptor uniqueness in pl_pass_create * skip redundant matrix multiplication in pl_shader_encode_color wherever possible * work around driver bugs w.r.t out-of-order buffer offsets by sorting all buffer variables by offset * fix edge cases in vulkan swapchain usage flag checks * fix excessive CPU usage in pl_tex_download * reduce the number of unnecessary GPU flushes caused by pl_buf_poll * fix issue where blending did not work on some drivers (e.g. nvidia) * make the framebuffer discard check more aggressive * fix computation of anti-aliased resizable orthogonal filters, e.g. when downscaling using pl_filter_lanczos * fix external image memory barriers for exclusive mode images * fix failure path of pl_swapchain_submit_frame * fix various GLSL compatibility issues with av1 grain generation * reduce maximum vulkan memory allocation slab size to conform to AMD recommendations * fix build error when lcms is not available * fix double-application of texture scale for e.g. 10-bit content when using separable scalers * fix a multitude of bugs affecting av1 grain generation, especially for chroma planes * fix segfault on vulkan device oom * fix invalid shader generation on some platforms * fix a multitude of bugs, edge cases and subtle off-by-ones related to chroma scaling and plane alignment * add fallback code for edge case w.r.t chroma scaling and gpu resource exhaustion * correctly load VK_KHR_swapchain in all circumstances that require accessing its functions * minimize fbo usage inside pl_renderer, by re-using unused fbos * tweak the work group size for polar scaling to perform better on modern GPUs (tested on RDNA) * transparently upgrade fragment shaders to compute shaders on environments with async compute * pick a more reasonable size for the dummy gpu's max_group_threads * forbid 10-bit linear transfer functions from vulkan swapchains * fix segfault when re-executing previously failed shaders * fix swapchain creation errors on GLES 2 * explicitly mark all shader resources as non-aliased * correctly specify shader storage buffers as coherent for shaders that require them * fix various memory barrier synchronization issues for opengl ------------------------------------------------------------------- Wed May 6 04:56:38 UTC 2020 - Mia Herkt <mia@0x0.st> - Update to version 2.43.1 This release backports a number of bug fixes from master affecting the v2.43.0 release, and also slightly extends the range of backwards compatibility with respect to vulkan-headers versions. (This change is not on master, so this can be seen as a compatibility release) Bug fixes: * fix GLSL version checks when overriding GLSL versions with pl_shader_params.glsl * fix minor order-of-operations issue in AV1 grain synthesis * fix glInvalidate* backwards compatibility issue * fix compilation with older vulkan-headers (e.g. ubuntu 18.04) * fix a bug where pl_shader_encode_color sometimes uploaded and applied an identity matrix unnecessarily * work around upstream issues with MSL shader compilation by ensuring all buffer elements are sorted by offset * fix hypothetical edge case with swapchain image usages forbidden by the swapchain image format * fix an issue where blending overlays caused the rest of the image to be discarded Other changes: * log the vulkan surface selection choices * log the overall library version on initialization * add a few more pl_gpu validation checks * significantly reduce the CPU consumpation of blocking texture downloads ------------------------------------------------------------------- Thu Apr 23 00:10:37 UTC 2020 - Mia Herkt <mia@0x0.st> - Add libepoxy to BuildRequires - Enable test suite - Update to version 2.43.0 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. Apart from the addition of OpenGL support, this release brings with it a large number of fixes for backwards compatibility with older versions of GLSL and GLES, allowing libplacebo to be used to generate legal shaders for virtually any GLSL version in existence. Supporting these changes, the test framework has been expanded considerably to allow for automated testing of older OpenGL context versions and older GLSL versions. 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 ------------------------------------------------------------------- Tue Dec 24 15:21:06 UTC 2019 - Martin Herkt <9+suse@cirno.systems> - Update to version 1.29.1 This is a minor bug fix follow-up, to address one major and two minor issues with the v1.29.0 release. Fixes: * segfault in the test framework on platforms without vulkan * error message spam when rendering to minimized/hidden windows * compilation on certain glslang versions ------------------------------------------------------------------- Mon Dec 23 02:47:30 UTC 2019 - Martin Herkt <9+suse@cirno.systems> - Update to version 1.29.0 The key highlights of this release are the change of pl_gpu API semantics to use explicit erroring instead of implicit undefined behavior, and several important bug fixes related to swapchain resizing (in particular, handling of suboptimal swapchains); as well as other minor utility changes, bug fixes and performance improvements. The new pl_gpu API allows clients to duplicate less code related to checking parameters and capabilities, as long as they're fine with the resulting error messages they might receive. In particular, libplacebo no longer aborts on invalid parameters - which helped during initial development, but is now suffocating clients more than it's helping. Additions: * add a new field pl_fmt.internal_size, which can differ from texel_size for emulated formats * add 16f / 64f texture formats with host-emulated 32f representation * expose a pl_vulkan_choose_device helper function * add a mechanism for allowing the user to explicitly resize suboptimal swapchains rather than having libplacebo take care of it Changes: * make pl_gpu log and error gracefully on illegal parameters rather than doing undefined behavior (i.e. aborting) * creating a host_mapped buffer now requires PL_GPU_CAP_MAPPED_BUFFERS * drop priv fields from public structs Fixes and performance improvements: * make libplacebo slightly less log spammy in general * skip the creation/use of semaphores for single-queue usage * fix several bugs related to swapchain recreation and image acquisition * fix creation of non-renderable but storable vulkan textures * fix several bugs related to emulated texture downloads * fix pl_fmt capabilities for some emulated formats * fix stride/alignment of std430 vectors/matrices * use push constants more aggressively, whenever possible * slightly improve accurate of BT.2100 matrices * fix overzealous rotation of vulkan queues * fix dangling validation layer suppression in rare cases * fix possible swapchain deadlock on VK_SUBOPTIMAL_KHR * handle VK_SUBOPTIMAL_KHR more gracefully / efficiently ------------------------------------------------------------------- Mon Oct 21 23:34:37 UTC 2019 - Martin Herkt <9+suse@cirno.systems> - Update to version 1.21.0 This is a minor / house-keeping release, mostly to get some important fixes into distros while also getting support for iGPUs requiring non-coherent memory into a "stable" release. Additions: * shaders.h API users can now override the GLSL version * add support for vulkan platforms with non-coherent memory (e.g. iGPUs) Changes: * default GLSL version is now 130 unless otherwise specified * signature of pl_shader_alloc now uses a params struct * PL_FIX_VER / PL_VERSION are no longer header constants * the renderer will now automatically adjust deband grain scale for HDR Fixes and performance improvements: * on GLSL < 130, shaders now correctly use texture2D etc. * fix a bug where async transfer was never actually used, due to incorrect alignment checks * fixed some issues that could lead to symbol conflicts * don't require large vertex buffers be host-visible (usually impossible) * correctly detect swapchain image feature flags * turned a few 1ms busy loops into infinite waits * fix compilation on some platforms that require SPIRV-Tools * fix vkCreateEvent error spam on MoltenVK * bump queued command limit from 64 to 1024 ------------------------------------------------------------------- Tue Feb 26 01:20:30 UTC 2019 - Martin Herkt <9+suse@cirno.systems> - Build with (preferred) shaderc now that it’s packaged in TW - Update to version 1.18.0 The major changes of this release include a new and completely overhauled HDR tone mapping algorithm, support for importing backing memory for textures and buffers (such as via dmabuf fds), as well as a swapchain resizing API that, among other benefits, allows libplacebo to function properly on Wayland. There is also now support for generating CPU-backed "dummy resources" for things like lookup tables or convolution kernels, for users who prefer managing their own GPU resources. This allows pl_shader-level API users to access the full host of libplacebo shaders without being restricted the lack of a pl_gpu. Additions: * pl_color_space now has a sig_scale field, which allows modifying the signal range without affecting the transfer function's shape. (Effectively, by "stretching" it). This can be useful when dealing with HDR material encoded in a non-HDR curve such as linear light. * Add support for importing handles (including pl_sync objects and pl_shared_mem). Currently, only memory can be imported. * Add partial support for dmabuf fd interop. Currently does not support dma layout modifiers, so the usefulness of this feature is limited. * Allow importing external memory when creating textures. * Add a way to overexpose HDR material to bring its brightness up to more easily viewable levels. * Add pl_var_int to go alongside the other gpu.h helpers. * Add a way to create CPU-backed "dummy" instances of pl_gpu. These are not capable of compiling or executing any shaders, so they're only useful for users who want to generate and compile their own shaders. All GPU resources (textures, buffers) are backed by malloc. * Add a new field to pl_tex/buf_params allowing users to attach arbitrary references (void*) that libplacebo will ignore. * Add a function for changing the pl_context_params after creation. * Add a new API function for dealing with swapchain resize events. This function can be used to both query and update the swapchain size, based on the usage. Not all platforms support all operations. * Add new demo/skeleton based on GLFW. Changes: * Remove the hdr_simulation field from pl_color_map_params. Use signal_scale on the target color space instead. * Subdivide handle capabilities based on object type (texture vs buffer). * Completely redesign the HDR tone mapping algorithm. Most members of pl_tone_mapping_params have been updated, in particular the options related to desaturation and peak detection. * Split up the HDR peak detection API into a "detection" and "application" stage, which can run independently. This avoids the one-frame delay inherent with the previous API, and thus allows tone mapping to be frame perfect. * Remove superfluous field from pl_shader_reset left behind from a previous version of the API. Fixes and performance improvements: * Correctly apply the OOTF before performing linear colorspace operations on scene-referred content. * Avoid clipping when tone-mapping out of gamut content by tone mapping before gamut mapping. * Correctly reset the peak detection buffer state when running pl_renderer_flush_cache. * Correctly use the image's original color space as the reference space when the content is prelinearized by the renderer. Fixes some cases where libplacebo could end up defaulting PL_COLOR_TRC_AUTO to a suboptimal curve. * Correctly track the lifetime and ownership of individual vulkan buffer objects. Fixes some synchronization issues when attempting to use the same buffer from multiple different queue families. * Fix integer overflow on implementations with very large texture size limits. * Fix building against static libshaderc. ------------------------------------------------------------------- Sun Dec 16 14:50:22 UTC 2018 - Martin Herkt <9+suse@cirno.systems> - Remove baselibs.conf since nothing needs it - Fix build due to missing shaderc, which is optional - Switch to new upstream URL - Update to version 1.7.0 This release marks the first major release of libplacebo, in tune with the release of VLC 4, which will be the first major project using it. Apart from API stability going forwards, this release brings with it a new AV1 film grain shader, better interoperability between libplacebo and external APIs like CUDA (via shared buffers and shared textures), and ICtCp support. While not strictly part of libplacebo, one of the highlights since the previous release includes the existence of a new example file demos/video-filtering.c which illustrates how one would use libplacebo to do GPU-based image filtering in something like FFmpeg or mpv. Additions: * Add a new function pl_gpu_finish which blocks until all oustanding rendering on this pl_gpu is finished. * Add new functions pl_tex_recreate and pl_buf_recreate, which work like pl_tex/buf_create but take a pointer to an existing tex/buf that will get destroyed + recreated only when necessary * Add a new function pl_shader_is_failed which will return true if a given shader is in a "failed" state. Shaders will be marked as failed on any internal/usage error, rather than them being silently ignored. * Add a new enum pl_channel to clarify and encode friendly names for the often-referenced "canonical channel order". * Add a new header libplacebo/shaders/av1.h which currently contains a function pl_shader_av1_grain for applying AV1 film grain on the GPU. * Add a new concept of an "exportable" object (buffers and textures). Exportable objects can be exported using a handle and imported into other foreign APIs such as CUDA. The new functions pl_buf_export and pl_tex_export must be used to correctly synchronize access to the object. This also adds new fields uuid and handle_caps to pl_gpu. * Supporting the previous feature, add a new field memory_type to pl_buf_params which can be used to influence what type of memory to allocate a buffer from. Currently only works for texture transfer buffers, since allocating uniform/storage buffers from non-VRAM makes little sense. * Add a new synchronization primitive wrapper, pl_sync, which wraps a semaphore pair and must be used to synchronize access to textures with external, asynchronous APIs. * Implement the ITU-R BT.2100 ICtCp color system. Since the libplacebo color systems are not strictly tied to any particular transfer function, we must explicitly mark which flavor of ICtCp is meant. * Add a new field instance_params which can be used to influence the parameters used when pl_vulkan_create ends up creating an internal instance. * Add a new function pl_vulkan_unwrap which allows users to unwrap a vulkan-baed pl_tex to expose the internal VkImage, allowing simultaneous use (via pl_vulkan_hold/release) similar to wrapped external images. * Add new generic helper functions pl_std430_layout and pl_std140_layout which replace the old pl_buf_uniform_layout, pl_buf_storage_layout and pl_push_constant_layout. Changes: * Empty device names ("") can now be passed to pl_vulkan_create. They will be treated as if NULL was passed. * The out_plane parameter of pl_upload_plane is now optional. * Clarify/Relax the restrictions on pl_buf usage and polling. Users are technically free to use pl_buf for multiple simultaneous libplacebo operations. Buffer polling is only needed for accesses by the host. * pl_vulkan_hold now returns a bool indicating success. * pl_buffer_var has been moved from gpu.h's pl_desc to shaders.h's pl_shader_desc. Describing the individual variables of a descriptor binding had zero practical application. * pl_buf_uniform_layout, pl_buf_storage_layout and pl_push_constant_layout are now macros for pl_std140_layout and pl_std430_layout (respectively). This changed the signature to drop the pl_gpu parameter. * The buf_offset parameter to pl_tex_transfer no longer needs to be strictly aligned to a multiple of 4. The minimum alignment is now 1, however users are strongly recommended to stick to the multiple-of-4 alignment (or ideally align_tex_xfer_offset) for performance reasons. * The chromatic adaptation method in pl_get_color_mapping_matrix has been adjusted. We now use an LMS model derived from CIECAM97's revised linear Bradford matrix, rather than the non-linear matrix that was being used previously (incorrectly so, due to the lack of the required nonlinearity). * The order of fields in pl_rect3d has been changed for consistency with the other rect types. Fixes and performance improvements: * Fix std140/std430 packing errors for vec3. * Skip unnecessary flush in pl_buf_poll noop cases. * Fix variable collision in sh_prng. * Don't leak glslang internal symbols on supported platforms. * Fix an issue where pl_pass_run was stricter than intended about compatibility with between target and target_dummy. * Fix an issue where pl_dispatch could sometimes try dispatching shaders with an incompatible target. * Fix an error in the heuristic for choosing the optimal image layout for vulkan render passes. * Improved debugging messages in several places. * Slightly speed up lookups from texture LUTs. * Fix the addressing of shader LUTs in some hypothetical cases. * Correctly flush the contents of host-readable buffers after modifications made by the GPU. * Fix synchronization on pl_buf_write with non-mapped buffers. * Fix undefined behavior when using push descriptors. * Slightly speed up some texture recreate operations by invalidating re-used textures. * Fix an issue when trying to update large (>64k) VRAM-resident buffers. * Fix two address calculation bugs in pl_tex_blit. * Fix an over-read bug when the size of the vertex data changed for otherwise identical passes. * Fix a misalignment that could theoretically happen with some combinations of (odd) texel sizes and device alignment requirements. * Fix UB when creating "useless" images (without any usage flags) * Fix a vulkan device memory leak when destroying large textures. * Fix an alignment issue that could happen sometimes with pl_buf_write for odd write sizes. * Fix an alignment bug when uploading partial textures when async transfer is enabled on some devices. * Fix crash in pl_color_primaries_is_wide_gamut on DISPLAY_P3. * Fix an error when re-using shader objects between polar and non-polar samplers. This is now safe to do. ------------------------------------------------------------------- Fri Sep 28 11:18:38 UTC 2018 - Martin Herkt <9+suse@cirno.systems> - Add C/C++ compilers, glslang and lcms2 to BuildRequires - Update to version 0.6.0 This release brings with it a number of minor fixes and changes, as well as a new feature for simulating, and partially counteracting, various forms of color blindness. For more information see the new pl_cone_params structure and pl_get_cone_matrix function. Additions: * VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR is now supported, and gets treated as PL_ALPHA_UNKNOWN. * Add a new feature for simulating various forms of color blindness (based on the LMS color model). Changes: * Setting pl_render_params.upscaler/downscaler to NULL no longer allows automatically choosing bicubic, since this breaks various other optimizations that are only possible when using the built-in GPU sampling. This now only chooses bilinear/nearest depending on the texture/hardware capabilities * The public API of pl_shader_alloc was changed: the uint8_t ident field was removed. This makes no real sense to expose publicly, since users had no legitimate use for it other than setting it to 0. Fixes and performance improvements: * The pl_dither_params.lut_size now gets correctly defaulted to 6 * Fixed some use-after-scope bugs in the renderer * Fixed colorspace selection when using user-specified swapchain formats * Peak detection is now correctly disabled if the buffer size is set to 0. (Before, it would default back to 63 in that case) * Fix the out-of-gamut warning feature. This previously stopped working for out-of-range tone mapped values. ------------------------------------------------------------------- Sun Jul 29 11:30:28 UTC 2018 - jengelh@inai.de - Fix RPM groups. ------------------------------------------------------------------- Sat Jun 9 15:43:18 UTC 2018 - 9+suse@cirno.systems - Update to 0.5.0 This release brings with it greatly improved support for HDR (including HDR-in-SDR emulation, native HDR passthrough and improvements to the HDR->SDR tone mapping algorithm), as well as support for ICC profiles and external VkImage interop (needed for e.g. hardware decoding). Additions: * Add support for treating an SDR curve as an HDR curve by overriding/providing the true target peak. This essentially allows you to calibrate a true HDR device to a typical SDR curve and use it to display HDR media, at the cost of bit precision * Add more values to enum pl_chroma_location * Add a scale factor to struct pl_sample_src, which is useful for e.g. debanding on bit-shifted inputs * Add a new function to infer/guess unknown pl_color_space fields * Add support for 3DLUTs / ICC profiles (via LittleCMS), including support for assigning ICC profiles to the `pl_render_image` and `pl_render_target` structs * Allow enabling optional extra vulkan device/instance extensions, as well as listing what extensions were actually loaded * Add an API for VkImage interop with user code, e.g. to wrap mapped hardware decoding planes into `pl_tex`, plus all synchronization code and extra metadata necessary to make this interop safe * Implement support for native HDR output on supported platforms Changes: * Separate the texture from the plane data struct in `pl_upload_plane` * Swapchain FBOs are now guaranteed to be blittable (e.g. pl_tex_clear) * Tone mapping is no longer done for desaturation steps. Users wanting high quality desaturation should use ICC profiles * Change the types of various fields in struct pl_gpu_limits * Slightly relax the sizing requirements of pl_tex_transfer * Change the default value for pl_tex_transfer_params.stride_w/h. Instead of defaulting to the image size, they now default to the rect to be transferred * Texture transfer buffer offsets must (now) be aligned to the texel size, in addition to being a multiple of 4 * Change the API of `pl_color_space_equal` to be consistent with the rest of the colorspace APIs * Allow the `pl_upload_plane` helpers to upload from buffers as well * Switch the type of mapped buffer pointers from char* to uint8_t* * Rename DCI_P3 to Display_P3, and add DCI_P3 (using the actual DCI white point) Fixes and performance improvements: * Fix some compatibility issues with GLSL 120 * Prevent desaturation from exploding when tone mapping to HDR, or when tone mapping a very bright HDR scene to SDR * Implement the fully parametrized BT.2100 (HLG) OOTF in both directions, based on the tagged/inferred signal peak * Fix an issue preventing the out-of-gamut feature from working correctly on HDR displays * Fix a segfault that occurs when instance creation fails * Fix an issue where `peak_detect_frames` was sometimes too low * Allow debanding to take care of implicit bilinear sampling in cases where no other scaler is requested, thus avoiding an unnecessary FBO indirection * Only run the debanding algorithm on the parts of the image we will actually be displaying. This is relevant when cropping * Fix an issue where PL_TONE_MAPPINg_MOBIUS could fail in certain (unrealistic) scenarios involving HDR-in-SDR emulation * Fix an issue where vulkan could sometimes modify commands after submitting them, when recreating vertex buffers * Make an effort to reuse the same vertex buffer when the contents don't change from the previous invocation * Fix the glslang locale work-arounds on windows * Fix an issue where trying to upload from a too-large texel buffer results in an assertion failure rather than a clean error * Fix an issue where the usage of VkEvents prevented libplacebo from working on platforms where they were unsupported (e.g. MoltenVK) * Support and use vulkan push descriptors where supported. This avoids having to maintain, update and synchronize descriptor sets * Correctly disable signal linearization on low-bit depth FBOs * Prevent a crash on the (pathological) case of a shader with no descriptors * Fix a bug in the size limit calculations for 2D/3D LUTs * Use optimization level "performance" instead of "size" for shader compilation * Fix an abort() when trying to render to a non-storable FBO when using a final pass that requires compute shaders (e.g. HDR peak detection) ------------------------------------------------------------------- Fri Jun 1 19:22:50 UTC 2018 - 9+suse@cirno.systems - Init, 0.4.0
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor