Overview

Request 658775 accepted

- 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.
- 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.

Loading...
Request History
Mia Herkt's avatar

lachs0r created request

- 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.
- 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.


Saul Goodman's avatar

licensedigger accepted review

ok


Factory Auto's avatar

factory-auto added opensuse-review-team as a reviewer

Please review sources


Factory Auto's avatar

factory-auto added repo-checker as a reviewer

Please review build success


Factory Auto's avatar

factory-auto accepted review

Check script succeeded


Staging Bot's avatar

staging-bot added as a reviewer

Being evaluated by staging project "openSUSE:Factory:Staging:adi:59"


Staging Bot's avatar

staging-bot accepted review

Picked openSUSE:Factory:Staging:adi:59


Repo Checker's avatar

repo-checker accepted review

cycle and install check passed


Jan Engelhardt's avatar

jengelh accepted review


Staging Bot's avatar

staging-bot accepted review

ready to accept


Staging Bot's avatar

staging-bot approved review

ready to accept


Dominique Leuenberger's avatar

dimstar_suse accepted request

Accept to openSUSE:Factory

openSUSE Build Service is sponsored by