Library for GPU-accelerated video/image rendering primitives
This library contains GPU-accelerated video/image rendering primitives, as well as a standalone vulkan-based image/video renderer. It is based on the core rendering algorithms and ideas of mpv.
- Developed at multimedia:libs
- Sources inherited from project openSUSE:Factory
-
5
derived packages
- Download package
-
Checkout Package
osc -A https://api.opensuse.org checkout openSUSE:Backports:SLE-15-SP4:FactoryCandidates/libplacebo && cd $_
- Create Badge
Refresh
Refresh
Source Files
Filename | Size | Changed |
---|---|---|
libplacebo-v1.7.0.tar.bz2 | 0000262137 256 KB | |
libplacebo.changes | 0000013550 13.2 KB | |
libplacebo.spec | 0000002658 2.6 KB |
Revision 4 (latest revision is 31)
Dominique Leuenberger (dimstar_suse)
accepted
request 658775
from
Mia Herkt (lachs0r)
(revision 4)
- 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.
Comments 0