- Jul 11, 2022
-
-
Niklas Haas authored
For user-legigibility.
-
- Jul 08, 2022
-
-
Niklas Haas authored
Oops. I was testing locally with glslang disabled, unfortunately.
-
Niklas Haas authored
libm is required.
-
Niklas Haas authored
Vulkan 1.2 is the required minimum version, so properly check for it.
-
Niklas Haas authored
This drops support for back-compat with versions of glslang below the new versioning schema (starting with 10.15.3847). This version of glslang is, by now, quite ancient, and dropping it simplifies a ton of code.
-
- Jul 06, 2022
-
-
Niklas Haas authored
Some older platforms (particularly macOS) do not support clock_gettime(). Fortunately, this is identical to gettimeofday in the case of CLOCK_REALTIME. These systems also do not have pthread_condattr_setclock, so we can re-use this check. Also add proper error handling to this function.
-
- Jul 05, 2022
-
-
Niklas Haas authored
intmax_t is not enough to guarantee alignment, we need max_align_t. Fixes https://github.com/haasn/libplacebo/issues/130
-
- Jul 03, 2022
-
-
Niklas Haas authored
This is useful in cases where users build the vulkan-headers (and thus place vk.xml) inside their custom prefixes, in which case it makes sense to look there as well. Do this with highest priority - if a user is building against custom vulkan headers, we probably want to use them. (They might be pinned to known-good versions)
-
- Jun 25, 2022
-
-
Niklas Haas authored
Otherwise, overlays are upside down when there's no image available. Fixes https://github.com/mpv-player/mpv/issues/10336
-
- Jun 24, 2022
-
-
Niklas Haas authored
Instead of just referring to them as generic "polar" and "ortho" scaling, describe their names and directions properly. Closes videolan/libplacebo#204 cf. https://github.com/mpv-player/mpv/issues/9451
-
Niklas Haas authored
Adding this for logging purposes, so downstream functions of filter configuration can still reasonably talk about which filter function/config they're currently computing.
-
Niklas Haas authored
We don't need a dedicated setting for the plane downscaler because we never output anything subsampled (thus making downscaling impossible).
-
Niklas Haas authored
Solving the problem by brute force. Maybe it would have been wise to make alpha also separable somehow, or even allow choosing the sampler by plane type. But these sound like problems that don't need solving. Fixes videolan/libplacebo#203
-
- Jun 23, 2022
-
-
Niklas Haas authored
This avoids a dependency on upstream cmsDetectRGBProfileGamma. It's slightly less precise, using only 256 sample points instead of 4096, but this difference barely seems to matter in practice, as this is only a rough estimate anyway. The main motivation of this change is to avoid a dependency on the relatively high lcms2 2.13, but it also brings with it the other upside of allowing us to tune the algorithm to our needs (e.g. not filtering out linear sections, because we care more about estimating the overall response to minimize LUT error, and less about finding the technical gamma).
-
- Jun 20, 2022
-
-
Niklas Haas authored
Technically the old code was undefined behavior (integer overflow).
-
Niklas Haas authored
Sometimes a frame mix simply contains very sparse collection of frames that are far too far in the past and the future to actually get mixed. In this case, fall back to ZOH semantics. Do this by retrying the loop in order to enable the caching logic to work. Not the prettiest work-around but simple and effective. Also add a test case to prevent further regressions of this case. Fixes videolan/libplacebo#202
-
Niklas Haas authored
The old runner stopped existing.
-
- Jun 19, 2022
-
-
李通洲 authored
Fixes #128
-
- Jun 12, 2022
-
-
Niklas Haas authored
Even for a coherent buffer, we technically have no guaranteed thet 'vkCmdPipelineBarrier' has completed yet until the command callbacks are fired. To solve this issue, take the reference unconditionally, and instead move the coherency conditional to `invalidate_buf`. As an aside, checking for `buf_vk->mem.data` here is redundant, as this code will only ever be hit in any of the host readable/writable conditions.
-
Niklas Haas authored
Avoid having to update a billion URLs
-
Niklas Haas authored
This makes the vk_tex_barrier code unnecessarily buggy. In particular, the way the code is currently written, we omit pipeline barriers here *anyway*. And trying to reason about when the synchronization scope can be ignored and when not gave me a headache so just get rid of this implicit layout transition business and use the same pipeline barrier that we use for everything else. The overhead is negligible anyway.
-
Niklas Haas authored
Don't trigger MSAN on uninstrumented lcms2.
-
Niklas Haas authored
The feature check is insufficient to check for timeline semaphore support because it doesn't get updated if we don't actually enable the corresponding extension also.
-
Niklas Haas authored
Recent compilers complain about this being UB
-
- Jun 10, 2022
-
-
Niklas Haas authored
We need to hold on to a reference to the buffer, otherwise this memory can become undefined/released before the callback fires.
-
- Jun 09, 2022
-
-
Niklas Haas authored
This is never an issue for allocated memory because we take the noncoherent atom size into account when determining the allocation size. However, it can be an issue for imports, which can have arbitrary offsets/sizes. Fortunately, there is a simple solution here - using VK_WHOLE_SIZE.
-
Niklas Haas authored
Fixes videolan/libplacebo#201
-
Niklas Haas authored
-
- Jun 08, 2022
-
-
Niklas Haas authored
When vulkan is autodetected but spirv/glslang is not available, this currently triggers an error(). This is undesirable behavior especially because it can randomly regress existing libplacebo installations merely due to pulling in the vulkan headers.
-
- Jun 05, 2022
-
-
-
This enum value is also utilized in d3d11/format, since the original commit (be32ca68), while the definition was only in d3d11/gpu. This way both can share the same compatibility definition.
-
Niklas Haas authored
cobertura was generalized to coverage_report
-
- May 23, 2022
-
-
Niklas Haas authored
Oops.
-
- May 20, 2022
-
-
Niklas Haas authored
Rewrite all of the ICC profile handling code, fundamentally getting rid of the 'ICC->ICC transform' design and representing each profile as an independent object that can be either decoded or encoded, at separate stages in the pipeline. This is only an initial version, and serves to establish the API. It is not yet fully optimized, but optimizations can and will be applied transparently underneath the hood of this API (e.g. skipping the full 3DLUT when not required, implementing support for fixed function profiles, natively applying matrix+shaper profiles, etc.) This design brings with it a number of advantages, most notably allowing support for using libplacebo-native tone mapping together with ICC profiles, by properly forwarding the actual contrast values detected from the profile. In addition to a redesign of the core logic, also changes things so that the ICC.h header is always installed, even if non-functional - `pl_icc_open` will simply always return NULL.
-
Niklas Haas authored
SDR<->SDR conversions are best done with simple linear light stretching, because everything else introduces too many distortions.
-
Niklas Haas authored
Even if the image has either already been linearized somehow, e.g. if the image came in linear light to begin with.
-
Niklas Haas authored
Ignoring the ICC profile header for now because it's about to be refactored entirely.
-
Niklas Haas authored
And also fix the wrong signature of pl_cie_xy_equal. Decided to split this off to prevent ballooning the following commit (and its API change log entry).
-
- May 18, 2022
-
-
Jan Ekström authored
d3d11_sw_colorspace_hint is utilized both for runtime hints as well as the initial swap chain configuration to enable consistency between received swap chains and newly created ones. Thus, add an internal function which contains the argument of whether this call was internal or not. In the colorspace hint call, it is set to false, and during swap chain initialization it is set to true. Thus when hints are passed, logging will talk about received hints and when the function is called during initialization, logging will talk about initial configuration.
-
- May 01, 2022
-
-
Niklas Haas authored
The current cache invalidation logic was slightly too aggressive in some regards, for example also triggering on changes to info_callback or dither_params. In addition to fixing this, also overhaul the params hashing code to also provide a best effort estimate of whether or not the pass is worth caching at all. If not, just skip it if possible. Fixes https://github.com/mpv-player/mpv/issues/10135
-