- Jun 08, 2022
-
-
Konstantin Pavlov authored
This fixes an issue with GPU tests where due to host machine updates the /dev/dri/render* permissions were not adequate anymore.
-
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
-
Initially creates the swap chain with a standard 8bit or 10bit RGB format with the default sRGB color space. As a color space hint is received, it is mapped against known-to-work alternatives which are then checked to be supported, and then configured during the following `start_frame` call. Co-authored-by:
Jan Ekström <jeebjp@gmail.com>
-
Additionally, define the few enum values that are currently missing in mingw-w64 headers.
-
- Apr 25, 2022
-
-
Zhao Zhili authored
Fix regression from 49f413b5.
-
Zhao Zhili authored
ERROR: 0:55: Initializer not allowed ERROR: 0:57: Use of undeclared identifier 'ct_scale' ERROR: 0:66: Use of undeclared identifier 'ct_scale'
-
- Apr 20, 2022
-
-
Niklas Haas authored
Otherwise the use of this field triggers a shader invalidation on every single usage. Oops. Reported-by:
Hendrik Leppkes <h.leppkes@gmail.com>
-
- Apr 09, 2022
-
-
Niklas Haas authored
Right now, the code is still written in a way that requires the plane textures to already be created even before the image is acquired (due to its presence in `pass_init` from `pl_render_image_mix`). Loosen up some restrictions surrounding this, to allow lazily creating the texture *during* acquisition. This matches the usage pattern of most hwdecs most naturally.
-
- Apr 03, 2022
-
-
Niklas Haas authored
Apparently this exists.
-
Modified-by:
Niklas Haas <git@haasn.dev>
-
- Mar 31, 2022
-
-
Niklas Haas authored
H.274 currently requires CS support, so test for it first.
-
Niklas Haas authored
No reason to export 1 compute queue if we don't even have compute shaders..
-
Niklas Haas authored
On systems where all channel queries are returned with a depth of 0. I'm not entirely sure if this is even legal for a driver to do, but in any case, it's best not to do UB in this case. (Array out of bounds read)
-
- Mar 25, 2022
-
-
Niklas Haas authored
This holds on to the frame for a shorter duration, allowing it to interop more easily with e.g. libavcodec filters. Note that this still isn't thread safe (cf. pending upstream FFmpeg changes), but a necessary step in that direction one way or the other.
-
Niklas Haas authored
This is particularly designed for hardware decoding and such, as well as interop with e.g. lavfi vulkan. In either case, we don't want to permanently consider frames mapped for the entire duration that they may stick around in e.g. pl_queue, but rather dynamically acquire/release them immediately surrounding the actual usage site. This implementation is also designed to guarantee that only one frame will ever be acquired at a time, which allows us to support some hwdecs without requiring multiple mappers. Fixes videolan/libplacebo#194
-
Niklas Haas authored
A bit ugly logic-wise but better for future extensibility, specifically because I plan on using `pass_init` to e.g. acquire potentially-unmapped frames.
-
Niklas Haas authored
This is conceptually not really a frame drawing pass, but a blend pass (with 0 frames to be blended).
-
Niklas Haas authored
Makes this logic easier to extend in the future, and crucially also provides a common place to do uninit code from.
-
- Mar 20, 2022
-
-
Niklas Haas authored
Designed to match the endpoints provided by libavutil. Needed for safe multi-threading in general, but especially when interoperating with other API users (e.g. vulkan hwdec) Closes videolan/libplacebo#196
-
- Mar 18, 2022
-
-
Niklas Haas authored
See upstream.
-
- Mar 14, 2022
-
-
Niklas Haas authored
I wanted to change the way this is handled such that shaders also get printed when being re-loaded from the cache. Rather than re-adding the same code to all three GPU instances, I decided it makes more sense to just move it to the common helper code. This does unfortunately re-order most shader debug messages such that the errors get printed _above_ the re-print of the source code (on errors), but this was the status quo anyways for vulkan. I can live with it. Closes videolan/libplacebo#192
-
- Mar 13, 2022
-
-
Niklas Haas authored
Looking at this API again, it really makes no sense to leave the "non-unique" queues unset. Users can trivially recover a check for this condition by just doing an equality test on the queues. Testing for single family vs multi-family can also be done trivially by testing for `pl_vulkan.num_queues`. And lastly, API users (FFmpeg etc.) actually need all queues to be set. So pre-setting them to the correctly defaulted values is actually hugely useful. Since we're setting all queues anyway, might as well also set them unconditionally in the internal structs. Rewrite the queue family selection code to make it cleaner overall.
-
Niklas Haas authored
This wasn't set at all. Oops. Also move the shared code between pl_vulkan_create and pl_vulkan_import into a common helper, where it should have been all this time. I have no idea why it wasn't. Somebody shoot the author of this code.
-
Niklas Haas authored
I hate MSAN sometimes. This should at least be a permanent solution to the issue.
-
- Mar 10, 2022
-
-
Niklas Haas authored
This should not be exactly 0.5, but a value slightly higher than 0.5 (depending on the image bit depth). It's possible that we should go with the mpv approach of just setting the chroma channels to 0 altogether for grayscale formats. But that would require some sort of API change, which I'm unwilling to do as part of this commit. The 0.5 constant for floating point YCbCr is almost surely not actually correct, but that preserves the status quo. cf. #155 Fixes https://github.com/mpv-player/mpv/issues/9969
-
- Mar 08, 2022
-
-
Niklas Haas authored
-
Niklas Haas authored
It's sometimes more convenient to get coredumps instead of plain stack traces, especially if you didn't have gdb attached to the process at the time. Note that, asymmetrically, we add pl_debug_abort() to the vulkan debug callbacks but not the opengl debug callbacks. This is motivated by vulkan debug errors mainly corresponding to API usage violations (should never happen!), whereas OpenGL debug errors mainly correspond to runtime errors (e.g. invalid GLSL files), which should not trigger an abort(). (Note that you can also `(gdb) break pl_log_stack_trace`)
-
Niklas Haas authored
Older GLSL can't auto-promote 0xFF to 0xFFu. Sigh.
-
- Mar 05, 2022
-
-
Niklas Haas authored
Instead of wasting 3 whole 32-bit integers on this (which probably becomes 4 integers), pack them into a single 32-bit integer. Probably doesn't matter much, but hey, it's better, right?
-