Overview
Request 653873 superseded
- Fix build due to missing shaderc, which is optional
- Update to version 1.7.0~rc2
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
(currently only supporting fds on POSIX-style platforms) 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.
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.
- 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.
- Created by lachs0r
- In state superseded
- Supersedes 653872
- Superseded by 658212
- Open review for repo-checker
- Open review for openSUSE:Factory:Staging:adi:59
Request History
lachs0r created request
- Fix build due to missing shaderc, which is optional
- Update to version 1.7.0~rc2
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
(currently only supporting fds on POSIX-style platforms) 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.
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.
- 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.
factory-auto added opensuse-review-team as a reviewer
Please review sources
factory-auto added repo-checker as a reviewer
Please review build success
factory-auto accepted review
Check script succeeded
namtrac accepted review
staging-bot added as a reviewer
Being evaluated by staging project "openSUSE:Factory:Staging:adi:59"
staging-bot accepted review
Picked openSUSE:Factory:Staging:adi:59
licensedigger accepted review
ok
@lachs0r
install check failed:
See #658204